Compare commits

...
3057 Commits
Author SHA1 Message Date
github-actions 69a4f0ea1e Fetch translations from Crowdin 2025-11-20 00:17:08 +00:00
Eric Warmenhoven cc335202a8 Add scanner support for Philips CD-i disc images (#18424)
CD-i discs have a unique quirk: they store data in tracks labeled as
AUDIO in both CUE and CHD formats. The scanner normally skips AUDIO
tracks when looking for data, causing CD-i games to never match the
database.
2025-11-19 16:18:06 +01:00
Craig 12eebedf1f webOS: fix logging, pass mouse buttons, gamepad, function keys to RetroArch (#18419)
* webOS: fix logging crash on startup

* webOS: fix for webOS 8.3 - 10+ to receive all mouse/pad/keyboard keys
2025-11-19 16:17:41 +01:00
Joe Osborn fbc972b39e Fix compressed size calculation for the zstd condition (#18420)
There was a variable shadowing issue.

I also fixed a few clang analyzer warnings.
2025-11-19 16:16:44 +01:00
Eric Warmenhoven 97dea65a8c Fix a couple minor Saturn scanning bugs (#18421) 2025-11-19 16:16:10 +01:00
zoltanvb 8c339fd900 Do not use size hint for CHD for now. 2025-11-19 07:33:15 -05:00
sonninnos 931e3fcabd Fix core suggestion with manual core load (#18423) 2025-11-19 06:17:40 +02:00
github-actions 2e8b001dd9 Fetch translations from Crowdin 2025-11-19 00:17:24 +00:00
Eric Warmenhoven 1efcc55bff Android: Add HAVE_CHEEVOS_RVZ 2025-11-18 14:11:47 -05:00
sonninnos 39b75272f3 XMB: Left thumbnail top align adjustment 2025-11-18 17:13:03 +02:00
sonninnos 59b05fa034 Android: Final missing zstd piece 2025-11-18 16:26:46 +02:00
sonninnos d95fbb2655 Android: zstd include path fix 2025-11-18 16:20:05 +02:00
sonninnos 9c2f39a129 Android: Add zstd include dirs 2025-11-18 16:10:08 +02:00
sonninnos 2d9f6a916a Android: Add HAVE_ZSTD 2025-11-18 15:53:58 +02:00
Eric Warmenhoven 447daab3b2 minor cleanup of now-unused config value 2025-11-17 22:15:20 -05:00
Eric Warmenhoven 3ceed07cd0 Merge remote-tracking branch 'lucascanero/enable-cloudsync-libnx' into warmenhoven/dev/nx 2025-11-17 22:10:01 -05:00
Eric Warmenhoven d848490295 add cheevos_rvz 2025-11-17 20:58:08 -05:00
github-actions 37be83913b Fetch translations from Crowdin 2025-11-18 00:17:18 +00:00
libretroadmin b5e2956a5a Fix uninitialized variable warning 2025-11-18 00:15:48 +01:00
Joe Osborn cf30bc29bb fix -Wshorten64-to-32 warnings in bsvmovie (#18416) 2025-11-17 20:22:42 +01:00
libretroadmin a609b709eb Bump to version 1.22.2 2025-11-17 14:22:57 +01:00
sonninnos 83c663e5e9 Revert "Shorten stb_vorbis.h"
This reverts commit 53dfaa1f85.
2025-11-17 08:07:20 +02:00
sonninnos dd8973f1e6 Revert "Simplify stb_vorbis.h"
This reverts commit 7fc802698a.
2025-11-17 08:07:11 +02:00
sonninnos f382d8d321 XMB: Left thumbnail + handheld mode fixes (#18414) 2025-11-17 08:05:42 +02:00
github-actions 5ed53646b9 Fetch translations from Crowdin 2025-11-17 00:17:18 +00:00
zoltanvb cf3c678de5 Fix Enter not working in menu on Android keyboards (#18405) 2025-11-16 20:59:32 +01:00
zoltanvb acd3fa1172 Change size to 64-bit (#18410)
Several rom sizes could exceed 32-bit. Database uses uint64_t, so let's align.
2025-11-16 20:59:18 +01:00
github-actions 72b7f058a3 Fetch translations from Crowdin 2025-11-16 00:17:59 +00:00
libretroadmin 9f9a984b99 Use strlcpy instead of strncpy in places 2025-11-15 16:28:41 +01:00
Craig 1be2ba8d20 Replace single strncpy with strlcpy in features_cpu (#18400) 2025-11-15 13:39:30 +01:00
libretroadmin 01cc7b3104 Revert "Further reduce size of dr_flac - only include it once in C file"
This reverts commit 1e66e9d16b.
2025-11-15 03:48:18 +01:00
libretroadmin 0a30809931 Revert "Compile stb_rect_pack/stb_truetype once separately instead"
This reverts commit 85245e5514.
2025-11-15 03:47:59 +01:00
libretroadmin 8675fcd79a Revert "Buildfix"
This reverts commit 0e14bba04c.
2025-11-15 03:47:38 +01:00
libretroadmin 4668afca71 Revert "Need to use RETRO_BEGIN_DECLS/RETRO_END_DECL for MSVC C++"
This reverts commit 81555b9da6.
2025-11-15 03:47:29 +01:00
libretroadmin 81555b9da6 Need to use RETRO_BEGIN_DECLS/RETRO_END_DECL for MSVC C++
backwards compatibility
2025-11-15 03:34:13 +01:00
libretroadmin 0e14bba04c Buildfix 2025-11-15 03:29:44 +01:00
libretroadmin 85245e5514 Compile stb_rect_pack/stb_truetype once separately instead
of including them in several files
2025-11-15 03:21:49 +01:00
libretroadmin 1e66e9d16b Further reduce size of dr_flac - only include it once in C file
instead of including it at least twice
2025-11-15 02:46:51 +01:00
libretroadmin b8372337a0 Slim down on dr_mp3 2025-11-15 02:37:41 +01:00
libretroadmin b1e10faa01 (dr_flac) Cleanups 2025-11-15 02:20:22 +01:00
libretroadmin a15217dbaf Bump version 2025-11-15 01:56:28 +01:00
libretroadmin 6d5672c669 (drflac) Slim down dr_flac 2025-11-15 01:49:07 +01:00
github-actions 4fd47962c8 Fetch translations from Crowdin 2025-11-15 00:15:44 +00:00
Eric Warmenhoven 749bc23ecd fix null pointer crash in xmb when scrolling 2025-11-14 18:41:06 -05:00
libretroadmin 2a08e0104d Slim down stb_rect_pack/stb_truetype 2025-11-14 23:15:07 +01:00
libretroadmin 7fc802698a Simplify stb_vorbis.h 2025-11-14 22:05:25 +01:00
libretroadmin 53dfaa1f85 Shorten stb_vorbis.h 2025-11-14 21:43:19 +01:00
libretroadmin 3df2dfa095 Buildfix stb_vorbis.h 2025-11-14 20:04:34 +01:00
libretroadmin 906dbd8cc0 Recommit file 2025-11-14 19:40:38 +01:00
libretroadmin 28783c657a Remove if 0 2025-11-14 19:37:58 +01:00
libretroadmin b5e767acaa Remove if 0 2025-11-14 19:05:13 +01:00
LibretroAdmin 703321e807 Update CHANGELOG 2025-11-14 16:58:25 +01:00
aitchFactor 9a0abbed5d Add 800px mode for New 3DS models (#18380)
* Update 800x240 mode for n3DS models

- Backported 800x240 display settings from libctru
- Removed/renamed old 800x240 display functionality
- Readded menu option for non-2DS models

* replace bannertool.exe with a working version

* Update ctr_defines.h

* Fix missed rename
2025-11-14 16:55:47 +01:00
Eric Warmenhoven 9f45a4a4ac fix clamping bug in jpeg decode (#18389)
fixes #6611
2025-11-14 16:54:35 +01:00
github-actions a6e7ff2fe8 Fetch translations from Crowdin 2025-11-14 00:16:44 +00:00
sonninnos 40b4503e93 State slot hotkey adjustments (#18388)
* Allow Auto slot with state hotkeys

* Hide state thumbnail widget on state load

* State slot msg reformat
2025-11-14 01:15:53 +02:00
libretroadmin 5650d91608 Silence warnings 2025-11-13 19:24:27 +01:00
libretroadmin 74c03d26d2 (BSV) Cleanups 2025-11-13 18:55:49 +01:00
libretroadmin 6fc1091ff6 Cleanups; replace some instances of strncpy with strlcpy, other
cleanups
2025-11-13 18:32:17 +01:00
sonninnos 994a5cda7a Fix pointer Resume trigger 2025-11-13 19:29:46 +02:00
github-actions 46c53538c6 Fetch translations from Crowdin 2025-11-13 00:17:03 +00:00
LibretroAdmin b5509769c2 Revert "Use RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_INSTANCE for rewind savesta…" (#18383)
This reverts commit aa89097cc0.
2025-11-12 22:41:24 +01:00
Craig 38dc5d8267 Improved webOS CPU info and fix version number in IPK (#18381)
* Fix version parsing in Makefile.webos

* webOS: add output of lscpu, as some boards will give less than helpful /proc/cpuinfo
2025-11-12 21:33:56 +01:00
libretroadmin c0be192868 (gfx_widgets) Remove unused variable# Please enter the commit message for your changes. Lines starting 2025-11-12 05:11:18 +01:00
Robin Morgan 05175a487c Fix for vulkan_create_swapchain() not clearing flag (fixes random crashes with fast forwarding) (#18295)
* improved vulkan_create_swapchain() to handle swapchain creation better and avoid crashes

* As requested by PR review, reverted back to original create_swapchain function with only minimal changes made for this bug fix on Android only

* fixed oepsie with copy paste

* fixed oepsie with copy paste

* Fixed random crash on Android when destroying old swapchain before new one is created with minimal changes to original vulkan_create_swapchain() function

* Restored all my initial changes without all the reformatting of the code (#3)

* The VK_DATA_FLAG_CREATED_NEW_SWAPCHAIN should be cleared otherwise every call to this function can be handled as a new swapchain creation while it might not be the case, it fixes crashes on Android
2025-11-12 04:05:49 +01:00
Craig 36a4c83b88 webOS: produce 2 artifacts, one with GLES v2 and another with GLES v3 (#18378) 2025-11-12 04:03:30 +01:00
github-actions c58528696c Fetch translations from Crowdin 2025-11-12 00:16:50 +00:00
libretroadmin 325393aaa1 Update 2025-11-11 21:43:40 +01:00
Eric Warmenhoven fdb283845d mfi: try harder to own the home button (#18374) 2025-11-11 21:40:26 +01:00
Eric Warmenhoven 95680d8b3f xmb improvements for mobile/touch (#18375) 2025-11-11 21:40:15 +01:00
libretroadmin 0a253e341f Silence warnings backport 2025-11-11 19:28:40 +01:00
libretroadmin 59d74a0c8b Buildfixes 2025-11-10 20:08:19 +01:00
libretroadmin 11018c8356 Warning fix 2025-11-10 19:37:10 +01:00
libretroadmin 6af74f3b55 More casting fixes for CXX_BUILD 2025-11-10 19:35:23 +01:00
libretroadmin c2d5bd57f7 C89_BUILD fixes 2025-11-10 19:28:21 +01:00
libretroadmin 7ad9852bc5 More CXX_BUILD fixes 2025-11-10 19:09:44 +01:00
libretroadmin 2526b375e7 More CXX_BUILD buildfixes 2025-11-10 19:03:03 +01:00
libretroadmin 16025e51b8 C89_BUILD buildfixes
CXX_BUILD buildfixes
Fix for conflicting types in uncompress prototype
2025-11-10 18:52:42 +01:00
Joe Osborn cf7824e0fd Remove an old emscripten hack around atomics (#18324)
In talking with @BinBashBanana it became clear this wasn't necessary,
and it has started to conflict with some code in emscripten's
libpthread in recent versions.
2025-11-10 17:31:51 +01:00
libretroadmin 77076ae3c9 C89_BUILD buildfix 2025-11-10 12:21:39 +01:00
cyanosin 2827bb5d0d VK_EXT_full_screen_exclusive (#18368) 2025-11-10 11:03:19 +01:00
Craig 5388b0628e webOS: fix GLES 3/3.1/3.2 option, enable 64-bit option (#18369) 2025-11-10 11:02:08 +01:00
github-actions eb75997cbb Fetch translations from Crowdin 2025-11-10 00:17:43 +00:00
libretroadmin 7a4214d9fc Bump version 2025-11-10 00:56:29 +01:00
Eric Warmenhoven a9da1bc664 fix sha1 name conflict 2025-11-09 00:00:00 -05:00
Eric Warmenhoven ac6eb4bb08 iOS: use native keyboard in search 2025-11-09 00:00:00 -05:00
Eric Warmenhoven 58f4d04bb9 tvOS: continue to use draw observer 2025-11-08 23:59:59 -05:00
Lucas f97d6c9d63 improve cloudsync settings and missing labels 2025-11-09 01:42:19 +00:00
github-actions f01a03c586 Fetch translations from Crowdin 2025-11-09 00:18:09 +00:00
zoltanvb 458a059eb5 Change list up to Nov. 8 (#18366) 2025-11-08 23:14:06 +01:00
github-actions 850cc56196 Fetch translations from Crowdin 2025-11-08 00:15:06 +00:00
Lucas Cañero 5048003e20 Add cloudsync "sync now" button and related settings (cloudsync startup) 2025-11-07 21:55:33 +00:00
Lucas Cañero 09a7ec737d enable CloudSync and SSL for libnx 2025-11-07 21:54:27 +00:00
Eric Warmenhoven cbed0afd39 net_http: avoid sthread_detach 2025-11-07 10:57:14 -05:00
github-actions 35bb3f869b Fetch translations from Crowdin 2025-11-07 00:17:32 +00:00
Eric Warmenhoven b38369e9ff iOS/tvOS: don't use draw observer unless fast forwarding (#18362) 2025-11-06 08:03:26 +01:00
github-actions 91aedbe24e Fetch translations from Crowdin 2025-11-06 00:16:37 +00:00
Eric Warmenhoven 943be3352b apple: safer cleanup of haptic engines 2025-11-05 17:17:24 -05:00
sonninnos 4979c66d50 Task widget adjustments 2025-11-05 20:18:55 +02:00
Keith Bourdon 5acda87142 strip bom (#18358) 2025-11-05 19:15:11 +01:00
zoltanvb 0a2c684849 Warn when scanning with no database present + indicate task failure with icon (#18359) 2025-11-05 19:13:56 +01:00
刘皓 ee59a4e58c Fix a bug in the open() function in the Storage Access Framework VFS backend (#18360) 2025-11-05 19:13:43 +01:00
sonninnos 04e06f7457 Fix widget icon alpha 2025-11-05 19:58:23 +02:00
github-actions 1f2bf72734 Fetch translations from Crowdin 2025-11-05 00:17:24 +00:00
Eric Warmenhoven 7d223f6061 fix heap corruption in wii rvz ra hash 2025-11-04 17:23:18 -05:00
Eric Warmenhoven b3620f14b4 iOS: small followup to 357fce853e, restore haptics after background 2025-11-04 15:25:51 -05:00
libretroadmin bbe9f3244c (vita2d_gfx) silence warnings 2025-11-04 20:24:55 +01:00
sonninnos 4b796f3bd9 Turbo fire port bind sign crash fix 2025-11-04 18:55:39 +02:00
Nicholas Martin 081ced9940 Use hotkeys from core port 0 (#18353) 2025-11-04 08:57:18 +01:00
Eric Warmenhoven c699b28151 mobile: set default OSK overlay (#18346) 2025-11-04 08:53:20 +01:00
Eric Warmenhoven 5ae5641fc2 Add RVZ Wii retroachievements hashing (#18339) 2025-11-04 08:53:06 +01:00
Joe Osborn 1fb62ff4ac fix v0 replay sync and a crash that occurs at the end of playback (#18347) 2025-11-04 08:52:14 +01:00
Joe Osborn ff7b84ba5a Improve backwards scanning to skip no more than one checkpoint (#18328) 2025-11-04 08:51:54 +01:00
zoltanvb 7b2912b014 Set 272 for RGUI framebuffer size on Vita. (#18338) 2025-11-04 08:51:38 +01:00
zoltanvb 768c2bf355 Scanning optimization (#18341) 2025-11-04 08:51:27 +01:00
Joe Osborn 3c7cd3511c Maybe make bsvmovie more tolerant of msgpack encoding (#18342) 2025-11-04 08:51:13 +01:00
Eric Warmenhoven ef9dc83041 iOS: remove down arrow menu (#18350) 2025-11-04 08:51:00 +01:00
Eric Warmenhoven 7d5c1b5085 iOS/tvOS: use native keyboard (#18355) 2025-11-04 08:50:40 +01:00
Bobby Smith a6d765d959 Remove interval for XInput rumbles (#18313) 2025-11-04 03:30:28 +02:00
sonninnos a019b92f26 Ozone: Fix sidebar background color dimensions 2025-11-03 19:55:54 +02:00
Eric Warmenhoven ccf0f97e17 coreaudio mic: minor cleanup to remove unused function 2025-11-02 22:24:23 -05:00
github-actions 61e951e367 Fetch translations from Crowdin 2025-11-03 00:17:35 +00:00
github-actions 68c5d3c109 Fetch translations from Crowdin 2025-11-02 00:18:20 +00:00
sonninnos be43a2464b Remove obsolete device type from default list 2025-11-01 22:22:31 +02:00
sonninnos e618d3d932 Fix crash when taking a screenshot right after video reinit 2025-11-01 21:55:44 +02:00
Eric Warmenhoven 53f90ba5f2 apple: attempt to fix coremidi xpc crashes 2025-11-01 13:20:30 -04:00
Eric Warmenhoven 357fce853e iOS: stronger haptics, obey strength setting
fixes #15625
2025-11-01 12:14:58 -04:00
hunterk 683899e5dc menu_state_get_ptr() needs to be behind HAVE_MENU (#18349)
it gets treated as an int instead of a pointer because the actual declaration (included from menu/menu_driver.h) is gated behind HAVE_MENU.
2025-11-01 17:25:53 +02:00
sonninnos 4ed05b0d43 Turbo fire remapping fixes 2025-11-01 07:30:39 +02:00
sonninnos fcded627b3 Remote RetroPad:
- Show pointer in all screens
- Add pointer idle timer
- Remove sleep from retro_run
2025-11-01 06:39:52 +02:00
sonninnos d18adfd2c0 Refactor remap menu left-right callbacks (#18340) 2025-11-01 05:22:49 +02:00
Eric Warmenhoven 6217684ade ios: minor factor to collapse redunant preprocessor macros 2025-10-31 12:18:52 -04:00
Joe Osborn 575754d584 Fix x11 undefined behavior (#18323)
* Fix an OOB memory access in x11 input if >16 devices

It looks like the mouse device list was meant to be initialized with
-1, but the mouse device list should contain only up to `j` values
where j is the number of actual mice.

* Also make sure j stays under max mouse idx

This is just to be safe in case we have... more than 16 master pointers
2025-10-31 04:12:35 +01:00
github-actions 044c9f8fa9 Fetch translations from Crowdin 2025-10-31 00:16:32 +00:00
刘皓 a74b8d058c Implement support for the Storage Access Framework on Android (#18336)
* Add a work-in-progress Storage Access Framework backend to libretro-common/vfs

* Fix compilation error in `retro_vfs_file_open_impl()` on Windows

* Don't gate the contents of vfs_implementation_saf.h behind `HAVE_SAF`

* Add a button to the file browser on Android for opening a directory picker

* Fix a bug in `retro_vfs_path_split_saf()`

* Don't include inaccessible directories in the file browser in Google Play Android builds

* Fix missing return statement in `action_ok_open_picker()`

* Improve the documentation for the SAF VFS backend in libretro-common

* Implement opening the path in the file browser when selected using the SAF tree picker

* Change indentation style in VfsImplementationSaf.java to 3 spaces

* Check if `vfs_saf_get_jni_env` is null in vfs_implementation_saf.c before performing VFS operations

* Fix stat function in SAF VFS backend

* Don't gate the definition of `safTreeAdded()` behind `HAVE_SAF`

* Fix memory leak when calling `retro_vfs_closedir_impl()` on a SAF directory

* Fix `NullPointerException` in `SafStat` constructor

* Create global references for all Java classes used by the SAF VFS backend

* Improve the readdir implementation for the SAF VFS backend

* Fix a bug in `retro_vfs_path_join_saf()`

* Show the list of SAF trees that the app can access in the file browser on Android

* Improve error handling in VfsImplementationSaf.java

* Check if the directory already exists in the mkdir implementation in VfsImplementationSaf.java

* Enforce a minimum Android API level of 21 in VfsImplementationSaf.java

* Remove the comma at the end of `enum vfs_scheme` in libretro-common/include/vfs/vfs.h

* Fix nonstandard C89 in libretro-common/vfs/vfs_implementation.c

* Fix mkdir implementation in VfsImplementationSaf.java

* Fix open implementation in VfsImplementationSaf.java not creating files that don't exist
2025-10-30 03:52:59 +01:00
github-actions 7e0d99f745 Fetch translations from Crowdin 2025-10-29 00:16:51 +00:00
github-actions 1472478af8 Fetch translations from Crowdin 2025-10-28 00:15:58 +00:00
sonninnos 79a627a172 Fix overlay turbo fire (#18333) 2025-10-27 19:43:35 +02:00
zoltanvb 477cb705b2 Init randomness (#18309) (#18327) 2025-10-27 19:42:01 +02:00
sonninnos 11d4e46e9f Handle save state and disc insert resume also on release 2025-10-25 16:35:07 +03:00
github-actions bfa603828d Fetch translations from Crowdin 2025-10-25 00:15:17 +00:00
sonninnos 4c7a1a5322 SegaCD scan crash fix 2025-10-24 17:06:57 +03:00
sonninnos 63c4a393c0 RGUI: Playlist secondary thumbnail cycle improvement 2025-10-24 03:35:43 +03:00
github-actions f4e2cea399 Fetch translations from Crowdin 2025-10-24 00:15:06 +00:00
sonninnos cbd1c06b1a Playlist secondary thumbnail cycle correction 2025-10-24 03:03:53 +03:00
sonninnos 933baca92b Smart integer scaling fixup 2025-10-23 19:09:37 +03:00
InquisitiveCoder f189ed5fec New Smart integer scaling implementation to address #18154 (#18296)
* New Smart integer scaling implementation to address #18154

* Fixed C89 compliance errors.
2025-10-23 19:08:34 +03:00
zoltanvb fc1acf4d6c Log files with no match during scanning. (#18322) 2025-10-23 08:18:30 +02:00
github-actions 26eb19b31a Fetch translations from Crowdin 2025-10-23 00:16:16 +00:00
刘皓 d43a6410c6 Use app-specific storage for Google Play versions of the Android app (#18321) 2025-10-22 12:01:16 +02:00
zoltanvb cd23c32a83 Add support for min/max query. (#18314) 2025-10-22 12:00:59 +02:00
zoltanvb 82f4f67617 Add support for archived file size query along with crc32 (#18315) 2025-10-22 12:00:39 +02:00
github-actions b62ee31508 Fetch translations from Crowdin 2025-10-22 00:16:14 +00:00
Eric Warmenhoven fcf0cc7483 rvz hashing for retroachievements (#18319) 2025-10-21 23:40:19 +02:00
zoltanvb 8c10eaa250 Prevent uninitialized memory. (#18320) 2025-10-20 13:20:18 +02:00
zoltanvb ff025a8d6e Changes up to Oct. 16. (#18318) 2025-10-20 13:20:07 +02:00
github-actions 2d1f5070ee Fetch translations from Crowdin 2025-10-17 00:16:35 +00:00
github-actions 053ced8d1c Fetch translations from Crowdin 2025-10-16 00:16:28 +00:00
gouchi 656ab420d1 sdl : Fix typo SDL_SUPPORTS_RUMBLE 2025-10-15 19:36:16 -04:00
Eric Warmenhoven 6bf2950b16 apple: clean up coremidi lifetime a little bit 2025-10-15 13:33:46 -04:00
Bobby Smith 9fdd60a6bc Fix default hotkeys (#18311) 2025-10-15 18:03:00 +03:00
github-actions ba95a1f611 Fetch translations from Crowdin 2025-10-15 00:16:16 +00:00
Eric Warmenhoven 08ed87c587 macos: fix icon on macos26, take 2 2025-10-14 09:26:27 -04:00
Eric Warmenhoven d3bbe88450 ios/tvos: try to include dSYM symbols in app store builds 2025-10-13 21:55:30 -04:00
Eric Warmenhoven 5d066f65fd macos: fix icon on macos26 2025-10-13 16:00:25 -04:00
Eric Warmenhoven 6d1c26a572 macos: restore window size properly 2025-10-13 14:57:35 -04:00
Eric Warmenhoven 8d16395de9 apple: fix display server resolution/refresh rates on macos/ios 2025-10-13 14:23:56 -04:00
Eric Warmenhoven 64ff381f72 macos: account for window manager decorations in frame size (#13254) 2025-10-13 11:56:34 -04:00
Eric Warmenhoven 8036fed21f ios: disable jit checks on ios 26 for now 2025-10-13 11:48:37 -04:00
github-actions 4fe5509c65 Fetch translations from Crowdin 2025-10-13 00:17:21 +00:00
sonninnos 100c69d4c8 Silence warning 2025-10-13 01:44:58 +03:00
libretroadmin b3a2f802b9 Remove unused variables/warnings 2025-10-12 20:31:56 +02:00
sonninnos 43abea5661 Add HAVE_BSV_MOVIE for Android 2025-10-12 17:51:03 +03:00
github-actions 328e4ce825 Fetch translations from Crowdin 2025-10-11 00:14:28 +00:00
github-actions cfcece201c Fetch translations from Crowdin 2025-10-10 00:16:07 +00:00
Jamiras 2aad8ad8e6 update to rcheevos 12.1 (#18298) 2025-10-09 16:27:02 +02:00
github-actions 8ec8b7c797 Fetch translations from Crowdin 2025-10-09 00:15:26 +00:00
github-actions 5fe9836007 Fetch translations from Crowdin 2025-10-08 00:15:51 +00:00
Eric Warmenhoven b9b085de97 apple: trivial xcode scheme updates
Xcode 26 keeps reordering things, I don't know why, I'm tired of
fighting it.

The Metal capture doesn't work with tvOS 13 so default disable that,
it's easy to turn back on if needed. Only affects debugging.
2025-10-07 12:22:11 -04:00
github-actions b300f72905 Fetch translations from Crowdin 2025-10-07 00:16:08 +00:00
sonninnos deb9cd35c9 Core updater logging formatting 2025-10-07 00:29:04 +03:00
Jamiras 8f73291977 (cheevos) change expired token message from info to error; clear token (#18294) 2025-10-06 17:16:28 +02:00
github-actions df1ccb9497 Fetch translations from Crowdin 2025-10-06 00:16:30 +00:00
github-actions ff5fd9d527 Fetch translations from Crowdin 2025-10-05 00:17:10 +00:00
nfp0 1cb11b52a4 Wayland: Remove splash screen if HAVE_LIBDECOR_H to fix fullscreen on Auto monitor index (#18252) 2025-10-04 19:41:35 +02:00
github-actions e15bd1dcb9 Fetch translations from Crowdin 2025-10-04 00:15:03 +00:00
github-actions 14288e1162 Fetch translations from Crowdin 2025-10-03 00:15:18 +00:00
github-actions 5ace54acc4 Fetch translations from Crowdin 2025-10-01 00:17:59 +00:00
zoltanvb 1a01ea7e53 Debug logs for catching #17087 (#18288) 2025-09-30 13:02:30 +02:00
github-actions 03a3fe5963 Fetch translations from Crowdin 2025-09-30 00:15:58 +00:00
github-actions 636b98feea Fetch translations from Crowdin 2025-09-29 00:16:39 +00:00
github-actions a9ba292d9e Fetch translations from Crowdin 2025-09-27 00:14:56 +00:00
github-actions 87d8866f54 Fetch translations from Crowdin 2025-09-26 00:15:27 +00:00
Stern cdd98f5ac4 UWP/WinRT: Fix XInput controller detection for late-arriving controllers (#18282) 2025-09-24 22:18:56 +02:00
github-actions 3f19b2a107 Fetch translations from Crowdin 2025-09-24 00:15:42 +00:00
github-actions 8141b31151 Fetch translations from Crowdin 2025-09-23 00:16:15 +00:00
Bobby Smith 6c1b32de42 Make sure correct type is used when calling retroarch_get_flags() (#18279) 2025-09-22 18:31:52 +02:00
github-actions a16d651ba7 Fetch translations from Crowdin 2025-09-22 00:17:02 +00:00
pstef 8de17098d1 Ctr fixes (#18276) 2025-09-21 23:55:55 +02:00
github-actions b73d76445f Fetch translations from Crowdin 2025-09-21 00:16:56 +00:00
github-actions 19bbc713ed Fetch translations from Crowdin 2025-09-20 00:14:59 +00:00
Andre Leiradella aa89097cc0 Use RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_INSTANCE for rewind savestates (#18271) 2025-09-20 01:41:03 +02:00
BinBashBanana cfc59dbbd9 Improve GLSL ES version detection (#18272) 2025-09-20 01:06:35 +02:00
github-actions 7c7edb7191 Fetch translations from Crowdin 2025-09-19 00:16:05 +00:00
BinBashBanana f54bcf3ef4 Don't clear default core info on missing list (#18269) 2025-09-18 12:34:02 +02:00
github-actions 1ff174b885 Fetch translations from Crowdin 2025-09-18 00:14:50 +00:00
David G. F. 9504583ae5 Push room info to lobby when publicly hosting (#18267)
* Announce netplay player information to the lobby server

This information is optional and merely informational. The lobby
might ignore it (and it ignores it at the current version).

* Display lobby information on player/spectator counts
2025-09-18 01:33:35 +02:00
Eric Warmenhoven 4d87f25bf6 ios/tvos: stop including hid controller driver
it's left over from BTStack/cydia days
2025-09-17 13:33:20 -04:00
Colin Kinloch d2df617ed1 wayland: Move followup roundtrip out of registry::global (#18264) 2025-09-17 09:41:58 +02:00
Eric Warmenhoven 6fc0e56f05 fix compilation with xcode 26 2025-09-16 16:22:03 -04:00
Joe Osborn e416cfb763 Fix an off-by-one error in replay checkpoint loading. (#18261)
The issue is that a replay frame read on core frame K stores the
inputs for frame K along with the core state as of *the end of frame
K*, in other words the beginning of frame K+1. To fix it, and to make
sure existing replays play back properly, the `core_unserialize` call
in bsvmovie.c has been deferred to the following invocation of
`bsv_movie_read_next_events`, so that frame K+1 is deserialized just
before reading the inputs for frame K+1.

Some refactoring has also been done to simplify the number and timing
of calls to bsv_movie functions from runloop.c.
2025-09-16 19:57:12 +02:00
Joe Osborn 9c3966eb66 Fix use-after-free in gfx_widgets. (#18262)
Holding on to the task pointer is risky, because when the task queue
is popped a message is pushed but the task may be freed.  I made a
very small-scale fix to just the new use-after-free that started
happening with the alternative look.
2025-09-16 19:28:34 +02:00
Eric Warmenhoven 3fa2648ff3 net_http: remove unnecessary receive in connection pool polling (#18260) 2025-09-16 19:04:15 +02:00
BinBashBanana 1d63c4934e Fix OpenAL blocking regression (#18258) 2025-09-16 19:04:01 +02:00
github-actions 62a09b5a07 Fetch translations from Crowdin 2025-09-16 00:15:09 +00:00
zoltanvb db88400ee9 Changes up to 09-14 (#18254) 2025-09-15 06:06:14 +02:00
Eric Warmenhoven d2c6f80f69 sdl: add support for controller sensors (#18255) 2025-09-15 06:05:59 +02:00
github-actions 5aa36630bc Fetch translations from Crowdin 2025-09-14 00:16:44 +00:00
BinBashBanana a650525e6e Emscripten core switching (#18174)
* Emscripten core switching

* Update changelog

* Add comments (#18174)

* Better core switching for HTML dropdown
2025-09-13 18:56:53 +02:00
github-actions d049191990 Fetch translations from Crowdin 2025-09-13 00:14:37 +00:00
libretroadmin d11766a205 input_get_sensor_state - cleanup 2025-09-12 09:11:05 +02:00
Eric Warmenhovenandoshaboy 2fe04daaea add settings for gyroscope/accelerometer sensitivity (#18245)
Co-authored-by: oshaboy <[email protected]>
2025-09-12 09:10:15 +02:00
libretroadmin c4b655a583 Rename success variables to ret 2025-09-12 05:41:22 +02:00
github-actions 3dfa5cb02d Fetch translations from Crowdin 2025-09-12 00:15:53 +00:00
libretroadmin 21776a2e59 Attempt to fix ffmpeg 8.0 build errors 2025-09-12 01:44:51 +02:00
libretroadmin 79f0b052c7 rename result variables to ret 2025-09-12 01:18:23 +02:00
libretroadmin f41f46726e ffmpeg3 - improved checks, change variable names from 'result' to
'ret'
2025-09-12 01:01:09 +02:00
libretroadmin b4bf792e24 Update documentation 2025-09-11 23:30:07 +02:00
libretroadmin ac8ab50ada Implement RETRO_ENVIRONMENT_GET_TARGET_SAMPLE_RATE - optional to implement.
Lets the core query the frontend for the desired target output samplerate.
Will return false if the output samplerate cannot be queried,  will return
true if it's implemented. data returned will be of unsigned type
2025-09-11 23:28:14 +02:00
github-actions a0732357ff Fetch translations from Crowdin 2025-09-11 00:15:53 +00:00
github-actions 41b144ef38 Fetch translations from Crowdin 2025-09-10 00:16:03 +00:00
sonninnos 89f15a7b0e Show File Browser Settings under Load Content according to setting 2025-09-09 17:14:08 +03:00
sonninnos 97f99c5f19 Task widget improvements (#18243) 2025-09-09 15:56:23 +02:00
Joe Osborn fa42321488 Seek backwards/forwards in replays by checkpoint (#18238)
* Add save checkpoint, prev/next checkpoint commands and hotkeys

* Fix copy paste error in meta binds

* Implement save_replay_checkpoint command

* Implement prev/next checkpoint commands

* Update per @jamiras review

* add command to seek to a specific frame number

* Add message queue toasts for seek forward/back

* Fix basis for seek, produce full message on reply

* fix bugs seeking back during record

* Tidy up

* Allow back and forwards seeking of recording replays while paused

* Update changelog
2025-09-09 07:53:08 +02:00
github-actions 3d7d6c93b5 Fetch translations from Crowdin 2025-09-09 00:15:57 +00:00
Eric Warmenhoven d95ed2343c macos: more attempts at correct modifier key handling
Fixes #13880
2025-09-08 15:30:25 -04:00
Eric Warmenhoven e69ee5af05 apple: netplay udp lan discovery 2025-09-08 13:58:32 -04:00
github-actions 5fd3c01325 Fetch translations from Crowdin 2025-09-08 00:16:36 +00:00
github-actions 1fbcf87f02 Fetch translations from Crowdin 2025-09-07 00:16:53 +00:00
Eric Warmenhoven 4ff2f1de0f ios/tvos: kscrash crash reporting 2025-09-06 18:42:52 -04:00
Eric Warmenhoven 989417d706 macos: fix startup on versions <13.0 2025-09-06 18:42:46 -04:00
github-actions a773c506b6 Fetch translations from Crowdin 2025-09-06 00:14:57 +00:00
sonninnos 4c9357fff0 Runtime logging cleanup 2025-09-05 18:37:32 +03:00
sonninnos 313f057fb7 Override logging cleanup 2025-09-05 18:14:46 +03:00
sonninnos 46db791ceb Ozone footer correction 2025-09-05 16:59:47 +03:00
github-actions 4159da6cc9 Fetch translations from Crowdin 2025-09-05 00:16:11 +00:00
Eric Warmenhoven b2ec648a71 ios: whoops, forgot to enable CloudDocuments entitlement. 2025-09-04 15:34:16 -04:00
sonninnos 0b11934691 Localize and log failed playlist launch 2025-09-04 16:59:58 +03:00
sonninnos 69d4c9ac85 Single-click playlist return from invalid path 2025-09-04 16:49:00 +03:00
sonninnos 8c39c8856b Single-click playlist return from failed launch 2025-09-04 16:28:43 +03:00
github-actions 6ee880614d Fetch translations from Crowdin 2025-09-04 00:15:01 +00:00
sonninnos f91d3d5bfb Prioritize slang over glsl in auto preset loader 2025-09-03 18:21:47 +03:00
Matt Akins bd56674b51 Add activity state detection to prevent parameter conflicts when resuming from home screen after external game launch (#18231)
* Simplified onNewIntent content detection logic and added activity state tracking

* Added activity state detection to prevent parameter conflicts when resuming from home screen
2025-09-03 16:16:07 +02:00
bulzipke 1834795e9b Remove east asian relay server (#18233) 2025-09-03 16:15:50 +02:00
sonninnos 7866687476 Invert custom viewport y position when suitable 2025-09-03 16:59:49 +03:00
sonninnos a17bf5ed39 Viewport bias padding offset fix 2025-09-03 04:30:52 +03:00
github-actions 30b36c5943 Fetch translations from Crowdin 2025-09-03 00:15:14 +00:00
sonninnos 3d007f9afc Autoconf menu toggle fix 2025-09-02 23:14:31 +03:00
sonninnos 098fe99ded Viewport bias custom aspect fixes 2025-09-02 21:18:02 +03:00
sonninnos c32aa80cea Shader toggle cleanup 2025-09-02 20:20:14 +03:00
sonninnos c93af63186 Widget icon color adjustments 2025-09-02 16:46:20 +03:00
sonninnos 5c981d3f5c Single-click playlist hold delay timer 2025-09-02 12:57:37 +03:00
github-actions a684db7b17 Fetch translations from Crowdin 2025-09-02 00:16:25 +00:00
sonninnos 9c604a2814 Preserve Explore location on close content hotkey 2025-09-01 21:41:22 +03:00
sonninnos e2ff006ad7 Single-click playlist Explore fixes 2025-09-01 21:20:49 +03:00
sonninnos 05b24cce09 Single-click playlist contentless core return fix 2025-09-01 21:20:49 +03:00
Eric Warmenhoven a7f1107631 apple: better verbosity refactor 2025-09-01 10:47:27 -04:00
Eric Warmenhoven 69668a2afc apple: refactoring verbosity for apple platforms 2025-08-31 23:24:06 -04:00
github-actions a990bb38fa Fetch translations from Crowdin 2025-09-01 00:19:10 +00:00
sonninnos f5b63a4bb7 Kiosk mode fixes (#18224) 2025-09-01 00:59:11 +02:00
sonninnos 601fd41ba5 Fix single-click playlist Enter select 2025-08-31 14:52:36 +03:00
github-actions f01b6063a9 Fetch translations from Crowdin 2025-08-31 00:17:38 +00:00
sonninnos 03c63c581f Ozone: Animation blocking fix 2025-08-31 02:11:05 +03:00
sonninnos 42ccdc0d25 Fix single-click playlist mouse select 2025-08-31 01:21:49 +03:00
sonninnos 3ebc2f7db2 Also ignore initial mouse position after refresh rate change 2025-08-30 22:17:52 +03:00
Joe Osborn ab898468be Do not skip over frame backrefs for version-1 and older movies (#18220) 2025-08-30 21:27:42 +03:00
Joe Osborn e341333593 Fix crashes when scanning rdb/rmsgpack files using stack storage (#18219)
I had mistakenly allocated only 128 bytes, not 128 * sizeof(pointer) bytes.
2025-08-30 21:27:14 +03:00
sonninnos ec573825b8 Add 'Single-Click Playlists' option (#18218) 2025-08-30 19:38:12 +02:00
Joe Osborn 9b4168deff Deprecate intfstream_open_writable_memory (#18216) 2025-08-30 12:35:29 +02:00
Joe Osborn 5b6c93a5bc Incremental statestream checkpoints for replays (#18213) 2025-08-30 12:35:08 +02:00
github-actions 7c30935ed6 Fetch translations from Crowdin 2025-08-29 00:16:32 +00:00
Eric Warmenhoven a1d830f7c4 apple: allow for updated mbedtls library 2025-08-28 16:01:47 -04:00
Matt Akins 699b808b4c Add onNewIntent handler to support launching games with FLAG_ACTIVITY_CLEAR_TOP (#18210)
Enables launchers to use the FLAG_ACTIVITY_CLEAR_TOP launch flag to open games. It checks if the launched game is already running or if it's a new game to launch over the existing one. This provides an alternative to launchers using FLAG_ACTIVITY_CLEAR_TASK which results in a crash on many Android 13 devices if RetroArch is already running in the background.
2025-08-28 02:17:32 +02:00
github-actions 2494e9af6f Fetch translations from Crowdin 2025-08-28 00:16:14 +00:00
sonninnos 5a29ee2c8f Auto-enable GPU record with HW context cores (#18209) 2025-08-27 18:51:53 +03:00
sonninnos 8a86817047 Shader menu rework (#18208) 2025-08-27 13:22:58 +02:00
sonninnos aa1988088c Non-unified dupe key event fix 2025-08-27 05:34:40 +03:00
Eric Warmenhoven a1de9d2051 apple: fix ffmpeg camera driver (#18203) 2025-08-26 22:53:35 +02:00
github-actions a5b06a3885 Fetch translations from Crowdin 2025-08-26 00:16:22 +00:00
sonninnos f4dc12e323 Add 'No items' item to empty Main Menu 2025-08-26 02:44:56 +03:00
sonninnos 8a72e2b1a7 Remote RetroPad:
- Core option variable check in retro_run
- Reset validated states on reset
- Tab cleanups
2025-08-26 02:22:38 +03:00
sonninnos d3c81605be Ozone: Background opacity fix 2025-08-26 01:40:13 +03:00
sonninnos d5c3b1cc1a Allow dupebinding menu toggle and hotkey enabler (#18202) 2025-08-26 01:37:11 +03:00
zoltanvb b54b95a04d Fix for potential crash in autodetect (#18198) 2025-08-25 12:07:38 +02:00
zoltanvb 84c5722180 Change list update until 2025-08-22 (#18193) 2025-08-24 10:36:19 +02:00
gouchi d1e36d9f11 Update com.libretro.RetroArch.desktop (#18195) 2025-08-24 10:36:09 +02:00
Eric Warmenhoven 3f21e88f09 apple: include ClownMDEmu in App Store builds 2025-08-23 23:29:33 -04:00
github-actions 6e4924bce6 Fetch translations from Crowdin 2025-08-24 00:18:06 +00:00
zoltanvb 5ac96e8c62 Refine input driver selection: enable fallback to linuxraw in more cases. (#18196) 2025-08-24 00:57:58 +02:00
github-actions 6c120d07a8 Fetch translations from Crowdin 2025-08-22 00:16:25 +00:00
zoltanvb f7877df578 Extend autoconfig matching with a physical identifier (#18190) 2025-08-21 18:13:37 +02:00
github-actions 853bd62730 Fetch translations from Crowdin 2025-08-21 00:15:26 +00:00
github-actions 42b33fd1c4 Fetch translations from Crowdin 2025-08-19 00:16:29 +00:00
github-actions cd6ee1b251 Fetch translations from Crowdin 2025-08-18 00:18:40 +00:00
sonninnos adc8739ccb msg_hash reorderings and cleanups 2025-08-17 17:39:56 +03:00
BinBashBanana 1cf24c5afe update emscripten get_proc_address (#18180) 2025-08-17 06:34:40 +02:00
sonninnos 79dbd3f1c0 Add option for returning to Main Menu from tabs (#18184) 2025-08-17 06:34:07 +02:00
github-actions c31727344a Fetch translations from Crowdin 2025-08-17 00:18:32 +00:00
github-actions e6328b5707 Fetch translations from Crowdin 2025-08-16 00:16:02 +00:00
sonninnos 631eca2ba6 Content load failure logging cleanup 2025-08-15 18:13:32 +03:00
sonninnos 07f8777fa5 More widget category type corrections 2025-08-15 17:41:03 +03:00
sonninnos 79b5778c7a Menu Remember Selection ifdef cleanup 2025-08-15 16:17:17 +03:00
sonninnos dc782cadb2 Widget message error type corrections 2025-08-15 16:12:51 +03:00
sonninnos ac47eb2bce Increase playlist sublabel tmp size (#18177) 2025-08-15 15:49:59 +03:00
sonninnos 3111f62521 Add menu startup page option (#18175) 2025-08-15 13:37:20 +02:00
github-actions 44746d541b Fetch translations from Crowdin 2025-08-15 00:17:50 +00:00
Aleksey Samoilov f0370a1bfb ui/qt6: replace deprecated count() with size() (#18169)
* Bump required wayland-protocols

* ui/qt: replace deprecated count with size
2025-08-12 20:35:14 +02:00
github-actions e31f9c2963 Fetch translations from Crowdin 2025-08-12 00:17:11 +00:00
Eric Warmenhoven a35f91d95f apple: AppIntents (Siri, Shortcuts) (#18167) 2025-08-11 21:41:11 +02:00
zoltanvb 9c9f5aa8d0 Touchscreen support for PS Vita (#18165) 2025-08-11 10:47:44 +02:00
sonninnos 887effcb76 Smaller widget size for refresh rate change 2025-08-10 15:20:28 +03:00
sonninnos b00ae41e41 Logging format unifications 2025-08-10 15:18:42 +03:00
sonninnos 7cdb5aefaf No core reloading without dynamic 2025-08-10 15:13:14 +03:00
sonninnos 80319a9918 GLUI: Show thumbnails in Explore (#18166) 2025-08-10 15:10:01 +03:00
github-actions 719a643fb2 Fetch translations from Crowdin 2025-08-10 00:19:18 +00:00
Eric Warmenhoven e6514de3a7 (audio) minor follow up fix to 3aa8db2.
Fixes #18164
2025-08-09 11:58:02 -04:00
Eric Warmenhoven c404e22a79 apple: default audio/mic drivers are coreaudio 2025-08-07 23:11:25 -04:00
Eric Warmenhoven 4bdaf7fd4c Merge pull request #18162 from warmenhoven/warmenhoven/pr/macOS-Core-Audio-Mic-Fix
macos coreaudio mic fix
2025-08-07 22:56:03 -04:00
Eric Warmenhoven 752de1e2c5 Merge remote-tracking branch 'libretro/master' into warmenhoven/dev/macOS-Core-Audio-Mic-Fix 2025-08-07 22:51:24 -04:00
Eric Warmenhoven 282308d800 macos: fix coreaudio mic default device 2025-08-07 22:51:03 -04:00
libretroadmin 5e6a2984c7 Replace some usage of strchr with memchr 2025-08-08 04:12:08 +02:00
libretroadmin 07388c5ab2 slang_get_include_file - avoid strlen call 2025-08-08 03:51:41 +02:00
libretroadmin 448b6e3aa0 (net_http) Style nits/cleanups 2025-08-08 03:39:33 +02:00
libretroadmin 23d1e4977a net_http_urlencode_full - exit out of the loop after the last slash
isntead of always iterating over it 3 times
2025-08-08 03:20:51 +02:00
Eric Warmenhoven 9728e5914d Merge remote-tracking branch 'libretro/master' into warmenhoven/dev/macOS-Core-Audio-Mic-Fix 2025-08-07 18:04:21 -04:00
刘皓 6775559c25 Fix deadlock in flush_wayland_fd() when using Wayland Vulkan driver (#18161) 2025-08-07 21:41:49 +02:00
libretroadmin b6c5615c58 (configuration.c) Remove more gotos 2025-08-07 18:55:46 +02:00
libretroadmin 57cf4011ec Reduce gotos in command.c/core_backup.c 2025-08-07 18:42:38 +02:00
libretroadmin 3aa8db2c08 (Audio) SOme control flow changes (no functional changes) and some cleanups 2025-08-07 17:35:00 +02:00
libretroadmin e3a5c5ea46 (XAudio2) Don't make xa_use_float hardcoded anymore 2025-08-07 16:24:33 +02:00
github-actions 31e54cabfe Fetch translations from Crowdin 2025-08-07 00:18:24 +00:00
刘皓 46045a1165 Fix FBO texture format in GLCore driver when using Cg/GLSL shaders (#18158) 2025-08-06 18:15:46 +02:00
Craig e4f1f25d10 webOS: Update to use new buildroot naming, add libatomic (#18157)
* webOS: add libatomic from toolchain for ppsspp

* webOS: Update naming scheme for buildroot
2025-08-06 18:15:29 +02:00
sonninnos 64c15f545f Use 'generic message' widget style in Disc Control 2025-08-06 15:29:02 +03:00
libretroadmin 9b6ddfb727 Turn iteration variables from unsigned to size_t or int 2025-08-06 08:04:11 +02:00
libretroadmin fe5ea7ad45 (rcheevos) CXX_BUILD compatibility 2025-08-06 04:53:00 +02:00
libretroadmin 7736095525 Update for CXX_BUILD 2025-08-06 04:44:32 +02:00
libretroadmin 4f70c5aa2a We dont need to use av_strlcpy - we already have libretro-common
strlcpy
2025-08-06 03:25:54 +02:00
libretroadmin b5530658a4 (Record FFMPEG) Get rid of all the cplusplus ifdefs 2025-08-06 03:21:02 +02:00
sonninnos 8376b06611 Fix broken replay checkpoint interval dropdown 2025-08-06 04:05:56 +03:00
sonninnos d5b33d8e29 Do screenshot widget aspect ratio correction always 2025-08-06 03:55:23 +03:00
sonninnos b129c605f6 Remove useless dupe rec state ptr get 2025-08-06 03:50:20 +03:00
sonninnos 39f840eedc Disable overlay mouse cursor by default 2025-08-06 03:43:31 +03:00
sonninnos 3164cdb352 Tab cleanup 2025-08-06 03:40:39 +03:00
sonninnos 02e932e21f Allow full savestate support without info file 2025-08-06 03:40:39 +03:00
github-actions 129616be88 Fetch translations from Crowdin 2025-08-06 00:18:18 +00:00
libretroadmin 9e78ad0c88 (AVFoundation/Camera) Fix some header includes 2025-08-06 01:01:36 +02:00
libretroadmin cf3de275a3 (FFMPEG) Linker fixes for CXX_BUILD 2025-08-06 00:59:11 +02:00
libretroadmin 50e8308027 CXX_BUILD buildfix for shader_Gl3 2025-08-06 00:42:28 +02:00
libretroadmin 661e5b55cb Some more malloc/realloc casts for C++ 2025-08-06 00:31:42 +02:00
libretroadmin 151d49311d Some CXX_BUILD buildfixes 2025-08-06 00:12:21 +02:00
libretroadmin 6efdb108ae Naming convention standardizations 2025-08-05 22:54:18 +02:00
libretroadmin 98d4d5faec slang_preprocess_parse_parameters - no more gotos 2025-08-05 22:11:50 +02:00
libretroadmin 8181583298 Try to reserve 'error' keyword for goto labels, use 'err' for
variables and arguments instead
2025-08-05 21:02:49 +02:00
sonninnos 93bd70cd48 Don't overwrite existing builtin playlist 2025-08-05 21:38:11 +03:00
libretroadmin 21773761d7 Silence some more code analysis warnings 2025-08-05 20:05:25 +02:00
libretroadmin 52e6566300 Some code analysis fixes 2025-08-05 19:52:00 +02:00
sonninnos d67da2d1b1 State slot hotkey refactor (#18152) 2025-08-05 19:47:11 +02:00
刘皓 351fd6a66b Destroy feedback framebuffer/texture when GLCore driver is destroyed (#18153) 2025-08-05 19:46:52 +02:00
libretroadmin 83c3e589e5 Fix OpenAL logs 2025-08-05 19:45:55 +02:00
libretroadmin 27f27c351f Turn C++ comments to C comments 2025-08-05 19:14:03 +02:00
刘皓 c8ab73607c Add support for Cg and GLSL shaders in the glcore video driver (#18151) 2025-08-05 18:55:29 +02:00
libretroadmin 248af45eaf Fix more static code analysis warnings - bunch of garbage values
and double frees fixed in core_info.c
2025-08-05 17:51:25 +02:00
libretroadmin 1d4f663506 Silence code analysis warnings 2025-08-05 17:32:30 +02:00
libretroadmin a39ed1a822 (SDL_audio) Add missing header include 2025-08-05 07:27:36 +02:00
libretroadmin d59adf7643 (SDL_Audio) Add device_list_new/device_list_free 2025-08-05 07:09:22 +02:00
刘皓 65d617e378 Implement fallback OpenGL symbol loader for Linux devices with EGL < 1.5 (#18135)
* Implement fallback OpenGL symbol loader for Linux devices with EGL < 1.5

The `eglGetProcAddress` in old versions of EGL can only get extension
functions, so we need to supplement it with another symbol loader that
can get non-extension functions.

* Close `g_egl_gl_dll` if `egl_init_context()` fails

* Close `g_egl_gl_dll` when VideoCore driver is destroyed

* Defer loading of `g_egl_gl_dll` until needed

* Fix typo in `egl_destroy_gl_dll`

* Remove redundant `ptr` variable in `egl_init_context`

* Remove redundant call to `egl_destroy_gl_dll` in `egl_init_context`

* Remove another redundant call to `egl_destroy_gl_dll` in `egl_init_context`
2025-08-05 06:50:22 +02:00
libretroadmin 5477ad32f6 (OpenAL) You're able to select the audio device now from the menu
and for it to be set on the fly
2025-08-05 04:49:55 +02:00
libretroadmin babd363987 Style nits/cleanups - control flow refactors 2025-08-05 04:22:41 +02:00
sonninnos 44bd3b21d5 Error widget category and size corrections 2025-08-05 03:22:11 +03:00
github-actions f39914de4a Fetch translations from Crowdin 2025-08-05 00:18:29 +00:00
sonninnos 95df52bf6b Load content widget fixes and cleanups 2025-08-05 03:10:51 +03:00
libretroadmin c14708e3ed (libretro-db) Get rid of goto 2025-08-05 00:01:35 +02:00
libretroadmin 546388a5bd Reduce some gotos in tasks 2025-08-04 23:34:53 +02:00
libretroadmin 274139dff1 (tasks) Get rid of some gotos 2025-08-04 23:34:53 +02:00
sonninnos 38fa199f7a Put these core info init things back 2025-08-05 00:23:32 +03:00
sonninnos 5fb551ae2e XMB: Fix dynamic wallpaper unwanted reset 2025-08-04 23:43:38 +03:00
sonninnos 85d59c0b65 XMB: Make sure wallpaper path is empty on init 2025-08-04 23:20:13 +03:00
sonninnos 139dd38f9d Always use the same swap button default 2025-08-04 21:42:11 +03:00
libretroadmin 10c6d45850 vulkan_draw_quad - buildfix 2025-08-04 19:42:55 +02:00
libretroadmin 7dabae94c5 Buildfix 2025-08-04 19:40:24 +02:00
libretroadmin 03dbcc53e7 Get rid of superfluous macros around memcmp and strcpy 2025-08-04 19:30:03 +02:00
sonninnos 563b687db8 Auto+entry state sanity checks and reorderings 2025-08-04 19:17:12 +03:00
Eric Warmenhoven 8b11aec44d apple: include gam4980 core in App Store builds 2025-08-04 07:45:53 -04:00
libretroadmin e3435221d8 (OpenAL) Implement device_list_new/device_list_free 2025-08-04 07:49:26 +02:00
libretroadmin d9d951b92e Silence another warning 2025-08-04 07:14:10 +02:00
libretroadmin 917e29c039 Try to silence some more warnings 2025-08-04 06:57:29 +02:00
libretroadmin 86e65d10be (XAudio2) Buildfix, and implement non-mmdevice codepath for querying
the samplerate of the device
2025-08-04 06:49:16 +02:00
sonninnos d66dd00078 RGUI: Layout + date format adjustments (#18147) 2025-08-04 06:39:32 +02:00
libretroadmin cb9ed749db (XAudio) Replicate behavior of WASAPI - selecting the audio
device will set the samplerate set by the OS as well
NOTE: There is still something wrong with the XAudio2 driver
and the 'devices' it enumerates and shows in the menu. It seems
the index is wrong, i.e. the entries seem swapped around. This
was an issue even before this commit. WASAPI seems to work correctly
2025-08-04 05:33:06 +02:00
github-actions 780eac62e6 Fetch translations from Crowdin 2025-08-04 00:25:08 +00:00
libretroadmin fc98e894a6 Fix Griffin builds - MMDevice should be OK from Vista and up 2025-08-04 01:34:58 +02:00
libretroadmin 732f598fd0 Define LEGACY_WIN32 only in the files that need it 2025-08-04 00:54:15 +02:00
libretroadmin 537712a634 (MMDevice) Changes:
* Add mmdevice_samplerate
* _WIN32_WINNT checks will fail on modern MSYS2/MIngw-w64 setups (Win10/11) -
_WINN32_WINNT will be 0x0601 (1537) - i.e. Win7 and up. We can assume MMDevice
is available since Vista, so lower these checks to Vista and up
2025-08-03 22:07:33 +02:00
libretroadmin 1cb78161a6 (WASAPI/MMDevice) Move MMDevice specific code over to mmdevice_common.c 2025-08-03 16:34:35 +02:00
zoltanvb 3706c3b22d Enable sdl12-compat and sdl-compat detection (#18142) 2025-08-03 15:47:08 +02:00
Eric Warmenhoven 7dc3d1ed9b ios9: fix loading cores 2025-08-03 00:47:18 -04:00
sonninnos 0990e25022 Auto load state playlist entry band-aid 2025-08-03 05:23:38 +03:00
libretroadmin 51cc74d0e0 (Xaudio2) Move the set wave format up earlier before CreateMasteringVoice,
override the 'sampling rate' variable, and set the new sampling rate in
case it gest overwritten by a new value. Next step will be to query the
OS device's default sampling rate and use that
2025-08-03 02:42:19 +02:00
github-actions a30b3ce1e2 Fetch translations from Crowdin 2025-08-03 00:19:32 +00:00
sonninnos 5eca25067a Add play count to runtime log (#18141) 2025-08-03 01:19:37 +02:00
sonninnos 405c3476f5 Save state slot improvements (#18140)
* Stop polluting playlists with redundant entry_slot numbers

* Playlist entry_slot improvements and cleanups

* Save current state slot to runtime log
2025-08-02 23:38:18 +02:00
libretroadmin ecbc05de6b (Audio drivers) Some cleanups 2025-08-02 21:18:50 +02:00
libretroadmin a018f54559 (DirectSound) Set DirectSound back to signed 16bit integer 2025-08-02 19:27:12 +02:00
libretroadmin f8e35e5f11 (DirectSound) Some refactors 2025-08-02 19:25:46 +02:00
libretroadmin a3754306c9 (WASAPI) Unique namespacing of functions
(XAudio2) More logging
2025-08-02 18:41:13 +02:00
Jamiras 0e3c82ecd6 use new hook for chd intercept (#18139) 2025-08-02 18:11:47 +02:00
libretroadmin 84b07468f3 (Xaudio2) Refinement of initialization code - add some logs and make it more
like WASAPI
2025-08-02 18:09:46 +02:00
libretroadmin e7944cc1a8 (XAudio) xa_write - return what is being written 2025-08-02 16:35:15 +02:00
libretroadmin 24eb75dda0 (audio) Audio chunk sizes in this file seem to be only used for
cores that implement non-batch audio callback
2025-08-02 15:22:43 +02:00
libretroadmin d89988f7d7 (GX) Move audio chunk size defines to gx_audio.c 2025-08-02 15:07:49 +02:00
libretroadmin a485bf7f16 Namespace cleanups and style nits 2025-08-02 15:00:43 +02:00
libretroadmin 63a146f0ea (Pipewire) Namespace all static globals and functions with 'pwire_' 2025-08-02 14:23:15 +02:00
libretroadmin 3e29213d5e (WASAPI) Fix mistake 2025-08-02 07:58:44 +02:00
zoltanvb 108bbc3879 Favor mouse coordinates for lightgun on Android. (#18134)
If mouse is detected, use the respective coordinates for reporting lightgun state.
Coordinate conversion adjusted to other input drivers.
2025-08-01 22:18:27 +02:00
libretroadmin 83cdca400b Turn iteration variables into int/size_t types 2025-08-01 21:53:52 +02:00
libretroadmin 320bb32406 use int types for iteration variables 2025-08-01 20:20:06 +02:00
libretroadmin 88e0a0e8ca return variable name consistency 2025-08-01 19:52:38 +02:00
libretroadmin 9567f3cbd9 (audioio) Add TODO/FIXME 2025-08-01 19:50:26 +02:00
libretroadmin ab47260fca (Audio) write functions - return variable name consistency 2025-08-01 19:48:34 +02:00
libretroadmin 34bc60e6d4 (openAL) More correct way of removing tmpbuf 2025-08-01 17:32:09 +02:00
libretroadmin 77185a734d (OpenAL) Unroll al_fill_internal_buf into al_write 2025-08-01 16:52:04 +02:00
libretroadmin dc2bf1226e (SDL_Audio) Make (reasonable) assumption that AUDIO_F32SYS (float)
is unavailable for SDL1
2025-08-01 16:25:51 +02:00
libretroadmin 4bcf5dd1a2 (SDL) Buildfix 2025-08-01 16:17:53 +02:00
libretroadmin 0f510fad39 Revert "(OpenAL) Don't need to copy into intermediary buffer anymore (tmpbuf)"
This reverts commit ab7a3e9ffa.
2025-08-01 16:16:54 +02:00
libretroadmin c6622f5f0a (OpenAL) Changes: don't need has_float variable anymore 2025-08-01 14:23:00 +02:00
libretroadmin 5d43932aee (SDL_Audio) Changes:
* Clean up some log messages
* More robust implementation of float/s16 buffer size determination
2025-08-01 14:20:52 +02:00
libretroadmin 5fec502174 (SDL_Audio) Changes:
* Put back log messages but this time implement them properly, we first
show the requested spec, then show the received spec afterwards
* Implement floating point sample support, should be more optimal
2025-08-01 14:16:18 +02:00
libretroadmin 80f2d91ef3 (SDL_Audio) Changes:
* sdl_microphone_find_num_frames - duplicate function
* Duplicate log message
2025-08-01 14:02:18 +02:00
libretroadmin ab7a3e9ffa (OpenAL) Don't need to copy into intermediary buffer anymore (tmpbuf) 2025-08-01 12:42:55 +02:00
libretroadmin ef69296be3 Rewrite al_fill_internal_buf - only call memcpy if 3rd argument
is non-0
2025-08-01 04:59:58 +02:00
libretroadmin 318e3ca9c1 (OpenAL) Bugfix: sizeof should be float for float sample format 2025-08-01 03:41:18 +02:00
libretroadmin 4d76e042ad (OpenAL) Implement float sample format support - query support with
alIsExtensionPresent("AL_EXT_FLOAT32")
2025-08-01 02:41:48 +02:00
libretroadmin 1e2500f736 (openAL) Changes:
* Don't use alGetError anymore in hot loop
* Turn off looping (doesn't seem to be needed?)
* Some loop optimization
2025-08-01 00:25:54 +02:00
libretroadmin 8f4990e835 (WASAPI) Changes/style nits:
* Value that gets returned gets called _len
* Less calls to macro FIFO_WRITE_AVAIL
2025-07-31 19:17:33 +02:00
libretroadmin 072d953b01 Only increment written if ir is > 0 2025-07-31 14:32:52 +02:00
libretroadmin b425abd0bb (WASAPI) Small cleanups:
* written variable changed from 'ssize_t' to 'size_t'
* for loop rewritten to while
2025-07-31 14:26:55 +02:00
Fancy2209 817428b772 Fix psl1ght target of dist-cores.sh (#18130) 2025-07-31 11:39:38 +02:00
github-actions 1191c964b1 Fetch translations from Crowdin 2025-07-31 00:17:44 +00:00
Jamiras 3acebdac0a fix invalid pointer reference when iterator gets cloned (#18129) 2025-07-30 10:57:13 +02:00
github-actions 09b9aec72e Fetch translations from Crowdin 2025-07-30 00:18:24 +00:00
Eric Warmenhoven 77f2d8cce5 fix webOS github action 2025-07-28 22:15:25 -04:00
Eric Warmenhoven 1d17a50a9d ios: fix crash when scanning files 2025-07-28 21:52:51 -04:00
github-actions 4a256179ad Fetch translations from Crowdin 2025-07-29 00:19:49 +00:00
zoltanvb 85aa59dc4f Enable database filter for genre and region (#18122) 2025-07-28 10:48:06 +02:00
github-actions 5e5f047e5b Fetch translations from Crowdin 2025-07-27 00:19:32 +00:00
github-actions 58dcecea08 Fetch translations from Crowdin 2025-07-26 00:16:51 +00:00
github-actions 0747dc6eb0 Fetch translations from Crowdin 2025-07-25 00:18:00 +00:00
zoltanvb 7280859069 Change "Start in fullscreen" item name (#18116)
* Change "Start in fullscreen" item name

https://github.com/libretro/RetroArch/issues/9515

I agree that current wording does not cover the functionality, this may be better.

* Refine fullscreen menu items.
2025-07-24 05:26:41 +02:00
github-actions 2364ef7827 Fetch translations from Crowdin 2025-07-24 00:18:08 +00:00
libretroadmin 590a945cc2 fifo_read - only call memcpy if 3rd argument is greater than 0 2025-07-23 16:03:55 +02:00
Jamiras 3829672dc1 (cheevos) upgrade to rcheevos 12.0 (#18117) 2025-07-23 04:04:15 +02:00
sonninnos a86c031410 Make reset and close content follow quit confirm logic (#18118) 2025-07-23 04:03:54 +02:00
libretroadmin 312550f499 (task_content.c) Cut down on some gotos 2025-07-22 17:51:37 +02:00
libretroadmin d9dba4e376 Revert "(task_content) Silence warning"
This reverts commit c1862dccc8.
2025-07-22 17:29:13 +02:00
libretroadmin 8dfc31461e Revert "* task_content.c"
This reverts commit 9b1d67c03a.
2025-07-22 17:27:04 +02:00
libretroadmin 5ba1e7077e Revert "content_init - don't need the switch when error_enum is not null"
This reverts commit e18b01302d.
2025-07-22 17:26:54 +02:00
libretroadmin 4c3a88a2f8 Revert "No longer shows unnecessary content info runloop message"
This reverts commit a6b7cf459e.
2025-07-22 17:26:25 +02:00
libretroadmin 051c5cff77 Revert "(task_content.c) Get rid of some more unnecessary gotos"
This reverts commit 903501f183.
2025-07-22 17:26:15 +02:00
libretroadmin 13c6eb53c9 Some more static code analysis fixes/cleanups 2025-07-22 17:17:20 +02:00
libretroadmin c1862dccc8 (task_content) Silence warning 2025-07-22 16:43:45 +02:00
libretroadmin 903501f183 (task_content.c) Get rid of some more unnecessary gotos 2025-07-22 16:42:23 +02:00
libretroadmin a6b7cf459e No longer shows unnecessary content info runloop message 2025-07-22 16:02:16 +02:00
libretroadmin e18b01302d content_init - don't need the switch when error_enum is not null 2025-07-22 15:42:05 +02:00
libretroadmin 9b1d67c03a * task_content.c
* content_file_load refactor - simplify
* error_string no longer needs to be dynamically allocated, make
a small local string and pass it around
2025-07-22 15:39:46 +02:00
libretroadmin 9e31b35f1b (task_content) content_file_list_append_temporary - simplify 2025-07-22 15:14:43 +02:00
libretroadmin e453abc71b standardize return variable names 2025-07-22 14:36:50 +02:00
libretroadmin 327621938b Cut down on gotos 2025-07-22 14:16:31 +02:00
libretroadmin 341f6d3df4 task_autodetect - cleanups - get rid of gotos 2025-07-22 04:14:20 +02:00
LibretroAdmin 9e0b21da5e Revert "Optimize wastefully encoded raster image files (#18113)" (#18114)
This reverts commit af28b06d02.
2025-07-22 03:25:27 +02:00
Peter J. Mello af28b06d02 Optimize wastefully encoded raster image files (#18113)
Apply an aggressive set of ultimately deterministic optimizations to
raster image files where an actual file size reduction of not less than
50% was possible without the removal of intrinsic properties such as
alpha channels. Rendered image dimensions were always left unchanged.

The primary mechanisms employed during optimization are:
- PNG color mode conversion from TrueColor to indexed palette
  + Accomplished using NeuQuant neural-net color quantization algorithm
- Stripping of data blocks containing irrelevant information, such as:
  + XMP metadata fields
  + Embedded comment fields
  + ICC color profiles (simple graphics with basic color schemes only)
  + EXIF profiles
- Re-compression using "best" or "smallest" profile presets

All modifications are performed on lossless image formats and closely
visually inspected after processing to ensure no loss of apparent
details or introduction of new, unwanted artifacts.

Toolset used:
- RIOT (Radical Image Optimization Tool), v2024.1.0 64-bit
- AdvanceCOMP (part of the Advance Projects), v2.6 64-bit
- optiPNG, v7.9.1 64-bit
- PNGOUT, v2015.02.13 32-bit

Signed-off-by: Peter J. Mello <[email protected]>
2025-07-22 03:15:29 +02:00
sonninnos d452cb843b Database scan logging cleanups 2025-07-22 03:50:27 +03:00
sonninnos 5afbd5f53d Widget color unifications 2025-07-22 03:40:17 +03:00
github-actions 26293387c4 Fetch translations from Crowdin 2025-07-22 00:18:18 +00:00
sonninnos d3756624c8 Menu ticker spacer simplifications 2025-07-22 01:47:14 +03:00
libretroadmin 4b77ad663a task_content.c - small cleanups, initialize variables being passed 2025-07-21 05:59:09 +02:00
libretroadmin e24ca9da66 (task_content.c) replace one magic number 2025-07-21 05:38:18 +02:00
libretroadmin f1198c65a3 (task_content.c) Get rid of some of the obtuse macros 2025-07-21 05:20:46 +02:00
github-actions d99d8a8547 Fetch translations from Crowdin 2025-07-21 00:19:14 +00:00
sonninnos 2153ab55ad Ozone Buildfix 2025-07-20 21:52:30 +03:00
sonninnos 9ab7cd6a62 Ozone: Fix sidebar non-playlist font ticker 2025-07-20 21:38:47 +03:00
sonninnos 8e30bbe3e2 Fix quick playlist manager builtin paths 2025-07-20 21:04:46 +03:00
libretroadmin eb6f0c8dba Get rid of winraw_scancodes enums 2025-07-20 12:52:12 +02:00
libretroadmin dc9ffcce66 (sinc resampler) style nits 2025-07-20 09:37:15 +02:00
libretroadmin 99fe15be46 Fix wasapi_microphone 2025-07-20 08:31:12 +02:00
libretroadmin 7b66dec4f0 core_info_list_new - fix potential leak on error 2025-07-20 08:24:18 +02:00
libretroadmin b0e344a423 Silence some code analysis warnings 2025-07-20 08:11:36 +02:00
libretroadmin 6182e39938 Split libretro_d3d.h up into two separate files 2025-07-20 06:26:12 +02:00
libretroadmin d821ce1062 Some UCRT64 buildfixes 2025-07-20 06:19:58 +02:00
LibretroAdmin 26b806f860 Rewrite file_list_insert - use memmove instead of a malloc and copy (#18097)
* Rewrite file_list_insert - use memmove instead of a malloc and copy

* Use INLINE keyword - C89 buildfix
2025-07-20 05:22:49 +02:00
libretroadmin fa2ce70c5b fifo_write - only do second memcpy call if rest_write > 0 2025-07-20 03:26:50 +02:00
libretroadmin 954d202637 string_remove_all_chars - only write if the character is not the
one to remove
2025-07-20 03:14:20 +02:00
libretroadmin 02f3f31121 scaler_gen_filter - small simplification 2025-07-20 02:38:04 +02:00
github-actions 974c016241 Fetch translations from Crowdin 2025-07-20 00:19:40 +00:00
LibretroAdmin e011e710bd Make last_slash concatenation parts consistent (#18102) 2025-07-19 23:37:31 +02:00
libretroadmin ff652ce22d Fix typo 2025-07-19 22:54:51 +02:00
libretroadmin f8840774e3 (WASAPI) Get rid of IFACE_RELEASE macro 2025-07-19 22:51:49 +02:00
libretroadmin 99e7a80314 Inline uwpgdi.h into wgl_ctx.c 2025-07-19 21:59:54 +02:00
libretroadmin 4b5b214dea Move gdi_texture to gdi_gfx.c 2025-07-19 21:51:58 +02:00
libretroadmin 8ecb7eefd7 Merge rsx_defines.h into rsx_gfx.c 2025-07-19 21:47:56 +02:00
libretroadmin c9452d9263 (d3d9_common) Simplifications 2025-07-19 21:41:22 +02:00
neil4 c89a44b15b Overlays: Dedicate each touch pointer to hitboxes or pointing devices (#18108)
- A touch pointer controlling the mouse/lightgun/pointer will ignore hitboxes if it slides into any.
- A touch pointer pressing a button will not control the mouse/lightgun/pointer if it slides out of the hitbox.
2025-07-19 20:20:29 +02:00
zoltanvb e04985162a Change list update up to July 18. (#18107) 2025-07-19 20:18:48 +02:00
libretroadmin 0efe022e9d Remove audio/common/alsathread.h 2025-07-19 20:18:06 +02:00
libretroadmin ae8dfc789d (CTR) Buildfix #2 2025-07-19 10:16:22 +02:00
libretroadmin dd5dc60520 (CTR) Attempted buildfix 2025-07-19 10:10:17 +02:00
libretroadmin d500a3ecc7 Remove some more gfx/common/ define files 2025-07-19 09:59:54 +02:00
Viačasłaŭ 43cec217b9 PipeWire buildfix (#18106) 2025-07-19 09:44:18 +02:00
libretroadmin 55a7e07959 Remove d3d8_defines.h 2025-07-19 07:03:59 +02:00
libretroadmin 9308f6650c (GX2) Header buildfixes 2025-07-19 07:00:21 +02:00
libretroadmin cb2f0ecbd2 Merge files 2025-07-19 06:58:33 +02:00
libretroadmin eff70a32e5 Merge D3D10 common files into D3D drivers 2025-07-19 05:07:42 +02:00
libretroadmin 59fd200b2c Merge files 2025-07-19 04:58:35 +02:00
libretroadmin d17f6eee1e Buildfixes 2025-07-19 04:53:32 +02:00
libretroadmin d86c1a89b8 Move structs to needed file 2025-07-19 04:42:10 +02:00
libretroadmin 9542a71c89 Move defines to source files 2025-07-19 03:41:09 +02:00
github-actions fb6f6467e0 Fetch translations from Crowdin 2025-07-19 00:16:50 +00:00
sonninnos 9187520222 Move SET_ROTATION env call to info log level 2025-07-19 02:53:02 +03:00
LibretroAdmin 58b686f661 Go back to old rthreads TLS code for now 2025-07-18 18:18:30 +02:00
LibretroAdmin 25546f864a Revert "Move code around"
This reverts commit a018f935d0.
2025-07-18 18:16:27 +02:00
LibretroAdmin b156ce2a42 Revert "Get rid of Inout_opt_bytecount"
This reverts commit 40671b293e.
2025-07-18 18:16:19 +02:00
LibretroAdmin 40671b293e Get rid of Inout_opt_bytecount 2025-07-18 17:46:40 +02:00
LibretroAdmin a018f935d0 Move code around 2025-07-18 17:24:46 +02:00
LibretroAdmin 57a8a731da More UCRT buildfixes 2025-07-18 16:07:10 +02:00
LibretroAdmin c9931cd936 Merge microphone drivers (#18103)
* Merge microphone drivers

* Some buildfixes

* * Merge audio/common/wasapi.c into audio/drivers/wassapi.c
* Buildfix for alsa/drivers/alsathread.c

* Merge more files

* Attempted buildfix

* Try to use enum values instead of eRender/eCapture

* Simplification of mmdevice_name
2025-07-18 15:47:31 +02:00
LibretroAdmin 25edbe17d2 Some UCRT buildfixes 2025-07-18 13:44:56 +02:00
libretroadmin 8bd60af8b7 Put input_st variable behind HAVE_BSV_MOVIE ifdef 2025-07-18 11:26:05 +02:00
libretroadmin cc408864af Silence some code analysis warnings 2025-07-18 10:06:16 +02:00
libretroadmin cd0f159238 Static code analysis warning fixes 2025-07-18 09:26:26 +02:00
LibretroAdmin 180b39cd3d Merge pull request #18100 from saulfabregwiivc/lvorbis-link-libogc-platforms
allow passing HAVE_OGG_OGC to link to needed OGG libs in PPC portlibs on libOGC platforms (GameCube/Wii), needed for a few cores.
2025-07-18 08:13:20 +02:00
LibretroAdmin 6019fc863b Merge pull request #18101 from RogueScholar/desktop-entry-file
Add full complement of key/value pairs to Desktop Entry file
2025-07-18 08:12:29 +02:00
libretroadmin 80b3ccebba Silence some static code analysis warnings + code formatting/style nits 2025-07-18 08:11:25 +02:00
Peter J. Mello a4535c4eac Add all relevant KV pairs to Desktop Entry file
This commit extends the RetroArch desktop entry
file—responsible for integrating the app with
Linux desktop environments—to include all relevant
properties. Some notable aspects:

- **`TryExec`**/**`Exec`**: TryExec _should_
  contain the canonical path to the executable,
  however the RA buildsystem lacks a ready
  mechanism for populating the correct value for
  the target at build time, so we fallback to
  searching $PATH here. To Exec we add the %F
  token, meaning that RA is a "file handler" that
  users are able to drag files onto the launcher
  icon that become arguments to the launch command.
- **`MimeType`**: This key determines which file
  extensions the system should offer to open with RA.
  It should be regularly reviewed for any new MIME
  registrations which need to be represented going
  forward.
- **`PrefersNonDefaultGPU`**: Linux by default offers
  hardware to processes in order from least capable to
  most performant. This key reverses that behavior so
  more demanding emulation cores will run more
  smoothly.
- **`SingleMainWindow`**: Changes the default behavior
  when the launcher is clicked while an instance is
  already running from launch a second instance to
  elevate the main window of the already running one.

Version 1.5 of the Freedesktop [Desktop Entry
Specification](https://specifications.freedesktop.org/desktop-entry-spec/latest/) was the reference for these changes.

Signed-off-by: Peter J. Mello <[email protected]>
2025-07-18 03:54:57 +01:00
github-actions dddc66c797 Fetch translations from Crowdin 2025-07-18 00:17:38 +00:00
libretroadmin b23cbf0a57 glslang_read_shader_file - small cleanup 2025-07-18 01:58:40 +02:00
libretroadmin 2f5d95b0cf Move non-essential string_list functions out of file 2025-07-18 01:43:03 +02:00
saulfabreg Wii VC Project 5ed20207f5 allow passing HAVE_OGG_OGC to link to needed OGG libs in PPC portlibs, needed for a few cores. 2025-07-17 18:28:49 -05:00
libretroadmin 9ca8e1c1c1 * Change variable names for characters being written
* menu_cbs_sublabel - skip some unnecessary copies
2025-07-18 00:00:43 +02:00
libretroadmin ae2465f0db Variable name changes 2025-07-17 23:41:27 +02:00
libretroadmin d822cf58a1 C89_BUILD buildfix 2025-07-17 23:03:59 +02:00
libretroadmin ab9535c827 Code analysis cleanups/fixes 2025-07-17 22:28:48 +02:00
libretroadmin dd480aac94 Silence some more code analysis warnings 2025-07-17 12:33:47 +02:00
libretroadmin 4c07e26649 Code analysis fixes - fix some warnings and prevent garbage data 2025-07-17 12:11:31 +02:00
libretroadmin 162d00d73b (libretro-db) Fix code analysis warning 2025-07-17 10:29:58 +02:00
libretroadmin 7b093cc55e More code analysis warning fixes 2025-07-17 10:00:39 +02:00
libretroadmin 195c19a1c9 Fix more static code analysis errors/warnings 2025-07-17 09:44:19 +02:00
libretroadmin 03573db27c Some more static code analysis warning fixes 2025-07-17 09:09:30 +02:00
libretroadmin f45fd77d68 Fix errors and warnings pointed out by static code analysis (Clang) 2025-07-17 08:49:53 +02:00
libretroadmin c6d72062e2 remove dead code 2025-07-17 08:02:06 +02:00
LibretroAdmin 3f4fd3b086 Merge pull request #18099 from JoeOsborn/replay-same-timeline-check
Add "same timeline check" and "future state check" for replays
2025-07-17 07:17:54 +02:00
LibretroAdmin b7479e934b Merge pull request #18092 from JoeOsborn/replay-compress-checkpoints
Compress checkpoints in replays
2025-07-17 07:17:46 +02:00
libretroadmin efc1f7f8e1 Variable naming cleanups 2025-07-17 06:10:48 +02:00
libretroadmin 807866d799 Style nit 2025-07-17 05:54:24 +02:00
libretroadmin daeb46cf5a Variable name cleanups 2025-07-17 05:36:20 +02:00
libretroadmin cc826c4ca6 Cleanup some variable names and some other cleanups 2025-07-17 05:11:00 +02:00
libretroadmin d8725d77bb Small variable cleanups - should make no functional difference 2025-07-17 04:40:42 +02:00
Joseph C. Osborn 7c05359933 c89 fixes 2025-07-16 10:35:33 -07:00
Joseph C. Osborn 1cc76cd64d Add "same timeline check" and "future state check" for replays
When loading and saving states taken during a replay, their contents
should be compared with the current replay.

- If in playback mode, states from past the end of the current replay
should be disallowed, as should states from an alternate timeline of
the current replay (inconsistent input history)
  - This is because in playback mode, RA replays are read-only
- If in recording mode, states from the future or from another
timeline should overwrite the current replay's data with a warning
- In either playback or recording, loads of states from the past that
have a consistent series of inputs (same timeline) should be loaded
and the replay should be rewound (and truncated in case of recording)

This behavior is as specified in
https://tasvideos.org/LawsOfTAS/OnSavestates

The existing code only implemented some of these checks.
2025-07-16 10:09:09 -07:00
sonninnos 19f6d94a78 Limit core suggestion option only for dynamic platforms 2025-07-16 06:16:43 +03:00
LibretroAdmin df808f7663 Merge pull request #18095 from libretro/libretro-common-refactors
libretro-common refactors: file_path
2025-07-16 04:37:43 +02:00
github-actions c8cb58f1d2 Fetch translations from Crowdin 2025-07-16 00:17:38 +00:00
libretroadmin 2770470695 Rewrite find_last_slash - use one loop, skip two strrchr calls 2025-07-16 01:31:29 +02:00
libretroadmin 047f926540 use last_slash in file_path 2025-07-16 00:31:09 +02:00
libretroadmin d37068cfb8 Move code back 2025-07-15 23:35:37 +02:00
LibretroAdmin 3162b6a438 Merge pull request #18094 from pastalian/fix-disable-pipewire
Fix build with disable-pipewire on systems with pipewire installed
2025-07-15 18:35:53 +02:00
Takuya Wakazono 027564a0c9 Fix build with disable-pipewire on systems with pipewire installed
On systems where pipewire is installed but the build is configured with
--disable-pipewire, HAVE_PIPEWIRE_STABLE is set to 1 while HAVE_PIPEWIRE
is 0. Checking only HAVE_PIPEWIRE_STABLE leads to a build failure.

```
LD retroarch
/usr/lib/gcc/x86_64-pc-linux-gnu/15/../../../../x86_64-pc-linux-gnu/bin/ld: obj-unix/release/camera/camera_driver.o:(.data.rel+0x0): undefined reference to `camera_pipewire'
collect2: error: ld returned 1 exit status
```

Downstream Bug: https://bugs.gentoo.org/960043
2025-07-15 23:27:10 +09:00
Joseph C. Osborn 1e0c723ba3 Fix warnings under many platforms, unpack nested ifdefs in includes. 2025-07-15 07:25:09 -07:00
libretroadmin 14906fc489 Revert "- Cut down on strrchr calls inside loops"
This reverts commit f73d9dead3.
2025-07-15 09:30:13 +02:00
github-actions 6010c74559 Fetch translations from Crowdin 2025-07-15 00:17:55 +00:00
Joseph C. Osborn 6227156e73 Add new replay token type CHECKPOINT2
This can optionally encode and compress checkpoints.  For now, only
raw encoding is supported, but e.g. delta encoding, block-based
encoding, or deduplicated encoding could be supported in the future.

Three compression schemes are included (selected automatically based
on compilation flags): ZSTD, ZLIB, or NONE.

All three schemes are supported for decompression if available.

For compression, ZSTD is preferred over ZLIB is preferred over NONE.
2025-07-14 14:32:53 -07:00
Joseph C. Osborn 46be205b75 add zstd compression library (single-threaded only) 2025-07-14 14:32:48 -07:00
libretroadmin f73d9dead3 - Cut down on strrchr calls inside loops
- Replace string_replace_all_chars calls
2025-07-14 22:31:36 +02:00
LibretroAdmin 6fa73c3431 Merge pull request #18090 from JoeOsborn/fix-replay-rewind
fix three bugs with replays and rewinding
2025-07-14 19:31:53 +02:00
LibretroAdmin ad5a98f2d3 Merge pull request #18091 from JoeOsborn/emscripten-makefile-includedirs
Emscripten makefile should use INCLUDE_DIRS from Makefile.common
2025-07-14 19:31:30 +02:00
libretroadmin 4099b49483 (menu_cbs_title) SANITIZE_TO_STRING rewrite:
* Turn macro into function
* Don't use strchr (O(n^2), switch to single pass loop instead
2025-07-14 19:13:11 +02:00
libretroadmin 6e5e63b6d4 Reduce some strrchr double calls 2025-07-14 19:05:11 +02:00
libretroadmin 1cc0f3273f (file_path) Optimize find_last_slash:
* Do one loop iteration inside the function instead of two
strrchr(s) for finding the forward and backwards slash
2025-07-14 18:44:49 +02:00
libretroadmin 9b6641c951 (file_path) fill_pathname_join_special - small tweak 2025-07-14 17:37:33 +02:00
libretroadmin 2d632fed54 file_path changes:
* improve fill_pathname_slash, no longer call strlcat
  - strlcat call would have been done in strlcat regardless
2025-07-14 17:26:15 +02:00
Joseph C. Osborn 246caaec3f Emscripten makefile should use INCLUDE_DIRS from Makefile.common
With this change, HAVE_ZSTD or HAVE_CHD can successfully be set for
emscripten builds.

This mirrors how other Makefiles use Makefile.common.
2025-07-14 08:19:57 -07:00
Joseph C. Osborn 27f141a7a5 fix some bugs with replays and rewinding
- rewinding past the start clobbers part of the header
- during recording & rewind, should not push input events
- during recording or playback, getting to the end of the rewind
  buffer should not halt the movie
2025-07-14 08:09:25 -07:00
libretroadmin 3eb8589550 (file_list) Optimizations:
* file_list_insert - use memmove instead of malloc to add new
file item on top of the existing one
2025-07-14 17:04:44 +02:00
libretroadmin 9cfcc5ec8e Revert video_coord_array code 2025-07-14 06:00:44 +02:00
libretroadmin 215219dc51 Change libretro-common code back 2025-07-14 05:50:17 +02:00
libretroadmin 9c82213d19 Remove some else statements 2025-07-14 04:43:36 +02:00
libretroadmin b7db9a65af video_viewport_get_scaled_aspect2 - cleanup 2025-07-14 03:55:07 +02:00
libretroadmin 6010a53fec gfx_animation_ticker_loop - small refactor 2025-07-14 03:26:00 +02:00
libretroadmin 435849d00f (libetro-common) scaler simplifications 2025-07-14 03:00:08 +02:00
github-actions de298b18c4 Fetch translations from Crowdin 2025-07-14 00:18:31 +00:00
libretroadmin 3226361c1d Prevent some nbio windows mmap memory leaks when failing 2025-07-14 01:19:39 +02:00
libretroadmin 86b55c14ec (file_list)
Performance improvements:
* Various optimizations
* Reduced memory allocations - file_list_insert would call malloc
for every single item that would need to be shifted downwards. instead
it does a memmove call now
2025-07-14 00:17:12 +02:00
libretroadmin 2f9b0181dd video coord array improvements:
* single memory block allocation vs. several
* reduced memcpy calls
* simplified pointer arithmetic
* simplified code
2025-07-13 23:13:42 +02:00
libretroadmin f6da101330 (resampler) indentation cleanups 2025-07-13 18:40:11 +02:00
Eric Warmenhoven 43031d2154 apple: avfoundation camera driver fixes
better permissions check, delay starting camera until _start
2025-07-13 08:40:29 -04:00
libretroadmin de76511ee7 (file_path) Cleanups / refactors 2025-07-13 08:02:28 +02:00
LibretroAdmin 228f4b346d Merge pull request #18087 from neil4/overlay-fix-speed-limit
Fix input_overlay_track_touch_inputs
2025-07-13 06:24:53 +02:00
nfore dabf543cde Fix input_overlay_track_touch_inputs
- Fixes bug introduced in 31014e99c0. Unmatched pointers were not considered outliers
2025-07-12 22:59:16 -05:00
libretroadmin 55bada6bda Rewrite strlcpy - add early return for len == 0 2025-07-13 04:59:24 +02:00
libretroadmin 311a64a413 (audio_conversion) small cleanups 2025-07-13 03:21:13 +02:00
github-actions e683017f45 Fetch translations from Crowdin 2025-07-13 00:19:28 +00:00
libretroadmin 4973e47cac (Resampler) Style nits/cleanups 2025-07-13 01:59:36 +02:00
libretroadmin 04af1a1e98 Put header includes inside ifdef guard 2025-07-12 22:08:09 +02:00
LibretroAdmin 72ff77347f Merge pull request #18086 from neil4/overlay-touch-tracking-speed-limit 2025-07-12 21:27:47 +02:00
nfore 31014e99c0 Overlays: Put a speed limit on touch pointer tracking
A pointer is considered new if it travels ~25% of the screen in one poll.
2025-07-12 14:11:22 -05:00
libretroadmin 4a7b00f43e Rewrite string_list_join_concat and menu_entries_append function 2025-07-12 20:53:48 +02:00
libretroadmin 0d854fef31 remove strlcats from string_list_join_concat_special 2025-07-12 20:36:58 +02:00
libretroadmin cb02d1ffcf Stop using strlen_size, just use regular strlen 2025-07-12 20:27:41 +02:00
sonninnos 743e0406bd Environ logging cleanups 2025-07-12 08:41:54 +03:00
sonninnos 419007c1ca Smaller regular widget notification option (#18085) 2025-07-12 04:37:38 +03:00
github-actions 1808a38deb Fetch translations from Crowdin 2025-07-12 00:16:34 +00:00
Eric Warmenhoven 4bdb68b9d9 apple: fix coretext bounds checking 2025-07-11 11:57:34 -04:00
libretroadmin 2dbb9f62d8 * Change some variable naming conventions
* Make return control paths less dependent on variables
2025-07-11 02:15:12 +02:00
libretroadmin bca5cafaa6 Rewrite nested_list functio
Rewrite core_info function - no more strlcat usage
2025-07-10 22:34:45 +02:00
sonninnos b2ca569521 Logging unification cleanups 2025-07-10 05:59:06 +03:00
github-actions 40e3b56d04 Fetch translations from Crowdin 2025-07-10 00:17:32 +00:00
sonninnos 3885f4f8a5 Core updater logging cleanups 2025-07-09 17:49:24 +03:00
sonninnos d5a5681612 More room for widget task progress percentage 2025-07-09 17:45:26 +03:00
Eric Warmenhoven 47bc1188ae apple: fix some coretext alignment and rendering issues 2025-07-08 23:49:54 -04:00
Eric Warmenhoven d4fe2055f9 ios/tvos: no webserver/webdav server on simulator 2025-07-08 23:49:53 -04:00
sonninnos ac959fef26 Safety for menu_shader_get() 2025-07-08 22:36:38 +03:00
sonninnos 48f5677417 Auto Frame Delay tweaking 2025-07-08 19:53:21 +03:00
Eric Warmenhoven f10818b243 ios: fix iphone landscape rendering 2025-07-07 22:03:59 -04:00
libretroadmin 3e3f989d45 Turn some strlcats into strlcpy 2025-07-08 02:57:28 +02:00
github-actions 90f2c1f456 Fetch translations from Crowdin 2025-07-08 00:16:57 +00:00
Eric Warmenhoven d316c2cbc9 ipad: don't force fullscreen, allow multitasking 2025-07-07 10:36:26 -04:00
LibretroAdmin 0a2c1b2272 Merge pull request #18075 from warmenhoven/warmenhoven/pr/coretext
apple: fix coretext font renderer unicode handling, make default
2025-07-06 14:45:41 +02:00
LibretroAdmin 1dea6dfbf0 Merge pull request #18073 from XerTheSquirrel/fix-vfs-mmap-seekend
Correct SEEK_CUR and SEEK_END for memory mapped VFS files.
2025-07-06 13:56:35 +02:00
Eric Warmenhoven 7d09e380f4 apple: fix coretext font renderer unicode handling, make default 2025-07-06 01:07:03 -04:00
Eric Warmenhoven fd7f561fb6 griffin: fix debug build when including zstd 2025-07-06 01:07:02 -04:00
Eric Warmenhoven 0ca114701b fix webOS github action 2025-07-06 01:02:47 -04:00
github-actions 0ba251b7f2 Fetch translations from Crowdin 2025-07-06 00:18:47 +00:00
Stephanie Gawroriski 4704961eb9 Correct SEEK_CUR and SEEK_END for memory mapped VFS files as neither of their conditions were correct, SEEK_CUR never failed and SEEK_END effectively always failed. 2025-07-05 16:48:26 -04:00
Eric Warmenhoven 6046e29919 net_http: don't include port in Host header unnecessarily 2025-07-05 00:21:09 -04:00
github-actions f1d95f2deb Fetch translations from Crowdin 2025-07-05 00:15:54 +00:00
github-actions d165787296 Fetch translations from Crowdin 2025-07-04 00:16:56 +00:00
github-actions 68d8f98d47 Fetch translations from Crowdin 2025-07-03 00:17:11 +00:00
LibretroAdmin 5367d3ab63 Merge pull request #18065 from alphanu1/gameoride
CRT - Added Switchres Game Overrides
2025-07-02 12:05:04 +02:00
alphanu1 71dc58d20a Added Switchres Game Overrides 2025-07-01 21:07:27 +01:00
github-actions d8012c901b Fetch translations from Crowdin 2025-07-01 00:19:22 +00:00
LibretroAdmin c61845895e Merge pull request #18054 from webosbrew/feature/update-sdl
[webOS] Update to SDL 2.30.12
2025-06-30 23:49:40 +02:00
github-actions 135da9597b Fetch translations from Crowdin 2025-06-30 00:18:07 +00:00
sonninnos 1389c15280 Fix filestream_copy+cmp 2025-06-29 10:41:20 +03:00
github-actions d40625b87c Fetch translations from Crowdin 2025-06-28 00:16:06 +00:00
Eric Warmenhoven 371ddf5889 macos build fix 2025-06-27 15:33:04 -04:00
Eric Warmenhoven 9ff5aaa679 macos x86 build fix 2025-06-27 15:07:48 -04:00
Mariotaku 70a39217c1 set EGL_PLATFORM if not set 2025-06-28 00:41:30 +09:00
Mariotaku 6c2a2a1b2c Updated to SDL 2.30.12 2025-06-28 00:41:30 +09:00
Eric Warmenhoven eea37466fc apple: better mfi controller disconnect handling 2025-06-27 11:17:33 -04:00
Eric Warmenhoven 1e109e2927 apple: include zstd and nearest resampler 2025-06-27 11:17:25 -04:00
github-actions 4161099ddb Fetch translations from Crowdin 2025-06-27 00:17:02 +00:00
LibretroAdmin b365ab02a6 Merge pull request #18055 from JoeOsborn/rmsgpack-intfstream
Change RFILE to intfstream_t in libretro-db
2025-06-26 23:24:06 +02:00
Joseph C. Osborn f5e81aa01d Add more C files to libretrodb makefile 2025-06-26 10:15:57 -07:00
libretroadmin 6dcb727c62 Remove unused buffer (?) 2025-06-26 16:57:04 +02:00
Joseph C. Osborn f4bba523ab Change RFILE to intfstream_t in libretro-db 2025-06-26 06:44:59 -07:00
libretroadmin e13140ba04 Rewrite some strlcat calls into strlcpy 2025-06-26 14:47:53 +02:00
github-actions a8caac7142 Fetch translations from Crowdin 2025-06-26 00:16:49 +00:00
LibretroAdmin 46fd8f6532 Merge pull request #18053 from sonninnos/filestream-copy-cmp
Built-in playlist migration rework
2025-06-25 20:28:14 +02:00
sonninnos bc3f1c6487 Built-in playlist migration rework 2025-06-25 20:38:24 +03:00
LibretroAdmin b0294736ed Merge pull request #18052 from Uukrull/zstd
webOS: Enable ZStandard
2025-06-25 13:35:23 +02:00
Uukrull c680a72a18 webOS: Enable ZStandard 2025-06-25 12:28:31 +02:00
LibretroAdmin c30d790854 Merge pull request #18049 from Skirlez/fix-32bit-cheats 2025-06-25 08:39:01 +02:00
github-actions 2590cc9120 Fetch translations from Crowdin 2025-06-25 00:17:08 +00:00
Skirlez f1289f60ef Avoid creating huge list of numbers for cheat-related settings 2025-06-25 00:53:10 +03:00
LibretroAdmin 69b82e1fc2 Merge pull request #18046 from sonninnos/database-multidisk
Improve multidisk game scanning
2025-06-24 21:18:01 +02:00
sonninnos 0fbce9680a Fix playlist json flags (#18048) 2025-06-24 18:19:40 +03:00
Eric Warmenhoven 5e578f9fc4 apple: better mfi controller disconnect handling 2025-06-23 22:45:45 -04:00
sonninnos 6056a0e602 Improve multidisk game scanning 2025-06-24 05:36:05 +03:00
github-actions 6e1597970b Fetch translations from Crowdin 2025-06-24 00:17:04 +00:00
LibretroAdmin 243ed9d171 Merge pull request #18045 from zoltanvb/android_keyboard_fixes
Minor Android keymap fixes
2025-06-23 12:34:29 +02:00
github-actions 2553927119 Fetch translations from Crowdin 2025-06-23 00:18:05 +00:00
zoltanvb 69a9e05067 Minor Android keymap fixes
Some enhancement possibilities found while investigating another
issue - shift keys were swapped (especially noticeable in menu),
enter may be mapped to DPAD_CENTER by the system, but unfortunately
the 102. key can not be mapped separately.
2025-06-22 21:14:49 +02:00
Eric Warmenhoven 185971182d apple: provide option to disable metal argument buffers 2025-06-22 12:29:17 -04:00
LibretroAdmin c27e815808 Merge pull request #18040 from sonninnos/libchdr-zstd
Add Zstandard support + libchdr update
2025-06-22 15:48:52 +02:00
sonninnos 0575ee99c6 Fix info disable button (#18043) 2025-06-22 14:19:47 +03:00
Eric Warmenhoven 12599993c0 apple: speed up cloud sync 2025-06-21 23:57:03 -04:00
sonninnos 8c6744145e Capitalization fix 2025-06-22 05:12:57 +03:00
github-actions f30947840e Fetch translations from Crowdin 2025-06-22 00:18:29 +00:00
sonninnos ece640fd87 MSVC buildfix attempt 2025-06-22 01:47:13 +03:00
sonninnos 75719b2177 Buildfix attempt 2025-06-22 00:21:19 +03:00
sonninnos b3b8b1e340 Add ZStandard support + libchdr update 2025-06-22 00:03:01 +03:00
LibretroAdmin ac46d10e4a Merge pull request #18039 from warmenhoven/warmenhoven/pr/reminiscence-vitaquake2-store 2025-06-21 22:11:57 +02:00
Eric Warmenhoven c16840444e apple: add reminiscence and vitaquake2 to App Store builds 2025-06-21 14:08:10 -04:00
Eric Warmenhoven d9d874712c apple: extremely minor cleanup 2025-06-21 13:27:22 -04:00
LibretroAdmin cc4373d7a4 Merge pull request #18037 from DisasterMo/add-irish-language
Add Irish Gaelic as a language option
2025-06-21 15:03:39 +02:00
github-actions dea40e01bc Fetch translations from Crowdin 2025-06-21 00:16:25 +00:00
DisasterMo 883d93f04c Add Irish Gaelic as a language option 2025-06-20 22:37:46 +02:00
sonninnos 3b7bea875e Log also analogs in SET_INPUT_DESCRIPTORS 2025-06-20 17:35:24 +03:00
github-actions cc2440fe7f Fetch translations from Crowdin 2025-06-20 00:16:25 +00:00
LibretroAdmin d3635843c9 Merge pull request #18030 from Ryunam/ozone-font-scale
Ozone: Add options to scale font size
2025-06-19 23:52:34 +02:00
github-actions e92be2a89d Fetch translations from Crowdin 2025-06-19 00:16:59 +00:00
Eric Warmenhoven 9e5f6f4d8a apple: fix bundle id display 2025-06-18 10:48:47 -04:00
github-actions 21c00e79f9 Fetch translations from Crowdin 2025-06-18 00:16:45 +00:00
sonninnos 6126413e92 Revert "Silence ffmpeg camera warnings"
This reverts commit 1f5804cb59.
2025-06-18 01:05:06 +03:00
sonninnos 1f5804cb59 Silence ffmpeg camera warnings 2025-06-18 00:36:29 +03:00
LibretroAdmin f85b738258 Merge pull request #18023 from schellingb/make_lists_static
Make a few large read-only arrays in menu code static
2025-06-17 23:05:53 +02:00
LibretroAdmin 26f6f7200a Merge pull request #18024 from sonninnos/playlists-path-cleanups
Built-in playlist path rework
2025-06-17 23:05:37 +02:00
LibretroAdmin ceb99a0644 Merge pull request #18031 from webosbrew/webos
webOS: Improve compatibility, add debug build option, fix wrong arg removed, fix LF on Makefile.webos
2025-06-17 23:04:41 +02:00
Craig C. 9b9788873c Merge pull request #11 from webosbrew/feature/debug-build
Enable Debug Build for webOS
2025-06-17 13:37:43 +01:00
Mariotaku 5907714842 Don't Remove First Argument if There is None on webOS 2025-06-17 18:33:34 +09:00
Mariotaku 8ba7a585cc build without strip if debug is on 2025-06-17 18:26:55 +09:00
github-actions ab543fb8bd Fetch translations from Crowdin 2025-06-17 00:17:00 +00:00
Craig Carnell 0e4136537b Add environment variables missing from webOS 3 - 5 2025-06-17 00:48:19 +01:00
Ryunam d471cbce8a Ozone: Add options to scale font size 2025-06-16 22:15:49 +02:00
Eric Warmenhoven 42704b9311 apple: include correct git hash when uploading testflight build 2025-06-16 15:00:01 -04:00
sonninnos 383daa31cb Built-in playlist path rework 2025-06-16 19:18:55 +03:00
sonninnos db5c4d2758 Handle default config save path differently 2025-06-16 19:14:45 +03:00
Eric Warmenhoven b490195e0b iOS9: fix crash fetching refresh rate 2025-06-16 10:05:08 -04:00
sonninnos 9595904af1 Add missing path clear 2025-06-16 06:06:15 +03:00
sonninnos 2329cd10d0 Fix vanishing 'Load Core' 2025-06-16 05:57:29 +03:00
github-actions 3e3e4e6ce5 Fetch translations from Crowdin 2025-06-16 00:17:50 +00:00
sonninnos 293ca23197 Glui: Icon fixings 2025-06-15 15:22:16 +03:00
sonninnos bb0551bf1e Android crash fix attempt 2025-06-15 05:43:37 +03:00
sonninnos 3faf744b0f Unused variable cleanup buildfix 2025-06-15 05:12:28 +03:00
sonninnos 0785dd7548 Unused variable cleanups 2025-06-15 05:08:24 +03:00
github-actions fae1c6bcf6 Fetch translations from Crowdin 2025-06-15 00:18:32 +00:00
sonninnos b774a26bae Ozone: Add menu font selection 2025-06-15 01:11:26 +03:00
sonninnos 0fc847a176 Ozone: Entry ticker length correction 2025-06-14 23:51:06 +03:00
sonninnos fc6b1b9fab Show 'save as' config last 2025-06-14 21:20:08 +03:00
sonninnos c9eb36d4db Win32: Unused variable cleanup 2025-06-14 17:37:08 +03:00
sonninnos a7c195901f Better default config path deciding 2025-06-14 17:28:40 +03:00
sonninnos a034e9b61b Ozone+XMB: Blank dummy core output 2025-06-14 17:16:05 +03:00
sonninnos f86ae06c10 Ozone: Add horizontal padding factor option (#18022) 2025-06-14 17:14:07 +03:00
Bernhard Schelling 771fc523b2 Make large read-only arrays static
This can avoid unnecessary waste of performance at runtime to use static data instead of filling out an array on the stack every time. Some of the CBS functions are called for every menu item created so this improves performance of menu navigation, especially large menus like playlists.
2025-06-14 16:26:24 +09:00
github-actions 45c3f93e8b Fetch translations from Crowdin 2025-06-14 00:15:55 +00:00
sonninnos 2e4c29264e Prevent menu input when using toggle combos (#18017) 2025-06-14 00:07:16 +03:00
Eric Warmenhoven f9c99288da android: try to avoid build-time heap space problems 2025-06-13 16:21:09 -04:00
github-actions 75a8193e62 Fetch translations from Crowdin 2025-06-13 00:16:53 +00:00
sonninnos 5cfb0a3e42 Add 'save as' and main config replacing options (#18014) 2025-06-13 03:03:36 +03:00
sonninnos 9d09ec3478 Show undo save/load state items order non-submenu addition 2025-06-12 16:06:28 +03:00
sonninnos 366bf083e4 Shader logging cleanup 2025-06-12 06:37:23 +03:00
sonninnos 9c7203bd6f Input bind+remap analog stick label unifications 2025-06-12 06:10:25 +03:00
sonninnos b65737f923 Show undo save/load state items in the same order 2025-06-12 05:25:07 +03:00
sonninnos a8de4dbe49 Show core info md5 note rows as sublabels (#18011) 2025-06-12 05:17:46 +03:00
github-actions 57fe5598b7 Fetch translations from Crowdin 2025-06-12 00:16:43 +00:00
sonninnos 68ffc370a9 Adaptive VSync menu cleanup 2025-06-12 01:32:58 +03:00
sonninnos 8fd0d552ca D3D: Add alternative max frame latency hack mode (#18010) 2025-06-11 22:25:42 +03:00
Eric Warmenhoven aebfff2166 apple: better mfi controller disconnect handling 2025-06-11 11:01:28 -04:00
github-actions 46b7026978 Fetch translations from Crowdin 2025-06-11 00:17:03 +00:00
LibretroAdmin c5851487cc Merge pull request #18008 from alphanu1/Geom 2025-06-11 00:08:58 +02:00
alphanu 0b001e46c0 Added temporary switch for windows geometry adjustments 2025-06-10 13:00:49 -07:00
LibretroAdmin 4abd8fa816 Merge pull request #17997 from libretro/warmenhoven/pr/mbedtls
minor mbedtls update
2025-06-10 19:59:00 +02:00
Joseph Mattiello 3344af01d7 extract delay to define, 10ms 2025-06-10 12:21:13 -04:00
LibretroAdmin 97ab384c00 Merge pull request #18001 from libretro/warmenhoven/pr/macos-jit 2025-06-10 12:58:14 +02:00
LibretroAdmin 166c394cf2 Merge pull request #18004 from libretro/warmenhoven/pr/macos-mem 2025-06-10 12:57:36 +02:00
LibretroAdmin 5f606b9df0 Merge pull request #18003 from libretro/warmenhoven/pr/emacs-dir-locals 2025-06-10 12:57:24 +02:00
LibretroAdmin a78826ee9e Merge pull request #18002 from libretro/warmenhoven/pr/xcode-tweaks 2025-06-10 12:56:58 +02:00
LibretroAdmin 9795fd2daa Merge pull request #17999 from libretro/warmenhoven/pr/apple-bundle-id 2025-06-10 12:56:24 +02:00
LibretroAdmin fec832a03c Merge pull request #17998 from libretro/warmenhoven/pr/info-debug 2025-06-10 12:56:12 +02:00
LibretroAdmin 0c279b9dbc Merge pull request #17995 from alphanu1/Geom 2025-06-10 12:55:59 +02:00
Eric Warmenhoven 8d579bba30 net_http: minor lock refactor 2025-06-09 23:49:49 -04:00
Eric Warmenhoven cc408b7ad5 macOS: better memory reporting 2025-06-09 22:34:33 -04:00
Eric Warmenhoven c1f7982ec0 add .dir-locals.el for emacs formatting 2025-06-09 22:25:48 -04:00
Eric Warmenhoven bb6a0c5772 apple: Xcode tweaks 2025-06-09 22:25:14 -04:00
Eric Warmenhoven 52bfb2a7c3 macOS: minor JIT debugging niceties 2025-06-09 22:24:40 -04:00
Eric Warmenhoven 631f318e28 apple: bundle identifier in Information menu 2025-06-09 22:23:06 -04:00
Eric Warmenhoven 4e4855b44c include "DEBUG" string in information menu for debug builds 2025-06-09 22:21:28 -04:00
Eric Warmenhoven e8da8f8d29 minor mbedtls update
This brings it in line with 2.6.0. Previously it had been taken from a
development branch somewhere between 2.5.1 and 2.6.0.

Only return VERIFY_FAILED from a single point

Everything else is a fatal error. Also improve documentation about that for
the vrfy callback.

Improve comments

Update doc of return value of verify()

Fix potential integer overflow parsing DER CRL

This patch prevents a potential signed integer overflow during the
CRL version verification checks.

Fix potential integer overflow parsing DER CRT

This patch prevents a potential signed integer overflow during the
certificate version verification checks.

Prevent signed integer overflow in CSR parsing

Modify the function mbedtls_x509_csr_parse_der() so that it checks the
parsed CSR version integer before it increments the value. This prevents
a potential signed integer overflow, as these have undefined behaviour
in the C standard.

Rename time and index parameter to avoid name conflict.

As noted in #557, several functions use 'index' resp. 'time'
as parameter names in their declaration and/or definition, causing name
conflicts with the functions in the C standard library of the same
name some compilers warn about.

This commit renames the arguments accordingly.

Update version number to 2.6.0
2025-06-09 22:20:05 -04:00
github-actions a21643b7fa Fetch translations from Crowdin 2025-06-10 00:17:11 +00:00
sonninnos 8b82cccb7a Remove unused var 2025-06-10 02:18:15 +03:00
alphanu 3f59af3f99 Fixed issues with warnings when compiling menu_cbs_sublabel.c after CRT geometry adjust PR 2025-06-09 10:32:21 -07:00
LibretroAdmin 30b0b39df1 Merge pull request #17992 from sonninnos/frame-delay-cleanup 2025-06-09 17:37:48 +02:00
sonninnos 3543080194 Frame Delay auto improvements 2025-06-09 17:35:51 +03:00
LibretroAdmin 84a5ded33c Merge pull request #17987 from alphanu1/Geom
Added Horizontal and vertical geometry adjustments
2025-06-09 06:30:54 +02:00
LibretroAdmin 1fba899657 Merge pull request #17988 from zoltanvb/changelist_update
Change list updates up to 2025-06-08
2025-06-09 06:30:35 +02:00
Joseph Mattiello 663f318d5f enable mic on macos
add mic usage to info.plist

enable micorphone in xcconfig

mic device selection macos

snapshot

revert ios driver

macos only driver, doesn’t deadlock now

macos driver seems to be doing something

looooooop

well, at least it doesn’t spin lock, no audio

audio capture working!

seems to be working now

cleanup some extra logging

clean up some extra logging

rename ios driver for clarity

remove some locks

better performance, but some noise

remove unused fifo_lock

clear the fifo

fix noise in buffer

some improvements, might not need

remove superfulous silent check

reduce latency

Signed-off-by: Joseph Mattiello <[email protected]>
2025-06-08 22:12:22 -04:00
github-actions ba156cee4d Fetch translations from Crowdin 2025-06-09 00:17:53 +00:00
zoltanvb 446a847aab Missed one item from changes 2025-06-08 20:48:07 +02:00
zoltanvb 2561737403 Updates up to 2025-06-08 2025-06-08 20:38:25 +02:00
alphanu 4389c611ef Fixed horizontal offest. Removed action menu due to iteration bug 2025-06-08 10:44:34 -07:00
alphanu d6c9698353 Added Horizontal and vertical geometry adjustments 2025-06-08 08:33:24 -07:00
github-actions e613e2c08e Fetch translations from Crowdin 2025-06-08 00:18:20 +00:00
LibretroAdmin 67a46ae077 Merge pull request #17984 from libretro/revert-17980-master
Revert "Kiosk Mode Hotkey and Bug Fix ( For Empty Main Menu )"
2025-06-07 18:00:27 +02:00
LibretroAdmin c9360262ec Revert "Kiosk Mode Hotkey and Bug Fix ( For Empty Main Menu )" 2025-06-07 18:00:14 +02:00
LibretroAdmin 5aefb761eb Merge pull request #17982 from alphanu1/master 2025-06-07 07:49:34 +02:00
LibretroAdmin 28300fc606 Merge pull request #17980 from Lhaete/master 2025-06-07 07:49:11 +02:00
LibretroAdmin b353e8d972 Merge pull request #17977 from j0ki/master 2025-06-07 07:48:59 +02:00
LibretroAdmin 20c932e236 Merge pull request #17975 from Uukrull/coredump 2025-06-07 07:48:44 +02:00
github-actions 5dfd11257e Fetch translations from Crowdin 2025-06-07 00:16:17 +00:00
alphanu 434f41b935 Updated CRT menu items and added new CRT menu
item for upcomming Switchres changes.
2025-06-06 13:39:40 -07:00
Eric Warmenhoven ca405929ad Merge pull request #17981 from warmenhoven/warmenhoven/pr/MicCoreAudio
Add Microphone CoreAudio driver for iOS
2025-06-06 14:40:45 -04:00
Eric Warmenhoven a0263db217 iOS: fix/enable coreaudio microphone driver 2025-06-06 14:10:02 -04:00
Eric Warmenhoven 720f5bca59 Merge remote-tracking branch 'libretro/master' into warmenhoven/dev/MicCoreAudio 2025-06-06 14:09:19 -04:00
Lhaete 49d4a580d9 Update xmb.c with kiosk mode
Linux Fix for mixing declaration and code, missed them the first time oops again!
2025-06-06 08:56:37 -04:00
Lhaete 67b5da6a50 Update retroarch.c with kiosk mode fix
Changed string check to function string_is_empty for PS4 compliance!
2025-06-06 08:46:48 -04:00
Lhaete 3315e96b2d Update xmb.c with kiosk mode
Fixed Linux bug for mixing declaration with code, oops.
2025-06-06 08:41:03 -04:00
Lhaete 1ca2e08590 Update xmb.c with kiosk mode fix
Forgot to add the    settings_t *settings       = config_get_ptr(); ptr in xmb list cache
2025-06-06 08:24:27 -04:00
Lhaete 76b515cd38 Update retroarch.c wiht Kiosk Mode
Added kiosk hotkey case and function
2025-06-06 07:07:02 -04:00
Lhaete 824182a54a Update command.h with kiosk mode
added kiosk mode
2025-06-06 07:01:19 -04:00
Lhaete 6cae1c91cb Update configuration.c with kiosk mode
added the kiosk_toggle bind
2025-06-06 06:59:52 -04:00
Lhaete a6aa14208b Update msg_hash_us.h with kiosk mode
added meta_kiosk
2025-06-06 06:58:42 -04:00
Lhaete d236ecfa28 Update msg_hash.h with kiosk mode
added input_meta_kiosk
2025-06-06 06:56:33 -04:00
Lhaete 390f1d3760 Update input_defines.h with kiosk mode 2025-06-06 06:54:40 -04:00
Lhaete 2d16bbd5a2 Update config.def.keybinds.h with Kiosk Mode
I used f5 as the hotkey, this conflicts with companion UI hotkey, so def needs changing..
2025-06-06 06:53:49 -04:00
Lhaete 19df62e737 Update win32_common.c with kiosk mode
added kiosk mode
2025-06-06 06:51:31 -04:00
Lhaete 9bc3d5e656 Update ui_win32_resource.h with kiosk mode
there needs to be an empty line as the last line! added kiosk mode
2025-06-06 06:49:28 -04:00
Lhaete 5531f743ea Update rarch.rc with kiosk mode 2025-06-06 06:48:01 -04:00
Lhaete b63e982712 Update all_binds_empty.cfg with Kiosk Toggle
added kiosk toggle input hotkey test, f5 is used by companion so might have to use different hotkey
2025-06-06 06:45:58 -04:00
Lhaete 59442128a6 Update runloop.c wth Kiosk Mode Hotkey
added hotkey check cmd
2025-06-06 06:44:18 -04:00
Lhaete 01a3203a3a Update menu_setting.c with "Kiosk Mode Fix"
added kiosk mode fixes
2025-06-06 06:41:05 -04:00
Lhaete 274f253e75 Update menu_displaylist.c with "Kiosk Mode Fix"
added Kiosk Mode fixes
2025-06-06 06:39:08 -04:00
Lhaete 3cbe9fa5c2 Update xmb.c with "Kiosk Mode Fix"
Added Kiosk Mode Fix
2025-06-06 06:34:12 -04:00
Eric Warmenhoven c74164c6d0 android: enable ssl
https://github.com/Mbed-TLS/mbedtls/commit/0c4bbda16abae83b5365a1ddd50625f54586b147
2025-06-05 22:53:33 -04:00
sonninnos dcf4286d06 Port bind turbo fire icon + label cleanup (#17979) 2025-06-06 05:06:30 +03:00
j0ki 482b8241b8 udev_input.c: restore linux terminal in udev_input_free
Linux terminal settings were lost after restarting via menu.
This was caused by udev_input_init calling linux_terminal_disable_input multiple times.

New code follows the restore pattern of linuxraw_input.c
2025-06-06 02:18:20 +02:00
github-actions 9c7347c509 Fetch translations from Crowdin 2025-06-06 00:16:34 +00:00
sonninnos b2f86fa45f Integer scale half scaling improvements (#17976) 2025-06-05 19:56:40 +03:00
Uukrull 04eb45b413 webOS: Disable core dumps 2025-06-05 11:21:48 +02:00
github-actions 2899bd183a Fetch translations from Crowdin 2025-06-05 00:16:53 +00:00
Eric Warmenhoven 01a3511445 iOS: rely on core info to re-find cores from old directory structure 2025-06-04 14:52:01 -04:00
Eric Warmenhoven 86f63e1f59 android: revert of enabling ssl 2025-06-04 14:52:01 -04:00
LibretroAdmin 9aac188d2c Merge pull request #17972 from warmenhoven/warmenhoven/pr/android-ssl 2025-06-04 17:21:13 +02:00
LibretroAdmin a44c65f44c Merge pull request #17973 from j0ki/master 2025-06-04 17:20:56 +02:00
j0ki bdd80921b5 video4linux2.c: do not close before open.
With no camera connected this would call close(0), causing  problems later.
2025-06-04 15:47:57 +02:00
Eric Warmenhoven 98852bd427 android: enable builtin mbed-tls
fixes #16847
2025-06-03 23:03:37 -04:00
github-actions 4b7806afe7 Fetch translations from Crowdin 2025-06-03 00:16:44 +00:00
github-actions 83130f47b5 Fetch translations from Crowdin 2025-06-02 00:17:08 +00:00
github-actions 9be49b9390 Fetch translations from Crowdin 2025-06-01 00:20:13 +00:00
Eric Warmenhoven 38a3b924ae iOS/tvOS: enable HAVE_NETWORK_COMMAND 2025-05-31 16:05:41 -04:00
github-actions 19398209ed Fetch translations from Crowdin 2025-05-31 00:15:57 +00:00
github-actions ca19b79960 Fetch translations from Crowdin 2025-05-30 00:16:44 +00:00
LibretroAdmin 0a4ff8187a Merge pull request #17961 from zoltanvb/android_network_cmd
Enable HAVE_NETWORK_CMD for Android.
2025-05-29 23:33:00 +02:00
zoltanvb 15f4f1e63c Enable HAVE_NETWORK_CMD for Android. 2025-05-29 21:46:25 +02:00
Uukrull b7a29bd17c Fix argv for webOS (#17960) 2025-05-29 21:21:56 +03:00
LibretroAdmin 6c54b2183b Merge pull request #17956 from webosbrew/webos
Add target cpu and tune for webOS
2025-05-29 09:53:51 +02:00
sonninnos dd8fff113b Runloop content path cleanups 2025-05-29 08:40:23 +01:00
libretroadmin 15819612f7 Fix semicolon near end of conditional 2025-05-29 09:22:42 +02:00
libretroadmin 18ca0e671d (XInput) More C89 fixes and style nits 2025-05-29 09:17:52 +02:00
libretroadmin 82dde53f7d Forgot to update default.txt for tagged release 2025-05-29 07:22:16 +02:00
libretroadmin f1f50bf7f7 (audio_driver) Cache slowmotion_ratio variable into local variable -
used inside loop
2025-05-29 06:51:49 +02:00
libretroadmin 1ff8346eb5 Silence warnings/style nits 2025-05-29 06:19:04 +02:00
libretroadmin bd04f9154b C89 buildfix 2025-05-29 06:11:08 +02:00
libretroadmin c372dfad8b Rework xinput_joypad_rumble somewhat 2025-05-29 05:59:46 +02:00
libretroadmin b1ad554a14 C89_BUILD fixes 2025-05-29 04:59:41 +02:00
LibretroAdmin 2e91214404 Merge pull request #17954 from Ryunam/xinput-rumble-fix
XInput: Fix rumble performance drops on Bluetooth and reduce unnecessary polling
2025-05-29 04:53:50 +02:00
sonninnos dc4dd657f9 Runloop content path cleanups 2025-05-29 04:47:32 +03:00
github-actions f9db98194b Fetch translations from Crowdin 2025-05-29 00:16:15 +00:00
Ryunam 7ad10258f0 XInput: Reduce unnecessary polling and optimize performance 2025-05-29 00:21:43 +02:00
sonninnos fd7f8a3ea1 Use the existing ldci define 2025-05-29 01:21:26 +03:00
LibretroAdmin 8894d551e7 Merge pull request #17955 from sonninnos/menu-input-joypad-driver
Add input+controller driver under input settings
2025-05-29 00:18:59 +02:00
sonninnos 686c7997bc Add input+controller driver under input settings 2025-05-29 01:03:48 +03:00
libretroadmin c9bc941830 move microphone_driver.c inside audio_driver.c. This way we can move
some of the defines from audio_defines.h into audio_driver.c
2025-05-28 17:32:14 +02:00
Ryunam bd9561d93c XInput: Fix rumble overload by limiting on state changes and interval 2025-05-28 17:20:33 +02:00
libretroadmin 08c0221c27 (audio driver) Cleanups 2025-05-28 17:19:32 +02:00
libretroadmin 13790a0fad (Audio) Some cleanups 2025-05-28 16:40:56 +02:00
github-actions 4e30df6392 Fetch translations from Crowdin 2025-05-28 00:16:15 +00:00
LibretroAdmin 74599fd776 Merge pull request #17953 from sonninnos/import-content-rework
Default Import Content back to playlist sidebar/tabs
2025-05-28 01:53:29 +02:00
sonninnos cfa839f5b6 Default Import Content back to playlist sidebar/tabs 2025-05-28 01:01:11 +03:00
sonninnos a1a50afc9e Dinput: Ignore first mouse click on focus 2025-05-27 23:47:06 +03:00
sonninnos b3fd3e15ed WinRaw: Prevent stuck mouse buttons on unfocus 2025-05-27 22:43:15 +03:00
sonninnos 03be66836e GLUI: Even better entry height value 2025-05-27 21:08:23 +03:00
sonninnos 7426251263 GLUI: Minor entry height adjustment (#17952) 2025-05-27 18:32:22 +03:00
sonninnos 49ee835c82 Better menu mouse startup position ignore 2025-05-27 18:13:16 +03:00
sonninnos 0f664c739b Ignore menu mouse startup position before moving (#17951) 2025-05-27 16:48:03 +03:00
sonninnos 4529d06a5a Fix menu usage when OK/Cancel has mouse binds (#17950) 2025-05-27 14:01:09 +03:00
libretroadmin 5cb15e1cd7 Reapply "Allow Start button to quick manage media playlists (#17948)"
This reverts commit f877adb5d9.
2025-05-27 12:40:32 +02:00
libretroadmin f877adb5d9 Revert "Allow Start button to quick manage media playlists (#17948)"
This reverts commit 7d3740d4c0.
2025-05-27 12:39:52 +02:00
sonninnos 7d3740d4c0 Allow Start button to quick manage media playlists (#17948) 2025-05-27 04:25:16 +03:00
github-actions 3b44efe122 Fetch translations from Crowdin 2025-05-27 00:16:23 +00:00
sonninnos 1c0f945c21 Add media history playlists to playlist manager (#17945) 2025-05-26 23:18:16 +03:00
sonninnos d2a824c1a7 Playlists settings menu reorganizing 2025-05-26 17:42:18 +03:00
sonninnos 158ad0c4bc Enable savestate thumbnails by default for x64 (#17944) 2025-05-26 16:51:25 +03:00
LibretroAdmin cd4894d627 Merge pull request #17928 from BinBashBanana/master
Rewrite RWebAudio driver
2025-05-26 12:53:27 +02:00
Eric Warmenhoven d8cd500316 macOS: Prompt for local network access 2025-05-26 00:40:56 -04:00
github-actions 0514f203eb Fetch translations from Crowdin 2025-05-26 00:17:13 +00:00
BinBashBanana 86308ef670 RWebAudio scheduling adjustments 2025-05-25 12:42:41 -07:00
LibretroAdmin 65f76bd514 Update audio_driver.c 2025-05-25 15:41:17 +02:00
LibretroAdmin a4f73c622d Update audio_driver.c 2025-05-25 15:36:42 +02:00
LibretroAdmin 990cc9b0b2 Update audio_driver.c - small cleanup for code readability
Makes it apparent that these variables are rewind-specific
2025-05-25 15:31:46 +02:00
sonninnos e5d86c0ffb One more missing deprecation cleanup 2025-05-25 15:54:48 +03:00
sonninnos 3f2021249b Deprecated msg hash cleanups 2025-05-25 15:49:49 +03:00
LibretroAdmin df42b13bbc Merge pull request #17901 from zoltanvb/lock_core_description
Lock core and save state explanations.
2025-05-25 14:47:54 +02:00
github-actions 1956b6e01f Fetch translations from Crowdin 2025-05-25 00:18:18 +00:00
sonninnos dd45f8cb0c Rewind logging cleanup 2025-05-24 22:18:49 +03:00
github-actions d5699457ca Fetch translations from Crowdin 2025-05-24 00:15:33 +00:00
sonninnos 4ba004a1e8 Add 'Show Favorites First' visibility option (#17933) 2025-05-23 16:06:53 +03:00
sonninnos 766f895948 Turbo fire override corrections (#17932) 2025-05-23 14:51:23 +03:00
github-actions 5514f71a00 Fetch translations from Crowdin 2025-05-23 00:16:34 +00:00
LibretroAdmin 99b4b66174 Merge pull request #17926 from warmenhoven/warmenhoven/pr/apple-gear
apple: add gearcoleco, geargrafx cores to app store builds
2025-05-22 12:32:19 +02:00
LibretroAdmin 65435d1703 Merge pull request #17927 from warmenhoven/warmenhoven/pr/apple-same
apple: add sameduck core to app store builds
2025-05-22 12:32:10 +02:00
Eric Warmenhoven 7e52201fb6 apple: add sameduck core to app store builds 2025-05-22 01:38:56 -04:00
Eric Warmenhoven 0c872e7c94 apple: add gearcoleco, geargrafx cores to app store builds 2025-05-22 00:11:54 -04:00
LibretroAdmin 91608d6bd0 Merge pull request #17925 from warmenhoven/warmenhoven/pr/macos-quit
macos: followup to runloop observer
2025-05-22 04:55:32 +02:00
Eric Warmenhoven 0a6db1088a macos: followup to runloop observer 2025-05-21 21:38:29 -04:00
BinBashBanana c2d7366ea1 Rewrite RWebAudio driver 2025-05-21 18:05:05 -07:00
github-actions ca190dbe0a Fetch translations from Crowdin 2025-05-22 00:16:17 +00:00
Eric Warmenhoven 79a05ef286 macos build fix for steam 2025-05-21 12:31:08 -04:00
sonninnos 610a6d0026 Internal core logging newlines 2025-05-21 18:18:14 +03:00
sonninnos 5afbca8904 video_driver_build_info crash fix 2025-05-21 16:46:45 +03:00
LibretroAdmin 8cfdfebb03 Merge pull request #17922 from warmenhoven/warmenhoven/pr/macos-run
macOS: use CFRunLoopObserver for running runloop
2025-05-21 10:16:22 +02:00
Eric Warmenhoven 14c5956ff8 macOS: use CFRunLoopObserver for running runloop 2025-05-20 23:44:11 -04:00
github-actions e2b725b5a3 Fetch translations from Crowdin 2025-05-21 00:17:00 +00:00
zoltanvb f5280fe526 Lock core and save state explanations. 2025-05-20 22:01:33 +02:00
sonninnos 0e4cf00d1f Add option for suggesting cores when a core is loaded (#17920) 2025-05-20 15:54:22 +03:00
github-actions 7d98987f9d Fetch translations from Crowdin 2025-05-20 00:16:59 +00:00
LibretroAdmin 072142b5af Merge pull request #17918 from Jamiras/feature/unsupported_warning
(cheevos) show additional warning message when unsupported achievements are detected
2025-05-19 22:33:14 +02:00
Jamiras 5568a1e25d show additional warning message when unsupported achievements are detected 2025-05-19 07:44:56 -06:00
github-actions 531a8d75a7 Fetch translations from Crowdin 2025-05-19 00:17:26 +00:00
LibretroAdmin ac3c83eca1 Merge pull request #17914 from warmenhoven/warmenhoven/pr/server-hash
cloud sync: don't always trust the server hash
2025-05-18 16:14:08 +02:00
LibretroAdmin f0dcd6810c Merge pull request #17911 from pstef/psl1ght-make 2025-05-18 10:36:31 +02:00
Eric Warmenhoven 48f77a948f vulkan: fix hdr (#17915)
fixes #17912
2025-05-18 06:09:06 +03:00
Eric Warmenhoven b632a1373e cloud sync: don't always trust the server hash 2025-05-17 21:59:27 -04:00
sonninnos 97bc2da36c Fix menu core unload 2025-05-17 18:53:33 +03:00
pstef 537bc2dbe9 Fix broken logic in the clean target 2025-05-17 09:17:07 +00:00
Craig Carnell f1538b1326 Add target cpu and tune for webOS 2025-05-16 12:53:10 +01:00
Aleksey Samoilov a77049b022 Bump required wayland-protocols (#17908) 2025-05-15 19:52:02 +03:00
LibretroAdmin 19239287bf Merge pull request #17907 from sonninnos/menu-input-latency-cleanup
Clean up input + latency menus
2025-05-15 07:16:39 +02:00
github-actions 13616bafe0 Fetch translations from Crowdin 2025-05-15 00:15:17 +00:00
sonninnos b5cbe6eaed Clean up input + latency menus 2025-05-14 23:40:43 +03:00
sonninnos cc57bbc06e Turbo mode corrections (#17905) 2025-05-14 22:37:05 +03:00
LibretroAdmin 45764673c7 Merge pull request #17904 from webosbrew/webos 2025-05-14 20:19:13 +02:00
Craig Carnell 667b16964b Add artifact build for webOS 2025-05-14 17:18:43 +01:00
Craig Carnell 9c9d68ae20 Fix missing package name on webos 2025-05-14 17:07:57 +01:00
Ningyuan Li 5b0fb96443 added release workflow 2025-05-14 17:07:37 +01:00
Ningyuan Li f260d3edab changed package version #7 2025-05-14 17:05:54 +01:00
Ningyuan Li ce406353cc added webOS default fonts 2025-05-14 17:05:42 +01:00
Ningyuan Li b1da352de6 Properly ships libSDL2 for webOS
Updated some build config
2025-05-14 17:03:59 +01:00
LibretroAdmin bd5f47afbb Merge pull request #17902 from sonninnos/frame-delay-menu-fix
Frame delay menu string fix
2025-05-14 17:12:54 +02:00
sonninnos 1886f76bba Frame delay menu string fix 2025-05-14 15:12:04 +03:00
LibretroAdmin 7bc992437c Merge pull request #17899 from sonninnos/bfi-shdrsub-stringrep-cleanup 2025-05-14 06:54:45 +02:00
LibretroAdmin 4f22a04436 Merge pull request #17898 from zoltanvb/core_options_reset_v2b 2025-05-14 06:54:28 +02:00
github-actions cd78050c79 Fetch translations from Crowdin 2025-05-14 00:16:16 +00:00
sonninnos 0f65f2f0f3 Display bfi + shader subframes strings without translations 2025-05-14 01:13:42 +03:00
sonninnos ee11b79738 Improve playlist thumbnail cycling (#17897)
* Improve playlist thumbnail cycling

* GLUI: Thumbnail cycling fixes
2025-05-13 22:14:49 +03:00
zoltanvb 30ffb042c6 Hide core reset from Configuration File when no core is loaded. 2025-05-13 19:48:45 +02:00
LibretroAdmin 57acb067b8 Merge pull request #17896 from zoltanvb/core_options_reset_v2 2025-05-13 04:29:46 +02:00
github-actions 0900cd7540 Fetch translations from Crowdin 2025-05-13 00:16:26 +00:00
zoltanvb c794376223 Move core options reset from Settings/Configuration to Main Menu / Configuration Files 2025-05-12 22:14:38 +02:00
Eric Warmenhoven 906c0be946 macos/ios: Enable icloud_drive cloud sync backend 2025-05-12 09:17:16 -04:00
Davide Andreoli 2f1ae73dd4 feat: added iCloud Drive Cloud Sync 2025-05-12 08:54:06 -04:00
github-actions 6ade319137 Fetch translations from Crowdin 2025-05-12 00:17:23 +00:00
sonninnos 1b61b88274 Refine menu info+search disable buttons (#17889) 2025-05-11 22:18:44 +03:00
sonninnos 5e03ef57ec Ozone+XMB: Fix content icons when playlist tabs hidden (#17888) 2025-05-11 21:22:32 +03:00
Eric Warmenhoven 874cc00c2e macos: fix app store packaging 2025-05-11 12:01:20 -04:00
LibretroAdmin 1be64020f5 Merge pull request #17886 from BinBashBanana/master
RWebCam hotfix
2025-05-11 03:10:33 +02:00
github-actions 45e13e3f2d Fetch translations from Crowdin 2025-05-11 00:17:21 +00:00
BinBashBanana 84a52677b5 RWebCam hotfix 2025-05-10 13:52:09 -07:00
github-actions b590d843bc Fetch translations from Crowdin 2025-05-10 00:15:02 +00:00
sonninnos 0818feb131 Wasapi: Buffer correction 2025-05-09 19:09:55 +03:00
LibretroAdmin c90804c2ad Merge pull request #17884 from Sunderland93/fix_libdecor 2025-05-09 17:10:50 +02:00
Aleksey Samoilov 759104acd4 Fix build with libdecor enabled 2025-05-09 19:01:31 +04:00
LibretroAdmin 79d78a6860 Merge pull request #17880 from Sunderland93/wayland_toplevel_icon
[Wayland]: Add support for xdg-toplevel-icon-v1
2025-05-09 06:14:58 +02:00
LibretroAdmin 73426f823d Merge pull request #17872 from BinBashBanana/master
Emscripten improvements pt. 4
2025-05-09 02:49:30 +02:00
github-actions 8e154e0df6 Fetch translations from Crowdin 2025-05-09 00:16:12 +00:00
sonninnos df1c342cb2 Ozone: C89 buildfix 2025-05-09 02:05:44 +03:00
sonninnos cacff13799 Ozone: Improve metadata background fade 2025-05-09 01:44:20 +03:00
sonninnos ae9e8ba75c Ozone: Skip thumbnail background for metadata display 2025-05-09 01:29:57 +03:00
Aleksey Samoilov 6be300b07c Additional check for xdg-toplevel-icon for libdecor 2025-05-09 02:20:07 +04:00
Aleksey Samoilov 7264709776 Set toplevel icon for libdecor frame 2025-05-09 02:15:22 +04:00
Michael Burgardt f9bdd7bc87 Update language list in sample files (#17829) 2025-05-09 00:57:00 +03:00
sonninnos 7b37f85a99 XMB: Add temporary thumbnail toggle (#17881) 2025-05-09 00:56:13 +03:00
sonninnos c3cb4a8b5d D3D11+12: Minor cleanups 2025-05-08 22:11:53 +03:00
BinBashBanana 2d3c18e48d Emscripten improvements pt. 4 2025-05-08 11:01:43 -07:00
Aleksey Samoilov 9cf03289ec Check if icon_buffer is created 2025-05-08 18:55:51 +04:00
Aleksey Samoilov c4ee58a81a Fix intend 2025-05-08 18:10:28 +04:00
Aleksey Samoilov 6c7b648570 [Wayland]: Add support for xdg-toplevel-icon-v1 2025-05-08 17:58:20 +04:00
github-actions 7cffc6bb60 Fetch translations from Crowdin 2025-05-08 00:15:58 +00:00
sonninnos a8d65325a7 Set default lightgun Start+Select keybinds for port 1 (#17877) 2025-05-08 01:06:34 +03:00
sonninnos 10738f532c Add shader hold hotkey and improve toggling logic (#17840) 2025-05-08 00:56:59 +03:00
sonninnos 0b547bdd49 Remove language mention from User menu sublabel (#17876) 2025-05-08 00:26:54 +03:00
pstefandpstef d3cf9aa651 Improve CLI --entryslot (#17874)
Accepted values are 0 to 999. Rewrite this part to use strtol and test
for values in that range.

Co-authored-by: pstef <[email protected]>
2025-05-08 00:15:39 +03:00
sonninnos eb35401e1a Merge pull request #17868 from sonninnos/auto-swap-interval-fix
Auto swap interval correction
2025-05-08 00:07:37 +03:00
github-actions 67a2793ab4 Fetch translations from Crowdin 2025-05-07 00:16:24 +00:00
github-actions 3bfed628ff Fetch translations from Crowdin 2025-05-06 00:16:38 +00:00
sonninnos 2ddd9330fe Frame delay + swap interval correction 2025-05-05 15:50:45 +03:00
sonninnos ba8b97041e Auto swap interval correction 2025-05-05 15:50:42 +03:00
LibretroAdmin 0670d6d87e Merge pull request #17853 from sonninnos/menu-thumbnail-background 2025-05-05 14:45:11 +02:00
LibretroAdmin 5ba3fa6fd4 Merge pull request #17855 from kwyxz/camera_haiku 2025-05-05 14:44:51 +02:00
LibretroAdmin 28f81e8e71 Merge pull request #17857 from jecaro/fix-nmcli-wifi-driver 2025-05-05 14:44:34 +02:00
LibretroAdmin 463770c3c2 Merge pull request #17854 from pstef/thumbnails-selection 2025-05-05 14:44:12 +02:00
jecaro 3637f49ddc Fix nmcli wifi driver
- Use the password stored in the connection profile instead of asking
  each time to the user

- `Disconnect` menu item wasn't shown even when connected

   When entering the Wi-Fi menu first, `nmcli_connection_info` is called with
   `NULL`. If we return `false` here, the menu doesn't show the `Disconnect`
   menu item even when the wifi is on and connected.

- Don't consider wired connections when checking if the device is connected

   `cmd_file = popen("nmcli -f NAME c show --active | tail -n+2", "r");`

   That command returns all active connections, even the wired ones. That
   means that if the wifi is not connected but we have a wired connection,
   retroarch shows the Disconnect menu item to disconnect ... a
   non-existent wifi connection.
2025-05-05 12:38:12 +02:00
github-actions 19257e2190 Fetch translations from Crowdin 2025-05-05 00:17:08 +00:00
kwyxz e78898f379 default to FFmpeg libavfilter virtual input device 2025-05-04 01:48:15 +00:00
github-actions 015e515e9e Fetch translations from Crowdin 2025-05-04 00:17:35 +00:00
pstef 583687081c Revisit selection and size_t to silence warnings
There is a type mismatch between selection (size_t) and how it's passed
to some functions. In 4f3ae82 I got it backwards and changed the type in
savestate thumbnail function definitions to size_t, but in that case we
can assume that there won't be more than 999. So in this case it's OK to
keep the unsigned int and cast selection to that type.

Thumbnails on playlists are the other case and the limit is not so clear
to me, so I assume it's reasonable to promote the type of the function
parameter i from unsigned to size_t.
2025-05-03 19:08:56 +00:00
sonninnos e3583cbcbb Add common Thumbnail Background option for all menu drivers 2025-05-03 19:12:10 +03:00
LibretroAdmin 2a225a20dc Merge pull request #17851 from pstef/ffast-math
Pop fast-math at the end of the file
2025-05-03 16:48:59 +02:00
LibretroAdmin 34e68a44ab Merge pull request #17852 from pstef/mean-and-mean
Reapply "Define WIN32_LEAN_AND_MEAN to avoid collision with winsock2"
2025-05-03 16:48:46 +02:00
pstef 0c1402d92a Reapply "Define WIN32_LEAN_AND_MEAN to avoid collision with winsock2"
It was reverted in 309c67a205 because it
was suspected of breaking Windows releases, but the reason was
different.
2025-05-03 13:28:49 +00:00
pstef 2e868fc00b Pop fast-math at the end of the file
so that it doesn't affect the rest of the code in Griffin builds.

This is unfortunately GCC-only, but Clang will miss only 1 vectorization.
2025-05-03 12:29:42 +00:00
github-actions 63487e8ed8 Fetch translations from Crowdin 2025-05-03 00:15:28 +00:00
LibretroAdmin 4c30e94aa2 Merge pull request #17850 from pstef/ffast-math
Make -ffast-math exclusive to sinc_resampler.c
2025-05-03 00:12:06 +02:00
pstef 6bfb7862e7 Make -ffast-math exclusive to sinc_resampler.c
-ffast-math was added in ff14092d8d with a comment that it "helps SINC
resampler to auto-vectorize". The flag is an alias for "-fno-math-errno
-funsafe-math-optimizations -ffp-contract=fast -fno-honor-infinities
-fno-honor-nans". The last two of those cause compiler complaints
because while the flag was meant for this file, it's shared across the
codebase that includes statements that operate on infinities and NaNs.

GCC 13.3 with -fopt-info-vec reports 18 vectorizations for `-O3
-ffast-math`, 17 for `-O3 -fno-math-errno -funsafe-math-optimizations
-ffp-contract=fast` and also 17 for plain `-O3`. So using the subset of
-ffast-math without the offending flags buys nothing and loses 1
vectorization.

Both GCC and Clang provide the "fast-math" pragma directive, which I add
to this one file that benefits from it, under the condition that it's
supported. -ffast-math is removed from most of the makefiles.
2025-05-02 17:26:19 +00:00
github-actions 14c78b6c32 Fetch translations from Crowdin 2025-05-02 00:15:30 +00:00
LibretroAdmin 4b6d315ad6 Merge pull request #17844 from JoeOsborn/add-save-load-sram-commands 2025-05-02 00:09:31 +02:00
LibretroAdmin 28a300d00f Merge pull request #17841 from pstef/silenter-makefiles 2025-05-02 00:08:41 +02:00
LibretroAdmin 811a32b982 Merge pull request #17843 from pstef/ozone-selection 2025-05-02 00:07:57 +02:00
github-actions baee906ef3 Fetch translations from Crowdin 2025-05-01 00:17:50 +00:00
pstef c968c1a51d Use size_t for new_selection as done everywhere else 2025-04-30 23:48:39 +00:00
Joseph C. Osborn fe5defea71 add new error message for sram load during hardcore cheevo 2025-04-30 15:05:39 -07:00
Joseph C. Osborn fb94043d48 Report errors from save/load, disable loads under hard cheevos 2025-04-30 14:44:56 -07:00
Joseph C. Osborn 6235f3138b Add command.h commands for saving/loading sram 2025-04-30 12:33:40 -07:00
github-actions 05f94af415 Fetch translations from Crowdin 2025-04-30 00:16:22 +00:00
pstef 48f842f307 CI: use the info target
These makefiles provide the info target that will print contents of each
variable that is not printed (unless V=1, which is not the case here) on
command invocation. Making this information available in the logs should
help debugging, but it doesn't need to be printed on each command
invocation.
2025-04-29 18:54:24 +00:00
pstef 0c838c14e9 Makefiles: don't print info unconditionally
The point of making the default "semi-silent" (each target is printed,
but not the entire invocation verbatim) was to factor out information
about invocation to a one-time target (info) and not repeating it ever
again. With V=1, the info target is silent, because each command
invocation will be printed verbatim, which needs no herald.

The undesired side effect of me introducing the info target and making
it a dependency of the default all target is that info doesn't respect
the --silent make option, so in this use case it was more noisy, not
less.

I believe the most elegant solution that satisfies all use cases is to
stop printing info unconditionally, and instead list it explicitly in
make invocations in CI, together with the all target. Then this info is
kept available for inspection from logs, but it's not repeated on each
invocation. The intention was to make the logs easier to read and scroll
in search for new compiler warnings.
2025-04-29 18:36:48 +00:00
github-actions 54af661d95 Fetch translations from Crowdin 2025-04-28 00:16:34 +00:00
LibretroAdmin a7fab4a394 Merge pull request #17833 from white-axe/emscripten-argb8
Fix feature test for `GL_CAPS_ARGB8` in Emscripten builds
2025-04-27 09:54:33 +02:00
github-actions 633ee296e7 Fetch translations from Crowdin 2025-04-27 00:17:17 +00:00
刘皓 ebd79bfa72 Fix feature test for GL_CAPS_ARGB8 in Emscripten builds 2025-04-26 19:11:19 -04:00
LibretroAdmin 3036fecc7c Merge pull request #17831 from pstef/Makefile.ctr
3DS: enable cloud sync
2025-04-26 12:32:57 +02:00
pstef fdcd4e78e8 3DS: enable Cloud Sync 2025-04-26 01:11:11 +00:00
pstef 57845fd3cf Remove commented-out needless HAVE_ features 2025-04-26 01:10:16 +00:00
github-actions 30aad19fae Fetch translations from Crowdin 2025-04-26 00:15:12 +00:00
github-actions 8af10c25a1 Fetch translations from Crowdin 2025-04-25 00:16:20 +00:00
LibretroAdmin 3ee6dd6481 Merge pull request #17828 from JoeOsborn/fix-uninitialized-variable
Fixes an uninitialized variable in extra wasmfs/fetchfs feature
2025-04-25 02:08:30 +02:00
Joseph C. Osborn 55f9f92eaf Fixes an uninitialized variable in extra wasmfs/fetchfs feature
Under some optimizations, this would lead to games using fetchfs
backend just crashing due to calling wasmfs functions on a garbage pointer.
2025-04-24 10:14:16 -07:00
LibretroAdmin 92fecf68b1 Merge pull request #17827 from white-axe/emscripten-webgl-get-proc-address 2025-04-24 07:25:17 -07:00
刘皓 1a5eb6e8b9 Implement get_proc_address for emscriptenwebgl_ctx 2025-04-23 22:12:10 -04:00
github-actions b2a5e97923 Fetch translations from Crowdin 2025-04-24 00:16:04 +00:00
github-actions ab515cd22d Fetch translations from Crowdin 2025-04-23 00:15:54 +00:00
github-actions 03525ffd5f Fetch translations from Crowdin 2025-04-22 00:15:59 +00:00
github-actions 547d739db4 Fetch translations from Crowdin 2025-04-21 00:16:40 +00:00
github-actions a2e512a094 Fetch translations from Crowdin 2025-04-20 00:17:09 +00:00
github-actions 76e7c9a3d9 Fetch translations from Crowdin 2025-04-19 00:15:24 +00:00
LibretroAdmin 056153ca5b Merge pull request #17821 from pstef/mean-and-mean 2025-04-18 15:42:35 -07:00
pstef 309c67a205 Revert "Define WIN32_LEAN_AND_MEAN to avoid collision with winsock2"
The Windows builds have been missing some libraries, notably
avdevice-58.dll, avfilter-7.dll, and prostproc-55.dll as reported by a
user on Discord.  I suspect it's caused by cc842fd, although I don't
fully understand why that would happen.
2025-04-18 21:12:17 +00:00
LibretroAdmin 21c5c5db36 Merge pull request #17815 from DisasterMo/master
Update the core localisation sync scripts, workflows and instructions
2025-04-18 09:01:36 -07:00
LibretroAdmin 60c8a34039 Merge pull request #17820 from zoltanvb/menu_driver_warning_fix
Avoid format length warning in menu_driver.c.
2025-04-18 09:00:57 -07:00
zoltanvb 6160b71ecc Avoid format length warning. 2025-04-18 17:33:55 +02:00
github-actions 0d66d4b1b3 Fetch translations from Crowdin 2025-04-18 00:15:29 +00:00
LibretroAdmin 0fef644219 Merge pull request #17818 from zoltanvb/msg_state_size
Fix core descriptions not showing
2025-04-17 15:06:10 -07:00
zoltanvb 597405ba89 Fix core descriptions not showing
In core downloader, description can be brought up by pressing
Select. However, for those cores where the description is longer
than what would be possible to display, nothing was displayed.
Several such cores exist, one example is Dosbox-Core.

Since this array is used for the messagebox, it is needless to make
it larger than what would be displayed anyway, and it makes other
safeguards act reasonably, so now there is info, just truncated.
2025-04-17 22:27:23 +02:00
LibretroAdmin c14016d6a2 Merge pull request #17817 from pstef/changelog 2025-04-17 00:23:09 -07:00
pstef ce36ea176a Add a few 3DS items 2025-04-17 06:25:30 +00:00
Joseph Mattiello 3eaa9f15a9 Add Microphone CoreAudio driver for iOS and macOS
Signed-off-by: Joseph Mattiello <[email protected]>
2025-04-16 15:37:11 -04:00
DisasterMo 453348afad Update the core localisation sync scripts, workflows and instructions 2025-04-16 18:58:02 +02:00
LibretroAdmin 94149644f9 Merge pull request #17812 from viachaslavic/fix_qt_dispatcher
Fix qt6 dispatcher
2025-04-16 07:24:16 -07:00
LibretroAdmin a5ddb4b007 Merge pull request #17813 from pstef/3ds-mrboom-audiomixer
Restore HAVE_AUDIOMIXER to fix MrBoom build
2025-04-16 07:24:01 -07:00
pstef 93b1d2c8d7 Restore HAVE_AUDIOMIXER to fix MrBoom build 2025-04-16 13:57:15 +00:00
LibretroAdmin f6cd9469ed Merge pull request #17811 from pstef/new_selection-int 2025-04-16 05:58:14 -07:00
LibretroAdmin d3b2c08e8b Merge pull request #17809 from pstef/3ds-compress-clean 2025-04-16 05:57:55 -07:00
Viačasłaŭ Chalikin 1736184f15 Fix qt6 dispatcher 2025-04-16 15:35:01 +03:00
pstef b9bee801fd Revert "Use size_t for new_selection as done everywhere else"
At least `case MENU_ACTION_UP` compares new_selection against 0, the
type needs to be signed. Revert 5710a7f6 now and revisit after a deeper
look.
2025-04-16 11:29:06 +00:00
pstef 4032fb47e8 Add missing compress.o object
Statically built cores like blueMSX call compress().
2025-04-16 06:30:25 +00:00
pstef fc15fce531 Fix logic in the clean target 2025-04-16 06:30:25 +00:00
LibretroAdmin 203fff1a11 Bump version 2025-04-14 23:04:09 -07:00
LibretroAdmin d14bf2f40d Update CHANGES.md 2025-04-14 17:37:11 -07:00
github-actions fd54639965 Fetch translations from Crowdin 2025-04-15 00:16:12 +00:00
LibretroAdmin 7b99a7ce85 Merge pull request #17807 from pstef/fixes 2025-04-14 04:52:59 -07:00
pstef 011469d7ef Fix broken logic in the clean target 2025-04-14 08:07:55 +00:00
github-actions f9d79b6afd Fetch translations from Crowdin 2025-04-14 00:16:58 +00:00
LibretroAdmin 7a1c9bd0b1 Merge pull request #17805 from zoltanvb/x11_multimouse
Extend X11 input driver with XInput2 extensions for multi-mouse
2025-04-13 06:03:07 -07:00
LibretroAdmin d36bbb6b91 Merge pull request #17803 from tekdahl/tekdahl-video-processor-magewell-patch 2025-04-13 04:39:38 -07:00
zoltanvb 1678e25af0 Extend X11 input driver with XInput2 extensions for multi-mouse
Add multi-mouse support for X11, by using XInput2 extensions. Only
master pointers are considered as mice.

New behavior put behind HAVE_XI2 and configure script extended with
necessary detection.
2025-04-13 12:16:53 +02:00
github-actions 69f319d16e Fetch translations from Crowdin 2025-04-13 00:40:20 +00:00
tekdahl 4e35a3749e Update video_processor_v4l2.c replaced/fixed list_resolutions function with code from pstef 2025-04-12 18:45:07 -05:00
pstef 6d2e7e4ec9 Remove unused variable 2025-04-12 23:02:22 +00:00
pstef cc842fd4b2 Define WIN32_LEAN_AND_MEAN to avoid collision with winsock2 2025-04-12 22:11:53 +00:00
pstef 89218d5640 Revert "Silence a -Wformat warning"
This reverts commit 4f9e86d24b.

Since uintmax_t is also a C99 feature, some other compiler complains.
2025-04-12 22:11:53 +00:00
LibretroAdmin 2ab308765d Merge pull request #17802 from warmenhoven/warmenhoven/pr/ios-build-fix
ios: build fix
2025-04-12 14:56:03 -07:00
Eric Warmenhoven 41d33e631b ios: build fix 2025-04-12 16:45:04 -04:00
LibretroAdmin 274d8732ab Merge pull request #17797 from pstef/makefiles 2025-04-12 10:10:26 -07:00
LibretroAdmin c6995c0b1d Merge pull request #17801 from pstef/win32-socket 2025-04-12 10:09:56 -07:00
LibretroAdmin a3ba931113 Merge pull request #17799 from tekdahl/tekdahl-video-processor-magewell-patch
video_processor_v4l2.c updates to make it work with my magewell card and added resolution options
2025-04-12 06:13:40 -07:00
LibretroAdmin ca850d09fe Merge pull request #17798 from warmenhoven/warmenhoven/pr/ios-man-scan
iOS: fix rescanning manual playlists after app update
2025-04-12 06:13:24 -07:00
LibretroAdmin 570290893b Merge pull request #17800 from pstef/fixes
Corrections after recent fixes
2025-04-12 06:13:15 -07:00
pstef d6cc1847bf Finish converting to SOCKET type in _WIN32 code
fixes c048a21
2025-04-12 10:45:08 +00:00
pstef 66aa1424f0 Define WIN32_LEAN_AND_MEAN to avoid collision with winsock2 2025-04-12 10:45:08 +00:00
pstef ea9b86c9e7 dr: import upstream change to silence a spurious warning 2025-04-12 10:30:36 +00:00
pstef 57726895dd Finish converting selection variables to size_t
fixes 5710a7f6e5
2025-04-12 10:30:36 +00:00
pstef ab3b321c66 cpuid: finish converting to int32_t
fixes b25cb6ea63
2025-04-12 10:30:36 +00:00
github-actions 05adec60da Fetch translations from Crowdin 2025-04-12 00:14:47 +00:00
tekdahl c63bab4c02 video_processor_v4l2.c
Added resolution picker/forcing.
Rewrote logic for finding ALSA audio devices in enumerate_audio_devices function
Added a skip for some of the interface queries that fail and aren't required for magewell usb.
2025-04-11 18:32:56 -05:00
Eric Warmenhoven 7998511c41 iOS: fix rescanning manual playlists after app update 2025-04-11 18:07:48 -04:00
pstef 34a1b824b6 Github CI: use silent mode for Wii U
It's not clear why it was turned on just for this target.
2025-04-11 17:12:08 +00:00
pstef de280cad9a Makefile.wiiu: print variables once in silent mode 2025-04-11 17:12:08 +00:00
pstef c93a050465 Makefile.wii: make one more target silenceable 2025-04-11 17:12:08 +00:00
pstef eb6305136d Makefile.wii: print variables once in silent mode 2025-04-11 17:12:08 +00:00
pstef 308593693c Makefile.wii: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:08 +00:00
pstef 25a1f1bb41 Makefile.webos: print variables once in silent mode 2025-04-11 17:12:08 +00:00
pstef e08ecd6f94 Makefile.webos: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef 192ca4179b Makefile.webos: make silent mode toggable 2025-04-11 17:12:07 +00:00
pstef 7f3f0106de Makefile.vita: implement silent mode 2025-04-11 17:12:07 +00:00
pstef 4b2196af6c Makefile.rs90: print variables once in silent mode 2025-04-11 17:12:07 +00:00
pstef 6e68e2f0da Makefile.rs90: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef f9de17b7ed Makefile.rs90: make silent mode toggable 2025-04-11 17:12:07 +00:00
pstef eb53b4174f Makefile.retrofw: print variables once in silent mode 2025-04-11 17:12:07 +00:00
pstef e907399419 Makefile.retrofw: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef edbe0f032c Makefile.retrofw: make silent mode toggable 2025-04-11 17:12:07 +00:00
pstef 58dc568c24 Makefile.psl1ght: implement silent mode 2025-04-11 17:12:07 +00:00
pstef 29072a3ac8 Makefile.ps2: implement silent mode 2025-04-11 17:12:07 +00:00
pstef d631a5b632 Makefile.orbis: implement silent mode 2025-04-11 17:12:07 +00:00
pstef e7c5eef862 Makefile.ngc: silence more targets in silent mode 2025-04-11 17:12:07 +00:00
pstef 941173c0df Makefile.ngc: print variables once in silent mode 2025-04-11 17:12:07 +00:00
pstef d373adc873 Makefile.ngc: don't print all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef d25aaac625 Makefile.miyoo: print variables once in silent mode 2025-04-11 17:12:07 +00:00
pstef cc75358335 Makefile.miyoo: don't list all objects removed by the clean target in silent mode 2025-04-11 17:12:07 +00:00
pstef 685b937e2f Makefile.miyoo: make silent mode toggable 2025-04-11 17:12:07 +00:00
pstef 41bbbc55db Makefile.dos: implement silent mode 2025-04-11 17:12:07 +00:00
pstef 6a8338efe9 Makefile.ctr: silence more targets in silent mode 2025-04-11 17:12:06 +00:00
pstef ddcf5285d1 Makefile.ctr: print variables once in silent mode 2025-04-11 17:12:06 +00:00
pstef fbf97b2326 Makefile: don't print all objects removed by the clean target 2025-04-11 17:12:06 +00:00
pstef ab2e577c66 Makefile: print variables once in silent mode 2025-04-11 17:12:06 +00:00
LibretroAdmin 4c0744b644 Merge pull request #17795 from pstef/selection-size_t 2025-04-10 20:25:55 -07:00
LibretroAdmin d76c015e9a Merge pull request #17796 from pstef/silence-warnings 2025-04-10 20:23:43 -07:00
github-actions ccc68a98bb Fetch translations from Crowdin 2025-04-11 00:15:51 +00:00
pstef c048a21aa4 Use platform-specific checks for invalid descriptors
Check network fd/socket validity using INVALID_SOCKET on Windows
(requiring conditional winsock2.h include) and < 0 otherwise.
Fixes -Wsign-compare warning.
2025-04-10 21:10:45 +00:00
pstef 6a302d0602 PSVita: add missing include 2025-04-10 21:10:45 +00:00
pstef b25cb6ea63 Use int32_t for x86_cpuid flags and handle MSVC types
Change the flags parameter to int32_t for explicit sizing. Add a check
and cast for MSVC __cpuid compatibility when int is 32-bit.

This silences a -Wincompatible-pointer-types warning where int32_t is
long int.
2025-04-10 21:10:45 +00:00
pstef 317c80a257 Silence a shorten-64-to-32 warning
The result of this multiplication will fit into a 32-bit int.
2025-04-10 21:10:45 +00:00
pstef 5710a7f6e5 Use size_t for new_selection as done everywhere else 2025-04-10 21:10:45 +00:00
pstef b5a4a0da79 Don't redefine _BSD_SOURCE
Imported from upstream.
2025-04-10 21:10:45 +00:00
pstef 620e440ab1 Silence an incompatible-pointer-types warning 2025-04-10 21:10:45 +00:00
pstef bcdb644bce Silence a discarded-qualifiers warning
waitUntilDeviceIsReady() should take a const char pointer as a
parameter, because it doesn't use it for writing. Since the function
prototype asks for a char pointer, cast it here.
2025-04-10 21:10:45 +00:00
pstef 4f9e86d24b Silence a -Wformat warning
Use %ju format specifier and cast the value to uintmax_t so that they
match on all platforms.
2025-04-10 21:10:45 +00:00
pstef 4d6c012009 Make space for three characters after a strlcpy call 2025-04-10 21:10:45 +00:00
pstef 187673fb2a Guard definition of an array just like its use is guarded 2025-04-10 21:10:45 +00:00
pstef bcc3ae448f Silence a -Waddress warning 2025-04-10 21:10:45 +00:00
pstef fbb093255a Check for string truncation to silence a warning 2025-04-10 21:10:44 +00:00
pstef 4f3ae82ed3 Savestate thumbnails: selection is usually size_t 2025-04-10 19:20:56 +00:00
LibretroAdmin 7a17ed09ee Merge pull request #17736 from MrHuu/ctr_core_load_unload 2025-04-10 03:36:07 -07:00
LibretroAdmin 82d8b9630a Merge pull request #17750 from BinBashBanana/master 2025-04-10 03:35:45 -07:00
github-actions aec5d1addd Fetch translations from Crowdin 2025-04-10 00:16:10 +00:00
LibretroAdmin af50c2fccb Merge pull request #17792 from pstef/wii-fixes
Wii fixes
2025-04-09 15:36:02 -07:00
pstef 6f95b974ba Bring in changes for GEKKO from upstream 2025-04-09 20:43:09 +00:00
pstef 7dce21c7d5 Copy quiet compilation mode from other Makefiles 2025-04-09 20:43:09 +00:00
pstef d65c17f6b8 Add missing includes
malloc.h for memalign() and unistd.h for usleep().
2025-04-09 20:43:09 +00:00
pstef e8d43b3d99 Add missing function declarations
They are absent even in upstream, so I decided against copying to the
local copy of libogc. And a couple of function prototypes doesn't seem
to warrant a new header file.
2025-04-09 20:43:09 +00:00
pstef b28a805f9c Remove remnants of a rejected idea
This was replaced simply by importing 3DS support from upstream.
2025-04-09 20:43:09 +00:00
LibretroAdmin 4bf8855fda Merge pull request #17754 from zoltanvb/udev_to_linuxraw_fallback
Save fallback to linuxraw driver in case of first boot.
2025-04-09 13:26:34 -07:00
LibretroAdmin 17ac0529c2 Merge pull request #17762 from pstef/ctr-mbedtls
3DS: enable mbedTLS
2025-04-09 13:25:38 -07:00
LibretroAdmin 634a0a9654 Merge pull request #17753 from pstef/ctr-nogriffin
Fix non-griffin build for 3DS and make it the default
2025-04-09 13:25:30 -07:00
pstefandpstef b98a730413 Use fabsf and intended threshold for refresh rate check (#17791)
Discussed with sonninnos

Co-authored-by: pstef <[email protected]>
2025-04-09 23:22:00 +03:00
LibretroAdmin 036df1e9b1 Merge pull request #17790 from pstef/gx2-update-uniform-block
Fix variable name collision
2025-04-09 10:55:34 -07:00
LibretroAdmin a10dbbc1d0 Merge pull request #17787 from warmenhoven/warmenhoven/pr/ios9-build-fix
ios: ios9 build fix
2025-04-09 10:55:22 -07:00
pstef 3b3065f736 Fix variable name collision
const char *id overshadowed the function parameter int id.
2025-04-09 16:59:49 +00:00
Eric Warmenhoven 0533debeab ios: ios9 build fix 2025-04-09 08:50:43 -04:00
LibretroAdmin 3fb20b49c8 Merge pull request #17786 from zoltanvb/android-patch-fix 2025-04-09 03:08:12 -07:00
zoltanvb 4ceea9d6ca Follow patched file changes. 2025-04-09 06:35:37 +02:00
LibretroAdmin de775c501c Merge pull request #17780 from pstef/cheat-manager 2025-04-08 18:46:51 -07:00
LibretroAdmin b5424e7448 Merge pull request #17783 from pstef/switch-performance-profiles 2025-04-08 18:44:20 -07:00
LibretroAdmin 973cb76c1c Merge pull request #17784 from warmenhoven/warmenhoven/pr/ios-screen-orient 2025-04-08 18:44:07 -07:00
github-actions bbafb16ea4 Fetch translations from Crowdin 2025-04-09 00:16:07 +00:00
Eric Warmenhoven afc32f02dc ios: screen orientation lock through display server 2025-04-08 15:39:04 -04:00
Ryunam fbd05aa185 Fix very minor build warning (#17781) 2025-04-08 20:24:51 +03:00
pstef e523a6c0be Relocate Switch CPU profile definitions
Move SWITCH_CPU_* array definitions from header to platform_switch.c.
Use extern declarations in the header. Add NULL/0 terminators to the
arrays and update size calculation and loops to use the terminators
where the number of elements can't be calculated.

The motivation for this change is to remove code duplication and silence
warnings about unused arrays in translation units that only used a
subset of them.
2025-04-08 17:12:03 +00:00
pstef 59c71b8db4 Rewrite part of cheat_manager_load_cb_second_pass()
This is to silence a stringop warning that I believe to be a false
positive.  Nevertheless, this change reduces verbosity of the code
and introduces a couple of checks that weren't there previously.

Note that the base parameter of this strtoul call is changed from 0
to 10, because previously the while loop rejected characters other
than 0-9 so strtoul didn't have to. Now that the loop is gone, the
call has to reject characters that are not decimal digits to keep
the logic as it was.
2025-04-08 06:16:59 +00:00
github-actions dc67ff6418 Fetch translations from Crowdin 2025-04-08 00:15:05 +00:00
LibretroAdmin 7ff7e49f56 Merge pull request #17776 from zoltanvb/delete_core_options
Enable core options reset without starting a core.
2025-04-07 16:02:50 -07:00
LibretroAdmin aca2d3a544 Merge pull request #17777 from JesseTG/jtg/fix-ffmpeg-camera-condition 2025-04-07 02:33:31 -07:00
github-actions 55df20c845 Fetch translations from Crowdin 2025-04-07 00:16:31 +00:00
Jesse Talavera 334519167b Make the condition for using camera_ffmpeg consistent with the Makefile
- Should fix a link error
2025-04-06 19:05:34 -04:00
zoltanvb 000c5dcd76 Enable core options reset before starting a core.
Add "Reset core options" menu to two more places:
- Manage Cores, where it can delete the options for the selected core
- Configuration, where it can delete the options for the loaded core

Current reset function is updated to delete the core options file if
reset is wanted for a specific core, or core was loaded but not yet
started. Meant as a recovery method for possibly fatal core option
changes.
2025-04-06 21:53:01 +02:00
pstef 1f26793fde 3DS: enable mbedTLS 2025-04-06 18:48:10 +00:00
pstef 4354fc331c Fix non-griffin build for 3DS and make it the default
While here:
* remove input_overlay and task_overlay from linking blacklist
* move -Werror to CC invocation since C++ refuses to use it
* copy the quiet build mode from the main Makefile and make it the
  default
* temporarily define DEPRECATED for gpu_old.h to allow succesful build
* replace the call to command_event() with one to retroarch_main_quit()
  in a failure case
2025-04-06 18:48:07 +00:00
pstef 70aaa0a55c Fix non-griffin build for 3DS and make it the default
While here:
* remove input_overlay and task_overlay from linking blacklist
* move -Werror to CC invocation since C++ refuses to use it
* copy the quiet build mode from the main Makefile and make it the
  default
* temporarily define DEPRECATED for gpu_old.h to allow succesful build
* replace the call to command_event() with one to retroarch_main_quit()
  in a failure case
* add missing uncompr.o in Makefile.common for HAVE_BUILTINZLIB
2025-04-06 18:35:41 +00:00
LibretroAdmin c9998dfb32 Merge pull request #17752 from neil4/fix-overlay-mouse-lightgun 2025-04-06 01:53:55 -07:00
LibretroAdmin d15c7f5669 Merge pull request #17772 from pstef/gamecube-fixes 2025-04-06 01:36:19 -07:00
pstef af8765cb3b Fix DCFlushRange size calculation
by correcting the operator precedence
2025-04-06 01:04:06 +00:00
pstef 3130717626 Don't redefine _SHIFTL and _SHIFTR macros 2025-04-06 00:59:15 +00:00
pstef a33542719f Guard nanosleep prototype behind _POSIX_TIMERS 2025-04-06 00:58:15 +00:00
pstef b3f1152049 Fix a callback function's type to enable compilation with GCC14 2025-04-06 00:57:34 +00:00
pstef 39fd1176dd Add a missing malloc.h include for memalign() 2025-04-06 00:56:04 +00:00
pstef 3c9d9373d2 Copy quiet compilation mode from other Makefiles 2025-04-06 00:55:37 +00:00
github-actions 44666bae9a Fetch translations from Crowdin 2025-04-06 00:17:06 +00:00
LibretroAdmin eca7fdcc99 Merge pull request #17770 from pstef/achievements-badges
Restore cheevos_badges_enable for HAVE_GFX_WIDGETS builds
2025-04-05 11:09:08 -07:00
pstef 9c4efa9af0 Restore cheevos_badges_enable for HAVE_GFX_WIDGETS builds
This change reduces stuttering when starting a game with
retroachievements enabled. I assume the stuttering is just postponed
until the badges are downloaded on demand, but it lets users pick their
poison.

This change helps but doesn't fix
https://github.com/libretro/RetroArch/issues/16470
https://github.com/libretro/RetroArch/issues/17027
https://github.com/libretro/RetroArch/issues/17758
2025-04-05 10:32:22 +00:00
github-actions d50825e5c7 Fetch translations from Crowdin 2025-04-05 00:14:42 +00:00
LibretroAdmin 3888bfd453 Merge pull request #17766 from pstef/pcsx_rearmed
CTR: fix type to re-enable compilation
2025-04-04 09:39:17 -07:00
odditude42 b8b11a6187 Excludes msvc compilation of Win11/MSYS2-specific registry-reading code to resolve (#17769)
MSVC2010 build issues.
2025-04-04 13:12:48 +03:00
github-actions 873ed01b7d Fetch translations from Crowdin 2025-04-04 00:16:08 +00:00
odditude42 9de225ed45 Moved declarations to fix MSVC2010 builds (C89 compliance) (#17768) 2025-04-04 01:42:02 +03:00
BinBashBanana f5a056b086 Fix safari file uploads 2025-04-03 10:24:06 -07:00
pstef 327ee894f4 CTR: fix type to re-enable compilation
with GCC14
2025-04-03 15:56:13 +00:00
LibretroAdmin 7a5fcd460d Merge pull request #17764 from zoltanvb/qt_nonpng_display
Enable non-png thumbnails also for Qt interface.
2025-04-02 16:17:29 -07:00
LibretroAdmin a3eb6afe8d Merge pull request #17765 from pstef/net-http-resolve-entry
Fix crash in net_http_resolve() in single-thread mode
2025-04-02 16:17:12 -07:00
pstef 71ddadfcfb Fix crash in net_http_resolve() in single-thread mode
Pass the right object to the resolving function
2025-04-02 21:32:11 +00:00
zoltanvb fb9aad1a3e Enable non-png thumbnails also for Qt interface. 2025-04-02 22:43:25 +02:00
github-actions d1a53e7d05 Fetch translations from Crowdin 2025-04-02 00:16:30 +00:00
zoltanvb 3bbbeca957 Save fallback to linuxraw driver in case of first boot.
When no devices can be detected and it is the initial boot, make
sure the driver is set to linuxraw, if supported.
2025-04-01 21:55:14 +02:00
LibretroAdmin 454dedf034 Merge pull request #17757 from kokoko3k/master
FIX shader wildcards.
2025-04-01 05:54:11 -07:00
LibretroAdmin 029469b3d9 Merge pull request #17760 from white-axe/vita-pic-veneer
Use `-Wl,--pic-veneer` instead of `-fno-optimize-sibling-calls` in Makefile.vita
2025-04-01 05:53:45 -07:00
刘皓 665d930823 Use -Wl,--pic-veneer instead of -fno-optimize-sibling-calls in Makefile.vita 2025-03-31 23:05:59 -04:00
BinBashBanana 4d95024bd6 Makefile compatibility fixes 2025-03-31 18:13:15 -07:00
github-actions 031a315329 Fetch translations from Crowdin 2025-04-01 00:18:16 +00:00
Antonio Orefice 97725bfac3 remove a debug message 2025-03-31 18:23:56 +02:00
Antonio Orefice d7c00869fb FIX shader wildcards.
All wildcards: Use strlen() because STRLEN_CONST cannot work on wildcard_tokens[i].token_name
CORE and VID-DRV wildcards: correctly update _len
2025-03-31 18:19:18 +02:00
github-actions 06eabf2d13 Fetch translations from Crowdin 2025-03-31 00:15:56 +00:00
BinBashBanana 393e1b4b98 Fixes for #17750 2025-03-30 13:15:50 -07:00
LibretroAdmin 1b3973edbc Merge pull request #17747 from pstef/video-frame-delay-setting-rewrite 2025-03-30 01:11:13 -07:00
github-actions 57b1d5880f Fetch translations from Crowdin 2025-03-30 00:16:43 +00:00
nfore b9beaa8564 Fix overlay lightgun, mouse & pointer
- Ensure other touchscreen input is blocked when overlay buttons pressed
- Limit physical+overlay mouse input to iOS for now
- Reset overlay mouse deltas when there is no touch input
- Disable touch mouse in android_input.c for now. Too buggy
2025-03-29 08:56:35 -05:00
MrHuu 736e1b30f3 Static core loading 2025-03-29 11:26:58 +01:00
LibretroAdmin 76598f1016 Merge pull request #17745 from pstef/silence-warnings
Silence warnings
2025-03-29 03:12:00 -07:00
LibretroAdmin a3c144d6ca Merge pull request #17749 from odditude42/master
Updated platform_win32.c to properly detect OS version info on Win11.
2025-03-29 03:11:51 -07:00
BinBashBanana 05cefc9a4d AudioWorklet driver, misc. emscripten fixes 2025-03-28 19:41:40 -07:00
odditude42 c23e6ff017 Updated platform_win32.c to properly detect OS version info on Win11.
Removed .vscode config files which were still cached in the index
  prior to the directory being added to .gitignore.
2025-03-28 19:25:25 -04:00
pstef bf1ff07fd0 Rewrite setting_get_string_representation_video_frame_delay()
Reduce indentation, squash a warning, simplify code.
2025-03-28 17:30:53 +00:00
pstef 80a74cca68 Remove unused variable
sonninnos says it might have been a copy and paste leftover.
2025-03-28 17:09:14 +00:00
pstef 83e974077f Guarantee space for string characters after strlcpy
to silence a couple of stringop-overflow warnings (3DS).
2025-03-28 11:11:09 +00:00
pstef 59a0665a20 Remove unused variable
unused since b5e01422e1
2025-03-28 10:57:53 +00:00
pstef df6e3dbda8 Silence warnings about sign mismatch 2025-03-28 10:57:53 +00:00
pstef b59b038a3e Silence an unreferenced local variable warning
Not used here since 106dc5d8b7
2025-03-28 09:48:21 +00:00
pstef a25a4d29a8 Silence a -Waddress warning 2025-03-28 09:48:21 +00:00
pstef 2daad9f89f Remove unused variables
They were never used and seem to have been copied from
action_ok_push_dropdown_item_input_device_type().
2025-03-28 09:48:21 +00:00
pstef 3bf6635ec6 Make printf format match the type 2025-03-28 09:48:20 +00:00
LibretroAdmin cb69d250b0 Merge pull request #17739 from zoltanvb/linuxraw_keyboard
Extend keyboard input for linuxraw input driver
2025-03-27 17:05:20 -07:00
pstef aa94f571e2 Silence an unused variable warning
This is not used since 73abaddd9c
2025-03-27 23:21:19 +00:00
pstef 5ef2b5a442 Silence a defined-but-not-used-function warning
Enclose the static function definitions in an ifdef like the one used
where they are called.
2025-03-27 19:06:28 +00:00
pstef c6fb0871e9 Simplify save_keybind_axis()
Also use matching sprintf format and type to silence a format warning.
2025-03-27 18:47:52 +00:00
pstef 626ef6ce4b Remove unused variable
It would be used only once in this context, so just remove it.
2025-03-27 18:33:55 +00:00
zoltanvb 5b2904930b Extend keyboard input for linuxraw input driver
The keyboard support for linuxraw driver was a bit spotty. Extended
with missing keyboard query, callback, and a few fixes against
over-indexing the status array.
2025-03-27 15:04:19 +01:00
github-actions a3b690ec58 Fetch translations from Crowdin 2025-03-27 00:15:32 +00:00
LibretroAdmin 999de04ace Merge pull request #17733 from pstef/ozone-footer-label 2025-03-25 21:45:08 -07:00
LibretroAdmin f0aeeb7732 Merge pull request #17734 from pstef/silence-warnings 2025-03-25 21:44:30 -07:00
LibretroAdmin fbed58ff08 Merge pull request #17735 from pstef/freeze-ui-3ds 2025-03-25 21:43:17 -07:00
github-actions 0d39aa3d88 Fetch translations from Crowdin 2025-03-26 00:15:49 +00:00
pstef eb8819867b Partially revert 0033224c25
font_driver_get_message_width() can return -1 if it fails,
ozone_cache_footer_label() has a fallback for this case
2025-03-25 21:02:29 +00:00
pstef 870d57445a Move INLINE earlier in function declarations
to silence a warning.
2025-03-25 20:20:37 +00:00
pstef 052acd4e38 Reorder arguments in calls to calloc
to silence calloc-tran sposed-args warnings.
2025-03-25 20:15:20 +00:00
pstef ac38cfe8da Silence -Waddress
This is a continuation of c9149895f5
2025-03-25 20:06:33 +00:00
pstef 50ecf3877c Fix UI freeze when threaded rendering is enabled on 3DS
Before this change, there was at least one scenario in which the UI
would seemingly freeze and a restart was needed. That's when an update
of cores was attempted with threaded rendering enabled.

Fixes https://github.com/libretro/RetroArch/issues/17727
2025-03-25 17:18:29 +00:00
pstef a4bfd84cc7 Silence warnings about sign mismatch 2025-03-25 16:55:39 +00:00
pstef 281dff8956 Silence a stringop-overflow warning
Guard against an unlikely case.
2025-03-25 16:55:39 +00:00
pstef 39495ced67 Silence a type-limits warning
Before this change, an 8-bit value was guaranteed to be lesser than the
size of this array (256). Instead of removing the check, I make it
meaningful by reducing the size of the array.
2025-03-25 16:55:39 +00:00
LibretroAdmin 962afed9dd Merge pull request #17729 from pstef/limit-stack-usage 2025-03-25 04:40:14 -07:00
LibretroAdmin 873c467240 Merge pull request #17728 from pstef/signed-slot 2025-03-25 04:39:59 -07:00
github-actions 2406935a58 Fetch translations from Crowdin 2025-03-25 00:16:11 +00:00
github-actions f6076a4203 Fetch translations from Crowdin 2025-03-24 00:16:01 +00:00
pstef b995db627b Change the type of slot to int
Everywhere around this function it is an int, and within this function
there is also a check for sign, which makes me think unsigned was a
mistake.
2025-03-23 22:33:17 +00:00
pstef b0109b5829 Reduce stack usage in task_database_cue.c
Move disc_data from stack to heap.
2025-03-23 13:28:28 +00:00
pstef d5ba7902a4 Reduce stack usage in command.c
by using PATH_MAX_LENGTH to define the length of buffers that store
paths.
2025-03-23 09:31:08 +00:00
LibretroAdmin 99af19b6fe Merge pull request #17722 from pstef/extensions-rewrite
File extension list generation rewrite
2025-03-23 02:30:47 -07:00
LibretroAdmin a1ce57f11f Merge pull request #17723 from pstef/cmd-special
Push the compiler to reserve space for negative commands
2025-03-23 02:29:55 -07:00
LibretroAdmin 8ae97ac91e Merge pull request #17724 from pstef/negative-accumulator
Allow frame_time_accumulator to go negative
2025-03-23 02:29:41 -07:00
github-actions b0507c0235 Fetch translations from Crowdin 2025-03-23 00:16:41 +00:00
pstef d14801d65b File extension list generation rewrite
Only limit extensions under the condition that the valid_extensions list
is not empty and the user wishes to limit the extensions. Otherwise
present files of all recognized extensions.

Part of this logic was implemented in 8f32801292 where the
point was to show supported files when core info file is missing. The
other part is the filter_by_current_core option.
2025-03-22 20:37:05 +00:00
LibretroAdmin e05dc9837b Merge pull request #17721 from mittonk/lr-dice_apple
Package lr-dice for the Apple Store.
2025-03-22 07:21:44 -07:00
Ken Mitton 59d1b94b65 Package lr-dice for the Apple Store. 2025-03-21 11:53:50 -04:00
LibretroAdmin 5adaaf7851 Merge pull request #17717 from pstef/silence-warnings
Silence even more warnings
2025-03-21 08:41:40 -07:00
pstef 3be0cfe09c Allow frame_time_accumulator to go negative
to be able to catch the underflow and correct it.
2025-03-20 21:44:39 +00:00
pstef c3dfc7ec63 Push the compiler to reserve space for negative commands
Cheevos define a special macro defined to -1 and uses it as one of the
values for enum event_command. Make this value a part of the enum
definition so that this type is not optimized to be unsigned.
2025-03-20 21:32:56 +00:00
pstef a28b79215f Silence warning about type sign mismatch
Make this enum act like a type, use it and let the compiler choose and
handle signedness so that it all matches.
2025-03-20 18:24:55 +00:00
LibretroAdmin a58ac85dbc Merge pull request #17704 from zoltanvb/android_bind_hold
Change bind hold default on Android
2025-03-20 11:05:49 -07:00
pstef 3fb7d190bf Silence warning about possible truncation
Also simplify this part; the point here is to start the copy later, but
otherwise the buffer size is the same, and it's still a string, so needs
no special handling.
2025-03-20 16:51:58 +00:00
pstef b85bcb8e48 Adjust types of index and maxindex to unsigned 2025-03-20 16:21:27 +00:00
pstef ce6cd0000c Don't free members of struct before init 2025-03-20 16:12:12 +00:00
pstef c978717b61 Silence a warning about no return value from non-void function
It seems the idea is to continue with installation, regardless of what
happened within deleteCia, so I just change its return type to void.
2025-03-20 06:26:44 +00:00
pstef 29639b98b3 Use the return value of rbtree_insert to silence a warning
The function prototype wants us to be warned when the result is not
used, but it's not clear why - I assume to check for failure.
2025-03-20 06:26:44 +00:00
LibretroAdmin ee881cfd67 Merge pull request #17706 from zoltanvb/plain_drm_fix
Enable compilation with plain_drm without other video drivers.
2025-03-19 18:04:52 -07:00
LibretroAdmin e6887be45c Merge pull request #17710 from warmenhoven/warmenhoven/pr/apple-strlcpy
apple: fix strlcpy where src and dst are the same
2025-03-19 18:04:41 -07:00
LibretroAdmin f7b4af89e9 Merge pull request #17713 from pstef/silence-warnings
Silence warnings
2025-03-19 18:04:22 -07:00
github-actions 9fe9cb0939 Fetch translations from Crowdin 2025-03-20 00:15:04 +00:00
pstef 17a05ea939 Silence a dangling-pointer warning in Lzma 2025-03-19 20:19:39 +00:00
pstef f7285ff405 Silence warning: left shift of negative value
Import the change from upstream 16c83cd5fc4c18954c1b6e3de16c37ba
2025-03-19 20:09:15 +00:00
pstef a27d49b6f2 Silence GCC stringop-overflow
At optimization level -O3, GCC generates a warning about its own
optimizations, likely due to loop unrolling. Manually unroll the loop to
eliminate any ambiguity and prevent the warning.
2025-03-19 19:57:50 +00:00
pstef 3dca8dbf66 Silence -Walloc-size-larger-than=byte-size
One of the GCC14's optimization heuristic triggered here, suggesting
that the special value of len (size_t) could potentially be lesser than
the file's size (int64_t) but greater than "maximum object size" (set by
byte-size, PTRDIFF_MAX by default).

Use the same type as the file size it's compared to, and adjust the
sentinel value to spell INT64_MAX.
2025-03-19 17:35:15 +00:00
github-actions 5c093a7211 Fetch translations from Crowdin 2025-03-19 00:22:56 +00:00
Eric Warmenhoven 86fddd5326 apple: fix strlcpy where src and dst are the same 2025-03-17 15:34:45 -04:00
sonninnos 5365639a36 Win32: Fix pick core dialog (#17709) 2025-03-17 18:10:50 +02:00
zoltanvb 6ce2a12c4d Enable compilation with plain_drm without other video drivers. 2025-03-17 06:04:06 +01:00
github-actions 81b74decb3 Fetch translations from Crowdin 2025-03-17 00:16:11 +00:00
LibretroAdmin fbcd3a77fb Merge pull request #17705 from pstef/silence-warnings-ctr
CTR: more compiler warnings cleanup
2025-03-16 09:29:39 -07:00
pstef bad0e58372 CTR: more compiler warnings cleanup
* unsigned vs signed comparison
* copy DEBUG_VAR from wiiu - this one prints pointer values in a
  portable way
* prove GCC14 that a date formatted as "00/00/0000" can fit into 11
  bytes
* explicitly mention previously unhandled enum constants
* Adding GFX widgets in b9849f78f7 and 1235a7435e orphaned
  ctr_set_osd_msg(). Reinstate it instead of removing, since it's
  effectively the same as calling font_driver_render_msg, but with
  checks.
* remove sp from clobber list in inline assembly
2025-03-16 14:00:35 +00:00
zoltanvb 485b055d48 Change bind hold default on Android
Due to touchscreen quick tap function, binding runs into problems
with the default setting that works well on other platforms. Using
a nonzero value avoids that problem.
2025-03-16 14:28:21 +01:00
LibretroAdmin bf3752ed61 Merge pull request #17702 from pstef/silence-warnings-ctr 2025-03-15 18:08:22 -07:00
LibretroAdmin 98b1601fcb Merge pull request #17701 from zoltanvb/reserved_device_multiple_instance 2025-03-15 18:07:03 -07:00
LibretroAdmin 040cbe00d6 Merge pull request #17698 from pstef/Makefile.ctr-debug 2025-03-15 18:06:49 -07:00
LibretroAdmin c2ffa044f9 Merge pull request #17700 from pstef/realloc-ext-list 2025-03-15 18:06:35 -07:00
pstef fc9f0b04be CTR: Silence a couple of GCC 14 warnings 2025-03-16 01:01:04 +00:00
github-actions b9de670da0 Fetch translations from Crowdin 2025-03-16 00:15:47 +00:00
zoltanvb ba5489128f Fix reserved device selection when multiple controller instances are present
If multiple instances of the same controller type are present, they will be
postfixed by (#2), (#3) etc. This made menu selection ineffective.
2025-03-15 18:40:33 +01:00
pstef 62ccd05e36 Try to avoid overflowing the stack
PATH_MAX_LENGTH is pretty short on CTR and not really adequate here
since this buffer is not storing a path.

Allocate and possibly reallocate from heap instead of using the
stack here.
2025-03-15 16:43:38 +00:00
pstef b8a340641a Make debugging on CTR easier
Only omit frame pointers on non-debug builds.
2025-03-15 10:30:06 +00:00
github-actions a186bdba06 Fetch translations from Crowdin 2025-03-15 00:14:20 +00:00
LibretroAdmin ea592051c7 Merge pull request #17696 from sonninnos/content-load-archive
Show load before open in archives
2025-03-14 13:46:28 -07:00
LibretroAdmin 4923c2e70b Merge pull request #17697 from sonninnos/core-suggest
Suggest cores only when core is not loaded
2025-03-14 13:46:20 -07:00
sonninnos e64d52740b Suggest cores only when core is not loaded 2025-03-14 12:50:15 +02:00
sonninnos ee2cf436d4 Show load before open in archives 2025-03-14 12:47:58 +02:00
github-actions 113ff2f009 Fetch translations from Crowdin 2025-03-14 00:14:58 +00:00
LibretroAdmin 51b13fc58c Merge pull request #17695 from sonninnos/core-load-unload
Core load+unload fixes
2025-03-13 09:17:44 -07:00
sonninnos ee8a641275 Core load+unload fixes 2025-03-13 15:09:38 +02:00
LibretroAdmin 0b2b933388 Merge pull request #17681 from SternXD/uwp-update-angle 2025-03-12 22:00:30 -07:00
LibretroAdmin bfad782acc Merge pull request #17679 from SternXD/uwp-invalid-key 2025-03-12 22:00:19 -07:00
github-actions c0348de3db Fetch translations from Crowdin 2025-03-13 00:15:32 +00:00
LibretroAdmin 7e1c036fc0 Merge pull request #17693 from JesseTG/jtg/fix-light-sensor-parsing 2025-03-12 16:43:54 -07:00
LibretroAdmin faae5b1519 Merge pull request #17692 from JoeOsborn/fetch-single-backend 2025-03-12 16:43:40 -07:00
Jesse Talavera a52a63c381 Fix the light sensor reading on Linux input drivers
A previous `errno` was causing `linux_read_illuminance_sensor` to fail despite parsing the returned value correctly
2025-03-12 18:25:21 -04:00
Joseph C. Osborn 525e1cff49 Slightly more informative printf 2025-03-12 15:11:23 -07:00
Joseph C. Osborn 52e2ee9272 add abort in case only one of manifest/base dir defined 2025-03-12 15:10:49 -07:00
Joseph C. Osborn d4d3aee457 Strip newline from base_url, use wasmfs_create_file instead of open
Also style fixes
2025-03-12 15:06:29 -07:00
LibretroAdmin 919868aa0a Merge pull request #17688 from zoltanvb/changelist_update 2025-03-11 22:02:35 -07:00
github-actions a36e380337 Fetch translations from Crowdin 2025-03-12 00:15:19 +00:00
zoltanvb 5cf14cc14c Changes up to 2025-03-11 2025-03-11 23:20:48 +01:00
github-actions c94e4cff85 Fetch translations from Crowdin 2025-03-11 00:15:37 +00:00
Joseph C. Osborn 809e5d78be create a single fetchfs backend instead of 1 per file
symlinking manifest entries and using a baseurl gives us a way to
create just a single fetchfs backend (and a single thread) since
emscripten upstream is not willing to integrate manifest support to
fetchfs directly.

Retroarch embedders could use this to get assets or other resources
lazily or chunk-by-chunk for large files.
2025-03-10 15:04:38 -07:00
SternXD 37b349432f UWP: Update invalid pfx key 2025-03-10 11:24:42 -04:00
SternXD 1761aa0814 UWP: Update x64 Angle Binaries 2025-03-10 11:01:27 -04:00
LibretroAdmin 9e64cce10f Merge pull request #17678 from warmenhoven/warmenhoven/cloud-ignore 2025-03-10 04:35:37 -07:00
github-actions e7132c1c59 Fetch translations from Crowdin 2025-03-10 00:13:28 +00:00
Eric Warmenhoven 3943f5b6b0 cloud sync: properly handle ignored directories 2025-03-09 18:24:02 -04:00
LibretroAdmin 4c5cf5a8e5 Merge pull request #17671 from zoltanvb/remove_discord_avatar
Remove discord avatar references
2025-03-09 09:17:22 -07:00
zoltanvb 675909333d Remove discord avatar references
These additions were never enabled in current builds, discord
avatar stuff was disabled in #7964.
2025-03-09 09:00:25 +01:00
LibretroAdmin 4b368ae008 Merge pull request #17664 from BinBashBanana/master 2025-03-08 20:24:15 -08:00
github-actions 86800ed493 Fetch translations from Crowdin 2025-03-09 00:13:40 +00:00
github-actions 9cad6dd993 Fetch translations from Crowdin 2025-03-08 00:12:01 +00:00
LibretroAdmin 644fd891d7 Merge pull request #17665 from zoltanvb/android_pause_key
Remove special handling of pause key on Android
2025-03-07 09:21:18 -08:00
github-actions 0868c16564 Fetch translations from Crowdin 2025-03-07 00:15:02 +00:00
BinBashBanana c672730259 address issues 2025-03-06 15:38:40 -08:00
zoltanvb 176247d3bc Remove special handling of pause key 2025-03-06 17:55:37 +01:00
github-actions a6316465a3 Fetch translations from Crowdin 2025-03-06 00:14:36 +00:00
LibretroAdmin 7f1a348d03 Merge pull request #17663 from warmenhoven/warmenhoven/pr/apple-def-avf
apple: make avfoundation camera the default driver
2025-03-05 15:29:23 -08:00
BinBashBanana f6eb1ed5c5 Threaded emscripten improvements 2025-03-05 10:39:43 -08:00
Eric Warmenhoven 733bae3b3a apple: make avfoundation camera the default driver 2025-03-05 10:05:36 -05:00
LibretroAdmin 96a72e834a Merge pull request #17660 from warmenhoven/warmenhoven/pr/ios9-ci
ios9 ci: move back to run on old xcode version
2025-03-05 06:11:35 -08:00
LibretroAdmin 978c84ee1e Merge pull request #17662 from zoltanvb/android_game_focus
Fix keyboard_mapping_blocked usage on Android (game focus)
2025-03-05 06:09:02 -08:00
zoltanvb 27b67c1340 Fix keyboard_mapping_blocked usage (game focus) 2025-03-05 06:23:53 +01:00
github-actions eafd46d84e Fetch translations from Crowdin 2025-03-05 00:15:09 +00:00
Eric Warmenhoven 9d4a4e29fc ios9 ci: move back to run on old xcode version 2025-03-04 15:30:33 -05:00
LibretroAdmin 80b62db04e Merge pull request #17657 from warmenhoven/warmenhoven/pr/apple-avf-camera
apple: enable JoeMatt's avfoundation-based camera driver
2025-03-04 07:32:13 -08:00
LibretroAdmin 9a8035bad1 Merge pull request #17656 from warmenhoven/warmenhoven/pr/macos-flto
macos: compile with -flto
2025-03-04 07:32:05 -08:00
LibretroAdmin c2933b91c2 Merge pull request #17655 from warmenhoven/warmenhoven/pr/apple-so-entitled
apple: add camera entitlements
2025-03-04 07:31:57 -08:00
LibretroAdmin fe11b3ffb1 Merge pull request #17654 from warmenhoven/warmenhoven/pr/apple-build
apple: by default build on apple silicon builder
2025-03-04 07:31:38 -08:00
Eric Warmenhoven 8c729fd029 apple: enable JoeMatt's avfoundation-based camera driver 2025-03-03 23:20:59 -05:00
Eric Warmenhoven 6c7b16df3c macos: compile with -flto 2025-03-03 22:51:16 -05:00
Eric Warmenhoven c1806ff994 apple: add camera entitlements 2025-03-03 22:46:43 -05:00
Eric Warmenhoven 6dcb0b22f2 apple: by default build on apple silicon builder 2025-03-03 21:54:46 -05:00
github-actions 58752d0755 Fetch translations from Crowdin 2025-03-04 00:15:10 +00:00
github-actions 6df846dc61 Fetch translations from Crowdin 2025-03-03 00:14:58 +00:00
LibretroAdmin 647bba1125 Merge pull request #17648 from warmenhoven/warmenhoven/pr/webdav-301
webdav: workaround for getting 301 redirects
2025-03-02 15:57:32 -08:00
LibretroAdmin fd5543cc2d Merge pull request #17651 from zoltanvb/offset_sublabel_fix
Update viewport bias sublabels.
2025-03-02 15:57:22 -08:00
LibretroAdmin d862f87c28 Merge pull request #17652 from JesseTG/jtg/libavdevice-camera-driver
Add a ffmpeg-based camera driver
2025-03-02 15:57:13 -08:00
Jesse Talavera e9e12eed66 Move a variable declaration up to adhere to C89 rules 2025-03-02 17:00:40 -05:00
Jesse Talavera 80044dd282 Clarify a comment 2025-03-02 17:00:24 -05:00
zoltanvb 6294854990 Update viewport bias sublabels. 2025-03-02 16:29:16 +01:00
Eric Warmenhoven 962cc9b033 webdav: workaround for getting 301 redirects 2025-03-01 22:53:11 -05:00
Joe Osborn f2a86f34d1 Remove unnecessary rigmarole around importing the script as a blob (#17642) 2025-03-01 17:34:05 -08:00
sonninnos 23170b82ec Add MIDI device menu item dropdowns (#17645) 2025-03-01 17:33:46 -08:00
github-actions 7cb27c965d Fetch translations from Crowdin 2025-03-02 00:16:20 +00:00
sonninnos 5c92055aef Fix cloud sync driver menu item refresh 2025-03-01 11:47:53 +02:00
Viačasłaŭ 6bfe3fcb43 (Win32) Unrevert TTS fallback (#17643)
Originally implemented in 274d47f
2025-03-01 01:04:29 -08:00
sonninnos 6a717fd44c Better way to count dropped frames 2025-03-01 10:40:59 +02:00
github-actions b3e2d5213d Fetch translations from Crowdin 2025-03-01 00:17:26 +00:00
Joseph C. Osborn c29cd046d0 Fixes asset paths/double bundle path for web player 2025-02-28 18:44:31 +01:00
sonninnos aaa7b272aa XMB: Gray theme color correction 2025-02-28 08:44:37 +02:00
zoltanvb 31de40b32a Align GDI feature reporting with actual status (#17635)
Value of HAVE_GDI is always 1 unless explicitly disabled, however
it only takes effect on Windows platforms. Actual functionality
is behind multiple #ifdef's, but the feature indication was showing
up even on platforms like Linux.
2025-02-27 20:15:43 -08:00
sonninnos b62cc87e84 Turbo Fire overhaul (#17633) 2025-02-27 20:15:22 -08:00
Joe Osborn 7a7c208c85 Only read first frame of inputs under new movie formats (#17634) 2025-02-27 20:15:14 -08:00
zoltanvb 9970d45367 Make autoconfig failure notifications optional. (#17636)
Introduce a new setting that controls autoconfiguration messages
when the config fails, either with fallback or without.
2025-02-27 20:15:06 -08:00
Joe Osborn fa6d622031 Cancel bootup main loop before starting regular mainloop (#17638) 2025-02-27 20:14:57 -08:00
zoltanvb 8396d8e626 Fix bluetooth option ifdef (#17639) 2025-02-27 20:14:49 -08:00
github-actions e9dd1731ee Fetch translations from Crowdin 2025-02-28 00:14:51 +00:00
github-actions 62f32e5f63 Fetch translations from Crowdin 2025-02-26 00:15:19 +00:00
github-actions e16953b9af Fetch translations from Crowdin 2025-02-25 00:14:55 +00:00
Joe Osborn c413bcc626 Threaded emscripten fixes (#17614)
* Actually read CLI args in emscripten

* Fix fetchfs manifest parsing, increase download chunk size

The chunk size should probably be made a parameter in the future.  The
larger chunk size trades longer hitches for fewer hitches.

* Add exec command driver and API functions for emscripten.

Under WASMFS, stdin/stdout can't be customized the way they can with
the JS FS implementation.  Also, this approach frees up stdin/stdout
and simplifies interaction with the command interface for web embedders.

* fixup upload paths, show use of new emscripten cmd interface

* Add JS library function names to EXPORTS as well as EXPORTED_FUNCTIONS for older emsdk versions
2025-02-24 09:25:05 -08:00
github-actions 55b59262b9 Fetch translations from Crowdin 2025-02-24 00:15:28 +00:00
Jesse Talavera e7142903ea Use av_dict_get instead of av_dict_iterate
- The latter seems to be newer, and therefore not available in all common installations of libavdevice
2025-02-23 15:26:58 -05:00
Bernhard Schelling b725de086e Fix netplay when using core netpacket interface after a recent change made for cheevos (#17619) 2025-02-23 04:26:02 -08:00
刘皓 b3376716f2 Add declaration for libnx_apply_overclock() in menu/menu_driver.c (#17620) 2025-02-23 04:25:49 -08:00
刘皓 c9ed5df025 Add PS3 build to GitHub Actions (#17621) 2025-02-23 04:25:39 -08:00
Eric Warmenhoven 84eb4f32e0 Small adjustment to coordinating mouse inputs (#17622) 2025-02-23 04:25:29 -08:00
sonninnos 4de34208ed Ozone: Messagebox font fix 2025-02-22 22:31:47 +02:00
github-actions b5fd91972c Fetch translations from Crowdin 2025-02-22 00:13:39 +00:00
sonninnos 3c1a1a44ae Vulkan: Add adaptive vsync support (#17611) 2025-02-21 12:34:32 -08:00
Eric Warmenhoven f7d235f2d6 update core info list after updating core info files (#17613) 2025-02-21 12:34:06 -08:00
Hed0nium bc1bc2431d Update AUTHORS.h: Edit name (#17610) 2025-02-21 12:33:48 -08:00
Eric Warmenhoven e26b3bca4e allow mouse input while mouse overlay is active (#17615) 2025-02-21 12:33:27 -08:00
Eric Warmenhoven 273eb7bd7b fix sublabel on "add to playlist" in quick menu (#17616) 2025-02-21 12:33:18 -08:00
Joe Osborn 9005e1b9fe Use correct key into message data to get last asset fetch time (#17607) 2025-02-21 07:40:49 +01:00
Jesse Talavera 527b977587 Simplify ffmpeg backend selection 2025-02-20 16:35:06 -05:00
Jesse Talavera dd49f8fa0d Remove camera device list functions from camera drivers
- Those will come in a future PR instead
2025-02-20 15:42:02 -05:00
sonninnos 61de3a3260 Integer scaling improvements (#17606) 2025-02-20 19:51:19 +02:00
Jesse Talavera 63d965753f Merge branch 'refs/heads/master' into jtg/libavdevice-camera-driver
# Conflicts:
#	camera/camera_driver.c
#	configuration.c
2025-02-20 11:28:54 -05:00
sonninnos fce67c1fab Use core fps instead of display rate when counting dropped frames (#17605) 2025-02-20 14:10:08 +02:00
sonninnos b5756a1b20 Prevent crash when Main Menu is empty (#17604) 2025-02-20 14:09:47 +02:00
github-actions 09a59edd6b Fetch translations from Crowdin 2025-02-20 00:14:51 +00:00
Joe Osborn 56014a27d6 Enable pthreads on Emscripten (#17586)
* workerized RA

* Workerized (non-async) web player, using OPFS

This patch eliminates the need for asyncify and uses modern filesystem
APIs instead of the deprecated, unmaintained BrowserFS.

This is a WIP patch because it won't fully work until these two
Emscripten PRs land and are released:

https://github.com/emscripten-core/emscripten/pull/23518
https://github.com/emscripten-core/emscripten/pull/23021

The former fixes an offscreen canvas context recreation bug, and the
latter adds an equivalent to BrowserFS's XHR filesystem (but without
the hazardous running-XHR-on-the-main-thread problem).

The biggest issue is that local storage of users who were using the
old version of the webplayer will be gone when they switch to the new
webplayer.  I don't have a good story for converting the old BrowserFS
IDBFS contents into the new OPFS filesystem (the move is worth doing
because OPFS supports seeking and reading only bits of a file, and
because BrowserFS is dead).

I've kept around the old libretro webplayer under
pkg/emscripten/libretro-classic, and with these make flags you can
build a non-workerized RA that uses asyncify to sleep as before:

make -f Makefile.emscripten libretro=$CORE HAVE_WORKER=0 HAVE_WASMFS=0 PTHREAD=0 HAVE_AL=1

I also moved the default directory for core content on emscripten to
not be a subdirectory of the local filesystem mount, because it's
confusing to have a subdirectory that's lazily fetched and not
mirrored to the local storage.  I think it won't impact existing users
of the classic web player because they already have a retroarch.cfg in
place.

* Get fetchfs working without manifest support

* makefile fixes

* fix scaling, remove zip dependency

* Support asset/cheats/etc downloaders for emscripten

- Add http transfer support for emscripten
  - At the task_http level, not the net_http level --- so no netplay
    or webdav.
- Change default paths to be more like other platforms
- Gives us smaller bundles and a faster boot time
- Had to work around a task queue bug on Emscripten
  - I made the smallest possible change to do it, but it may be better
    to fix in rthread.c

* Load an emscripten file_packager package on first run

If no ozone assets are present, load a libretro_minimal package
created using Emscripten's built-in file packager.

* updated readme, removed indexer from wasmfs libretro-web

* Put back zip dependency, load asset bundle into opfs on first run

* fix upload path

* Remove unused function

* easy testing setup for two multithreaded conditions

1. make PROXY_TO_PTHREAD=1 (slower)
2. make PROXY_TO_PTHREAD=0 (bad audio, because doesn't sleep in
openal.c)

* Remove condition on sleep in openal

also make input_driver check existence of drv->axis, drv->button
before calling them.

* Fix resizing under EGL

* Don't force config file path on emscripten

* Add time.h include to netplay, default HAVE_NETPLAYDISCOVERY to 0

* Remove nearly all proxied joypad calls under emscripten

* Fix file uploads under firefox

* Fix safari API uses, but Safari still hangs in OPFS filesystem mount

I think this can be fixed by moving the backend creation off the main
thread.

* Move filesystem init into emscripten C entry point

* Setup filesystems off of main thread

* re-set default player to async

Also improve Safari compatibility under proxy-to-pthread condition

* Safari upload file fixes

* Remove some excess prints

* Fix typo
2025-02-20 00:59:25 +01:00
Eric Warmenhoven 6ec4ffb2fa apple, mouse overlay: fix relative mouse deltas (#17602)
makes sure that relative mouse movement deltas are based on last poll,
not last state check; checking state should not reset state
2025-02-20 00:59:14 +01:00
sonninnos 6c08bf003b XMB: Title replace '/' with '-' instead of ' ' (#17603) 2025-02-19 21:49:55 +02:00
sonninnos 8f3347d9ab GLUI: Limit save state thumbnail size (#17600) 2025-02-19 17:06:01 +02:00
sonninnos b5e01422e1 XMB: Trigger bg-image load on theme change (#17599) 2025-02-19 17:05:34 +02:00
Eric Warmenhoven 8bf7e76f45 apple: enable corelocation location driver (#17595) 2025-02-19 04:04:17 +01:00
github-actions d818cb8fe1 Fetch translations from Crowdin 2025-02-19 00:14:43 +00:00
Eric Warmenhoven 0ed66a79f1 glui: fix add to playlist icon in quick menu (#17596) 2025-02-18 22:55:04 +01:00
sonninnos e4fe551924 Gray Dark+Light theme adjustments (#17597) 2025-02-18 20:47:10 +02:00
Steve Cox 087d11b750 for iOS: updated app icon to additional iconset (#17582) 2025-02-18 17:13:13 +01:00
Eric Warmenhoven fe3e1b56b7 camera: don't reinit when core sets av info; don't poll if not allowed (#17588) 2025-02-18 17:12:18 +01:00
Joe Mattiello 9438d70ed9 Add CoreLocation location driver for macOS and iOS (#17591)
Signed-off-by: Joseph Mattiello <[email protected]>
2025-02-18 17:12:08 +01:00
sonninnos 73abaddd9c GLUI: Add save state thumbnails (#17592) 2025-02-18 17:11:46 +01:00
Tomáš Kelemen cd85a4dbf2 bluetoothctl: use two calls to disconnect/remove device (#17593)
the previous method does not remove the pairing of the selected device,
user must remove the pairing manually by modifying filesystem.

change tested on real system (Lakka-RPi4.aarch64).
2025-02-18 17:11:36 +01:00
Bernhard Schelling 754dbe37cc Color the notification icon by message category (#17573)
Use yellow for warnings and red for errors, keep the current blue for everything else.
Additionally, flip the 'i' info icon upside down for warnings and errors so it becomes a '!' exclamation mark icon.
2025-02-17 01:38:16 +01:00
Eric Warmenhoven cf867395f8 apple: enable midi driver in macos/ios builds (#17580) 2025-02-17 01:38:07 +01:00
github-actions 660cf1f449 Fetch translations from Crowdin 2025-02-17 00:16:46 +00:00
Steve Cox d58394b4e6 for iOS: update Launch Screen to match icon & UI color scheme; add subtle drag shadow to app icon (#17574)
* for iOS: update launch screen to match UI

* use higher resolution invader

* adjust Y constraint (diff invader body proportion)

* for iOS: update Launch Screen to match app icon/ui

* update iOS icon—match shadow on other platforms

* icon source svgs to media folder for others’ reuse

* iOS App Icon revision, fix asset index mismatch
2025-02-16 23:12:33 +01:00
github-actions 73bc4092a1 Fetch translations from Crowdin 2025-02-16 00:15:52 +00:00
Joe Mattiello eb2928eb0c CoreMIDI add driver (#17569)
CoreMIDI install into build

Signed-off-by: Joseph Mattiello <[email protected]>
2025-02-15 18:57:09 +01:00
github-actions 83c0c1fc43 Fetch translations from Crowdin 2025-02-15 00:14:14 +00:00
github-actions b4c15668bd Fetch translations from Crowdin 2025-02-14 00:14:34 +00:00
sonninnos 01a2da47a6 Ozone: Messagebox background asset fix (#17566) 2025-02-13 09:28:59 +01:00
Eric Warmenhoven 65e1436a23 iOS: set up shared gl context correctly (#17565) 2025-02-13 09:06:14 +01:00
github-actions a6ea47df15 Fetch translations from Crowdin 2025-02-13 00:14:41 +00:00
LibretroAdmin 8a22b87101 Revert rich_label changes 2025-02-12 17:46:32 +01:00
sonninnos 106dc5d8b7 GLUI: Allow fullscreen thumbnail browsing (#17562) 2025-02-12 16:50:17 +01:00
LibretroAdmin 135a228ac1 menu_entry - rich_label gets merged into label - make struct smaller 2025-02-12 15:17:58 +01:00
LibretroAdmin c864c50c9f (Menu) Cleanups 2025-02-12 14:52:17 +01:00
LibretroAdmin ebd9abb5f6 Get rid of sublabel_cache 2025-02-12 14:25:12 +01:00
LibretroAdmin 824209178c setting_list - remove unused original_value 2025-02-12 13:56:21 +01:00
LibretroAdmin 8e2e2cdbac Style nits 2025-02-12 13:06:40 +01:00
Lucas Cañero 64c7faf11b Revert "enable CloudSync on libnx (switch) (#17516)" (#17561)
This reverts commit b18a6b644b.
2025-02-12 12:10:12 +01:00
LibretroAdmin a167fb1c2f Unused variables cleanup 2025-02-12 11:59:22 +01:00
LibretroAdmin d2d0e7a17d Style nits 2025-02-12 10:35:04 +01:00
LibretroAdmin f6006ae6ca Style nits 2025-02-12 10:17:35 +01:00
sonninnos bdf2e9407d Label rewording and deprecation removal (#17560) 2025-02-12 09:52:12 +01:00
LibretroAdmin 0d57b59cd3 Another fix 2025-02-12 01:43:16 +01:00
LibretroAdmin 6556edd18e Fix remap screens 2025-02-12 01:32:26 +01:00
github-actions 49e625e750 Fetch translations from Crowdin 2025-02-12 00:14:33 +00:00
LibretroAdmin 366612fb82 Revert "Fix some string appending"
This reverts commit 65b9ea4e76.
2025-02-11 23:48:12 +01:00
sonninnos 2073b8abfc XMB: Icon thumbnail improvements (#17558) 2025-02-11 23:09:47 +01:00
LibretroAdmin 65b9ea4e76 Fix some string appending 2025-02-11 23:08:55 +01:00
ScoochAside 9f5bc9c318 Fix issue #17438 (#17557) 2025-02-11 22:45:44 +01:00
LibretroAdmin c62de90430 Cleanups 2025-02-11 22:45:16 +01:00
LibretroAdmin 064372d787 Get rid of action_title_cache 2025-02-11 21:21:14 +01:00
Eric Warmenhoven 422a4310f3 Add To Playlist from quickmenu can't rely on the current playlist (#17556) 2025-02-11 21:01:42 +01:00
LibretroAdmin 5372f3fe84 Change signature of get_representation callbacks 2025-02-11 21:01:04 +01:00
Eric Warmenhoven b0999db885 properly initialize variable (#17555) 2025-02-11 16:09:05 +01:00
LibretroAdmin 71a4ff07e3 (Qt) Cleanups 2025-02-11 15:25:05 +01:00
LibretroAdmin 76233f8959 on/off labels no longer cached - language switches now immediately
change the on/off labels as well - and binary size is smaller
2025-02-11 12:44:03 +01:00
LibretroAdmin 653c6ed1e6 Cleanup 2025-02-11 11:58:57 +01:00
LibretroAdmin aadb290cc4 (Qt) More avoidance of unneeded heap allocations 2025-02-11 11:23:46 +01:00
LibretroAdmin 6c7522fef8 (Qt) Prevent some unneeded string heap allocations 2025-02-11 10:58:48 +01:00
LibretroAdmin 0f5a990141 Cleanups 2025-02-11 10:28:16 +01:00
LibretroAdmin 98681ace4a Cleanups - less settings pointer grabbing 2025-02-11 10:12:12 +01:00
LibretroAdmin 6559f4499c Cleanups - less settings_t pointer passing 2025-02-11 09:38:54 +01:00
LibretroAdmin 316077a135 Cleanups 2025-02-11 09:24:50 +01:00
github-actions 77c0950a1b Fetch translations from Crowdin 2025-02-11 00:15:00 +00:00
LibretroAdmin a9a9075f5f (Qt) Cleanups 2025-02-10 23:06:32 +01:00
zoltanvb cc9ff9870f Create SECURITY.md (#17553) 2025-02-10 22:07:57 +01:00
LibretroAdmin 9489dd05bc Cleanups 2025-02-10 18:45:23 +01:00
LibretroAdmin 56d3042efd Change db_crc size back 2025-02-10 17:14:13 +01:00
LibretroAdmin 7a7c4df2a1 Settings cleanups 2025-02-10 17:12:02 +01:00
LibretroAdmin ef7b9830db (cheat_manager) No more dependency on configuration.h 2025-02-10 16:48:56 +01:00
LibretroAdmin d766a5b71e Cleanups 2025-02-10 16:31:30 +01:00
sonninnos afd290e289 XMB: Appearance menu cleanup (#17549) 2025-02-10 16:16:56 +01:00
LibretroAdmin 1a561ea0c2 Less passing around of settings_t pointer 2025-02-10 16:11:18 +01:00
LibretroAdmin ddd7ff2d33 get rid of some settings_t pointer passing 2025-02-10 15:47:18 +01:00
LibretroAdmin 50a0e17539 (Menu/XMB/Ozone) Less settings_t pointer grabbing 2025-02-10 15:13:59 +01:00
sonninnos 1a5e255c1b Playlists menu label capitalization (#17551) 2025-02-10 15:07:21 +01:00
LibretroAdmin 1300dc4ef4 Do all netplay state checks upfront in runloop_iterate 2025-02-10 14:11:46 +01:00
LibretroAdmin c57c4fbd1a Style nits 2025-02-10 13:59:25 +01:00
Steve Cox 1170373494 update tvOS “Top Shelf” image (#17543) 2025-02-10 11:52:38 +01:00
sonninnos 87b3032139 XMB: Color tuning (#17547) 2025-02-10 11:52:08 +01:00
sonninnos c1077a5ef5 RGUI: Thumbnail fixes (#17546) 2025-02-10 11:51:56 +01:00
github-actions 5d3ff55b86 Fetch translations from Crowdin 2025-02-10 00:14:31 +00:00
sonninnos 372396d5b6 Add separate visibility toggle for playlist tabs (#17545) 2025-02-10 00:45:50 +01:00
sonninnos ad72af9d40 Enable perfcnt if saved in conf (#17544) 2025-02-10 00:45:32 +01:00
LibretroAdmin d34cfcdfef iSilence warnings 2025-02-09 22:26:36 +01:00
LibretroAdmin c4a9a3d3a2 Don't redefine menu_st again 2025-02-09 21:53:55 +01:00
LibretroAdmin 4d9af08881 Buildfix for platforms where HAVE_NETWORKING is not defined 2025-02-09 21:52:10 +01:00
LibretroAdmin 584ea45837 Less state grabbing between runloop_iterate and runloop_check_state 2025-02-09 21:39:05 +01:00
LibretroAdmin 72efcab3e7 Silence more warnings 2025-02-09 21:11:35 +01:00
LibretroAdmin 63704efd59 One less extraneous netplay check in runloop_check_state 2025-02-09 20:43:55 +01:00
LibretroAdmin afd73998e6 Silence warnings 2025-02-09 20:33:04 +01:00
LibretroAdmin 9267771422 * Less passing around of settings pointer
* Less calls to netplay_driver_ctl in runloop_iterate
2025-02-09 20:12:10 +01:00
LibretroAdmin 4faed7a84f Less passing around of settings_t pointer 2025-02-09 18:56:50 +01:00
LibretroAdmin f9fa557a95 Some refactors to make some video driver functions less dependent
on passing around the settings_t pointer
2025-02-09 18:23:42 +01:00
LibretroAdmin f71181d1c1 * Style nits
* task_database - db_crc allocated variable does not need to be of size PATH_MAX_LENGTH size
2025-02-09 17:49:44 +01:00
LibretroAdmin db99fe098d Simplify string_list_new_special 2025-02-09 16:58:11 +01:00
LibretroAdmin 91aa8034b1 Style nits/conventions 2025-02-09 16:43:51 +01:00
LibretroAdmin 0be8fe8e3f Style nits 2025-02-09 16:07:15 +01:00
LibretroAdmin 376e4b307c Style nits 2025-02-09 15:40:45 +01:00
sonninnos 0d46073bb9 Add mute on rewind option (#17541) 2025-02-09 14:24:14 +01:00
sonninnos 81df9b0491 GLUI: Also set navigation with long press (#17537) 2025-02-09 06:11:28 +01:00
sonninnos 3bf04c6034 GLUI: Fix null label icon (#17538) 2025-02-09 06:11:21 +01:00
sonninnos 2c06049a2f Allow CLI --entryslot fallback to normal states (#17539) 2025-02-09 06:11:13 +01:00
github-actions 58d7879e1d Fetch translations from Crowdin 2025-02-09 00:14:47 +00:00
sonninnos 677e627278 GLUI: Touch related fixes (#17536) 2025-02-08 21:19:24 +01:00
Eric Warmenhoven 5471a9ebfe ios: jump back to selected item after closing content (#17534) 2025-02-08 20:32:41 +01:00
sonninnos 4cbfa3ad47 GLUI: Use tab selection remember option (#17532) 2025-02-08 11:56:40 +01:00
github-actions 17bc1eba3f Fetch translations from Crowdin 2025-02-08 00:13:29 +00:00
sonninnos 4232700de5 GLUI: Fix menu back to switch tabs like other drivers (#17529) 2025-02-07 11:43:45 +01:00
github-actions 3f70ac54a5 Fetch translations from Crowdin 2025-02-07 00:14:43 +00:00
Eric Warmenhoven 4c8da979a5 fix a couple minor warnings (#17526) 2025-02-06 20:22:36 +01:00
sonninnos bb9f07569c Video stats unit alignments (#17524) 2025-02-06 04:49:20 +01:00
Eric Warmenhoven 92c3800731 apple: include b2 core in App Store builds (#17525) 2025-02-06 04:49:08 +01:00
Viačasłaŭ 5b9d5a9086 Buildfix for Debian 12 (#17522) 2025-02-06 02:10:06 +01:00
github-actions 187463d355 Fetch translations from Crowdin 2025-02-06 00:14:50 +00:00
sonninnos 998200793d File Browser settings + Directory list cleanup (#17519) 2025-02-05 07:19:50 +01:00
sonninnos 94d5223880 Random selector Explore View fix (#17518) 2025-02-04 20:29:20 +01:00
sonninnos ea22c7c16c Main Menu unifications between drivers (#17517) 2025-02-04 16:32:37 +01:00
Lucas Cañero b18a6b644b enable CloudSync on libnx (switch) (#17516) 2025-02-04 14:24:47 +01:00
David Demelier f73df57a1a Fix non-integer cast to pthread_t (#17512) 2025-02-03 15:21:07 +01:00
Viačasłaŭ 359258a1b5 Add missing drivers to configuration (#17509)
`camera_pipewire` and `record_wav`
2025-02-03 09:04:23 +01:00
Viačasłaŭ 65014a46b4 Add PipeWire camera driver (#17507) 2025-02-03 04:30:13 +01:00
Viačasłaŭ 45586e83da (PipeWire) Pass the new_rate to the audio driver (#17508)
Set the supported sample rate after initialization.
Also a few minor fixes.
2025-02-03 04:30:02 +01:00
github-actions 9b3b75aa93 Fetch translations from Crowdin 2025-02-03 00:14:45 +00:00
neil4 05f75b83c1 Overlays: Improve Analog Recentering (#17505)
- Use closest point on zone perimeter if first touch is outside zone
2025-02-02 01:27:18 +01:00
Eric Warmenhoven 089a51f674 apple: enable emulated mailbox (#17506) 2025-02-02 01:22:18 +01:00
Eric Warmenhoven 212ae55cfe glui: extremely minor refactor. (#17501) 2025-02-01 04:57:46 +01:00
Rob Loach 7ba205ba34 common: Move audio_mixer_sound user_data to above the types union 2025-01-31 16:29:18 -05:00
Rob Loach 355b277c11 common: Add a user_data pointer to audio_mixer_sound (#17488) 2025-01-31 03:41:07 +01:00
LibretroAdmin 2870a0a8ad Revert "Workerized emscripten retroarch (WIP) (#17484)" (#17492)
This reverts commit cacd5a9a23.
2025-01-30 21:35:58 +01:00
Joe Osborn cacd5a9a23 Workerized emscripten retroarch (WIP) (#17484)
* workerized RA

* Workerized (non-async) web player, using OPFS

This patch eliminates the need for asyncify and uses modern filesystem
APIs instead of the deprecated, unmaintained BrowserFS.

This is a WIP patch because it won't fully work until these two
Emscripten PRs land and are released:

https://github.com/emscripten-core/emscripten/pull/23518
https://github.com/emscripten-core/emscripten/pull/23021

The former fixes an offscreen canvas context recreation bug, and the
latter adds an equivalent to BrowserFS's XHR filesystem (but without
the hazardous running-XHR-on-the-main-thread problem).

The biggest issue is that local storage of users who were using the
old version of the webplayer will be gone when they switch to the new
webplayer.  I don't have a good story for converting the old BrowserFS
IDBFS contents into the new OPFS filesystem (the move is worth doing
because OPFS supports seeking and reading only bits of a file, and
because BrowserFS is dead).

I've kept around the old libretro webplayer under
pkg/emscripten/libretro-classic, and with these make flags you can
build a non-workerized RA that uses asyncify to sleep as before:

make -f Makefile.emscripten libretro=$CORE HAVE_WORKER=0 HAVE_WASMFS=0 PTHREAD=0 HAVE_AL=1

I also moved the default directory for core content on emscripten to
not be a subdirectory of the local filesystem mount, because it's
confusing to have a subdirectory that's lazily fetched and not
mirrored to the local storage.  I think it won't impact existing users
of the classic web player because they already have a retroarch.cfg in
place.

* Get fetchfs working without manifest support

* makefile fixes
2025-01-30 19:58:18 +01:00
Eric Warmenhoven 4b5f782fe4 iOS: Fix crash during scanning (#17489) 2025-01-30 19:57:19 +01:00
Eric Warmenhoven fd8ba559d7 net_http: fix memleak (#17487) 2025-01-30 04:06:59 +01:00
github-actions 97803f5627 Fetch translations from Crowdin 2025-01-30 00:14:14 +00:00
BinBashBanana ed1810de86 Emscripten improvements (#17422) 2025-01-29 05:29:16 +01:00
github-actions 104561e7aa Fetch translations from Crowdin 2025-01-29 00:14:29 +00:00
Eric Warmenhoven 12f66bebb7 net_http: expire dns lookup failures more quickly (#17481) 2025-01-28 23:27:51 +01:00
Eric Warmenhoven d00ee5a70b net_http: handle redirects (#17482) 2025-01-28 23:27:28 +01:00
Eric Warmenhoven b982ff64c2 cheevos: fix crash entering achievements in quick menu when no client (#17472) 2025-01-26 04:10:25 +01:00
github-actions c11d9bee2e Fetch translations from Crowdin 2025-01-25 00:13:19 +00:00
zoltanvb 8814eb3eb6 Changes up to 2025-01-24 (#17469) 2025-01-24 23:49:41 +01:00
LibretroAdmin 120465d676 Fix runahead.c 2025-01-24 19:37:28 +01:00
Eric Warmenhoven 04cdf0aa4d apple: acceleration should include gravity (#17467) 2025-01-24 18:05:32 +01:00
github-actions 81e443c4cf Fetch translations from Crowdin 2025-01-24 00:14:32 +00:00
Eric Warmenhoven 72df261ed0 Fix opening file inside archive with core detection (#17461) 2025-01-23 18:56:11 +01:00
Eric Warmenhoven d2eb49ccbc net_http refactor (#17460)
* net_http: refactor net_http_new

The goal is to move calls to getaddrinfo() and connect() into
net_http_update(). This will make it possible for them to be replaced
with non-blocking alternatives later.

The net_http calling pattern right now allows callers to create the
http_connection_t, call net_http_new() which creates the http_t from
the http_connection_t, free the http_connection_t, and then start
calling net_http_update(). In order to preserve that, the http_t needs
to copy the values out of the http_connection_t on create. This also
preserves the http_connection_t values instead of freeing them, so the
connection would be able to be used later.

* net_http: implement dns cache

* net_http: separate out address resolution, connect, and request send

* net_http: perform getaddrinfo on separate thread

* net_http: implement basic connection pool

* net_http: refactor receive calls to read faster, do fewer reallocs

* net_http: build fix for platforms without SSL

* net_http: build fix for non-griffin builds

* net_http: build fix for non-threaded platforms
2025-01-23 01:29:47 +01:00
github-actions 14a28b81af Fetch translations from Crowdin 2025-01-23 00:14:36 +00:00
Mathieu Poliquin aa49c05524 Fix game_ai_lib.so loading path in game_ai.c (#17456) 2025-01-22 20:43:11 +01:00
Eric Warmenhoven 0903eead06 tvos: fix fetching refresh rate on tvos 13/14 (#17455) 2025-01-22 20:43:02 +01:00
MrHuu c276577b52 (3DS) Add unique ID's (#17459)
- Anarch
- Ardens
- Dice
- DoubleCherryGB
- Fbneocps12
- Fbneoneogeo
- Numero
- Tamalibretro
- Uw8
2025-01-22 20:42:23 +01:00
github-actions 5c53570446 Fetch translations from Crowdin 2025-01-22 00:14:25 +00:00
Eric Warmenhoven f1e3b83d26 macos: reset keyboard state when focus is lost (#17453) 2025-01-21 22:31:24 +01:00
Mathieu Poliquin 66e23fca79 New feature: Override player input with machine learning models (#17407)
* Add dummy game ai subsystem

* First working prototype of a machine learning model that can override player input

* Update README.md

* Update README.md

* Fix loading path on Windows

* Change ai override to player 2

* Added quick menu show game ai option

* Implemented Quick Menu entry for Game AI options

* Redirect debug logs to retroarch log system + properly support player override

* Added support to use framebuffer as input to the AI

* Added pixel format parameter to API

* Fix game name

* code clean-up of game_ai.cpp

* Update README.md - Windows Build

* Update README.md

* Update README.md

* Update README.md

* Update config.params.sh

turn off GAME_AI feature by default

* Fix compile error in menu_displaylist.c

* Add missing #define in menu_cbs_title.c

* Added new game_ai entry in griffin_cpp

* Remove GAME_AI entry in  msg_hash_us.c

* Fix compile error in menu_displaylist.h

* Removed GAME AI references from README.md

* Fixes coding style + add GameAI lib API header

* Convert comment to legacy + remove unused code

* Additional coding style fixes to game_ai.cpp

* Fix identation issues in game_ai.cpp

* Removed some debug code in game_ai.cpp

* Add game_ai_lib in deps

* Replace assert with retro_assert

* Update Makefile.common

* Converting game_ai from cpp to c. First step.

* Convert game_ai from CPP to C. STEP 2: add C function calls

* Convert game_ai from CPP to C. Final Step

* Added shutdown function for game ai lib

* Update game_ai_lib README

* Fix crash when loading/unloading multiple games
2025-01-21 13:05:43 +01:00
sonninnos 3797d4deb6 Fix latency header in video stats (#17451) 2025-01-21 04:31:13 +01:00
LibretroAdmin a49196ee30 (menu_cbs_get_value.c) Put protective guards around strlcpy copies
into s2
2025-01-21 03:57:08 +01:00
LibretroAdmin e9afd53351 Fix crash that can happen in menu_action_setting_disp_set_label_entry 2025-01-21 03:50:46 +01:00
Viačasłaŭ f84f829957 (PipeWire) reset playback buffer on stopping (#17449)
* Fix compile warnings
2025-01-21 02:40:15 +01:00
sonninnos 1c724f5355 RGUI: 'Use This Directory' cleanup (#17450) 2025-01-21 02:02:55 +01:00
github-actions 54debca4a3 Fetch translations from Crowdin 2025-01-21 00:14:16 +00:00
LibretroAdmin b443d9974a Cleanup 2025-01-21 00:17:18 +01:00
LibretroAdmin 1ecd83b0ab Change returntype of random to size_t 2025-01-20 23:59:09 +01:00
Eric Warmenhoven f55d028ae5 cloud sync: workaround bug of requests being duplicated (#17448) 2025-01-20 22:39:23 +01:00
Daniel Worley 565e1c7d2d UWP: Fix slang shader compilation (#17447) 2025-01-20 22:10:57 +01:00
Eric Warmenhoven ef4512dd02 macOS: ensure bundled assets get extracted properly (#17444) 2025-01-20 21:38:29 +01:00
Eric Warmenhoven 6fda41900d apple: include git hash in TestFlight message (#17445) 2025-01-20 21:38:20 +01:00
Viačasłaŭ d3a879638d Fix PipeWire freezing (#17446)
* Fix freezing after restarting pipewire service
* Rewrite the logic for starting/stopping stream
* Reduce boilerplate code
2025-01-20 21:38:11 +01:00
sonninnos 66921e8549 RGUI: Entry value cleanup (#17443) 2025-01-20 20:38:40 +01:00
sonninnos 391ba55b81 Add playlist random selector (#17441)
* Add playlist random selector

* Buildfix attempt

* ORBIS buildfix attempt
2025-01-20 18:25:41 +01:00
Apteryks 52320dfaa8 * platform: Honor the LIBRETRO_CHEATS_DIRECTORY environment variable. (#17440)
* frontend/drivers/platform_unix.c
(libretro_cheats_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_CHEATS to the value of
the LIBRETRO_CHEATS_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.
* configuration.c (config_load_file)
<libretro_cheats_directory>: New variable. Use the values of
the LIBRETRO_CHEATS_DIRECTORY environment variables instead of their
corresponding configured values, when set.
* docs/retroarch.6: Document it.
* retroarch.c (retroarch_print_help): Extend help text.
2025-01-20 15:08:45 +01:00
LibretroAdmin 4020326f58 Style nits 2025-01-20 04:37:27 +01:00
LibretroAdmin 350e4faf79 Fix some warnings 2025-01-20 01:30:27 +01:00
github-actions 1f2b299e00 Fetch translations from Crowdin 2025-01-20 00:19:46 +00:00
LibretroAdmin a6c8c6c7ef Cleanups 2025-01-19 23:57:15 +01:00
LibretroAdmin 3549d8378c Style nits 2025-01-19 22:15:34 +01:00
LibretroAdmin 13bc41facc Buildfixes 2025-01-19 20:37:04 +01:00
LibretroAdmin cde82f532c * Naming convention changes for variable names/function arguments
* Try to fit lines within ANSI 80-char limit
2025-01-19 20:19:14 +01:00
Apteryks 274cd419fa Honor the LIBRETRO_DATABASE_DIRECTORY environment variable. (#17431)
* Partially revert a change made in 69ceb95ddc.

The change caused the 'libretro_directory' config option to always
revert to the default value, which was not intended behavior.

Reported-by: Michael Cook

* platform: Honor the LIBRETRO_DATABASE_DIRECTORY environment variable.

This is a follow-up to commit 69ceb95ddc.

* frontend/drivers/platform_unix.c
(libretro_database_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_DATABASE to the value of
the LIBRETRO_DATABASE_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.
* configuration.c (config_load_file)
<libretro_database_directory>: New variable. Use the values of
the LIBRETRO_DATABASE_DIRECTORY environment variables instead of their
corresponding configured values, when set.
* docs/retroarch.6: Document.
* retroarch.c (retroarch_print_help): List supported environment
variables, and cross-reference the man page.
2025-01-19 15:25:28 +01:00
github-actions 5db9b7f8c9 Fetch translations from Crowdin 2025-01-19 00:15:40 +00:00
zoltanvb 976cb288c3 Update font size sublabel. (#17435) 2025-01-18 22:45:00 +01:00
Eric Warmenhoven 68b3e5d8e0 iOS: fix "clean playlist" (#17434) 2025-01-18 17:34:49 +01:00
LibretroAdmin 445547f00a Remove unused variable warning 2025-01-18 04:09:36 +01:00
LibretroAdmin 9bff7168e8 (input_driver.c) Style nits 2025-01-18 03:11:24 +01:00
sonninnos aefadc04c7 Analog to Digital refactor (#17429) 2025-01-18 02:19:01 +01:00
LibretroAdmin 984d591573 Silence some warnings 2025-01-18 01:48:33 +01:00
github-actions cf0ec85c35 Fetch translations from Crowdin 2025-01-18 00:13:21 +00:00
Kreijstal 90d3e0be17 Allowing compilation on msys2 (#17369)
## Description
Before there was no clear way of running msys2, and even if there was, there is no guarantee of it working, well I fixed it, and added a CI, so that we can always know if it works. Furthermore I added 2 targets more: UCRT64 and CLANG64, yes, compilation with clang64 means we can also compile with clang for windows on arm :D, plus clang has better error messages overall, anyway.

## Related Issues

#17367

## Reviewers
Anyone, it's my first PR here.
2025-01-18 01:00:09 +01:00
LibretroAdmin 48d903e811 print_buf_lines - cast to unsigned to avoid warnings 2025-01-17 21:52:50 +01:00
Eric Warmenhoven 8aa445dfe2 tvos build fix (#17426) 2025-01-17 21:45:01 +01:00
LibretroAdmin fce755127c Cleanups/style nits 2025-01-17 20:06:47 +01:00
Apteryks 69ceb95ddc Add libretro assets directory search path, and have environment variables override configured values (#17054)
* platform_win32: Fix sizeof for DEFAULT_DIR_PLAYLIST.

* frontend/drivers/platform_win32.c (frontend_win32_env_get): Check
the size of correct destination array.

* frontend: Honor the LIBRETRO_ASSETS_DIRECTORY environment variable.

This builds on 763fcd8267 ("unix, win32: Allow set the default
libretro_directory via environment variable") to also allow specifying
the assets directory via an environment variable.

* frontend/drivers/platform_unix.c (frontend_unix_get_env)
<libretro_assets_directory> New variable. Use it to set
DEFAULT_DIR_ASSETS, when available.
* frontend/drivers/platform_win32.c (frontend_win32_env_get): Likewise.

* platform: Honor the LIBRETRO_DIRECTORY environment variable.

Until now, and unlike the defaut core directory, the default
core *info* directory would be hard-coded relative to the installation
directory. Honor the LIBRETRO_DIRECTORY environment variable the same
instead.

* frontend/drivers/platform_unix.c (frontend_unix_get_env): Set
DEFAULT_DIR_CORE_INFO default to the value of the LIBRETRO_DIRECTORY
environment variable, if available.
* frontend/drivers/platform_win32.c (frontend_win32_env_get): Likewise.

* platform: Honor the LIBRETRO_AUTOCONFIG_DIRECTORY environment variable.

* frontend/drivers/platform_unix.c
(libretro_autoconfig_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_AUTOCONFIG to the value of
the LIBRETRO_AUTOCONFIG_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.

* platform: Honor the LIBRETRO_VIDEO_FILTER_DIRECTORY environment variable.

* frontend/drivers/platform_unix.c
(libretro_video_filter_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_VIDEO_FILTER to the value of
the LIBRETRO_VIDEO_FILTER_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.

* platform: Honor the LIBRETRO_VIDEO_SHADER_DIRECTORY environment variable.

* frontend/drivers/platform_unix.c
(libretro_video_shader_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_SHADER to the value of
the LIBRETRO_VIDEO_SHADER_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.

* platform: Honor the LIBRETRO_SYSTEM_DIRECTORY environment variable.

* frontend/drivers/platform_unix.c
(libretro_system_directory): New variable.
(frontend_unix_get_env): Set DEFAULT_DIR_SYSTEM to the value of
the LIBRETRO_SYSTEM_DIRECTORY environment variable, if available.
* frontend/drivers/platform_win32.c: Likewise.

* configuration: Have environment variables override configuration.

Because the configuration file is systematically written when
RetroArch terminates, persisting any previous default/configured
value, setting the LIBRETRO_DIRECTORY, LIBRETRO_ASSETS_DIRECTORY, etc.
environment variables would not have an effect unless the
retroarch.cfg configuration file was cleared.

This seems to go against the common expectation that environment
variables are set by users to *override* the default behavior or
configuration of an application.

* configuration.c (config_load_file) <libretro_directory>
<libretro_assets_directory, libretro_autoconfig_directory>
<libretro_system_directory, libretro_video_filter_directory>
<libretro_video_shader_directory>: New variables. Use the values of
the LIBRETRO_DIRECTORY, LIBRETRO_ASSETS_DIRECTORY,
LIBRETRO_AUTOCONFIG_DIRECTORY, LIBRETRO_SYSTEM_DIRECTORY,
LIBRETRO_VIDEO_FILTER_DIRECTORY and LIBRETRO_VIDEO_SHADER_DIRECTORY
environment variables instead of their corresponding configured
values, when set.
* docs/retroarch.6: Document the environment variables honored and
their behavior.
2025-01-17 20:04:23 +01:00
LibretroAdmin b211adaaca Function argument name standardization 2025-01-17 19:55:32 +01:00
Ethan O'Brien ec54cdfcf0 Add HAVE_CHD flag for emscripten makefile (#17423) 2025-01-17 19:55:02 +01:00
Eric Warmenhoven 2471082ced macos: fix some sandbox handling for app store (#17424)
* minor safety check

* macos: fix some sandbox handling for app store
2025-01-17 19:54:54 +01:00
LibretroAdmin dda78a4fc8 Use find_last_slash where possible 2025-01-17 13:26:17 +01:00
LibretroAdmin b47e09534c Less string copies 2025-01-17 13:10:17 +01:00
LibretroAdmin 1e83bfb971 Reduce char arrays 2025-01-17 12:55:45 +01:00
LibretroAdmin 16209a0936 (configuration.c) Cleanups/remove some redundant char buffers
(rcheevos) Fix warning
2025-01-17 12:32:54 +01:00
LibretroAdmin e2c8e98be0 Buildfixes and warning fixes 2025-01-17 12:03:30 +01:00
LibretroAdmin 31b7812720 Function argument name standardization 2025-01-17 04:16:12 +01:00
LibretroAdmin 9b5007aefd (manual_content_scan) USe fill_pathname 2025-01-17 03:39:30 +01:00
LibretroAdmin a9b0e45013 (glslang_utill.c) One less string copy per iteration 2025-01-17 03:01:59 +01:00
github-actions 1975235fd7 Fetch translations from Crowdin 2025-01-17 00:14:25 +00:00
LibretroAdmin e4d7684246 Less string copies in fill_pathname_expanded_and_absolute 2025-01-17 01:01:43 +01:00
LibretroAdmin e982905eb4 content_get_subsystem_friendly_name - change function signature return
to size_t
2025-01-17 00:55:30 +01:00
LibretroAdmin 0b329018ee Less string buffers and less string copies 2025-01-16 23:59:22 +01:00
LibretroAdmin 86c9a43b08 Use path_get_extension_mutable 2025-01-16 21:09:19 +01:00
zoltanvb 7e00668181 Language update (#17418) 2025-01-16 20:00:16 +01:00
Jamiras 0113226936 (cheevos) include achievement state in netplay states (#17416)
* add achievement data to netplay save state

* honor achievement state from netplay server

* keep processing achievements if menu doesn't pause game

* remove unused variable

* only CRC coremem

* force send savestate on join and hardcore change

* allow hardcore enablement to be synced to clients

* still calculate cheevos_size for non-server

* use appropriate buffer

* optimizations for when achievements are disabled

* support interfacing with older protocols

* formatting

* c89
2025-01-16 20:00:02 +01:00
github-actions beceb88cd7 Fetch translations from Crowdin 2025-01-16 00:14:30 +00:00
LibretroAdmin a5c9d9520f * Use fill_pathname_basedir where possible
* Move static variable to only function where it's used
* Change signature of file_path.c function
2025-01-15 22:17:59 +01:00
LibretroAdmin e0f09f609f (video_shader_parse.c) token_name char size can be further reduced to 24 2025-01-15 18:30:11 +01:00
LibretroAdmin de3acd9017 (video_shader_parse.c) Go lighter on char stack usage, remove unnecessary
wildcard token_size
2025-01-15 18:28:14 +01:00
LibretroAdmin b2072dd3be Use strldup where possible, avoid strcpy_literal 2025-01-15 16:36:49 +01:00
LibretroAdmin 9da7af46c3 len variable/argument name standardization 2025-01-15 16:04:25 +01:00
LibretroAdmin 076c2bca3b video_shader_replace_wildcards - get rid of the 2D char arrays 2025-01-15 15:25:27 +01:00
LibretroAdmin 7456711eaa (video_shader_parse.c) Standardize replace_len variable name and
reduce char array buffers
2025-01-15 15:08:37 +01:00
LibretroAdmin 047e04ed3e Standardize local len variable naming conventions 2025-01-15 15:00:12 +01:00
LibretroAdmin 47d199297a runtime_file.c - Move scope of menu_driver_ident call 2025-01-15 12:45:05 +01:00
LibretroAdmin 2533bbdc0b Small cleanups 2025-01-15 12:37:35 +01:00
LibretroAdmin f7447d2e0d Add TODO/FIXME notes and cleanup argument naming 2025-01-15 12:19:02 +01:00
github-actions 5069b693a1 Fetch translations from Crowdin 2025-01-15 00:14:15 +00:00
Viačasłaŭ Chalikin 13bd14747a PipeWire improvements
* Use given latency
* Fix (non)blocking microphone
* Mute microphone on startuo
* Reset buffer when the microphone stops
* Delete client-info handler
* Refactor the naming conventions, styling
2025-01-14 21:31:32 +01:00
Eric Warmenhoven 2fdd8434df tvOS: Fix 720p display (#17414) 2025-01-14 21:31:11 +01:00
zoltanvb 31534438bc Enable also alternative device names (#17412)
Enable input_device_device_display_name to also have alt_ variants.
Tests updated.
2025-01-14 16:19:05 +01:00
Jesse Talavera 0bb0077358 Fix a crash when initializing an illuminance sensor on Linux (#17408) 2025-01-13 21:54:52 +01:00
LibretroAdmin 47d888364d Standardize len variables - argument should always be named 'len',
while local len variables should have '_' prefix
2025-01-13 21:53:49 +01:00
LibretroAdmin e081bde064 (core_info.c) Use fill_pathname where we can 2025-01-13 21:14:30 +01:00
LibretroAdmin bd413de842 Log messages are too small to hold entire path 2025-01-13 16:01:16 +01:00
LibretroAdmin 3c3611af6f Resync libretro-common 2025-01-13 15:37:59 +01:00
Viačasłaŭ 1d6badb1f1 (PipeWire) Fix speedup in the video threaded mode (#17406) 2025-01-13 04:36:17 +01:00
github-actions 41290bb1a8 Fetch translations from Crowdin 2025-01-13 00:16:05 +00:00
LibretroAdmin 7e7224196a Avoid some strlens, and also return size_t in more string
modification functions
2025-01-12 23:39:29 +01:00
LibretroAdmin 598764b860 rarch_file_log_set_override - size_t return 2025-01-12 23:09:12 +01:00
LibretroAdmin fb338b90bf Turn some functions to returntype size_t 2025-01-12 23:03:41 +01:00
LibretroAdmin 955eeed31a (playlist.c) -
* playlist_get_old_format_metadata_value - now returns size_t
* fix bug where string copy was being made with strdup before
anything got written to the string
2025-01-12 22:32:42 +01:00
LibretroAdmin e84ea6082c Fix 'Remove Preset' 2025-01-12 19:05:44 +01:00
LibretroAdmin e30fcb6da6 Remove unnnecessary null pointer check 2025-01-12 18:45:14 +01:00
LibretroAdmin 203c6218e4 Re-enable BFI menu setting for mobile 2025-01-12 17:35:50 +01:00
hizzlekizzle f7678abe8d Add flicker warnings, only auto-apply preferred overlays on Android and iOS (#17398)
* disable default overlays except on Android and iOS

* add flicker warnings to BFI/Subframes/rolling scan

and remove the prohibitions against other settings, since those conflicts are handled automagically anyway

* formatting nit
2025-01-12 17:34:13 +01:00
zoltanvb e71a1620b0 Update core list based on what is compiled for 1.20.0 stable version. (#17404) 2025-01-12 17:34:01 +01:00
Viačasłaŭ 1039db7bf8 Fix Qt build (#17397)
Related to #17346
2025-01-12 14:21:27 +01:00
iyzsong f309266422 (Qt) Fix desktop menu crash with CHEEVOS disabled (#17400) 2025-01-12 14:21:01 +01:00
github-actions 62a85ae737 Fetch translations from Crowdin 2025-01-12 00:16:13 +00:00
sonninnos 8ef798ea51 Add human readable rotation logging (#17387) 2025-01-11 02:51:48 +01:00
Eric Warmenhoven fcda24be29 Files in archives should always be marked as such (#17390) 2025-01-11 02:51:04 +01:00
zoltanvb 9e048d8d77 Reset save state index on content load, if auto index is not enabled. (#17391) 2025-01-11 02:50:35 +01:00
github-actions 857dc8be5a Fetch translations from Crowdin 2025-01-11 00:14:13 +00:00
sonninnos 1e32a1e5e9 Save state logging and label unifications (#17384) 2025-01-10 14:47:28 +01:00
sonninnos 17e9aabd25 WINRAW: Invert mouse order (#17376) 2025-01-10 12:21:33 +01:00
Eric Warmenhoven 95dd1d8449 cloud sync: fix windows path issues (#17375) 2025-01-10 12:21:24 +01:00
zoltanvb 4b45499b97 Changes up to 01-09 (#17379)
...and one minor clarification in previous logs.
2025-01-10 12:20:46 +01:00
github-actions 2c57a35055 Fetch translations from Crowdin 2025-01-10 00:15:03 +00:00
zoltanvb 6f495dea04 Replace upload-artifact v3 with v4 (#17378) 2025-01-09 20:29:15 +01:00
github-actions 74e7a62e91 Fetch translations from Crowdin 2025-01-09 00:14:07 +00:00
Rob Loach 941806698e Add SSL Support to the information list (#17370) 2025-01-09 00:09:56 +01:00
Viačasłaŭ 9886944f32 Fix launch app when pipewire service is stopped (#17365) 2025-01-07 18:31:45 +01:00
zoltanvb 65b9b1cd25 Fix compile failure (#17366) 2025-01-07 17:42:25 +01:00
LibretroAdmin 839b7654db More standardization of local len variables 2025-01-07 03:20:39 +01:00
LibretroAdmin fc48ecaa1d Local 'len' variables need to prefixed with '_', inner-loop len
variables need to be prefixed with '__'
2025-01-07 02:57:24 +01:00
LibretroAdmin e40f405b97 Play it on the safe side - go back to some of the code
from before
2025-01-07 02:47:37 +01:00
LibretroAdmin a98ab483cb Restore archive_file_7z.c 2025-01-07 02:22:57 +01:00
Eric Warmenhoven 69e8be6dc1 iOS: ensure webserver notice can be dismissed (#17356) 2025-01-07 02:03:00 +01:00
hizzlekizzle 8a3f25311b partial revert of c09fd38 (#17363)
which was causing softpatching to break on games with periods/dots in the filename. This restores the previous patch-matching behavior
2025-01-07 01:58:53 +01:00
github-actions 3ba7d88cea Fetch translations from Crowdin 2025-01-07 00:14:59 +00:00
Tatsuya79 43a2e1003e allow exact sync with shader subframes (#17355)
* allow exact sync with shader subframes

* Update menu_setting.c
2025-01-06 21:36:57 +01:00
zoltanvb 5399faaa9d Fix savestate auto-index detection (#17351) 2025-01-06 11:45:00 +01:00
github-actions 9c6e772497 Fetch translations from Crowdin 2025-01-06 00:15:51 +00:00
zoltanvb ab3b175848 Restore missed absolute mouse conversion. (#17343) 2025-01-05 03:50:47 +01:00
sonninnos 0913263817 Integer Scale Axis sublabel correction (#17345) 2025-01-05 03:50:32 +01:00
Viačasłaŭ f7159c4380 Fix Qt5 build (#17346) 2025-01-05 03:50:22 +01:00
github-actions 51c1482062 Fetch translations from Crowdin 2025-01-05 00:16:02 +00:00
neil4 6412f4feef Overlay: Add Analog Recentering Zone (#17339) 2025-01-04 03:19:02 +01:00
neil4 2ffe9fe15c Overlay lightgun fixes (#17340)
- Fix the "Allow Off-Screen" setting not working since #17308
- Prevent offscreen shot from disabling the lightgun with some cores
- Fullscreen pointer coordinates no longer needed
2025-01-04 03:18:38 +01:00
github-actions 54c37cf16d Fetch translations from Crowdin 2025-01-04 00:16:33 +00:00
github-actions ee191f3064 Fetch translations from Crowdin 2025-01-03 00:14:50 +00:00
zoltanvb b6be01355a Add more help text for custom options in general. (#17336) 2025-01-02 22:21:54 +01:00
zoltanvb 864ad02177 Quickfix: asset size has exceeded 4x30 MB, so now there are 5 chunks. (#17334) 2025-01-02 19:31:35 +01:00
Eric Warmenhoven 53d9452439 Change config_get_path/array return back to bool (#17333) 2025-01-02 14:35:33 +01:00
Viačasłaŭ 0dcf196ee3 (Qt) Fix setting value size (#17332) 2025-01-02 12:58:30 +01:00
Eric Warmenhoven 7161069cfc overlay: reinitializing was causing the wrong overlay to show (#17331) 2025-01-02 07:24:57 +01:00
Eric Warmenhoven 9dd6e85d2f fix writing before string when substring is not found (#17330) 2025-01-02 06:17:00 +01:00
sonninnos 50c943ac96 Audio stream state msg cleanup (#17328) 2025-01-02 01:49:54 +01:00
Eric Warmenhoven 01951a5a5a Fix passing wrong length of message (#17329) 2025-01-02 01:49:25 +01:00
zoltanvb 401e169865 Pointer sanitization, rwebinput driver (#17327) 2025-01-01 23:14:42 +01:00
sonninnos 2e3fc4f52d WIN32: Menubar hotkey corrections (#17326) 2025-01-01 23:13:58 +01:00
Ignacio Sanchez Gines b5a62fcdf8 Add lightgun support to cocoa input driver (#17318) 2025-01-01 23:11:08 +01:00
LibretroAdmin a590c514f9 (video_shader_parse.c) Code restored to pre-Dec 17 2025-01-01 03:00:09 +01:00
LibretroAdmin ae7951445a Remove unused variables 2024-12-31 11:49:02 +01:00
LibretroAdmin 4e5df036f9 action_get_Title_generic - fix warning 2024-12-31 11:40:00 +01:00
LibretroAdmin 20ec0c605a (courtesy of Psyraven) Fix crashes with Explore view 2024-12-31 11:22:43 +01:00
LibretroAdmin 953a2d011d Update version.all 2024-12-31 06:33:17 +01:00
LibretroAdmin 7d1d8322e6 Bump up to 1.20.0 2024-12-31 06:30:58 +01:00
LibretroAdmin 30b3760959 (menu_explore.c) Don't use fill_pathname here, go back to old code 2024-12-31 05:40:30 +01:00
github-actions 94dce4001e Fetch translations from Crowdin 2024-12-31 00:14:25 +00:00
LibretroAdmin 76d133f860 Get rid of if 0 codeparts in gfx_widgets.c 2024-12-30 23:56:54 +01:00
zoltanvb b66263a034 Adapt the sanitized pointer handling, discussed at libretro#17196 : (#17312)
Cocoa driver specific changes:

- make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
- enable pointer offscreen query
2024-12-30 23:50:02 +01:00
LibretroAdmin 33ec89306e Fix savestate thumbnails - '.png' needs to be appended to the total
filepath, so fill_pathname can't be used since it would overwrite
the existing extension
2024-12-30 23:39:36 +01:00
Viačasłaŭ 3a4330238a Fix PulseAudio freeze (#17316)
* Fix freeze when close app/content after stopping/restarting
  pulse service
* Fix pa->devicelist memleak
* Logging improvements
2024-12-30 23:08:45 +01:00
LibretroAdmin 6be18bfee9 Standardize naming of local len variables 2024-12-30 14:27:24 +01:00
LibretroAdmin 1e656261b0 Local len variables need to have '_' prefix 2024-12-30 14:03:58 +01:00
LibretroAdmin 707f19640a (task_content_disc.c) Use fill_pathname 2024-12-30 10:29:06 +01:00
LibretroAdmin b4cf279b80 Fix gdi_find_track prototype 2024-12-30 10:13:05 +01:00
LibretroAdmin 8ebedcb6bd (menu_explore) Simplification of explore_load_icons
fill_pathname_application_special - return size_t
2024-12-30 10:07:58 +01:00
LibretroAdmin 28f6ee9c26 Use return value of fill_pathname_basedir 2024-12-30 09:56:02 +01:00
LibretroAdmin 56c63b8c19 Small cleanups - conventionalize char *s, size_t parameter usage 2024-12-30 09:44:40 +01:00
LibretroAdmin e07028e892 Buildfix for conmanctl 2024-12-30 09:10:48 +01:00
github-actions 9a19b49a4f Fetch translations from Crowdin 2024-12-30 00:15:25 +00:00
LibretroAdmin d2dae40b3a (gfx/video_shader_parse.c) Enlarge char buffers - was necessary for some large
paths - TODO/FIXME - we still need to find out exactly which of these buffers
needs size to be PATH_MAX_LENGTH
2024-12-29 20:08:50 +01:00
Viačasłaŭ 4124ca49e3 PipeWire improvements (#17305)
* Fix freeze when pipewire service is stopped/restarted
* Fix `device_list `memleak
* Refactor pipewire drivers
2024-12-29 18:57:54 +01:00
Viačasłaŭ 945d3ebc5f Fix memleak (#17307) 2024-12-29 18:57:45 +01:00
zoltanvb fe1575bc54 Input sanitization, wayland enhancement and overlay (#17308)
Adapt the sanitized pointer handling, discussed at #17196 :

Overlay "driver" specific changes:

- make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
- enable pointer offscreen query
- report -0x8000 for lightgun if pointer is at the edge
- align lightgun offscreen reporting and button ID conversion with other drivers

Android driver specific changes:

- make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
- remove extra "inside" checks, general simplification
- enable pointer offscreen reporting
- report same value for all ports when querying mouse and lightgun
- fill missing lightgun support, with fixed button map

Udev and X11 driver specific changes:

- simulate max. 3 touches instead of 1 using different mouse buttons

Wayland driver specific changes:

- integrate touch input better to the overall handling (enabling overlay usage with mouse)
- simulate max. 3 touches instead of 1 using different mouse buttons
2024-12-29 18:57:27 +01:00
Aleksey Samoilov 9ffb458626 wayland: add support for single-pixel-buffer-v1 protocol (#17298)
* wayland: add support for single-pixel-buffer-v1 protocol

* Create single pixel buffer instead of checkerboard if available

* Fix identations
2024-12-29 18:56:32 +01:00
Colin Kinloch e3cc0341b9 wayland: Fix improperly sized commits (#17309)
* Revert "wayland: Ignore splash sized events during splash"

This reverts commit 5ef24debe4.

* wayland: Fix improperly sized commits

* Set viewport on splash commit
* Don't commit "set video mode" viewport update
* Hide the libdecor frame before transitioning to fullscreen
2024-12-29 18:56:17 +01:00
LibretroAdmin 3e6486db2b Small cleanups (Task_database_cue.c) 2024-12-29 00:25:22 +01:00
LibretroAdmin 4297f02544 Use returntype for fill_pathname_basedir 2024-12-28 23:11:24 +01:00
LibretroAdmin 9376b99ea6 - Make some functions static in command.c
- Set returntype to size_t for some functions, avoid strlen
2024-12-28 22:49:03 +01:00
Eric Warmenhoven ef1b325978 Change return types for some path functions to size_t (#17303) 2024-12-28 22:26:30 +01:00
LibretroAdmin 9d15900979 Small cleanups: * Prevent some unneccessary strlcpy calls and intermediary string copies * Name local length variables for strings '_len', parameter/argument 'len' 2024-12-28 22:22:07 +01:00
LibretroAdmin 0a7b409a04 (runtime_file.c) Use fill_pathname 2024-12-28 19:41:10 +01:00
Eric Warmenhoven b09b98ffd5 apple: include doukutsu_rs core in App Store builds (#17302) 2024-12-28 18:45:24 +01:00
LibretroAdmin a3f631e310 Fix label - 'Never' was always shown for playlist runtime 2024-12-28 18:43:46 +01:00
Aramis 2c3e53e4e8 fix for closing window (#17301) 2024-12-28 17:26:04 +01:00
LibretroAdmin b8c9665753 Fix typo 2024-12-28 00:44:56 +01:00
Jamiras a70eba3fd5 (cheevos) allow subframes in hardcore (#17296)
* allow subframes in hardcore

* remove unused message
2024-12-28 00:39:44 +01:00
LibretroAdmin 4951201b6b disp_set_label_menu_file_core - set *w to implicit 0 2024-12-28 00:38:04 +01:00
LibretroAdmin e6373f2869 Position Latency accurately in statistics 2024-12-28 00:33:40 +01:00
LibretroAdmin 1a751ef9a2 Remove core value label 2024-12-28 00:30:00 +01:00
Eric Warmenhoven 3989a62f60 Apple buildfix (#17294) 2024-12-27 20:36:12 +01:00
Aleksey Samoilov 4fc6bbe8c2 wayland: improve logging (#17291)
* wayland: improve logging

* wayland: minor cleanup
2024-12-27 15:51:13 +01:00
zoltanvb 26350527f3 Changes up to 2024-12-27. (#17292) 2024-12-27 15:51:05 +01:00
sonninnos da05947b41 GLUI: Restore core list icons (#17293) 2024-12-27 15:50:55 +01:00
LibretroAdmin 0d4eeb647a Warning cleanups/unused variables removal 2024-12-27 15:39:32 +01:00
LibretroAdmin b8cdaeae72 Buildfixes 2024-12-27 15:24:29 +01:00
LibretroAdmin 18c85b5ccd Cleanups -
* Less string copies
* Some general cleanups
* Add extra param to runloop_message_queue_push so we can pass size_t
of the message
* Consistent conventions for local variable usage for certain things
2024-12-27 15:13:45 +01:00
LibretroAdmin ed58e4a8d8 Conventionalize len variables:
* In function arguments, use 'size_t len'
* Inside the function, use '_len'
* If you need a seciondary len variable inside the function, use '__len'
2024-12-27 05:51:33 +01:00
hizzlekizzle bc819bb412 change increment on max Fast-Forward speed (#17290)
closes https://github.com/libretro/RetroArch/issues/15540

we can still tick through to higher values quite fast, but there's not much reason for someone to exceed, say, 3x without just setting it to 0 anyway, so I don't think there's any real usability loss.
2024-12-27 04:26:54 +01:00
github-actions d5d1c424c8 Fetch translations from Crowdin 2024-12-27 00:14:30 +00:00
Aleksey Samoilov a2d9c74978 wayland: add support for content-type-v1 protocol (#17288)
* wayland: add support for content-type-v1 protocol

* update gitignore, remove generated files

* Fix typos
2024-12-27 00:16:36 +01:00
libretroadmin 95f0297e7f Fix CLI shader loading 2024-12-26 05:10:00 +01:00
libretroadmin 5749a2179d Use members from path_data directly and bypass functions
in gfx_thumbnail_path
2024-12-26 02:48:05 +01:00
github-actions a2e9915532 Fetch translations from Crowdin 2024-12-26 00:14:21 +00:00
zoltanvb ac6b30471b Pointer sanitization - sdl (#17286) 2024-12-25 17:55:13 -06:00
libretroadmin 92f134fb87 video_driver_frame - optimize string handling 2024-12-25 23:33:50 +01:00
libretroadmin c477956f23 Cleanups/style nits 2024-12-25 22:52:12 +01:00
libretroadmin 1450cc04de Reduce local string sizes 2024-12-25 22:36:13 +01:00
libretroadmin 9c71620c53 (gfx_widget_load_content_animation) icon_file can be reduced to NAME_MAX_LENGTH size 2024-12-25 21:34:02 +01:00
libretroadmin bd461a5f8e (core_info) core_info_get_file_id - return length of written
string and use it to avoid strlcat
2024-12-25 19:49:26 +01:00
libretroadmin 700b13654c Some string cleanups 2024-12-25 19:18:45 +01:00
libretroadmin 51e706007b String handling cleanups 2024-12-25 19:06:04 +01:00
Aleksey Samoilov 7887719d42 wayland: add support for cursor-shape-v1 protocol (#17284)
* wayland: add support for cursor-shape-v1 protocol

* Bump required wayland-protocols to 1.32
2024-12-25 08:18:45 -08:00
zoltanvb e5fde4dd09 Pointer sanitization - winraw, dinput, sdl (partial) (#17283)
Adapt the sanitized pointer handling, discussed at libretro#17196 :

winraw and dinput driver specific changes:

    make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
    remove extra "inside" checks, general simplification
    enable pointer offscreen reporting
    use common functions for edge detection and lightgun button ID conversion

sdl driver specific changes:

    pointer handling aligned with the other input drivers, as above
    added TODO for lightgun part - no suitable test env at the moment where SDL input can be used
2024-12-25 08:18:17 -08:00
Viačasłaŭ b124fe6e65 Fix build with GCC 14 (#17282) 2024-12-24 23:51:48 -08:00
libretroadmin 9a5b2063b7 Simplify video_shader_replace_wildcards 2024-12-25 06:49:58 +01:00
libretroadmin 44238e909f Consistent viewport naming conventions 2024-12-24 22:50:51 +01:00
libretroadmin 83a187784a Remove dependency on strlcpy for rjson.c 2024-12-24 21:09:15 +01:00
libretroadmin 8074a833aa Cleanups/less string copies and indirection 2024-12-24 21:07:31 +01:00
libretroadmin 2cfdccc085 Less string intermediary copies 2024-12-24 18:46:22 +01:00
zoltanvb 6a85844b41 Pointer sanitization - x11, udev (#17281)
Adapt the sanitized pointer handling, discussed at #17196 :

X11 driver specific changes:

    make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
    remove extra "inside" checks, general simplification
    enable pointer offscreen reporting

Udev driver specific changes:

    remove custom calculation and use common viewport translation
    unify pointer query instead of separate _x and _y
    enable pointer offscreen reporting

Other changes:

    more tuning of pointer conversion in video_driver.c for edges
    lightgun button ID conversion moved to input_driver.c
2024-12-24 07:08:58 -08:00
libretroadmin f8ffcef86c Cleanups 2024-12-24 06:42:59 +01:00
libretroadmin 279270ae5f string_list_join_concat_special - specialized version without bounds
check
2024-12-24 06:14:26 +01:00
libretroadmin 67b0147a59 Cleanups - menu_entries_get_title returns results of strlcpy 2024-12-24 05:35:36 +01:00
libretroadmin de8f979cb7 less string copies 2024-12-24 05:10:09 +01:00
libretroadmin 02bcbffbab fill_pathname - one less string copy 2024-12-24 00:08:04 +01:00
libretroadmin 2b94bccad2 (fill_pathname_join_delim) - no longer use strlen 2024-12-23 23:42:56 +01:00
libretroadmin 55c457e548 menu_displaylist - cleanups 2024-12-23 22:44:18 +01:00
Viačasłaŭ 284161057d Add microphone support via PipeWire (#17279) 2024-12-23 13:40:35 -08:00
libretroadmin 1340e751e0 print_buf_lines - extended was never used as a parameter (always set to
false), so change function
2024-12-23 07:28:49 +01:00
libretroadmin 72acdb4eb1 datetime_cache can go now from the struct 2024-12-23 07:12:29 +01:00
libretroadmin cdef3ff9f7 strftime - write directly into string instead of using intermediary copies 2024-12-23 07:10:03 +01:00
libretroadmin 772620f6fa gfx_widget_load_content_animation - use fill_pathname more 2024-12-23 06:33:43 +01:00
libretroadmin 7317fa9ee9 Cut down on some strlen calls where possible 2024-12-23 06:24:01 +01:00
libretroadmin b789e6ee56 More style nits 2024-12-23 05:47:29 +01:00
libretroadmin 442b9bc3da Syntax style nits 2024-12-23 05:44:40 +01:00
Eric Warmenhoven 4ab58f66ec apple: tweaks to fastfile to better handle versions and dirty repos (#17278) 2024-12-22 19:38:56 -08:00
github-actions 3ab3b32103 Fetch translations from Crowdin 2024-12-23 00:15:28 +00:00
libretroadmin 99c7e08445 Don't use string_trim_whitespace 2024-12-23 00:51:01 +01:00
libretroadmin ca7e53e3ca string_replace_substring - move out implicit strlen 2024-12-23 00:40:09 +01:00
libretroadmin b90c2d440c Another buildfix 2024-12-22 22:11:19 +01:00
libretroadmin f8317a2a7e C89_BUILD fix 2024-12-22 22:09:54 +01:00
libretroadmin e26a38c8d4 Buildfix 2024-12-22 22:08:22 +01:00
libretroadmin b3e5c578b3 Faster shader capabilities queries 2024-12-22 21:58:51 +01:00
libretroadmin c09fd38c1d * Use fill_pathname more
* Get rid of strlen in some locations
2024-12-22 20:43:54 +01:00
libretroadmin f429b15250 Cleanups 2024-12-22 20:01:28 +01:00
libretroadmin 70f55f5976 video_shader_replace_wildcards - do away with the string arrays
and do string concatenation instead
2024-12-22 19:31:46 +01:00
libretroadmin ab43347fdd C89_BUILD fix 2024-12-22 05:32:17 +01:00
libretroadmin ce88a46a05 Menu simplifications/cleanups 2024-12-22 05:21:25 +01:00
libretroadmin e01ef9e1de Cleanup unused menu_is_nonrunning_quickmenu 2024-12-22 05:07:30 +01:00
libretroadmin 6b8466f87a menu_driver_set_thumbnail_system/menu_driver_get_thumbnail_system
just small wrapper functions, remove
2024-12-22 04:53:04 +01:00
github-actions 12ddb1b6d7 Fetch translations from Crowdin 2024-12-22 00:16:12 +00:00
zoltanvb 072d949346 Pointer handling sanitization - wayland and libretro.h changes (#17277)
Adapt the sanitized pointer handling, discussed at #17196:

Wayland driver specific changes:
- make sure pointer position is always within [-0x7fff,0x7fff]
  by using the confined wrapper
- enable lightgun to report -0x8000 if pointer is really offscreen
- remove extra "inside" checks
- report same pointer/lightgun coordinates for all ports
- simplify pointer and lightgun handling

Other changes:
- unify "offscreen" condition through input_driver.c
- slight tuning of pointer conversion in video_driver.c
- update libretro.h with explanation and pointer offscreen value
- small fixes on remote retropad test screen
2024-12-21 13:28:27 -08:00
Eric Warmenhoven a7db10508c ios9: re-enable web server/webdav server (#17275) 2024-12-21 11:39:44 -08:00
libretroadmin 5ddb9b990c Disable fetching Named_Logos for now - not only is it too much overhead
and bandwidth for our server but none of thse Named_Logos have been added to
any repos for now. We will also need to have settings for specifying how much
stuff we fetch at the same time (Named_Logos, Named_Snaps, Named_Titles, Named_Boxarts).
Trying to fetch all this stuff at the same time is prob a mistake
2024-12-21 17:59:59 +01:00
libretroadmin 123bfc1212 Disable ondemand thumbnails for all platforms by default 2024-12-21 17:47:16 +01:00
LibretroAdmin 739f2ff55c Reduce calls to path_remove_extension - use fill_pathname instead (#17270)
* Reduce calls to path_remove_extension - use fill_pathname instead

* More fill_pathname usage
2024-12-20 21:40:58 -08:00
Zach MorrisandRob Loach b16f04de0a Add Named_Logos (#17216)
* Draft:  Add Named_Logos

* Allow selecting Content Logo as a thumbnail display

* Increase pl_thumbnail_download index

to 4 to match the 4 available thumb types

---------

Co-authored-by: Rob Loach <[email protected]>
2024-12-20 18:52:27 -08:00
Viačasłaŭ fbe135fb60 Fix displaying PipeWire help label, styling (#17274)
Update README
2024-12-20 18:51:48 -08:00
github-actions b252725394 Fetch translations from Crowdin 2024-12-21 00:14:09 +00:00
libretroadmin 6c914bed06 Add GDI system feature 2024-12-20 21:03:57 +01:00
libretroadmin 5c31d38137 (Griffin) Add pipewire 2024-12-20 20:46:42 +01:00
libretroadmin 97a4219dc7 Update 2024-12-20 20:42:48 +01:00
libretroadmin 8571847fda Filter system features 2024-12-20 20:41:59 +01:00
libretroadmin 8212bf60ef * Rewrite System Info - only shows builtin features relevant to the platform
* Add Pipewire to 'features' CLI switch and System Info screen
2024-12-20 20:10:24 +01:00
sonninnos dc7e8e1811 Prevent stuck Game Focus dupe keyboard event (#17273) 2024-12-20 09:38:01 -08:00
Viačasłaŭ 0ae2b87c57 (Audio/PipeWire) Fill rest buffer with silence. (#17272)
Formatting, fix typo
2024-12-20 07:59:43 -08:00
Viačasłaŭ 963ffc0e77 Add PipeWire audio driver (#17271) 2024-12-19 22:11:27 -08:00
github-actions cde4e9253b Fetch translations from Crowdin 2024-12-20 00:14:47 +00:00
zoltanvb 30a656738b Introduce video_driver_translate_coord_viewport_wrap clamping variant. (#17196)
Add another version of the coordinate translation that will not
report -0x8000 for offscreen values, but instead map the position
to the respective edge (0x7fff/-0x7fff). Not yet in use.

Udev driver updated to use the wrapper, as all other input drivers do.
2024-12-19 13:30:43 -08:00
Eric Warmenhoven 8d640fc048 ios9: Fix using opengles2 context (#17269) 2024-12-19 13:30:01 -08:00
libretroadmin 17fc55c762 fill_pathname_parent_dir_name - small cleanups 2024-12-19 21:05:43 +01:00
libretroadmin c492e46d96 Change function signature of fill_pathname_parent_dir 2024-12-19 20:51:33 +01:00
libretroadmin d94cc3af72 Simplify fill_pathname_application_path 2024-12-19 20:17:09 +01:00
Jesse Talavera 3cdb95a602 Construct device URLs differently based on the ffmpeg backend 2024-12-18 21:05:30 -05:00
Jesse Talavera b68a588ede Split some ffmpeg camera logic into functions 2024-12-18 20:32:19 -05:00
Jesse Talavera 9ee56da6b0 Prioritize certain backends 2024-12-18 20:31:44 -05:00
libretroadmin 60e5858d51 fill_pathname_application_dir - use path_basedir instead of
path_basedir_wrapper
2024-12-18 23:39:24 +01:00
libretroadmin e53fb82066 Sync libretro-common 2024-12-18 23:00:50 +01:00
libretroadmin 7d71f94dc6 Fix misleading indentation warning 2024-12-18 22:15:35 +01:00
libretroadmin 6b801333e7 file_path - change function signatures - output char array always
is named 's', and size of it 'len'
2024-12-18 21:43:33 +01:00
Jesse Talavera 4beb80c290 Revert "Forward ffmpeg's logging to RetroArch"
This reverts commit 4aac4d5b9e.
2024-12-18 14:52:28 -05:00
Eric Warmenhoven 2650712cb3 Small tweaks to fill_pathname_application_path (#17268) 2024-12-18 11:29:58 -08:00
Jesse Talavera 4aac4d5b9e Forward ffmpeg's logging to RetroArch 2024-12-18 14:28:49 -05:00
libretroadmin 4521f6bcb2 Cleanups 2024-12-18 20:15:58 +01:00
Eric Warmenhoven 47709fe0d5 apple: include bsnes-js core in App Store builds (#17267) 2024-12-18 10:03:54 -08:00
Eric Warmenhoven 569f9a3282 apple: fastlane improvements (#17266)
- remove a lot of duplicated code across mac/ios/appletvos
- restore ability to use either login or app_store_connect_api_key
- pull version string from version.all instead of app store connect
- allow building from alternate branch
- allow skipping upload or making it publicly available
2024-12-18 10:03:42 -08:00
libretroadmin f047c247f9 (gfx/video_shader_parse) Readability 2024-12-18 15:54:42 +01:00
Jesse Talavera 7586ae7dbe Remove stray whitespace 2024-12-17 14:57:36 -05:00
Jesse Talavera 88b6342bb5 Move up some declarations 2024-12-17 14:57:06 -05:00
Jesse Talavera 7b21ed5f93 Set options for the camera and accompanying AV structures 2024-12-17 14:37:29 -05:00
Jesse Talavera d682917e44 Add Linux support for illuminance sensors (#17208)
* First crack at light sensor support for Linux

* Add light-sensor support to most Linux input drivers

* Fix a compiler error

- Whoops, forgot to declare `sdl`

* Refactor linux_illuminance_sensor_t

- Allow the poll rate to be specified
- Poll the sensor on a separate thread
- Open a file handle each time we poll the sensor, since sysfs doesn't update the contents of an existing handle

* Set the `done` flag when closing the light sensor

- Whoops

* Avoid a division by zero when updating the poll rate of an existing sensor

* Don't try to open illuminance sensors from ".", "..", or hidden files

* Never mind

* Fix some silly mistakes

* Skip hidden files, ".", and ".."

* Cancel the sensor poll thread mid-sleep when closing it

- POSIX says it's fine

* Add to CHANGES.md

* Address feedback given on PR

* Use libretro-common's file system instead of stdio
2024-12-17 05:49:39 -08:00
Eric Warmenhoven a4b478524a iOS/tvOS: Fix more places where paths weren't expanded correctly (#17265) 2024-12-17 05:24:20 -08:00
zoltanvb b0114d4316 Stay on previous CI image for Android. (#17264) 2024-12-17 05:24:10 -08:00
Jesse Talavera ce1f31af8d Don't pass in the driver context to camera_driver::device_list_new
- Unlike some other drivers, the camera driver is only initialized when a core actually asks for it
- Therefore, the driver context isn't available when it's time to ask for devices
- I could refactor the camera driver to be created earlier, but then I'd need to refactor the other drivers as well
- That'll come later in another PR
2024-12-16 21:53:37 -05:00
Jesse Talavera 3c73b36cca Remove const from some fields 2024-12-16 16:45:12 -05:00
Jesse Talavera 7d31c65af1 Fix compatibility with libswscale < 6.1.100
- sws_scale_frame was introduced in 6.1.100
- Before this change, the driver wouldn't build on my Ubuntu Jammy VM
2024-12-16 16:38:15 -05:00
Jesse Talavera 47e0a163f3 Don't try to link the ffmpeg camera driver twice
- Whoops
2024-12-16 16:28:34 -05:00
Jesse Talavera c63a8d6705 Check for FFmpeg's constitutent libraries before adding flags for them 2024-12-16 15:21:56 -05:00
libretroadmin eb08faa434 Replace strpbrk with strchr - we only need to search for one char 2024-12-16 17:49:44 +01:00
libretroadmin 275c6c0267 (XMB) xmb_path_dynamic_wallpaper - don't use string_replace_substring
unless absolutely necessary - uses memory allocation - single strpbrk
instead gets the job done here
2024-12-16 17:38:09 +01:00
Eric Warmenhoven 7e49b3d3d3 overlay: fix crash on null pointer 2024-12-16 15:59:32 +01:00
Eric Warmenhoven 4351ea3098 apple: fix reinit of gcd task queue (#17262) 2024-12-16 06:00:45 -08:00
Jesse Talavera 33b574198c Swap the buffers after copying the most recent camera frame, but only upon success 2024-12-15 21:39:48 -05:00
Jesse Talavera 024fd873ec Moved polling in the new ffmpeg camera driver to another thread 2024-12-15 21:21:08 -05:00
github-actions 4d7dfd2848 Fetch translations from Crowdin 2024-12-16 00:16:24 +00:00
zoltanvb 5cfaf09f55 Support for analog L2/R2 values when a DS3 controller is used with PS Vita. (#17261) 2024-12-15 09:24:13 -08:00
redenvelope2000 7be52caff8 Update input_driver.c to improve the classic toggle turbo function (#17252)
Changed the logic of the classic toggle turbo mode code such that the pressing order of the turbo button and the button to enable/disable does not matter.
2024-12-15 09:23:59 -08:00
github-actions 928249b20b Fetch translations from Crowdin 2024-12-14 00:14:51 +00:00
Jesse Talavera 2bd45eeb6f Remove an unneeded comment 2024-12-13 14:52:11 -05:00
zoltanvb 7602b10688 Changes up to 2024-12-11 (#17254) 2024-12-13 09:57:25 -08:00
Eric Warmenhoven 48f156fefe Fix uninitialized variable (#17256) 2024-12-13 09:55:38 -08:00
github-actions 840bee7297 Fetch translations from Crowdin 2024-12-13 00:16:02 +00:00
Jesse Talavera 391be66361 Unref the packet and frame correctly 2024-12-12 18:55:05 -05:00
Jesse Talavera 2d2e9d840c Fix the channels being swapped
- Whoops, wrong format
2024-12-12 18:54:49 -05:00
Jesse Talavera 0e347391e8 Clean up ffmpeg_camera_free
- Release resources in the opposite order they were initialized
- Don't release resources twice (even for cases of a noop)
2024-12-12 18:18:01 -05:00
Jesse Talavera 716be2bb22 Silence some warnings 2024-12-12 18:16:24 -05:00
Jesse Talavera 0bdf616836 Fix some swapped arguments 2024-12-12 18:13:14 -05:00
zoltanvb ccb7f4e0ce Clarify latency setting. (#17253) 2024-12-12 12:42:52 -08:00
Jesse Talavera 22301bd3d5 Fix a crash when closing the ffmpeg camera driver
- Allocate the target buffer aligned to 4-byte addresses
- Consolidate resource cleanup to mitigate similar issues
2024-12-12 11:25:43 -05:00
Jesse Talavera b1eb37b394 Capture an image and display it (as tested with 3DEngine)
- Still crashes upon closing
- Colors are all wrong, too
2024-12-12 11:09:31 -05:00
Eric Warmenhoven 62c725579a apple: use gcd for task queue (#17248) 2024-12-11 22:55:46 -08:00
Eric Warmenhoven 0e26bea0b2 icloud: properly report errors (#17249) 2024-12-11 22:54:53 -08:00
Eric Warmenhoven 8cd97d57f9 cleanup: remove now-unused net_http_special (#17250) 2024-12-11 22:54:45 -08:00
Eric Warmenhoven bee0d2226f cleanup: minor tidying of unused code in task_http (#17251) 2024-12-11 22:54:26 -08:00
Jesse Talavera af1c4a3e7f First crack at implementing the ffmpeg camera driver 2024-12-11 21:26:15 -05:00
Eric Warmenhoven cf986c0424 overlay: don't rely on menu entry, it can be misleading (#17247) 2024-12-10 22:32:15 -08:00
github-actions 722fdd925e Fetch translations from Crowdin 2024-12-11 00:15:58 +00:00
Eric Warmenhoven f83841df38 probably fix crash setting overlay (#17243) 2024-12-09 20:47:29 -08:00
github-actions fc872a1f6c Fetch translations from Crowdin 2024-12-10 00:16:06 +00:00
github-actions 29bee5c55b Fetch translations from Crowdin 2024-12-09 00:16:15 +00:00
Jefferson Bezerra 5dbfbff6e3 Add upscale 1.66x filter (#17240) 2024-12-08 00:06:14 -08:00
Eric Warmenhoven 99c2676efa Add option to load overlay based on system name (#17233) 2024-12-07 23:58:33 -08:00
github-actions 3b4d1aa0a4 Fetch translations from Crowdin 2024-12-08 00:16:56 +00:00
Eric Warmenhoven 7b29062e96 cloud sync: small bug fixes around handling deleted files (#17236) 2024-12-07 00:59:05 -08:00
Eric Warmenhoven 3bdc71c20f apple: include yabause core on app store (#17237) 2024-12-07 00:58:55 -08:00
Licaon_Kter e3c1ebfbde fetch-submodules.sh - fail on errors (#17234)
..else if a git clone fails the build carries on with the incomplete assets
2024-12-05 06:21:42 -08:00
Viačasłaŭ 6fcc19b8ed Update ISSUE template (#17228)
Use the modern user-frendly issue template format
2024-12-03 23:37:11 -08:00
Eric Warmenhoven d642e38423 apple: extract bundled assets.zip based on bundle version (#17231) 2024-12-03 23:37:01 -08:00
Jesse Talavera 1d618bf232 Mark the ffmpeg_camera functions as static
- Other translation units don't need to worry about them
2024-12-03 14:59:14 -05:00
Jesse Talavera 4f88c4eb09 Forgot a comma 2024-12-02 20:41:28 -05:00
Eric Warmenhoven 14a0c186f3 tvOS: check task queue more aggressively (#17227) 2024-12-02 15:51:10 -08:00
Viačasłaŭ f9faa9974a Update ISSUE template (#17226) 2024-12-02 12:08:15 -08:00
Jesse Talavera 29f31b3457 Remove some stray whitespace
- Excluding this trivial change from commits is gonna drive me nuts
2024-12-02 14:11:29 -05:00
Eric Warmenhoven 4d335c4855 iOS: Fix CAMetalLayer nativeScale confusion (#17225) 2024-12-02 07:52:38 -08:00
Jesse Talavera de3abdb556 Add some new camera_driver functions for retrieving a list of devices
- Only ffmpeg will support these right now
2024-12-01 19:34:08 -05:00
Eric Warmenhoven 6475791e07 iOS: fix reopening a recently-creatd file, and build flag cleanup (#17223) 2024-12-01 10:48:52 -08:00
github-actions 900ec71cba Fetch translations from Crowdin 2024-12-01 00:18:14 +00:00
Jesse Talavera ed04e1060a Allocate the ffmpeg camera driver 2024-11-30 18:59:26 -05:00
Jesse Talavera 9c82e9304b Merge branch 'master' into jtg/libavdevice-camera-driver 2024-11-30 16:37:54 -05:00
github-actions 67f2cf56d4 Fetch translations from Crowdin 2024-11-30 00:14:52 +00:00
github-actions b67ee2afeb Fetch translations from Crowdin 2024-11-28 00:15:51 +00:00
zoltanvb 7ee70c9224 Replace checkout action, remove upload (#17217)
Due to node v20 being incompatible with some of the CI images
(too old glibc), the checkout action is replaced by an alternative
which does not need node, and upload is removed for now.
2024-11-27 03:43:07 -08:00
LibretroAdmin a26cfa3787 Revert "Replace checkout action, remove upload (#17214)" (#17215)
This reverts commit 04b53ce692.
2024-11-26 15:12:53 -08:00
zoltanvb 04b53ce692 Replace checkout action, remove upload (#17214)
Due to node v20 being incompatible with some of the CI images
(too old glibc), the checkout action is replaced by an alternative
which does not need node, and upload is removed for now.
2024-11-26 15:10:44 -08:00
LibretroAdmin 03c8c12740 Revert "Revert Qt5 implementation (#17202)" (#17211)
This reverts commit 6de5ebadf9.
2024-11-26 04:20:39 -08:00
Alex KiralyandWindowsDEV 0b05b1e3f4 Fix CloudSync on Windows, enable by default (#16475)
* Make paths portable for CloudSync when building manifest

* Enable CloudSync on Windows builds

* Fix "fetech server file" - Forgot to commit this, oops!

* Fix definition conflict with gzguts.h

* "Enable Cloud Sync for Windows UWP builds"

---------

Co-authored-by: WindowsDEV <[email protected]>
2024-11-25 09:47:27 -08:00
Eric Warmenhoven b2af02f9fb apple: include mrboom core in App Store builds (#17207) 2024-11-25 09:21:07 -06:00
Eric Warmenhoven b6f798655a cloud sync: fix file resurrection (#17204) 2024-11-25 03:18:59 -08:00
Eric Warmenhoven 6a17201d70 ios: fix saving overrides always including libretro_directory (#17205) 2024-11-25 03:18:51 -08:00
Tatsuya79 73efac6815 qt fix input panel (#17206) 2024-11-25 03:08:59 -08:00
github-actions 16123d4fdb Fetch translations from Crowdin 2024-11-25 00:16:07 +00:00
Viačasłaŭ 6de5ebadf9 Revert Qt5 implementation (#17202) 2024-11-24 14:50:56 -08:00
libretroadmin adcf146e7d Buildfix for Qt5 2024-11-24 21:25:37 +01:00
Viačasłaŭ 022288a925 (Qt) Refactoring the QVariant constructting (#17199) 2024-11-24 08:17:00 -06:00
Viačasłaŭ 3e2f0131ae Migrate to Qt6 (#17167)
* (Qt) Migrate to Qt6

* basic support Qt6 with minimal changes required for compiling
* look `moc` in QT_HOST_LIBEXECS

* (Qt) Backward compatibility with Qt5
2024-11-24 04:30:47 -08:00
Eric Warmenhoven b95c15cfdf apple: include noods core on app store (#17198) 2024-11-24 02:50:51 -06:00
github-actions 9b77959a48 Fetch translations from Crowdin 2024-11-24 00:19:41 +00:00
github-actions a894a20b83 Fetch translations from Crowdin 2024-11-23 00:14:25 +00:00
Camden Fullmer 89732bee54 Use the correct case for Xcode. (#17195) 2024-11-22 01:23:11 -08:00
github-actions 522b607809 Fetch translations from Crowdin 2024-11-22 00:15:42 +00:00
github-actions dd24e46ea1 Fetch translations from Crowdin 2024-11-21 00:15:53 +00:00
Antonio Orefice b0db968454 Ozone: Add a touch-sensitive "resume" button in the lower-right corner. (#17192)
This enhancement is particularly useful when using RetroArch with a touchscreen, as it allows you to resume content without needing to navigate back to the quick menu, thereby preserving the current menu screen.
2024-11-20 10:56:35 -08:00
Eric Warmenhoven aff99e3e10 apple: include holani core in App Store builds (#17190) 2024-11-19 00:18:24 -08:00
libretroadmin 2809421d4e Revert "static variables are initialized to '0' automatically as per C rules"
This reverts commit 2a0984b6e4.
2024-11-19 03:03:13 +01:00
libretroadmin 82e4504968 Revert "(pt. 2) static variables are initialized to '0' automatically as per C rules"
This reverts commit 47410df7a3.
2024-11-19 03:03:05 +01:00
libretroadmin 47410df7a3 (pt. 2) static variables are initialized to '0' automatically as per C rules 2024-11-18 15:59:46 +01:00
libretroadmin 2a0984b6e4 static variables are initialized to '0' automatically as per C rules 2024-11-18 15:33:34 +01:00
libretroadmin 62fd7e105d audio_driver_sample - fix potential crash 2024-11-18 14:21:18 +01:00
sonninnos 564dac40c8 XMB: Alpha adjustment for default basic icon (#17188) 2024-11-17 15:11:45 -08:00
github-actions 24b6f96ce5 Fetch translations from Crowdin 2024-11-17 00:16:05 +00:00
github-actions 38520faabf Fetch translations from Crowdin 2024-11-16 00:14:19 +00:00
github-actions 3d8c981ac9 Fetch translations from Crowdin 2024-11-15 00:15:36 +00:00
sonninnos e09039c77f Disabled menu buildfixes (#17184)
* Disabled menu buildfixes

* Skip thumbnail features with menu disabled
2024-11-14 13:44:50 -08:00
Bernhard Schelling c039576441 Fix quick shift key presses getting ignored on dinput driver (#17185)
Because shift keys were ignored in the event message  and only issued during polling, a quick key press and release between polling would get ignored.
This change also fixes left alt up key events getting issued (and sent to the core) twice.
2024-11-14 13:44:41 -08:00
github-actions 61357712c1 Fetch translations from Crowdin 2024-11-14 00:14:39 +00:00
Antonio Orefice 2a56a827e8 Add Frametime Uniforms (#17155)
* Initial implementation of CoreAspect uniform

* float -> float_t

* Possibly fix wii_u building

* vulkan: use float instead of float_t;

* slangp: Advertise support of CoreAspect uniform
by defining _RARCH_HAS_COREASPECT_UNIFORM early in the shader source, just after "#extension GL_GOOGLE_cpp_style_line_directive : require"

* CoreAspect + glsl fix: use glUniform1f()

* Add CoreAspectRot uniform.
It reports CoreAspect value or 1/CoreAspect when the content is rotated by 90 or 270 deg.

* Fixed stupid typo

* Just use _HAS_COREASPECT_UNIFORMS to check for CoreAspect uniforms support (was _RARCH_HAS_COREASPECT_UNIFORMS)

* Rename CoreAspect, CoreAspectRot, _HAS_COREASPECT_UNIFORMS to OriginalAspect, OriginlAspectRot, _HAS_ORIGINALASPECT_UNIFORMS

* GLCore: void Pass::build_semantic_float needs glUniform1f.
...how on earth did it worked for UBO !?

* d3d10,11,12, wrong function called by overlook.

* Add test shader, will remove that before PR

* Fix metal rotated aspect reporting

* remove test shader

* Fix C89 Build

* Use OriginalAspectRotated instead of OriginalAspectRot

* Add CoreFPS and FrameTimeDelta Uniforms.
_HAS_ORIGINALASPECT_UNIFORMS is (#)defined and can be used to query for them.

* add test shader

* remote test shader

* Wrong paste.

* gx2: use float

* wrong indentation

* resolved merge conflict

* fix indentation

* Fix comment/Formatting

* Change uniform name from CoreFPS to OriginalFPS

* underliyng references: core_fps -> original_fps
2024-11-12 19:50:59 -08:00
github-actions 94525363f0 Fetch translations from Crowdin 2024-11-13 00:14:49 +00:00
github-actions 76cb1acefd Fetch translations from Crowdin 2024-11-12 00:14:23 +00:00
github-actions bb808dfc69 Fetch translations from Crowdin 2024-11-11 00:15:03 +00:00
sonninnos 8a853d53af Set CLI content as last start content (#17179) 2024-11-10 15:02:10 -08:00
zoltanvb 2a6de277b1 Extend the sensor/pointer test screen (#17180)
Added extra edge indicators for special -0x8000 coordinates,
added touch press display, and fixed horizontal wheel display.
2024-11-10 15:02:00 -08:00
github-actions 7736237872 Fetch translations from Crowdin 2024-11-10 00:15:44 +00:00
Eric Warmenhoven 876cc19d49 griffin: include all audio filters (#17177) 2024-11-09 08:44:39 -08:00
sonninnos adade1b9da Remove SD_FLAG_LAKKA_ADVANCED from custom viewport options (#17178) 2024-11-09 08:44:24 -08:00
github-actions 0e8d8c4811 Fetch translations from Crowdin 2024-11-09 00:13:43 +00:00
github-actions c752312a19 Fetch translations from Crowdin 2024-11-08 00:14:27 +00:00
sonninnos 522efc333c Menu: Trigger scroll home+end on keyup (#17171) 2024-11-07 07:41:39 -08:00
LibretroAdmin e45bc853ec Revert "Pointer confinement support (opt-in) (#17169)" (#17173)
This reverts commit 90ee413a81.
2024-11-07 07:31:47 -08:00
github-actions b3f3856db2 Fetch translations from Crowdin 2024-11-07 00:14:45 +00:00
zoltanvb 90ee413a81 Pointer confinement support (opt-in) (#17169)
New environment set call to enable a bit more sensible handling of
absolute pointing devices (pointer and lightgun). With the
confinement enabled, pointing devices will not return neither
-0x8000 nor (0,0), which was anyway dependent on the input driver,
instead they will stay at the extreme edge.
2024-11-06 15:19:08 -08:00
sonninnos ae202515f6 Integer scale crash fix (#17170) 2024-11-06 14:35:33 -08:00
sonninnos 767be489d9 Custom aspect ratio safeguards (#17168) 2024-11-06 11:06:21 -08:00
sonninnos c27075d9d6 Ignore other hotkeys with menu toggle (#17165) 2024-11-06 00:19:00 -08:00
github-actions c9fae44b03 Fetch translations from Crowdin 2024-11-06 00:14:28 +00:00
github-actions b0da8b1579 Fetch translations from Crowdin 2024-11-05 00:14:56 +00:00
sonninnos cd4bca9178 Core info page cleanup and firmware icons (#17153) 2024-11-03 18:14:53 -06:00
zoltanvb d5dd3689fc Support for lightgun in Wayland input driver (#17152) 2024-11-03 18:14:41 -06:00
sonninnos 71ed81dc38 Integer scale Y axis half step tweak (#17154) 2024-11-03 18:14:27 -06:00
zoltanvb 3d221f2c99 Fix autoconf profile saving for devices not in their default port. (#17156)
User slot (player #) and joypad driver port is by default the same, but
it can be changed either manually or automatically (reserved device).
Use the correct index for detecting values associated with the port.
2024-11-03 15:59:30 -08:00
Eric Warmenhoven 7dfc001379 tvOS: bring minimum tvOS version of App Store builds back down to 13.0 (#17158) 2024-11-03 15:59:22 -08:00
Eric Warmenhoven f66d214b5c macOS: default to https URLs for cores (#17159) 2024-11-03 15:59:15 -08:00
github-actions 02716844fd Fetch translations from Crowdin 2024-11-03 00:15:59 +00:00
sonninnos 273178b979 Integer scale X axis corrections (#17151)
* Integer scale X axis corrections

* Integer scale: Fall back to normal scale when content is larger than viewport
2024-11-02 09:40:11 -07:00
Antonio Orefice da5ecaa45a Add OriginalAspect and OriginalAspectRot uniforms (#17123)
* Initial implementation of CoreAspect uniform

* float -> float_t

* Possibly fix wii_u building

* vulkan: use float instead of float_t;

* slangp: Advertise support of CoreAspect uniform
by defining _RARCH_HAS_COREASPECT_UNIFORM early in the shader source, just after "#extension GL_GOOGLE_cpp_style_line_directive : require"

* CoreAspect + glsl fix: use glUniform1f()

* Add CoreAspectRot uniform.
It reports CoreAspect value or 1/CoreAspect when the content is rotated by 90 or 270 deg.

* Fixed stupid typo

* Just use _HAS_COREASPECT_UNIFORMS to check for CoreAspect uniforms support (was _RARCH_HAS_COREASPECT_UNIFORMS)

* Rename CoreAspect, CoreAspectRot, _HAS_COREASPECT_UNIFORMS to OriginalAspect, OriginlAspectRot, _HAS_ORIGINALASPECT_UNIFORMS

* GLCore: void Pass::build_semantic_float needs glUniform1f.
...how on earth did it worked for UBO !?

* d3d10,11,12, wrong function called by overlook.

* Add test shader, will remove that before PR

* Fix metal rotated aspect reporting

* remove test shader

* Fix C89 Build

* Use OriginalAspectRotated instead of OriginalAspectRot
2024-11-02 04:04:12 -07:00
Eric Warmenhoven 99610f0de6 macOS: fix setting core download url based on rosetta (#17147) 2024-11-02 04:04:02 -07:00
Cathode Ray Dude e3a0973e30 Added check for filter_exts in compressed file case (#17149) 2024-11-02 04:03:50 -07:00
github-actions 5725e48081 Fetch translations from Crowdin 2024-11-02 00:13:43 +00:00
Eric Warmenhoven a51160a155 apple: small changes necessary to get ffmpeg record driver working (#17145) 2024-10-31 23:42:35 -07:00
github-actions b8b0de3716 Fetch translations from Crowdin 2024-11-01 00:16:20 +00:00
Eric Warmenhoven f175d0e091 tvOS: Add Settings.app option to reset retroarch.cfg (#17143) 2024-10-30 21:49:55 -07:00
Ninoh-FOX 89ca8495e1 better control for sound start/stop in menu is the core has RARCH_NETPLAY_CTL_USE_CORE_PACKET_INTERFACE (#17136) 2024-10-30 17:57:18 -07:00
sonninnos cbafa3b513 Integer scale 'smart' tweak (#17139) 2024-10-30 17:56:56 -07:00
sonninnos 8790178ae2 Win32: Filebrowser 'Show Hidden Files' corrections (#17140) 2024-10-30 17:56:47 -07:00
sonninnos 94f389ae30 Netplay Fade Chat label correction (#17141) 2024-10-30 17:56:38 -07:00
Bernhard Schelling cab85c6f8d Menu support for loading directories as content if a core indicates supports for that (#17142)
A core needs to have "/" in its list of supported extensions to indicate support for loading directories.
If a core additionally supports the disk control interface, also support loading of directories as disk images.
2024-10-30 17:56:30 -07:00
Eric Warmenhoven 5cc9721ea3 Fix webos github action (#17138) 2024-10-30 09:38:19 -07:00
Eric Warmenhoven 1f99ba89ca ios: buildfix (#17137) 2024-10-30 07:03:11 -07:00
Eric Warmenhoven cd574f7f33 tvOS: Add WebDAV server for adding files more easily (#17135)
Also update to latest (last) version of GCDWebServer.
2024-10-29 21:07:47 -07:00
github-actions 3b465be243 Fetch translations from Crowdin 2024-10-30 00:15:03 +00:00
Eric Warmenhoven 56810c4a46 apple: default to mfi controller instead of sdl2 (#17133) 2024-10-29 12:05:48 -07:00
Eric Warmenhoven a26f6f6b45 webdav: fixes for reauth and parallelism (#17132) 2024-10-29 12:03:46 -07:00
sonninnos 8ee6561a26 Vulkan: Use separate matrix for menu (#17134) 2024-10-29 12:03:37 -07:00
github-actions cb7cd6ef3b Fetch translations from Crowdin 2024-10-29 00:15:08 +00:00
Eric Warmenhoven f887ebe301 ios9: buildfix (#17131) 2024-10-28 16:38:19 -07:00
zoltanvb ede9ddcd05 Tests for pointer device and associated buttons. (#17130)
Sensor screen is extended with a pointer (a single white pixel)
and a few indicators for the mouse and lightgun buttons. Pointer
type is selectable from core options (mouse, lightgun, pointer,
old relative lightgun). An extra square indicator shows when
absolute pointer types get near the edge / to the very edge /
return to 0,0 position.
2024-10-28 14:33:17 -07:00
github-actions 320bd8b750 Fetch translations from Crowdin 2024-10-28 00:15:32 +00:00
Eric Warmenhoven dbf6c19209 macOS: generate up key event for command keys (#17124) (#17126) 2024-10-27 12:42:41 -07:00
Jamiras 758c61afbe remove RC_CLIENT define (#17127) 2024-10-27 12:42:33 -07:00
github-actions a0bcf7945d Fetch translations from Crowdin 2024-10-27 00:15:59 +00:00
sonninnos c847b02206 Integer overscale GPU screenshot crash fixes (#17118) 2024-10-26 06:45:45 -07:00
Eric Warmenhoven 98c7f20eae iOS: Fix some minor refresh issues (#17112) 2024-10-26 06:45:37 -07:00
Eric Warmenhoven b955a2ff8b webdav: add logging around http transactions to try to track failures (#17114) 2024-10-26 06:45:17 -07:00
zoltanvb 55d6a036a7 Changes up to 2024-10-23 (#17116) 2024-10-26 06:45:02 -07:00
sonninnos 771dabbf56 Fix save state screenshot visibility (#17119) 2024-10-26 06:44:54 -07:00
zoltanvb 66eead3afa Move cacert.h out of deps/, since it does not belong there. (#17122) 2024-10-26 06:44:45 -07:00
github-actions a118963dc9 Fetch translations from Crowdin 2024-10-26 00:14:01 +00:00
github-actions 562e4ba40f Fetch translations from Crowdin 2024-10-25 00:14:56 +00:00
github-actions be92b974d2 Fetch translations from Crowdin 2024-10-24 00:15:08 +00:00
github-actions 192c992725 Fetch translations from Crowdin 2024-10-23 00:14:50 +00:00
github-actions fe9d890331 Fetch translations from Crowdin 2024-10-22 00:14:55 +00:00
Antonio Orefice e1b2e29d51 slang shaders: add support for __has_include like C++17 macro. (#17109)
* slang shaders: add support for __has_include like C++17 macro.
This adds a new #pragma include_if_exist "filename" directive that acts like #include statements,
but does not return error if the file does not exists.

* removed unuseful define
2024-10-21 14:45:44 -07:00
pstefandpstef 790deebe42 Silence GCC 14 warning [-Warray-bounds=] (#17110)
* Silence GCC 14 warning [-Warray-bounds=]

GCC reports a couple of warnings like this example:
libretro-common/cdrom/cdrom.c:395:14: warning: array subscript 6 is outside array bounds of 'unsigned char[6]' [-Warray-bounds=]
  395 |       cmd[6] = cmd[3];
      |       ~~~~~~~^~~~~~~~
libretro-common/cdrom/cdrom.c: In function 'cdrom_unlock':
libretro-common/cdrom/cdrom.c:1268:18: note: at offset 6 into object 'cdb' of size 6
 1268 |    unsigned char cdb[] = {0x1E, 0, 0, 0, 0x2, 0};

The static analysis heuristic doesn't consider the fact that the writes to cmd[6] and later only happen under the condition that `if (cmd[0] == 0xBE || cmd[0] == 0xB9)` and that in all of those cases the array passed is wide enough. So this is a false positive.

Nevertheless, there seems to be an easy way to silence the warning without disabling it: just require all arrays passed to be at least 9 bytes long and explicitly set the size of those arrays that have been shorter to 9.

* Work around the requirement of C89

I used a C99 construct, but this is easy to work around
with a run-time check.

* Restore the check for non-null cmd

It was obsoleted in a previous version, but is needed back now.

---------

Co-authored-by: pstef <[email protected]>
2024-10-21 14:45:23 -07:00
github-actions fd9f242895 Fetch translations from Crowdin 2024-10-21 00:15:24 +00:00
github-actions 19b8946372 Fetch translations from Crowdin 2024-10-20 00:16:09 +00:00
github-actions ec4c11268b Fetch translations from Crowdin 2024-10-19 00:13:50 +00:00
Ninoh-FOX 09979e26b9 fixed audio drivers in RARCH_NETPLAY_CTL_USE_CORE_PACKET_INTERFACE (#17105)
* fixed audio drivers in RARCH_NETPLAY_CTL_USE_CORE_PACKET_INTERFACE

fixed audio problem with menu toggle with the new network fuction

* Fix type space
2024-10-18 13:10:42 -07:00
github-actions 9c7919dc58 Fetch translations from Crowdin 2024-10-18 00:14:45 +00:00
sonninnos 2b8d743a85 GLUI icon fixes (#17102) 2024-10-16 12:00:07 -07:00
sonninnos 73fc26c132 RGUI integer scale fix (#17099) 2024-10-15 19:08:58 -07:00
github-actions 73b9a5e899 Fetch translations from Crowdin 2024-10-16 00:14:56 +00:00
github-actions de38db7d10 Fetch translations from Crowdin 2024-10-15 00:14:20 +00:00
sonninnos 84b58dd001 Pixel perfect integer scaling improvements (#17098) 2024-10-14 14:44:10 -07:00
Joey Parrish b36d8da5d3 docs: Add missing command to emscripten docs (#17097) 2024-10-14 04:21:18 -07:00
neil4 f85c9693a0 Combine menu entries for RunAhead and Preemptive Frames (#17093) 2024-10-14 04:21:09 -07:00
github-actions f886f620df Fetch translations from Crowdin 2024-10-14 00:15:15 +00:00
github-actions 1e4b81c6b2 Fetch translations from Crowdin 2024-10-13 00:15:42 +00:00
Eric Warmenhoven d362c88ac2 osx: prefer moltenvk from retroarch-apple-deps (#17086) 2024-10-12 11:59:17 -07:00
Jamiras ec314b9e43 update to rcheevos 11.6 (#17088) 2024-10-12 11:59:08 -07:00
github-actions 228426880b Fetch translations from Crowdin 2024-10-11 00:14:36 +00:00
Eric Warmenhoven c60f4603cd apple: Include vintaged stella2023 core in app store builds (#17085) 2024-10-10 04:57:19 -07:00
github-actions feb8dcede4 Fetch translations from Crowdin 2024-10-08 00:14:16 +00:00
LibretroAdmin c8fb1a2d6c Update WiiU.yml 2024-10-07 03:39:12 -07:00
Eric Warmenhoven a565cae5d8 macOS: Update App Store packaging script (#17081) 2024-10-07 03:37:56 -07:00
github-actions 5d433adfc3 Fetch translations from Crowdin 2024-10-07 00:15:13 +00:00
Viačasłaŭ d544c78020 Bring the Chuncheon relay server back into intl (#17077) 2024-10-06 14:37:19 -07:00
github-actions 3c10575436 Fetch translations from Crowdin 2024-10-06 00:15:52 +00:00
Joe Osborn fbf2c70e0d replay format extended to support external tools (#17042)
- replays now start each frame with the number of key events (8 bit
unsigned int, then key events) and the number of input events (16 bit
unsigned int, then the input events)
- this makes it possible to parse replay files without any core
loaded, and makes replays more portable if cores change their polling
strategies
- external tools can now parse replay files
- old (vsn 0) replays will still play back, but new (vsn 1) replays
will not play on old RA
- replay files grow faster now, with each input poll now taking 8
bytes instead of 2
2024-10-04 12:47:34 -07:00
Viačasłaŭ c84962a5e8 Fix displaying entry after renaming (#17072) 2024-10-04 12:47:12 -07:00
Eric Warmenhoven 4d999c24a8 macOS: fix steam automation build (#17073) 2024-10-04 12:46:59 -07:00
Eric Warmenhoven 7ae8597765 macOS: Create App Store build (#17074) 2024-10-04 12:46:51 -07:00
github-actions e1e341d003 Fetch translations from Crowdin 2024-10-04 00:14:42 +00:00
Eric Warmenhoven 48b71d5cf8 tvOS: Fix creation of frameworks for App Store build (#17070) 2024-10-02 17:32:58 -07:00
github-actions b112b5b9cc Fetch translations from Crowdin 2024-10-03 00:14:26 +00:00
bulzipke d5c6a4f997 Add east asian relay server (#17055) 2024-10-01 17:36:58 -07:00
sonninnos 5e2409471a Dinput: Mouse pointer send proper return value instead of flag value (#17067) 2024-10-01 17:36:49 -07:00
Viačasłaŭ 3019b926c2 Fix typos (#17068) 2024-10-01 17:36:33 -07:00
Eric Warmenhoven ed574cd059 iOS/tvOS: Remove AltKit (#17069) 2024-10-01 17:36:02 -07:00
Eric Warmenhoven 1d2c9a8373 macOS: minor updates to GL build to fix compatibility with Xcode 16 (#17064) 2024-09-30 07:02:37 -07:00
github-actions f484ceffcf Fetch translations from Crowdin 2024-09-30 00:15:01 +00:00
Alex Kiraly 61e8dfc860 Enable Cloud Sync on Android (non-SSL) (#17060) 2024-09-29 11:12:26 -07:00
sonninnos 1cc2210185 Vulkan: Negative viewport position correction (#17063) 2024-09-29 11:12:12 -07:00
sonninnos 1e1b24c359 Show also current frame cache size in stats (#17056) 2024-09-28 23:53:26 -05:00
sonninnos 7cb1543edd Use frame cache size in integer scaling instead of av info geometry (#17057) 2024-09-28 23:53:14 -05:00
Alex Kiraly d779654068 Disallow Cloud Sync with HTTPs when HAVE_SSL is disabled (#17059) 2024-09-28 23:52:54 -05:00
sonninnos ea9a086f82 MSVC buildfix (#17061) 2024-09-28 23:52:37 -05:00
github-actions 68c5b1f7a3 Fetch translations from Crowdin 2024-09-29 00:16:12 +00:00
github-actions d8927bea04 Fetch translations from Crowdin 2024-09-28 00:13:41 +00:00
Colin Kinloch 63bd0b75d5 Reapply "wayland: Commit viewport resizes (#16419)" (#17026) (#17030)
This reverts commit 3ee3f2ae52.

Removing roundtrips seems to keep things snappy whilst fixing COSMIC.
2024-09-27 14:37:47 -07:00
Joe Osborn abe7d01e74 Report replay frame number for active_replay stdout api (#17039)
This changes the replay movie's frame_ptr (a 20-bit number used to
point to a log of file offsets) into a frame counter, which is masked
against the 20-bit pattern for use in the file offset log but also
functions as a time index into the replay.  Right now that is reported
in `GET_CONFIG_PARAM active_replay` but in the future it could be used
to show how far into the replay we are during playback or how long the
replay is during recording.
2024-09-27 14:37:31 -07:00
gouchi 8a6eb2dfa8 Add Redox OS to the list of supported operating systems (#17040) 2024-09-27 14:37:20 -07:00
sonninnos ecd626ec5e Automatic Frame Delay: More improvements (#17041) 2024-09-27 14:37:11 -07:00
Eric Warmenhoven 6403605f64 macOS: fix how vulkan gets linked/bundled (#17043) 2024-09-27 14:37:00 -07:00
Eric Warmenhoven 73439eeff8 iOS/tvOS: Add Beetle PC-FX to App Store build (#17044) 2024-09-27 14:36:53 -07:00
Eric Warmenhoven ea1b6852c5 apple: switch from MTKView to CAMetalLayer for vulkan (again) (#17045) 2024-09-27 14:36:45 -07:00
sonninnos 11103347c8 Fix playlist search index in XMB+Ozone (#17047) 2024-09-27 14:36:32 -07:00
Eric Warmenhoven d7839bbd7d iOS: Let RApplication handle touch events when TouchMouse not enabled (#17046) 2024-09-27 14:36:22 -07:00
github-actions 443348f014 Fetch translations from Crowdin 2024-09-27 00:14:54 +00:00
github-actions cae587f7a6 Fetch translations from Crowdin 2024-09-26 00:14:05 +00:00
Eric Warmenhoven 10a1154b06 Avoid calling strlcpy when copying string onto itself (#17031) 2024-09-24 19:24:46 -05:00
Colin Kinloch c90f7aba6c Use reverse DNS name for desktop file and icon (#16449)
Reverse DNS being com.libretro.RetroArch
2024-09-23 09:03:48 -07:00
Colin Kinloch ee55623678 wayland: Check for relative_pointer support (#17029) 2024-09-23 08:50:34 -07:00
alphabitserial 3ee3f2ae52 Revert "wayland: Commit viewport resizes (#16419)" (#17026)
This reverts commit 08496b302c.
2024-09-22 23:44:48 -07:00
github-actions c43bc65c7e Fetch translations from Crowdin 2024-09-23 00:14:44 +00:00
sonninnos 0c468f9a44 Honor 'perfcnt_enable' in logging (#17022) 2024-09-20 20:09:21 -07:00
sonninnos 4b177d0ac7 Refresh rate switching fixes and cleanups (#17021) 2024-09-20 20:09:02 -07:00
pastalian 4ce7dd6fd5 Explicitly cast to a pointer in wayland builds (#17019)
The build with `--enable-wayland --disable-kms` has a part where an
unsigned long is passed as a void*, but GCC 14 enforces
-Werror=int-conversion, causing the build to fail.
https://gcc.gnu.org/gcc-14/porting_to.html#int-conversion
2024-09-20 14:19:24 -07:00
github-actions 17c899fac3 Fetch translations from Crowdin 2024-09-20 00:14:10 +00:00
Eric Warmenhoven 187497eea8 Revert "apple: switch from MTKView to CAMetalLayer for vulkan (#16959)" (#17017)
This reverts commit 95d53183f5.
2024-09-19 11:48:40 -07:00
github-actions bec4107412 Fetch translations from Crowdin 2024-09-19 00:14:15 +00:00
sonninnos dbfb88721b Automatic Frame Delay: Fix special overtime edge case (#17013) 2024-09-18 02:45:07 -07:00
sonninnos d08b867e7d Fix pause toggle to not clear fast-forward state (#17010) 2024-09-17 10:23:12 -07:00
sonninnos 6713e3b7f7 (Vulkan) Prefer IMMEDIATE mode without vsync (#17009)
* (Vulkan) Prefer IMMEDIATE mode without vsync

* Clamp max_swapchain_images and hard_sync_frames

* (Vulkan) Improve fastforward frameskip option hack
2024-09-17 10:23:02 -07:00
github-actions 61a3397b67 Fetch translations from Crowdin 2024-09-17 00:12:22 +00:00
Eric Warmenhoven 1211b2d56a Fix steam build (#17007) 2024-09-16 13:15:19 -07:00
libretroadmin bbfe078515 Reduce char arrays that are 8192 of size or bigger - reduce
them to PATH_MAX_LENGTH * 2 instead
2024-09-15 22:21:22 +02:00
github-actions b1aa7522fd Fetch translations from Crowdin 2024-09-15 00:15:17 +00:00
libretroadmin dc7473d046 See if this prevents some warnings 2024-09-15 00:03:48 +02:00
libretroadmin 0a396f0e71 Silence warning - second param for rc_alloc should be of type int32_t 2024-09-14 23:42:31 +02:00
Eric Warmenhoven b557bc9523 Fixing compiler warnings (#17001) 2024-09-14 13:11:20 -07:00
zoltanvb 39c48f7310 Support RETRO_ENVIRONMENT_GET_FILE_BROWSER_START_DIRECTORY (#17002) 2024-09-14 12:15:27 -07:00
ItsZariep 580efd41e4 Fix Selenium theme definition position (#17000) 2024-09-14 12:15:18 -07:00
neil4 53081f1794 Preemptive Frames updates (#17003)
* Preemptive Frames: input_poll and input_state improvements

- Check pointing devices when used by core; ignore input_libretro_device
- Use stored mouse x,y input state (lower level call might flush deltas)
- Remove port mapping code (unnecessary now)
- Fewer memsets

* Add Preemptive Frames to Qt options menu
2024-09-14 12:14:36 -07:00
github-actions 7601df9a4c Fetch translations from Crowdin 2024-09-14 00:13:13 +00:00
libretroadmin 71326a7eaa fill_pathnam_expanded_and_absolute - pass size parameter to function 2024-09-13 20:38:02 +02:00
libretroadmin bd8ed67205 Dehardcode size parameter for strlcpy call 2024-09-13 20:22:20 +02:00
Eric Warmenhoven 9135065bfc Fix strlcpy being passed a length that's too long (#16998) 2024-09-13 11:11:24 -07:00
Eric Warmenhoven 381c3a5317 iOS/tvOS: flush save files on backgrounding (#16996) 2024-09-12 17:58:11 -07:00
github-actions 33c5c5341b Fetch translations from Crowdin 2024-09-13 00:14:00 +00:00
zoltanvb 05844c649f Autoconfig extension with alternative name/vid/pid (#16990)
If there are several variants of a controller, but their button
layout is exactly the same, allow alternative identifiers, e.g.:
input_device_alt1
input_vendor_id_alt3
input_product_id_alt9
2024-09-12 11:50:46 -07:00
Eric Warmenhoven be7645024c ozone: some fixes for better touchscreen handling (#16994) 2024-09-12 11:15:10 -07:00
Viačasłaŭ bb3e1d8be4 Make auto state while loading new content on the fly (#16835) 2024-09-12 08:24:03 -07:00
Eric Warmenhoven 2ecf5e79c5 apple: minor cleanup of Xcode project files (#16992) 2024-09-11 20:10:53 -07:00
Eric Warmenhoven 801a4af6f2 tvOS: better handling of siri remote (#16991) 2024-09-11 19:31:58 -07:00
github-actions 08dd2a8f7b Fetch translations from Crowdin 2024-09-12 00:14:19 +00:00
Eric Warmenhoven 6e2f0a4f30 apple: don't allow opening sdl2 microphone if not using sdl2 audio (#16989) 2024-09-11 12:33:41 -07:00
libretroadmin 14b1af9e1a Revert "Start reducing size of video_shader_pass struct to reduce"
This reverts commit 0ab10f73c2.
2024-09-11 19:17:20 +02:00
libretroadmin 787c1e1130 video_monitor_compute_fps_statistics - turn static 2024-09-11 17:23:28 +02:00
libretroadmin 23bd9686e5 Silence unused variable warnings 2024-09-11 15:48:43 +02:00
Vladimir Serbinenko dd489312ea Enable chd hashing on libnx (#14034) 2024-09-11 06:29:59 -07:00
libretroadmin 8abe49abb4 Build with vendor-neutral OpenGL implementation by doing
./configure --disable-glx
2024-09-11 15:29:06 +02:00
Eric Warmenhoven 853c2cc14e iOS: A few changes to fix/improve app store submission (#16988) 2024-09-10 22:13:25 -07:00
Jamiras a15d8d558a (cheevos) use translated strings for achievement messages (#16987) 2024-09-10 23:31:34 -05:00
zoltanvb 4e063934fd Add option to disable analog stick menu navigation (#16743)
Two new settings added to Settings / Input / Menu Control:
- disable left analog stick in menu navigation
- disable right analog stick in menu navigation

Since the corresponding logic is already a distinct logic flow in
input driver, no change was necessary to analog-to-digital settings
or the like.
2024-09-10 18:13:31 -07:00
Emanuel Haupt 7a0d568f04 Incorporate FreeBSD port patches (#16221)
This commit imports a series of patches from the FreeBSD port of RetroArch to
improve build compatibility and address specific issues encountered in the
FreeBSD environment. These patches, sourced from the FreeBSD Ports collection
(https://cgit.freebsd.org/ports/tree/games/retroarch/files), have been adapted
and tested to ensure they integrate seamlessly with the current build process.
2024-09-10 18:11:40 -07:00
Jay Paul e61b3ae2ba Sort Remaps by Connected Controller (#16747)
* sort remaps by connected controller if option is enabled

* ensure dir name is valid based on input device name

* Fix comments

* Fix forbidden mixed declarations and code

* fixing build errors

* fix additional build warning/error

* Resolved code review change requests

* Changed strlcat to strlcpy as per recommendation

* Retrigger checks

* Use proper path separator.

* Ensure default value is toggled off.

* Ensure that gamepad device name is valid.
2024-09-10 17:39:35 -07:00
zoltanvb 8c2d2f5d74 Make individual thumbnail downloads obey filename match setting. (#16826) 2024-09-10 17:36:25 -07:00
Jason Breitweiser d4e5f7ac4b Crash when pressing B button on playlists #16951 (#16971)
* Added check for null thumbnail path.  Applies to 16951

* Moved null check up the code to cover multiple accesses to the thumbnail path.

* Checked for null values before trying to get logo icons for playlists

* Rolled back the thumbnail_path_gfx changes and instead added
deinitialization of the icon thumbnails when a list was not a playlist.
2024-09-10 16:15:38 -07:00
libretroadmin 364d977027 (menU_driver) small cleanup 2024-09-11 01:13:50 +02:00
Eric Warmenhoven e38b9ff734 Fix scanning .chd files (#16986) 2024-09-10 15:47:37 -07:00
libretroadmin 4d88381481 Reduce some variables 2024-09-11 00:27:37 +02:00
libretroadmin d2eed0dabe Remove unused referenced variables 2024-09-10 23:39:14 +02:00
libretroadmin 5a539a31bd Transfer structs/enums over to task_screenshot.c 2024-09-10 23:17:19 +02:00
Eric Warmenhoven 4d20d08080 fix to avoid reacquiring a mutex reentrantly (#16985) 2024-09-10 12:03:04 -07:00
libretroadmin 8ba57c77e0 (winraw_input) Simplify code 2024-09-10 18:18:26 +02:00
libretroadmin 5892551f75 Avoid strlen calls in video_shader_replace_wildcards 2024-09-10 16:33:08 +02:00
libretroadmin 29f011acef * Inline find_last_slash
* explore_load_icons - fill_pathname_slash is equivalent to usage
of strlen here, no need to call strlen
2024-09-10 16:02:06 +02:00
libretroadmin 046c2375e7 Downsize big char arrays in shader structs - a lot of these get
allocated on the stack so this would cost a lot of memory
2024-09-10 07:03:50 +02:00
Eric Warmenhoven cfbfd01f38 iOS: Last bits of iOS 12 support, including loading an older MoltenVK library (#16982) 2024-09-09 21:27:29 -07:00
libretroadmin c961e79a0c Variable simplification 2024-09-10 06:25:00 +02:00
libretroadmin 3c23b2d04a (WASAPI) wasapi_write now one function, no more leaf function calls 2024-09-10 04:45:28 +02:00
libretroadmin 59ddb6731f Refactor WASAPI driver
- Use flags instead of bools
- Rewrite wasapi_write function
2024-09-10 04:12:10 +02:00
libretroadmin f2ad4071bc Buildfix for Android 2024-09-10 03:00:37 +02:00
libretroadmin 84508b2168 RARCH_LOG_V - lower char buffer from 2048 to 1024 2024-09-10 02:48:24 +02:00
libretroadmin f4ed638347 Rewrite libretro-common task_queue, use flags 2024-09-10 02:42:07 +02:00
libretroadmin 36bcbefc96 Cleanup some char variables - title variables will always be 128
in size
2024-09-10 00:15:23 +02:00
libretroadmin 285e38bd87 (video_shader_parse) Cleanups 2024-09-09 22:47:33 +02:00
libretroadmin 8db629ebae (Menu) Cleanups pt. 2 2024-09-09 22:18:23 +02:00
libretroadmin 6020877043 Cleanups 2024-09-09 22:01:37 +02:00
libretroadmin 13cf0fc79c Add more TODO/FIXME notes 2024-09-09 20:19:29 +02:00
libretroadmin 55f737195e (Winraw) Use flags 2024-09-09 19:06:43 +02:00
libretroadmin 0ab10f73c2 Start reducing size of video_shader_pass struct to reduce
massive size of video_shader struct
2024-09-09 18:28:38 +02:00
libretroadmin c79b02b1c8 Dehardcode some more variable sizes 2024-09-09 16:42:02 +02:00
libretroadmin 7f87a46744 More downsizing of variables 2024-09-09 16:18:32 +02:00
libretroadmin 27ffd4f00b Buildfix 2024-09-09 16:02:15 +02:00
libretroadmin 73e5d955c3 Downgrade some more variables to NAME_MAX_LENGTH 2024-09-09 16:01:29 +02:00
libretroadmin 998edca29d Update/rearrange settings struct and also add FIXME notes 2024-09-09 15:38:33 +02:00
libretroadmin fca38419f5 Add more TODO/FIXME notes 2024-09-09 15:34:32 +02:00
libretroadmin 0c91d77ae3 C89_BUILD buildfix 2024-09-09 15:27:52 +02:00
libretroadmin e675ea7e29 Variable cleanups - add TODO/FIXME notes for spurious variable sizes 2024-09-09 15:22:08 +02:00
libretroadmin 2be58b470d BUildfix 2024-09-09 05:51:20 +02:00
libretroadmin b8391e233f * PATH_MAX_LENGTH redefined from 4096 to 2048
* Massive reduction in heap space allocation, going from settings struct
264kb to 119Kb
* Use NAME_MAX_LENGTH for base paths/names, etc
* Use DIR_MAX_LENGTH for directory sizes
2024-09-09 05:47:32 +02:00
libretroadmin 01a9745f5b Settings struct now has a flags variable 2024-09-08 22:49:26 +02:00
libretroadmin 9efb498bde (config_file) Use flags 2024-09-08 18:12:12 +02:00
libretroadmin f4e2fbb660 (Menu/MaterialUI/RGUI) Integrate more bool flags into flags 2024-09-08 17:53:39 +02:00
Eric Warmenhoven 0d6b249dbc iOS 9 build fix (#16980) 2024-09-08 07:59:19 -07:00
libretroadmin d60d320e76 Simplified parameter parsing to have all shader formats use the same slang method
(when HAVE_SLANG and HAVE_SPIRV_CROSS are defined) - backport of HyperSpaceMadness' PR
2024-09-08 15:25:40 +02:00
Eric Warmenhoven 42f66adbf2 iOS/tvOS: minor compiler flag optimization/cleanup (#16974) 2024-09-08 03:10:38 -07:00
Eric Warmenhoven d228c9d469 iOS: More fixes to enable running on iOS 12 (#16978) 2024-09-08 03:10:30 -07:00
zoltanvb 8562c16b4c Fine-tune device reservation. (#16979)
- add reserved device check against device display name as well
- selected device name matching in menu with or without vid:pid
- cosmetical change in test input file
2024-09-08 03:10:21 -07:00
github-actions 5fcec5d342 Fetch translations from Crowdin 2024-09-08 00:14:53 +00:00
Jesse Talavera c0715fc420 Fix incorrect documentation for retro_audio_sample_batch_t (#16965)
retro_audio_sample_batch_t returns the number of processed frames, *not* samples.

- See `audio_driver_sample_batch` in `audio_driver.h`
2024-09-07 07:58:52 -07:00
github-actions c87a88f456 Fetch translations from Crowdin 2024-09-07 00:28:28 +00:00
Francisco Javier Trujillo Mata fe4a15b15c Fix pthread support (#16970)
* enabled pthread usage

* unload modules before loading back
2024-09-06 15:45:15 -07:00
Eric Warmenhoven e34b57fd97 iOS: Add @available tags to enable compilation back to iOS 12 (#16969) 2024-09-06 14:57:36 -07:00
zoltanvb 17fefa7891 Invoke menu icon thumbnail loading only if needed. (#16966) 2024-09-06 11:33:06 -07:00
github-actions 5e14f7b914 Fetch translations from Crowdin 2024-09-06 00:13:57 +00:00
libretroadmin 22f4441cdd C89 buildfix 2024-09-05 17:44:05 +02:00
libretroadmin 0f7a665439 Resync libretro-common 2024-09-05 11:49:08 +02:00
libretroadmin 4b86886d30 (libretro-common) stdstring - get rid of these pointless functions 2024-09-05 11:44:57 +02:00
libretroadmin 8491aaf659 Shave off some bool variables from structs that are allocated a
lot on heap
2024-09-05 11:35:15 +02:00
libretroadmin 5fbb19ea85 Optimize some flag setting 2024-09-05 11:13:57 +02:00
libretroadmin 91516cdd49 (Menu input) Use flags 2024-09-05 10:58:29 +02:00
libretroadmin 99a763c4e8 Global - turn bools into flag 2024-09-05 10:05:57 +02:00
libretroadmin 070e018c6c (Playlist) Use flags 2024-09-05 09:50:11 +02:00
libretroadmin 239ea7ef0e (Ozone) Move some more bools into flags 2024-09-05 08:58:24 +02:00
libretroadmin 77eb564abc (menu_setting) turn default_value into flag 2024-09-05 08:35:58 +02:00
Antonio Orefice 139f461d06 Check for shader parameter step set to 0.0 and handle it outside the otherwise neverending loop; should fix #16958 (#16962) 2024-09-04 22:53:24 -07:00
Eric Warmenhoven 43e5492002 apple: to use the microphone apple requires we ask, and be entitled (#16964) 2024-09-04 22:53:06 -07:00
Eric Warmenhoven 60ee32b879 apple: display server, including ProMotion support (#16963) 2024-09-04 22:52:59 -07:00
github-actions 0c6a93311c Fetch translations from Crowdin 2024-09-05 00:13:49 +00:00
sonninnos 5ed4a3c291 Input reserved device menu item cleanup (#16946) 2024-09-04 04:01:33 -07:00
zoltanvb 98c79b3f14 Add savestate wraparound. (#16947)
When save state auto indexing is enabled, and maximum kept states
are limited, wrap around after reaching the configured maximum.

A gap in the indexing is used to keep track of most recent state.
If e.g. maximum kept amount is 5, then indexes 0..5 will be used,
if 3 is empty, most recent state is 2.
2024-09-03 22:01:41 -07:00
ItzSelenux cbfe2a7279 Add Selenium theme for Ozone (#16960) 2024-09-03 22:00:14 -07:00
Eric Warmenhoven 156b9f3487 iOS: Use BaseConfig xcconfig file, shared with macOS (#16955) 2024-09-03 19:02:08 -07:00
Eric Warmenhoven 95d53183f5 apple: switch from MTKView to CAMetalLayer for vulkan (#16959) 2024-09-03 19:02:00 -07:00
github-actions a32c43cc3a Fetch translations from Crowdin 2024-09-04 00:13:40 +00:00
github-actions 329b16d267 Fetch translations from Crowdin 2024-09-03 00:13:17 +00:00
Eric Warmenhoven 76026398ad Update Vulkan headers to v1.1.130 (#16952) 2024-09-02 08:39:44 -07:00
zoltanvb 585e70ec6d Updates up to 2024-08-31 (#16948) 2024-09-01 20:15:04 -07:00
github-actions 7e70851d38 Fetch translations from Crowdin 2024-09-02 00:14:07 +00:00
github-actions 3c93054f5b Fetch translations from Crowdin 2024-09-01 00:16:16 +00:00
michael-leroy 73b456e307 Fixes mouse cursor bug that prevents mouse movement when the left/right mouse button is held down. (#16942) 2024-08-31 04:54:20 -07:00
Eric Warmenhoven b3af19f65f tvOS: Minor fixes to run correctly on tvOS 13 (#16944) 2024-08-31 04:54:11 -07:00
github-actions 810fe4545f Fetch translations from Crowdin 2024-08-31 00:13:44 +00:00
github-actions 3d272d4714 Fetch translations from Crowdin 2024-08-30 00:14:00 +00:00
sonninnos 3f8dc5c49d Remove 'Frame Rest' (#16936) 2024-08-29 03:35:09 -07:00
github-actions fe870bc2e0 Fetch translations from Crowdin 2024-08-29 00:13:48 +00:00
github-actions 80a263eb4c Fetch translations from Crowdin 2024-08-28 00:13:32 +00:00
Ethan Lee b74932a05a vulkan: VK_SUBOPTIMAL_KHR can be treated as success, not failure (#16930)
Fixes #16917
2024-08-27 10:23:10 -07:00
Eric Warmenhoven 4503b3989f iOS: Better mouse grab (#16933) 2024-08-27 01:53:18 -07:00
sonninnos 391b46c3be Automatic Frame Delay refactor (#16929) 2024-08-27 01:53:10 -07:00
github-actions a3f13b2268 Fetch translations from Crowdin 2024-08-25 00:14:13 +00:00
Jamiras 55057d7d5f show rcheevos game image in discord rich presence (#16924) 2024-08-24 16:02:20 -07:00
Eric Warmenhoven 6cf338d91a iOS/tvOS: Speed up app store builds by downloading cores in parallel (#16919) 2024-08-24 02:34:15 -07:00
Joe Osborn 439c672c22 Support viewport bias with integer overscale and custom aspect ratios (#16915)
* support integer overscale with bias and xy offsets

* support custom aspect ratios with viewport bias
2024-08-22 12:40:40 -07:00
Eric Warmenhoven 800be5530f iOS: Better handling of physical mice/magic keyboard trackpad (#16911) 2024-08-22 12:11:16 -07:00
github-actions 47397f07a1 Fetch translations from Crowdin 2024-08-22 00:13:17 +00:00
Aleksander Mazur 35082c9538 Add simple WAV recording driver (audio only) (#16900)
Records unprocessed sound to a RIFF/WAVE (.wav) file,
up to 4 GB, no deps, no threads.
2024-08-21 12:57:45 -07:00
Jesse Talavera 518d719f38 Fix a build error on iOS (#16903)
- Includes certain newly-required headers
- Makes the use of the `IOS` macro consistent with other platform checks
2024-08-21 12:57:02 -07:00
github-actions fa0e6cc3ff Fetch translations from Crowdin 2024-08-21 00:13:05 +00:00
zoltanvb 57c17d559f Use CLI shader path for shader dir init if present (#16196)
If shader is given on command line, use it for directory init.
Fixes #16181, shader cycle should now work using the dir of the
shader passed to CLI.
2024-08-19 09:55:20 -07:00
github-actions 819a9583cc Fetch translations from Crowdin 2024-08-19 00:13:27 +00:00
kwyxz fab86199a8 fixed warning + allow cli arguments on Haiku (#16887) 2024-08-17 09:58:49 -05:00
Eric Warmenhoven da8c0accd6 iOS/tvOS: Bring neon defines in line with macOS arm64 build (#16885) 2024-08-17 09:57:36 -05:00
hunterk 1e94c92dbf improve GLES version directive granularity (#16888) 2024-08-17 09:57:17 -05:00
github-actions bf25bd9149 Fetch translations from Crowdin 2024-08-17 00:12:16 +00:00
Eric Warmenhoven b56547f9dd macOS: optional library inclusion (#16877) 2024-08-15 15:27:26 -07:00
Eric Warmenhoven 5b04c060e1 glui: Honor menu_show_sublabels option (#16878) 2024-08-15 15:27:17 -07:00
Eric Warmenhoven 079ef42a40 cloud sync: fix bug from #16871 (#16879)
https://github.com/libretro/RetroArch/pull/16871/files#r1715823706
2024-08-15 15:27:09 -07:00
kwyxz 4016b2524b Allow building RetroArch with menu disabled (#16881)
* allow building with --disable-menu --disable-cheevos --disable-qt --disable-slang

* allow building with cheevos while disabling menus and qt
2024-08-15 15:26:59 -07:00
Eric Warmenhoven 833bf2e616 iOS/tvOS: minor performance tweaks (#16882)
- it's ok to sleep in the foreground
- ios always has focus, otherwise it's not running
- don't keep reparsing strings
2024-08-15 15:26:51 -07:00
github-actions a759e60148 Fetch translations from Crowdin 2024-08-15 00:13:22 +00:00
github-actions 7157e265d2 Fetch translations from Crowdin 2024-08-14 00:13:18 +00:00
github-actions 5a576449cf Fetch translations from Crowdin 2024-08-13 00:13:52 +00:00
github-actions 25cd07b7c2 Fetch translations from Crowdin 2024-08-12 00:13:33 +00:00
Eric Warmenhoven 12def933dc cloud sync: add options to sync thumbnails and system files, default off (#16869) 2024-08-11 13:12:35 -07:00
Eric Warmenhoven 9c5a95a126 cloud sync: speed up sync a bit by uploading/downloading in parallel (#16871) 2024-08-11 13:12:27 -07:00
kwyxz d4920e76a9 restore Haiku build (#16872) 2024-08-11 13:12:19 -07:00
Eric Warmenhoven b815848501 Optionally compile ffmpeg in griffin build (#16864) 2024-08-10 17:56:15 -07:00
Eric Warmenhoven fdf2faaf59 macOS: Don't include video/input drivers when compiling with SDL2 (#16865) 2024-08-10 17:56:03 -07:00
Eric Warmenhoven c579033abf macos: fix hid driver crash on disconnecting controller second time (#16860) 2024-08-10 07:38:56 -07:00
github-actions 2290955e4c Fetch translations from Crowdin 2024-08-10 00:12:12 +00:00
Eric Warmenhoven efc09a1009 iOS/tvOS: Add opera core to App Store build (#16859) 2024-08-09 09:28:28 -07:00
github-actions d83775a6b7 Fetch translations from Crowdin 2024-08-09 00:13:14 +00:00
mahoneyt944 ef17034121 Fix sigterm (#16854) 2024-08-08 05:38:24 -07:00
github-actions 297b04edfd Fetch translations from Crowdin 2024-08-08 00:13:10 +00:00
Jason Breitweiser 11d9a841f3 This change allows playlist icons to be replaced with Logos. (#16758)
* This change allows playlist icons to be replaced with Logos. the art is loaded to the Thumbnail Named_Logos folder. It is treated the same as other thumbnails for naming and for automatic download. There is a settings menu option to turn it on and off. It is off by default. This only applies to the xmb menu driver.

* Removed commented out code against the style guide.

* Code cleanup for C89 compatibitity

* Cleaned up errors from Automated CI.

* Cleaned up comments.

* Update gfx_display.c

change strcpy to strlcpy

* Update gfx_thumbnail_path.c

fix code formatting

* Update xmb.c

code formatting changes
2024-08-07 08:39:57 -07:00
github-actions b14fc30d1a Fetch translations from Crowdin 2024-08-07 00:34:03 +00:00
zoltanvb d90e8c6a79 Bring CONTRIBUTING.md in line with current practices (#16841)
Added a few more places for submitting various issues.
Removed the extra logging instruction for Phoenix (project seems to be abandoned since years).
2024-08-06 17:03:49 -07:00
Eric Warmenhoven abffbb95d4 Allow compiling SDL2 drivers using griffin (#16843) 2024-08-06 17:03:36 -07:00
zoltanvb cef6da6a03 Missed a tiny bit of detail: actually deleting the file. (#16845) 2024-08-06 17:03:16 -07:00
Eric Warmenhoven d4cb4953a6 iCloud: fix storing variables that don't survive to the async callback (#16849) 2024-08-06 17:03:04 -07:00
Eric Warmenhoven 41b97e4688 tvOS: follow-up fix to #16741 (#16851) 2024-08-06 17:02:49 -07:00
Viačasłaŭ 204d9ff1b2 (Win32) Fix path to executable (#16852) 2024-08-06 17:02:36 -07:00
github-actions 571ae9f72e Fetch translations from Crowdin 2024-08-06 00:12:58 +00:00
github-actions 45b163547e Fetch translations from Crowdin 2024-08-05 00:13:40 +00:00
github-actions 0f367d795e Fetch translations from Crowdin 2024-08-04 00:13:58 +00:00
zoltanvb c057c8bfb2 Delete savestate thumbnails if needed (#16836)
Apply garbage collection also for the savestate thumbnails.
2024-08-02 22:23:39 -07:00
github-actions 38b3ba4e00 Fetch translations from Crowdin 2024-08-02 00:12:40 +00:00
zoltanvb 75c8c3c568 Fix a crash when switchres is used with videocore drivers. (#16822) 2024-07-30 17:33:25 -07:00
Eric Warmenhoven 394c396d89 iOS/tvOS: Add fastlane for TestFlight automation (#16824)
* iOS: Add fastlane for TestFlight automation

* tvOS: Add fastlane for TestFlight automation
2024-07-30 17:33:16 -07:00
Jamiras 9f7361c1bd (cheevos) update to rcheevos 11.5 (#16827)
* update rcheevos

* revalidate config settings after game is loaded
2024-07-30 17:33:07 -07:00
github-actions 13dbb31f62 Fetch translations from Crowdin 2024-07-29 00:13:21 +00:00
github-actions c1f23a3b09 Fetch translations from Crowdin 2024-07-28 00:14:12 +00:00
Viačasłaŭ 33d9def3b3 (ffmpeg core) Fix audio buffer size (#16820) 2024-07-27 01:14:27 -07:00
github-actions 5510181e91 Fetch translations from Crowdin 2024-07-27 00:11:55 +00:00
Eric Warmenhoven 858148fbae iOS: on iOS 18, enable game mode (#16817) 2024-07-25 22:27:19 -07:00
github-actions b476dd1c28 Fetch translations from Crowdin 2024-07-26 00:12:40 +00:00
negativeExponentandnegativeExponent 22d7fbd521 alsa_midi: Prevent some notes to linger when application is closed (#16815)
Appears to be enough to silence any lingering notes when midi is playing
and core is suddenly closed. Tried adding this on the core side but
midi_free comes first before retro_deinit/retro_unload_game so the
driver was already closed.

Another way to fix this in the core's side is to call 'flush'
immediately after any midi writes, but that doesn't appear to be the
api's design, flush is supposed to get called at the end of the
retro_run.

Im open for any better methods. but this should work for the issue
without causing other problems.

Co-authored-by: negativeExponent <[email protected]>
2024-07-25 11:38:09 -07:00
zoltanvb b090f85620 Support for non-PNG local thumbnails (#16806)
Allow thumbnails (boxart, title, screenshot) to be loaded in any
other supported format as well, currently jpg, bmp, tga.

Support is for local thumbnails only, downloads are not changed.
PNG format is always preferred. Menu option added for control,
since trying for multiple thumbnail files may impact performance
on slow storage media.
2024-07-24 18:31:41 -07:00
github-actions 3f2ad22fce Fetch translations from Crowdin 2024-07-25 00:12:49 +00:00
zoltanvb e5e7e66199 Add sensor function placeholders for all joypad drivers. (#16812)
In some cases, set_sensor_state and get_sensor_input are
more related to the joypad driver, e.g. in desktop platforms
where sensors are associated rather with the joypad.

If input driver supports the sensors, it is still preferred.
Placeholder inserted for all input drivers, no functionality
added yet.
2024-07-24 15:13:16 -07:00
libretroadmin efbfe3610a (core_info.c) Cleanups 2024-07-24 09:55:34 +02:00
libretroadmin ac85405598 (gfx_animation.c) Small cleanups 2024-07-24 09:25:59 +02:00
hunterk 6b8025fdca fix segfault with vulkan shaders (#16810) 2024-07-23 22:09:39 -07:00
github-actions eada7985f5 Fetch translations from Crowdin 2024-07-24 00:14:04 +00:00
libretroadmin 2c31de56ff Move XMB-specific line ticker code to xmb.c 2024-07-23 21:02:20 +02:00
negativeExponent 240e5eb9e5 winmm_midi: Fix midi_write_long_event unable to send sysex correctly (#16804)
data size has to be DWORD aligned.

Fix https://github.com/libretro/RetroArch/issues/16790

review before merge for confirmation/corrections:
@LibretroAdmin @zoltanvb and others
2024-07-22 19:08:29 -07:00
github-actions 3ba8171ed8 Fetch translations from Crowdin 2024-07-22 00:13:24 +00:00
libretroadmin c095b420d1 Move GL3 C code over to C file - put rest in extern "C" codeblock 2024-07-22 01:43:21 +02:00
libretroadmin b4e5a8fb70 Don't use std::min/std::max 2024-07-22 01:24:09 +02:00
libretroadmin c99c5399f5 Move C Vulkan code over from shader_vulkan.cpp to vulkan_common.c 2024-07-22 00:52:53 +02:00
zoltanvb 6e279814b9 Changes up to 2024-07-20 (#16800) 2024-07-21 15:42:09 -07:00
libretroadmin 907711db8c Don't use 'using namespace' 2024-07-22 00:34:57 +02:00
libretroadmin 3c45d78a95 Buildfix 2024-07-20 19:49:31 +02:00
libretroadmin 857d1e4ddb Buildfix 2024-07-20 19:46:34 +02:00
libretroadmin afc9cb509a CXX_BUILDFIX buildfixes 2024-07-20 19:42:45 +02:00
libretroadmin 60e0dd839a iC comments 2024-07-20 17:54:44 +02:00
libretroadmin 73afe24266 Use C comments instead of C++ comments for C files 2024-07-20 16:16:16 +02:00
libretroadmin 77a52bcec5 Silence warnings 2024-07-20 16:08:13 +02:00
libretroadmin e543aa25ae Silence some warnings 2024-07-20 15:46:26 +02:00
github-actions 019f256b17 Fetch translations from Crowdin 2024-07-20 00:12:39 +00:00
Eric Warmenhoven 63799385fc iCloud cloud sync driver (#16794) 2024-07-18 22:02:52 -07:00
github-actions 39a2cecdc5 Fetch translations from Crowdin 2024-07-19 01:43:18 +00:00
Jamiras 1232a6ae6e include rank on leaderboard submission notification (#16788) 2024-07-18 13:32:37 -07:00
Keith Bowes 4683e83d9a Add support for mbedtls v3 (#16763)
v2 is not going to receive security fixes after 2024

Fixes #16672
2024-07-18 06:25:29 -07:00
Subs f1a37f7c75 Bump switchres to 2.2.1 (#16782)
* Remove switchres before bump

* Squashed 'deps/switchres/' content from commit 725e4d484a

git-subtree-dir: deps/switchres
git-subtree-split: 725e4d484a33632618dd44cdc2a61948dd833282
2024-07-18 06:25:07 -07:00
negativeExponent bd69602686 winmm_midi.c: Ditto for MEVT_F_SHORT
similar to MEVT_F_LONG, this too is full DWORD, though its value remains 0
2024-07-18 08:24:20 -05:00
zoltanvb d896d9379d Fix include paths (#16785) 2024-07-18 08:24:07 -05:00
negativeExponent 2dae318636 midi: Fix unneeded left shift for MEVT_F_LONG
MEVT_F_LONG is a DWORD type with a value of 0x80000000, so there is no need to left-shit it.
2024-07-18 08:23:24 -05:00
Joseph C. Osborn a7bc0ad68f Make custom aspect ratios under integer scaling respect xy offset
This makes them more usable.  I don't understand why it was ever
disallowed, can someone review and let me know?
2024-07-18 08:22:42 -05:00
Joseph C. Osborn 7e26eb37c6 fix custom aspect ratios for non-ydown drivers 2024-07-18 08:22:42 -05:00
Joseph C. Osborn 6701c0999b fake negative x/y viewport positions under vulkan
Since Vulkan doesn't support negative x or y viewport positions, this
patch concatenates a translation matrix to the projection matrix used in
Vulkan rendering. In this way, if a negative x or y coordinate would
be necessary, we can instead use a 0 coordinate and a
leftwards/upwards translation to achieve the same effect.  This seems
to work alright with overlays, so as far as I can tell this patch
seems sufficient to get the behavior we want?
2024-07-18 08:22:32 -05:00
github-actions 708a1469fb Fetch translations from Crowdin 2024-07-18 00:12:33 +00:00
github-actions 34e9f10dff Fetch translations from Crowdin 2024-07-17 00:13:11 +00:00
github-actions b502434839 Fetch translations from Crowdin 2024-07-16 00:13:22 +00:00
github-actions 249c05e100 Fetch translations from Crowdin 2024-07-15 00:13:26 +00:00
github-actions c208186df5 Fetch translations from Crowdin 2024-07-14 00:14:18 +00:00
ScoochAside 73ba25cea1 Fixed the same cropping issue but on the vertical axis 2024-07-13 13:04:02 -05:00
ScoochAside 4203c359a4 Removed unnecessary casts 2024-07-13 13:04:02 -05:00
ScoochAside 520199c10a Use more logical variables.
Added more resource cleanup, which fixes an unintended resizing bug that happened after taking a GPU screenshot.
2024-07-13 13:04:02 -05:00
ScoochAside 6a29b3b717 Fix issue #16776 2024-07-13 13:04:02 -05:00
github-actions 60fd45f5f9 Fetch translations from Crowdin 2024-07-13 00:12:41 +00:00
github-actions 93a5d05383 Fetch translations from Crowdin 2024-07-11 00:13:43 +00:00
github-actions 2f3a5df4db Fetch translations from Crowdin 2024-07-10 00:13:28 +00:00
github-actions ef2be4a80c Fetch translations from Crowdin 2024-07-09 00:12:30 +00:00
ScoochAside 6d2393c5f9 Added error logging for unsupported cases 2024-07-08 14:09:30 -05:00
ScoochAside e08826ee9b Removed unintentional newline 2024-07-08 14:09:30 -05:00
ScoochAside f63e6a959c Don't do anything if HDR is enabled
The current implementation does not produce the right results if HDR is enabled so let's bail out.
2024-07-08 14:09:30 -05:00
ScoochAside 22057bbb05 Added some pixel format checks
In my limited testing, the texture is always in the R8G8B8A8 format, but, just incase, added a check for it and if it isn't then bail out.
2024-07-08 14:09:30 -05:00
ScoochAside d6773ced37 Fix issue #6427 2024-07-08 14:09:30 -05:00
github-actions fa24a2d3d4 Fetch translations from Crowdin 2024-07-08 00:13:25 +00:00
zoltanvb 7db9a2de60 Test input driver and sensor test screen
A new input driver (test_input), similar to test joypad driver.
Takes its inputs from a json file provided in options. Supports
keyboard input and sensor input (accelerometer, gyroscope,
illuminance).

Remote Retropad extended with a sensor test screen.
2024-07-06 13:55:55 -05:00
libretroadmin 9abd8f3a3a Attempt to fix CI jobs 2024-07-06 20:04:13 +02:00
LibretroAdmin d05b3192e4 Update 3DS.yml 2024-07-06 10:56:24 -07:00
dependabot[bot] 83e8995252 Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
2024-07-06 11:57:12 -05:00
dependabot[bot] 778f900bbd Bump actions/setup-java from 3 to 4
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
2024-07-06 11:57:01 -05:00
dependabot[bot] 188517bc3d Bump robinraju/release-downloader from 1.9 to 1.11
Bumps [robinraju/release-downloader](https://github.com/robinraju/release-downloader) from 1.9 to 1.11.
- [Release notes](https://github.com/robinraju/release-downloader/releases)
- [Commits](https://github.com/robinraju/release-downloader/compare/v1.9...v1.11)

---
updated-dependencies:
- dependency-name: robinraju/release-downloader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2024-07-06 11:56:32 -05:00
github-actions 8968ecd988 Fetch translations from Crowdin 2024-07-06 00:11:38 +00:00
libretroadmin 7c6054573e (rhmap) use custom strdup 2024-07-06 00:00:29 +02:00
github-actions eea939429c Fetch translations from Crowdin 2024-07-05 00:12:17 +00:00
github-actions 4072dcfc8a Fetch translations from Crowdin 2024-07-04 00:12:29 +00:00
github-actions 71b6932039 Fetch translations from Crowdin 2024-07-03 00:12:33 +00:00
LibretroAdmin 5ee1e16595 Revert "Android: Improvements to DocumentProvider Added move and rename methods Provider notifies viewer to refresh view when files are changed Bumped up TargetApi annotation for DocumentsContract.buildTreeDocumentUri. Could alternatively use androidx compat class."
This reverts commit 72db30128c.
2024-07-01 20:40:48 -05:00
LibretroAdmin e91f9ab641 Revert "Android: Remove External Storage permission"
This reverts commit 850560d1b6.
2024-07-01 20:40:48 -05:00
LibretroAdmin 61d830eea2 Revert "Android: Add function to migrate RetroArch folder from sdcard."
This reverts commit b7235e426f.
2024-07-01 20:40:48 -05:00
LibretroAdmin 8b13a4ab0c Revert "Improvements to migration code Will be squashed before commit"
This reverts commit 3dab003b19.
2024-07-01 20:40:48 -05:00
cwyc 3dab003b19 Improvements to migration code
Will be squashed before commit
2024-06-30 20:31:23 -05:00
cwyc b7235e426f Android: Add function to migrate RetroArch folder from sdcard. 2024-06-30 20:31:23 -05:00
cwyc 850560d1b6 Android: Remove External Storage permission 2024-06-30 20:31:23 -05:00
cwyc 72db30128c Android: Improvements to DocumentProvider
Added move and rename methods
Provider notifies viewer to refresh view when files are changed
Bumped up TargetApi annotation for DocumentsContract.buildTreeDocumentUri. Could alternatively use androidx compat class.
2024-06-30 20:31:23 -05:00
github-actions 00b1e97c79 Fetch translations from Crowdin 2024-07-01 00:14:23 +00:00
libretroadmin 57c790646f Buildfix 2024-06-29 03:48:50 +02:00
libretroadmin 47ec7c0782 Try to avoid strdup to avoid portability issues 2024-06-29 03:46:06 +02:00
libretroadmin 40c889b562 Add header include for rhmap.h 2024-06-29 03:25:33 +02:00
github-actions fd8bb7b1ef Fetch translations from Crowdin 2024-06-28 00:12:41 +00:00
Eric Warmenhoven 83466994aa Fix #16562 support bluetooth keyboards on tvos 2024-06-27 18:33:48 -05:00
Jonathan Rascher 8935d9db1b Skip core unload when Quit on Close Content is set 2024-06-27 18:32:02 -05:00
github-actions f4a45a4dd9 Fetch translations from Crowdin 2024-06-27 00:12:53 +00:00
Joe Osborn 9489a11ead Use device ratio when determining portrait orientation 2024-06-26 08:45:29 -05:00
Joe Osborn f1b9df4faf Flip default y positive direction for viewport calc
This should fix metal and maybe some directx resizes
2024-06-26 08:45:29 -05:00
libretroadmin 9e171cb665 Add missing header 2024-06-26 15:40:29 +02:00
libretroadmin 3d40dff4f5 strtok_r - small syntactic cleanup 2024-06-26 15:38:09 +02:00
libretroadmin 5a2a6db589 (glslang) use strtok_r instead of strtok 2024-06-26 15:36:31 +02:00
libretroadmin 6319fa30c3 (menu_cbs_ok.c) Some cleanups, warning fixes, use strtok_r instead
of strtok
2024-06-26 15:30:45 +02:00
libretroadmin 58e2e581ec Silence warnings 2024-06-26 15:19:00 +02:00
libretroadmin db550e6ffe (D3D8) Fix build 2024-06-26 15:13:37 +02:00
github-actions 1ebe646198 Fetch translations from Crowdin 2024-06-26 00:12:27 +00:00
Jay Paul 8aa5fd2658 ensure that all folders are enabled by default. 2024-06-25 08:25:28 -05:00
Jay Paul c570a6a20a allow saves and configs to be optionally synced to cloud 2024-06-25 08:25:28 -05:00
zoltanvb 286d65b42e [X11] Support for mouse buttons 4 and 5
Support added for extra mouse buttons. Since these buttons were
not returned by XQueryPointer(), some additional logic was needed
which fit best to scroll wheel handling.
2024-06-25 08:18:51 -05:00
Joseph C. Osborn 00add4bb37 Fix build errors on wiiu, directx 2024-06-25 08:18:39 -05:00
Joseph C. Osborn 2805694378 Refactor viewport handling/aspect ratio scaling.
This mirrors the use of video_viewport_get_scaled_integer for
non-integer scaling at various aspect ratios.  Two variants are
provided, one with implicit device and desired ratios and one with
explicit ratios.

Also added a flag to video_viewport_get_scaled_integer to indicate the
direction of positive y.
2024-06-25 08:18:39 -05:00
Joseph C. Osborn 05faba73e3 Add config values and menu items for viewport bias x/y 2024-06-25 08:18:39 -05:00
schellingb e7c6d1df84 Fix keyboard events missing RETROKMOD_NUMLOCK or RETROKMOD_SCROLLOCK
- Add missing numlock mod to dinput
- Add missing scrolllock mod to x11
- Add missing capslock, numlock, scrolllock and meta mods to android
- Add missing scrolllock mod to sdl
- Add missing capslock, numlock, scrolllock and meta mods to switch
- Add missing numlock mod to winraw
- Add missing numlock mod to uwp
2024-06-25 08:18:29 -05:00
zoltanvb cc92ac7577 Fix exclusive fullscreen condition
Spotted in Android compilation:
warning: bitwise or with non-zero value always evaluates to true [-Wtautological-bitwise-compare]
2024-06-25 08:18:07 -05:00
Ash Logan 27f337d5a0 (libretro-common) Use inline assembly for PowerPC libco
This puts the code into the binary's .text section, which is needed
for platforms without the ability to map it as RWX (WiiU). Using
GNU/AT&T syntax for the assembly here.
2024-06-25 08:16:52 -05:00
github-actions 929fa20348 Fetch translations from Crowdin 2024-06-24 00:13:51 +00:00
github-actions 7da8e28370 Fetch translations from Crowdin 2024-06-23 00:13:32 +00:00
github-actions 7830e8aa23 Fetch translations from Crowdin 2024-06-20 00:12:24 +00:00
zoltanvb 3b21273858 [Wayland] Support for mouse buttons 4&5 and horizontal wheel 2024-06-19 18:40:15 -05:00
github-actions e3bb6b7aa8 Fetch translations from Crowdin 2024-06-19 00:12:24 +00:00
Joseph C. Osborn e51a316cfd tidy up intfstream_truncate ifdefs. 2024-06-18 13:13:59 -05:00
Joseph C. Osborn 6104a9ad86 change some replay file seeks to seek+truncates in record mode 2024-06-18 13:13:59 -05:00
Joseph C. Osborn 42f066a842 add intfstream_truncate for file streams
Will return 0 for non-file streams.  I didn't want to mess around with
memory_stream (which could in theory have a truncate impl that sets
size) because there were globals and stuff and I got nervous (also
truncate might *grow* a file if the new length is longer than the old
one and then I'd have to think about realloc, etc).
2024-06-18 13:13:59 -05:00
libretroadmin ab9ee963cb Simplify gfx_animation_line_ticker_smooth 2024-06-18 09:40:20 +02:00
libretroadmin 6ac25079bf (menu_cbs_deferred_push) Get rid of string_list usage 2024-06-18 09:20:36 +02:00
github-actions e2b0d70ec0 Fetch translations from Crowdin 2024-06-18 00:12:46 +00:00
zoltanvb f1b96f620b Fix MSVC05 compilation failure 2024-06-17 17:48:27 -05:00
zoltanvb 2ca973770f Fullscreen refresh rate improvements
Handle refresh rate as float in general, and add also extra
attributes (interlaced, doublescan) for video modes.

Make it possible to select exact mode (interlaced / doublescan modes
will not be selected), and allow close matches such as 49.5 Hz
for PAL 50 Hz.
2024-06-17 13:29:40 -05:00
github-actions 622736e195 Fetch translations from Crowdin 2024-06-17 00:13:10 +00:00
libretroadmin 3fc7024df9 (cheevos) Cleanups - only use snprintf for formatting 2024-06-16 22:20:15 +02:00
libretroadmin 38f278519c Remove some header includes 2024-06-16 21:37:46 +02:00
rofl0r 843c816fc2 x11: add support for Xss screensaver disabling
in case xdg-screensaver isn't installed.
2024-06-16 12:54:42 -05:00
libretroadmin 3f0d3ec393 Replace more strlcats 2024-06-16 19:42:51 +02:00
rofl0r d3c14a6e3e CI: add github workflow to create source-only release tarball
closes #16645
2024-06-16 12:16:13 -05:00
libretroadmin c4685e8c31 Cut down on strlcats 2024-06-16 19:15:07 +02:00
libretroadmin c05ec27334 task_save_handler - rewrite code - put string on stack instead
of heap, avoid using strlcat
2024-06-16 18:44:08 +02:00
libretroadmin c722653c97 (steam) avoid strlcat usage 2024-06-16 18:20:04 +02:00
libretroadmin 54a24dc9d5 input_config_get_bind_string - do proper character
counting now, avoid strlcats, and have functions return
size_t value indicating how many chars were written
2024-06-16 18:07:30 +02:00
libretroadmin a303b7dcc6 Simplifications 2024-06-16 17:35:38 +02:00
libretroadmin a3217dfa40 (core_updater_list) Remove more string_list usage 2024-06-16 17:25:17 +02:00
libretroadmin 9d56016ad3 (core_updater_list) replace string_list usage with strtok_r 2024-06-16 17:11:06 +02:00
libretroadmin 850f1ff6f7 Put comment back 2024-06-16 16:56:19 +02:00
libretroadmin 4eb8b772ec (task_content.c) content_file_override_set - use strtok_r instead
of string_list
2024-06-16 16:54:57 +02:00
libretroadmin 36e9d4a79d (ozone) ozone_draw_osk - use strtok_r instead of string_list 2024-06-16 16:38:42 +02:00
libretroadmin 5a863652b6 (RGUI) rgui_update_menu_sublabel - use strtok_r instead of string_list 2024-06-16 16:21:18 +02:00
Eric Warmenhoven 24f8bd1638 iOS/tvOS: Add ardens and anarch cores to app store build 2024-06-16 08:40:24 -05:00
libretroadmin e2e6602ac2 Buildfix 2024-06-16 15:39:35 +02:00
libretroadmin 95be65d5a0 (gfx_animation.c) Use strlcpy 2024-06-16 15:36:35 +02:00
libretroadmin 3cdadbef8c (dylib.c) Avoid strlcat usage, camelcase variable name removal
and C comments
2024-06-16 15:10:11 +02:00
libretroadmin 0ced85b91d Get rid of some unnecessary strlcat usage 2024-06-16 15:09:31 +02:00
libretroadmin 37bcb4f093 Replace some strlcat usage with strlcpy 2024-06-16 14:52:26 +02:00
libretroadmin 3736aa963f (task_overlay) remove unused variable 2024-06-16 14:38:21 +02:00
libretroadmin 00e669b09a (task_overlay.c) No more string_list usage 2024-06-16 14:35:03 +02:00
libretroadmin a758b13fac (gfx_animation.c) Small cleanups 2024-06-16 14:21:38 +02:00
libretroadmin 57273faa5a Rewrite 2 of action_ok_rdb_entry_submenu - now with less
allocations
2024-06-16 13:52:28 +02:00
libretroadmin b8448274df Rewrite action_ok_rdb_entry_submenu - no more string_list usage 2024-06-16 13:44:46 +02:00
libretroadmin cfd9cbad8e Fix ST_STRING_OPTIONS 'selected' dropdown item - was off by one 2024-06-16 13:16:49 +02:00
libretroadmin 81a1079123 generic_action_ok_dropdown_setting - don't use string_list for
ST_STRING_OPTIONS
2024-06-16 12:52:22 +02:00
github-actions 1f1ff0aafc Fetch translations from Crowdin 2024-06-16 00:13:36 +00:00
libretroadmin d7d1011ab0 More string_list removal 2024-06-15 19:12:15 +02:00
libretroadmin 761d740e46 (menu_displaylist.c) More string_list removal 2024-06-15 18:00:22 +02:00
libretroadmin 1d47d24b5f (audio/common) Fix header includes 2024-06-15 16:55:01 +02:00
libretroadmin c741c9d9a9 Remove unused variables 2024-06-15 16:44:41 +02:00
libretroadmin f574a3a68e (archive_file) Don't know why this won't compile for MSVC -
<compat/posix_string.h> gets included which should redefine strtok_r
for MSVC usage but it just doesn't work and fails at linking stage, will have to figure this out
later
2024-06-15 16:34:19 +02:00
libretroadmin c02d8b8475 Slight change in header include 2024-06-15 16:28:30 +02:00
libretroadmin 0f5cdaf2f6 Include <compat/posix_string.h> for strtok_r MSVC compatibility 2024-06-15 16:11:26 +02:00
libretroadmin 59025e849f (menu_cbs_title.c) Remove string_list usage 2024-06-15 15:54:21 +02:00
libretroadmin 29c89a46f1 file_archive_get_file_list_cb - remove string_list usage 2024-06-15 15:35:26 +02:00
libretroadmin 1ef4be2280 (menu) More string_list removal 2024-06-15 15:04:05 +02:00
libretroadmin 962737c85a (playlist.c) Get rid of string_list usage 2024-06-15 14:15:36 +02:00
libretroadmin 01a7740f6f (menu_displaylist.c) Get rid of more string_list usage 2024-06-15 14:02:09 +02:00
libretroadmin 78acf23a9b More string_list removal in menu_displaylist.c 2024-06-15 13:40:22 +02:00
libretroadmin 827e631903 (libretro-common) Some functions now return len 2024-06-15 12:47:51 +02:00
libretroadmin 9e71a566cc Get rid of more instances of string_list in menu code 2024-06-15 07:06:36 +02:00
libretroadmin 7d1d8be14e Revert "Slim down glslang"
This reverts commit e53a809e6d.
2024-06-15 06:22:57 +02:00
libretroadmin a15317907d Revert "(glslang) Buildfix"
This reverts commit e0656d8ca3.
2024-06-15 06:22:42 +02:00
libretroadmin 18a1623517 Revert "Slim down custom glslang more"
This reverts commit 9dffcdfc93.
2024-06-15 06:22:27 +02:00
libretroadmin 2d4f31bc0a Revert "(glslang) Get rid of all asserts"
This reverts commit d2b161ee86.
2024-06-15 06:22:16 +02:00
libretroadmin 3401f124cc Revert "(glslang) Further slimming down/cleanups"
This reverts commit 0b29d52b67.
2024-06-15 06:22:01 +02:00
libretroadmin 1a0320ceb4 Revert "(glslang) Simplifications - move nullptr to NULL"
This reverts commit 354c5afab4.
2024-06-15 06:21:52 +02:00
libretroadmin e3e501a90c Revert "Get rid of unused variable"
This reverts commit ab4d54cb70.
2024-06-15 06:21:42 +02:00
libretroadmin 4db59d587e Revert "Third parameter of std::remove prob needs to be nullptr"
This reverts commit 1b161fad1d.
2024-06-15 06:21:34 +02:00
libretroadmin 6cc5c414da Revert "Cleanups - remove/silence warnings"
This reverts commit cf04a2c0fe.
2024-06-15 06:20:55 +02:00
libretroadmin 1257a10686 Revert "* Remove more unused code"
This reverts commit a8fe9b74da.
2024-06-15 06:20:41 +02:00
libretroadmin 9ec7eaeb8b Revert "(glslang) Syntax cleanups, other cleanups"
This reverts commit e480ebd29f.
2024-06-15 06:20:30 +02:00
libretroadmin 7a9679c7fd Revert "(glslang) Cleanups"
This reverts commit bdff6a146b.
2024-06-15 06:20:19 +02:00
libretroadmin 66ed1bd095 Revert "(glslang) Cleanups"
This reverts commit 5454b570e7.
2024-06-15 06:20:10 +02:00
libretroadmin 7af5cf5690 menu_displaylist_parse_core_option_dropdown - don't use string_list 2024-06-15 05:55:28 +02:00
libretroadmin de12f0bd28 action_get_title_dropdown_items - use strrchr instead of string_list 2024-06-15 05:41:12 +02:00
libretroadmin 8ef14e53b6 audio_driver_mixer_extension_supported - don't use string_list 2024-06-15 03:55:44 +02:00
libretroadmin 8b66d02db1 general_push - get rid of strlcat calls 2024-06-15 03:28:27 +02:00
libretroadmin 5a3000bcdf general_push - simplifications - less usage of string_list 2024-06-15 03:21:54 +02:00
That One Seong 4220ad0b7c udev mouse buttons 4/5 fixed
According to evdev docs, mouse side buttons are simply `BTN_4/BTN_5`?
2024-06-14 19:48:33 -05:00
libretroadmin df4d59c120 (cbs_deferred_push) Simplify general_push 2024-06-15 02:47:53 +02:00
libretroadmin 429479c0ca dump_to_file_desperate - use strlcpy 2024-06-15 02:47:53 +02:00
github-actions 7dab17e50c Fetch translations from Crowdin 2024-06-15 00:11:45 +00:00
libretroadmin e279592ce6 Cut down on some snprintf calls 2024-06-15 01:29:08 +02:00
libretroadmin c022e4e624 Cut down on snprintf 2024-06-15 00:56:51 +02:00
libretroadmin f423b62500 (Wii) Silence warning 2024-06-14 23:24:11 +02:00
libretroadmin dcd89f4280 Silence warnings 2024-06-14 23:11:47 +02:00
zoltanvb 926ba5c843 Force fullscreen in case of KMS display
Change GL2, GL3 and Vulkan drivers to behave as fullscreen if context driver
(such as KMS/DRM or KHR) does not support windowed mode at all.
Take it into account also for refresh rate switch.
2024-06-14 15:44:38 -05:00
Eric Warmenhoven 6068799080 apple: fix a couple preprocessor checks to be more consistent 2024-06-13 23:06:31 -05:00
github-actions 6b36fe8cf2 Fetch translations from Crowdin 2024-06-14 00:12:52 +00:00
libretroadmin af11f8f54c Use strlcpy when no formatting is required 2024-06-13 07:02:38 +02:00
libretroadmin 3e2e53ba7f snprintf - if no formatting is required then use strlcpy 2024-06-13 06:48:50 +02:00
libretroadmin 5d62510388 (cheevos) Use strlcpy where possible 2024-06-13 06:20:18 +02:00
libretroadmin 55b4ceec70 (WASAPI) WASAPI settings did not show up anymore 2024-06-13 03:53:20 +02:00
github-actions 25a8bc9a42 Fetch translations from Crowdin 2024-06-13 00:12:37 +00:00
Jamiras 79cfce6033 add rarity and points to achievement unlock widget 2024-06-12 13:18:01 -05:00
Jamiras dfcf0c042c fix rewind not working when RetroAchievements cannot identify game 2024-06-12 13:17:52 -05:00
github-actions af7f1f7f91 Fetch translations from Crowdin 2024-06-12 00:12:51 +00:00
github-actions 6e057abc8e Fetch translations from Crowdin 2024-06-11 00:12:40 +00:00
hunterk 65e8871250 restore some relative pointer stuff 2024-06-10 07:35:24 -05:00
hunterk c72f8613d8 revert abcd42777f
since it appears to be involved with a variety of input issues: https://github.com/libretro/RetroArch/issues/15757
2024-06-10 07:35:24 -05:00
github-actions 37c9c17133 Fetch translations from Crowdin 2024-06-10 00:12:54 +00:00
github-actions 5bc5a9fb73 Fetch translations from Crowdin 2024-06-09 00:14:24 +00:00
Thiago Seus 17fc346a36 Accessibility: change the is_screen_reader_enabled function name to lower case and match with the function name in Java code 2024-06-08 12:01:53 -05:00
Thiago Seus 216f55c7b2 Accessibility: Refactor Android is_narrator_running to align with the rest of RetroArch accessibility API 2024-06-08 12:01:53 -05:00
zoltanvb 49aeeee1f7 Cosmetical fix (xvfk -> xfvk), #16631 2024-06-08 11:17:42 -05:00
github-actions fa61d82553 Fetch translations from Crowdin 2024-06-08 00:12:41 +00:00
github-actions f07b3d7c95 Fetch translations from Crowdin 2024-06-07 00:12:49 +00:00
github-actions 9419f02d63 Fetch translations from Crowdin 2024-06-06 00:11:47 +00:00
zoltanvb a8d77f618c Better support for multiple reserved devices of the same kind. 2024-06-05 18:17:54 -05:00
zoltanvbandPatrick Stankard a9968e9e86 Controller device reservation / preference.
For each player, 2 new options are added:
- a reservation type (no reservation, preferred, reserved)
- a reserved device name

When handling port - player assignments, reserved devices
will be assigned to the respective player port. If reservation
type is "reserved", no other device can take that port
automatically.

Reservation config option and matching function lifted from:
PatrickStankard https://github.com/libretro/RetroArch/pull/16269

Test joypad driver was extended for more tests.

Co-authored-by: Patrick Stankard <[email protected]>
2024-06-05 18:17:54 -05:00
Eric Warmenhoven e9682cbbd6 Fix #16626 fix crash parsing truncated 7z file 2024-06-05 13:06:27 -05:00
Eric Warmenhoven aa36f75dba apple: Hide threaded video setting 2024-06-05 13:06:14 -05:00
Eric Warmenhoven 72eb860315 iOS: default vibrations on 2024-06-05 13:06:07 -05:00
David Hedlund cf6aef1706 Update README.md
Sort Platforms
2024-06-05 05:49:28 -05:00
LibretroAdmin fda4586886 Update CHANGES.md 2024-06-04 19:22:23 -07:00
github-actions 427e3fa6f6 Fetch translations from Crowdin 2024-06-05 00:12:18 +00:00
LibretroAdmin 0792144fe3 Revert "Revert "Tweaked limit, amended comment.""
This reverts commit f432cd3f78.
2024-06-04 13:26:41 -05:00
LibretroAdmin d244ee4d80 Revert "Revert "Increase save state chunk size for all platforms""
This reverts commit d51911fac3.
2024-06-04 13:26:41 -05:00
Mats a0208dd56c (WASAPI) Only write when running and fix deadlock 2024-06-04 13:26:08 -05:00
Eric Warmenhoven c978d7944a iOS/tvOS: Include DoubleCherryGB in AppStore build 2024-06-04 13:17:59 -05:00
libretroadmin 75c647d3ca Bump to version 1.19.1 2024-06-04 06:53:13 +02:00
LibretroAdmin d51911fac3 Revert "Increase save state chunk size for all platforms"
This reverts commit 9c4ac3546a.
2024-06-03 22:50:28 -05:00
LibretroAdmin f432cd3f78 Revert "Tweaked limit, amended comment."
This reverts commit c1bb2fd9a1.
2024-06-03 22:50:28 -05:00
github-actions dab84a13d6 Fetch translations from Crowdin 2024-06-04 00:12:13 +00:00
github-actions 1c44a1772d Fetch translations from Crowdin 2024-06-03 00:12:27 +00:00
Thiago Seus 22646d3e74 Accessibility: enable accessibility if Talkback is on 2024-06-02 14:49:19 -05:00
Thiago Seus b4ed4b58d6 Accessibility: add first Android version 2024-06-02 14:49:19 -05:00
github-actions 8b213d3c0d Fetch translations from Crowdin 2024-06-02 00:13:22 +00:00
github-actions 47dd4e7e75 Fetch translations from Crowdin 2024-06-01 00:12:38 +00:00
Eric Warmenhoven a13b0f090d wayland: build fix on older qt versions 2024-05-31 18:38:16 -05:00
Eric Warmenhoven 2f1dd3e84f tvOS: Fix menu button on siri remote 2024-05-31 17:56:48 -05:00
Reilly Brogan 7f3de64ef8 wayland: Fix Wayland appId 2024-05-30 22:54:50 -05:00
Eric Warmenhoven 0e9ea9fd47 tvOS: Fix NSO N64 controller 2024-05-30 22:54:29 -05:00
Eric Warmenhoven 754a194471 tvOS: revert MoltenVK to 1.2.7 to fix tvOS 13.4 2024-05-30 22:54:19 -05:00
github-actions f504676948 Fetch translations from Crowdin 2024-05-31 00:12:12 +00:00
MoistDreams 64680cbfef Package *.lck core lock file-extension.
Includes *.lck alongside the rest of the cores/$platform/cores so that bundled cores can be locked at time of publish.
2024-05-30 14:58:14 -05:00
libretroadmin 00b8a5f15c Bump to version 1.19.0 2024-05-30 05:03:48 +02:00
github-actions 95050c03be Fetch translations from Crowdin 2024-05-30 00:13:10 +00:00
Joe Osborn c1bb2fd9a1 Tweaked limit, amended comment. 2024-05-29 13:36:43 -05:00
Joe Osborn 9c4ac3546a Increase save state chunk size for all platforms
A rationale is given in the comments, but even a class 6 or class 10 SD card can handle reads and writes on the order of MB/s, which means a 4KB chunk size is just wasting time in syscalls.  This could maybe be fixed with a buffering reader but I don't feel comfortable tweaking libretro-common's VFS to handle that.  Instead, I thought it would be good to both remove an ifdef and increase the chunk size to 128KB.  For cores with small states this will should make state saving virtually instantaneous, and for cores with large states it should be a 32x speedup.
2024-05-29 13:36:43 -05:00
github-actions 3a56b73a31 Fetch translations from Crowdin 2024-05-28 00:12:30 +00:00
Eric Warmenhoven a537af010e iOS/tvOS: better way of reporting available memory 2024-05-27 08:16:42 +02:00
Eric Warmenhoven 52413260de iOS: default audio sync on again, also more mfi logging 2024-05-26 21:32:55 +02:00
Viačasłaŭ Chalikin 1e9db89154 Fix reinitialization of the threaded gl drivers 2024-05-26 21:32:29 +02:00
Tomáš Kelemen (vudiq) c4f84094c2 Lakka: provide update URL and target name at buildtime
it is more convenient to provide the URL via make option rather than
rely on hardcoded value in the code base. it provides more flexibility
in case of different servers for stable, daily, canary, community, ...

and instead of parsing a file in the filesystem to obtain target name of
the device on which lakka is running, we can provide the target name at
build time as well. the target name is used for the full path URL for
the download of updates.

there is no need to have these values editable via retroarch frontend
and saved in the config file. it is safer to provide them at build time
and have them set this way.
2024-05-25 00:26:22 +02:00
libretroadmin 5db932d366 gfx_widgets_draw_task_msg - get rid of one strlen 2024-05-24 04:03:45 +02:00
Eric Warmenhoven 77da47613e macos: default Accessibility on if VoiceOver is on 2024-05-24 03:40:18 +02:00
libretroadmin a6c82df0fd (task_database) Use size_t for size to prevent narrowing issue 2024-05-24 03:33:20 +02:00
github-actions ecc5c1809d Fetch translations from Crowdin 2024-05-24 00:12:36 +00:00
Eric Warmenhoven 07a03811a2 Another ios9 buildfix 2024-05-24 00:12:36 +02:00
libretroadmin 3e85a17d7a iFix warnings picked up by -fanalyzer 2024-05-23 23:50:23 +02:00
Eric Warmenhoven b38304cae5 iOS/tvOS: default accessibility on if voice over is enabled 2024-05-23 18:39:13 +02:00
libretroadmin 5454b570e7 (glslang) Cleanups 2024-05-23 18:18:11 +02:00
libretroadmin bdff6a146b (glslang) Cleanups 2024-05-23 16:55:39 +02:00
libretroadmin e480ebd29f (glslang) Syntax cleanups, other cleanups 2024-05-23 16:35:45 +02:00
libretroadmin a8fe9b74da * Remove more unused code
* Remove disassemble code
2024-05-23 08:24:02 +02:00
libretroadmin fc022d780d use C comments in C source files 2024-05-23 08:02:27 +02:00
libretroadmin 099a98bcd6 Some platforms need this, so can't remove it 2024-05-23 08:00:06 +02:00
libretroadmin cf04a2c0fe Cleanups - remove/silence warnings 2024-05-23 07:48:08 +02:00
libretroadmin 1b161fad1d Third parameter of std::remove prob needs to be nullptr 2024-05-23 07:35:52 +02:00
libretroadmin ab4d54cb70 Get rid of unused variable 2024-05-23 07:31:25 +02:00
libretroadmin 354c5afab4 (glslang) Simplifications - move nullptr to NULL 2024-05-23 07:25:52 +02:00
libretroadmin 0b29d52b67 (glslang) Further slimming down/cleanups 2024-05-23 07:25:51 +02:00
Eric Warmenhoven 8479d83a99 iOS/tvOS: Fix escaping the sandbox for jailbroken devices 2024-05-22 20:33:28 -07:00
Eric Warmenhoven eb3adeaf87 Fix build for osx opengl 2024-05-22 20:22:14 -07:00
Eric Warmenhoven 7c899fe005 fix ios9 build 2024-05-22 19:34:52 -07:00
libretroadmin d2b161ee86 (glslang) Get rid of all asserts 2024-05-23 03:58:54 +02:00
libretroadmin 9dffcdfc93 Slim down custom glslang more 2024-05-23 03:26:10 +02:00
libretroadmin e0656d8ca3 (glslang) Buildfix 2024-05-23 01:56:17 +02:00
libretroadmin e53a809e6d Slim down glslang 2024-05-23 01:53:15 +02:00
libretroadmin a74675a718 Remove unneeded ENABLE_HLSL code from glslang 2024-05-23 01:25:37 +02:00
Eric Warmenhoven 79b71179a5 macOS/iOS/tvOS: enable text-to-speech using AVSpeechSynthesizer.
Fixes #16532.
2024-05-22 13:29:48 -07:00
Eric Warmenhoven 87b643f487 Apple: Correctly register for filetypes uniquely 2024-05-22 13:21:56 -07:00
Eric Warmenhoven c1fec60f60 iOS/tvOS: fix keyboard handling for app store builds 2024-05-22 07:25:13 -07:00
Tomáš Kelemen (vudiq) 8dafa0ce0d add cast to void** to fix build with gcc14 2024-05-22 04:48:56 -07:00
Tomáš Kelemen (vudiq) 295de90327 add missing include to fix build with gcc14 2024-05-22 04:48:56 -07:00
Tomáš Kelemen (vudiq) 0f89425ed6 add missing include to fix build with gcc14 2024-05-22 04:48:56 -07:00
github-actions 8792d28f52 Fetch translations from Crowdin 2024-05-22 00:11:56 +00:00
Eric Warmenhoven d24b7955a5 tvOS: Fix packaging by reverting the name 2024-05-20 22:29:01 -07:00
github-actions f33f00ba05 Fetch translations from Crowdin 2024-05-21 00:11:56 +00:00
Electric Worry fdd010aebc Fix clang error incompatible-pointer-types-discards-qualifiers 2024-05-20 09:44:55 -07:00
Electric Worry b630e6b5f9 Memory leak: Dynamic allocation from msg_hash_get_help_us_enum was not freed. 2024-05-20 09:44:55 -07:00
Eric Warmenhoven e9e5868a8f iOS/tvOS: Creation of App Store build configuraiton 2024-05-20 00:22:51 -07:00
Eric Warmenhoven 529d6f78d0 iOS/tvOS: Clean up Xcode project file 2024-05-19 21:50:31 -07:00
github-actions 00baa88731 Fetch translations from Crowdin 2024-05-20 00:12:07 +00:00
zoltanvb b37debff13 Fix for scanning PSP ISOs (and probably few others) 2024-05-19 12:23:25 -07:00
Bernhard Schelling e27fcf64a8 (Win32) Fix numlock/pause key release events
On Win32, the numlock and pause keys need special handling. But the existing code did only handle it correctly for pressing and not releasing. It separately called GetKeyState for the two keys which only returned true while pressing a key and not while releasing it. This then caused the releasing of the pause key to be treated as releasing the numlock key and vice versa. This fix handles releasing the two keys correctly.
2024-05-19 12:23:07 -07:00
Eric Warmenhoven caeb3fafdc tvOS: Fix scaling for 720p 2024-05-19 12:22:33 -07:00
Eric Warmenhoven 329cf5cbff iOS/tvOS: define PACKAGE_VERSION to be App Store MARKETING_VERSION 2024-05-19 12:22:26 -07:00
github-actions 741e7f82af Fetch translations from Crowdin 2024-05-19 00:13:21 +00:00
aerisarn fe5c9a37a5 Update README.md
Fix URL
2024-05-17 14:40:49 -07:00
e.canepa 448dea5beb UWP 4K fix: align MESA reading of ClientRect to retroarch procedure, this fixes max resolution being set to 1080p. As reading must be done inside an UI thread and is in fact an async operation which might delay frame generation, the reading itself is doen once and cached, give that changing resolution while the app is running is an unlikely corner-case use 2024-05-17 14:40:49 -07:00
Edoardo Canepa e0537c0548 Align MESA to alpha-2-resfix
Remove wrong resolution special handling for OPENGL
2024-05-17 14:40:49 -07:00
Eric Warmenhoven ee8d8b1689 iOS/tvOS: Post Apple App Store fixes
- both: default VRR true
- tvOS: default overlay off
- tvOS: default directory fix
- both: default language fix
- tvOS: jit support fix
2024-05-17 14:38:35 -07:00
Carlo Refice fed2e10d97 Implement HDR readback 2024-05-17 14:10:29 -07:00
Rob Loach ae84c590de libretro: Fix documentation for RETRO_GET_MIDI_INTERFACE (#16541)
As pointed out by @bbbradsmith in https://github.com/libretro/libretro-common/issues/209 , `RETRO_ENVIRONMENT_GET_MIDI_INTERFACE` is a pointer to a struct, rather than a struct array. This updates the documentation to reflect that.

Fixes https://github.com/libretro/libretro-common/issues/209
2024-05-17 10:01:27 -07:00
Rob Loach 41db4b022a vfs_implementation: Fix warning of unused include_hidden parameter (#16540)
This fixes a warning of the `include_hidden` parameter not being used outside of `_WIN32`.

```
vfs/vfs_implementation.c:1063:30: error: unused parameter ‘include_hidden’ [-Werror=unused-parameter]
 1063 |       const char *name, bool include_hidden)
      |                              ^
cc1: all warnings being treated as error
```
2024-05-17 08:12:33 -07:00
Rob Loach 395f925941 libretro-common: Fix redefinition warnings of _POSIX_C_SOURCE (#15748)
Small fix to only define `_POSIX_C_SOURCE` if it's not already defined.

```
rthreads/rthreads.c:25: warning: "_POSIX_C_SOURCE" redefined
```
2024-05-16 16:05:58 -04:00
github-actions ec8358c783 Fetch translations from Crowdin 2024-05-16 00:12:17 +00:00
Jamiras d3475686bd fix hardcore acting as if it's enabled when it isn't (#16530) 2024-05-15 07:23:43 -07:00
Eric Warmenhoven ce6dbcd7e8 macOS: Qt still builds, if you set QT_INSTALL directory correctly (#16527) 2024-05-14 19:51:45 -07:00
github-actions e2961dfc37 Fetch translations from Crowdin 2024-05-15 00:12:15 +00:00
github-actions c1a2e21447 Fetch translations from Crowdin 2024-05-14 00:12:21 +00:00
Eric Warmenhoven 81f7aecad4 macOS: use xcassets instead of icns file for app icon (#16524) 2024-05-13 12:04:05 -07:00
Tomáš Kelemen 2c96b97324 display reboot/shutdown message also when not saving config on exit (#16506)
the reboot / shutdown message should be displayed regardless if config
file is saved on exit or not.
2024-05-13 11:34:34 -07:00
rt001-hub 5e45b2330b Update pixman-private.h (#16516)
patch to fix build issue with musl
https://lore.kernel.org/buildroot/[email protected]/
2024-05-13 07:29:50 -07:00
Viačasłaŭ Chalikin 9ad2cc2bc6 Fix crash when using threaded video (#16518)
for Mesa 23.2 and later
2024-05-13 07:24:51 -07:00
Eric Warmenhoven 04baed2aff macOS: appstore: restore copying audio/video filters (#16521) 2024-05-13 07:24:45 -07:00
Eric Warmenhoven 7a44fb94a6 iOS: Display app icon in app icon picker in materialui (#16520) 2024-05-12 22:52:52 -07:00
github-actions f3b6093941 Fetch translations from Crowdin 2024-05-13 00:12:34 +00:00
Eric Warmenhoven 807ba974d3 Fix packaging: preserve symlinks (#16515) 2024-05-12 05:39:50 -07:00
zoltanvb 198656eb20 Add support for multimedia keys (#16502)
Extended RETROK_ values with 18 new items, commonly found on
"multimedia" keyboards.

Mapping added for SDL, X11, Wayland, dinput, winraw keymaps.

Keyboard tester function of Remote Retropad extended to cover new keys.

One fix in Android mapping for #12986
2024-05-11 17:06:54 -07:00
Eric Warmenhoven 5bac6c6aac Add Galician and Norwegian to list of languages (#16510) 2024-05-11 16:57:54 -07:00
Jamiras 2013370aa9 update to rcheevos 11.3 (#16512) 2024-05-11 16:57:36 -07:00
Eric Warmenhoven 76b5d40954 macOS: updates for app store submission (#16514) 2024-05-11 16:57:29 -07:00
github-actions 6bc4e24d74 Fetch translations from Crowdin 2024-05-11 00:12:15 +00:00
github-actions ee5f64d822 Fetch translations from Crowdin 2024-05-10 00:12:31 +00:00
Robert-André Mauchin bff678c48a Add compatibility with FFMPEG 7.0 (#16499)
channel_layout has been replaced with ch_layout

Fix: #16437
2024-05-09 11:31:17 -07:00
Eric Warmenhoven a2a7c666fb iOS/tvOS: some updates for packaging for app store (#16508) 2024-05-09 09:54:28 -07:00
github-actions 79fc73f0de Fetch translations from Crowdin 2024-05-09 00:12:12 +00:00
Eric Warmenhoven 55be94212a macOS: MoltenVK as xcframework (#16507) 2024-05-08 16:41:15 -07:00
github-actions bbc58eb4bb Fetch translations from Crowdin 2024-05-08 00:10:45 +00:00
github-actions ea5697c006 Fetch translations from Crowdin 2024-05-07 00:12:11 +00:00
github-actions 9ab6c62fc7 Fetch translations from Crowdin 2024-05-06 00:12:25 +00:00
zoltanvb 3092740312 Fix socket close method (#16494)
Use the platform independent socket close function from same place where all other socket communication is used from.
2024-05-05 03:48:37 -07:00
sonninnos 17b9324a24 Cleanup 'Add to Playlist' (#16495) 2024-05-05 03:48:20 -07:00
Eric Warmenhoven 24c378da4e iOS: fix #16485 crash on startup (#16498) 2024-05-05 02:29:27 -07:00
github-actions 711bf39155 Fetch translations from Crowdin 2024-05-05 00:12:50 +00:00
Brad Smith d55f95f056 Windows mouse ungrab must release the mouse instead of confine it to the current desktop (#16488)
* Windows mouse ungrab should release the cursor, instead of confining it to the current screen.

* conform to style
2024-05-04 06:10:57 -07:00
zoltanvb 28189a04a4 Analog button and keyboard tester. (#16390)
Added analog button indication for those buttons that may have use for it
- primarily L2/R2, but support was added for all buttons where at least
one controller is known to support it. Added also core option to hide
mismatching inputs where analog value is not sent (like keyboard
hotkeys assigned to retropad buttons). Analog button inputs are not
set up for remote transmission, only for local test.

Analog axes have now also dynamic coloring.

Added a keyboard tester screen which includes a standard 102-key PC
keyboard + extra blocks for all RETROK_ values present in the code.
Screen adapted from DOSBox-Pure onscreen keyboard with permission.
Keyboard button A+B switches between the two screens. Keyboard
inputs are not set up for remote transmission, only for local test.
Core option added to select start screen.

Other small improvements: core reset will take new option values,
input driver applies received values more carefully.
2024-05-04 00:33:25 -07:00
github-actions 8741e7b9f0 Fetch translations from Crowdin 2024-05-04 00:11:41 +00:00
github-actions ab04f8a7a2 Fetch translations from Crowdin 2024-05-03 00:12:17 +00:00
github-actions faec215337 Fetch translations from Crowdin 2024-05-02 00:12:09 +00:00
github-actions 7d57f00be3 Fetch translations from Crowdin 2024-05-01 00:12:52 +00:00
Eric Warmenhoven 0415ed2f95 apple: Use C function from CoreFoundation instead of ObjC from Foundation (#16476) 2024-04-29 18:30:56 -07:00
Eric Warmenhoven 217c83d893 apple: improved Nintendo Switch Online controller support through mfi (#16477) 2024-04-29 18:30:34 -07:00
Eric Warmenhoven e7f726bd19 iOS: import roms from iCloud (#16478) 2024-04-29 18:30:15 -07:00
Dionoid c04bbd6d65 Added M2000 to core selection dropdown (#16479) 2024-04-29 18:29:39 -07:00
github-actions 8a52f1e1b5 Fetch translations from Crowdin 2024-04-30 00:11:26 +00:00
github-actions d1b3902790 Fetch translations from Crowdin 2024-04-29 00:12:14 +00:00
github-actions d1b239ec8b Fetch translations from Crowdin 2024-04-28 00:13:22 +00:00
Eric Warmenhoven 4d4a5c2f72 apple: try to use system preferred language (#16472) 2024-04-27 10:42:02 -07:00
github-actions 36abf7a8cc Fetch translations from Crowdin 2024-04-27 00:11:28 +00:00
github-actions d310f834e6 Fetch translations from Crowdin 2024-04-26 00:12:01 +00:00
sonninnos 5e79dd4569 Bring back audio toggling on menu toggle (#16467) 2024-04-25 10:10:39 -07:00
Eric Warmenhoven 70ac6d9541 iOS/tvOS: Better way of packaging Frameworks (#16468) 2024-04-25 10:09:58 -07:00
github-actions 89e0dadf90 Fetch translations from Crowdin 2024-04-25 00:11:23 +00:00
Eric Warmenhoven d6ceb3d15c iOS/tvOS: Fix a couple more path name mangling bugs (#16465) 2024-04-24 10:18:47 -07:00
sonninnos e2a1e6024a Video sync option label cleanup (#16466) 2024-04-24 07:04:49 -07:00
Eric Warmenhoven 6df643d138 iOS/tvOS: MoltenVK for simulators (#16463) 2024-04-23 21:35:55 -07:00
github-actions a8b2578358 Fetch translations from Crowdin 2024-04-24 00:11:43 +00:00
Alex Kiraly a79755eaff Enable Cloud Sync on WebOS (#16461) 2024-04-23 16:57:56 -07:00
Alex Kiraly c644487d8f Enable Cloud Sync by default on Linux builds with network (#16456)
* Enable by cloudsync by default on Linux builds with network

* Make WebDAV C89-friendly
2024-04-23 16:57:38 -07:00
Eric Warmenhoven c0366aba06 Apple misc (#16462)
* iOS/tvOS: Hide MoltenVK from Core List, again

* iOS/tvOS: Don't show certain core management options

* apple: Manage macOS/iOS/tvOS from one workspace

* iOS/tvOS: update-cores.sh tweaks
2024-04-23 15:53:35 -07:00
sonninnos fc6d251be9 Fix save new config name when core loaded (#16458) 2024-04-23 09:54:04 -07:00
sonninnos 2b8c8f1145 Core info logging reformat (#16459) 2024-04-23 09:53:50 -07:00
sonninnos 87a339c3c9 Set compute fps stats logging to debug level (#16460) 2024-04-23 09:53:35 -07:00
libretroadmin 6c303be476 Fix core config saving 2024-04-23 18:52:56 +02:00
Eric Warmenhoven 9df59e4044 iOS/tvOS: fix framework creation (#16455) 2024-04-22 19:39:47 -07:00
github-actions 0398e4845d Fetch translations from Crowdin 2024-04-22 00:12:25 +00:00
github-actions 016ce34ae4 Fetch translations from Crowdin 2024-04-21 00:13:00 +00:00
Rob Loach bc53b2bc6b Add a debug message for the SET_ROTATION callback (#16454) 2024-04-20 14:38:13 -07:00
Rob Loach e510e92d79 remove-set-rotation-message (#16453)
Whenever `SET_ROTATION` is called, it outputs an INFO message in the logs. Can get quite busy. I'm assuming this was here during someone's debugging?
2024-04-20 05:05:26 -07:00
zoltanvb 30c8e31e53 Changes from 03-27 to 04-18 (#16447) 2024-04-19 07:12:23 -07:00
Eric Warmenhoven 867d3a92af iOS/tvOS: fix Import Content (#16450) 2024-04-19 07:12:13 -07:00
Eric Warmenhoven ca904a3f5d iOS/tvOS: MoltenVK 1.2.8, and fix mame core signing (#16452) 2024-04-19 07:11:49 -07:00
github-actions 4a86255363 Fetch translations from Crowdin 2024-04-19 00:11:32 +00:00
Carlo Refice adaa19cbf7 vulkan: Add support for A2R10G10B10 HDR format (#16435) 2024-04-18 07:34:46 -07:00
Eric Warmenhoven 970f404392 build fix (#16446) 2024-04-18 06:09:46 -07:00
BAXY Square ac79b43cb9 Add FlatUX Theme, Remove Retired Themes (#16441)
* Add FlatUX Theme, Remove Retired Themes

With some help from @gouchi, I decided to try and add the FlatUX theme, which has been in the retroarch-assets repository for years.  FlatUX was designed to merge the FlatUI and Retroactive themes into a single, unified design.

With the addition of FlatUX, the Retroactive and Neoactive themes will be retired. This PR removes them both from the menus. The theme files will be removed from retroarch-assets, but are archived on baxy-retroarch-themes.

* Edited Language Files to Add FlatUX, Remove Retired Themes

Edited the language files to Add FlatUX and remove the Retroactive and Neoactive themes.

* Fixed Language Files Again

I apologize for my errors.  Let's see if this gets it right.

* Updated IT Language File
2024-04-18 03:10:56 -07:00
Eric Warmenhoven 5fd4eb905c iOS QOL improvements (#16444)
* iOS/tvOS: bundle cores as frameworks as opposed to dylibs

* iOS/tvOS: update plist to indicate controller support

* iOS/tvOS: living within the sandbox

* iOS/tvOS: import content through share sheet

* iOS/tvOS: default audio sync off due to crash on background

* iOS/tvOS: don't try altkit if there's no reason to

* iOS/tvOS: enumerate cores for appstore distribution
2024-04-18 03:01:39 -07:00
github-actions 2ef8bb4eb4 Fetch translations from Crowdin 2024-04-18 00:11:50 +00:00
Tomáš Kelemen c2eddfb260 Upstream Lakka patches (#16439)
* Lakka: fix makefile for Lakka canary

* reboot/restart/eject: fix system commands

* Lakka: add url for devbuild updates
2024-04-16 22:57:49 -07:00
github-actions 6d1f7ef2be Fetch translations from Crowdin 2024-04-17 00:12:05 +00:00
github-actions 085cf85b38 Fetch translations from Crowdin 2024-04-16 00:11:22 +00:00
github-actions 4831324973 Fetch translations from Crowdin 2024-04-15 02:29:24 +00:00
Eric Warmenhoven 80e9b9ecf4 macos: improvements to remembering windowed size/position (#16436) 2024-04-13 19:42:49 -07:00
github-actions a9d28cd2c9 Fetch translations from Crowdin 2024-04-14 00:16:07 +00:00
github-actions c0692dbd1b Fetch translations from Crowdin 2024-04-13 00:10:36 +00:00
Barry Rowe 26a824caff Revert of AI service changes (#16428) 2024-04-12 16:17:24 -07:00
github-actions 6671916c78 Fetch translations from Crowdin 2024-04-12 00:12:02 +00:00
Eric Warmenhoven 3229d645d6 Improvements to mfi rumble. (#16431)
Fixes https://github.com/libretro/RetroArch/issues/15300 and https://github.com/libretro/beetle-psx-libretro/issues/891
2024-04-11 16:48:02 -07:00
github-actions b7404930ac Fetch translations from Crowdin 2024-04-10 00:11:49 +00:00
github-actions 49037cb4b5 Fetch translations from Crowdin 2024-04-09 00:12:01 +00:00
Colin Kinloch 917c2b0d15 wayland: Use frontend signal handler to quit (#16418) 2024-04-08 16:56:29 -07:00
Colin Kinloch 08496b302c wayland: Commit viewport resizes (#16419)
This allows a resize to keep up with the users pointer movements.
2024-04-08 16:56:20 -07:00
Eric Warmenhoven 77f221436b Behavior of strlcpy() if src and dst overlap is undefined (#16423)
Fixes #16397
2024-04-08 15:38:09 -07:00
github-actions ed7b5e7809 Fetch translations from Crowdin 2024-04-08 00:12:17 +00:00
github-actions a1353b0bd3 Fetch translations from Crowdin 2024-04-07 00:13:40 +00:00
libretroadmin a7e1a6c8ce DM_INTERLACED seems not defined for MSVC 2005 - so exclude it for MSVC
versions prior to 2010
2024-04-06 23:07:25 +02:00
libretroadmin d01197cf1b task_translation.c - silence some warnings 2024-04-06 22:24:22 +02:00
libretroadmin a7f6dced8d Expand win32_monitor_set_fullscreen 2024-04-06 22:16:00 +02:00
libretroadmin 92478a370e Silence warnings 2024-04-06 22:02:01 +02:00
libretroadmin e16fef8536 xdelta3 - cleanups 2024-04-06 21:52:41 +02:00
libretroadmin 53553e89ed Buildfix 2024-04-06 20:18:45 +02:00
libretroadmin d36f15a867 Buildfix for CLI 2024-04-06 20:15:54 +02:00
libretroadmin a4212061d4 Cleanup some unused variables 2024-04-06 20:12:15 +02:00
libretroadmin ba47f40487 intfstream_get_serial - use string_is_equal_fast - strlen has already
been calculated for system_name once
2024-04-06 19:53:59 +02:00
libretroadmin 46fab505b5 intfstream_get_serial - add string_starts_with conditionals 2024-04-06 19:50:33 +02:00
libretroadmin 6772579f10 Remove another unused variable 2024-04-06 19:23:23 +02:00
libretroadmin d3ff0425d8 Silence some warnings - unused variables/etc 2024-04-06 19:15:30 +02:00
libretroadmin f0cc87189c wasapi_select_device_format - cleanup 2024-04-06 19:01:12 +02:00
libretroadmin a0dc153508 Fix C89_BUILD 2024-04-06 18:52:52 +02:00
libretroadmin 95f734fade Silence warning for Dingux - no unused variables 2024-04-06 18:44:49 +02:00
libretroadmin f70dc90729 Add C99/C11 rule - use llabs if C99/C11 is availabl,e otherwise use labs 2024-04-06 18:28:19 +02:00
libretroadmin c359ae5522 (glslang) fix misleading indentation warning 2024-04-06 18:16:15 +02:00
Jason Breitweiser 5d66883e81 Add To Playlist with corrections (#16416)
* This PR contains Add To Favorite functionality.  It allows moving content to another playlist or to Create a new playlist with the selected content.

* Update retroarch.c

Fixed ISO C90 variable declaration at top of code.

* Update menu_cbs_ok.c

Fixed variable declaration for ISO requirement.

* This commit is to amend a previous PR where the mesg andd label hashs were in the wrong file.
2024-04-06 09:05:08 -07:00
github-actions 45068ee55d Fetch translations from Crowdin 2024-04-06 00:12:20 +00:00
libretroadmin def0ce97b1 (glslang) Add more parentheses 2024-04-05 22:56:16 +02:00
libretroadmin b8d12a7d12 Replace do { while (true) ; with for (;;) 2024-04-05 20:03:05 +02:00
Colin Kinloch 0212d8e770 wayland: Ignore splash sized events during splash (#16412) 2024-04-05 11:02:33 -07:00
Colin Kinloch 9749940c67 wayland: Let wl_display_disconnect close fd (#16407) 2024-04-05 07:39:45 -07:00
Jamiras a6beba6376 (cheevos) upgrade to rcheevos 11.2 (#16408)
* provide more information during achievement load process

* update rcheevos version

* do disconnected processing even when no game is loaded

* make loading widget unique

* only show loading indicator with verbose messages on
2024-04-05 07:39:38 -07:00
github-actions 5426ec8d90 Fetch translations from Crowdin 2024-04-05 00:12:10 +00:00
github-actions 72a10eda9a Fetch translations from Crowdin 2024-04-04 00:12:36 +00:00
Colin Kinloch cdd6aed8ec wayland: Ignore configure events during splash (#16398)
These were causing the gl/vk surfaces to be created with the wrong size.
2024-04-02 17:55:02 -07:00
github-actions 9b969910c4 Fetch translations from Crowdin 2024-04-03 00:12:08 +00:00
Jamiras a218c36a0a use default mapping if initializing map with no game loaded (#16396) 2024-04-02 00:07:06 -07:00
Eric Warmenhoven 595f574f5c Fix 'Add to Playlist' icon in materialui (#16401) 2024-04-02 00:06:46 -07:00
Eric Warmenhoven ecb1a638dd Fix #16402, don't add magic mfi combination bindings (#16404)
These "support" bindings made sense in older versions of iOS/mfi
controllers that didn't have full support for L3/R3 but now just get
in the way of the ones that do.
2024-04-02 00:06:40 -07:00
zoltanvb 2d7ac133ae Add core path to Core Information screen (#16405) 2024-04-02 00:06:33 -07:00
github-actions fcd546b74c Fetch translations from Crowdin 2024-04-01 00:13:06 +00:00
github-actions a7d5026c89 Fetch translations from Crowdin 2024-03-31 00:13:23 +00:00
github-actions ab6f3edb6a Fetch translations from Crowdin 2024-03-30 00:11:01 +00:00
github-actions 83d6cc5238 Fetch translations from Crowdin 2024-03-29 00:11:42 +00:00
Eric Warmenhoven ed33eb70a6 mfi: left/right pressure sensitive triggers (#16385) 2024-03-28 12:58:26 -07:00
Jason Breitweiser 87b9d0328e Add To Playlist functionality (#16386)
* This PR contains Add To Favorite functionality.  It allows moving content to another playlist or to Create a new playlist with the selected content.

* Update retroarch.c

Fixed ISO C90 variable declaration at top of code.

* Update menu_cbs_ok.c

Fixed variable declaration for ISO requirement.
2024-03-28 12:58:16 -07:00
github-actions a54811c79b Fetch translations from Crowdin 2024-03-27 00:11:42 +00:00
github-actions f549875953 Fetch translations from Crowdin 2024-03-26 00:11:27 +00:00
github-actions eeb6e703ba Fetch translations from Crowdin 2024-03-25 00:12:35 +00:00
Licaon_Kter fee6ac3185 Bump AGP (#16380)
ref: https://issuetracker.google.com/issues/184872412

This is an issue of AGP 4.1. Updating AGP to 4.2 or above should fix it.

We've been fixing this for F-Droid for a while: https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/com.retroarch.yml#L43
2024-03-22 06:43:05 -07:00
github-actions b383f951ac Fetch translations from Crowdin 2024-03-22 00:11:24 +00:00
libretroadmin 06fa5325f8 Update version 2024-03-21 16:09:50 +01:00
LibretroAdmin 9e492f74c8 Update CHANGES.md 2024-03-21 07:56:39 -07:00
github-actions 076d3cc91f Fetch translations from Crowdin 2024-03-21 00:12:46 +00:00
Cristi Mitrana b541d1e2d3 gfx/drm: fix mode vrefresh calculation (#16376)
When using an interlaced/doublescan mode, the vertical refresh rate is mis-calculated.
Replaced the current calc method with the one from libdrm's 'modetest' utility [1].

[1] https://gitlab.freedesktop.org/mesa/drm/-/blob/main/tests/modetest/modetest.c?ref_type=heads#L140
2024-03-20 14:02:51 -07:00
github-actions 8bb7173f97 Fetch translations from Crowdin 2024-03-20 00:11:23 +00:00
MajorPainTheCactus eef34e9461 Added rolling scan line simulation based on the shader subframe feature. This is implemented with a scrolling scissor rect rather than in the shader itself as this is more efficient although may not work for every shader pass - we may need an option to exclude certain passes. The implementation simply divides the screen up by the number of sub frames and then moves the scissor rect down over the screen over the number of sub frames. (#16282) 2024-03-19 08:59:36 -07:00
Patrick StankardandBernhard Schelling 5452999b2a Fix mouse grab behavior on Android (#16203)
* Add grab_mouse interface for Android
Makes mouse grabbing and 'Game Focus' work on Android with a real mouse
Properly handle relative mouse motion events on Android (SDK 28 and newer)

* Enable workflow_dispatch on CI Android

* Update android_mouse_calculate_deltas callsites

* Add RETRO_DEVICE_MOUSE to android_input_get_capabilities

* Use Handler to trigger UI events (toggle mouse, immersive mode) with 300ms delay

* Enable input_auto_mouse_grab by default for Android

* Handle RARCH_DEVICE_MOUSE_SCREEN in Android input driver

* Add android.hardware.type.pc to manifest

* Don't attempt to set pointer speed via scaling in android_mouse_calculate_deltas

* Keep x/y values within viewport resolution for screen mouse

* Use video_driver_get_size to get width/height

---------

Co-authored-by: Bernhard Schelling <[email protected]>
2024-03-19 05:33:02 -07:00
BryanJacobs 338c9a4fe4 Allow combining saves in content dir with save sorting (#16369)
* Allow combining saves in content dir with save sorting

* Formatting

* Realign var assignments
2024-03-19 04:53:32 -07:00
github-actions 6a94ed7299 Fetch translations from Crowdin 2024-03-19 00:11:54 +00:00
Alex Kiraly 5730ac51a5 Fixed SEGFAULT in WebDav task sync + type changes (#16345) 2024-03-18 12:08:40 -07:00
zoltanvb b27233b3b8 Test input joypad driver (#16370)
* Test driver for joypad inputs

Add a new joypad input driver:
- hide driver behind #ifdef and enable it in config_params.sh
- add a new config parameter to specify the test input file
- add aux files: additional config files that cancel out any binds
  that may be present in RA config, autoconfig profile for
  test joypads, test input file that matches controller test
  sequence

* Fixes and comments for test input driver.
2024-03-18 12:07:36 -07:00
github-actions 8c96bab4fc Fetch translations from Crowdin 2024-03-18 00:12:23 +00:00
goodusername123 ece60239e8 Update Lua to version 5.3.6 (#16368)
This commit updates the version of Lua used from 5.3.5 to 5.3.6
2024-03-17 09:44:57 -07:00
neil4 5306da72ce Minor updates to Overlay Mouse and Lightgun (#16366) 2024-03-17 09:40:50 -07:00
github-actions 14e49d8b9e Fetch translations from Crowdin 2024-03-17 00:12:31 +00:00
Eric Warmenhoven 68df74e628 tvOS build fix (#16363) 2024-03-16 12:30:11 -07:00
neil4 cc97df732c Add Overlay Mouse, Lightgun, and Pointer (#16343)
- When enabled, any touch inputs not in a hitbox are used to create pointing device input for the core.
- Mouse: 1-, 2-, 3-touch inputs are LMB, RMB, and MMB
- Lightgun: allows input from overlay buttons or multi-touch mappings
2024-03-16 01:56:30 -07:00
zoltanvb 99aadc8651 Input test function for Remote RetroPad (#16357)
Add input test capability for Remote Retropad core:
- read an .ratst file (JSON format) with test steps
- display instruction (via libretro SET_MESSAGE)
- highlight input to be activated
- display summary when test is finished
2024-03-15 23:59:56 -07:00
Eric Warmenhoven bca3cc0165 Minor iOS JIT availability information (#16358) 2024-03-15 23:59:49 -07:00
zoltanvb b6268d8f98 Change history up to 03.15. (#16359) 2024-03-15 23:59:36 -07:00
github-actions bbf368002e Fetch translations from Crowdin 2024-03-16 00:10:29 +00:00
github-actions 34bcb9f660 Fetch translations from Crowdin 2024-03-15 00:11:20 +00:00
github-actions dd40d81be6 Fetch translations from Crowdin 2024-03-13 00:11:25 +00:00
Rob Loach 936328e637 Remove cursor_directory and resampler_directory (#16346) 2024-03-12 04:10:42 -07:00
github-actions fc67ac0808 Fetch translations from Crowdin 2024-03-11 00:12:03 +00:00
zoltanvb c5c17dac46 Remote retropad display update (#16342)
Refine the display for Remote RetroPad, as a preparation for
using it as a test tool:
- added display for analog axes
- all inputs that were hit at least once, receive a light green color
- removed useless extra button (could never be sent)
2024-03-09 22:48:57 -08:00
Jesse TalaveraandRob Loach b7ddac2431 Add Doxygen-styled comments to parts of the libretro API (#15641)
* Touch up the documentation for a few environment calls

* Touch up more comments

* Update docs for more environment calls

* Add doc comments for more environment calls

* Change various @returns to indicate that the environment call is available

- Some environment calls might be recognized but ignored (e.g. when fast-forwarding during netplay)

* Note some deprecated symbols

* Touch up the docs for RETRO_ENVIRONMENT_SET_MESSAGE

* Touch up the docs for RETRO_ENVIRONMENT_SET_PIXEL_FORMAT

* Add more doc comments

* (libretro) Add more doxygen documentation for the libretro API

* (libretro) Add doxygen comments for the callbacks

* Document retro_init and retro_deinit

* Add comments for retro_log-related symbols

* Add a comment

* Clean up some camera-related comments

* Clean up frame time-related callbacks

* Correct some information about major callbacks

* Clarify some parameter info

* Fix incorrect info about retro_set_environment

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* (libretro) Add doxygen docs on RETRO_THROTTLE

* Touch up the docs for RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK

* Touch up the docs for some macros

* Touch up the docs for some more environment calls

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Tidy up the doc comments for clamping.h

- It was a low-hanging fruit

* Define some sections for constants

- Doxygen will group all contained symbols on one page

* Fix a duplicate @see

* Polish up the docs for the rumble interface

* Polish up the docs for RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Document INLINE

* Clean up some tags

* Touch up the docs for the sensor interface

* Add docs for RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK

* Update docs for RETRO_ENVIRONMENT_GET_INPUT_BITMASKS and accompanying names

* Update some group definitions

* Spiff up the docs for retro_dirent.h

* Document dylib.h

* Document base64.h

* Document crc32.h

* Touch up the docs for audio conversion functions

* Clean up some Doxygen tags

* Refine the docs for RETRO_ENVIRONMENT_GET_PERF_INTERFACE

* Fix incorrect infor in dylib.h

* Touch up the docs for RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE

* Revise the docs for RETRO_ENVIRONMENT_SET_GEOMETRY

* Revise the docs for RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE

* Revise a function's doc

* Touch up most of the rthreads docs

* Touch up the retro_timers.h docs

* Revise the subsystem docs

* Fix some incorrect @see's

* Touch up the docs for RETRO_ENVIRONMENT_GET_LED_INTERFACE

* Give the RETRO_ENVIRONMENT_GET_SAVESTATE_CONTEXT docs a makeover

* Slight cleanup to the microphone docs

* Slight cleanup to the device power docs

* Touch up serialization quirk docs

* Give the MIDI docs a haircut

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Freshen up rtime's docs

* Improve the docs and accompanying definitions for RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE

- Revise the text of the documentation
- Introduce an enum that defines the flags (it's still an int, so ABI compatibility will be fine)
- Move the documentation for each bit to its corresponding enum

* Shine the shoes of RETRO_ENVIRONMENT_GET_INPUT_MAX_USERS's docs

* Freshen up the docs for fifo_queue.h

* Document most of task_queue.h

* Put retro_dirent's symbols in a group

* Finish documenting task_queue.h

* Document some compatibility headers

* Document read_stdin

* Document file_stream_transforms.h

* Document the VFS API

- Not the wrappers, just the plain API itself

* (Docs) Add doxygen notes about RETRO_DEVICE_*

* Fix some line breaks

* Revise RETRO_DEVICE docs

* Document strl.h

* Update the features_cpu.h docs

* Rewrite the docs for file_stream.h

* Update the docs for retro_endianness.h

* Update the docs for retro_miscellaneous.h

* Document the RETRO_VFS_SEEK_POSITION constants

* Finish documenting rthreads.h

* Document network_stream.h

* Put the RETRO_MEMORY defines in a defgroup

* Move a doc comment in retro_common.h to file scope

* Revise the docs for RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, and accompanying symbols

* Fix the @param/in/out order in libretro.h's @param declarations

* Tidy up the docs for RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION

* Spiff up the docs for RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER

* Fix some tags

* Polish up RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE's docs

* libretro: Add header doxygen

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <[email protected]>

* Clean up the docs for RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY

* Clean up the docs for RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE

* Touch up some comment syntax for RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE

* Fix some inaccuracies

* Re-add the license statement for libretro.h

* Touch up the docs for RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2

* Touch up docs for RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY

* Touch up docs for some options-related symbols

* Fix some syntax that was preventing most doc files from being generated

* Express retro_core_option_definition docs in terms of retro_core_option_v2_definition

* Finalize some core option-related docs

* Fix some incorrect info about achievements

* Polish up the docs for RETRO_ENVIRONMENT_SET_MEMORY_MAPS

* Polish up the docs for RETRO_ENVIRONMENT_GET_DISK_CONTROL_INTERFACE_VERSION

* Add a notice for `RETRO_ENVIRONMENT_GET_LOG_INTERFACE`

* Update the disk control interface docs

* Add a sentence to a doc comment

* Update a comment

* Remove an irrelevant @todo

* Touch up the docs for `retro_message_target`

* Touch up the docs for `retro_message_type`

* Touch up the docs for `RETRO_ENVIRONMENT_SET_MESSAGE_EXT`

* Touch up the docs for `RETRO_ENVIRONMENT_SET_AUDIO_BUFFER_STATUS_CALLBACK`

* Touch up the docs for `RETRO_ENVIRONMENT_SET_MINIMUM_AUDIO_LATENCY`

* Revise a comment

* Revise the docs for `RETRO_ENVIRONMENT_SET_VARIABLE`

* Add a `@see`

* Clean up the `RETRO_ENVIRONMENT_SET_FASTFORWARDING_OVERRIDE` docs

* Update the Doxyfile

* libretro: Add three more environment callback doxygen docs

* doxygen: Remove @example reference

---------

Co-authored-by: Rob Loach <[email protected]>
2024-03-09 17:24:01 -08:00
github-actions a417f74476 Fetch translations from Crowdin 2024-03-10 00:12:22 +00:00
github-actions 0c8fa563b3 Fetch translations from Crowdin 2024-03-08 00:11:38 +00:00
github-actions 293391975e Fetch translations from Crowdin 2024-03-07 00:09:55 +00:00
zoltanvb 5109c9efc6 Small sublabel adjustment (#16335)
As mentioned in #16146
2024-03-06 14:37:17 -08:00
Eric Warmenhoven 0e8d60ba3c tvOS: fix a crash when a history playlist item does not have a label (#16336) 2024-03-06 14:37:11 -08:00
zoltanvb 89c6e23f5f Fixes for linuxraw driver (#16330)
Triggered by #16320, a few things are adjusted:
- device name is shown correctly (this was preventing config save)
- driver name fixed in autoconfig related calls
- hotplug reconnect was not working
- some logging added
2024-03-06 09:08:21 -08:00
Themaister ee64f59b18 vulkan: Remove use of oldSwapchain.
Works around a hang on gamescope. oldSwapchain generally isn't useful
after all. Just use the same code paths everywhere.
2024-03-06 12:49:52 +01:00
github-actions ccfc7bab1c Fetch translations from Crowdin 2024-03-06 00:11:35 +00:00
github-actions 952ac2a57a Fetch translations from Crowdin 2024-03-05 00:11:31 +00:00
sonninnos 2af029d451 (Ozone) Sidebar + sublabel animation fixes (#16326)
* (Ozone) List cache safeguards

* (Ozone) Sublabel width optimization + cleanup
2024-03-04 14:31:39 -08:00
github-actions c72de1213e Fetch translations from Crowdin 2024-03-04 00:11:57 +00:00
zoltanvb 82ad6a0320 Logging config file writes in all places where it was not done so far. (#16311) 2024-03-03 08:09:46 -08:00
João Henrique 8e57273593 Fix gl2.c OpenGL ES detection. (#16313)
This fixes a recurrent bug where context initialization fails due to the major/minor being both set as 0, causing an OpenGL ES 1.1 context to be created.
2024-03-03 07:57:47 -08:00
Craig CandNingyuan Li b3c350bacd Webos makefile and CI updates (#16312)
* added webOS CI

* fixed core downloading location
ship SDL2 prebuilt automatically
warning for out-dated toolchain

---------

Co-authored-by: Ningyuan Li <[email protected]>
2024-03-03 07:57:21 -08:00
github-actions ac19523ce0 Fetch translations from Crowdin 2024-03-03 00:12:26 +00:00
Gabriel Morazán ac694145f0 (UWP) Update .pfx key (#16317) 2024-03-02 10:33:03 -08:00
aerisarnandGabriel Morazán 8b1e4a1ad0 MESA UWP Integration (#16285)
* [WINRT] Enable logging on __WINRT__ and bypass verbosidy in debug

* [UWP] wrong configuration prevents GLES to compile, common functions defines GL symbols

* [UWP] configure project to allow OPENGL on default configuration and copy MESA DLLs into UWP release

* [UWP] add MESA headers

* [UWP] add MESA EGL.lib needed for GLES context. However HAVE_OPENGL is better as GL cores use desktop version, so this is left for reference and to make the solution build with HAVE_OPENGLES

* [UWP] UWP is missing some GDI function definitions, implemented into MESA Gallium

* [UWP] Configure Release project too

* [UWP] Add mesa alpha-2 release dlls

* [UWP] allow griffin and vide_driver to have an OPENGL context

* [UWP] allow wgl context to work with mesa under WINRT

* [UWP] BUG: have to modify height/width getters and align them to MESA because the screen resolution is not right in gl context. Pending further investigation

* [UWP] fix ANGLE build

* [UWP] remove duplicate import code.

* (UWP) Cleanup filters file

* MESA screen destroy fix and Yabasanshiro hack. Align to alpha-2-hack tag

---------

Co-authored-by: Gabriel Morazán <[email protected]>
2024-03-02 09:36:17 -08:00
github-actions 75c0ede845 Fetch translations from Crowdin 2024-03-02 00:10:30 +00:00
github-actions f6fc0c1d96 Fetch translations from Crowdin 2024-03-01 00:13:07 +00:00
github-actions 07de6d9594 Fetch translations from Crowdin 2024-02-29 00:11:08 +00:00
Eric Warmenhoven 7379d33801 tvOS Top Shelf (#16302)
This puts the History and Favorites playlists (up to five items each)
in the Top Shelf menu. In order for this to be enabled you must build
it yourself and change the app identifiers for the TV app and Top
Shelf extension, and add both of them to an app group.
2024-02-27 23:20:32 -08:00
sonninnos 0df031a580 Fix achievement widget padding (#16303) 2024-02-27 23:20:24 -08:00
github-actions e09820e4c7 Fetch translations from Crowdin 2024-02-28 00:11:38 +00:00
sonninnos 219c666ef8 (Ozone) Sidebar related fixes (#16299)
* (Ozone) Fix crash when deleting last playlist from sidebar

* (Ozone) Respect navigation wraparound in sidebar

* (Ozone) Fix sidebar after loading configuration
2024-02-27 03:00:00 -08:00
Craig C 2e710f46a6 Fix rpath on webOS and making sdl2 lib copy optional (#16294) 2024-02-26 21:00:18 -08:00
sonninnos 2e90ec9202 More widget corrections (#16296) 2024-02-26 20:59:43 -08:00
sonninnos 455585e8d1 Add some missing msg dots (#16297) 2024-02-26 20:59:07 -08:00
sonninnos 9dfa1df39e Remove some unneeded logging (#16298) 2024-02-26 20:59:01 -08:00
github-actions a3fe9c0ee2 Fetch translations from Crowdin 2024-02-27 00:11:59 +00:00
sonninnos 55f1120036 (WIN32) Read menubar shortcuts with menubar hidden (#16291) 2024-02-26 06:01:33 -08:00
sonninnos 59381b7312 Add visibility option for disc control notifications (#16292) 2024-02-26 06:01:15 -08:00
sonninnos fa3c685ef9 Minor widget alignments (#16288) 2024-02-26 03:12:31 -08:00
sonninnos 2ad48ae585 Reorder User Interface menu (#16289) 2024-02-26 03:12:19 -08:00
sonninnos 7566a0fea7 (WIN32) Fix native ui savestate slots (#16290) 2024-02-26 03:12:07 -08:00
sonninnos 3c4dd50974 More widget additions and adjustments (#16287) 2024-02-25 20:23:08 -08:00
github-actions 55b1ecb3f5 Fetch translations from Crowdin 2024-02-26 00:12:37 +00:00
sonninnos 8342b3cebe Widget position+size+color adjustments (#16284) 2024-02-24 23:44:29 -08:00
github-actions 5c6643c4a8 Fetch translations from Crowdin 2024-02-25 00:12:34 +00:00
Craig C a55dd23db6 webOS: replace ncpu (go), fix undefined function compile error, use pkg-config from buildroot (#16271) 2024-02-24 15:37:53 -08:00
github-actions 14b5feeabf Fetch translations from Crowdin 2024-02-24 00:10:43 +00:00
zoltanvb 14ce660a38 Sublabel finetunes as per #16146 (#16277) 2024-02-23 11:38:07 -08:00
Eric Warmenhoven 8f4964a871 iOS/tvOS: pause application on applicationWillResignActive (#16280) 2024-02-23 11:35:27 -08:00
github-actions d76df869b1 Fetch translations from Crowdin 2024-02-23 00:11:13 +00:00
github-actions 70daba6594 Fetch translations from Crowdin 2024-02-22 00:11:23 +00:00
Mats 6de0fd4362 Fix HDR w/ Vulkan driver after reinit (#16270) 2024-02-21 08:39:26 -08:00
github-actions 0f36082644 Fetch translations from Crowdin 2024-02-21 00:11:38 +00:00
zoltanvb 900c82bfe6 Add saved file name to autoconfig profile save message (#16267)
Autoconfig profile may be useful for e.g. submitting to autoconfig
repo. Construction of the filename is moved to a separate function
and reused for message.
2024-02-20 13:47:35 -08:00
sonninnos 3cb79e38f0 Don't disable FF when toggling menu (#16265) 2024-02-20 13:47:00 -08:00
zoltanvb df193685a4 Add sublabel for mouse index entry. (#16268) 2024-02-20 13:46:47 -08:00
github-actions cd1a970bf2 Fetch translations from Crowdin 2024-02-20 00:11:15 +00:00
sonninnos 7a4255af9b Add sensible limits to input_axis_threshold (#16255) 2024-02-19 11:13:05 -08:00
sonninnos 3365f9b86e Fix input bind hold when every axis does not rest on 0 (#16256) 2024-02-19 11:12:54 -08:00
sonninnos 25c15834c3 Clean up and reduce refresh rate logging (#16259) 2024-02-19 11:12:24 -08:00
sonninnos 8f1678f865 Don't load favorites/history playlist if size is 0 (#16260) 2024-02-19 11:12:18 -08:00
Eric Warmenhoven 50f4807f88 tvOS: when cache is deleted, force assets.zip re-extraction (#16264)
Also including a script to make building assets.zip easier, for people
building from source themselves
2024-02-19 11:12:09 -08:00
Rob Loach 1af8a5ff34 [Menu] Tweak the Dracula color theme for rgui and ozone (#16223)
* ozone: Tweak the Dracula color theme

* rgui: Update RGUI's Dracula  color theme

* rgui: Update Dracula's transparency colors
2024-02-18 21:42:12 -08:00
github-actions a2c730e475 Fetch translations from Crowdin 2024-02-19 00:12:02 +00:00
Bobby Smith e1cc4fb14d Add a new "Classic (Toggle)" turbo mode (#16239) 2024-02-18 08:24:05 -08:00
zoltanvb 46cc2250cf Sublabels for input bind common entries (#16242)
* Add sublabels for "port x controls" entries

Due to the port-specific indexes, sublabels for these entries
are handled specially. Some simplification/generalization  was
applied and hand-crafted string joining was removed from a few
places, though it remains still in other places.

Preparation for #16121 (this commit does not do anything yet with
file names).

* Further simplifications around joypad_index

Removed a few labels, now unused, and the left/right check, as it
fell back to the default which is given anyway in advance.
2024-02-18 08:23:56 -08:00
Eric Warmenhoven 8071b49f9d macos: add portable.txt as flag for portable install (#16244) 2024-02-18 08:23:40 -08:00
Subs c264c5a8de fix a buffer overflow on DRM mode name (#16245) 2024-02-18 08:23:20 -08:00
sonninnos 6e6a4d8b6d RETROK_UNKNOWN fixes and cleanups (#16250) 2024-02-18 08:23:05 -08:00
Bobby Smith de8e33c6b1 Bring the recent system files checks changes to Qt menu (#16251) 2024-02-18 08:22:57 -08:00
Eric Warmenhoven 47df5e6547 Add icon for tvOS Top Shelf (#16252) 2024-02-18 08:22:50 -08:00
github-actions cfd79a981b Fetch translations from Crowdin 2024-02-17 00:10:45 +00:00
github-actions 28326ce0ac Fetch translations from Crowdin 2024-02-16 00:11:22 +00:00
github-actions b209a26ebb Fetch translations from Crowdin 2024-02-15 00:11:27 +00:00
Patrick Corrigan 066a0629ff Fix actual parameter for mouse y in translate coord 2024-02-14 15:31:56 +01:00
sonninnos e8956418a8 Fix input state combos and empty binds (#16233) 2024-02-13 16:16:39 -08:00
github-actions 34e28f548a Fetch translations from Crowdin 2024-02-14 00:11:15 +00:00
github-actions 6040d4cc62 Fetch translations from Crowdin 2024-02-13 00:12:05 +00:00
zoltanvb 8dd26faf51 Fix ANDROID_INPUT_WORKAROUND sublabel. (#16226) 2024-02-12 05:40:46 -08:00
github-actions 6fb5ce2351 Fetch translations from Crowdin 2024-02-12 00:11:43 +00:00
github-actions 1c5cf6b603 Fetch translations from Crowdin 2024-02-11 00:12:32 +00:00
github-actions 434e94c782 Fetch translations from Crowdin 2024-02-10 00:11:29 +00:00
Bobby Smith c43f4738d9 Fullscreen/windowed fixes when using overrides (#16213) 2024-02-09 11:54:46 -08:00
Eric Warmenhoven bc5805e8e6 Fix #16205, crash on non-Metal build (#16214) 2024-02-09 07:31:59 -08:00
Ophidon 7b711214a7 Slang Subframe Shaders Feature (#16209)
Adds support for sub-frame shaders to vulkan/glcore/dx10-11-12.

Builds on the concept already present for frame duplication in use for BFI, to present multiple 'sub' frames per real frame to the shaders, so they can run at a higher framerate than the content framerate. Must be enabled via subframe shaders setting under synchronization settings to be active.

Will allow BFI to be implemented inside of the shaders, among any other use for the higher framerate shader authors can devise.

CurrentSubFrame and TotalSubFrames have been available inside the shaders to track what they want to do on an given subframe. TotalSubFrames will always be 1 when the setting is disabled (and when in menu/ff/pause). Framecount will not increment on sub-frames, as it does not for injected bfi frames now. Should not interfere with any existing shaders that do not check for subframes.
2024-02-09 03:12:55 -08:00
Viačasłaŭ Chalikin 997c7453a8 Fix narrator modes (#16179)
* Fix narrator

* Refactor accessibility
2024-02-08 21:14:23 -08:00
github-actions 156dd055d9 Fetch translations from Crowdin 2024-02-09 00:11:17 +00:00
github-actions 1265c92249 Fetch translations from Crowdin 2024-02-08 00:11:21 +00:00
github-actions fed6cc0ab2 Fetch translations from Crowdin 2024-02-07 00:11:07 +00:00
github-actions f5f00c4fa2 Fetch translations from Crowdin 2024-02-06 00:11:42 +00:00
github-actions 75495a6fc9 Fetch translations from Crowdin 2024-02-05 00:12:07 +00:00
zoltanvb 429e83745e Localization for a few narrator-only strings. (#16195) 2024-02-04 11:58:44 -08:00
Eric Warmenhoven ad48a74bb8 Update to MoltenVK 1.2.7 (#16199) 2024-02-04 11:58:25 -08:00
zoltanvb d88d0d5219 Option for disabling initial disc change (#16197)
Loading the last used disc for multi-disc content was automatic.
However, in some cases it is not wanted, as described in #16018
Option is added for controlling the function. Disabling the
option will also implicitly disable index saving.
2024-02-04 11:58:16 -08:00
libretroadmin e5029ffdfb Define HAVE_ACCESSIBILITY for MSVC UWP 2024-02-04 19:40:28 +01:00
github-actions fb63c79f32 Fetch translations from Crowdin 2024-02-04 00:12:06 +00:00
github-actions ad8975cb5a Fetch translations from Crowdin 2024-02-03 00:11:03 +00:00
Bobby Smith 7c3d07bf6d Tweaks to how the "Analog to Digital Type" setting is saved (#16187) 2024-02-02 12:53:24 -08:00
Ophidon f6502b89aa Don't Sleep to Sync in Non-VRR Normal Running State (#16189)
The check for sleeping to sync to a specific speed that is meant for fast forward/vrr could be true for a non-vrr normal core running state causing a possible sleep in a situation it was not intended for, especially at higher hz, and thus interfering with frame pacing.
2024-02-02 06:28:01 -08:00
the-Chain-Warden-thresh 380daf1b38 Backport CVE-2020-24370's patch (#16190) 2024-02-02 06:27:36 -08:00
github-actions 92608cba15 Fetch translations from Crowdin 2024-02-02 00:14:45 +00:00
Eric Warmenhoven 0cbc8d2a56 OSX: Only look at major GL version when creating context (#16185) 2024-02-01 12:23:54 -08:00
Bobby Smith 9e6b790f19 Fall back to global system dir if content path is empty when 'System Files are in Content Directory' is enabled (#16175) 2024-02-01 09:42:05 -08:00
github-actions 633dad5d6b Fetch translations from Crowdin 2024-02-01 00:12:08 +00:00
Eric Warmenhoven 79e43e2bd4 Fix many warnings (#16180)
Also change iOS/tvOS to use system zlib instead of compiling it in
2024-01-31 09:15:14 -08:00
sonninnos 494f6a10da Restore video frame limit on unpause (#16183) 2024-01-31 09:12:48 -08:00
github-actions 7558c99cfa Fetch translations from Crowdin 2024-01-31 00:11:20 +00:00
github-actions eabdc19aee Fetch translations from Crowdin 2024-01-30 00:11:30 +00:00
zoltanvb 996eb680b0 Do not try to fetch full name thumbnails if not set explicitly. (#16174) 2024-01-29 08:42:39 -08:00
github-actions 25317c3a1d Fetch translations from Crowdin 2024-01-29 00:11:38 +00:00
Bobby Smith 3572461d31 Improvements to firmware checks when "System Files are in Content Directory" is enabled (#16170) 2024-01-28 09:57:34 -08:00
zoltanvb 00d01c844e Enable serial detection from GDI files. (#16171) 2024-01-28 08:51:20 -08:00
github-actions c4c1fb18af Fetch translations from Crowdin 2024-01-28 00:12:29 +00:00
github-actions ceaf421453 Fetch translations from Crowdin 2024-01-27 00:10:45 +00:00
sonninnos 8ad8b6bdad Input state overflow band-aid (#16168) 2024-01-26 09:44:48 -08:00
github-actions 4c69431798 Fetch translations from Crowdin 2024-01-26 00:12:10 +00:00
Francisco Javier Trujillo Mata daccac9a1b Merge pull request #16166 from fjtrujy/fix_cwd_path
[PS2] Required after toolchain upgrade: Fixing usage of `cwd`
2024-01-25 21:35:25 +01:00
Francisco Javier Trujillo Mata 3e0a4faa96 fixing usage of cwd 2024-01-25 17:19:08 +01:00
libretroadmin 71edae5955 Fix unused function warning 2024-01-25 16:04:11 +01:00
libretroadmin ac353d1401 Bump version 2024-01-25 15:59:56 +01:00
Eric Warmenhoven 13e96e9567 Fix variable quoting issue (#16165) 2024-01-25 06:02:44 -08:00
sonninnos 8f77938767 Fix ghost input when setting RETROK_UNKNOWN (#16163) 2024-01-25 02:46:48 -08:00
github-actions 65fceb9ea0 Fetch translations from Crowdin 2024-01-25 00:12:15 +00:00
kikmonandpapa 48205d5754 Added 2022 solution and updated github action flow to compile new targets (#16158)
Co-authored-by: papa <papa>
2024-01-23 22:50:42 -08:00
github-actions 9f205b35b3 Fetch translations from Crowdin 2024-01-24 00:12:13 +00:00
sonninnos 07e945b5ae (XMB) Layout and thumbnail fixes (#16156)
* (XMB) Thumbnail layout adjustments

* (XMB) Header title improvements

* (XMB) Handheld layout adjustments
2024-01-22 22:10:24 -08:00
github-actions c1130b8775 Fetch translations from Crowdin 2024-01-23 00:12:59 +00:00
Eric Warmenhoven bd6c34b576 Add HAVE_ACCESSIBILITY to iOS builds (#16154) 2024-01-22 10:06:32 -08:00
sonninnos 266d3ed150 Add option for merging 'Hotkey Enable' device types (#16152) 2024-01-21 18:13:17 -08:00
Eric Warmenhoven cd9fb0d072 Adjust apple packaging so correct git version gets reported (#16139) 2024-01-21 18:13:07 -08:00
zoltanvb 3873c8dbfb Changes up to Jan 20. (#16150) 2024-01-21 18:12:58 -08:00
zoltanvb 7a3c4a14b0 Menu label finetunes (#16144)
Change quit sublabel depending on config save on exit status.
Update restart and menu driver sublabels.
Restore quit help text display.
2024-01-21 18:12:47 -08:00
Jamiras 4ba5fc0333 (cheevos) upgrade to rcheevos 11.1 (#16151)
* move pause spam management into rc_client

* update to rcheevos 11.1

* show [m] on missables

* update makefile
2024-01-21 18:12:30 -08:00
github-actions e3329dbbab Fetch translations from Crowdin 2024-01-22 00:12:45 +00:00
github-actions 162ad01233 Fetch translations from Crowdin 2024-01-21 00:13:03 +00:00
Ophidon 72c901a90e Squashed commit of the following: (#16142)
commit 793d41c303206b43932ddcefd44a45836def55eb
Author: Ophidon <[email protected]>
Date:   Fri Jan 19 23:12:31 2024 -0500

    Build Fix 2

    Move declarations of iterators.

commit c0e959b3d3cd773a66a17cfe034f08eaa53d525a
Author: Ophidon <[email protected]>
Date:   Fri Jan 19 22:57:01 2024 -0500

    Build Fix

    Help string was 14 characters too long for c89.

commit fc5506c7906bf82d6f88b7b0d7e4764d58d90622
Author: Ophidon <[email protected]>
Date:   Fri Jan 19 22:40:45 2024 -0500

    BFI Updates

    Significant BFI updates.

    - Adds BFI to dx10/11/12 in general.

    - Updates existing BFI menu option descriptions to be somewhat more clear in how to use correctly.

    - Adds Variable Strobe length via new 'Dark Frames' bfi sub-choice. Only valid at 180hz and above, as it must work with whole frames.

    - Algorithm to auto select 'decent' Dark Frames choice, for any given selected BFI refresh rate. Will also avoid defaults that can cause Image Retention at any Hz higher than 120. (Impossible to avoid at 120 if you have an affected screen... get an OLED :D ) .

    - Some sanity checking on selecting BFI or the other synchronizations options like Swap Interval > 1, that don't play well with BFI.
2024-01-19 23:11:31 -08:00
github-actions c03deadb12 Fetch translations from Crowdin 2024-01-20 00:11:40 +00:00
github-actions a99a7deab1 Fetch translations from Crowdin 2024-01-19 00:12:19 +00:00
Eric Warmenhoven e6eadecabd Disable mFI secondary_joypad behavior (#16129)
Some controllers show up as both HID and mFI. In that case we probably
want to let the user pick which driver to use, rather than balance
across them.

This fixes issues with the analog stick moving in the wrong direction
on the y axis.
2024-01-18 09:33:16 -08:00
github-actions 572b15a0e9 Fetch translations from Crowdin 2024-01-18 00:12:10 +00:00
github-actions fdc7fe58df Fetch translations from Crowdin 2024-01-16 00:12:01 +00:00
github-actions 13c892cf4a Fetch translations from Crowdin 2024-01-15 00:12:24 +00:00
Rafael Sá Menezes 340f733488 Enable cheevos for Wii builds (#16116)
* Fixed libogc error codes interpretation for sockets

* Added thread code for libogc rc_compat

* Enabled cheevos for Wii
2024-01-13 18:47:28 -08:00
github-actions eb76f00c7a Fetch translations from Crowdin 2024-01-14 00:13:03 +00:00
github-actions 24970fae51 Fetch translations from Crowdin 2024-01-13 00:11:19 +00:00
github-actions 61364645fc Fetch translations from Crowdin 2024-01-12 00:11:57 +00:00
Eric Warmenhoven 286e31dc7d Create directories after the config is read (#16093) 2024-01-11 13:16:27 -08:00
Eric Warmenhoven 6c57b31ce5 Fix setting iOS app icon (#16107) 2024-01-11 05:48:54 -08:00
github-actions 850fedb43c Fetch translations from Crowdin 2024-01-11 00:12:08 +00:00
Giovanni Cascione 5932a30824 Add environment command to get playlists path (#16103) 2024-01-10 07:26:46 -08:00
Bobby Smith caf2bcbc80 Don't save mouse buttons in autoconfig (#16098) 2024-01-10 07:26:23 -08:00
Eric Warmenhoven b01d3a63ea Fix regression, startup crash in Qt when desktop ui enabled (#16106) 2024-01-10 07:26:13 -08:00
github-actions bda2b1914e Fetch translations from Crowdin 2024-01-10 00:11:54 +00:00
waitingmoon 35e140ae08 fix wrong translation key (#16095) 2024-01-09 00:19:50 -08:00
sonninnos bcb804f3f2 Limit paused video refresh always (#16090) 2024-01-09 00:19:35 -08:00
Eric Warmenhoven 8c58979d76 Make sure the playlist directory exists before writing a playlist (#16085) 2024-01-09 00:18:23 -08:00
Eric Warmenhoven d7852d5db9 Fix incremental macos/ios/tvos builds, and pull correct git version (#16089) 2024-01-09 00:18:05 -08:00
sonninnos 020f3d9390 Silence compilation warning (#16092) 2024-01-09 00:17:54 -08:00
zoltanvb 14d2a61952 Removal of thumbnail pack downloader related options (#16096)
Thumbnail packs are no longer available, but the option was still
present as "legacy thumbnail downloader". Since it serves no
purpose any more, it is removed from the code.
2024-01-09 00:17:47 -08:00
github-actions 6eaa3aaa9e Fetch translations from Crowdin 2024-01-09 00:12:23 +00:00
Daniel ByonandDaniel Byon fc10539f3c Fix auto save state when state file does not already exist (#16084)
Co-authored-by: Daniel Byon <[email protected]>
2024-01-07 16:59:59 -08:00
github-actions 773a2750cd Fetch translations from Crowdin 2024-01-08 00:12:16 +00:00
Eric Warmenhoven 272b66a5db Make it easy to create a "portable" osx build (#16081)
Default to false, except steam builds where it's forced true; a
portable build has the behavior of putting all files next to the
application.
2024-01-07 07:58:06 -08:00
Ryan Kuba ed73141856 change default audio settings for emscripten builds (#16079) 2024-01-07 07:57:56 -08:00
zoltanvb 1e58df4f51 Flexible thumbnail improvements. (#16082)
- Move flag logic to task_push_pl_entry_thumbnail_download - this
enables individual "download thumbnails" entry to be also flexible
- Add a message when this download has been tried enough times
(i.e. 3)
- Optimize cases when full or short name is the same as standard
name, skip queries if so (both download and local file)
2024-01-07 07:57:39 -08:00
github-actions 398ace33cc Fetch translations from Crowdin 2024-01-07 00:12:51 +00:00
github-actions 19a368899c Fetch translations from Crowdin 2024-01-06 00:10:57 +00:00
Eric Warmenhoven ca6e60f41b Don't needlessly (re-)create default directories on apple platforms (#16073) 2024-01-05 13:49:15 -08:00
Eric Warmenhoven 07612483f2 Show git version in system information (fixes #16072) (#16076) 2024-01-04 23:12:59 -08:00
Eric Warmenhoven e428541f9a Fix input autodetect notices sometimes not appearing (#16077) 2024-01-04 23:12:33 -08:00
Eric Warmenhoven a3e9525988 Fix crash when content has no extension (#16078) 2024-01-04 23:12:19 -08:00
github-actions 01edfbfc16 Fetch translations from Crowdin 2024-01-05 00:11:44 +00:00
zoltanvb 28f8d89738 Change list update up to Dec 31 (#16069)
* Update CHANGES.md

Changes since 1.16.0 up to 2023-12-01

* Update CHANGES.md

Changes up to end of 2023 (+ Cloud Sync missed from previous version)
2024-01-04 15:31:28 -08:00
Colin Kinloch a2057d6069 input/wayland: Use unaccelerated pointer motion (#16074)
This fixes small mouse movements being rounded down to 0.

Fix "Mouse cursor appears to have a deadzone on Wayland" (#16015)
2024-01-04 15:30:47 -08:00
github-actions 06deba24a8 Fetch translations from Crowdin 2024-01-04 00:12:23 +00:00
github-actions 1e572aaa7a Fetch translations from Crowdin 2024-01-03 00:11:35 +00:00
sonninnos 945ad4a89f Limit paused video refresh when vsync is disabled (#16067) 2024-01-02 10:01:19 -08:00
Eric Warmenhoven 4220e5683d Do CRC checks on PSP/PSP(PSN) content scan (#15623) 2024-01-01 21:57:44 -08:00
zoltanvb 8886b92455 Thumbnail fixes (#16062)
* Minor thumbnail improvements

- set standard name if only one entry is in the playlist
- use first database name for thumbnails if core has multiple

* Fix playlist thumbnail downloader

Playlist thumbnail downloader function was missed from the flexible
thumbnail name update, now it is added.
2024-01-01 17:23:18 -08:00
SunM c969143efb Fix for Potential CWE 457 Issue in video_driver.c (#16064)
* Fix audio_statistics_t audio_stats to {0}

CWE-457 Use of Uninitialized Variable

* Fix audio_statistics_t audio_stats to {0}
2024-01-01 17:23:03 -08:00
David G. F ab376eb669 Make auto-savestates not use the task queue (#16061)
Auto savestate (and its optional thumbnail) is generated on core unload
(quit, netplay start, etc). This ends up using the task-queue, which in
many cases deadlocks and/or causes a crash due to its asynchronous
nature.

Given that this is a state that must be generated before quiting or
reloading the core, it makes no sense to use the task queue, it should
be a synchronous job like for instance SRAM saving.

This should fix #15248 (tested by @schmurtzm)
2023-12-30 21:44:15 -08:00
github-actions f200717b4c Fetch translations from Crowdin 2023-12-31 00:12:52 +00:00
zoltanvb 4d8283a460 Minor improvements for db / playlist handling (#16060)
Do not load rom_name as nothing is using it (but it does occupy memory)
Add two more media index options for label sanitization
2023-12-30 11:45:36 -08:00
sonninnos aa1d47ad0f (WASAPI) Buffer cleanups (#16057) 2023-12-28 18:56:28 -08:00
Eric Warmenhoven 285f800c2e iOS 9 build fix (#16056) 2023-12-28 13:03:47 -08:00
David G. F ea87495a4e Save improvements (#16053)
* Simplify autosave command function

* Simplify and split save and savestate logic

save.c contains "SRAM" saves and their logic, which uses no task/queue.
2023-12-28 11:10:46 -08:00
David G. F b30aa330aa Fix quit on close in CLI mode (#16054)
This should fix #16048 It seems that launched_from_cli is overwritten
right after the core unload, which makes RA think it was *not* CLI
launched.
2023-12-28 11:10:22 -08:00
Eric Warmenhoven 99309a4d79 Cloud sync fixes - ignore .DS_Store files and re-sync on app foreground (#16055) 2023-12-28 11:10:13 -08:00
zoltanvb 3ce56c5b42 Flexible thumbnail matching (#16040)
Add logic to handle 3 possible thumbnail names, in following order:
- most exact name derived from content file (same name, with .png extension)
- usual name derived from playlist (usually coming from database)
- shortened name up to first bracket, chopping off region/publisher etc. info

For local file system, names are checked always.
For thumbnail downloads, names are checked each time the item comes up
in the playlist, meaning that it may take going back and forth 3 times
for a thumbnail to appear. However, as a positive change, failed thumbnail
downloads are not repeated for the same playlist, which was not the case
earlier.
2023-12-27 02:26:46 -08:00
github-actions 824a0f86fd Fetch translations from Crowdin 2023-12-26 00:11:43 +00:00
Eric Warmenhoven 089f7321c7 iOS: Allow changing the app icon (take 2) (#16034) 2023-12-24 16:36:49 -08:00
github-actions 3c3971b6c3 Fetch translations from Crowdin 2023-12-25 00:12:11 +00:00
Eric Warmenhoven dc2ae86437 Fix #16023 - ssl fails on mac x86 with newer clang (#16032)
Fix comes from https://github.com/Mbed-TLS/mbedtls/pull/4947
2023-12-23 01:22:05 -08:00
github-actions 0e7d7e30b9 Fetch translations from Crowdin 2023-12-23 00:11:02 +00:00
libretroadmin 146de90214 Fix some warnings 2023-12-22 09:50:01 +01:00
libretroadmin 9d90aff7ba Add localized strings back ; buildfix 2023-12-22 09:44:43 +01:00
libretroadmin 3c564b8284 Revert "Revert "Revert "iOS: Allow changing the app icon (#16020)" (#16029)" (#16030)"
This reverts commit 8caf6c19b1.
2023-12-22 09:41:31 +01:00
LibretroAdmin 8caf6c19b1 Revert "Revert "iOS: Allow changing the app icon (#16020)" (#16029)" (#16030)
This reverts commit c06743678f.
2023-12-22 00:37:18 -08:00
LibretroAdmin c06743678f Revert "iOS: Allow changing the app icon (#16020)" (#16029)
This reverts commit 93f7bba6a5.
2023-12-21 23:15:41 -08:00
github-actions 7d50f50315 Fetch translations from Crowdin 2023-12-22 00:11:43 +00:00
Eric Warmenhoven f4fbcd129e Fix thumbnails in History for content loaded through Load Content (#16025) 2023-12-21 13:48:34 -08:00
David G. F 799e56ca98 Fix LAN room join for netpacket cores (#16026)
Tested by @schellingb
2023-12-21 13:48:27 -08:00
kyns.one f4f43d9501 Fix screen resolution always tied to the main monitor on win32 platforms. (#15897) 2023-12-20 16:34:53 -08:00
libretroadmin d0a69ffd71 (wiiu) HBL_loadToMemory - close file descriptor to avoid leakage 2023-12-21 01:32:35 +01:00
zengwei2000 df05f6e0eb fix the Memory leak: psp (#16016)
fix the Memory leak: psp

Signed-off-by: zengwei [email protected]

Signed-off-by: zengwei [email protected]
2023-12-20 16:24:35 -08:00
aveyond 4abd4e8d27 playlist: add thumbnail match with filename config (#16022)
In the commit [1], a global configuration "thumbnail match with filename"
was added which allows thumbnail match with filename.

This commit adds playlist level "thumbnail match with filename" for more
flexible configuration.

[1] 32ed9b6041 ("플레이리스트 롬파일 이름으로 썸네일 이미지를 찾도록 옵션 추가 (#15731)")

Signed-off-by: masky2012 <[email protected]>
2023-12-20 16:24:23 -08:00
Bernhard Schelling e796716f57 Netplay netpacket interface fix "Sort Save States into Folders" settings (#16019)
Before this fix with the folder setting enabled a core using the netpacket interface would append the sort folder name twice thus breaking existing save states
2023-12-20 16:23:28 -08:00
David G. F 3194dc9d65 Fix quit on content close option (#16014)
Right now close is based on core unload. There are several places where
cores are unloaded without the intention of stopping the emulation (for
instance whenever Netplay is started, core is updated, etc).

Moreover scheduling a quit under some of those events causes a task
queue deadlock (as per issue #15313) and freezed retroarch.

This fix moves the quit on close to a "manual" check, placed in the
relevant places (close content menu option, close content event (which
also covers hotkeys), etc.)
2023-12-20 16:23:18 -08:00
Eric Warmenhoven 93f7bba6a5 iOS: Allow changing the app icon (#16020) 2023-12-20 16:22:11 -08:00
github-actions 9ba18d6a7c Fetch translations from Crowdin 2023-12-21 00:11:32 +00:00
github-actions 1d1971463c Fetch translations from Crowdin 2023-12-19 00:11:46 +00:00
Eric Warmenhoven 0c1ee70ca0 iOS: Fix xrgb8888 in gl driver (#16013) 2023-12-18 01:18:03 -08:00
libretroadmin 437d9ddbf1 (task_translation.c) Fix warning 2023-12-18 01:39:00 +01:00
github-actions b2ebf281aa Fetch translations from Crowdin 2023-12-18 00:12:17 +00:00
libretroadmin 2980eb7e12 Silence some warnings 2023-12-17 05:11:18 +01:00
libretroadmin 10082e1c32 Merge midi_driver.c and location_driver.c into retroarch.c -
files were not touched for 6 months so splitting them up serves
no real purpose
2023-12-17 05:01:12 +01:00
github-actions 230503b206 Fetch translations from Crowdin 2023-12-17 00:12:44 +00:00
github-actions 9f71c2a353 Fetch translations from Crowdin 2023-12-16 00:11:34 +00:00
github-actions c8659ece16 Fetch translations from Crowdin 2023-12-15 00:12:20 +00:00
zoltanvb 0480736dcc Update wayland-protocols version to 1.31 due to fractional-scale-v1 (#15990) 2023-12-14 11:09:26 -08:00
hunterk 6513a023b8 Add a setting to allow turbo d-pad directions (#16006)
* Add option to allow turbo d-pad inputs

* fix macro tab and update comment
2023-12-13 18:36:09 -08:00
github-actions 87b6064160 Fetch translations from Crowdin 2023-12-14 00:11:40 +00:00
Jamiras 4bf0816392 fix crash showing achievement game placard when threaded video enabled and game image not cached (#16008) 2023-12-12 21:43:54 -08:00
github-actions c4faac0816 Fetch translations from Crowdin 2023-12-13 00:11:40 +00:00
Eric Warmenhoven 2ca9cf0b56 Rebuild of moltenvk for tvos (#15999) 2023-12-12 08:44:43 -08:00
Eric Warmenhoven dfda186985 Fix webdav crash bug in digest auth handling (#16003) 2023-12-12 08:44:29 -08:00
github-actions 44132c42b7 Fetch translations from Crowdin 2023-12-12 00:11:51 +00:00
github-actions 1024ede007 Fetch translations from Crowdin 2023-12-11 00:12:17 +00:00
github-actions d9b90e2182 Fetch translations from Crowdin 2023-12-10 00:12:55 +00:00
Bernhard Schelling f029b41a74 Netplay netpacket connection flow improvements (#15986)
- Allow starting netplay host while a netpacket core is running without restart
- Allow connecting to a host while a netpacket core is running without restart
- Avoid clients getting stuck in connection loop if the host has the content paused while a client connects by automatically unpausing
2023-12-09 04:48:36 -08:00
Eric Warmenhoven 26918b25e0 Enable overlay support on tvos (#15987) 2023-12-09 04:48:22 -08:00
github-actions fb1bee0ce2 Fetch translations from Crowdin 2023-12-09 00:11:44 +00:00
github-actions a8ffa5054c Fetch translations from Crowdin 2023-12-08 00:11:44 +00:00
Jamiras be8e294c56 don't flag rewind as initialized until after we're able to validate against core info (#15983) 2023-12-07 11:36:52 -08:00
github-actions 5a0317b440 Fetch translations from Crowdin 2023-12-07 00:11:32 +00:00
Jesse Talavera 750b64d89e Fix 32-bit Linux builds with XDelta enabled (#15980)
* First crack at a GitHub Actions pipeline for 32-bit Linux

* Simplify the integer typedefs in xdelta3.h

* Add XDelta to Linux.yml
2023-12-06 05:07:46 -08:00
zoltanvb 6ac1fb7b86 Change XDelta support to automatic and check lzma.h presence. (#15962) 2023-12-06 05:07:22 -08:00
github-actions 765ccda24f Fetch translations from Crowdin 2023-12-06 00:11:57 +00:00
Jesse Talavera 17c9227a9c Fix the build when XDelta is enabled on certain platforms (#15968)
* Rename the `MIN_MATCH` defined by xdelta3 to `XD3_MIN_MATCH`

- zlib defines its own macro by that name, but with a different value

* Don't redefine `SIZEOF_ARRAY` in xdelta3 if it already exists

* Don't define ssize_t in xdelta3, rely on libretro's definition instead

* Enable xdelta3 support in MSVC 2015-2019

* Fix some invalid MSBuild condition syntax

* Always build xdelta with XD3_USE_LARGESIZET as 1

* Fix an `#if` in task_patch.c

* Enable `HAVE_XDELTA` in the UWP build

* First crack at fixing Xdelta support for Android
2023-12-05 08:32:16 -08:00
github-actions 456f9b099a Fetch translations from Crowdin 2023-12-05 00:11:33 +00:00
zoltanvb 358d7cc642 Add help text for controller drivers (#15977)
Added labels and help text for controller drivers. Help was skipped
for those drivers which likely have no alternative on the given
platform.
2023-12-04 13:42:34 -08:00
github-actions 0b18225664 Fetch translations from Crowdin 2023-12-04 00:12:23 +00:00
github-actions 11c0f3df69 Fetch translations from Crowdin 2023-12-03 00:12:16 +00:00
Jamiras 93e5566b9a (cheevos) inform user when server is unreachable (#15970)
* ensure game placard is loaded on main thread

* show on-screen indicator while disconnected

* show server unreachable message in achievements menu

* remove comment
2023-12-02 05:33:13 -08:00
zoltanvb 12b6b68132 Fix videocore + switchres compile failure (#15971)
After commit f24893b, some definitions were not included when RA
is compiled with --enable-videocore option (RPi legacy driver).
2023-12-02 05:33:03 -08:00
github-actions 1fab694b76 Fetch translations from Crowdin 2023-12-02 00:11:09 +00:00
github-actions cc910ffcb6 Fetch translations from Crowdin 2023-12-01 00:12:54 +00:00
Eric Warmenhoven d2253c3de3 iOS/tvOS: create gl context as gles3 (#15958)
iOS 7+ supports gles3, which is backwards compatible with gles2. This
doesn't enable the glcore driver (which isn't working on ios yet), it
just changes the underlying context.

This fixes some of the rendering performance problems on mupen64plus_next.
2023-11-30 03:30:17 -08:00
Eric Warmenhoven 36d9bdc2da iOS/tvOS: minor xcode cleanup (#15957)
This hopefully makes debug and release easier to manage by making
their C flags the same and moving the differences to the preprocessor
macros.
2023-11-30 03:30:08 -08:00
Eric Warmenhoven d657e5b701 xdelta support on macos/ios/tvos (#15964) 2023-11-30 03:29:46 -08:00
zoltanvb fd04c8ca57 Rebase of wakira's wp_fractional_scale_v1 support (#15965)
A rebase of earlier PR https://github.com/libretro/RetroArch/pull/15355
No changes added (except for one log).
2023-11-30 03:29:38 -08:00
github-actions fb864b889b Fetch translations from Crowdin 2023-11-30 00:11:43 +00:00
github-actions 0ffd3030bf Fetch translations from Crowdin 2023-11-29 00:11:44 +00:00
github-actions 7294dbe937 Fetch translations from Crowdin 2023-11-28 00:11:34 +00:00
Eric Warmenhoven 1aeac90d8c Apple - don't call mkdir needlessly (#15954) 2023-11-26 19:34:56 -08:00
Eric Warmenhoven d8c444d44d iOS - Default to not enabling keyboard gamepad (#15340) (#15955) 2023-11-26 19:34:45 -08:00
github-actions ee62cb5407 Fetch translations from Crowdin 2023-11-27 00:11:44 +00:00
Eric Warmenhoven d7708ad84a iOS: allow ignoring the safe area (#11210) (#15951) 2023-11-26 04:59:22 -08:00
Eric Warmenhoven 2b820bdf10 iOS: Add option to disable respecting silent mode (#14928) (#15952) 2023-11-26 04:59:14 -08:00
github-actions f7b0e3e1c7 Fetch translations from Crowdin 2023-11-26 00:12:51 +00:00
github-actions 64bcbbc5b0 Fetch translations from Crowdin 2023-11-25 00:10:33 +00:00
Bobby Smith bd10a88a57 [Vulkan] Fix a validation error (#15946) 2023-11-24 11:23:58 -08:00
David G. F 0c6ecc53c7 Add LOAD_WITHOUT_CORE_INFO to Makefile (#15944) 2023-11-23 20:19:19 -08:00
Jesse Talavera-Greenberg cbf49a0b77 XDelta patch support (Take 2) (#15915)
* Add xdelta in deps

* Include <assert.h> in xdelta3.h

- Otherwise the static_assert calls can fail

* Build xdelta3 in Makefile.common

* Add xdelta support to the softpatching infrastructure

- The patching itself isn't fully implemented yet

* Adjust how xdelta3.h checks the sizes of some types

- Now checks max values instead of relying on autotools

* Add some enums that were excluded by the cherry-pick

* Remove stray whitespace

* Adjust SIZE macros in xdelta3.h

- Move them outside the XD3_USE_LARGEFILE64 block
- Add more SIZE declarations
- Make SIZEOF_UNSIGNED_LONG_LONG contingent on the presence of ULLONG_MAX

* Reintegrate xdelta support

* Enable support for xdelta's secondary compressors

- Necessary for some patches

* Fix some format specifiers

* Remove unnecessary files from xdelta

* Include xdelta3.h with a relative path

* Add xdelta3 headers to HEADERS variable

* Gate Xdelta support behind HAVE_XDELTA

- HAVE_XDELTA is on by default
- HAVE_PATCH is still required for HAVE_XDELTA to be meaningful
- Support is mostly contingent on the availability of LZMA
- Anything modern should be okay
- Legacy platforms (e.g. DOS) may need to have Xdelta support disabled
- At least until some other solution can be found

* Disable HAVE_XDELTA on platforms where the build recently failed

- These come from looking at the failed builds on GitHub
- These are guesses, and may turn out to be wrong

* Fix a potential memory leak

- Whoops, looks like I need to call two cleanup functions
- xd3_close_stream exists separately from xd3_free_stream

* Split the --help printout for --xdelta into its own strlcat call

- GCC was complaining about #ifdefs within macro arguments being non-portable

* Fix some incorrect printf format specifiers

* Modify Xdelta to adhere to C89

- It's mostly using RetroArch's INLINE macro instead of the inline keyword

* Slight cleanups

* Remove a stray comma that was hindering C89 builds

* Add XDelta support to CHANGES.md

* Change how the xdelta patch's name is computed

- To be in line with other recent refactoring

* Fix an incorrect merge

- Whoops, this part was from before I figured out how to get the size of a patched file

* Explain the song-and-dance behind computing a patched file's size

* Define some XDelta3-related constants to 0 on 32-bit platforms

* Adjust some Xdelta-related macro definitions

- Exclude the encoder, since we're not making patches
- Move some #defines to after inclusion of <stdint.h>, to fix undefined behavior
- Remove _WIN32_WINNT overrides, since they were for code that we're not using

* Fix Xdelta support

* Wrap an encoder-only function in `#if XD3_ENCODER`
2023-11-23 20:19:07 -08:00
github-actions 3e6ada7239 Fetch translations from Crowdin 2023-11-24 00:11:15 +00:00
Bobby Smith 3c25f19d80 [Win32] Fix window size when aspect ratio is < 0 (#15941) 2023-11-22 10:14:48 -08:00
Jamiras 39a44414ea reinitialize rewind buffer after loading game with achievements (#15934)
* reinitialize rewind buffer after loading game with achievements

* fix #endif placement for HAVE_GFX_WIDGETS
2023-11-22 08:50:09 -08:00
sonninnos a40f695cb8 (XMB) Corrections and cleanups (#15935)
* (XMB) Corrections and cleanups

* (XMB) Wallpaper logic rework
2023-11-22 08:49:27 -08:00
revvv f188b7a824 Wii/Wii U: Fix 3 USB controllers. See #7015 (#15938)
Fixes commit a4b934b which did not update all array indices.
2023-11-22 08:49:12 -08:00
Jamiras c2f32a434d don't track disc changes when achievements are disabled (#15939) 2023-11-22 08:48:45 -08:00
github-actions 4fd118f446 Fetch translations from Crowdin 2023-11-22 00:12:13 +00:00
github-actions 3b27e5b976 Fetch translations from Crowdin 2023-11-21 00:11:50 +00:00
sonninnos 598a0c0d37 (WASAPI) Shared buffer refactor + cleanup (#15929) 2023-11-19 08:44:25 -08:00
baidxiandjuno ee417c0f75 fix dynamic wallpaper bug (#15927)
Signed-off-by: juno <[email protected]>
Co-authored-by: juno <[email protected]>
2023-11-19 05:52:50 -08:00
Joe Osborn 46402732ba update emscripten web testing docs (#15925) 2023-11-18 16:28:12 -08:00
github-actions 4578026186 Fetch translations from Crowdin 2023-11-18 00:10:54 +00:00
Jesse Talavera-Greenberg e76a507b4a Update .gitignore (#15922)
Add libretro core backups to .gitignore
2023-11-17 11:26:05 -08:00
Jesse Talavera-Greenberg 1b03e388f8 Fix #15919 (#15923)
- Contentless support and populated content paths are not mutually exclusive in practice
- It just looked that way because most cores that support contentless mode to date don't use softpatching very much
2023-11-17 11:25:58 -08:00
Joe Osborn 0f4166a59f Use ZipFS for web player asset bundle (#15924)
* wip

* fix mount path

* Fix path for zip bundle

* fix case where idbfs sets up correctly and filesystem initializes too early

* Use partfiles to keep each zip small

* use bufferview slices instead of resize to support firefox
2023-11-17 11:25:45 -08:00
github-actions 358c6946fe Fetch translations from Crowdin 2023-11-17 00:11:32 +00:00
sonninnos 3bf5b518bb (GLUI) Icon corrections (#15914) 2023-11-16 09:41:03 -08:00
Jesse Talavera-Greenberg d84f50d0c9 Add some paths to .gitignore (#15917) 2023-11-16 09:40:56 -08:00
sonninnos dc0fbe9152 (WIN32) D3D11 prefer correction (#15916) 2023-11-16 09:40:45 -08:00
sonninnos 05a0931d2d (WIN32) Prefer D3D11 and WASAPI (#15913) 2023-11-16 06:04:48 -08:00
github-actions 5366ad0b71 Fetch translations from Crowdin 2023-11-16 00:11:35 +00:00
sonninnos 191ca8dfe4 Default 'Bind Hold' to 0 (#15909) 2023-11-15 13:18:57 -08:00
Joe Osborn 499e12c655 replace dashes with underscores in core names (#15910) 2023-11-15 13:18:41 -08:00
sonninnos 2463188fed (D3D11+12) Improve 'Max Frame Latency' logging (#15911) 2023-11-15 13:18:31 -08:00
Jamiras bbe7afcd82 (cheevos) use rc_client for state management (#15912)
* use rc_client for achievement processing

* log disconnect/reconnect messages

* address compiler warnings

* address c89 warning

* address c89 warning
2023-11-15 13:18:20 -08:00
Joe Osborn 936ff84204 Prefix core name with libretro_ for exports so that cores like 81, 2048 don't cause errors (#15908) 2023-11-15 02:08:12 -08:00
github-actions 064b530cc8 Fetch translations from Crowdin 2023-11-15 00:11:53 +00:00
sonninnos 38c77e9cfa Revert "Log level prefix cleanup (#15852)" (#15907)
This reverts commit 2a51e66120.
2023-11-14 14:31:55 -08:00
Viačasłaŭ Chalikin 9e2da4ace7 Fix linux narrator (#15904)
* Fix forking process for narrator

* Use compatible languages for eSpeak
2023-11-14 09:52:19 -08:00
Eric Warmenhoven 2ce083393f Nit: pass the write/read handlers in the correct order (#15902) 2023-11-14 09:51:51 -08:00
sonninnos b341d90c2e Fix word wrapped widget length (#15905) 2023-11-14 09:51:43 -08:00
sonninnos f091b5a9e9 Move and relocate 'Frame Delay' (#15898) 2023-11-12 11:23:57 -08:00
github-actions e71a83e5c4 Fetch translations from Crowdin 2023-11-12 00:12:17 +00:00
sonninnos 9b97b40566 Enforce swap interval 1 in menu if vsync is on + Restore menu_throttle_framerate option (#15889)
* Enforce swap interval 1 in menu if vsync is on

* Restore menu_throttle_framerate option
2023-11-10 18:40:02 -08:00
fishcu b5303e347a Change rotation type to int to maximize compatibility and to match glUniform1i (#15890)
* Change rotation type to int to maximize compatibility and to match glUniform1i

* Change to C style comment; Make comment more useful (hopefully)
2023-11-10 16:46:04 -08:00
fishcu 1b50470c96 Add FinalViewportSize support to GLSL (#15891)
* Change rotation type to int to maximize compatibility and to match glUniform1i

* Change to C style comment; Make comment more useful (hopefully)

* Add support for FinalViewportSize in GLSL
2023-11-10 16:45:20 -08:00
github-actions 833c4b5acd Fetch translations from Crowdin 2023-11-11 00:10:36 +00:00
sonninnos f20c8493b3 Use video refresh rate for menu frame limiting (#15886) 2023-11-09 16:36:19 -08:00
Bernhard Schelling 107283edc8 Updates to the netplay netpacket interface (#15887)
* Updates to the netplay netpacket interface
- Switch environment call number from 76 to 78 (retire 76 as it was never used by any core)
- Simplify broadcasts by removing the option to send to all but one client
- Separate explicit flushing and querying of incoming packet into two operations (RETRO_NETPACKET_FLUSH_HINT and retro_netpacket_poll_receive_t)
- Enable a core to specify a protocol version string which can get used instead of core version to determine compatibility between two players
- Log and notify a separate message when there is a content crc mismsatch to convey it being less severe (as different games may be able to do network communication with each other)

* C89 compile fix
2023-11-09 16:36:08 -08:00
github-actions c976fbb868 Fetch translations from Crowdin 2023-11-10 00:12:16 +00:00
sonninnos 866c6853ba (XMB) Background image improvements (#15884) 2023-11-09 00:54:02 -08:00
github-actions 03dab11092 Fetch translations from Crowdin 2023-11-09 00:11:59 +00:00
github-actions 9dbb069b67 Fetch translations from Crowdin 2023-11-08 00:11:25 +00:00
github-actions a61812edea Fetch translations from Crowdin 2023-11-07 00:11:45 +00:00
Viačasłaŭ Chalikin 6b0313ed21 Fix: request builder for the AI Service (#15879) 2023-11-06 10:52:17 -08:00
Eric Warmenhoven 7237b6acfc Enable HDR support in iOS. (#15871)
* Enable HDR support in iOS.

* Enable HDR support in tvOS.
2023-11-06 00:50:14 -08:00
zoltanvb c42498e531 Warning fixes. (#15877) 2023-11-06 00:04:17 -08:00
sonninnos e7a01dbf67 Silence signedness warning (#15875) 2023-11-05 17:22:11 -08:00
github-actions 55e03b5c3c Fetch translations from Crowdin 2023-11-06 00:11:25 +00:00
zoltanvb aaff36d024 Small fixes for signedness warnings. (#15873) 2023-11-05 15:33:49 -08:00
zoltanvb 701d22d935 PS2 usability fixes (#15861)
- Make sure logs are written before frontend deinit
- Add memory stats
- Add process_args to frontend to fix some cases when salamander cfg was not filled
- Add a missing include in case someone wants to compile for PS2 with HAVE_THREADS
2023-11-05 15:33:17 -08:00
Jamiras b43e1f3caf prevent write-past-end-of-buffer when signed value wraps (#15868) 2023-11-05 15:32:46 -08:00
sonninnos 1a97b0edd4 Savestate thumbnail fixes (#15869) 2023-11-05 15:32:28 -08:00
zoltanvb e35afdb57a Separate ffmpeg and audiomixer conditionals (#15872)
There are cases when mixer exists without ffmpeg. In such cases,
some music content can still be added to the mixer for playback.
Logic added to separate the two cases.
2023-11-05 15:32:14 -08:00
Andrew Gorbaty c9de6e5932 fix (#15874) 2023-11-05 15:31:43 -08:00
github-actions 3186b1dce3 Fetch translations from Crowdin 2023-11-05 00:11:58 +00:00
github-actions b703cd94da Fetch translations from Crowdin 2023-11-04 00:11:04 +00:00
Joe OsbornandRob Loach 862bebf687 (Emscripten) Modularize the JavaScript and clean up the web build (#15688)
* Increase emscripten stack size and decrease path size to fix emscripten builds broken since de45fc2

* use modularize flags for better-behaved javascript output

* makefile and loader changes

* use specialHTMLTargets to support modular access to canvas

* bind key events to canvas, not document

This way focus means focus and we can have multiple RA instances in
one page.

* Work around an emscripten bug in strict mode

* (Emscripten) Use console.error() for error messages

* increase asyncify stack size

* Fix `-lm` flag-related compile warnings in emscripten

---------

Co-authored-by: Rob Loach <[email protected]>
2023-11-02 13:25:50 -07:00
Jamiras 8523eaf5c0 [cheevos] upgrade to rcheevos 11.0 (#15859)
* update rcheevos

* update rcheevos
2023-11-02 11:52:36 -07:00
zoltanvb 636a6e9d55 Silence a format truncation warning (#15857)
This line generates a warning during compilation:

menu/menu_displaylist.c:11925:46: warning: '%d' directive output may be truncated writing between 1 and 3 bytes into a region of size 2 [-Wformat-truncation=]
11925 |                                        "Mode %d", toc->track[i].mode);
      |                                              ^~
menu/menu_displaylist.c:11925:40: note: directive argument in the range [0, 255]
11925 |                                        "Mode %d", toc->track[i].mode);
      |                                        ^~~~~~~~~
In file included from /usr/include/stdio.h:936,
                 from ./libretro-common/include/file/file_path.h:26,
                 from menu/menu_displaylist.c:27:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 7 and 9 bytes into a destination of size 7
   64 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   65 |        __bos (__s), __fmt, __va_arg_pack ());
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Since the value of the track mode should be either 1 or 2, a modulo 10 should not limit the displayed value, and it removes the warning.
2023-11-01 17:56:56 -07:00
github-actions e6621a4f71 Fetch translations from Crowdin 2023-11-02 00:11:31 +00:00
zoltanvb e7a10b2326 Fallback to screensaver inhibit via D-Bus on Wayland (#15856)
Some Wayland compositors (e.g. Phoc) don't implement Wayland's Idle
protocol. They instead rely on things like Gnome Screensaver.
2023-11-01 11:11:38 -07:00
libretroadmin 4cd68ddfbe (Video processor) C89 buildfix 2023-11-01 03:53:59 +01:00
github-actions 1fb66d8465 Fetch translations from Crowdin 2023-11-01 00:12:27 +00:00
sonninnos 2a51e66120 Log level prefix cleanup (#15852) 2023-10-31 15:52:02 -07:00
zoltanvb 232095797e Set fixed locale for numbers, close to config read/write (#15782)
Move setlocale() closer to config file read/write.
2023-10-31 12:03:24 -07:00
LibretroAdmin 466e82f55d Update sdl2_gfx.c 2023-10-31 12:01:00 -07:00
sonninnos 5a605099c6 Rename '3rd party' to 'third party' (#15851) 2023-10-31 11:58:50 -07:00
LibretroAdmin 249702a2e9 Update Android.mk - define HAVE_ACCESSIBILITY 2023-10-31 10:45:05 -07:00
sonninnos 220caa5143 Remove menu_throttle_framerate option (#15850) 2023-10-31 09:58:47 -07:00
Joe Osborn 3167529fbf increase chunk size for reads/writes under emscripten (#15845) 2023-10-31 07:18:45 -07:00
Viačasłaŭ Chalikin 43105ab5c7 Add Belarusian language option (#15780) 2023-10-31 05:51:57 -07:00
zoltanvb 9d46953fa2 Exclude "System Volume Information" explicitly. (#15833) 2023-10-30 15:33:45 -07:00
Eric Warmenhoven dfeeb031fe Fix mouse support for melondsds on osx (#15837) 2023-10-30 15:33:17 -07:00
Eric Warmenhoven cdb2549b2e Sort playlists ignoring extension. (#15836)
"Sony - PlayStation 2" sorts before "Sony - PlayStation" because when
the menu sorts, it includes the `.lpl` extension, and space comes
before period.
2023-10-30 15:32:50 -07:00
github-actions a61f87ce8e Fetch translations from Crowdin 2023-10-30 00:12:00 +00:00
github-actions a6059473f6 Fetch translations from Crowdin 2023-10-29 00:12:21 +00:00
github-actions 6d1b76964e Fetch translations from Crowdin 2023-10-28 00:10:33 +00:00
github-actions 54805a1827 Fetch translations from Crowdin 2023-10-27 00:11:23 +00:00
sonninnos da59b8c9ac Add 'Frame Rest' power saving option (#15834) 2023-10-26 04:20:48 -07:00
github-actions 4f8e3fabad Fetch translations from Crowdin 2023-10-26 00:11:14 +00:00
GavinDarkglider 5356afc750 Minor fixes to udev input drivers. Add support for canary builds to lakka updater stuff (#15818)
* Input: Udev: Fix touch support building against older kernel headers

* Input: Udev: Fix Touch Deep Debug compile issues

* Input: Joypad: Udev: Joypad: Add Change detection for udev events

This is handy with controllers like the Nintendo Joycons that have a daemon
app in the background to handle combining them into one controller(Joycond)

Since the device was already added, but joycond clamped permissions on evdev
retroarch was never updating the controller input change, this fixes that issue.

Note: Needs a patch in joycond as well, to send change uevent.

This shouldnt cause any issues with other controllers, as the kernel probably
will never send change events for these device types.

* Lakka: Add canary builds to updater
2023-10-25 08:19:00 -07:00
github-actions 535898da0d Fetch translations from Crowdin 2023-10-25 00:11:30 +00:00
sonninnos 06d5cd39fc Set save redirect paths before set_environment (#15820) 2023-10-24 16:20:17 +02:00
Mike EricksonandChenX 7df3ca3064 fix:xinput disconnect lost gamepad (#15819)
Co-authored-by: ChenX <[email protected]>
2023-10-24 00:28:10 -07:00
zoltanvb 57e9a3e876 Fix for "no sound on PS2" (#15827)
Earlier refactor https://github.com/libretro/RetroArch/commit/f121847e00689952df56365f35e3ef1f9a8ece1e
has removed CMD_EVENT_AUDIO_START (and stop), however on PS2 it
causes no sound, so it is added back behind a compiler switch.
2023-10-24 00:27:21 -07:00
Cpod12andXunkar 274d47f957 Xunkar's AI service rework updated (#15640)
* AI service rework

* File missing

* Fixed C89 build

* Fixed usage of inline for C89 build

* Fixed an overlay unloading bug

Made sure to unload the overlay on release and when the server returns empty values in automatic modes.

* Fixed forward decl (c89)

* Fixed OpenGL texture loading

Moved image display to the main thread for now

* Changed some formatting slightly

* Fixed struct variable order and put brackets on newlines

* Moved pointer, fixed retroarch.cfg, and replaced strlcat with strlcpy

* Fixed catenation issue

* Fixed a few other catenation issues

* Fixed one more concatenation  issue

* Fixed concatenation issue

* Fixed a few other concatenation issues

* Fixed one more concatenation  issue

* potential fix for parsing issue

---------

Co-authored-by: Xunkar <[email protected]>
2023-10-24 00:27:06 -07:00
github-actions 126cb21177 Fetch translations from Crowdin 2023-10-24 00:11:31 +00:00
github-actions d46ede42dc Fetch translations from Crowdin 2023-10-23 00:11:44 +00:00
github-actions b53bce6877 Fetch translations from Crowdin 2023-10-22 00:12:04 +00:00
github-actions 7011d0c3de Fetch translations from Crowdin 2023-10-17 00:13:29 +00:00
sonninnos f69a29209f Ignore menu event action in the end of function instead (#15811) 2023-10-16 08:45:23 -07:00
sonninnos e3becab18e (Ozone) Thumbnail related fixes (#15810) 2023-10-16 06:56:54 -07:00
Eric Warmenhoven b71d09a31f build fix - ios widget (#15809) 2023-10-16 06:56:45 -07:00
github-actions 2557282ea3 Fetch translations from Crowdin 2023-10-16 00:11:43 +00:00
zoltanvb 0f111e647f Do not exclude browser and config directory settings if RGUI is disabled. (#15803) 2023-10-15 05:47:26 -07:00
Eric Warmenhoven 793cb0cfa3 Fix ios-vulkan-ppsspp, and a small cloud save fix (#15801) 2023-10-15 05:45:03 -07:00
Ophidon ce6a00b495 High Hz Synchronization (#15798)
* High Hz Synchronization

Makes adjustment to driver_adjust_system_rates and related functions to handle Hz skew adjustment for high refresh rates better, especially when using effective refresh modifiers like swap interval or BFI.

* Reorder for Build Fix

Reorder declaration for build fix
2023-10-14 06:57:40 -07:00
Eric Warmenhoven 777d96d20a Clean up iOS/tvOS Xcode project, get the simulators working (#15799) 2023-10-14 06:57:09 -07:00
github-actions 575859e5d7 Fetch translations from Crowdin 2023-10-14 00:10:46 +00:00
Bernhard Schelling d096effe7f When using the new core netpacket interface for netplay, don't synchronize the host SRAM to a joining client (#15797)
Fix netplay connection not getting marked as reusable while the new core netpacket interface is enabled
2023-10-13 10:53:22 -07:00
Eric Warmenhoven a8e6e5db29 Ignore compile_commands.json used by LSP servers (#15795) 2023-10-13 10:29:18 -07:00
Eric Warmenhoven 1247041d05 The default for load_dummy_on_core_shutdown for Apple should be true (#15794) 2023-10-13 10:29:05 -07:00
Eric Warmenhoven b6ee341507 iOS 17/Xcode 15 update: Fix iOS Widget (#15796) 2023-10-13 10:28:56 -07:00
github-actions 0ef36ab15f Fetch translations from Crowdin 2023-10-13 00:11:19 +00:00
Eric Warmenhoven e6e0d07081 iOS: If runloop_iterate returns an error, exit rather than crash. (#15791) 2023-10-12 03:42:48 -07:00
github-actions cb377f8232 Fetch translations from Crowdin 2023-10-12 00:10:01 +00:00
Eric Warmenhoven 7264c13b01 Fix Xcode 14.0.1 cross compile x86_64 build - only strip debugging symbols (#15786) 2023-10-11 03:54:08 +02:00
github-actions c86a25fd66 Fetch translations from Crowdin 2023-10-11 00:11:21 +00:00
libretroadmin 58f7051c61 Fix memory leak in PR #15762 2023-10-10 15:38:07 +02:00
github-actions 21b3baf7bd Fetch translations from Crowdin 2023-10-10 00:11:15 +00:00
github-actions f3c6550597 Fetch translations from Crowdin 2023-10-09 00:11:38 +00:00
github-actions 6e1dc98e24 Fetch translations from Crowdin 2023-10-08 00:12:04 +00:00
github-actions ec0f3af015 Fetch translations from Crowdin 2023-10-07 00:11:04 +00:00
GavinDarkglider 4387b0ab94 Lakka Switch Updates.... (#15754)
* Lakka: Switch: Decouple From LibNX builds.

* Lakka: Always show Power Management Settings menu

* Lakka: Switch: Add Nintendo Switch Options Menu, and First Option

* Lakka: Switch: Add CEC Toggle

* Lakka: Switch: Add Bluetooth ERTM Toggle

* Retroarch: unix platform:  Always display battery meter even when the device reports it as unknown
This is useful for most arm devices that have unknown battery status until charger state changes

* Retroarch: Lakka: Remove Gamemode stuff from build

Lakka will never include this, as it only runs base system, and retroarch.
2023-10-06 04:55:22 -07:00
XK 812c003a6a Add support for joining MITM servers over cmdline (#15762)
* Add support for MITM servers over cmdline

* Address https://github.com/libretro/RetroArch/pull/15762#pullrequestreview-1654378806
2023-10-06 02:02:50 -07:00
Cpod12 e7eb588fb6 Fixed text in 16:9 for RGUI not scaling properly (#15768) 2023-10-05 23:18:40 -07:00
github-actions 2be13a59f7 Fetch translations from Crowdin 2023-10-05 00:11:14 +00:00
Joe Osborn 2baf9ec7e0 Enqueue replay record/playback until next frame (#15751)
* Enqueue replay record/playback until next frame

This fixes a bug where stdin commands activated via polling would
trigger replay record/playback in the middle of a frame, then input
checking would pull from them before the next frame came around---it
only makes sense to change the active replay in between frames, not
during them.

* fix comment syntax
2023-10-04 00:53:51 -07:00
github-actions 14cb3732eb Fetch translations from Crowdin 2023-10-01 00:12:39 +00:00
LibretroAdmin 0bbfba8137 Update vfs_implementation.c 2023-09-30 10:41:35 -07:00
greenchili2 fdd5e7cea0 Fix bug that was causing weirdness in Wii builds. (#15752)
Things like the info files not being read.  User defined directories not sticking ( likely not detected ) and all kinds of other goodness.
2023-09-30 10:38:32 -07:00
github-actions f427aaee8f Fetch translations from Crowdin 2023-09-30 00:11:17 +00:00
github-actions 085c2aaf9a Fetch translations from Crowdin 2023-09-29 00:10:50 +00:00
sonninnos 6c2cc45628 Prevent proceeding to next bind when single binding (#15746) 2023-09-28 06:57:20 -07:00
github-actions 5e09d2f3a5 Fetch translations from Crowdin 2023-09-28 00:11:11 +00:00
Rob Loach 0d6577ad07 Update Use Filename setting description (#15741)
The menu item for matching the thumbnails with filenames was just "Use Filename", which isn't that descriptive. This change tweaks it a bit so that the option is a bit more clear.

So happy to have this feature in place.
2023-09-27 05:52:57 -07:00
sonninnos 05ce35b103 Don't process menu events while input is being flushed (#15742) 2023-09-27 05:52:30 -07:00
github-actions 9a57ec29d5 Fetch translations from Crowdin 2023-09-27 00:11:08 +00:00
bulzipke 32ed9b6041 플레이리스트 롬파일 이름으로 썸네일 이미지를 찾도록 옵션 추가 (#15731) 2023-09-26 05:31:59 -07:00
sonninnos ea86be0a2b Fix menu analog stick navigation (#15740) 2023-09-26 05:30:15 -07:00
github-actions 5dfae519ce Fetch translations from Crowdin 2023-09-26 00:11:01 +00:00
github-actions 9d67cc92c8 Fetch translations from Crowdin 2023-09-25 00:11:34 +00:00
github-actions 712b9350a5 Fetch translations from Crowdin 2023-09-23 00:10:31 +00:00
LibretroAdmin a2b8504363 Update default.txt 2023-09-22 13:37:26 -07:00
Jesse Talavera-Greenberg d9207c924e Add a stub ffmpeg camera driver 2023-07-20 15:28:16 -04:00
Jesse Talavera-Greenberg 3e10389106 Create the file where the ffmpeg camera driver will be implemented 2023-07-20 15:14:30 -04:00
1614 changed files with 479083 additions and 151122 deletions

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
;;; Directory Local Variables
;;; See Info node `(emacs) Directory Variables' for more information.
(
(c-mode . ((standard-indent . 3)
(c-basic-offset . 3)
(c-file-offsets . ((arglist-intro . ++)
(arglist-cont-nonempty . ++)
(block-close . 0)
(block-open . 0)))
(eval . (setq-local c-cleanup-list
(cl-set-difference c-cleanup-list
'(brace-else-brace
brace-elseif-brace))))))
(objc-mode . ((c-basic-offset . 3)))
)
-35
View File
@@ -1,35 +0,0 @@
# First and foremost consider this:
- Only RetroArch bugs should be filed here. Not core bugs or game bugs
- This is not a forum or a help section, this is strictly developer oriented
## Description
[Description of the bug]
### Expected behavior
[What you expected to happen]
### Actual behavior
[What is actually happening]
### Steps to reproduce the bug
1. [First step]
2. [Second step]
3. [and so on...]
### Bisect Results
[Try to bisect and tell us when this started happening]
### Version/Commit
You can find this information under Information/System Information
- RetroArch: [version/commit]
### Environment information
- OS: [The operating system you're running]
- Compiler: [In case you are running local builds]
+100
View File
@@ -0,0 +1,100 @@
name: Bug report
description: This is not a forum or a help section, this is strictly developer oriented.
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Only RetroArch bugs should be filed here. Not core bugs or game bugs
options:
- label: This is a bug in RetroArch frontend
required: true
- label: I have searched the existing issues
- type: textarea
id: description
attributes:
label: Description
description: Description of the actual behavior of the bug
placeholder: What is actually happening
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What you expected to happen
- type: textarea
id: reproduce_steps
attributes:
label: Steps to reproduce the bug
description: List all steps to reproduce the problem
placeholder: |
1. [First step]
2. [Second step]
3. [and so on...]
validations:
required: true
- type: input
id: version
attributes:
label: Version/Commit
description: You can find this information under Information/System Information
placeholder: 1.20.0 (Git ab3b175)
validations:
required: true
- type: input
id: bisecting
attributes:
label: Bisect Results
description: Did this work with any older RetroArch version? Can you point to a version (or even commit) where it broke?
placeholder: 43105ab
- type: dropdown
id: nigthly
attributes:
label: Present in the nightly version
description: Is the issue reproducible with current [nightly builds](https://buildbot.libretro.com/nightly/)?
options:
- I don't know
- Yes, this is reproduced in the nightly build
- No, looks like this is already resolved
default: 0
validations:
required: true
- type: input
id: platform
attributes:
label: Platform & operating system
description: The system you're running RetroArch on
placeholder: Linux aarch64, Windows 11 23H2, Android 14, PS Vita
validations:
required: true
- type: input
id: cores
attributes:
label: Affected Cores
description: List the affected cores and their versions here, if applicable. If the issue **only occurs with a single core** then the bug may not be with RetroArch; in that case, you should report it in that core's repository instead of here.
placeholder: bsnes (115), FCEUmm ((SVN) aebea87), Snes9x (1.63.229933ea)
- type: textarea
id: environment
attributes:
label: Environment information
description: Additional information about hardware and software
placeholder: |
* Window Manager: dwm/X11
* Affected video drivers: sdl2, glcore
* Installed through Flatpak
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Paste [RetroArch log](https://docs.libretro.com/guides/generating-retroarch-logs/) and/or [GDB backtrace](https://docs.libretro.com/development/retroarch/debugging/). This will be automatically formatted into code, so no need for backticks.
render: shell
@@ -0,0 +1,6 @@
---
name: Feature request
title: "[Feature Request] <FEATURE NAME>"
about: Is there something you'd like to see in RetroArch?
labels: feature request
---
+14
View File
@@ -0,0 +1,14 @@
blank_issues_enabled: true
contact_links:
- name: Libretro Forums
url: https://forums.libretro.com
about: A place to discuss all things libretro
- name: Discord
url: https://ra-link.web.app/discord
about: Join our Discord server for help
- name: RetroArch/libretro subreddit
url: https://www.reddit.com/r/RetroArch
about: Subreddit dedicated to RetroArch and the libretro API framework
- name: Documentation
url: https://docs.libretro.com
about: Official RetroArch documentation for users and developers
+5 -8
View File
@@ -9,6 +9,9 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
@@ -17,7 +20,7 @@ jobs:
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile Salamander
run: |
@@ -27,13 +30,7 @@ jobs:
- name: Compile RA
run: |
make -f Makefile.ctr -j$(getconf _NPROCESSORS_ONLN) USE_CTRULIB_2=1 clean
make -f Makefile.ctr -j$(getconf _NPROCESSORS_ONLN) USE_CTRULIB_2=1 HAVE_STATIC_DUMMY=1
make -f Makefile.ctr -j$(getconf _NPROCESSORS_ONLN) USE_CTRULIB_2=1 HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: RA-3DS-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch_3ds.cia
+38 -34
View File
@@ -1,34 +1,38 @@
name: CI Android
on:
push:
pull_request:
repository_dispatch:
types: [run_build]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
cd pkg/android/phoenix
./gradlew assembleDebug
find . -iname "*.apk" -exec ls -l "{}" \;
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: retroarch-android-${{ steps.slug.outputs.sha8 }}
path: |
pkg/android/phoenix/build/outputs/apk/normal/debug/phoenix-normal-debug.apk
pkg/android/phoenix/build/outputs/apk/aarch64/debug/phoenix-aarch64-debug.apk
name: CI Android
on:
push:
pull_request:
workflow_dispatch:
repository_dispatch:
types: [run_build]
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
cd pkg/android/phoenix
./gradlew assembleDebug
find . -iname "*.apk" -exec ls -l "{}" \;
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v4
with:
name: retroarch-android-${{ steps.slug.outputs.sha8 }}
path: |
pkg/android/phoenix/build/outputs/apk/normal/debug/phoenix-normal-debug.apk
pkg/android/phoenix/build/outputs/apk/aarch64/debug/phoenix-aarch64-debug.apk
+8 -5
View File
@@ -9,26 +9,29 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-djgpp-build-container:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
make -f Makefile.dos -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.dos -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1
make -f Makefile.dos -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-DOS-dummy-${{ steps.slug.outputs.sha8 }}
path: |
+7 -9
View File
@@ -9,16 +9,19 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-emscripten:latest
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile RA
run: |
emmake make -f Makefile.emscripten -j$(getconf _NPROCESSORS_ONLN) clean
@@ -27,9 +30,4 @@ jobs:
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: RA-Emscripten-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch.js
+8 -10
View File
@@ -9,26 +9,24 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-devkitpro:latest
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile RA
run: |
make -f Makefile.ngc -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.ngc -j$(getconf _NPROCESSORS_ONLN) EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 HAVE_STATIC_DUMMY=1
make -f Makefile.ngc -j$(getconf _NPROCESSORS_ONLN) EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: RA-GameCube-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch_ngc.dol
+37
View File
@@ -0,0 +1,37 @@
name: CI Linux (i686)
on:
push:
pull_request:
repository_dispatch:
types: [run_build]
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-i386-ubuntu:xenial-gcc9
options: --user root
steps:
- name: Check Out Repo
uses: taiki-e/checkout-action@v1
- name: Configure Build
run: |
./configure --disable-qt --enable-xdelta
- name: Compile RA
run: |
make -j$(getconf _NPROCESSORS_ONLN) clean
make -j$(getconf _NPROCESSORS_ONLN) info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
+27 -40
View File
@@ -9,63 +9,50 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
# These jobs run smoke tests to ensure that MSVC-specific builds work properly.
jobs:
uwp:
msvc:
runs-on: windows-2022
strategy:
matrix:
version: [UWP, 2019, 2022]
configuration: [Debug, Release]
platform: [x64]
exclude:
- version: UWP
configuration: Debug
include:
- configuration: Release
platform: x64
- configuration: ReleaseANGLE
platform: x64
steps:
- uses: actions/checkout@v3
- name: Add msbuild to PATH
uses: microsoft/[email protected]
- name: Compile RA
working-directory: "${{github.workspace}}/pkg/msvc-uwp"
run: |
msbuild -p:"Configuration=${{matrix.configuration}}" -p:"Platform=${{matrix.platform}}" .\RetroArch-msvcUWP.sln
- name: Get short SHA
id: slug
shell: powershell
run: echo "::set-output name=sha8::$('${{github.sha}}'.Substring(0,8))"
- uses: actions/upload-artifact@v3
with:
name: retroarch-UWP-${{matrix.configuration}}-${{matrix.platform}}-${{ steps.slug.outputs.sha8 }}
path: pkg/msvc-uwp/AppPackages/RetroArch-msvcUWP
msvc-2019:
runs-on: windows-2022
strategy:
matrix:
include:
- configuration: Release
- version: UWP
configuration: ReleaseAngle
platform: x64
# Qt and Cg builds are excluded for now
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1
uses: microsoft/setup-msbuild@v1
- name: Compile RA
working-directory: "${{github.workspace}}/pkg/msvc"
working-directory: "${{github.workspace}}/pkg/msvc${{ matrix.version == 'UWP' && '-uwp' || ''}}"
run: |
msbuild -p:"Configuration=${{matrix.configuration}}" -p:"Platform=${{matrix.platform}}" .\RetroArch-msvc2019.sln
msbuild -p:"Configuration=${{matrix.configuration}}" -p:"Platform=${{matrix.platform}}" .\RetroArch-msvc${{matrix.version}}.sln
- name: Get short SHA
id: slug
shell: powershell
run: echo "::set-output name=sha8::$('${{github.sha}}'.Substring(0,8))"
run: echo "sha8=$('${{github.sha}}'.Substring(0,8))" >> $env:GITHUB_OUTPUT
# https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch-msvc2019-${{matrix.configuration}}-${{matrix.platform}}-${{ steps.slug.outputs.sha8 }}
path: pkg/msvc/${{matrix.platform}}/${{matrix.configuration}}/RetroArch-msvc2019.exe
name: retroarch-${{matrix.version}}-${{matrix.configuration}}-${{matrix.platform}}-${{ steps.slug.outputs.sha8 }}
path: |
${{ matrix.version != 'UWP' }}:
pkg/msvc/${{matrix.platform}}/${{matrix.configuration}}/RetroArch-msvc${{matrix.version}}.exe
${{ matrix.version == 'UWP' }}:
pkg/msvc-uwp/AppPackages/RetroArch-msvcUWP
+77
View File
@@ -0,0 +1,77 @@
name: CI Windows (MSYS2)
on:
push:
pull_request:
repository_dispatch:
types: [run_build]
permissions:
contents: read
jobs:
msys2-build-test:
strategy:
fail-fast: false
matrix:
sys: [MINGW64, UCRT64,CLANG64]
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.sys }}
update: true
install: base-devel git
pacboy: >-
gettext:p
gobject-introspection:p
graphite2:p
p11-kit:p
qt6:p
qt6-3d:p
qt6-charts:p
qt6-datavis3d:p
qt6-imageformats:p
qt6-location:p
qt6-lottie:p
qt6-networkauth:p
qt6-quick3dphysics:p
qt6-quicktimeline:p
qt6-remoteobjects:p
qt6-scxml:p
qt6-sensors:p
qt6-serialbus:p
qt6-speech:p
qt6-tools:p
qt6-translations:p
qt6-virtualkeyboard:p
qt6-webchannel:p
qt6-websockets:p
x264:p
cc:p
- name: Configure and build RetroArch
shell: msys2 {0}
run: |
echo "Building RetroArch in ${{ matrix.sys }} environment"
./configure
make -j$(nproc) info all
- name: Collect DLLs and binaries
shell: msys2 {0}
run: |
echo "Collecting DLLs and binaries"
mkdir -p dist
cp retroarch.exe dist/
ldd retroarch.exe|grep $MINGW_PREFIX |awk '{print $3}'|xargs -I {} cp {} dist/
- name: Archive build artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: retroarch-${{ matrix.sys }}
path: dist/
+4 -1
View File
@@ -7,6 +7,9 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: macos-latest
@@ -23,7 +26,7 @@ jobs:
id: slug
run: echo "sha8=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RetroArch-${{ steps.slug.outputs.sha8 }}
path: |
+8 -5
View File
@@ -9,26 +9,29 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-dingux:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.miyoo clean
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.miyoo
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.miyoo info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_miyoo_arm32${{ steps.slug.outputs.sha8 }}
path: |
+10 -7
View File
@@ -9,33 +9,36 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-ps2:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile Salamander
run: |
make -f Makefile.ps2.salamander -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.ps2.salamander -j$(getconf _NPROCESSORS_ONLN) release
- name: Compile RA
run: |
make -f Makefile.ps2 -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.ps2 -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 release
make -f Makefile.ps2 -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 info release
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PS2-dummy-${{ steps.slug.outputs.sha8 }}
path: |
raboot.elf
retroarchps2.elf
retroarchps2.elf
+44
View File
@@ -0,0 +1,44 @@
name: CI PS3/PSL1GHT
on:
push:
pull_request:
repository_dispatch:
types: [run_build]
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-psl1ght:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile Salamander
run: |
make -f Makefile.psl1ght.salamander -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.psl1ght.salamander -j$(getconf _NPROCESSORS_ONLN)
- name: Compile RA
run: |
make -f Makefile.psl1ght -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.psl1ght -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v4
with:
name: RA-psl1ght-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch_psl1ght_salamander.elf
retroarch_psl1ght.elf
+8 -5
View File
@@ -9,10 +9,13 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-orbis:latest
options: --user root
@@ -24,17 +27,17 @@ jobs:
apk add ncurses-dev make bash python2
apk add libintl icu-dev wget
wget https://dot.net/v1/dotnet-install.sh && chmod 755 dotnet-install.sh && ./dotnet-install.sh -c 3.0 --install-dir ~/cli
- name: Compile RA
run: |
export PATH=~/cli:$PATH # .net cli
make -f Makefile.orbis -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1
make -f Makefile.orbis -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: bin-${{ steps.slug.outputs.sha8 }}
path: |
+8 -5
View File
@@ -9,16 +9,19 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-psp:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile bootstrap
run: |
cd bootstrap/psp1/kernel_functions_prx
@@ -29,7 +32,7 @@ jobs:
run: |
make -f Makefile.psp1.salamander -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.psp1.salamander -j$(getconf _NPROCESSORS_ONLN)
- name: Compile RA
run: |
make -f Makefile.psp1 -j$(getconf _NPROCESSORS_ONLN) clean
@@ -38,8 +41,8 @@ jobs:
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PSP-dummy-${{ steps.slug.outputs.sha8 }}
path: |
+9 -6
View File
@@ -9,30 +9,33 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-vita:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile Salamander
run: |
make -f Makefile.vita.salamander -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.vita.salamander -j$(getconf _NPROCESSORS_ONLN)
- name: Compile RA
run: |
make -f Makefile.vita -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.vita -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 HAVE_VITAGLES=1
make -f Makefile.vita -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 HAVE_VITAGLES=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PSVita-dummy-${{ steps.slug.outputs.sha8 }}
path: |
+8 -5
View File
@@ -9,26 +9,29 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-dingux:odbeta
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.rs90 clean
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.rs90
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.rs90 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_rs90_mips32${{ steps.slug.outputs.sha8 }}
path: |
+8 -5
View File
@@ -9,26 +9,29 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-dingux:odbeta
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.retrofw clean
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.retrofw
make -j$(getconf _NPROCESSORS_ONLN) -f Makefile.retrofw info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_retrofw_mips32${{ steps.slug.outputs.sha8 }}
path: |
+52
View File
@@ -0,0 +1,52 @@
name: CI Generate Source Only Tarball
# Trigger whenever a release and/or is created
on:
release:
types:
- created
push:
tags:
- "v*.*"
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: archive
id: archive
run: |
VERSION=${GITHUB_REF##*/}
test -z "$VERSION" && VERSION=${{ github.event.release.tag_name }}
VERSION=$(printf "%s\n" "$VERSION" | sed 's/^v//')
PKGNAME="retroarch-sourceonly-$VERSION"
mkdir -p /tmp/$PKGNAME
mv * /tmp/$PKGNAME
mv /tmp/$PKGNAME .
rm -rf $PKGNAME/pkg || true
rm -rf $PKGNAME/wii/libogc || true
rm -rf $PKGNAME/deps/glslang/glslang/Test || true
rm -rf $PKGNAME/deps/SPIRV-Cross/reference || true
rm -rf $PKGNAME/gfx/include/userland || true
find $PKGNAME/ -type f -name '*.a' -delete || true
find $PKGNAME/ -type f -name '*.lib' -delete || true
find $PKGNAME/ -type f -name '*.dylib' -delete || true
find $PKGNAME/ -type f -name '*.so.*' -delete || true
find $PKGNAME/ -type f -name '*.dll' -delete || true
TARBALL=$PKGNAME.tar.xz
tar cJf $TARBALL $PKGNAME
echo "tarball=$TARBALL" >> $GITHUB_OUTPUT
- name: upload tarball
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.archive.outputs.tarball }}
+7 -4
View File
@@ -9,16 +9,19 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-libnx-devkitpro:latest
options: --user root
steps:
- uses: actions/checkout@v3
- name: Compile RA
run: |
make -f Makefile.libnx -j$(getconf _NPROCESSORS_ONLN) clean
@@ -26,8 +29,8 @@ jobs:
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-libnx-dummy-${{ steps.slug.outputs.sha8 }}
path: |
+9 -11
View File
@@ -9,31 +9,29 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-devkitpro:latest
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile Salamander
run: |
make -f Makefile.wii.salamander -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.wii.salamander -j$(getconf _NPROCESSORS_ONLN) EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0
- name: Compile RA
run: |
make -f Makefile.wii -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.wii -j$(getconf _NPROCESSORS_ONLN) EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 HAVE_STATIC_DUMMY=1
make -f Makefile.wii -j$(getconf _NPROCESSORS_ONLN) EXTERNAL_LIBOGC=1 GX_PTHREAD_LEGACY=0 HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: RA-Wii-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch_wii.dol
+8 -11
View File
@@ -9,31 +9,28 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-wiiu:latest
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile Salamander
run: |
make -f Makefile.wiiu -j$(getconf _NPROCESSORS_ONLN) SALAMANDER_BUILD=1 clean
make -f Makefile.wiiu -j$(getconf _NPROCESSORS_ONLN) SALAMANDER_BUILD=1
- name: Compile RA
run: |
make -f Makefile.wiiu -j$(getconf _NPROCESSORS_ONLN) clean
make -f Makefile.wiiu -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1
make -f Makefile.wiiu -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 info all
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: RA-WiiU-dummy-${{ steps.slug.outputs.sha8 }}
path: |
retroarch.rpx
+6 -9
View File
@@ -9,16 +9,19 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-mxe-win32-cross:gcc10
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile RA
run: |
export MOC=/usr/lib/mxe/usr/i686-w64-mingw32.shared/qt5/bin/moc
@@ -29,9 +32,3 @@ jobs:
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: retroarch${{ steps.slug.outputs.sha8 }}
path: |
retroarch.exe
+6 -9
View File
@@ -9,16 +9,19 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
container:
container:
image: git.libretro.com:5050/libretro-infrastructure/libretro-build-mxe-win64-cross:gcc10
options: --user root
steps:
- uses: actions/checkout@v3
- uses: taiki-e/checkout-action@v1
- name: Compile RA
run: |
export MOC=/usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/moc
@@ -29,9 +32,3 @@ jobs:
- name: Get short SHA
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
with:
name: retroarch${{ steps.slug.outputs.sha8 }}
path: |
retroarch.exe
+2 -2
View File
@@ -16,12 +16,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Setup Java JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 18
distribution: zulu
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Checkout
+2 -2
View File
@@ -18,12 +18,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Setup Java JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 18
distribution: zulu
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Checkout
+4 -1
View File
@@ -13,6 +13,9 @@ on:
permissions:
contents: read
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
linux-c89: # Smoketest build using most restrictive compiler and default options
runs-on: ubuntu-latest
@@ -30,4 +33,4 @@ jobs:
- name: Build Debug
run: |
make clean # making sure we don't have leftovers from previous build
make DEBUG=1 GL_DEBUG=1 C89_BUILD=1
make DEBUG=1 GL_DEBUG=1 C89_BUILD=1 info all
+125
View File
@@ -0,0 +1,125 @@
name: CI webOS
on:
push:
tags-ignore:
- '*'
branches:
- '*'
pull_request:
release:
types: [ published ]
repository_dispatch:
types: [ run_build ]
env:
PACKAGE_NAME: com.retroarch.webos
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out Repo
uses: actions/checkout@v4
- name: Download ares-cli-rs
uses: robinraju/[email protected]
with:
repository: "webosbrew/ares-cli-rs"
latest: true
fileName: "ares-package_*.deb"
out-file-path: "temp"
- name: Download Manifest Generator
uses: robinraju/[email protected]
with:
repository: "webosbrew/dev-toolbox-cli"
latest: true
fileName: "webosbrew-toolbox-gen-manifest_*.deb"
out-file-path: "temp"
- name: Update packages
run: sudo apt-get -yq update
- name: Install webOS CLI
run: sudo apt-get -yq install ./temp/*.deb
- name: Download webOS NDK
uses: robinraju/[email protected]
with:
repository: "openlgtv/buildroot-nc4"
latest: true
fileName: "arm-webos-linux-gnueabi_sdk-buildroot-x86_64.tar.gz"
out-file-path: "/tmp"
- name: Extract webOS NDK
shell: bash
working-directory: /tmp
run: |
tar xzf arm-webos-linux-gnueabi_sdk-buildroot-x86_64.tar.gz
./arm-webos-linux-gnueabi_sdk-buildroot/relocate-sdk.sh
- name: Load RARCH_VERSION from version.all
id: version
shell: bash
run: |
RARCH_VERSION=$(grep -Po '(?<=#define PACKAGE_VERSION ")[^"]+' version.all)
echo "RARCH_VERSION=$RARCH_VERSION" >> "$GITHUB_ENV"
- name: Compile RA (GLES3 variant)
shell: bash
run: |
. /tmp/arm-webos-linux-gnueabi_sdk-buildroot/environment-setup
make -f Makefile.webos clean
make -f Makefile.webos ipk PACKAGE_NAME=${PACKAGE_NAME} ADD_SDL2_LIB=1 \
HAVE_OPENGLES3=1 HAVE_OPENGLES3_1=1 HAVE_OPENGLES3_2=1 -j"$(getconf _NPROCESSORS_ONLN)"
mv webos/com.retroarch.webos_${RARCH_VERSION}_arm.ipk \
webos/com.retroarch.webos.gles3_${RARCH_VERSION}_arm.ipk
env:
DEBUG: ${{ github.event_name == 'release' && '0' || '1' }}
- name: Upload GLES3 artifact
uses: actions/upload-artifact@v4
with:
name: com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_${{ github.sha }}_arm.ipk
path: webos/com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_arm.ipk
- name: Compile RA (default)
shell: bash
run: |
. /tmp/arm-webos-linux-gnueabi_sdk-buildroot/environment-setup
make -f Makefile.webos ipk PACKAGE_NAME=${PACKAGE_NAME} ADD_SDL2_LIB=1 -j"$(getconf _NPROCESSORS_ONLN)"
env:
DEBUG: ${{ github.event_name == 'release' && '0' || '1' }}
- name: Upload default artifact
uses: actions/upload-artifact@v4
with:
name: com.retroarch.webos_${{ env.RARCH_VERSION }}_${{ github.sha }}_arm.ipk
path: webos/com.retroarch.webos_${{ env.RARCH_VERSION }}_arm.ipk
- name: Generate Manifest (default only)
if: github.repository == 'webosbrew/Retroarch'
shell: bash
run: |
webosbrew-gen-manifest -o webos/${PACKAGE_NAME}.manifest.json \
-p webos/${PACKAGE_NAME}_${RARCH_VERSION}_arm.ipk \
-i https://github.com/webosbrew/RetroArch/raw/webos/webos/icon160.png \
-l https://github.com/webosbrew/RetroArch
- name: Release
if: github.event_name == 'release' && github.repository == 'webosbrew/Retroarch'
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.event.release.tag_name }}
allowUpdates: true
omitNameDuringUpdate: true
omitBody: true
omitPrereleaseDuringUpdate: true
artifacts: |
webos/com.retroarch.webos_${{ env.RARCH_VERSION }}_arm.ipk
webos/com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_arm.ipk
webos/${{ env.PACKAGE_NAME }}.manifest.json
+42 -2
View File
@@ -14,6 +14,7 @@
*.swp
*.cache
*.gcda
*.lcbk
*.gcno
.tmp
.tmp.c
@@ -96,6 +97,10 @@ database
overlays
playlists
states
cheats
thumbnails
docs/html
system
shaders/shaders_cg
shaders/shaders_glsl
shaders/shaders_slang
@@ -134,6 +139,7 @@ wiiu/wut/elf2rpl/elf2rpl
# CLion
/cmake-build-debug/
.run
# Android
/pkg/android/phoenix/obj/
@@ -142,7 +148,6 @@ wiiu/wut/elf2rpl/elf2rpl
/pkg/android/phoenix/bin/
/pkg/android/phoenix/gen/
/pkg/android/phoenix/local.properties
/pkg/android/phoenix/gradle.properties
/pkg/android/phoenix/.gradle
/pkg/android/phoenix/.externalNativeBuild
/pkg/android/phoenix/build
@@ -154,6 +159,7 @@ wiiu/wut/elf2rpl/elf2rpl
/media/shaders_cg/
/media/libretrodb/
compile_commands.json
pkg/apple/iOS/build/
pkg/apple/build/
ui/drivers/qt/moc_*
@@ -189,6 +195,8 @@ retroarch.js
retroarch.js.mem
*.bc
*.wasm
*.wasm.map
obj-emscripten/
# only ignore .js files in the repo root
/*.js
@@ -206,6 +214,10 @@ retroarch_switch.nso
*_irx.c
# Wayland
gfx/common/wayland/fractional-scale-v1.c
gfx/common/wayland/fractional-scale-v1.h
gfx/common/wayland/viewporter.c
gfx/common/wayland/viewporter.h
gfx/common/wayland/idle-inhibit-unstable-v1.c
gfx/common/wayland/idle-inhibit-unstable-v1.h
gfx/common/wayland/xdg-shell-unstable-v6.c
@@ -220,6 +232,16 @@ gfx/common/wayland/relative-pointer-unstable-v1.c
gfx/common/wayland/relative-pointer-unstable-v1.h
gfx/common/wayland/viewporter.c
gfx/common/wayland/viewporter.h
gfx/common/wayland/cursor-shape-v1.h
gfx/common/wayland/cursor-shape-v1.c
gfx/common/wayland/tablet-unstable-v2.h
gfx/common/wayland/tablet-unstable-v2.c
gfx/common/wayland/content-type-v1.h
gfx/common/wayland/content-type-v1.c
gfx/common/wayland/single-pixel-buffer-v1.h
gfx/common/wayland/single-pixel-buffer-v1.c
gfx/common/wayland/xdg-toplevel-icon-v1.h
gfx/common/wayland/xdg-toplevel-icon-v1.c
# libretro-common samples
libretro-common/samples/streams/rzip/rzip
@@ -237,4 +259,22 @@ param.sfo
/deps/SPIRV-Cross/out/build/x64-Debug
# Visual Studio Code
.vscode/
.vscode/
# Clazy
*.clazy.yaml
# PSL1GHT
*.SELF
EBOOT.BIN
pkg/psl1ght/*.pkg
modern_alpha_blend_fpo.h
modern_alpha_blend_vpo.h
modern_opaque_fpo.h
modern_opaque_vpo.h
gfx/drivers/rsx_shaders/modern_alpha_blend.fpo
gfx/drivers/rsx_shaders/modern_alpha_blend.vpo
gfx/drivers/rsx_shaders/modern_opaque.fpo
gfx/drivers/rsx_shaders/modern_opaque.vpo
pkg/psl1ght/pkg/USRDIR/shaders_cg/
!pkg/psl1ght/pkg/USRDIR/system/
+9 -4
View File
@@ -331,7 +331,7 @@ build-retroarch-linux-i686:
.build-retroarch-macos-xcode:
# Metal/Universal x86_64 arm64 is default
tags:
- macosx-packaging
- mac-apple-silicon
stage: build
variables:
XCARCHIVE_PATH: pkg/apple/build/RetroArchUniversal
@@ -348,7 +348,8 @@ build-retroarch-linux-i686:
- xcodebuild -exportArchive -archivePath ${XCARCHIVE_PATH}.xcarchive -exportPath . -exportOptionsPlist pkg/apple/OSX/ExportOptions.plist
- ditto -c -k --sequesterRsrc --keepParent RetroArch.app ${XCPROJECT_NAME}.zip
- mkdir .retroarch-repo
- "cp -r ./* .retroarch-repo"
- "cp -R ./* .retroarch-repo"
- echo '#define GIT_VERSION ' $(git rev-parse --short HEAD) > .retroarch-repo/.git_version.h
- "mv .retroarch-repo/ retroarch-repo/"
# Mac OS Universal, Metal
@@ -357,6 +358,8 @@ build-retroarch-osx-universal-metal:
build-retroarch-osx-opengl-x64:
extends: .build-retroarch-macos-xcode
tags:
- macosx-packaging
variables:
XCARCHIVE_PATH: pkg/apple/build/RetroArchOpenGL
XCPROJECT_NAME: RetroArch
@@ -387,8 +390,6 @@ build-retroarch-osx-opengl-x64:
build-retroarch-ios-arm64:
extends: .build-retroarch-macos-xcode
tags:
- mac-apple-silicon
variables:
XCPROJECT_NAME: RetroArch_iOS13
XCCONFIG: GitLabCI.xcconfig
@@ -402,10 +403,13 @@ build-retroarch-ios-arm64:
- xcodebuild -project pkg/apple/${XCPROJECT_NAME}.xcodeproj -destination ${XCDESTINATION} -config Release -scheme "${XCSCHEME}" -xcconfig pkg/apple/iOS/${XCCONFIG} build
- mkdir .retroarch-repo
- "cp -r ./* .retroarch-repo"
- echo '#define GIT_VERSION ' $(git rev-parse --short HEAD) > .retroarch-repo/.git_version.h
- "mv .retroarch-repo/ retroarch-repo/"
build-retroarch-ios9:
extends: .build-retroarch-macos-xcode
tags:
- macosx-packaging
variables:
XCPROJECT_NAME: RetroArch_iOS9
XCCONFIG: GitLabCI.xcconfig
@@ -418,6 +422,7 @@ build-retroarch-ios9:
- xcodebuild -project pkg/apple/${XCPROJECT_NAME}.xcodeproj -config Release -scheme "${XCSCHEME}" -xcconfig pkg/apple/iOS/GitLabCI.xcconfig build
- mkdir .retroarch-repo
- "cp -r ./* .retroarch-repo"
- echo '#define GIT_VERSION ' $(git rev-parse --short HEAD) > .retroarch-repo/.git_version.h
- "mv .retroarch-repo/ retroarch-repo/"
build-retroarch-tvos-arm64:
-191
View File
@@ -1,191 +0,0 @@
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}",
"${workspaceRoot}/libretro-common/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}",
"${workspaceFolder}/libretro-common/include",
"${workspaceRoot}/libretro-common/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}",
"${workspaceFolder}/libretro-common/include"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17",
"configurationProvider": "ms-vscode.makefile-tools"
},
{
"name": "msys2-mingw32",
"includePath": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw64",
"includePath": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Switch",
"includePath": [
"/opt/devkitpro/devkitA64/aarch64-none-elf/include",
"/opt/devkitpro/devkitA64/lib/gcc/aarch64-none-elf/8.3.0/include",
"/opt/devkitpro/libnx/include",
"/opt/devkitpro/portlibs/switch/include",
"/opt/devkitpro/portlibs/switch/include/freetype2",
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"__aarch64__",
"__SWITCH__",
"HAVE_LIBNX"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "/opt/devkitpro/devkitA64/bin/aarch64-none-elf-gcc",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
},
{
"name": "WiiU",
"includePath": [
"/opt/devkitpro/devkitPPC/powerpc-eabi/include",
"/opt/devkitpro/devkitPPC/lib/gcc/powerpc-eabi/6.3.0/include",
"/opt/devkitpro/portlibs/ppc/include",
"${workspaceFolder}/**"
],
"defines": [
"WIIU",
"WIIU_HID"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "/opt/devkitpro/devkitPPC/bin/powerpc-eabi-gcc",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
},
{
"name": "ps2sdk-ee",
"includePath": [
"${env:PS2DEV}/ps2sdk/common/include",
"${env:PS2DEV}/ps2sdk/ee/include",
"${env:PS2DEV}/gsKit/include",
"${workspaceFolder}/**"
],
"defines": [
"PS2",
"_EE"
],
"compilerPath": "${env:PS2DEV}/ee/bin/mips64r5900el-ps2-elf-gcc",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
-70
View File
@@ -1,70 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarch.exe",
"args": ["-v"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/retroarch.exe",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "PSP-GDB Debugger",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarchpsp.elf",
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"setupCommands": [
{
"text": "symbol-file ${workspaceFolder}/retroarchpsp.elf",
"description": "read symbols for elf file",
"ignoreFailures": true
},
{
"description": "Enable all-exceptions",
"text": "-exec \"catch throw\"",
"ignoreFailures": true
}
],
"showDisplayString": true,
"targetArchitecture": "mips",
"MIMode": "gdb",
"miDebuggerPath": "/usr/local/pspdev/bin/psp-gdb",
"miDebuggerServerAddress": "127.0.0.1:10001",
}
]
}
-43
View File
@@ -1,43 +0,0 @@
{
/*"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.env.windows": {
"PATH": "/mingw64/lib/ccache/bin:/mingw64/lib/ccache/bin:/mingw64/lib/ccache/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:$PATH",
"MSYSTEM": "MINGW64",
},*/
"terminal.integrated.cursorBlinking": true,
"editor.tabSize": 3,
"editor.detectIndentation": false,
"editor.renderWhitespace": "all",
"editor.insertSpaces": true,
"editor.formatOnSave": false,
"editor.ruler": [80],
"files.associations": {
"*.h": "c",
"*.in": "c",
"*.rh": "c",
"array": "c",
"iosfwd": "c",
"xlocbuf": "c",
"xmemory0": "c",
"ios": "c",
"list": "c",
"unordered_map": "c",
"unordered_set": "c",
"sstream": "cpp",
"hash_map": "c",
"hash_set": "c",
"initializer_list": "c",
"string_view": "c",
"utility": "c",
"thread": "c",
"xlocale": "c",
"deque": "c",
"vector": "c",
"xhash": "c",
"xiosbase": "c",
"xstring": "c",
"xtree": "c",
"xutility": "c"
},
"C_Cpp.dimInactiveRegions": false,
}
-128
View File
@@ -1,128 +0,0 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "linux clean build",
"type": "shell",
"group": "build",
"command": "make clean && ./configure && make -j12"
},
{
"label": "linux clean",
"type": "shell",
"group": "build",
"command": "make clean"
},
{
"label": "linux build with debug symbols",
"type": "shell",
"group": "build",
"command": "DEBUG=1 make -j12"
},
{
"label": "linux build",
"type": "shell",
"group": "build",
"command": "make -j12"
},
{
"label": "linux build and run",
"type": "shell",
"group": "build",
"command": "make -j12 && ./retroarch -v"
},
{
"label": "linux build and run with debug symbols",
"type": "shell",
"group": "build",
"command": "DEBUG=1 make -j12 && ./retroarch -v"
},
{
"label": "msys2-mingw64 build",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"command": "./configure; make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
},
{
"label": "msys2-mingw64 build with debug symbols",
"type": "shell",
"group": "build",
"command": "./configure; DEBUG=1 make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
},
{
"label": "msys2-mingw64 rebuild",
"type": "shell",
"group": "build",
"command": "make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
},
{
"label": "msys2-mingw64 clean",
"type": "shell",
"group": "build",
"command": "make clean",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
},
{
"label": "msys2-mingw64 run",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true },
"command": "./retroarch -v",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
]
}
+2 -1
View File
@@ -315,7 +315,7 @@ Mike Swanson (chungy)
mikeOSX
minucce
misson20000
Mohmoud (esoptron) (Hedonium)
esoptron
Monroe88
Morgane (MorganeAD)
mprobinson
@@ -481,6 +481,7 @@ vaguerant
Val Packett (valpackett)
Valerio Proietti (kamicane)
vgmoose
Viachaslau Khalikin (viachaslavic)
Vicki Pfau (endrift)
Vicky C Lau (vickychenglau)
vin (suseme)
+602 -10
View File
@@ -1,5 +1,596 @@
# Future
# 1.22.1
- ANDROID: OnNewIntent handler to allow launchers start new content without closing first
- ANDROID: Use app-specific storage for Google Play builds of RetroArch
- ANDROID: Implement support for the Storage Access Framework, to allow the user to mount most directories1 from internal storage, the SD card, other removable storage devices and any document providers provided by other Android apps on the current device.
- 3DS: Add 800px mode for New 3DS models
- APPLE: Include sameduck, gearcoleco, geargrafx cores in App Store builds
- APPLE: Include reminiscence, virtualjaguar, vitaquake2 cores in App Store builds
- APPLE: Include gam4980 core in App Store builds
- APPLE: Bundle identifier added to Information menu
- APPLE: Option to control the usage of Metal argument buffers
- APPLE: Don't force fullscreen, allow multitasking on iPad
- APPLE: AppIntents for Siri, Shortcuts
- APPLE: Fix ffmpeg camera driver
- APPLE/MFI: Try harder to own the home button
- AUDIO: Microphone CoreAudio driver for iOS and macOS
- AUTOCONF: Autoconfig match extended with a physical identifier
- CAMERA: Use ffmpeg libavfilter virtual input device as default
- CHEEVOS: Show additional message for unsupported achievements
- CHEEVOS: Upgrade to rcheevos 12.1
- CHEEVOS: Change expired token message from info to error
- CHEEVOS: Hashing of RVZ files is now supported
- CLOUDSYNC: Enable icloud_drive cloud sync backend on MacOS / iOS
- CLOUDSYNC: Don't always trust the server hash
- CLOUDSYNC: Enable WebDAV support for Android
- CLOUDSYNC: Speed up cloudsync on Apple
- DATABASE: Improve multidisk game scanning
- DATABASE: Filter in Database Manager now works for genre and region
- EMSCRIPTEN: Support core switching
- EMSCRIPTEN: Support suspend screensaver
- EMSCRIPTEN/RWEBCAM: Fix camera driver
- EMSCRIPTEN/RWEBINPUT: Add accelerometer/gyroscope support
- EMSCRIPTEN/RWEBPAD: Add rumble support
- EMSCRIPTEN/RWEBAUDIO: Rewrite driver, set as default audio driver
- INPUT: Default key and mouse binds for lightgun Start and Select buttons
- INPUT: Turbo mode corrections
- INPUT: Turbo fire settings are now saved to remaps, not to overrides
- INPUT: Fix menu usage when OK/Cancel has mouse binds
- INPUT: Ignore menu mouse startup position before moving
- INPUT: Fix heavy slowdown when using Bluetooth XInput controllers with rumble
- INPUT: Reset and close content hotkeys now require confirmation, similar to quit
- INPUT: Menu toggle and hotkey enable can now be assigned to the same key
- INPUT: Option to have hotkeys follow the port mapped first to the core
- INPUT/ANDROID: Favor mouse coordinates for lightgun
- INPUT/UDEV: Fix lost terminal settings after restart from menu
- INPUT/BSV/REPLAY: Bumped replay format version to 2. Old replays will still play back fine.
- INPUT/BSV/REPLAY: Add option to skip deserializing checkpoints from replay files (it introduces jank in some emulators).
- INPUT/BSV/REPLAY: Add checkpoint and initial savestate compression, following the `savestate_file_compression` config boolean. Use zstd if available, or fall back to zlib.
- INPUT/BSV/REPLAY: Add incremental checkpoints based on statestreams (depending on `HAVE_STATESTREAM` compile time flag). As an example, 60 `pcsx_rearmed` savestates would take 267MB uncompressed; with incremental encoding this is reduced to 77MB. Compressing the result can reduce the size to just 4MB.
- INPUT/BSV/REPLAY: Checkpoint compression and encoding can be combined. For example, 60 `pcsx_rearmed` checkpoints can take up just 15MB if each state is incremental and compressed. This is not as optimal as using incremental states without save state compression followed by offline compression, but is a good compromise in many use cases.
- INPUT/BSV/REPLAY: Add hotkeys and text commands to force a checkpoint insertion into the currently recording replay, and to seek backwards to the previous checkpoint and forwards to the next checkpoint.
- INPUT/BSV/REPLAY: Add a text command to seek to a specific frame of the currently playing/recording replay; it will return via the command replier the actual seeked-to frame (right now it only supports seeking to checkpoints).
- INTL: Add Irish Gaelic to selectable languages
- IOS: Use native keyboard in search
- IOS: Fix crash on iOS9 when fetching refresh rate
- IOS: Stronger haptics, controllable by setting
- IOS: Down arrow menu is removed, all 3 options are available by other means now
- IOS/MACOS: Fix display server resolution and refresh rates
- IOS/TVOS: Use native keyboard
- JPEG: Fix clamping bug in JPEG decode
- LIBRETRO: Deprecate intfstream_open_writable_memory
- LIBRETRO: New environment function RETRO_ENVIRONMENT_GET_TARGET_SAMPLE_RATE
- LINUX: Add full complement of key/value pairs to desktop entry
- MACOS: Fix coreaudio microphone handling
- MACOS: Fix window size calculation
- MENU: Common Thumbnail Background option for all menu drivers
- MENU: Move core options reset from Settings/Configuration to Main Menu / Configuration Files
- MENU: Use right analog stick for thumbnail cycling in playlists
- MENU: Option to always suggest cores, even when a core is already loaded
- MENU: Option to show Favorites before History
- MENU: Media history playlists are now visible in playlist manager
- MENU: Import Content visibility defaults reverted
- MENU: Update CRTSwitchRes menu options for future use
- MENU: Debug builds are indicated in Information menu
- MENU: Save As / Save Main options for configuration file
- MENU: Unwanted input is prevented when menu is triggered by toggle combo
- MENU: 32-bit values in cheats and rumble are not presented as huge lists
- MENU: Less important widgets are now sized like task notifications
- MENU: Play count is added to runtime log
- MENU: Configurable startup page (several options beside default Main Menu)
- MENU: Shader menu rework, combined save/remove menus, save current, Y and Start hotkeys for shader parameters and background opacity toggle
- MENU: Single-click start option from playlists and Explore view
- MENU: Allow kiosk mode and hiding of Settings menu also in GLUI and RGUI
- MENU: Task widget improvements
- MENU/GLUI: Show thumbnails in Explore view
- MENU/XMB: Improvements for mobile/touch. More natural horizontal/vertical scrolling
- MENU/XMB: Select button toggles thumbnails in playlists
- MENU/XMB,OZONE: Fix content icons when playlist tabs are hidden
- MENU/OZONE: Horizontal padding factor option
- MENU/OZONE: Custom font selection and scaling factor
- MENU/RGUI: Clock format is now configurable and moved to top header
- NETPLAY: Push room info to lobby
- NETWORK: Fixes for nmcli wifi driver
- NETWORK: Network command interface enabled for Android, iOS, TVOS
- OTHER: ZStandard support and libchdr update for support of chd files converted with createdvd option
- OVERLAY: Speed limit on touch pointer tracking
- OVERLAY: Dedicate each touch pointer to hitboxes or pointing devices
- OVERLAY: Fix overlay turbo fire
- PLAYLIST: Built-in playlists are now stored under playlists/builtin
- PLAYLIST: Fix subsystem information in playlists
- PS3: Fix psl1ght target of dist-cores.sh
- REPLAY: Bugs fixed regarding rewind
- REPLAY: Same timeline check and future state check for replays vs. savestates
- SAVESTATES: Savestate thumbnails are default enabled for x86_64 builds
- SAVESTATES: Slot is now remembered using the runtime log file
- SAVESTATES: Slot hotkey widget shows save state thumbnail
- SCAN: Fix crash with Sega CD
- SCAN: Log files without database match
- SCAN: Optimization of database queries by content file size
- VIDEO: Fix auto swap interval setup
- VIDEO: Improvements for integer scale half scaling
- VIDEO: Adjustments to smart integer scaling, considering title safe area
- VIDEO: Frame delay improvements for the automatic setting
- VIDEO: Auto-enable GPU recording with HW context cores
- VIDEO: Fix viewport bias when using custom aspect ratio
- VIDEO/D3D11/D3D12: snappy extra vsync presentation mode
- VIDEO/GL: Fallback OpenGL symbol loader for Linux devices with EGL < 1.5
- VIDEO/GL: Support for Cg and GLSL shaders in the GLCore video driver
- VIDEO/GL: Improve GLES version detection
- VIDEO/SHADER: Shader hold function, useful for some lightguns and shader comparison
- VIDEO/SWITCHRES: Horizontal and vertical geometry adjustment options added
- VIDEO/SWITCHRES: Game overrides
- VIDEO/VULKAN: Add VK_EXT_full_screen_exclusive extension support for Windows
- VIDEO/WAYLAND: Support for xdg-toplevel-icon-v1
- VIDEO/WAYLAND: Fix deadlock when using Wayland Vulkan driver
- VIDEO/WAYLAND: Fix fullscreen on auto monitor index (partial)
- VITA: Touchscreen support for PS Vita
- VITA: Set RGUI framebuffer to 272 lines to remove blurriness
- WEBOS: Various fixes and tunings
- WEBOS: Disable core dumps
- WEBOS: Debug builds enabled
- WEBOS: Fix GLES 3/3.1/3.2 option, enable 64-bit option
# 1.21.0
- 3DS: Fix unique IDs for newer cores
- 3DS: Enable TLS (SSL)
- 3DS: Fix UI freeze when threaded rendering is enabled
- 3DS: Fix crash on load content
- 3DS: Other minor fixes
- APPLE: Enable Vulkan emulated mailbox
- APPLE: Include b2 core in App Store builds
- APPLE: CoreMIDI driver for IOS/MacOS
- APPLE: CoreLocation driver for IOS/MacOS
- AUTOCONF: Enable alternative display name in autoconfig files
- AUTOCONF: Make autoconfig failure messages optional
- AUDIO: Option to mute on rewind
- AUDIO/PIPEWIRE: Fix app launch when pipewire service is stopped
- AUDIO/PIPEWIRE: Fix speedup with threaded video mode
- AUDIO/PIPEWIRE: Fix latency setting and microphone handling
- AUDIO/PIPEWIRE: Pass the new rate to the audio driver
- CAMERA: Add PipeWire camera driver
- CAMERA: Add ffmpeg camera driver
- CHEAT: Rewrite part of cheat_manager_load_cb_second_pass()
- CHEEVOS: Include achievement state in netplay states
- CHEEVOS: Fix crash when entering achievements in quick menu while client is not present
- CHEEVOS: Restore cheevos_badges_enable for HAVE_GFX_WIDGETS builds
- CLI: Allow --entryslot to fall back to normal states
- CLOUDSYNC: Fix Windows path issues
- CLOUDSYNC: Workaround for duplicated requests bug
- CLOUDSYNC: Workaround for 301 redirects
- CLOUDSYNC: Handle ignored directories properly
- EMSCRIPTEN: Added new AudioWorklet driver, a fast callback-based audio driver
- EMSCRIPTEN: Scale window to correct size
- EMSCRIPTEN: Additional platform functions
- EMSCRIPTEN: Add new default video context driver: emscriptenwebgl_ctx
- EMSCRIPTEN: Add new audio driver: AudioWorklet
- EMSCRIPTEN: Add new modernized web player which will eventually replace the existing one
- EMSCRIPTEN/RWEBINPUT: Add touch input support
- GAMECUBE: Fixes
- GENERAL: Fix save state auto increment
- GENERAL: Fix softpatching with periods/dots in the file name
- GENERAL: Fix compilation with --enable-videocore
- GENERAL: Allow asset directory redefinition and other directory overrides via environment variables
- GENERAL: Allow override of player 1/2 input with machine learning models (needs recompilation and external library)
- GENERAL: Fix performance counter option not remembered between sessions
- GENERAL: Create security statement
- GENERAL: Fix crash when core is not selected
- GENERAL: Use core fps instead of screen refresh for calculating dropped frames
- INPUT: Fix a crash when initializing illuminance sensor on Linux
- INPUT: Analog-to-digital refactor, fixing behavior when analogs are assigned to keys
- INPUT: Turbo fire overhaul. See https://github.com/libretro/RetroArch/pull/17633
- INPUT/ANDROID: Fix game focus and pause handling
- INPUT/COCOA: Include gravity in acceleration sensor values
- INPUT/COCOA: Fix relative mouse input
- INPUT/COCOA: Allow mouse input while mouse overlay is active
- INPUT/WINRAW: Invert mouse index order
- IOS: Ensure webserver notice can be dismissed
- IOS: Fix rescanning manual playlists after app update
- IOS: Fix clean playlist function
- IOS: Fix crash when scanning
- IOS: Fix jump back to selected item when closing content
- IOS: Fix shared GL context setup
- IOS: Update Launch Screen
- IOS: Screen orientation lock through display server
- IOS: Fix rescanning manual playlists after app update
- LAKKA: Remove bluetooth device after disconnection
- LINUX/X11: Extend X11 input driver with XInput2 extensions for multi-mouse
- MACOS: Fix some sandbox handling in App Store builds
- MACOS: Reset keyboard state when focus is lost
- MENU: Add SSL support to the information list
- MENU: Add warning to BFI and related menu items
- MENU: Fix latency statistics when using runahead
- MENU: Fix opening file inside archive with core selection
- MENU: Main menu unified between different menu drivers
- MENU: Visibility toggle for playlist tabs
- MENU: Color the notification icon by message category
- MENU: Gray Dark+Light theme adjustments
- MENU/GLUI: Menu back button switches tabs like in other menu drivers
- MENU/GLUI: Tab selection option is honored
- MENU/GLUI: Fix CD icon appearing when no icon is specified
- MENU/GLUI: Allow fullscreen thumbnail browsing
- MENU/GLUI: Save state thumbnails
- MENU/PLAYLISTS: Random selection/shuffle function
- MENU/QT: Fix desktop menu crash with Cheevos disabled
- MENU/RGUI: Cleanups of certain menu items
- MENU/RGUI: Thumbnail fixes
- MENU/OZONE: Fix messagebox background
- MENU/XMB: Fix Light theme, font shadow
- MENU/XMB: Appearance menu cleanup
- MENU/XMB: Icon thumbnail can be any of the existing types
- MISC: Guard nanosleep prototype behind _POSIX_TIMERS
- MISC: Use fabsf and intended threshold for refresh rate check
- MISC: Use platform-specific checks for invalid descriptors
- MIDI: Add dropdown items for midi device selection
- NETWORK: Refactor of net_http, improvements for task blocking and performance
- NETWORK: Follow http redirects in net_http
- NETWORK: Expire failed DNS lookups much faster
- NETWORK: Fix netplay when using netpacket interface with recent cheevos
- NETWORK/HTTP: Fix crash in net_http_resolve() in single-thread mode
- OVERLAY: Fix overlay lightgun, mouse & pointer
- OVERLAY: Preferred overlay loading is now default only on mobile platforms
- OVERLAY: Improve analog recentering when touching the area just outside the recentering zone
- QT: Enable non-png thumbnails also for Qt interface
- REPLAY: Fix issue when replaying old format input recordings in newer RetroArch
- TTS: Fix initial text-to-speech on Windows
- TVOS: Fix 720p display
- TVOS: Fix refresh rate fetching on tvOS 13/14
- TVOS: Update Top Shelf art
- SAVESTATES: Reset state index when loading new content
- UWP: Fix slang shader compilation
- VIDEO: Enable BFI setting for mobile platforms (mind the warnings)
- VIDEO/OpenGLES: Fix FP/sRGB FBO support
- VIDEO/SHADERS: Allow exact refresh rate sync with shader subframes
- VIDEO/SHADERS: FIX shader wildcards
- VIDEO/VULKAN: Enable adaptive vsync
- VIDEO/V4L2: Added resolution picker/forcing.
- VIDEO/V4L2: Rewrote logic for finding ALSA audio devices in enumerate_audio_devices function
- VIDEO/V4L2: Added a skip for some of the interface queries that fail and aren't required for magewell usb.
- VITA: Fixes
- WINDOWS: Win32 socket improvements
- WII: Fixes
- WIIU: Fixes
- WEBPLAYER: Update core list for 1.20.0
# 1.20.0
- AUDIO: Fix audio handling in case of RARCH_NETPLAY_CTL_USE_CORE_PACKET_INTERFACE
- AUDIO: Include missing audio filters on some platforms
- AUDIO/PIPEWIRE: Add PipeWire audio driver
- AUDIO/PIPEWIRE: Add PipeWire microphone driver
- APPLE: Hide threaded video setting
- APPLE: Use mfi joypad driver by default
- APPLE: Include holani, noods, mrboom, yabause, bsnes-jg core in App Store builds
- CHEEVOS: Add rarity and points to achievement unlock widget
- CHEEVOS: Add rank to leaderboard submission notification
- CHEEVOS: Update to rcheevos 11.5
- CHEEVOS: Update to rcheevos 11.6
- CHEEVOS: Show rcheevos game image in Discord rich presence
- CHEEVOS: Use translated strings for achievement messages
- CLOUDSYNC: Allow saves and configs to be synced optionally
- CLOUDSYNC: Add iCloud cloud sync driver
- CLOUDSYNC: Speed up by upload/download in parallel
- CLOUDSYNC: Allow thumbnails and system dir to be synced optionally
- CLOUDSYNC: Enable CloudSync on Android (non-SSL)
- CLOUDSYNC: Add more logs in failure situations
- CLOUDSYNC: Fixes for reauthentication and parallel sync
- CLOUDSYNC: Fixes for file resurrection
- CLOUDSYNC: Enable CloudSync on Windows
- CRT/SWITCHRES: Update switchres to 2.2.1
- GENERAL: Support for mbedtls v3
- GENERAL: Automatic Frame Delay refactor
- GENERAL: Remove Frame Rest, obsoleted by Frame Delay refactor
- GENERAL: Wrap around auto increment save state indexes when amount of states is limited
- GENERAL: Enable CHD hashing for Switch and DOS
- GENERAL: Enable auto save state when new content is loaded
- GENERAL: Improve Preemptive Frames when pointing device is used
- GENERAL: Fix building with menu disabled
- HAIKU: Restore Haiku build
- INPUT: Allow to select a preferred/reserved device for each player
- INPUT: Enable Caps, Num, Scroll Lock modifiers on multiple platforms
- INPUT: Autoconfig extension with alternative name/vid/pid
- INPUT: Fix autoconfig profile saving when device is not in the default port
- INPUT: Change classic turbo mode to work independently of which key was pressed first
- INPUT: Pointer and lightgun handling sanitization on Windows and Linux desktop platforms. These input drivers will now report edge and offscreen positions in a harmonized way, and will not return 0 instead.
- INPUT/DINPUT: Fix detection of quick shift key presses
- INPUT/HID: Fix crash on macOS when disconnecting the controller a second time
- INPUT/LINUX: Add illuminance sensor support to the linuxraw, sdl2, udev, and x11 input drivers
- INPUT/Remaps: Sort and apply remaps based on the specific connected controller
- INPUT/UDEV: Enable mouse buttons 4 and 5
- INPUT/WAYLAND: Enable horizontal scroll and mouse buttons 4 and 5
- INPUT/WAYLAND: Simulate lightgun input for cores
- INPUT/WAYLAND: Support for cursor-shape-v1 protocol
- INPUT/X11: Enable mouse buttons 4 and 5
- iOS: Enable vibration by default
- iOS: Better handling of physical mice/magic keyboard trackpad
- iOS: Mouse grab fixes
- iOS: Fix mouse cursor movement when button is held down
- iOS: Fix microphone support request and entitlement
- iOS: Enable compilation back to iOS 12
- iOS: Fix OpenGL ES context usage on iOS 9
- iOS/TVOS: Add Opera to App Store build
- iOS/TVOS: Bring NEON defines in line with ARM64
- iOS/TVOS: Flush save files on backgrounding
- LIBRETRO: Support RETRO_ENVIRONMENT_GET_FILE_BROWSER_START_DIRECTORY
- LIBRETRO: Support "/" as a file extension for loading a directory as content
- FFMPEG: Fix crash when playing back a file with 96 kHz audio
- MACOS: New display server, including support for ProMotion 120Hz V-Sync
- MACOS: Create App Store build
- MACOS: Generate key up events for command keys
- MIDI: Fix long messages (SysEx) in WinMM driver
- MIDI: Fix lingering notes on close in Alsa driver
- MENU: Support local thumbnails in other image formats than png (jpg/jpeg, bmp, tga)
- MENU: Delete also savestate thumbnails when savestates are garbage collected
- MENU: Option to disable analog stick menu navigation
- MENU: Fix pause toggle to not clear fast forward state
- MENU: Fix search playlist index in XMB/Ozone
- MENU: Fix renamed entry display
- MENU: Filter unknown extensions also inside zip files
- MENU: Add icons for present / missing firmware on core info page
- MENU: Ignore other hotkeys when menu toggle is pressed
- MENU: Fix menu jumping when using L3+R3 combo
- MENU: System Information now only shows features relevant for the platform
- MENU/GLUI: Make Show Sublabels options effective
- MENU/GLUI: Icon fixes
- MENU/XMB: Allow playlist icons to be individually customized, by looking for images in Named_Logos
- MENU/OZONE: Add Selenium theme for Ozone
- MENU/OZONE: Touchscreen improvements
- MENU/OZONE: Add a touch-sensitive Resume button in the lower right corner
- NETPLAY: Add East Asian relay server
- OVERLAY: Add option to load overlay based on system name
- PS2: Fix several broken cores depending on pthread
- QT: Enable building with Qt6
- QT: Fix input panel
- RECORDING: New WAV recording driver (audio only)
- REMOTE RETROPAD: Add gyro/acceleration/light sensor test screen
- REMOTE RETROPAD: Add pointer test screen
- REPLAY: Replay format extended to support external tools
- TVOS: Support bluetooth keyboards on tvOS
- TVOS: Fixes to run correctly on TVOS13
- TVOS: Better handling of Siri remote
- TVOS: WebDAV server for adding files more easily
- TVOS: Add Settings.app option to reset retroarch.cfg
- TVOS: Bring minimum tvos version down to 13.0
- VIDEO: Show and use exact refresh rate (3 decimals) and interlace/doublestrike where available
- VIDEO: Allow setting viewport bias to offset viewport horizontally/vertically
- VIDEO: Support viewport bias also with integer overscale and custom aspect ratios
- VIDEO: Use shader path from CLI for shader cycling
- VIDEO: Pixel perfect integer scaling improvements: axis options, smart mode
- VIDEO: Add upscale 1.66x filter
- VIDEO/D3D: Fix GPU screenshots
- VIDEO/KMS: Force fullscreen when KMS is used
- VIDEO/OpenGLES: Improve version directive granularity
- VIDEO/SHADERS: Fix memory leak when shader parameter step is 0.0
- VIDEO/SHADERS: Add 2 uniforms, OriginalAspect and OriginalAspectRot.
- VIDEO/SHADERS: Add CoreFPS and FrameTimeDelta uniforms.
- VIDEO/SLANG: Support optional includes
- VIDEO/VULKAN: Fix Vulkan window freezes when swapchain becomes suboptimal
- VIDEO/VULKAN: Prefer IMMEDIATE mode without vsync
- VIDEO/X11: Support inhibit of Xss screensaver
- VIDEO/WAYLAND: Support for content-type-v1 protocol
- VITA: Enable analog L2/R2 triggers when a DS3 controller is used with PS Vita
- WAYLAND: Fix segfault when relative pointer is not supported
- WAYLAND: Use reverse DNS name for desktop file and icon
- WAYLAND: Commit viewport resizes for more responsive display when resizing window
- WINDOWS: Fix restart if path to executable contains non-ASCII symbols
- WINDOWS: Hide directories starting with $ from file browser
# 1.19.1
- (WASAPI) Only write when running and fix deadlock
# 1.19.0
- AI: Revert AI translation to previous version (fix for translation not working with HW rendered cores)
- APPLE: Try to use system preferred language
- APPLE: Correctly register for filetypes uniquely
- APPLE/MFI: improved Switch Online controller support through MFi
- AUDIO: Bring back audio toggling on menu toggle
- CHEEVOS: Build a default RetroAchievements memory map when no RetroAchievements game is loaded
- CHEEVOS: Update to rcheevos 11.3
- CHEEVOS: fix hardcore acting as if it's enabled when it isn't
- CLANG: Fix clang error incompatible-pointer-types-discards-qualifiers
- CLOUDSYNC/LINUX: Enable Cloud Sync by default on Linux builds with network (#16456)
- CLOUDSYNC/WEBOS: Enable Cloud Sync by default on Linux builds with network (#16456)
- CORE: Set compute fps stats logging to debug level
- EMSCRIPTEN: Added M2000 to core selection dropdown
- FFMPEG: Add compatibility with FFMPEG 7.0
- GLSLANG: Remove unneeded ENABLE_HLSL code from glslang
- GENERAL: Memory leak: Dynamic allocation from msg_hash_get_help_us_enum was not freed.
- INPUT/KEYBOARD: Add support for multimedia keys - Extended RETROK_ values with 18 new items, commonly found on
"multimedia" keyboards. Mapping added for SDL, X11, Wayland, dinput, winraw keymaps.
- INPUT/MFI: Pressure sensitive left/right triggers
- INPUT/MFI: Fix Start + L1/L2/R2 combinations
- INPUT/MFI: Support strong and weak rumble
- INTL: Fetch translations from Crowdin
- INTL: Add Galician and Norwegian to list of languages
- LAKKA: Display reboot/shutdown message also when not saving config on exit
- LAKKA: Provide update URL and target name at buildtime
- LIBRETRO: Add a debug message for the SET_ROTATION callback
- macOS: Default Accessibility on if VoiceOver is on
- iOS: default audio sync on again, also more mfi logging
- iOS: Fix Import Content
- iOS: Fix ios-arm64 nightly build crash
- iOS: Import content from iCloud
- iOS: Fix #16485 crash on startup
- iOS: Display app icon in app icon picker in materialui
- iOS/tvOS: Various QoL improvements
- iOS/tvOS: Fix a couple more path name mangling bugs
- iOS/tvOS: Better way of packaging Frameworks
- iOS/tvOS: define PACKAGE_VERSION to be App Store MARKETING_VERSION
- iOS/tvOS: Fix keyboard handling for app store builds
- iOS/tvOS: Fix escaping the sandbox for jailbroken devices
- iOS/tvOS: default accessibility on if voice over is enabled
- iOS/tvOS: better way of reporting available memory
- macOS/iOS/tvOS: enable text-to-speech using AVSpeechSynthesizer.
- tvOS: Fix scaling for 720p
- MENU: New function in Quick Menu: Add to Playlist
- MENU/XMB: New theme: FlatUX, designed to merge FlatUI and Retroactive themes into a single, unified design
- NETWORKING/RETROPAD CORE: Fix socket close method
- PIXMAN: Update pixman-private.h - patch to fix build issue with musl
- PLAYLIST: Cleanup 'Add to Playlist' (#16495)
- SCANNING: Fix for scanning PSP ISOs (and probably few others)
- SAVES: Fix core config saving
- SAVES: Fix save new config name when core loaded
- SAVESTATES: Increase save state chunk size for all platforms - Even a class 6 or class 10 SD card can handle reads and writes on the order of MB/s, which means a 4KB chunk size is just wasting time in syscalls. This could maybe be fixed with a buffering reader but I don't feel comfortable tweaking libretro-common's VFS to handle that. Instead, I thought it would be good to both remove an ifdef and increase the chunk size to 128KB. For cores with small states this will should make state saving virtually instantaneous, and for cores with large states it should be a 32x speedup.
- VIDEO: Fix crash when using threaded video - for Mesa 23.2 and later
- VIDEO/GL: Fix reinitialization of the threaded gl drivers
- VIDEO/VULKAN: Add support for A2R10G10B10 HDR format
- VIDEO/VULKAN: Implement HDR readback - screenshot support
- WAYLAND: Ignore configure events during splash (fix not remembering window size)
- WAYLAND: Use frontend signal handler to quit (fix quit by window close)
- WAYLAND: Commit viewport resizes (window resize is more responsive)
- UWP: Align MESA to alpha-2-resfix - Remove wrong resolution special handling for OPENGL
- UWP: 4K fix: align MESA reading of ClientRect to retroarch procedure, this fixes max resolution being set to 1080p. As reading must be done inside an UI thread and is in fact an async operation which might delay frame generation, the reading itself is doen once and cached, give that changing resolution while the app is running is an unlikely corner-case use
- WINDOWS: Windows mouse ungrab must release the mouse instead of confine it to the current desktop (#16488)
- WINDOWS: Fix numlock/pause key release events
# 1.18.0
- AI: Fix narrator language when AI translation and menu languages are different
- DISK CONTROL: Add option to disable initial disk change
- DISK CONTROL: Visibility option for disk control notifications
- DRM: Fix mode vrefresh calculation. When using an interlaced/doublescan mode, the vertical refresh rate is mis-calculated.
- EMSCRIPTEN: Fix mouse Y parameter translation in rwebinput
- INPUT: Fix input state combos including R3 and false triggers of RETROK_UNKNOWN
- INPUT: Add a new turbo mode, "Classic (Toggle)"
- INPUT: Fix bind hold when axis does not rest at 0
- INPUT: Limit axis threshold setting to sensible values
- INPUT: Add Overlay Mouse, Lightgun, and Pointer
- INPUT/ANDROID: Fix mouse grab behavior on Android
- INPUT/LINUXRAW: Fix device name and hotplug reconnect
- IOS: Minor iOS JIT availability information
- IOS/TVOS: Pause application on applicationWillResignActive
- LIBRETRO: Add Doxygen-styled comments to parts of the libretro API
- LUA: Update Lua to version 5.3.6
- MENU: Add sublabels for input bind common entries
- MENU: Don't load history and favorites if size is 0
- MENU: Don't disable fast forward when entering menu
- MENU: Widget position, size, color, icon adjustments
- MENU: Fix savestate slots in Qt UI
- MENU: Reorder and reduce depth of User Interface menu
- MENU/OZONE: Fix sidebar wraparound, visibility after config load, crash after playlist delete
- MENU/OZONE: Fix sidebar and sublabel animations
- OSX/MACOS: Fix crash on non-Metal build
- OSX/MACOS: Add portable.txt as flag for portable install
- REMOTE RETROPAD: add display for analog axes, indication of inputs already pressed
- SAVES: Allow combining saves in content dir with save sorting
- SHADER: Added rolling scan line simulation based on the shader subframe feature. This is implemented with a scrolling scissor rect rather than in the shader itself as this is more efficient although may not work for every shader pass - we may need an option to exclude certain passes. The implementation simply divides the screen up by the number of sub frames and then moves the scissor rect down over the screen over the number of sub frames
- TVOS: Force asset re-extraction when cache is deleted
- TVOS: Add history and favorites to Top Shelf
- TVOS: Fix crash when history item does not have a label
- UWP: Enable HAVE_ACCESSIBILITY for UWP builds
- UWP: Allow UWP build to work with a modified version of Mesa Gallium D3D12
- VIDEO: Add subframe shader support for Vulkan/GLcore/DX10-11-12, enabling shaders to run at higher framerate than the content
- VIDEO: Fix restoring fullscreen/windowed setting when unloading override
- VIDEO/VULKAN: Fix HDR with Vulkan after reinit
- VIDEO/VULKAN: Remove the use of oldSwapchain
- VIDEO/GL2: Fix OpenGL ES version detection
- WEBDAV: Fixed SEGFAULT in WebDav task sync + type changes
- WEBOS: Fix build, add core location on webosbrew.org
- WIN32: Fix Alt+Enter not working when menubar is disabled
# 1.17.0
- ACCESSIBILITY/TTS: fix target language and missing espeak handling on Linux
- AI: AI service reworked: performance increase, automatic translation, configurable subtitle placement, and more
- APPLE: Fix WebDAV crash with digest auth (Cloud Sync)
- APPLE: Cloud sync fixes - ignore .DS_Store files and re-sync on app foreground
- APPLE: Don't re-create default directories
- APPLE: Show Git information correctly
- AUDIO/SYNC: Handle Hz skew adjustment for high refresh rates better (BFI, swap interval)
- AUDIO/MIXER: Separate ffmpeg/mpv and audiomixer conditionals
- AUDIO/WASAPI: Reworked shared buffer operation for more flexibility, fixed exclusive mode last buffer looping when entering menu
- CONFIG/OVERRIDES: Fix setting savefile_directory in override file
- CONFIG: Force fixed locale for numbers
- CHEEVOS: Upgrade to rcheevos 11.0
- CHEEVOS: Use rc_client for state management
- CHEEVOS: Don't track disc changes when achievements are disabled
- CHEEVOS: Reinitialize rewind buffer after loading game with achievements
- CHEEVOS: Inform user when server is unreachable
- CHEEVOS: Fix crash on first load of game with achievements with threaded video
- EMSCRIPTEN: Increase chunk size for reads/writes
- EMSCRIPTEN: Modularize the JavaScript and clean up the web build
- EMSCRIPTEN: Prefix core name with libretro_ for exports
- EMSCRIPTEN: replace dashes with underscores in corenames (fix for vitaquake cores)
- EMSCRIPTEN: Use ZipFS for web player asset bundle
- EMSCRIPTEN: Change default audio rate to 44100
- IOS: Fix widget on IOS17
- IOS: Exit instead of crash on some errors
- IOS: Fix ios-vulkan-ppsspp
- IOS: Enable HDR support on IOS
- IOS: Add option to disable respecting silent mode
- IOS: Allow ignoring safe area (fullscreen over notch)
- IOS: Default to not enabling keyboard gamepad
- IOS: Fix XRGB8888 in GL driver
- IOS: Allow changing the app icon
- IOS: Add HAVE_ACCESSIBILITY to iOS builds
- IOS/TVOS: Create GL context as GLES3 to fix some rendering performance problems
- INPUT: Fix ghost input when setting RETROK_UNKNOWN
- INPUT: Default 'Bind Hold' to 0 to prevent problems with controllers not resting at null state
- INPUT: Add a setting to allow turbo d-pad directions
- INPUT: Don't save mouse buttons to autoconfig
- INPUT/MENU: Add option for merging 'Hotkey Enable' device types
- INPUT/mFI: disable secondary_joypad to prevent issues with controllers detected both as HID and mFI
- INPUT/UDEV: Change event detection to polling in udev_joypad
- INPUT/WAYLAND: Use unaccelerated pointer motion to prevent mouse dead zone
- LAKKA: Add new menu options for Switch (overclock, CEC, BT ERTM)
- LIBRETRO: Add environment command to get playlist path
- LIBRETRO/NETPACKET:
Switch environment call number from 76 to 78 (retire 76 as it was never used by any core)
Simplify broadcasts by removing the option to send to all but one client, use an explicit RETRO_NETPACKET_BROADCAST constant instead
Separate explicit flushing and querying of incoming packet into two operations
Enable a core to specify a protocol version string which can get used instead of core version to determine compatibility between two players
Log and notify a separate message when there is a content crc mismatch while using this interface to convey it being less severe
- MENU: Fix menu analog stick navigation (1.16.0.1)
- MENU: Add option to find thumbnail images by playlist rom filename (1.16.0.2)
- MENU: Don't process menu events while input is being flushed (1.16.0.2)
- MENU: Prevent proceeding to next bind when single binding (1.16.0.3)
- MENU: Fix touchscreen menu false positives in case of overlap
- MENU: Sort playlists ignoring extension (Playstation 2 should come after Playstation)
- MENU: Treat System Volume Information folder as hidden on all platforms
- MENU: Add Belarusian language option
- MENU: Fix savestate thumbnail behavior when navigating back to playlist while content is still running
- MENU: Fix word wrapped widget length
- MENU: Add help text to controller drivers
- MENU: Fix quit on content close option
- MENU: Fix thumbnails in History for content loaded through Load Content
- MENU: Flexible thumbnail matching (ROM name - database name - short name)
- MENU: Remove legacy thumbnail pack downloader
- MENU/GLUI: Icon corrections
- MENU/OZONE: Thumbnail related fixes (missing thumbnail bar, fullscreen thumbnail flashing, sidebar focus)
- MENU/RGUI: Fix text scaling in 16:9
- MENU/XMB: Background images take precedence over color themes, default image opacity set the same as color theme opacity
- MENU/XMB: Fix segmentation fault when background image is missing
- MENU/XMB: Several corrections and cleanups
- MENU/XMB: Layout/thumbnail fixes - Thumbnail layout adjustments, Header title improvements, Handheld layout adjustments
- NETWORKING/NETPLAY: Add support for joining MITM servers from command line
- NETWORKING/NETPACKET: Interface connection flow improvements
- OSX: Fix mouse support for MelonDS DS on OSX
- OSX: Option to create a portable build
- PATCHES: Add support for XDelta-formatted patches.
- PATCHES: Fix patching for cores that support contentless mode
- PS2: Fix for no sound
- PS2: Fix 0-byte logs and add memory stats
- PSP: Fix memory leak in audio driver
- RUNLOOP: Frame Rest, experimental sleep feature aiming to lower CPU usage and temperature when using certain CPU hungry vsync modes
- RPI: Fix videocore + switchres compile failure
- SCAN: Do CRC check on PSP/PSP(PSN) content
- TVOS: Enable overlay support
- VIDEO/BFI: Black Frame Insertion added to DirectX10/11/12. BFI Hz range now covers every 60hz multiple under 1000hz. Variable Strobe length via new 'Dark Frames' option, algorithm to auto select 'decent' Dark Frames choice.
- VIDEO/GLSL: Add FinalViewportSize support to GLSL
- VIDEO/GLSL: Change rotation type to int to maximize compatibility
- VIDEO: Use video refresh rate instead of core refresh rate for menu frame limiting
- VIDEO: Limit paused video refresh rate
- VIDEO: Enforce swap interval 1 in menu if vsync is on
- WII: Enable Cheevos for Wii builds
- WIIU: Fix config file and core info reading
- WIIU: Fix "Up" and "Left" directional input for both Analog sticks for GC Adapter
- WIIU: Fix 3 USB controllers (NES/SNES/Retrode)
- WIIU: Fix file descriptor leak
- WIN32: Prefer D3D11 and WASAPI as default video and audio drivers
- WIN32: Fix window size when aspect ratio is < 0
- WIN32: Fix screen resolution always tied to the main monitor
- WAYLAND: Enable fallback for screensaver inhibit via D-Bus
- WAYLAND: Introduce wp_fractional_scale_v1 protocol for proper fractional scaling
- WAYLAND: Update wayland-protocols version to 1.31
# 1.16.0
- 3DS: Update __system_initArgv
- 3DS: Update SquirrelJME 3DS Core information along with icons.
@@ -24,6 +615,7 @@ require fullpath or not, small and big ZIP files).
- APPLE: Don't include MoltenVK library in Load Core menu list
- APPLE: Enable AltServer JIT for builds installed by Xcode
- APPLE: The default pthread stack size on Apple is too small for detect_ps2_game, so increase it
- APPLE: Introduce Cloud Sync via a WebDAV service on iOS/TVOS/MacOS
- CHEEVOS: Upgrade to rcheevos 10.7
- CHEEVOS: Don't initialize rcheevos memory unless used
- CHEEVOS: Add progress tracker widget
@@ -64,7 +656,7 @@ require fullpath or not, small and big ZIP files).
- INPUT/REMAP: Remap label fix when no autoconf profile active
- INPUT/REMAP: Add 'Save As' option for remaps and overrides
- INPUT/OVERLAY: Add overlay parameter to control x/y separation in auto-scale mode
- INPUT/OVERLAY: Revive/rewrite Keyboard Overlay and OSK Toggle. Add keyboard overlay preset, keyboard submenu,
- INPUT/OVERLAY: Revive/rewrite Keyboard Overlay and OSK Toggle. Add keyboard overlay preset, keyboard submenu,
and osk_toggle hotkey. Use overlay caching for osk_toggle.
- INPUT/OVERLAY: Overlay Caching. Adds overlay_cache_ptr to keep a disabled overlay in memory when it's expected to be shown again.
Most input_overlay_deinit calls are replaced with input_overlay_unload, which caches the overlay unless initing/deiniting core or disabling overlays.
@@ -154,7 +746,7 @@ being able to do the expected tvOS behavior of "backing out" of the app.
- MENU/XMB: Stop showing playlist entry index outside of playlists
- MENU/XMB: Fix menu focus issue when returning from "Set Core Association" if playlist index is greater than the previous menu
- MENU/EXPLORE: Prevent flashing when browsing fullscreen thumbnails
- MENU/EXPLORE: Match label ticker length behavior with playlists
- MENU/EXPLORE: Match label ticker length behavior with playlists
- MENU/SOUNDS: Fix certain audio drivers from hanging when menu pause is enabled with menu sounds
- MENU/SOUNDS: Fix menu sounds stopping after fullscreen toggle / video reinit
- MENU/QT/WIMP: Cleanup Desktop Menu welcome text
@@ -164,7 +756,7 @@ being able to do the expected tvOS behavior of "backing out" of the app.
- MICROPHONE/SDL: Add `sdl2` microphone driver.
- MICROPHONE/WASAPI: Add `wasapi` microphone driver.
- MOBILE: On mobile in portrait mode, don't override custom viewport
- NETWORKING: Enhance netpacket interface
- NETWORKING: Enhance netpacket interface
- NETWORKING/NETPLAY: Enable core host to refuse connecting new players to limit the number of connected players
- NETWORKING/NETPLAY: Enable a core to flush outgoing packets and read incoming packets without waiting for the next frame (can be used for lower latency or blocking reads)
- OPENDINGUX/RG350: Enable networking for RG350
@@ -384,7 +976,7 @@ after the current event handler, which then did exactly the same. Fixes issue #1
- STATICALLY LINKED/SALAMANDER: Fix salamander config save on fork for static platforms
- TVOS/VULKAN/MOLTENVK: Vulkan on tvOS
- VIDEO: Allow manual video swap interval forcing. The addition of auto swap interval effectively prevented manual forcing, which is beneficial when the rate is not reported properly. Therefore use the interval in the calculation only when using automatic interval.
- VULKAN: Fix crash when using multiple physical devices and HW core (#14889)
- VULKAN: Fix crash when using multiple physical devices and HW core (#14889)
- VULKAN: Detect if wrong PhysicalDevice is returned.
- VULKAN: Actually query physical device before creating core device.
- VULKAN: Define and implement v2 of context negotiation interface
@@ -416,7 +1008,7 @@ So this removes the artificial clamping that was being done to desired_swapchain
- CLI: Reformatted --features to require less rows and to be more consistent
- CLI: Added -V shorthand for --version
- CLI: Tab removal + whitespace nits
- CONFIG/MIDI: Prevent MIDI startup error with old configurations
- CONFIG/MIDI: Prevent MIDI startup error with old configurations
- D3D11: Fix when using shaders with TATE mode arcades etc
- D3D12: Fix when using shaders with TATE mode arcades etc
- D3D12: Added support for break on errors (development aid - define DEVICE_DEBUG to use)
@@ -473,7 +1065,7 @@ menu_explore_get_entry_playlist_index() returns -1 on invalid entries, but the v
- OSX/MACOS: Fixed Cocoa keyboard not allowing to map Analog stick
- PS2: Use the recently created ps2_drivers which makes easier the loading and init of all the drivers: Memory Card, USB, HDD, Audio, Controllers
- PS2: Adds exFat support for USB, and probably solves some unexpected issues when using an HDD driver for booting cores/games.
- SDL GFX: Fix no menu on start/blank screen issue.
- SDL GFX: Fix no menu on start/blank screen issue.
- SRAM: Don't init SRAM saving without content (gets rid of the redundant logging)
# 1.13.0
@@ -565,7 +1157,7 @@ If there is no thumbnail with title, find the thumbnail image with rom-name. Thi
- MIST/STEAM/STEAMDECK: Don't expose Black Frame Insertion (BFI) if we are running on a Steam Deck
- NETWORKING/WINDOWS: Disable poll support for MSVC 2010 and earlier. WSAPoll is not supported on Windows XP and earlier.
- NETWORKING/WIIU: Fix socket_connect_with_timeout for WIIU
- NETWORKING/WIIU: Fixes RetroAchievements login
- NETWORKING/WIIU: Fixes RetroAchievements login
- NETWORKING/WIIU: Fixes other online updater functionality
- SAVESTATES/NOTIFICATIONS: Add delay to savestate notifications, so that GPU savestate screenshots stay untouched
- SAVESTATES/SCREENSHOTS: Avoid 'video_gpu_screenshot' with savestates. Allow GPU screenshots with savestates only when there is no other way of getting a screenshot.
@@ -589,7 +1181,7 @@ If there is no thumbnail with title, find the thumbnail image with rom-name. Thi
- 3DS: Only enable internal counter with CONSOLE_LOG defined
- 3DS: Set default bottom font values
- 3DS: Fix CIA installation issues
- 3DS: Support latest libctru
- 3DS: Support latest libctru
- ANDROID: Add HAVE_ACCESSIBILITY
- ANDROID: Gingerbread support
- ANDROID: Touchpads support
@@ -666,7 +1258,7 @@ prevents it from being overwritten/deleted while the program is still running.
- MENU: Allow changing savestate slots with left/right on save/load
- MENU: Add 'Ago' to playlist last played styles
- MENU: Add proper icons for shader items
- MENU/MATERIALUI: Add icon for 'Download Thumbnails'
- MENU/MATERIALUI: Add icon for 'Download Thumbnails'
- MENU/XMB: Add options for hiding header and horizontal title margin
- MENU/XMB: Dynamic wallpaper fixes
- MENU/XMB: Add Daite XMB Icon Theme
@@ -708,7 +1300,7 @@ prevents it from being overwritten/deleted while the program is still running.
- NETWORK/NETPLAY: Special saves directory for client
- NETWORK/NETPLAY: Ensure current content is reloaded before joining a host
- NETWORK/NETPLAY: Fix client info devices index
- NETWORK/NETPLAY: Fix input for some cores when hosting
- NETWORK/NETPLAY: Fix input for some cores when hosting
- NETWORK/NETPLAY: Memory leak fixes
- NETWORK/NETPLAY: Force a core update when starting netplay
- NETWORK/NETPLAY: Fix NAT traversal announce for HAVE_SOCKET_LEGACY platforms
+120 -120
View File
@@ -1,120 +1,120 @@
Refer also to this page for more information -
https://docs.libretro.com/development/coding-standards/
Struct ordering
---------------
For POD-types, try to order structs as follows (first to last):
* long double (8 bytes, 16 bytes [64bit x86], 12 bytes [32bit x86])
* double (8 bytes)
* int64_t (8 bytes, 8 bytes [32bit ARM],
4 bytes [32bit x86])
* uint64_t (4 bytes [32bit], 8 bytes [32bit ARM], 8 bytes [64bit])
* pointer (4 bytes [32bit], 8 bytes [64bit] [1])
* intptr_t (4 bytes [32bit], 8 bytes [64bit] [1])
* uintptr_t (4 bytes [32bit], 8 bytes [64bit] [1])
* ptrdiff_t (4 bytes [32bit], 8 bytes [64bit] [1])
* ssize_t (4 bytes [32bit], 8 bytes [64bit])
* size_t (4 bytes [32bit], 8 bytes [64bit])
* jmp_buf (4 bytes)
* long (4 bytes [64bit Win], 8 bytes [64bit non-Win],
4 bytes [32bit])
* int32_t (4 bytes)
* unsigned (4 bytes)
* float (4 bytes)
* int (4 bytes)
* enum (4 bytes)
* int16_t (2 bytes)
* char (1 byte)
* bool (1 byte)
[1] PS3 uses 4 byte pointers despite having a 64bit processor
Struct members should be sorted by alignment. Therefore, structs
should be sorted by the largest type inside them.
For example, take a struct like this:
typedef struct
{
size_t capacity;
bool old_format;
bool compress;
bool fuzzy_archive_match;
bool autofix_paths;
char path[PATH_MAX_LENGTH];
char base_content_directory[PATH_MAX_LENGTH];
} playlist_config_t;
size_t has the biggest alignment here, so 'struct playlist_config_t'
inside a struct should come before or after size_t.
*** BEST PRACTICES ***
* If we have pointers and size variable pairs, it's best to
interleave them to increase the probability they go in the
same cacheline. It also makes the code more readable, that
these two variables are connected.
Example:
struct a
{
char* b;
size_t b_len;
char* c;
size_t c_len;
};
Stack size
----------
You have to assume that stack size is going to be limited in
RetroArch. Some game consoles (and other embedded systems)
might have a default stack size as low as 128Kb or less.
Be conservative with stack size but don't try to put very
small structs on heap either [to avoid memory fragmentation
among other things]. A balancing act here is necessary.
Be mindful that heap allocations are slow compared to stack.
Functions
---------
- Avoid doing small getter/setter functions. We want a function
to justify its function call overhead by doing a significant
body of work. Small one-line getter/setter functions for what
is predominantly C-style structs is not useful, plus it leads
to people thinking this function is more complex than it
actually is, thus obfuscating the sourcecode instead of it
being easier to read.
If you can find examples in the codebase that violate this
guideline, do not hesitate to point them out to us.
Variable declaration
--------------------
For C source files, we have to insist you stick to the following:
- Declare variables either at the start of a function or the start
of a code block, depending on the scope they need.
- Do not do initial for loop declarations. Refer to the bulletpoint above:
either declare them at the start of the function, or at the start
of the code block.
Not doing this would break compilation on platforms where we are compiling
these C source files in C89 compatibility mode. If such issues occur in pull
requests, we have to request that it be fixed.
VLA (Variable Length Array)
---------------------------
Do not use VLAs (Variable Length Array) in C source files. These are not
C89-compliant.
Miscellaneous
-------------
- Brace usage follows "Allman style". The brace associated with a control statement is placed on the following line,
indented to the same level as the control statement.
Statements within the braces are indented to the next level.
- A single statement block must not include brackets (unless the block uses a macro that expands into multiple lines)
- If possible, avoid 'while (true)' and use 'for (;;)' instead
Refer also to this page for more information -
https://docs.libretro.com/development/coding-standards/
Struct ordering
---------------
For POD-types, try to order structs as follows (first to last):
* long double (8 bytes, 16 bytes [64bit x86], 12 bytes [32bit x86])
* double (8 bytes)
* int64_t (8 bytes, 8 bytes [32bit ARM],
4 bytes [32bit x86])
* uint64_t (4 bytes [32bit], 8 bytes [32bit ARM], 8 bytes [64bit])
* pointer (4 bytes [32bit], 8 bytes [64bit] [1])
* intptr_t (4 bytes [32bit], 8 bytes [64bit] [1])
* uintptr_t (4 bytes [32bit], 8 bytes [64bit] [1])
* ptrdiff_t (4 bytes [32bit], 8 bytes [64bit] [1])
* ssize_t (4 bytes [32bit], 8 bytes [64bit])
* size_t (4 bytes [32bit], 8 bytes [64bit])
* jmp_buf (4 bytes)
* long (4 bytes [64bit Win], 8 bytes [64bit non-Win],
4 bytes [32bit])
* int32_t (4 bytes)
* unsigned (4 bytes)
* float (4 bytes)
* int (4 bytes)
* enum (4 bytes)
* int16_t (2 bytes)
* char (1 byte)
* bool (1 byte)
[1] PS3 uses 4 byte pointers despite having a 64bit processor
Struct members should be sorted by alignment. Therefore, structs
should be sorted by the largest type inside them.
For example, take a struct like this:
typedef struct
{
size_t capacity;
bool old_format;
bool compress;
bool fuzzy_archive_match;
bool autofix_paths;
char path[PATH_MAX_LENGTH];
char base_content_directory[DIR_MAX_LENGTH];
} playlist_config_t;
size_t has the biggest alignment here, so 'struct playlist_config_t'
inside a struct should come before or after size_t.
*** BEST PRACTICES ***
* If we have pointers and size variable pairs, it's best to
interleave them to increase the probability they go in the
same cacheline. It also makes the code more readable, that
these two variables are connected.
Example:
struct a
{
char* b;
size_t b_len;
char* c;
size_t c_len;
};
Stack size
----------
You have to assume that stack size is going to be limited in
RetroArch. Some game consoles (and other embedded systems)
might have a default stack size as low as 128Kb or less.
Be conservative with stack size but don't try to put very
small structs on heap either [to avoid memory fragmentation
among other things]. A balancing act here is necessary.
Be mindful that heap allocations are slow compared to stack.
Functions
---------
- Avoid doing small getter/setter functions. We want a function
to justify its function call overhead by doing a significant
body of work. Small one-line getter/setter functions for what
is predominantly C-style structs is not useful, plus it leads
to people thinking this function is more complex than it
actually is, thus obfuscating the sourcecode instead of it
being easier to read.
If you can find examples in the codebase that violate this
guideline, do not hesitate to point them out to us.
Variable declaration
--------------------
For C source files, we have to insist you stick to the following:
- Declare variables either at the start of a function or the start
of a code block, depending on the scope they need.
- Do not do initial for loop declarations. Refer to the bulletpoint above:
either declare them at the start of the function, or at the start
of the code block.
Not doing this would break compilation on platforms where we are compiling
these C source files in C89 compatibility mode. If such issues occur in pull
requests, we have to request that it be fixed.
VLA (Variable Length Array)
---------------------------
Do not use VLAs (Variable Length Array) in C source files. These are not
C89-compliant.
Miscellaneous
-------------
- Brace usage follows "Allman style". The brace associated with a control statement is placed on the following line,
indented to the same level as the control statement.
Statements within the braces are indented to the next level.
- A single statement block must not include brackets (unless the block uses a macro that expands into multiple lines)
- If possible, avoid 'while (true)' and use 'for (;;)' instead
+24 -10
View File
@@ -14,25 +14,39 @@ If there are any issues, we are willing to have discussions about it.
## Submitting Bug Reports
Bug reports in _RetroArch_ may fall into one of two categories:
Bug reports for _RetroArch_ may fall into a few categories:
* _RetroArch_ itself, the user interface and API around all of the various cores.
* Individual _Core_, of which interact with _RetroArch_.
* Individual _Core_, that interacts with _RetroArch_.
* Supplementary data provided within _RetroArch_, such as controller autoconfigs, databases,
thumbnails...
* The [documentation set](https://docs.libretro.com/)
When submitting a bug report, ensure that the report is submitted to the correct repository.
For _RetroArch_ itself, it is done by reporting a bug within the
[RetroArch](https://github.com/libretro/RetroArch) repository. For other cores, please use
the search function within the [libretro Organization](https://github.com/libretro) on
GitHub. Issues that are specific to a core and not _RetroArch_ are likely to be closed very
quickly. If an issue is suspected with _RetroArch_, please make sure to test with multiple
cores to be sure that is is not isolated.
* For _RetroArch_ itself, submit an issue to the [RetroArch](https://github.com/libretro/RetroArch)
repository. Please read and fill the issue template.
* For other cores, please use the search function within the [libretro Organization](https://github.com/libretro)
on GitHub. Issues that are specific to a core and not _RetroArch_ are likely to be closed
very quickly. If an issue is suspected with _RetroArch_, please make sure to test with
multiple cores to be sure that is is not isolated.
* For database content, submit an issue to
[libretro-database repo](https://github.com/libretro/libretro-database) or ask in the
_database_ channel on Discord.
* For controller autoconfigs, submit an issue to
[retroarch-joypad-autoconfig repo](https://github.com/libretro/retroarch-joypad-autoconfig)
* For actual thumbnail images, submit an issue to
[libretro-thumbnails](https://github.com/libretro-thumbnails/libretro-thumbnails) repo
or ask in the _database_ channel on Discord.
* For documentation, submit an issue to [libretro-docs](https://github.com/libretro/libretro-docs)
repo or ask in the _documentation_ channel.
* For translations, please see [here](https://docs.libretro.com/development/retroarch/new-translations-crowdin/).
If the issue occurs during runtime, please paste the verbose log output:
* If using the _Pheonix_ interface, the log will be in _File_ -> _Show Log_.
* If using the main interface, enable verbose logging with _Settings_ -> _Logging_ ->
_Logging Verbosity_. Ensure both _Log to File_ and _Timestamp log Files_ is enabled.
* Otherwise, run _RetroArch_ with the verbose (`-v`) flag.
Set frontend log level to _0 (Debug)_.
* Or run _RetroArch_ with the verbose (`-v`) flag and get the log from the console.
If the error happens during compilation and/or building, paste the output of `./configure`
and `make` accordingly. If using an IDE, please paste any of the errors and log output.
+306 -163
View File
@@ -1,4 +1,4 @@
# Doxyfile 1.8.14
# Doxyfile 1.9.1
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -17,10 +17,10 @@
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the config file
# that follow. The default is UTF-8 which is also the encoding used for all text
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
# built into libc) for the transcoding. See
# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = "RetroArch"
PROJECT_NAME = RetroArch
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY =
OUTPUT_DIRECTORY = docs
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -93,6 +93,14 @@ ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all generated output in the proper direction.
# Possible values are: None, LTR, RTL and Context.
# The default value is: None.
OUTPUT_TEXT_DIRECTION = None
# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
@@ -187,7 +195,17 @@ SHORT_NAMES = YES
# description.)
# The default value is: NO.
JAVADOC_AUTOBRIEF = NO
JAVADOC_AUTOBRIEF = YES
# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by doxygen.
# The default value is: NO.
JAVADOC_BANNER = NO
# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
@@ -209,6 +227,14 @@ QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
# By default Python docstrings are displayed as preformatted text and doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as doxygen documentation.
# The default value is: YES.
PYTHON_DOCSTRING = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
@@ -238,14 +264,12 @@ TAB_SIZE = 4
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines (in the resulting output). You can put ^^ in the value part of an
# alias to insert a newline as if a physical newline was in the original file.
# When you need a literal { or } or , in the value part of an alias you have to
# escape them by means of a backslash (\), this can lead to conflicts with the
# commands \{ and \} for these it is advised to use the version @{ and @} or use
# a double escape (\\{ and \\})
ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
TCL_SUBST =
ALIASES = "setby{1}=@par Set by^^The \1."
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
@@ -253,7 +277,7 @@ TCL_SUBST =
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
@@ -275,28 +299,40 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_SLICE = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
# Fortran. In the later case the parser tries to guess whether the code is fixed
# or free formatted code, this is the default for Fortran type files), VHDL. For
# instance to make doxygen treat .inc files as Fortran files (default is PHP),
# and .f files as C (default is Fortran), use: inc=Fortran f=C.
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,
# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
# the files are not read by doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you can
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
@@ -308,7 +344,7 @@ MARKDOWN_SUPPORT = YES
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 0.
# Minimum value: 0, maximum value: 99, default value: 5.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
@@ -398,7 +434,7 @@ INLINE_GROUPED_CLASSES = NO
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.
INLINE_SIMPLE_STRUCTS = NO
INLINE_SIMPLE_STRUCTS = YES
# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
@@ -424,6 +460,19 @@ TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use
# during processing. When set to 0 doxygen will based this on the number of
# cores available in the system. You can set it explicitly to a value larger
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which efficively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.
NUM_PROC_THREADS = 16
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -442,7 +491,13 @@ EXTRACT_ALL = YES
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = YES
EXTRACT_PRIVATE = NO
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
# methods of a class will be included in the documentation.
# The default value is: NO.
EXTRACT_PRIV_VIRTUAL = NO
# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
@@ -481,6 +536,13 @@ EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = NO
# If this flag is set to YES, the name of an unnamed parameter in a declaration
# will be determined by the corresponding definition. By default unnamed
# parameters remain unnamed in the output.
# The default value is: YES.
RESOLVE_UNNAMED_PARAMS = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
@@ -498,8 +560,8 @@ HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
# (class|struct|union) declarations. If set to NO, these declarations will be
# included in the documentation.
# declarations. If set to NO, these declarations will be included in the
# documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
@@ -518,11 +580,18 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
# names in lower-case letters. If set to YES, upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
# With the correct setting of option CASE_SENSE_NAMES doxygen will better be
# able to match the capabilities of the underlying filesystem. In case the
# filesystem is case sensitive (i.e. it supports files in the same directory
# whose names only differ in casing), the option must be set to YES to properly
# deal with such files in case they appear in the input. For filesystems that
# are not case sensitive the option should be be set to NO to properly deal with
# output files written for symbols that only differ in casing, such as for two
# classes, one named CLASS and the other named Class, and to also support
# references to files without having to specify the exact matching casing. On
# Windows (including Cygwin) and MacOS, users should typically set this option
# to NO, whereas on Linux or other Unix flavors it should typically be set to
# YES.
# The default value is: system dependent.
CASE_SENSE_NAMES = YES
@@ -532,7 +601,7 @@ CASE_SENSE_NAMES = YES
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
HIDE_SCOPE_NAMES = YES
# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
# append additional text to a page's title, such as Class Reference. If set to
@@ -571,7 +640,7 @@ INLINE_INFO = YES
# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
SORT_MEMBER_DOCS = NO
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
@@ -754,13 +823,17 @@ WARN_IF_DOC_ERROR = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, doxygen will only warn about wrong or incomplete
# parameter documentation, but not about the absence of documentation.
# parameter documentation, but not about the absence of documentation. If
# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
# The default value is: NO.
WARN_NO_PARAMDOC = NO
# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
# a warning is encountered.
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the doxygen process doxygen will return with a non-zero status.
# Possible values are: NO, YES and FAIL_ON_WARNINGS.
# The default value is: NO.
WARN_AS_ERROR = NO
@@ -791,13 +864,13 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT =
INPUT = libretro-common
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
# possible encodings.
# documentation (see:
# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
# The default value is: UTF-8.
INPUT_ENCODING = UTF-8
@@ -810,56 +883,17 @@ INPUT_ENCODING = UTF-8
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# read by doxygen.
#
# Note the list of default checked file patterns might differ from the list of
# default file extension mappings.
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),
# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl,
# *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf
FILE_PATTERNS = *.h
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
@@ -890,7 +924,11 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS =
EXCLUDE_PATTERNS = */libretro-common/rthreads/* \
*/libretro-common/formats/* \
*/libretro-common/crt/* \
*/libretro-common/samples/* \
*/libretro-common/include/glsym/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -901,7 +939,9 @@ EXCLUDE_PATTERNS =
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
EXCLUDE_SYMBOLS =
EXCLUDE_SYMBOLS = bool \
void \
const
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
@@ -1012,7 +1052,7 @@ INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# function all documented functions referencing it will be listed.
# entity all documented functions referencing it will be listed.
# The default value is: NO.
REFERENCED_BY_RELATION = NO
@@ -1049,7 +1089,7 @@ SOURCE_TOOLTIPS = YES
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
@@ -1071,6 +1111,44 @@ USE_HTAGS = NO
VERBATIM_HEADERS = YES
# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to
# YES then doxygen will add the directory of each input to the include path.
# The default value is: YES.
CLANG_ADD_INC_PATHS = YES
# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_OPTIONS =
# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
@@ -1082,20 +1160,14 @@ VERBATIM_HEADERS = YES
ALPHABETICAL_INDEX = YES
# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
# Minimum value: 1, maximum value: 20, default value: 5.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
IGNORE_PREFIX = retro_ \
RETRO_
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -1227,9 +1299,9 @@ HTML_TIMESTAMP = NO
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via Javascript. If disabled, the navigation index will
# are dynamically created via JavaScript. If disabled, the navigation index will
# consists of multiple levels of tabs that are statically embedded in every HTML
# page. Disable this option to support browsers that do not have Javascript,
# page. Disable this option to support browsers that do not have JavaScript,
# like the Qt help browser.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1259,13 +1331,14 @@ HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see: https://developer.apple.com/tools/xcode/), introduced with
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
# Makefile in the HTML output directory. Running make will produce the docset in
# that directory and running make install will install the docset in
# environment (see:
# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
# create a documentation set, doxygen will generate a Makefile in the HTML
# output directory. Running make will produce the docset in that directory and
# running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.
# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
# genXcode/_index.html for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1304,8 +1377,8 @@ DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
# Windows.
# (see:
# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows.
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
@@ -1335,7 +1408,7 @@ CHM_FILE =
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the master .chm file (NO).
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
@@ -1380,7 +1453,8 @@ QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace).
# (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
@@ -1388,7 +1462,8 @@ QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders).
# Folders (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
@@ -1396,28 +1471,30 @@ QHP_VIRTUAL_FOLDER = doc
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes).
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location of Qt's
# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
# generated .qhp file.
# The QHG_LOCATION tag can be used to specify the location (absolute path
# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to
# run qhelpgenerator on the generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHG_LOCATION =
@@ -1468,7 +1545,7 @@ DISABLE_INDEX = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = NO
GENERATE_TREEVIEW = YES
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
@@ -1494,6 +1571,17 @@ TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
# the HTML output. These images will generally look nicer at scaled resolutions.
# Possible values are: png (the default) and svg (looks nicer but requires the
# pdf2svg or inkscape tool).
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FORMULA_FORMAT = png
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# doxygen run you need to manually remove any form_*.png images from the HTML
@@ -1514,8 +1602,14 @@ FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.
FORMULA_MACROFILE =
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side Javascript for the rendering
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
@@ -1527,7 +1621,7 @@ USE_MATHJAX = NO
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site (see:
# http://docs.mathjax.org/en/latest/output.html) for more details.
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details.
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility), NativeMML (i.e. MathML) and SVG.
# The default value is: HTML-CSS.
@@ -1543,7 +1637,7 @@ MATHJAX_FORMAT = HTML-CSS
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment.
# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/.
# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/
@@ -1557,7 +1651,8 @@ MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
@@ -1585,7 +1680,7 @@ MATHJAX_CODEFILE =
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
@@ -1604,7 +1699,8 @@ SERVER_BASED_SEARCH = NO
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see: https://xapian.org/).
# Xapian (see:
# https://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
@@ -1617,8 +1713,9 @@ EXTERNAL_SEARCH = NO
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see: https://xapian.org/). See the section "External Indexing and
# Searching" for details.
# Xapian (see:
# https://xapian.org/). See the section "External Indexing and Searching" for
# details.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHENGINE_URL =
@@ -1669,21 +1766,35 @@ LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when enabling USE_PDFLATEX this option is only used for generating
# bitmaps for formulas in the HTML output, but not in the Makefile that is
# written to the output directory.
# The default file is: latex.
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
# chosen this is overwritten by pdflatex. For specific output languages the
# default can have been set differently, this depends on the implementation of
# the output language.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# Note: This tag is used in the Makefile / make.bat.
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
# (.tex).
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
# generate index for LaTeX. In case there is no backslash (\) as first character
# it will be automatically added in the LaTeX code.
# Note: This tag is used in the generated output file (.tex).
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
# The default value is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_MAKEINDEX_CMD = makeindex
# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
@@ -1768,9 +1879,11 @@ LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
# the PDF file directly from the LaTeX files. Set this option to YES, to get a
# higher quality PDF documentation.
# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
# files. Set this option to YES, to get a higher quality PDF documentation.
#
# See also section LATEX_CMD_NAME for selecting the engine.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -1818,6 +1931,14 @@ LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
# LATEX_OUTPUT directory will be used.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
@@ -1857,9 +1978,9 @@ COMPACT_RTF = NO
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's config
# file, i.e. a series of assignments. You only have to provide replacements,
# missing definitions are set to their default value.
# Load stylesheet definitions from file. Syntax is similar to doxygen's
# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that doxygen normally uses.
@@ -1868,8 +1989,8 @@ RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's config file. A template extensions file can be generated
# using doxygen -e rtf extensionFile.
# similar to doxygen's configuration file. A template extensions file can be
# generated using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTENSIONS_FILE =
@@ -1955,6 +2076,13 @@ XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
# namespace members in file scope as well, matching the HTML output.
# The default value is: NO.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
@@ -1994,6 +2122,10 @@ DOCBOOK_PROGRAMLISTING = NO
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
@@ -2089,7 +2221,7 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED =
PREDEFINED = DOXYGEN
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
@@ -2156,12 +2288,6 @@ EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of 'which perl').
# The default file (with absolute path) is: /usr/bin/perl.
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
@@ -2173,16 +2299,7 @@ PERL_PATH = /usr/bin/perl
# powerful graphs.
# The default value is: YES.
CLASS_DIAGRAMS = YES
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see:
# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
MSCGEN_PATH =
CLASS_DIAGRAMS = NO
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
@@ -2202,9 +2319,9 @@ HIDE_UNDOC_RELATIONS = YES
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.
# The default value is: YES.
HAVE_DOT = YES
HAVE_DOT = NO
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2281,10 +2398,32 @@ UML_LOOK = NO
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.
# This tag requires that the tag UML_LOOK is set to YES.
UML_LIMIT_NUM_FIELDS = 10
# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
# tag is set to YES, doxygen will add type and arguments for attributes and
# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
# will not generate fields with class member information in the UML graphs. The
# class diagrams will look similar to the default class diagrams but using UML
# notation for the relationships.
# Possible values are: NO, YES and NONE.
# The default value is: NO.
# This tag requires that the tag UML_LOOK is set to YES.
DOT_UML_DETAILS = NO
# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
# to display on a single line. If the actual line length exceeds this threshold
# significantly it will wrapped across multiple lines. Some heuristics are apply
# to avoid ugly line breaks.
# Minimum value: 0, maximum value: 1000, default value: 17.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_WRAP_THRESHOLD = 17
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
@@ -2358,7 +2497,9 @@ DIRECTORY_GRAPH = YES
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,
# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
# png:gdiplus:gdiplus.
# The default value is: png.
@@ -2474,9 +2615,11 @@ DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc and
# plantuml temporary files.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_CLEANUP = YES
+43 -15
View File
@@ -1,4 +1,5 @@
HAVE_FILE_LOGGER=1
HAVE_STATESTREAM?=1
NEED_CXX_LINKER?=0
NEED_GOLD_LINKER?=0
MISSING_DECLS =0
@@ -45,7 +46,6 @@ else
OBJDIR := $(OBJDIR_BASE)/release
CFLAGS ?= -O3
CXXFLAGS ?= -O3
DEF_FLAGS += -ffast-math
endif
DEF_FLAGS += -Wall -Wsign-compare
@@ -113,7 +113,7 @@ endif
ifneq ($(CXX_BUILD), 1)
ifneq ($(C89_BUILD),)
CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long -Werror=declaration-after-statement
CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long -Werror=declaration-after-statement -Wno-variadic-macros
else ifeq ($(HAVE_C99), 1)
CFLAGS += $(C99_CFLAGS)
endif
@@ -173,6 +173,33 @@ endif
all: $(TARGET) config.mk
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CPPFLAGS: $(CPPFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
LDFLAGS: $(LDFLAGS)
LIBRARY_DIRS: $(LIBRARY_DIRS)
LIBS: $(LIBS)
LINK: $(LINK)
MD: $(MD)
MOC: $(MOC)
MOC_TMP: $(MOC_TMP)
OBJCFLAGS: $(OBJCFLAGS)
QT_VERSION: $(QT_VERSION)
RARCH_OBJ: $(RARCH_OBJ)
WINDRES: $(WINDRES)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
$(MOC_SRC):
@$(if $(Q), $(shell echo echo MOC $<),)
$(eval MOC_TMP := $(patsubst %.h,%_moc.cpp,$@))
@@ -226,7 +253,7 @@ $(OBJDIR)/%.o: %.S config.h config.mk $(HEADERS)
$(OBJDIR)/%.o: %.rc $(HEADERS)
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo WINDRES $<),)
$(Q)$(WINDRES) -o $@ $<
$(Q)$(WINDRES) $(DEFINES) -o $@ $<
install: $(TARGET)
mkdir -p $(DESTDIR)$(BIN_DIR) 2>/dev/null || /bin/true
@@ -239,21 +266,21 @@ install: $(TARGET)
cp $(TARGET) $(DESTDIR)$(BIN_DIR)
cp tools/cg2glsl.py $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
cp retroarch.cfg $(DESTDIR)$(GLOBAL_CONFIG_DIR)
cp com.libretro.RetroArch.appdata.xml $(DESTDIR)$(DATA_DIR)/metainfo
cp retroarch.desktop $(DESTDIR)$(DATA_DIR)/applications
cp com.libretro.RetroArch.metainfo.xml $(DESTDIR)$(DATA_DIR)/metainfo
cp com.libretro.RetroArch.desktop $(DESTDIR)$(DATA_DIR)/applications
cp docs/retroarch.6 $(DESTDIR)$(MAN_DIR)/man6
cp docs/retroarch-cg2glsl.6 $(DESTDIR)$(MAN_DIR)/man6
cp media/retroarch.svg $(DESTDIR)$(DATA_DIR)/pixmaps
cp media/com.libretro.RetroArch.svg $(DESTDIR)$(DATA_DIR)/pixmaps
cp COPYING $(DESTDIR)$(DOC_DIR)
cp README.md $(DESTDIR)$(DOC_DIR)
chmod 755 $(DESTDIR)$(BIN_DIR)/$(TARGET)
chmod 755 $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
chmod 644 $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
chmod 644 $(DESTDIR)$(DATA_DIR)/applications/retroarch.desktop
chmod 644 $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.appdata.xml
chmod 644 $(DESTDIR)$(DATA_DIR)/applications/com.libretro.RetroArch.desktop
chmod 644 $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.metainfo.xml
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch.6
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6
chmod 644 $(DESTDIR)$(DATA_DIR)/pixmaps/retroarch.svg
chmod 644 $(DESTDIR)$(DATA_DIR)/pixmaps/com.libretro.RetroArch.svg
@if test -d media/assets && test $(HAVE_ASSETS); then \
echo "Installing media assets..."; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/assets; \
@@ -274,9 +301,9 @@ uninstall:
rm -f $(DESTDIR)$(BIN_DIR)/$(TARGET)
rm -f $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
rm -f $(DESTDIR)$(DATA_DIR)/applications/retroarch.desktop
rm -f $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.appdata.xml
rm -f $(DESTDIR)$(DATA_DIR)/pixmaps/retroarch.svg
rm -f $(DESTDIR)$(DATA_DIR)/applications/com.libretro.RetroArch.desktop
rm -f $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.metainfo.xml
rm -f $(DESTDIR)$(DATA_DIR)/pixmaps/com.libretro.RetroArch.svg
rm -f $(DESTDIR)$(DOC_DIR)/COPYING
rm -f $(DESTDIR)$(DOC_DIR)/COPYING.assets
rm -f $(DESTDIR)$(DOC_DIR)/README.md
@@ -285,9 +312,10 @@ uninstall:
rm -rf $(DESTDIR)$(ASSETS_DIR)
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
@$(if $(Q), echo $@,)
$(Q)rm -rf $(OBJDIR_BASE)
$(Q)rm -f $(TARGET)
$(Q)rm -f *.d
.PHONY: all install uninstall clean
+395 -60
View File
@@ -15,7 +15,9 @@ ifeq ($(HAVE_NOUNUSED_VARIABLE), 1)
DEF_FLAGS += $(NOUNUSED_VARIABLE_CFLAGS)
endif
ifeq ($(HAVE_CXX11), 1)
ifeq ($(HAVE_QT6), 1)
CXXFLAGS += $(CXX17_CFLAGS)
else ifeq ($(HAVE_CXX11), 1)
CXXFLAGS += $(CXX11_CFLAGS)
endif
@@ -240,20 +242,37 @@ OBJ += frontend/frontend_driver.o \
ui/ui_companion_driver.o \
camera/camera_driver.o \
record/record_driver.o \
record/drivers/record_wav.o \
command.o \
msg_hash.o \
midi_driver.o \
location_driver.o \
intl/msg_hash_us.o \
$(LIBRETRO_COMM_DIR)/queues/task_queue.o \
tasks/task_content.o
ifeq ($(HAVE_PATCH), 1)
DEFINES += -DHAVE_PATCH
OBJ += tasks/task_patch.o
OBJ += tasks/task_patch.o
ifeq ($(HAVE_XDELTA), 1)
DEFINES += -DHAVE_XDELTA -DSECONDARY_DJW -DSECONDARY_LZMA -DSECONDARY_FGK
INCLUDE_DIRS += -I$(DEPS_DIR)/xdelta3 -I$(LIBRETRO_COMM_DIR)
LIBS += -llzma
OBJ += $(DEPS_DIR)/xdelta3/xdelta3.o
HEADERS += xdelta3.h \
xdelta3-cfgs.h \
xdelta3-fgk.h \
xdelta3-hash.h \
xdelta3-internal.h \
xdelta3-list.h \
xdelta3-lzma.h \
xdelta3-second.h
# These headers are added to the makefile because xdelta3 does weird things
# with its #includes, which affects dependency tracking and project analysis
# (e.g. for IDEs).
endif
endif
OBJ += \
save.o \
tasks/task_save.o \
tasks/task_movie.o \
tasks/task_file_transfer.o \
@@ -283,6 +302,10 @@ OBJ += \
$(LIBRETRO_COMM_DIR)/streams/network_stream.o \
$(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.o
ifeq ($(ANDROID), 1)
OBJ += $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation_saf.o
endif
OBJ += \
$(LIBRETRO_COMM_DIR)/lists/string_list.o \
$(LIBRETRO_COMM_DIR)/string/stdstring.o \
@@ -319,16 +342,19 @@ OBJ += \
gfx/video_driver.o \
gfx/gfx_display.o \
gfx/gfx_animation.o \
gfx/gfx_thumbnail_path.o \
gfx/gfx_thumbnail.o \
configuration.o \
$(LIBRETRO_COMM_DIR)/dynamic/dylib.o \
cores/dynamic_dummy.o \
$(LIBRETRO_COMM_DIR)/queues/message_queue.o
ifeq ($(HAVE_MENU), 1)
OBJ += \
gfx/gfx_thumbnail_path.o \
gfx/gfx_thumbnail.o
endif
ifeq ($(HAVE_MICROPHONE), 1)
DEFINES += -DHAVE_MICROPHONE
OBJ += audio/microphone_driver.o
endif
ifeq ($(HAVE_REWIND), 1)
@@ -429,6 +455,12 @@ endif
ifeq ($(HAVE_BSV_MOVIE), 1)
DEFINES += -DHAVE_BSV_MOVIE
OBJ += input/bsv/bsvmovie.o
endif
ifeq ($(HAVE_STATESTREAM), 1)
DEFINES += -DHAVE_STATESTREAM
OBJ += input/bsv/uint32s_index.o
endif
ifeq ($(HAVE_RUNAHEAD), 1)
@@ -514,10 +546,18 @@ ifeq ($(HAVE_QT), 1)
endif
DEFINES += -DHAVE_MAIN
ifeq ($(HAVE_QT6), 1)
CXXFLAGS += -DQT_DISABLE_DEPRECATED_BEFORE=0x060000 $(QT6CORE_CFLAGS) $(QT6GUI_CFLAGS) $(QT6WIDGETS_CFLAGS) $(QT6CONCURRENT_CFLAGS) $(QT6NETWORK_CFLAGS)
#DEF_FLAGS += $(QT6WEBENGINE_CFLAGS)
LIBS += $(QT6CORE_LIBS) $(QT6GUI_LIBS) $(QT6WIDGETS_LIBS) $(QT6CONCURRENT_LIBS) $(QT6NETWORK_LIBS)
#LIBS += $(QT6WEBENGINE_LIBS)
else
DEF_FLAGS += $(QT5CORE_CFLAGS) $(QT5GUI_CFLAGS) $(QT5WIDGETS_CFLAGS) $(QT5CONCURRENT_CFLAGS) $(QT5NETWORK_CFLAGS)
#DEF_FLAGS += $(QT5WEBENGINE_CFLAGS)
LIBS += $(QT5CORE_LIBS) $(QT5GUI_LIBS) $(QT5WIDGETS_LIBS) $(QT5CONCURRENT_LIBS) $(QT5NETWORK_LIBS)
#LIBS += $(QT5WEBENGINE_LIBS)
endif
NEED_CXX_LINKER = 1
ifneq ($(findstring Linux,$(OS)),)
@@ -737,7 +777,8 @@ else ifeq ($(HAVE_BUILTINMBEDTLS), 1)
OBJ += $(OBJS_TLS_CRYPTO) $(OBJS_TLS_X509) $(OBJS_TLS)
else ifeq ($(HAVE_SSL), 1)
DEFINES += -DHAVE_SSL
LIBS += $(SYSTEMMBEDTLS_LIBS)
LIBS += $(SYSTEMMBEDTLS_LIBS) $(SYSTEMMBEDX509_LIBS) $(SYSTEMMBEDCRYPTO_LIBS)
DEF_FLAGS += $(SYSTEMMBEDTLS_CFLAGS) $(SYSTEMMBEDX509_CFLAGS) $(SYSTEMMBEDCRYPTO_CFLAGS)
endif
# Miscellaneous
@@ -758,6 +799,9 @@ ifeq ($(HAVE_EMSCRIPTEN), 1)
ifeq ($(HAVE_RWEBAUDIO), 1)
OBJ += audio/drivers/rwebaudio.o
endif
ifeq ($(HAVE_AUDIOWORKLET), 1)
OBJ += audio/drivers/audioworklet.o
endif
endif
ifeq ($(HAVE_BLUETOOTH), 1)
@@ -826,10 +870,6 @@ ifeq ($(HAVE_ALSA), 1)
OBJ += audio/drivers/alsa.o \
audio/common/alsa.o
ifeq ($(HAVE_MICROPHONE), 1)
OBJ += audio/drivers_microphone/alsa.o
endif
ifneq ($(HAVE_HAKCHI), 1)
ifneq ($(HAVE_SEGAM), 1)
ifneq ($(DINGUX), 1)
@@ -840,12 +880,7 @@ ifeq ($(HAVE_ALSA), 1)
ifneq ($(MIYOO), 1)
ifeq ($(HAVE_THREADS), 1)
OBJ += audio/drivers/alsathread.o \
audio/common/alsathread.o
ifeq ($(HAVE_MICROPHONE), 1)
OBJ += audio/drivers_microphone/alsathread.o
endif
OBJ += audio/drivers/alsathread.o
endif
endif
@@ -889,6 +924,18 @@ ifeq ($(HAVE_PULSE), 1)
DEF_FLAGS += $(PULSE_CFLAGS)
endif
ifeq ($(HAVE_PIPEWIRE), 1)
OBJ += audio/drivers/pipewire.o \
audio/common/pipewire.o
ifeq ($(HAVE_PIPEWIRE_STABLE), 1)
OBJ += camera/drivers/pipewire.o
endif
LIBS += $(PIPEWIRE_LIBS)
DEF_FLAGS += $(PIPEWIRE_CFLAGS)
endif
ifeq ($(HAVE_OSS_LIB), 1)
LIBS += -lossaudio
endif
@@ -908,14 +955,9 @@ endif
ifeq ($(HAVE_WASAPI), 1)
HAVE_MMDEVAPI = 1
OBJ += audio/drivers/wasapi.o \
audio/common/wasapi.o
OBJ += audio/drivers/wasapi.o
DEFINES += -DHAVE_WASAPI
LIBS += -lole32 -lksuser
ifeq ($(HAVE_MICROPHONE), 1)
OBJ += audio/drivers_microphone/wasapi.o
endif
endif
ifeq ($(HAVE_XAUDIO), 1)
@@ -934,6 +976,12 @@ ifeq ($(HAVE_WINMM), 1)
LIBS += -lwinmm
endif
ifeq ($(HAVE_COREMIDI), 1)
OBJ += midi/drivers/coremidi.o
DEFINES += -DHAVE_COREMIDI
LIBS += -framework CoreMIDI
endif
# Audio Resamplers
ifeq ($(HAVE_NEON),1)
@@ -1040,16 +1088,22 @@ endif
ifeq ($(HAVE_LAKKA), 1)
DEFINES += -DHAVE_LAKKA
ifneq ($(HAVE_LAKKA_PROJECT),)
DEFINES += -DHAVE_LAKKA_PROJECT=\"${HAVE_LAKKA_PROJECT}\"
else
$(error You asked for Lakka, but you did not specify a target device name in HAVE_LAKKA_PROJECT)
endif
ifneq ($(HAVE_LAKKA_SERVER),)
DEFINES += -DHAVE_LAKKA_SERVER=\"${HAVE_LAKKA_SERVER}\"
else
$(error You asked for Lakka, but you did not specify update server in HAVE_LAKKA_SERVER)
endif
endif
ifeq ($(HAVE_LAKKA_SWITCH), 1)
DEFINES += -DHAVE_LAKKA_SWITCH
endif
ifeq ($(HAVE_LAKKA_NIGHTLY), 1)
DEFINES += -DHAVE_LAKKA_NIGHTLY
endif
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/menu_setting.o \
menu/menu_driver.o \
@@ -1219,12 +1273,18 @@ ifeq ($(HAVE_WAYLAND), 1)
input/common/wayland_common.o \
input/drivers/wayland_input.o \
gfx/common/wayland_common.o \
gfx/common/wayland/fractional-scale-v1.o \
gfx/common/wayland/viewporter.o \
gfx/common/wayland/xdg-toplevel-icon-v1.o \
gfx/common/wayland/xdg-shell.o \
gfx/common/wayland/idle-inhibit-unstable-v1.o \
gfx/common/wayland/xdg-decoration-unstable-v1.o \
gfx/common/wayland/pointer-constraints-unstable-v1.o \
gfx/common/wayland/relative-pointer-unstable-v1.o
gfx/common/wayland/relative-pointer-unstable-v1.o \
gfx/common/wayland/cursor-shape-v1.o \
gfx/common/wayland/tablet-unstable-v2.o \
gfx/common/wayland/content-type-v1.o \
gfx/common/wayland/single-pixel-buffer-v1.o
ifeq ($(HAVE_VULKAN), 1)
OBJ += gfx/drivers_context/wayland_vk_ctx.o
@@ -1282,6 +1342,13 @@ ifeq ($(HAVE_X11), 1)
ifeq ($(HAVE_XCB),1)
LIBS += -lX11-xcb
endif
ifeq ($(HAVE_XI2),1)
LIBS += -lXi
DEFINES += -DHAVE_XI2
endif
ifeq ($(HAVE_XSCRNSAVER),1)
LIBS += -lXss
endif
ifneq ($(HAVE_OPENGLES), 1)
OBJ += gfx/drivers_context/x_ctx.o
endif
@@ -1436,6 +1503,7 @@ ifeq ($(HAVE_PLAIN_DRM), 1)
INCLUDE_DIRS += -I/usr/include/libdrm
endif
LIBS += -ldrm
HAVE_AND_WILL_USE_DRM = 1
endif
ifeq ($(HAVE_VITAGL), 1)
@@ -1468,7 +1536,10 @@ ifeq ($(HAVE_GL_CONTEXT), 1)
endif
ifeq ($(HAVE_EMSCRIPTEN), 1)
OBJ += gfx/drivers_context/emscriptenegl_ctx.o
ifeq ($(HAVE_EGL), 1)
OBJ += gfx/drivers_context/emscriptenegl_ctx.o
endif
OBJ += gfx/drivers_context/emscriptenwebgl_ctx.o
endif
ifeq ($(HAVE_MALI_FBDEV), 1)
@@ -1512,10 +1583,11 @@ ifeq ($(HAVE_GL_CONTEXT), 1)
DEF_FLAGS += $(OPENGLES_CFLAGS)
ifeq ($(HAVE_OPENGLES3), 1)
DEFINES += -DHAVE_OPENGLES3
OBJ += $(LIBRETRO_COMM_DIR)/glsym/glsym_es3.o
else
DEFINES += -DHAVE_OPENGLES2
OBJ += $(LIBRETRO_COMM_DIR)/glsym/glsym_es2.o
endif
OBJ += $(LIBRETRO_COMM_DIR)/glsym/glsym_es2.o
else
DEFINES += -DHAVE_GL_SYNC
OBJ += $(LIBRETRO_COMM_DIR)/glsym/glsym_gl.o
@@ -1557,14 +1629,9 @@ endif
ifeq ($(HAVE_SDL2), 1)
HAVE_SDL_COMMON = 1
OBJ += gfx/drivers/sdl2_gfx.o \
gfx/common/sdl2_common.o
gfx/common/sdl2_common.o
DEF_FLAGS += $(SDL2_CFLAGS)
LIBS += $(SDL2_LIBS)
ifeq ($(HAVE_MICROPHONE), 1)
OBJ += audio/drivers_microphone/sdl_microphone.o
# Microphones are not supported by SDL 1.x
endif
else ifeq ($(HAVE_SDL), 1)
HAVE_SDL_COMMON = 1
OBJ += gfx/drivers/sdl_gfx.o
@@ -1630,11 +1697,15 @@ ifeq ($(HAVE_VULKAN), 1)
endif
ifeq ($(HAVE_OPENGL_CORE), 1)
OBJ += gfx/drivers/gl3.o \
gfx/drivers_shader/shader_gl3.o
OBJ += gfx/drivers/gl3.o
DEFINES += -DHAVE_OPENGL_CORE
NEED_CXX_LINKER = 1
ifeq ($(HAVE_SLANG), 1)
OBJ += gfx/drivers_shader/shader_gl3.o
NEED_CXX_LINKER = 1
endif
endif
ifeq ($(HAVE_OMAP), 1)
@@ -1696,22 +1767,19 @@ endif
ifeq ($(HAVE_D3D10), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d10.o \
gfx/common/d3d10_common.o
OBJ += gfx/drivers/d3d10.o
DEFINES += -DHAVE_D3D10
endif
ifeq ($(HAVE_D3D11), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d11.o \
gfx/common/d3d11_common.o
OBJ += gfx/drivers/d3d11.o
DEFINES += -DHAVE_D3D11
endif
ifeq ($(HAVE_D3D12), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d12.o \
gfx/common/d3d12_common.o
OBJ += gfx/drivers/d3d12.o
DEFINES += -DHAVE_D3D12
endif
@@ -1818,10 +1886,6 @@ ifeq ($(HAVE_BUILTINGLSLANG), 1)
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/preprocessor/*.cpp) \
$(DEPS_DIR)/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM)/ossource.cpp
ifneq ($(findstring Win32,$(OS)),)
DEFINES += -DENABLE_HLSL
GLSLANG_SOURCES += $(wildcard $(DEPS_DIR)/glslang/glslang/hlsl/*.cpp)
endif
else ifeq ($(HAVE_GLSLANG),1)
HAVE_GLSLANG_COMMON = 1
GLSLANG_SOURCES := gfx/drivers_shader/glslang.cpp
@@ -1832,7 +1896,6 @@ else ifeq ($(HAVE_GLSLANG),1)
$(GLSLANG_GENERICCODEGEN_LIBS) \
$(GLSLANG_OSDEPENDENT_LIBS) \
$(GLSLANG_OGLCOMPILER_LIBS) \
$(GLSLANG_HLSL_LIBS) \
$(GLSLANG_SPIRV_LIBS) \
$(GLSLANG_SPIRV_TOOLS_OPT_LIBS) \
$(GLSLANG_SPIRV_TOOLS_LIBS)
@@ -1896,6 +1959,34 @@ ifeq ($(HAVE_7ZIP),1)
$(7ZOBJ)
endif
ifeq ($(HAVE_ZSTD),1)
INCLUDE_DIRS += -I$(DEPS_DIR)/zstd/lib
DEFINES += -DHAVE_ZSTD -DZSTD_DISABLE_ASM
ZSOBJ = $(DEPS_DIR)/zstd/lib/common/entropy_common.o \
$(DEPS_DIR)/zstd/lib/common/error_private.o \
$(DEPS_DIR)/zstd/lib/common/fse_decompress.o \
$(DEPS_DIR)/zstd/lib/common/zstd_common.o \
$(DEPS_DIR)/zstd/lib/common/xxhash.o \
$(DEPS_DIR)/zstd/lib/compress/fse_compress.o \
$(DEPS_DIR)/zstd/lib/compress/hist.o \
$(DEPS_DIR)/zstd/lib/compress/huf_compress.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_compress.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_compress_literals.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_compress_sequences.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_compress_superblock.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_double_fast.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_fast.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_lazy.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_ldm.o \
$(DEPS_DIR)/zstd/lib/compress/zstd_opt.o \
$(DEPS_DIR)/zstd/lib/decompress/huf_decompress.o \
$(DEPS_DIR)/zstd/lib/decompress/zstd_ddict.o \
$(DEPS_DIR)/zstd/lib/decompress/zstd_decompress.o \
$(DEPS_DIR)/zstd/lib/decompress/zstd_decompress_block.o
OBJ += $(ZSOBJ)
endif
ifeq ($(HAVE_IBXM), 1)
DEFINES += -DHAVE_IBXM
OBJ += $(DEPS_DIR)/ibxm/ibxm.o
@@ -1937,6 +2028,7 @@ ifeq ($(HAVE_BUILTINZLIB), 1)
HAVE_ZLIB_COMMON = 1
OBJ += $(DEPS_DIR)/libz/adler32.o \
$(DEPS_DIR)/libz/libz-crc32.o \
$(DEPS_DIR)/libz/compress.o \
$(DEPS_DIR)/libz/deflate.o \
$(DEPS_DIR)/libz/gzclose.o \
$(DEPS_DIR)/libz/gzlib.o \
@@ -1946,6 +2038,7 @@ ifeq ($(HAVE_BUILTINZLIB), 1)
$(DEPS_DIR)/libz/inflate.o \
$(DEPS_DIR)/libz/inftrees.o \
$(DEPS_DIR)/libz/trees.o \
$(DEPS_DIR)/libz/uncompr.o \
$(DEPS_DIR)/libz/zutil.o
INCLUDE_DIRS += -I$(LIBRETRO_COMM_DIR)/include/compat/zlib
else ifeq ($(HAVE_ZLIB),1)
@@ -1963,6 +2056,97 @@ ifeq ($(HAVE_ZLIB_COMMON), 1)
ifeq ($(HAVE_CHD), 1)
INCLUDE_DIRS += -I$(LIBRETRO_COMM_DIR)/formats/libchdr
DEFINES += -DHAVE_CHD -DWANT_SUBCODE -DWANT_RAW_DATA_SECTOR
ifeq ($(HAVE_STATIC_CORES), 1)
DEFINES += -Dbitstream_overflow=retroarch_internal_bitstream_overflow
DEFINES += -Dcreate_bitstream=retroarch_internal_create_bitstream
DEFINES += -Dbitstream_peek=retroarch_internal_bitstream_peek
DEFINES += -Dbitstream_remove=retroarch_internal_bitstream_remove
DEFINES += -Dbitstream_read=retroarch_internal_bitstream_read
DEFINES += -Dbitstream_read_offset=retroarch_internal_bitstream_read_offset
DEFINES += -Dbitstream_flush=retroarch_internal_bitstream_flush
DEFINES += -Decc_compute_bytes=retroarch_internal_ecc_compute_bytes
DEFINES += -Decc_verify=retroarch_internal_ecc_verify
DEFINES += -Decc_generate=retroarch_internal_ecc_generate
DEFINES += -Decc_clear=retroarch_internal_ecc_clear
DEFINES += -Ds_cd_sync_header=retroarch_internal_s_cd_sync_header
DEFINES += -Dchd_open_file=retroarch_internal_chd_open_file
DEFINES += -Dchd_precache=retroarch_internal_chd_precache
DEFINES += -Dchd_open=retroarch_internal_chd_open
DEFINES += -Dchd_close=retroarch_internal_chd_close
DEFINES += -Dchd_core_file=retroarch_internal_chd_core_file
DEFINES += -Dchd_error_string=retroarch_internal_chd_error_string
DEFINES += -Dchd_get_header=retroarch_internal_chd_get_header
DEFINES += -Dchd_read=retroarch_internal_chd_read
DEFINES += -Dchd_get_metadata=retroarch_internal_chd_get_metadata
DEFINES += -Dchd_codec_config=retroarch_internal_chd_codec_config
DEFINES += -Dchd_get_codec_name=retroarch_internal_chd_get_codec_name
DEFINES += -Dcreate_huffman_decoder=retroarch_internal_create_huffman_decoder
DEFINES += -Ddelete_huffman_decoder=retroarch_internal_delete_huffman_decoder
DEFINES += -Dhuffman_decode_one=retroarch_internal_huffman_decode_one
DEFINES += -Dhuffman_import_tree_rle=retroarch_internal_huffman_import_tree_rle
DEFINES += -Dhuffman_import_tree_huffman=retroarch_internal_huffman_import_tree_huffman
DEFINES += -Dhuffman_compute_tree_from_histo=retroarch_internal_huffman_compute_tree_from_histo
DEFINES += -Dhuffman_build_tree=retroarch_internal_huffman_build_tree
DEFINES += -Dhuffman_assign_canonical_codes=retroarch_internal_huffman_assign_canonical_codes
DEFINES += -Dhuffman_build_lookup_table=retroarch_internal_huffman_build_lookup_table
DEFINES += -Dcdzl_codec_init=retroarch_internal_cdzl_codec_init
DEFINES += -Dcdzl_codec_free=retroarch_internal_cdzl_codec_free
DEFINES += -Dcdzl_codec_decompress=retroarch_internal_cdzl_codec_decompress
DEFINES += -Dzlib_codec_init=retroarch_internal_zlib_codec_init
DEFINES += -Dzlib_codec_free=retroarch_internal_zlib_codec_free
DEFINES += -Dzlib_codec_decompress=retroarch_internal_zlib_codec_decompress
DEFINES += -Dzlib_fast_alloc=retroarch_internal_zlib_fast_alloc
DEFINES += -Dzlib_fast_free=retroarch_internal_zlib_fast_free
DEFINES += -Dchdstream_open=retroarch_internal_chdstream_open
DEFINES += -Dchdstream_close=retroarch_internal_chdstream_close
DEFINES += -Dchdstream_read=retroarch_internal_chdstream_read
DEFINES += -Dchdstream_getc=retroarch_internal_chdstream_getc
DEFINES += -Dchdstream_gets=retroarch_internal_chdstream_gets
DEFINES += -Dchdstream_tell=retroarch_internal_chdstream_tell
DEFINES += -Dchdstream_rewind=retroarch_internal_chdstream_rewind
DEFINES += -Dchdstream_seek=retroarch_internal_chdstream_seek
DEFINES += -Dchdstream_get_size=retroarch_internal_chdstream_get_size
DEFINES += -Dchdstream_get_track_start=retroarch_internal_chdstream_get_track_start
DEFINES += -Dchdstream_get_frame_size=retroarch_internal_chdstream_get_frame_size
DEFINES += -Dchdstream_get_first_track_sector=retroarch_internal_chdstream_get_first_track_sector
DEFINES += -Dflac_decoder_init=retroarch_internal_flac_decoder_init
DEFINES += -Dflac_decoder_free=retroarch_internal_flac_decoder_free
DEFINES += -Dflac_decoder_reset=retroarch_internal_flac_decoder_reset
DEFINES += -Dflac_decoder_decode_interleaved=retroarch_internal_flac_decoder_decode_interleaved
DEFINES += -Dflac_decoder_finish=retroarch_internal_flac_decoder_finish
DEFINES += -Dflac_decoder_read_callback_static=retroarch_internal_flac_decoder_read_callback_static
DEFINES += -Dflac_decoder_read_callback=retroarch_internal_flac_decoder_read_callback
DEFINES += -Dflac_decoder_metadata_callback_static=retroarch_internal_flac_decoder_metadata_callback_static
DEFINES += -Dflac_decoder_tell_callback_static=retroarch_internal_flac_decoder_tell_callback_static
DEFINES += -Dflac_decoder_write_callback_static=retroarch_internal_flac_decoder_write_callback_static
DEFINES += -Dflac_decoder_write_callback=retroarch_internal_flac_decoder_write_callback
DEFINES += -Dflac_decoder_error_callback_static=retroarch_internal_flac_decoder_error_callback_static
DEFINES += -Dcdfl_codec_init=retroarch_internal_cdfl_codec_init
DEFINES += -Dcdfl_codec_free=retroarch_internal_cdfl_codec_free
DEFINES += -Dcdfl_codec_decompress=retroarch_internal_cdfl_codec_decompress
DEFINES += -Dlzma_allocator_init=retroarch_internal_lzma_allocator_init
DEFINES += -Dlzma_allocator_free=retroarch_internal_lzma_allocator_free
DEFINES += -Dlzma_codec_init=retroarch_internal_lzma_codec_init
DEFINES += -Dlzma_codec_free=retroarch_internal_lzma_codec_free
DEFINES += -Dlzma_codec_decompress=retroarch_internal_lzma_codec_decompress
DEFINES += -Dcdlz_codec_init=retroarch_internal_cdlz_codec_init
DEFINES += -Dcdlz_codec_free=retroarch_internal_cdlz_codec_free
DEFINES += -Dcdlz_codec_decompress=retroarch_internal_cdlz_codec_decompress
DEFINES += -Dzstd_codec_init=retroarch_internal_zstd_codec_init
DEFINES += -Dzstd_codec_free=retroarch_internal_zstd_codec_free
DEFINES += -Dzstd_codec_decompress=retroarch_internal_zstd_codec_decompress
DEFINES += -Dcdzs_codec_init=retroarch_internal_cdzs_codec_init
DEFINES += -Dcdzs_codec_free=retroarch_internal_cdzs_codec_free
DEFINES += -Dcdzs_codec_decompress=retroarch_internal_cdzs_codec_decompress
endif
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_bitstream.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_cdrom.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_chd.o \
@@ -1978,6 +2162,10 @@ ifeq ($(HAVE_ZLIB_COMMON), 1)
ifeq ($(HAVE_7ZIP), 1)
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_lzma.o
endif
ifeq ($(HAVE_ZSTD), 1)
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_zstd.o
endif
endif
endif
@@ -2031,6 +2219,65 @@ ifeq ($(HAVE_V4L2),1)
LIBS += $(V4L2_LIBS)
endif
# FFmpeg
ifeq ($(HAVE_FFMPEG), 1)
DEFINES += -DHAVE_FFMPEG
INCLUDE_DIRS += -Iffmpeg
DEF_FLAGS += $(FFMPEG_CFLAGS) -Wno-deprecated-declarations
LIBS += $(FFMPEG_LIBS)
ifeq ($(HAVE_AVCODEC), 1)
DEFINES += -DHAVE_AVCODEC
DEF_FLAGS += $(AVCODEC_CFLAGS)
LIBS += $(AVCODEC_LIBS)
endif
ifeq ($(HAVE_AVDEVICE), 1)
DEFINES += -DHAVE_AVDEVICE
DEF_FLAGS += $(AVDEVICE_CFLAGS)
LIBS += $(AVDEVICE_LIBS)
endif
ifeq ($(HAVE_AVFORMAT), 1)
DEFINES += -DHAVE_AVFORMAT
DEF_FLAGS += $(AVFORMAT_CFLAGS)
LIBS += $(AVFORMAT_LIBS)
endif
ifeq ($(HAVE_AVUTIL), 1)
DEFINES += -DHAVE_AVUTIL
DEF_FLAGS += $(AVUTIL_CFLAGS)
LIBS += $(AVUTIL_LIBS)
endif
ifeq ($(HAVE_SWSCALE), 1)
DEFINES += -DHAVE_SWSCALE
DEF_FLAGS += $(SWSCALE_CFLAGS)
LIBS += $(SWSCALE_LIBS)
endif
ifeq ($(HAVE_SWRESAMPLE), 1)
DEFINES += -DHAVE_SWRESAMPLE
DEF_FLAGS += $(SWRESAMPLE_CFLAGS)
LIBS += $(SWRESAMPLE_LIBS)
endif
endif
ifeq ($(HAVE_FFMPEG), 1)
ifeq ($(HAVE_AVFORMAT), 1)
ifeq ($(HAVE_AVDEVICE), 1)
ifeq ($(HAVE_AVCODEC), 1)
ifeq ($(HAVE_AVUTIL), 1)
ifeq ($(HAVE_SWSCALE), 1)
OBJ += camera/drivers/ffmpeg.o
endif
endif
endif
endif
endif
endif
# Accessibility
ifeq ($(HAVE_ACCESSIBILITY), 1)
DEFINES += -DHAVE_ACCESSIBILITY
@@ -2055,17 +2302,39 @@ ifeq ($(HAVE_NETWORKING), 1)
$(LIBRETRO_COMM_DIR)/net/net_socket.o \
core_updater_list.o \
network/natt.o \
network/net_http_special.o \
tasks/task_http.o \
tasks/task_netplay_lan_scan.o \
tasks/task_netplay_nat_traversal.o \
tasks/task_pl_thumbnail_download.o \
tasks/task_netplay_find_content.o
ifeq ($(HAVE_EMSCRIPTEN), 1)
OBJ += tasks/task_http_emscripten.o
else
OBJ += tasks/task_http.o
endif
ifeq ($(HAVE_MENU), 1)
OBJ += tasks/task_pl_thumbnail_download.o
endif
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += tasks/task_core_updater.o
endif
ifneq ($(findstring Linux,$(OS)),)
HAVE_CLOUDSYNC = 1
endif
ifneq ($(findstring Win,$(OS)),)
HAVE_CLOUDSYNC = 1
endif
ifeq ($(HAVE_CLOUDSYNC), 1)
DEFINES += -DHAVE_CLOUDSYNC
OBJ += tasks/task_cloudsync.o \
network/cloud_sync/webdav.o \
network/cloud_sync_driver.o
endif
ifeq ($(HAVE_BUILTINBEARSSL), 1)
OBJ += $(LIBRETRO_COMM_DIR)/net/net_socket_ssl_bear.o
else ifeq ($(HAVE_SSL), 1)
@@ -2094,15 +2363,27 @@ ifeq ($(HAVE_NETWORKING), 1)
# RetroAchievements
ifeq ($(HAVE_CHEEVOS), 1)
DEFINES += -DHAVE_CHEEVOS
DEFINES += -DHAVE_CHEEVOS -DRC_CLIENT_SUPPORTS_HASH
INCLUDE_DIRS += -Ideps/rcheevos/include
ifneq ($(HAVE_THREADS), 1)
DEFINES += -DRC_NO_THREADS
else ifneq (,$(filter GEKKO,$(CFLAGS)))
# Gekko (Wii) and 3DS use custom pthread wrappers (see rthreads.c)
DEFINES += -DRC_NO_THREADS
else ifneq (,$(filter _3DS,$(CFLAGS)))
DEFINES += -DRC_NO_THREADS
endif
OBJ += cheevos/cheevos.o \
cheevos/cheevos_client.o \
cheevos/cheevos_menu.o \
$(LIBRETRO_COMM_DIR)/formats/cdfs/cdfs.o \
deps/rcheevos/src/rc_client.o \
deps/rcheevos/src/rc_compat.o \
deps/rcheevos/src/rc_libretro.o \
deps/rcheevos/src/rc_util.o \
deps/rcheevos/src/rcheevos/alloc.o \
deps/rcheevos/src/rcheevos/compat.o \
deps/rcheevos/src/rcheevos/condition.o \
deps/rcheevos/src/rcheevos/condset.o \
deps/rcheevos/src/rcheevos/consoleinfo.o \
@@ -2110,18 +2391,29 @@ ifeq ($(HAVE_NETWORKING), 1)
deps/rcheevos/src/rcheevos/lboard.o \
deps/rcheevos/src/rcheevos/memref.o \
deps/rcheevos/src/rcheevos/operand.o \
deps/rcheevos/src/rcheevos/rc_libretro.o \
deps/rcheevos/src/rcheevos/richpresence.o \
deps/rcheevos/src/rcheevos/runtime.o \
deps/rcheevos/src/rcheevos/runtime_progress.o \
deps/rcheevos/src/rcheevos/trigger.o \
deps/rcheevos/src/rcheevos/value.o \
deps/rcheevos/src/rhash/aes.o \
deps/rcheevos/src/rhash/cdreader.o \
deps/rcheevos/src/rhash/hash.o \
deps/rcheevos/src/rhash/hash_disc.o \
deps/rcheevos/src/rhash/hash_encrypted.o \
deps/rcheevos/src/rhash/hash_rom.o \
deps/rcheevos/src/rhash/hash_zip.o \
deps/rcheevos/src/rapi/rc_api_common.o \
deps/rcheevos/src/rapi/rc_api_info.o \
deps/rcheevos/src/rapi/rc_api_runtime.o \
deps/rcheevos/src/rapi/rc_api_user.o \
# RVZ/WIA disc image support for RetroAchievements
ifeq ($(HAVE_ZSTD), 1)
DEFINES += -DHAVE_CHEEVOS_RVZ
OBJ += cheevos/cheevos_rvz.o
endif
ifeq ($(HAVE_LUA), 1)
DEFINES += -DHAVE_LUA \
-DLUA_32BITS
@@ -2236,7 +2528,7 @@ ifeq ($(HAVE_FFMPEG), 1)
cores/libretro-ffmpeg/video_buffer.o \
$(LIBRETRO_COMM_DIR)/rthreads/tpool.o
LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) $(SWSCALE_LIBS) $(SWRESAMPLE_LIBS) $(FFMPEG_LIBS)
LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) $(SWSCALE_LIBS) $(SWRESAMPLE_LIBS) $(FFMPEG_LIBS) $(AVDEVICE_LIBS)
DEFINES += -DHAVE_FFMPEG
DEF_FLAGS += $(AVCODEC_CFLAGS) $(AVFORMAT_CFLAGS) $(AVUTIL_CFLAGS) $(SWSCALE_CFLAGS) $(SWRESAMPLE_CFLAGS) \
-Wno-deprecated-declarations
@@ -2333,6 +2625,7 @@ ifeq ($(HAVE_STATIC_VIDEO_FILTERS), 1)
gfx/video_filters/dot_matrix_3x.o \
gfx/video_filters/dot_matrix_4x.o \
gfx/video_filters/upscale_1_5x.o \
gfx/video_filters/upscale_1_66x_fast.o \
gfx/video_filters/upscale_256x_320x240.o \
gfx/video_filters/picoscale_256x_320x240.o \
gfx/video_filters/upscale_240x160_320x240.o \
@@ -2363,13 +2656,16 @@ ifeq ($(WANT_LIBFAT), 1)
endif
ifeq ($(HAVE_STATIC_AUDIO_FILTERS), 1)
OBJ += libretro-common/audio/dsp_filters/echo.o \
OBJ += libretro-common/audio/dsp_filters/chorus.o \
libretro-common/audio/dsp_filters/crystalizer.o \
libretro-common/audio/dsp_filters/echo.o \
libretro-common/audio/dsp_filters/eq.o \
libretro-common/audio/dsp_filters/chorus.o \
libretro-common/audio/dsp_filters/iir.o \
libretro-common/audio/dsp_filters/panning.o \
libretro-common/audio/dsp_filters/phaser.o \
libretro-common/audio/dsp_filters/reverb.o \
libretro-common/audio/dsp_filters/tremolo.o \
libretro-common/audio/dsp_filters/vibrato.o \
libretro-common/audio/dsp_filters/wahwah.o
endif
@@ -2397,6 +2693,13 @@ ifeq ($(HAVE_WEBOS), 1)
DEFINES += -DWEBOS
endif
ifeq ($(HAVE_TEST_DRIVERS), 1)
DEFINES += -DHAVE_TEST_DRIVERS
OBJ += input/drivers_joypad/test_joypad.o
OBJ += input/drivers/test_input.o
endif
#####################################
### Android Play Feature Delivery ###
### (Play Store build core ###
@@ -2470,4 +2773,36 @@ ifeq ($(HAVE_ODROIDGO2), 1)
gfx/drivers/oga_gfx.o
endif
ifeq ($(HAVE_GAME_AI),1)
DEFINES += -DHAVE_GAME_AI
OBJ += ai/game_ai.o
endif
# Detect the operating system
UNAME := $(shell uname -s)
# Check if the system is MSYS2 (MINGW64 or MINGW32)
ifneq ($(findstring MINGW,$(UNAME)),)
$(info Detected MSYS2 environment)
NT_VERSION := $(shell \
echo '#include <windows.h>' > temp.c; \
echo '#ifdef _WIN32_WINNT' >> temp.c; \
echo '#define GET_MACRO_VALUE(x) #x' >> temp.c; \
echo '#define EXPAND_MACRO_VALUE(x) GET_MACRO_VALUE(x)' >> temp.c; \
echo '#pragma message("_WIN32_WINNT=" EXPAND_MACRO_VALUE(_WIN32_WINNT))' >> temp.c; \
echo '#endif' >> temp.c; \
$(CC) -c temp.c 2>&1 | sed -n 's/^.*_WIN32_WINNT=\(0x[0-9A-Fa-f]\+\).*/\1/p'; \
rm -f temp.c temp.o)
ifneq ($(NT_VERSION),)
ifeq ($(shell [ $$(( $(NT_VERSION) )) -gt $$(( 0x602 )) ] && echo true),true)
LIBS += -lxaudio2_9
endif
else
$(warning Windows NT version macro (_WIN32_WINNT) is not defined.)
endif
endif
##################################
+84 -56
View File
@@ -3,8 +3,8 @@ LIBRETRO =
DEBUG = 0
CONSOLE_LOG = 0
GRIFFIN_BUILD = 1
HAVE_STATIC_DUMMY ?= 0
GRIFFIN_BUILD = 0
HAVE_STATIC_DUMMY ?= 0
WHOLE_ARCHIVE_LINK = 0
BUILD_3DSX = 1
BUILD_3DS = 0
@@ -68,6 +68,14 @@ ifeq ($(GRIFFIN_BUILD), 1)
#DEFINES += -DHAVE_SOCKET_LEGACY
#-DHAVE_SSL -DHAVE_BUILTINMBEDTLS -DMBEDTLS_SSL_DEBUG_ALL
#ssl is currently incompatible with griffin due to use of the "static" flag on repeating functions that will conflict when included in one file
CFLAGS += -I. \
-Ideps \
-Ideps/7zip \
-Ideps/stb \
-Ideps/mbedtls \
-Ideps/rcheevos/include \
-Ilibretro-common/include \
-Ilibretro-common/include/compat/zlib
else
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
@@ -89,21 +97,22 @@ else
HAVE_REWIND = 1
HAVE_AUDIOMIXER = 1
HAVE_RWAV = 1
#HAVE_NETWORKING = 1
#HAVE_IFINFO = 1
#HAVE_CHEEVOS = 1
#HAVE_SOCKET_LEGACY = 1
HAVE_CHEATS = 1
HAVE_VIDEO_FILTER = 1
HAVE_DSP_FILTER = 1
HAVE_CONFIGFILE = 1
HAVE_OVERLAY = 1
HAVE_GFX_WIDGETS = 1
HAVE_NETWORKING = 1
HAVE_IFINFO = 1
HAVE_CHEEVOS = 1
HAVE_THREADS = 1
#HAVE_SSL = 1
#HAVE_BUILTINMBEDTLS = 1
HAVE_BUILTINMBEDTLS = 1
HAVE_CORE_INFO_CACHE = 1
HAVE_CLOUDSYNC = 1
include Makefile.common
CFLAGS += $(DEF_FLAGS)
BLACKLIST :=
BLACKLIST += input/input_overlay.o
BLACKLIST += tasks/task_overlay.o
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
CFLAGS += $(DEF_FLAGS) -I. $(INCLUDE_DIRS)
endif
ifeq ($(strip $(DEVKITPRO)),)
@@ -153,12 +162,7 @@ LIBDIRS := -L. -L$(CTRULIB)/lib
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
CFLAGS += -mword-relocations \
-fomit-frame-pointer -ffast-math \
-Werror=implicit-function-declaration \
$(ARCH)
#CFLAGS += -Wall
CFLAGS += -mword-relocations $(ARCH)
CFLAGS += -DARM11 -D_3DS
ifeq ($(strip $(USE_CTRULIB_2)),1)
@@ -168,7 +172,7 @@ endif
ifeq ($(DEBUG), 1)
CFLAGS += -O0 -g
else
CFLAGS += -O3
CFLAGS += -fomit-frame-pointer -O3
endif
ifeq ($(CONSOLE_LOG), 1)
@@ -184,25 +188,17 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_END := -Wl,--no-whole-archive
endif
CFLAGS += -I. \
-Ideps \
-Ideps/7zip \
-Ideps/stb \
-Ideps/rcheevos/include \
-Ilibretro-common/include \
-Ilibretro-common/include/compat/zlib
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
CFLAGS += -DHAVE_DSP_FILTER
CFLAGS += -DHAVE_VIDEO_FILTER
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
CFLAGS += -DHAVE_CHEATS
CFLAGS += -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_CORES -DHAVE_UPDATE_CORE_INFO
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
CFLAGS += -Werror=implicit-function-declaration
ASFLAGS := -g $(ARCH) -O3
LDFLAGS += -specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
CFLAGS += -std=gnu99 -ffast-math
CFLAGS += -std=gnu99
LIB_CORE :=
LIB_CORE_FULL :=
@@ -222,6 +218,10 @@ else
LIBS += -lctru
endif
ifneq ($(V),1)
Q := @
endif
ifeq ($(BUILD_3DSX), 1)
TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh
endif
@@ -234,16 +234,7 @@ ifeq ($(BUILD_CIA), 1)
TARGET_CIA := $(TARGET).cia
endif
.PHONY: $(BUILD) clean all
all: $(TARGET)
$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA)
$(TARGET).3dsx: $(TARGET).elf
$(TARGET).elf: $(OBJ) $(LIB_CORE_FULL)
PREFIX := $(DEVKITARM)/bin/arm-none-eabi-
CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
AS := $(PREFIX)as
@@ -277,6 +268,36 @@ else
MAKEROM = $(CTRMAKEROM)
endif
.PHONY: $(BUILD) clean all
all: $(TARGET)
define INFO
AR: $(AR)
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
INCDIRS: $(INCDIRS)
LD: $(LD)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
OBJ: $(OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA)
$(TARGET).3dsx: $(TARGET).elf
$(TARGET).elf: $(OBJ) $(LIB_CORE_FULL)
%.o: %.vsh %.gsh
$(DEVKITTOOLS)/bin/picasso $^ -o $*.shbin
$(DEVKITTOOLS)/bin/bin2s $*.shbin | $(PREFIX)as -o $@
@@ -288,19 +309,24 @@ endif
rm $*.shbin
%.o: %.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS)
%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS)
%.o: %.s
$(CC) -c -o $@ $< $(ASFLAGS)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(ASFLAGS)
%.o: %.S
$(CC) -c -o $@ $< $(ASFLAGS)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(ASFLAGS)
%.a:
$(AR) -rc $@ $^
@$(if $(Q), $(shell echo echo AR $<),)
$(Q)$(AR) -rc $@ $^
%.vsh:
@@ -316,7 +342,8 @@ endif
$(DEVKITTOOLS)/bin/3dsxtool $< $@ $(_3DSXFLAGS)
$(TARGET).elf: ctr/3dsx_custom_crt0.o
$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@
$(NM) -CSn $@ > $(notdir $*.lst)
$(TARGET).bnr: $(TARGET).elf $(APP_BANNER) $(APP_AUDIO)
@@ -332,15 +359,16 @@ $(TARGET).cia: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)
$(MAKEROM) -f cia -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=false
clean:
rm -f $(OBJ)
rm -f $(TARGET).3dsx
rm -f $(TARGET).elf
rm -f $(TARGET).3ds
rm -f $(TARGET).cia
rm -f $(TARGET).smdh
rm -f $(TARGET).bnr
rm -f $(TARGET).icn
rm -f ctr/ctr_config_*.o
rm -f ctr/3dsx_custom_crt0.o
@$(if $(Q), echo $@,)
$(Q)rm -f $(OBJ)
$(Q)rm -f $(TARGET).3dsx
$(Q)rm -f $(TARGET).elf
$(Q)rm -f $(TARGET).3ds
$(Q)rm -f $(TARGET).cia
$(Q)rm -f $(TARGET).smdh
$(Q)rm -f $(TARGET).bnr
$(Q)rm -f $(TARGET).icn
$(Q)rm -f ctr/ctr_config_*.o
$(Q)rm -f ctr/3dsx_custom_crt0.o
.PHONY: clean
+3 -7
View File
@@ -83,12 +83,7 @@ LIBDIRS := -L. -L$(CTRULIB)/lib
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
CFLAGS += -mword-relocations \
-fomit-frame-pointer -ffast-math \
-Werror=implicit-function-declaration \
$(ARCH)
#CFLAGS += -Wall
CFLAGS += -mword-relocations -fomit-frame-pointer $(ARCH)
CFLAGS += -DARM11 -D_3DS
ifeq ($(strip $(USE_CTRULIB_2)),1)
@@ -111,11 +106,12 @@ CFLAGS += -I. -Ideps/7zip -Ideps/stb -Ilibretro-common/include -Ilibretro-common
CFLAGS += -DRARCH_CONSOLE -DIS_SALAMANDER
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
CFLAGS += -Werror=implicit-function-declaration
ASFLAGS := -g $(ARCH) -O3
LDFLAGS += -specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
CFLAGS += -std=gnu99 -ffast-math
CFLAGS += -std=gnu99
LIBS := -lctru -lm
+1 -1
View File
@@ -107,7 +107,7 @@ OPK_NAME = retroarch.opk
OBJ :=
LINK := $(CXX)
DEF_FLAGS := -march=mips32 -mtune=mips32r2 -mhard-float -ffast-math -fomit-frame-pointer
DEF_FLAGS := -march=mips32 -mtune=mips32r2 -mhard-float -fomit-frame-pointer
DEF_FLAGS += -mplt -mno-shared
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DDINGUX=1 -MMD
+37 -7
View File
@@ -47,6 +47,7 @@ HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_STATIC_CORES = 1
HAVE_FILTERS_BUILTIN = 1
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
@@ -62,10 +63,11 @@ HAVE_COMMAND := 1
HAVE_STDIN_CMD := 1
HAVE_CMD := 1
HAVE_CHEEVOS = 0
HAVE_CHD = 0 # disabled due to static libretro-common and libchdr conflicts between different cores
HAVE_CHD = 1
HAVE_STB_VORBIS = 1
HAVE_IBXM = 1
HAVE_CORE_INFO_CACHE = 1
HAVE_XDELTA = 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
@@ -118,7 +120,7 @@ APP_ICON := pkg/libnx/retroarch.jpg
#---------------------------------------------------------------------------------
ARCH :=
CFLAGS := -g -Wall -O3 -fcommon -ffast-math -ffunction-sections \
CFLAGS := -g -Wall -O3 -fcommon -ffunction-sections \
$(ARCH) $(DEFINES) $(INCLUDE_DIRS)
CFLAGS += $(INCLUDE)
@@ -193,6 +195,10 @@ else
LIB_CORE += -lretro_dos
endif
ifneq ($(V),1)
Q := @
endif
DEPENDS_TMP := $(OFILES:.o=.d)
DEPENDS := $(filter-out libretro_libnx.a,$(DEPENDS_TMP))
@@ -201,19 +207,43 @@ DEPENDS := $(filter-out libretro_libnx.a,$(DEPENDS_TMP))
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
all : $(OUTPUT)
all: $(OUTPUT)
define INFO
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
DEPENDS: $(DEPENDS)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
LIB_CORE: $(LIB_CORE)
OBJ: $(OBJ)
OUTPUT: $(OUTPUT)
PLATEXTRA: $(PLATEXTRA)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
$(OUTPUT): $(OBJ)
$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(PLATEXTRA) -L. $(LIB_CORE) $(LIBS)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(PLATEXTRA) -L. $(LIB_CORE) $(LIBS)
%.o: %.c
$(CC) -c -o $@ $(CFLAGS) $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $(CFLAGS) $<
%.o: %.cpp
$(CXX) -c -o $@ $(CFLAGS) $<
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) -c -o $@ $(CFLAGS) $<
clean:
rm -f $(DEPENDS) $(OBJ) $(OUTPUT)
@$(if $(Q), $(shell echo echo RM),)
$(Q)rm -f $(DEPENDS) $(OBJ) $(OUTPUT)
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
+225 -67
View File
@@ -2,33 +2,39 @@ HAVE_STATIC_DUMMY ?= 0
ifeq ($(TARGET),)
ifeq ($(LIBRETRO),)
TARGET := retroarch.js
LIBRETRO = dummy
else
TARGET := $(LIBRETRO)_libretro.js
endif
endif
EOPT = USE_ZLIB=1 # Emscripten specific options
EOPTS = $(addprefix -s $(EMPTY), $(EOPT)) # Add '-s ' to each option
TARGET_BASE := $(subst .js,,$(TARGET))
OS = Emscripten
OBJ :=
DEFINES := -DRARCH_INTERNAL -DHAVE_MAIN
DEFINES += -DHAVE_FILTERS_BUILTIN
DEFINES := -DRARCH_INTERNAL -DHAVE_MAIN -DEMSCRIPTEN
DEFINES += -DHAVE_FILTERS_BUILTIN -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORE_INFO
HAVE_STATESTREAM ?= 1
HAVE_PATCH = 1
HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_OVERLAY = 1
HAVE_NETWORKING ?= 1
HAVE_LIBRETRODB = 1
HAVE_COMPRESSION = 1
HAVE_UPDATE_ASSETS = 1
HAVE_ONLINE_UPDATER = 1
HAVE_GLSL = 1
HAVE_SCREENSHOTS = 1
HAVE_REWIND = 1
HAVE_AUDIOMIXER = 1
HAVE_CC_RESAMPLER = 1
HAVE_EGL = 1
HAVE_CC_RESAMPLER ?= 1
HAVE_EGL ?= 0
HAVE_OPENGLES = 1
HAVE_RJPEG = 0
HAVE_RPNG = 1
HAVE_RJPEG = 0
HAVE_RPNG = 1
HAVE_EMSCRIPTEN = 1
HAVE_MENU = 1
HAVE_MENU ?= 1
HAVE_GFX_WIDGETS = 1
HAVE_RGUI = 1
HAVE_SDL = 0
@@ -40,69 +46,114 @@ HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_STB_FONT = 1
HAVE_CONFIGFILE = 1
HAVE_COMMAND = 1
HAVE_STDIN_CMD = 1
HAVE_STDIN_CMD ?= 1
HAVE_CHEATS = 1
HAVE_IBXM = 1
HAVE_CORE_INFO_CACHE = 1
HAVE_7ZIP = 1
HAVE_BSV_MOVIE = 1
HAVE_AL = 1
HAVE_CHD ?= 0
HAVE_NETPLAYDISCOVERY ?= 0
# enables pthreads, requires special headers on the web server:
# see https://web.dev/articles/coop-coep
HAVE_THREADS ?= 0
# WARNING -- READ BEFORE ENABLING
# The rwebaudio driver is known to have several audio bugs, such as
# minor crackling, or the entire page freezing/crashing.
# It works perfectly on chrome, but even firefox has really bad audio quality.
# I should also note, the driver on iOS is completely broken (crashes the page).
# You have been warned.
HAVE_RWEBAUDIO = 0
# requires HAVE_THREADS
HAVE_AUDIOWORKLET ?= 0
# doesn't work on PROXY_TO_PTHREAD
HAVE_RWEBAUDIO ?= 1
# requires ASYNC or PROXY_TO_PTHREAD
HAVE_AL ?= 0
# whether the browser thread is allowed to block to wait for audio to play, not CPU usage-friendly!
# currently this variable is only used by rwebaudio and audioworklet; openal will never busywait.
ALLOW_AUDIO_BUSYWAIT ?= 0
# minimal asyncify; better performance than full asyncify,
# but sleeping on the main thread is only possible in some places.
MIN_ASYNC ?= 0
# runs RetroArch on a pthread instead of the browser thread; requires HAVE_THREADS
PROXY_TO_PTHREAD ?= 0
# recommended FS when using HAVE_THREADS
HAVE_WASMFS ?= 0
# enables OPFS (origin private file system) and FETCHFS, requires PROXY_TO_PTHREAD
HAVE_EXTRA_WASMFS ?= 0
# enable javascript filesystem tracking, incompatible with HAVE_WASMFS
FS_DEBUG ?= 0
# help diagnose GL problems (can cause issues in normal operation)
GL_DEBUG ?= 0
# does nothing on its own, but automatically selected by some other options
WASM_WORKERS = 0
HAVE_OPENGLES ?= 1
HAVE_OPENGLES3 ?= 0
ASYNC ?= 0
ifeq ($(LIBRETRO), mupen64plus)
ASYNC = 1
endif
LTO ?= 0
ifeq ($(LIBRETRO), tyrquake)
LTO = 0
endif
PTHREAD_POOL_SIZE ?= 4
PTHREAD ?= 0
ASYNCIFY_ADD ?= dynCall_*,emscripten_mainloop
ASYNCIFY_REMOVE ?= threaded_worker
MEMORY ?= 134217728
STACK_SIZE ?= 4194304
INITIAL_HEAP ?= 134217728
PRECISE_F32 = 1
# 4194304 ----- 4 MiB (Stack: recommended)
# 8388608 ----- 8 MiB
# 16777216 ---- 16 MiB
# 33554432 ---- 32 MiB
# 67108864 ---- 64 MiB
# 134217728 --- 128 MiB (Heap: recommended) (Stack: recommended for some cores [mupen64plus_next])
# 268435456 --- 256 MiB (Heap: recommended for some cores [mupen64plus_next])
# 536870912 --- 512 MiB (Heap: needed for some cores [mednafen_psx(_hw)])
# 1073741824 -- 1 GiB
# 1610612736 -- 1.5 GiB
# 2147483648 -- 2 GiB
OBJDIR := obj-emscripten
#if you compile with SDL2 flag add this Emscripten flag "-s USE_SDL=2" to LDFLAGS:
EXPORTED_FUNCTIONS = _main,_malloc,_free,_cmd_savefiles,_cmd_save_state,_cmd_load_state,_cmd_undo_save_state,_cmd_undo_load_state,_cmd_toggle_fullscreen,_cmd_take_screenshot,\
_cmd_toggle_menu,_cmd_reload_config,_cmd_toggle_grab_mouse,_cmd_toggle_game_focus,_cmd_reset,_cmd_toggle_pause,_cmd_pause,_cmd_unpause,\
_cmd_set_volume,_cmd_set_shader,_cmd_cheat_set_code,_cmd_cheat_get_code,_cmd_cheat_toggle_index,_cmd_cheat_get_code_state,_cmd_cheat_realloc,\
_cmd_cheat_get_size,_cmd_cheat_apply_cheats,EmscriptenSendCommand,EmscriptenReceiveCommandReply
LIBS := -s USE_ZLIB=1
LDFLAGS := -L. --no-heap-copy -s $(LIBS) -s TOTAL_MEMORY=$(MEMORY) -s NO_EXIT_RUNTIME=0 -s FULL_ES2=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['callMain']" \
-s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \
--js-library emscripten/library_errno_codes.js \
--js-library emscripten/library_rwebcam.js
EXPORTS := callMain,FS,PATH,ERRNO_CODES,ENV,stringToNewUTF8,UTF8ToString,Browser,EmscriptenSendCommand,EmscriptenReceiveCommandReply
ifeq ($(HAVE_RWEBAUDIO), 1)
LDFLAGS += --js-library emscripten/library_rwebaudio.js
DEFINES += -DHAVE_RWEBAUDIO
endif
ifeq ($(HAVE_AL), 1)
LDFLAGS += -lopenal
DEFINES += -DHAVE_AL
ASYNC = 1
LIBS := -s USE_ZLIB=1
CFLAGS := -s USE_ZLIB=1
ifeq ($(HAVE_EXTRA_WASMFS), 1)
LIBS += -lfetchfs.js -lopfs.js
DEFINES += -DHAVE_EXTRA_WASMFS
override HAVE_WASMFS = 1
ifeq ($(PROXY_TO_PTHREAD), 0)
$(error ERROR: HAVE_EXTRA_WASMFS requires PROXY_TO_PTHREAD)
endif
endif
ifneq ($(PTHREAD), 0)
LDFLAGS += -s WASM_MEM_MAX=1073741824 -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD)
CFLAGS += -pthread
HAVE_THREADS=1
else
HAVE_THREADS=0
ifeq ($(HAVE_WASMFS), 1)
LIBS += -s WASMFS -s FORCE_FILESYSTEM=1
endif
ifeq ($(ASYNC), 1)
LDFLAGS += -s ASYNCIFY=$(ASYNC)
# note: real PROXY_TO_PTHREAD is not used here; we do the pthread management ourselves
ifeq ($(PROXY_TO_PTHREAD), 1)
LIBS += -s OFFSCREENCANVAS_SUPPORT
DEFINES += -DPROXY_TO_PTHREAD -DEMSCRIPTEN_STACK_SIZE=$(STACK_SIZE)
override HAVE_THREADS = 1
override WASM_WORKERS = 1
# use the default stack size for the browser thread; the RetroArch thread will be created with the specified stack size
override STACK_SIZE = 4194304
else ifeq ($(HAVE_AL), 1)
override ASYNC = 1
endif
ifeq ($(HAVE_SDL2), 1)
@@ -110,16 +161,119 @@ ifeq ($(HAVE_SDL2), 1)
DEFINES += -DHAVE_SDL2
endif
LDFLAGS := -L. --no-heap-copy -s STACK_SIZE=$(STACK_SIZE) -s INITIAL_MEMORY=$(INITIAL_HEAP) \
-s EXPORTED_RUNTIME_METHODS=$(EXPORTS) -s EXIT_RUNTIME=1 \
-s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="$(EXPORTED_FUNCTIONS)" \
-s MODULARIZE=1 -s EXPORT_ES6=1 -s EXPORT_NAME="libretro_$(subst -,_,$(LIBRETRO))" \
-s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0 \
-s ENVIRONMENT=web,worker -s WASM_BIGINT=1 \
--extern-pre-js emscripten/pre.js \
--js-library emscripten/library_rwebcam.js \
--js-library emscripten/library_platform_emscripten.js
ifeq ($(HAVE_OPENGLES), 1)
ifeq ($(HAVE_OPENGLES3), 1)
LDFLAGS += -s FULL_ES3=1 -s MIN_WEBGL_VERSION=2 -s MAX_WEBGL_VERSION=2
else
LDFLAGS += -s FULL_ES2=1 -s MIN_WEBGL_VERSION=1 -s MAX_WEBGL_VERSION=2
endif
endif
ifeq ($(GL_DEBUG), 1)
LDFLAGS += -s GL_ASSERTIONS=1 -s GL_DEBUG=1
DEFINES += -DHAVE_GL_DEBUG_ES=1
endif
ifeq ($(FS_DEBUG), 1)
LDFLAGS += -s FS_DEBUG=1
endif
ifeq ($(HAVE_RWEBAUDIO), 1)
LDFLAGS += --js-library emscripten/library_rwebaudio.js
DEFINES += -DHAVE_RWEBAUDIO
ifeq ($(PROXY_TO_PTHREAD), 1)
$(error ERROR: RWEBAUDIO is incompatible with PROXY_TO_PTHREAD)
endif
endif
ifeq ($(HAVE_AUDIOWORKLET), 1)
LDFLAGS += -s AUDIO_WORKLET=1
DEFINES += -DHAVE_AUDIOWORKLET
override WASM_WORKERS = 1
ifeq ($(HAVE_THREADS), 0)
$(error ERROR: AUDIOWORKLET requires HAVE_THREADS)
endif
endif
ifeq ($(HAVE_AL), 1)
LDFLAGS += -lopenal
DEFINES += -DHAVE_AL
endif
ifeq ($(PROXY_TO_PTHREAD), 1)
else ifeq ($(ASYNC), 1)
else
DEFINES += -DEMSCRIPTEN_AUDIO_EXTERNAL_BLOCK
ifeq ($(MIN_ASYNC), 1)
DEFINES += -DEMSCRIPTEN_AUDIO_ASYNC_BLOCK
else
DEFINES += -DEMSCRIPTEN_AUDIO_FAKE_BLOCK
endif
ifneq ($(ALLOW_AUDIO_BUSYWAIT), 1)
DEFINES += -DEMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
endif
endif
ifeq ($(ALLOW_AUDIO_BUSYWAIT), 1)
DEFINES += -DEMSCRIPTEN_AUDIO_BUSYWAIT
endif
# explanation of some of these defines:
# EMSCRIPTEN_AUDIO_EXTERNAL_BLOCK: audio blocking occurs in the main loop instead of in the audio driver functions.
# EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK: along with above, enables external blocking in the write function.
# EMSCRIPTEN_AUDIO_BUSYWAIT: write function will busywait. init function may still use an external block.
# EMSCRIPTEN_AUDIO_ASYNC_BLOCK: external block uses emscripten_sleep (requires MIN_ASYNC).
# EMSCRIPTEN_AUDIO_FAKE_BLOCK: external block uses main loop timing (doesn't require asyncify).
# when building with either PROXY_TO_PTHREAD or ASYNC (full asyncify), none of the above are required.
ifeq ($(HAVE_THREADS), 1)
LDFLAGS += -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD_POOL_SIZE)
CFLAGS += -pthread -s SHARED_MEMORY
endif
ifeq ($(WASM_WORKERS), 1)
LDFLAGS += -s WASM_WORKERS=1
endif
ifeq ($(ASYNC), 1)
DEFINES += -DEMSCRIPTEN_ASYNCIFY -DEMSCRIPTEN_FULL_ASYNCIFY
LDFLAGS += -s ASYNCIFY=1 -s ASYNCIFY_STACK_SIZE=8192
ifeq ($(DEBUG), 1)
#LDFLAGS += -s ASYNCIFY_DEBUG=1 # broken?
endif
else ifeq ($(MIN_ASYNC), 1)
DEFINES += -DEMSCRIPTEN_ASYNCIFY -DEMSCRIPTEN_MIN_ASYNCIFY
LDFLAGS += -s ASYNCIFY=1 -s ASYNCIFY_STACK_SIZE=8192 -s ASYNCIFY_IGNORE_INDIRECT=1 -s ASYNCIFY_ADD='$(ASYNCIFY_ADD)' -s ASYNCIFY_REMOVE='$(ASYNCIFY_REMOVE)'
ifeq ($(DEBUG), 1)
LDFLAGS += -s ASYNCIFY_ADVISE #-s ASYNCIFY_DEBUG=1
endif
endif
include Makefile.common
CFLAGS += $(DEF_FLAGS) -Ideps -Ideps/stb
DEF_FLAGS += $(INCLUDE_DIRS) -Ideps -Ideps/stb
libretro :=
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS) -D__STDC_CONSTANT_MACROS
libretro =
libretro_new =
ifeq ($(HAVE_STATIC_DUMMY),1)
DEFINES += -DHAVE_STATIC_DUMMY
else
libretro += libretro_emscripten.bc
libretro = libretro_emscripten.bc
libretro_new = libretro_emscripten.a
endif
ifneq ($(V), 1)
@@ -127,41 +281,45 @@ ifneq ($(V), 1)
endif
ifeq ($(DEBUG), 1)
LDFLAGS += -O0 -g
CFLAGS += -O0 -g
LDFLAGS += -O0 -g -gsource-map -s SAFE_HEAP=2 -s STACK_OVERFLOW_CHECK=2 -s ASSERTIONS=1
# -O0 in cflags gives "too many locals" errors
CFLAGS += -O1 -g -gsource-map
else
LDFLAGS += -O3 -s WASM=1
LDFLAGS += -O3
# WARNING: some optimizations can break some cores (ex: LTO breaks tyrquake)
LDFLAGS += -s PRECISE_F32=$(PRECISE_F32)
ifeq ($(LTO), 1)
LDFLAGS += --llvm-lto 3
LDFLAGS += -flto
endif
CFLAGS += -O3
endif
CFLAGS += -Wall -I. -Ilibretro-common/include -std=gnu99 $(LIBS) #\
# -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_take_screenshot']"
CFLAGS += -Wall -I. -Ilibretro-common/include -Ideps/7zip -std=gnu99
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
all: $(TARGET)
$(TARGET): $(RARCH_OBJ) $(libretro)
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LD) -o $@ $(RARCH_OBJ) $(libretro) $(LIBS) $(LDFLAGS)
$(libretro_new): ;
mv_libretro:
$(Q)mv -f $(libretro) $(libretro_new) || true
$(TARGET): $(RARCH_OBJ) $(libretro_new) mv_libretro
@$(if $(Q), $(shell echo echo "LD $@ \<obj\> $(libretro_new) $(LIBS) $(LDFLAGS)"),)
$(Q)$(LD) -o $@ $(RARCH_OBJ) $(libretro_new) $(LIBS) $(LDFLAGS)
$(OBJDIR)/%.o: %.c
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) $(DEFINES) $(EOPTS) -c -o $@ $<
$(Q)$(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
$(OBJDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CXXFLAGS) $(DEFINES) $(EOPTS) -c -o $@ $<
$(Q)$(CXX) $(CXXFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR)
rm -f $(TARGET)
.PHONY: all clean
.PHONY: all clean mv_libretro
+5
View File
@@ -116,6 +116,7 @@ else ifeq ($(platform), ps3-cobra)
# NGC/Wii - libogc
else ifeq ($(libogc_platform), 1)
EXTERNAL_LIBOGC ?= 0
HAVE_OGG_OGC ?= 0
GX_PTHREAD_LEGACY ?= 1
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
@@ -183,6 +184,10 @@ else ifeq ($(libogc_platform), 1)
endif
endif
ifeq ($(HAVE_OGG_OGC), 1)
LIBS += -L$(DEVKITPRO)/portlibs/ppc/lib -lvorbisfile -lvorbis -logg
endif
ifeq ($(EXTERNAL_LIBOGC), 1)
LIBS += -lfat
endif
+6 -6
View File
@@ -213,21 +213,21 @@ install: $(TARGET)
cp $(TARGET) $(DESTDIR)$(BIN_DIR)
cp tools/cg2glsl.py $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
cp retroarch.cfg $(DESTDIR)$(GLOBAL_CONFIG_DIR)
cp com.libretro.RetroArch.appdata.xml $(DESTDIR)$(DATA_DIR)/metainfo
cp retroarch.desktop $(DESTDIR)$(DATA_DIR)/applications
cp com.libretro.RetroArch.metainfo.xml $(DESTDIR)$(DATA_DIR)/metainfo
cp com.libretro.RetroArch.desktop $(DESTDIR)$(DATA_DIR)/applications
cp docs/retroarch.6 $(DESTDIR)$(MAN_DIR)/man6
cp docs/retroarch-cg2glsl.6 $(DESTDIR)$(MAN_DIR)/man6
cp media/retroarch.svg $(DESTDIR)$(DATA_DIR)/pixmaps
cp media/com.libretro.RetroArch.svg $(DESTDIR)$(DATA_DIR)/pixmaps
cp COPYING $(DESTDIR)$(DOC_DIR)
cp README.md $(DESTDIR)$(DOC_DIR)
chmod 755 $(DESTDIR)$(BIN_DIR)/$(TARGET)
chmod 755 $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
chmod 644 $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
chmod 644 $(DESTDIR)$(DATA_DIR)/applications/retroarch.desktop
chmod 644 $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.appdata.xml
chmod 644 $(DESTDIR)$(DATA_DIR)/applications/com.libretro.RetroArch.desktop
chmod 644 $(DESTDIR)$(DATA_DIR)/metainfo/com.libretro.RetroArch.metainfo.xml
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch.6
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6
chmod 644 $(DESTDIR)$(DATA_DIR)/pixmaps/retroarch.svg
chmod 644 $(DESTDIR)$(DATA_DIR)/pixmaps/com.libretro.RetroArch.svg
@if test -d media/assets && test $(HAVE_ASSETS); then \
echo "Installing media assets..."; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/assets; \
+6 -3
View File
@@ -41,6 +41,7 @@ HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_STATIC_CORES = 1
HAVE_FILTERS_BUILTIN = 1
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
@@ -52,10 +53,12 @@ HAVE_IFINFO = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_STB_FONT = 1
HAVE_CHEEVOS = 1
HAVE_CHD = 0 # disabled due to static libretro-common and libchdr conflicts between different cores
HAVE_CHD = 1
HAVE_STB_VORBIS = 1
HAVE_IBXM = 1
HAVE_CORE_INFO_CACHE = 1
HAVE_CLOUD_SYNC = 1
HAVE_SSL = 1
# RetroArch libnx useful flags
HAVE_THREADS = 1
@@ -126,7 +129,7 @@ APP_ICON := pkg/libnx/retroarch.jpg
#---------------------------------------------------------------------------------
ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -mcpu=cortex-a57+crc+fp+simd
CFLAGS := -g -Wall -O3 -fcommon -ffast-math -ffunction-sections \
CFLAGS := -g -Wall -O3 -fcommon -ffunction-sections \
$(ARCH) $(DEFINES) $(INCLUDE_DIRS) -I$(LIBNX)/include -I$(PORTLIBS)/include/ -include $(LIBNX)/include/switch.h #$(shell $(PORTLIBS)/bin/freetype-config --cflags)
CFLAGS += $(INCLUDE) -DSWITCH=1 -DHAVE_LIBNX=1 -DNXLINK=1 -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_UPDATE_CORE_INFO -DHAVE_STB_FONT #-DHAVE_FREETYPE
@@ -147,7 +150,7 @@ LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-de
# add things from Makefile.common
CFLAGS += $(DEF_FLAGS)
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lm
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lmbedtls -lmbedx509 -lmbedcrypto -lnx -lm
ifeq ($(HAVE_OPENGL), 1)
LIBS := -lEGL -lglapi -ldrm_nouveau $(LIBS)
+31 -5
View File
@@ -105,6 +105,7 @@ HAVE_OZONE = 0
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_XDELTA = 0 # Disabled until we figure out how to include <lzma.h>
HAVE_CHEATS = 1
HAVE_CHEEVOS = 0
HAVE_LIBSHAKE = 0
@@ -117,7 +118,7 @@ TARGET = retroarch
OBJ :=
LINK := $(CXX)
DEF_FLAGS := -march=armv5te -mtune=arm926ej-s -ffast-math -fomit-frame-pointer
DEF_FLAGS := -march=armv5te -mtune=arm926ej-s -fomit-frame-pointer
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DMIYOO=1 -DDINGUX -MMD
DEF_FLAGS += -Wall -Wno-unused-variable -flto
@@ -159,12 +160,36 @@ CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
Q := @
ifneq ($(V),1)
Q := @
endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
all: $(TARGET)
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CPPFLAGS: $(CPPFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
LDFLAGS: $(LDFLAGS)
LIBRARY_DIRS: $(LIBRARY_DIRS)
LIBS: $(LIBS)
LINK: $(LINK)
OBJCFLAGS: $(OBJCFLAGS)
RARCH_OBJ: $(RARCH_OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
@@ -198,9 +223,10 @@ $(OBJDIR)/%.o: %.S $(HEADERS)
$(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
@$(if $(Q), echo $@,)
$(Q)rm -rf $(OBJDIR_BASE)
$(Q)rm -f $(TARGET)
$(Q)rm -f *.d
.PHONY: all clean
+2 -2
View File
@@ -25,11 +25,11 @@ HAVE_D3D12 := 1
HAVE_CG := 1
HAVE_OPENGL := 1
HAVE_OPENGL1 := 1
HAVE_GFX_WIDGETS := 1
HAVE_GFX_WIDGETS := 1
HAVE_VULKAN := 1
HAVE_XAUDIO := 1
HAVE_XINPUT := 1
HAVE_WASAPI := 0
HAVE_WASAPI := 1
HAVE_THREAD_STORAGE := 1
HAVE_WINMM := 1
+45 -8
View File
@@ -58,6 +58,7 @@ LIBS := $(WHOLE_START) $(LIB_CORE) $(WHOLE_END)
libogc_platform := 1
EXTERNAL_LIBOGC ?= 0
HAVE_OGG_OGC ?= 0
GX_PTHREAD_LEGACY ?= 1
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
@@ -102,6 +103,10 @@ ifeq ($(BIG_STACK), 1)
LDFLAGS += -T bootstrap/gx/ogc.ld
endif
ifeq ($(HAVE_OGG_OGC), 1)
LIBS += -L$(DEVKITPRO)/portlibs/ppc/lib -lvorbisfile -lvorbis -logg
endif
ifeq ($(EXTERNAL_LIBOGC), 1)
LIBS += -lfat
endif
@@ -129,6 +134,7 @@ HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_CONFIGFILE := 1
HAVE_PATCH := 1
HAVE_XDELTA := 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_CHEATS := 1
HAVE_SCREENSHOTS := 1
HAVE_REWIND := 1
@@ -232,34 +238,65 @@ else
CFLAGS += -O3
endif
ifneq ($(V),1)
Q := @
endif
OBJOUT = -o
LINKOUT = -o
LINK = $(CXX)
all: $(EXT_TARGET)
define INFO
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
LD: $(LD)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
LINK: $(LINK)
LINKOUT: $(LINKOUT)
OBJ: $(OBJ)
OBJOUT: $(OBJOUT)
PLATEXTRA: $(PLATEXTRA)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
%.dol: %.elf
$(ELF2DOL) $< $@
$(EXT_INTER_TARGET): $(OBJ)
$(LINK) $(LINKOUT)$@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(PLATEXTRA) $(LIBS)
@$(if $(Q), $(shell echo echo LINK $@),)
$(Q)$(LINK) $(LINKOUT)$@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(PLATEXTRA) $(LIBS)
%.o: %.c
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.cpp
$(CXX) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.S
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.binobj: %.bin
$(LD) -r -b binary $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LD) -r -b binary $(OBJOUT)$@ $<
clean:
rm -f $(EXT_TARGET)
rm -f $(EXT_INTER_TARGET)
rm -f $(OBJ)
@$(if $(Q), echo $@,)
$(Q)rm -f $(EXT_TARGET)
$(Q)rm -f $(EXT_INTER_TARGET)
$(Q)rm -f $(OBJ)
.PHONY: clean
+37 -8
View File
@@ -176,38 +176,67 @@ else
CXXFLAGS += -O3
endif
ifneq ($(V),1)
Q := @
endif
TARGETS := $(TARGET).self
all: $(TARGETS)
define INFO
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
LD: $(LD)
LDFLAGS: $(LDFLAGS)
LIBS: $(LIBS)
OBJ: $(OBJ)
OBJOUT: $(OBJOUT)
ORBISDEV: $(ORBISDEV)
TARGET: $(TARGET)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
OBJOUT = -o
%.o: %.c
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CXXFLAGS) -c $(OBJOUT)$@ $<
%.o: %.S
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.s
$(CC) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c $(OBJOUT)$@ $<
$(TARGET).elf: $(OBJ)
$(LD) $(ORBISDEV)/usr/lib/crt0.o $(OBJ) $(LDFLAGS) $(LIBS) -o $(TARGET).elf
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LD) $(ORBISDEV)/usr/lib/crt0.o $(OBJ) $(LDFLAGS) $(LIBS) -o $(TARGET).elf
$(TARGET).oelf: $(TARGET).elf
@orbis-elf-create $(TARGET).elf $(TARGET).oelf
orbis-elf-create $(TARGET).elf $(TARGET).oelf
$(TARGET).self: $(TARGET).oelf
python $(ORBISDEV)/bin/make_fself.py --auth-info $(AUTH_INFO) $(TARGET).oelf $(TARGET).self
install:
@cp $(TARGET).self $(SELF_PATH_INSTALL)/homebrew.self
cp $(TARGET).self $(SELF_PATH_INSTALL)/homebrew.self
@echo "Installed!"
clean:
rm -f $(OBJ) $(TARGET).elf $(TARGET).oelf $(TARGET).self
$(Q)rm -f $(OBJ) $(TARGET).elf $(TARGET).oelf $(TARGET).self
.PHONY: clean all
+41 -3
View File
@@ -54,6 +54,7 @@ else
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_PATCH = 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_CHEATS = 1
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
@@ -82,6 +83,10 @@ ifeq ($(strip $(PS2SDK)),)
$(error "Please set PS2SDK in your environment. export PS2SDK=<path to>ps2sdk")
endif
ifneq ($(V),1)
Q := @
endif
INCDIR = -I$(PS2DEV)/gsKit/include -I$(PS2SDK)/ports/include
INCDIR += -Ilibretro-common/include -Ideps -Ideps/stb -Ideps/7zip
@@ -89,7 +94,7 @@ LDFLAGS += -L$(PS2DEV)/gsKit/lib -L$(PS2SDK)/ports/lib -L.
# Lib cdvd is needed to get proper time
LIBS += -lpatches -lgskit -ldmakit -lps2_drivers -lz -lelf-loader
CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) $(DEFINES) -DPS2 -ffast-math -fsingle-precision-constant
CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) $(DEFINES) -DPS2 -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
EE_OBJS += $(OBJ)
@@ -105,8 +110,25 @@ EE_GPVAL = $(GPVAL)
all: $(EE_BIN)
define INFO
EE_BIN: $(EE_BIN)
EE_CC: $(EE_CC)
EE_CFLAGS: $(EE_CFLAGS)
EE_CXX: $(EE_CXX)
EE_CXXFLAGS: $(EE_CXXFLAGS)
EE_INCS: $(EE_INCS)
EE_OBJS: $(EE_OBJS)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
clean:
rm -f $(EE_BIN) $(EE_OBJS)
@$(if $(Q), $(shell echo echo RM $<),)
$(Q)rm -f $(EE_BIN) $(EE_OBJS)
prepare:
ps2client -h $(PS2_IP) reset
@@ -116,7 +138,11 @@ run:
ps2client -h $(PS2_IP) execee host:$(EE_BIN)
sim:
PCSX2 --elf=$(PWD)/$(EE_BIN) --nogui
ifeq ($(shell uname), Darwin)
/Applications/PCSX2.app/Contents/MacOS/PCSX2 -elf $(PWD)/$(EE_BIN)
else
PCSX2 -elf $(PWD)/$(EE_BIN) -nogui
endif
debug: clean all run
@@ -126,3 +152,15 @@ release: all
#Include preferences
include $(PS2SDK)/samples/Makefile.pref
include $(PS2SDK)/samples/Makefile.eeglobal_cpp
%.o: %.c
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(EE_CC) $(EE_CFLAGS) $(EE_INCS) -c $< -o $@
%.o: %.cc
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(EE_CXX) $(EE_CXXFLAGS) $(EE_INCS) -c $< -o $@
%.o: %.cpp
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(EE_CXX) $(EE_CXXFLAGS) $(EE_INCS) -c $< -o $@
+1 -1
View File
@@ -21,7 +21,7 @@ endif
INCDIR = -Ilibretro-common/include
INCDIR += -I$(PS2SDK)/ports/include
CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) -ffast-math -fsingle-precision-constant
CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES += -DPS2 -DIS_SALAMANDER -DRARCH_CONSOLE
+34 -7
View File
@@ -6,7 +6,7 @@
ifeq ($(strip $(PSL1GHT)),)
$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
endif
include $(PSL1GHT)/ppu_rules
include version.all
@@ -30,10 +30,17 @@ CORE_PATH = pkg/psl1ght/pkg/USRDIR/cores/CORE.SELF
INCLUDE += -I. -Ideps -Ideps/stb -Ilibretro-common/include/compat/zlib -Ilibretro-common/include $(LIBPSL1GHT_INC) -Iinclude -Idefines -I$(PORTLIBS)/include -I$(PORTLIBS)/include/freetype2
LIBDIRS += -L. -L$(PORTLIBS)/lib
ifeq ($(HAVE_STATIC_DUMMY),1)
DEFINES += -DHAVE_STATIC_DUMMY
LIBS :=
else
LIBS := -lretro_psl1ght
endif
MACHDEP := -D__PSL1GHT__ -D__PS3__ -mcpu=cell
CFLAGS += -Wall $(MACHDEP) $(INCLUDE)
CFLAGS += -Wall $(DEFINES) $(MACHDEP) $(INCLUDE)
LDFLAGS := $(MACHDEP)
LIBS := -lretro_psl1ght -lrt -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl -lsysfs -lfreetype -lcamera -lgem -lspurs
LIBS += -lrt -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl -lsysfs -lfreetype -lcamera -lgem -lspurs
# system platform
system_platform = unix
@@ -119,13 +126,32 @@ else
CXXFLAGS += -03 -g
endif
ifneq ($(V),1)
Q := @
endif
all: $(SELF_TARGET)
define INFO
CXX: $(CXX)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
OBJ: $(OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
$(ELF_TARGET): $(OBJ)
$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS)
create-core: $(SELF_TARGET)
cp $(SELF_TARGET) $(CORE_PATH)
cp $(SELF_TARGET) $(CORE_PATH)
pkg: create-core
$(PKG) --contentid $(CONTENTID) pkg/psl1ght/pkg/ $(PACKAGE_BASENAME).pkg
@@ -133,7 +159,8 @@ pkg: create-core
# $(PACKAGE_FINALIZE) $(PACKAGE_BASENAME).gnpdrm.pkg
clean:
rm -f $(ELF_TARGET)
rm -f $(OBJ)
@$(if $(Q), echo $@,)
$(Q)rm -f $(ELF_TARGET)
$(Q)rm -f $(OBJ)
.PHONY: clean
+2 -2
View File
@@ -6,7 +6,7 @@ HAVE_THREADS ?= 1
BIG_STACK ?= 0
LOAD_WITHOUT_CORE_INFO ?= 0
HAVE_STATIC_DUMMY ?= 0
HAVE_XDELTA ?= 1
TARGET = retroarchpsp
ifeq ($(DEBUG), 1)
@@ -16,7 +16,7 @@ else
endif
INCDIR = deps deps/stb deps/7zip libretro-common/include libretro-common/include/compat/zlib
CFLAGS = $(OPTIMIZE_LV) -ffast-math -fsingle-precision-constant
CFLAGS = $(OPTIMIZE_LV) -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP \
+1 -1
View File
@@ -12,7 +12,7 @@ else
endif
INCDIR = $(PSPPATH)/include libretro-common/include
CFLAGS = $(OPTIMIZE_LV) -ffast-math -fsingle-precision-constant
CFLAGS = $(OPTIMIZE_LV) -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP -DIS_SALAMANDER -DRARCH_CONSOLE
+32 -7
View File
@@ -107,6 +107,7 @@ HAVE_OZONE = 0
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_XDELTA = 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_CHEATS = 1
HAVE_CHEEVOS = 0
HAVE_LIBSHAKE = 0
@@ -119,7 +120,7 @@ OPK_NAME = retroarch_retrofw.opk
OBJ :=
LINK := $(CXX)
DEF_FLAGS := -march=mips32 -mtune=mips32 -mhard-float -ffast-math -fomit-frame-pointer
DEF_FLAGS := -march=mips32 -mtune=mips32 -mhard-float -fomit-frame-pointer
DEF_FLAGS += -mplt -mno-shared
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DDINGUX=1 -DRETROFW=1 -MMD
@@ -163,7 +164,9 @@ CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
Q := @
ifneq ($(V),1)
Q := @
endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
@@ -181,9 +184,30 @@ X-OD-NeedsDownscaling=true
endef
export DESKTOP_ENTRY
all: $(TARGET) opk
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CPPFLAGS: $(CPPFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
LDFLAGS: $(LDFLAGS)
LIBRARY_DIRS: $(LIBRARY_DIRS)
LIBS: $(LIBS)
LINK: $(LINK)
OBJCFLAGS: $(OBJCFLAGS)
RARCH_OBJ: $(RARCH_OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
@@ -213,10 +237,11 @@ $(OBJDIR)/%.o: %.S $(HEADERS)
$(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
rm -rf $(OPK_NAME)
@$(if $(Q), echo $@,)
$(Q)rm -rf $(OBJDIR_BASE)
$(Q)rm -f $(TARGET)
$(Q)rm -f *.d
$(Q)rm -rf $(OPK_NAME)
opk: $(TARGET)
echo "$$DESKTOP_ENTRY" > default.retrofw.desktop
+31 -5
View File
@@ -107,6 +107,7 @@ HAVE_OZONE = 0
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_XDELTA = 0 # Disabled until we figure out how to include <lzma.h>
HAVE_CHEATS = 1
HAVE_CHEEVOS = 0
HAVE_LIBSHAKE = 0
@@ -165,7 +166,9 @@ CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
Q := @
ifneq ($(V),1)
Q := @
endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
@@ -185,6 +188,28 @@ export DESKTOP_ENTRY
all: $(TARGET) opk
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CPPFLAGS: $(CPPFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
LDFLAGS: $(LDFLAGS)
LIBRARY_DIRS: $(LIBRARY_DIRS)
LIBS: $(LIBS)
LINK: $(LINK)
OBJCFLAGS: $(OBJCFLAGS)
RARCH_OBJ: $(RARCH_OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
@@ -214,10 +239,11 @@ $(OBJDIR)/%.o: %.S $(HEADERS)
$(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
rm -rf $(OPK_NAME)
@$(if $(Q), echo $@,)
$(Q)rm -rf $(OBJDIR_BASE)
$(Q)rm -f $(TARGET)
$(Q)rm -f *.d
$(Q)rm -rf $(OPK_NAME)
opk: $(TARGET)
echo "$$DESKTOP_ENTRY" > default.rs90.desktop
+48 -15
View File
@@ -84,6 +84,7 @@ else
HAVE_GFX_WIDGETS := 1
HAVE_CONFIGFILE := 1
HAVE_PATCH := 1
HAVE_XDELTA := 1 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_CHEATS := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
@@ -137,7 +138,7 @@ ifeq ($(HAVE_VITAGLES), 1)
ARCHFLAGS += -DSCE_LIBC_SIZE=$(SCE_LIBC_SIZE)
endif
CFLAGS += $(ARCHFLAGS) -mword-relocations -fno-optimize-sibling-calls
CFLAGS += $(ARCHFLAGS) -mword-relocations
ifeq ($(DEBUG), 1)
CFLAGS += -g -Og
@@ -146,9 +147,9 @@ else
endif
ASFLAGS := $(CFLAGS)
LDFLAGS := -Wl,-q
LDFLAGS := -Wl,-q,--pic-veneer
CFLAGS += -Wall -ffast-math
CFLAGS += -Wall
CFLAGS += -DRARCH_INTERNAL -DHAVE_SCREENSHOTS -DRARCH_CONSOLE
CFLAGS += -DHAVE_DSP_FILTER
CFLAGS += -DHAVE_VIDEO_FILTER
@@ -189,6 +190,10 @@ else
LIBS += -lretro_vita
endif
ifneq ($(V),1)
Q := @
endif
LIBS += $(WHOLE_END) $(VITA_LIBS) -lm -lc
TARGETS := $(TARGET).vpk
@@ -198,25 +203,51 @@ POSTCOMPILE = mv -f $*.Tdepend $*.depend
all: $(TARGETS)
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEPFLAGS: $(DEPFLAGS)
INCDIRS: $(INCDIRS)
LD: $(LD)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
OBJ: $(OBJ)
POSTCOMPILE: $(POSTCOMPILE)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
%.o: %.cpp
%.o: %.cpp %.depend
$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS) $(DEPFLAGS)
$(Q)$(POSTCOMPILE)
%.o: %.c
%.o: %.c %.depend
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) $(DEPFLAGS)
$(Q)$(POSTCOMPILE)
%.o: %.S
%.o: %.S %.depend
$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(Q)$(POSTCOMPILE)
%.o: %.s
%.o: %.s %.depend
$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(Q)$(POSTCOMPILE)
%.depend: ;
@@ -227,7 +258,8 @@ liblibScePiglet_stub.a:
cp deps/Pigs-In-A-Blanket/piglet_stub/libScePiglet/liblibScePiglet_stub.a .
$(TARGET).elf: $(OBJ) liblibScePiglet_stub.a
$(LD) $(OBJ) $(LDFLAGS) $(LIBDIRS) $(LIBS) -o $@
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LD) $(OBJ) $(LDFLAGS) $(LIBDIRS) $(LIBS) -o $@
%.velf: %.elf
cp $< $<.unstripped.elf
@@ -242,9 +274,10 @@ $(TARGET).elf: $(OBJ) liblibScePiglet_stub.a
vita-pack-vpk -s param.sfo -b $< $@
clean:
rm -f $(OBJ) $(TARGET).elf $(TARGET).elf.unstripped.elf $(TARGET).velf $(TARGET).self param.sfo $(TARGET).vpk
rm -rf deps/Pigs-In-A-Blanket/piglet_stub/libScePiglet
rm -f $(OBJ:.o=.depend)
@$(if $(Q), echo $@,)
$(Q)rm -f $(OBJ) $(TARGET).elf $(TARGET).elf.unstripped.elf $(TARGET).velf $(TARGET).self param.sfo $(TARGET).vpk
$(Q)rm -rf deps/Pigs-In-A-Blanket/piglet_stub/libScePiglet
$(Q)rm -f $(OBJ:.o=.depend)
# Useful for developers
vpksend: $(TARGET).vpk
+1 -1
View File
@@ -14,7 +14,7 @@ PREFIX = arm-vita-eabi
CC = $(PREFIX)-gcc
INCDIR = libretro-common/include
CFLAGS = -Wl,-q $(OPTIMIZE_LV) -I$(INCDIR) -std=gnu99 -mfloat-abi=hard -ffast-math -fsingle-precision-constant -mword-relocations
CFLAGS = -Wl,-q $(OPTIMIZE_LV) -I$(INCDIR) -std=gnu99 -mfloat-abi=hard -fsingle-precision-constant -mword-relocations
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DVITA -DIS_SALAMANDER -DRARCH_CONSOLE
+327 -245
View File
@@ -1,245 +1,327 @@
include version.all
$(call assert,$(call seq,$(TARGET_PREFIX),arm-webos-linux-gnueabi-),webOS SDK isn't setup properly. See https://github.com/webosbrew/meta-lg-webos-ndk#compile-program-by-command-line)
WEBOS_FREETYPE_CONFIG ?= $(SDKTARGETSYSROOT)/usr/bin/freetype-config
WEBOS_INC_DIR ?= $(SDKTARGETSYSROOT)/usr/include
WEBOS_LIB_DIR ?= $(SDKTARGETSYSROOT)/usr/lib
#########################
#########################
PACKAGE_NAME = com.retroarch
PACKAGE_VERSION := $(patsubst "%",%,$(RARCH_VERSION))
DEBUG ?= 0
HAVE_SCREENSHOTS = 1
HAVE_REWIND = 1
HAVE_7ZIP = 1
HAVE_ACCESSIBILITY = 1
HAVE_AL = 0
# ALSA freezes when switching back from menu
HAVE_ALSA = 0
HAVE_ANGLE = 0
HAVE_AUDIOIO = 0
HAVE_AUDIOMIXER = 1
HAVE_BLISSBOX = 0
HAVE_BSV_MOVIE = 1
HAVE_BUILTINBEARSSL = 0
HAVE_BUILTINFLAC = 1
HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_FILTERS_BUILTIN = 1
HAVE_BUILTINMBEDTLS = 1
HAVE_BUILTINZLIB = 1
HAVE_C99 = 1
HAVE_CC = 1
HAVE_CC_RESAMPLER = 1
HAVE_NEAREST_RESAMPLER = 1
HAVE_CHD = 1
HAVE_COMMAND = 1
HAVE_CXX = 1
HAVE_DR_MP3 = 1
HAVE_DYNAMIC = 1
HAVE_DYLIB = 1
HAVE_EGL = 0
HAVE_FREETYPE = 0
HAVE_GDI = 1
HAVE_GETADDRINFO = 1
HAVE_GETOPT_LONG = 1
HAVE_GLSL = 1
HAVE_GLSLANG = 0
HAVE_GLSLANG_HLSL = 0
HAVE_GLSLANG_OGLCOMPILER = 0
HAVE_GLSLANG_OSDEPENDENT = 0
HAVE_GLSLANG_SPIRV = 0
HAVE_GLSLANG_SPIRV_TOOLS = 0
HAVE_GLSLANG_SPIRV_TOOLS_OPT = 0
HAVE_HID = 1
HAVE_IBXM = 1
HAVE_IMAGEVIEWER = 1
HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_MENU = 1
HAVE_MENU_COMMON = 1
HAVE_NEON = 1
HAVE_NETWORKING = 1
HAVE_IFINFO = 1
HAVE_NETWORK_CMD = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_NETWORKGAMEPAD = 1
HAVE_GFX_WIDGETS = 1
HAVE_MMAP = 1
HAVE_ONLINE_UPDATER = 1
HAVE_OPENDINGUX_FBDEV = 0
HAVE_OPENGL = 0
HAVE_OPENGL1 = 0
HAVE_OPENGL_CORE = 0
HAVE_OPENGLES = 1
HAVE_OPENGLES3 = 0
HAVE_OPENGLES3_1 = 0
HAVE_OPENGLES3_2 = 0
HAVE_OPENSSL = 0
HAVE_OVERLAY = 1
HAVE_PULSE = 1
HAVE_RBMP = 1
HAVE_RJPEG = 1
HAVE_RPILED = 0
HAVE_RPNG = 1
HAVE_RUNAHEAD = 1
HAVE_SDL = 0
HAVE_SDL2 = 1
HAVE_SHADERPIPELINE = 1
HAVE_STB_FONT = 1
HAVE_STB_IMAGE = 1
HAVE_STB_VORBIS = 1
HAVE_STDIN_CMD = 1
HAVE_STRCASESTR = 1
HAVE_THREADS = 1
HAVE_UDEV = 0
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
HAVE_XMB = 1
HAVE_OZONE = 1
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_CHEATS = 1
HAVE_CHEEVOS = 1
HAVE_LIBSHAKE = 1
HAVE_UPDATE_ASSETS = 1
HAVE_UPDATE_CORES = 1
HAVE_UPDATE_CORE_INFO = 1
HAVE_CORE_INFO_CACHE = 1
OS = Linux
TARGET = retroarch
OBJ :=
LINK := $(CXX)
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DWEBOS=1 -MMD
DEF_FLAGS += -Wall -Wno-unused-variable
LIBS := -ldl -lz -lrt -pthread
CFLAGS :=
CXXFLAGS := -fno-exceptions -fno-rtti -std=c++11 -D__STDC_CONSTANT_MACROS
ASFLAGS :=
LDFLAGS := -Wl,--gc-sections
INCLUDE_DIRS = -I$(WEBOS_INC_DIR)
LIBRARY_DIRS = -L$(WEBOS_LIB_DIR)
DEFINES := -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 -UHAVE_STATIC_DUMMY
DEFINES += -DHAVE_C99=1 -DHAVE_CXX=1 -D_GNU_SOURCE
DEFINES += -DHAVE_GETOPT_LONG=1 -DHAVE_STRCASESTR=1 -DHAVE_DYNAMIC=1
DEFINES += -DHAVE_FILTERS_BUILTIN
DEFINES += -DHAVE_SDL2
DEFINES += -DHAVE_PULSE
DEFINES += -DHAVE_NETWORKING -DHAVE_IFINFO -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES
DEFINES += -DHAVE_UPDATE_CORE_INFO
SDL2_CFLAGS := $(shell pkg-config --cflags sdl2)
SDL2_LIBS := $(shell pkg-config --libs sdl2)
OPENGLES_LIBS = -lGLESv2
PULSE_LIBS = $(shell pkg-config --libs libpulse)
MMAP_LIBS = -lc
NEON_CFLAGS = -mfpu=neon
NEON_ASFLAGS = -mfpu=neon
NETWORKING_LIBS = -lc
OBJDIR_BASE := obj-unix
ifeq ($(DEBUG), 1)
OBJDIR := $(OBJDIR_BASE)/debug
DEF_FLAGS += -O0 -g -DDEBUG -D_DEBUG
else
OBJDIR := $(OBJDIR_BASE)/release
DEF_FLAGS += -O2 -DNDEBUG
endif
include Makefile.common
DEF_FLAGS += $(INCLUDE_DIRS)
LDFLAGS += $(CFLAGS) $(CXXFLAGS) $(DEF_FLAGS)
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
Q := @
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
define APPINFO
{
"id": "$(PACKAGE_NAME)",
"version": "$(PACKAGE_VERSION)",
"vendor": "webosbrew.org",
"title": "RetroArch",
"icon": "icon160.png",
"main": "retroarch",
"iconColor": "#333333",
"type": "native",
"appDescription": "Emulation frontend"
}
endef
export APPINFO
all: $(TARGET) ipk
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
$(TARGET): $(RARCH_OBJ)
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LINK) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LIBRARY_DIRS)
$(OBJDIR)/%.o: %.c
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c -o $@ $<
$(OBJDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.m
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo OBJC $<),)
$(Q)$(CXX) $(OBJCFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.S $(HEADERS)
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo AS $<),)
$(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
rm -rf webos/*.ipk
rm -rf webos/dist
ipk: $(TARGET)
rm -rf webos/dist
mkdir -p webos/dist/lib
echo "$$APPINFO" > webos/dist/appinfo.json
cp -t webos/dist -vf $(TARGET) webos/icon160.png
cp -t webos/dist/lib -vf $(WEBOS_LIB_DIR)/libstdc++.so.6
$(STRIP) webos/dist/$(TARGET)
cd webos && ares-package dist
install: ipk
ares-install webos/$(PACKAGE_NAME)_$(PACKAGE_VERSION)_$(ARCH).ipk
launch: install
ares-launch com.retroarch
.PHONY: all clean ipk
print-%:
@echo '$*=$($*)'
include version.all
ifneq ($(filter $(CROSS_COMPILE),arm-webos-linux-gnueabi- aarch64-webos-linux-gnu-),$(CROSS_COMPILE))
$(error You need webOS toolchain to build this. See https://github.com/webosbrew/native-toolchain)
endif
ifdef SDKTARGETSYSROOT
$(warning "OE-based toolchain isn't supported anymore. Please use https://github.com/webosbrew/native-toolchain")
STAGING_DIR = $(SDKTARGETSYSROOT)
else ifndef STAGING_DIR
$(error "Can't find buildroot based toolchain. Please use https://github.com/webosbrew/native-toolchain")
endif
WEBOS_FREETYPE_CONFIG ?= $(STAGING_DIR)/usr/bin/freetype-config
WEBOS_INC_DIR ?= $(STAGING_DIR)/usr/include
WEBOS_USR_LIB_DIR ?= $(STAGING_DIR)/usr/lib
WEBOS_LIB_DIR ?= $(STAGING_DIR)/lib
ADD_SDL2_LIB ?= 0
SDL2_PREBUILT_ARCHIVE ?= https://github.com/webosbrew/SDL-webOS/releases/download/release-2.30.12-webos.1/SDL2-2.30.12-webos-abi.tar.gz
#########################
#########################
APP_PACKAGE_NAME ?= com.retroarch.webos
IPK_VERSION := $(shell grep '#define PACKAGE_VERSION' version.all | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/')
DEBUG ?= 0
HAVE_CLOUDSYNC = 1
HAVE_SCREENSHOTS = 1
HAVE_REWIND = 1
HAVE_7ZIP = 1
HAVE_ACCESSIBILITY = 1
HAVE_AL = 0
# ALSA freezes when switching back from menu
HAVE_ALSA = 0
HAVE_ANGLE = 0
HAVE_AUDIOIO = 0
HAVE_AUDIOMIXER = 1
HAVE_BLISSBOX = 0
HAVE_BSV_MOVIE = 1
HAVE_BUILTINBEARSSL = 0
HAVE_BUILTINFLAC = 1
HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_FILTERS_BUILTIN = 1
HAVE_BUILTINMBEDTLS = 1
HAVE_BUILTINZLIB = 1
HAVE_C99 = 1
HAVE_CC = 1
HAVE_CC_RESAMPLER = 1
HAVE_NEAREST_RESAMPLER = 1
HAVE_CHD = 1
HAVE_COMMAND = 1
HAVE_CXX = 1
HAVE_DR_MP3 = 1
HAVE_DYNAMIC = 1
HAVE_DYLIB = 1
HAVE_EGL = 0
HAVE_FREETYPE = 1
HAVE_GDI = 0
HAVE_GETADDRINFO = 1
HAVE_GETOPT_LONG = 1
HAVE_GLSL = 1
HAVE_GLSLANG = 0
HAVE_GLSLANG_HLSL = 0
HAVE_GLSLANG_OGLCOMPILER = 0
HAVE_GLSLANG_OSDEPENDENT = 0
HAVE_GLSLANG_SPIRV = 0
HAVE_GLSLANG_SPIRV_TOOLS = 0
HAVE_GLSLANG_SPIRV_TOOLS_OPT = 0
HAVE_HID = 1
HAVE_IBXM = 1
HAVE_IMAGEVIEWER = 1
HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_MENU = 1
HAVE_MENU_COMMON = 1
HAVE_NEON = 0
HAVE_NETWORKING = 1
HAVE_IFINFO = 1
HAVE_NETWORK_CMD = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_NETWORKGAMEPAD = 1
HAVE_GFX_WIDGETS = 1
HAVE_MMAP = 1
HAVE_ONLINE_UPDATER = 1
HAVE_OPENDINGUX_FBDEV = 0
HAVE_OPENGL = 0
HAVE_OPENGL1 = 0
HAVE_OPENGL_CORE = 0
HAVE_OPENGLES = 1
HAVE_OPENGLES3 = 0
HAVE_OPENGLES3_1 = 0
HAVE_OPENGLES3_2 = 0
HAVE_OPENSSL = 0
HAVE_OVERLAY = 1
HAVE_PULSE = 1
HAVE_RBMP = 1
HAVE_RJPEG = 1
HAVE_RPILED = 0
HAVE_RPNG = 1
HAVE_RUNAHEAD = 1
HAVE_SDL = 0
HAVE_SDL2 = 1
HAVE_SHADERPIPELINE = 1
HAVE_STB_FONT = 0
HAVE_STB_IMAGE = 1
HAVE_STB_VORBIS = 1
HAVE_STDIN_CMD = 1
HAVE_STRCASESTR = 1
HAVE_THREADS = 1
HAVE_UDEV = 0
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
HAVE_XMB = 1
HAVE_OZONE = 1
HAVE_ZLIB = 1
HAVE_ZSTD = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_CHEATS = 1
HAVE_CHEEVOS = 1
HAVE_LIBSHAKE = 1
HAVE_UPDATE_ASSETS = 1
HAVE_UPDATE_CORES = 1
HAVE_UPDATE_CORE_INFO = 1
HAVE_CORE_INFO_CACHE = 1
OS = Linux
TARGET = retroarch
OBJ :=
LINK := $(CC)
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DWEBOS=1 -MMD
DEF_FLAGS += -Wall -Wno-unused-variable
LIBS := -ldl -lz -lrt -pthread
ifeq ($(findstring arm64,$(ARCH)),arm64)
ARCHFLAGS := -mcpu=cortex-a53
else
ARCHFLAGS := -mcpu=cortex-a9 -mtune=cortex-a53 -mfloat-abi=softfp
HAVE_NEON = 1
endif
CFLAGS := $(ARCHFLAGS)
CXXFLAGS := $(ARCHFLAGS) -fno-exceptions -fno-rtti -std=c++11 -D__STDC_CONSTANT_MACROS
ASFLAGS := $(ARCHFLAGS)
LDFLAGS := -Wl,-rpath=\$$ORIGIN/lib,--gc-sections
INCLUDE_DIRS = -I$(WEBOS_INC_DIR)
LIBRARY_DIRS = -L$(WEBOS_USR_LIB_DIR)
DEFINES := -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 -UHAVE_STATIC_DUMMY
DEFINES += -DHAVE_C99=1 -DHAVE_CXX=1 -D_GNU_SOURCE
DEFINES += -DHAVE_GETOPT_LONG=1 -DHAVE_STRCASESTR=1 -DHAVE_DYNAMIC=1
DEFINES += -DHAVE_FILTERS_BUILTIN
DEFINES += -DHAVE_SDL2
DEFINES += -DHAVE_PULSE
DEFINES += -DHAVE_NETWORKING -DHAVE_IFINFO -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES
DEFINES += -DHAVE_NETWORKGAMEPAD
DEFINES += -DHAVE_FREETYPE
DEFINES += -DHAVE_UPDATE_CORE_INFO
ifneq (,$(filter 1,$(HAVE_OPENGLES3) $(HAVE_OPENGLES3_1) $(HAVE_OPENGLES3_2)))
DEFINES += -DHAVE_OPENGLES3
endif
ifeq ($(HAVE_OPENGLES3_1),1)
DEFINES += -DHAVE_OPENGLES3_1
endif
ifeq ($(HAVE_OPENGLES3_2),1)
DEFINES += -DHAVE_OPENGLES3_2
endif
PKG_CONFIG=pkg-config
SDL2_CFLAGS := $(shell $(PKG_CONFIG) --cflags sdl2)
SDL2_LIBS := $(shell $(PKG_CONFIG) --libs sdl2)
OPENGLES_LIBS = -lGLESv2
PULSE_LIBS = $(shell $(PKG_CONFIG) --libs libpulse)
FREETYPE_CFLAGS := $(shell $(PKG_CONFIG) --cflags freetype2)
FREETYPE_LIBS := $(shell $(PKG_CONFIG) --libs freetype2)
FONTCONFIG_CFLAGS := $(shell $(PKG_CONFIG) --cflags fontconfig)
FONTCONFIG_LIBS := $(shell $(PKG_CONFIG) --libs fontconfig)
MMAP_LIBS = -lc
ifeq ($(HAVE_NEON),1)
NEON_CFLAGS += -mfpu=neon
NEON_ASFLAGS += -mfpu=neon
endif
NETWORKING_LIBS = -lc
OBJDIR_BASE := obj-unix
ifeq ($(DEBUG), 1)
OBJDIR := $(OBJDIR_BASE)/debug
DEF_FLAGS += -O0 -g -DDEBUG -D_DEBUG
else
OBJDIR := $(OBJDIR_BASE)/release
DEF_FLAGS += -O2 -DNDEBUG
endif
include Makefile.common
DEF_FLAGS += $(INCLUDE_DIRS)
LDFLAGS += $(CFLAGS) $(CXXFLAGS) $(DEF_FLAGS)
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
ifneq ($(V),1)
Q := @
endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
define APPINFO
{
"id": "$(APP_PACKAGE_NAME)",
"version": "$(IPK_VERSION)",
"vendor": "webosbrew.org",
"title": "RetroArch",
"icon": "icon160.png",
"main": "retroarch",
"iconColor": "#333333",
"type": "native",
"appDescription": "Emulation frontend",
"cloudgame_active": true,
"useAllMouseButtons": true,
"useAllKeyboardKeys": true
}
endef
export APPINFO
all: $(TARGET) ipk
define INFO
ASFLAGS: $(ASFLAGS)
CC: $(CC)
CFLAGS: $(CFLAGS)
CPPFLAGS: $(CPPFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
LDFLAGS: $(LDFLAGS)
LIBRARY_DIRS: $(LIBRARY_DIRS)
LIBS: $(LIBS)
LINK: $(LINK)
OBJCFLAGS: $(OBJCFLAGS)
RARCH_OBJ: $(RARCH_OBJ)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
$(TARGET): $(RARCH_OBJ)
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LINK) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LIBRARY_DIRS)
$(OBJDIR)/%.o: %.c
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c -o $@ $<
$(OBJDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.m
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo OBJC $<),)
$(Q)$(CXX) $(OBJCFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.S $(HEADERS)
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo AS $<),)
$(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
@$(if $(Q), echo $@,)
$(Q)rm -rf $(OBJDIR_BASE)
$(Q)rm -f $(TARGET)
$(Q)rm -f *.d
$(Q)rm -rf SDL
$(Q)rm -rf webos/*.ipk
$(Q)rm -rf webos/dist
sdl2: $(TARGET)
ifeq ($(ADD_SDL2_LIB), 1)
@echo "Downloading SDL2 prebuilt"
mkdir -p SDL
wget -qO - $(SDL2_PREBUILT_ARCHIVE) | tar -C SDL -zxvf -
endif
ipk: $(TARGET) sdl2
rm -rf webos/dist
mkdir -p webos/dist/lib
echo "$$APPINFO" > webos/dist/appinfo.json
cp -t webos/dist -vf $(TARGET) webos/icon160.png
cp -t webos/dist/lib -vf $(WEBOS_USR_LIB_DIR)/libstdc++.so.6
cp -t webos/dist/lib -vf $(WEBOS_LIB_DIR)/libatomic.so.1
ifeq ($(ADD_SDL2_LIB), 1)
cp -t webos/dist/lib -vf SDL/lib/libSDL2-2.0.so.0
endif
ifneq ($(DEBUG), 1)
$(STRIP) webos/dist/$(TARGET)
endif
cd webos && ares-package dist
install: ipk
ares-install webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(ARCH).ipk
launch: install
ares-launch $(APP_PACKAGE_NAME)
.PHONY: all clean ipk
print-%:
@echo '$*=$($*)'
+39 -7
View File
@@ -1,6 +1,7 @@
ROOT_DIR := .
DEPS_DIR := $(ROOT_DIR)/deps
DEBUG ?= 0
LOAD_WITHOUT_CORE_INFO ?= 0
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0
HAVE_CC_RESAMPLER = 1
@@ -60,6 +61,7 @@ LIBS := $(WHOLE_START) $(LIB_CORE) $(WHOLE_END)
libogc_platform := 1
EXTERNAL_LIBOGC ?= 0
HAVE_OGG_OGC ?= 0
GX_PTHREAD_LEGACY ?= 1
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
@@ -104,6 +106,10 @@ ifeq ($(BIG_STACK), 1)
LDFLAGS += -T bootstrap/gx/rvl.ld
endif
ifeq ($(HAVE_OGG_OGC), 1)
LIBS += -L$(DEVKITPRO)/portlibs/ppc/lib -lvorbisfile -lvorbis -logg
endif
ifeq ($(EXTERNAL_LIBOGC), 1)
LIBS += -lfat
endif
@@ -137,6 +143,7 @@ HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_CONFIGFILE := 1
HAVE_PATCH := 1
HAVE_XDELTA := 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_CHEATS := 1
HAVE_SCREENSHOTS := 1
HAVE_REWIND := 1
@@ -160,8 +167,9 @@ HAVE_XMB := 0
HAVE_OZONE := 0
HAVE_RGUI := 1
HAVE_MATERIALUI := 0
HAVE_CHEEVOS := 1
CFLAGS += -DHAVE_SOCKET_LEGACY
CFLAGS += -DHAVE_SOCKET_LEGACY -DHAVE_CHEEVOS
APP_BOOTER_DIR = wii/app_booter
PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj
@@ -172,6 +180,7 @@ endif
INCLUDE += -I./libretro-common/include \
-Ideps \
-Ideps/rcheevos/include \
-Ideps/stb
CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(PLATCFLAGS) $(INCLUDE)
@@ -257,12 +266,32 @@ else
CFLAGS += -O3
endif
ifeq ($(LOAD_WITHOUT_CORE_INFO),1)
CFLAGS += -DLOAD_WITHOUT_CORE_INFO
endif
ifneq ($(V),1)
Q := @
endif
OBJOUT = -o
LINKOUT = -o
LINK = $(CXX)
all: $(EXT_TARGET)
define INFO
CC: $(CC)
CFLAGS: $(CFLAGS)
OBJOUT: $(OBJOUT)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
%.dol: %.elf
$(ELF2DOL) $< $@
@@ -270,13 +299,15 @@ $(EXT_INTER_TARGET): $(OBJ)
$(LINK) $(LINKOUT)$@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(PLATEXTRA) $(LIBS)
%.o: %.c
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.cpp
$(CXX) $(CFLAGS) -c $(OBJOUT)$@ $<
%.o: %.S
$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
@$(if $(Q), $(shell echo echo CC $<),)
$(Q)$(CC) $(CFLAGS) -c $(OBJOUT)$@ $<
%.binobj: %.bin
$(LD) -r -b binary $(OBJOUT)$@ $<
@@ -286,10 +317,11 @@ $(APP_BOOTER_DIR)/app_booter.bin:
$(MAKE) -C $(APP_BOOTER_DIR)
clean:
rm -f $(EXT_TARGET)
rm -f $(EXT_INTER_TARGET)
rm -f $(OBJ)
$(MAKE) -C $(APP_BOOTER_DIR) clean
@$(if $(Q), echo $@,)
$(Q)rm -f $(EXT_TARGET)
$(Q)rm -f $(EXT_INTER_TARGET)
$(Q)rm -f $(OBJ)
$(Q)$(MAKE) -C $(APP_BOOTER_DIR) clean
.PHONY: clean
+33 -1
View File
@@ -143,6 +143,7 @@ endif
HAVE_RBMP = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_XDELTA = 0 # disabled because <lzma.h> isn't available (or we haven't figured out how to install it)
HAVE_REWIND = 1
HAVE_CHEATS = 1
HAVE_MENU = 1
@@ -202,7 +203,7 @@ INCDIRS += -Iwiiu
INCDIRS += -Iwiiu/include
CFLAGS := -mcpu=750 -meabi -mhard-float
CFLAGS += -ffast-math -Werror=implicit-function-declaration
CFLAGS += -Werror=implicit-function-declaration
CFLAGS += -ffunction-sections -fdata-sections
#CFLAGS += -fomit-frame-pointer -mword-relocations
CFLAGS += -Wall
@@ -303,6 +304,37 @@ DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.depend
all: $(TARGETS)
define INFO
AR: $(AR)
ASFLAGS: $(ASFLAGS)
BUILD_DIR: $(BUILD_DIR)
CC: $(CC)
CFLAGS: $(CFLAGS)
CXX: $(CXX)
CXXFLAGS: $(CXXFLAGS)
DEFINES: $(DEFINES)
DEPFLAGS: $(DEPFLAGS)
ELF2RPL: $(ELF2RPL)
HBL_ELF_LDFLAGS: $(HBL_ELF_LDFLAGS)
HBL_ELF_OBJ: $(HBL_ELF_OBJ)
INCDIRS: $(INCDIRS)
LD: $(LD)
LDFLAGS: $(LDFLAGS)
LIBDIRS: $(LIBDIRS)
LIBS: $(LIBS)
MAKE: $(MAKE)
OBJ: $(OBJ)
RPX_LDFLAGS: $(RPX_LDFLAGS)
RPX_OBJ: $(RPX_OBJ)
TARGET: $(TARGET)
endef
export INFO
info:
ifneq ($(V),1)
@echo "$$INFO"
endif
%: $(BUILD_DIR)/%
cp $< $@
+4 -3
View File
@@ -89,6 +89,7 @@ AVUTIL_LIBS := -lavutil
SWSCALE_LIBS := -lswscale
AVFORMAT_LIBS := -lavformat
SWRESAMPLE_LIBS := -lswresample
AVDEVICE_LIBS := -lavdevice
FFMPEG_LIBS := -lws2_32 -lz
endif
@@ -131,8 +132,8 @@ ifeq ($(DEBUG), 1)
CFLAGS += -O0 -g
CXXFLAGS += -O0 -g
else
CFLAGS += -O3 -ffast-math
CXXFLAGS += -O3 -ffast-math
CFLAGS += -O3
CXXFLAGS += -O3
endif
CFLAGS += $(DEF_FLAGS) -Wall -Wno-unused-result -Wno-unused-variable -I. -Ideps
@@ -169,7 +170,7 @@ $(OBJDIR)/%.o: %.cpp | $(dir $@)
$(OBJDIR)/%.o: %.rc $(HEADERS)
@-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo .
@$(if $(Q), $(shell echo echo WINDRES $<),)
$(Q)$(WINDRES) -o $@ $<
$(Q)$(WINDRES) $(DEFINES) -o $@ $<
clean:
rm -rf $(OBJDIR)
+1 -1
View File
@@ -6,7 +6,7 @@ good fbdev implementation. It is derived from the old Android GLES driver.
It was meant to be used on Cubieboard/Cubieboard2/Cubietruck, but it should not
be used on an Odroid X2/U2/U3 where a superior solution (RetroArch exynos video driver) is available.
Fbdev implementation on Odroid harware is missing WAITFORVSYNC ioctl, so use Exynos driver there.
Fbdev implementation on Odroid hardware is missing WAITFORVSYNC ioctl, so use Exynos driver there.
This driver requires MALI r4p0 binary blobs for fbdev, and a kernel compatible with r4p0 binaries.
+16 -13
View File
@@ -73,21 +73,22 @@ RetroArch has been ported to the following platforms:
- Emscripten (WebAssembly and JavaScript)
- FreeBSD
- Haiku
- LG webOS
- Linux
- Original Microsoft Xbox
- Microsoft Xbox 360 (Libxenon/XeXDK)
- Microsoft Xbox One
- Microsoft Xbox Series S/X
- Miyoo
- NetBSD
- Nintendo 3DS/2DS
- Nintendo GameCube
- Nintendo NES/SNES Classic Edition
- Nintendo Switch
- Nintendo GameCube
- Nintendo Wii
- Nintendo Switch
- Nintendo Wii U
- Nintendo 3DS/2DS
- OpenBSD
- OpenDingux
- Original Microsoft Xbox
- PlayStation2
- PlayStation3
- PlayStation4
@@ -95,21 +96,22 @@ RetroArch has been ported to the following platforms:
- PlayStation Vita
- Raspberry Pi
- ReactOS
- Redox OS
- RetroFW
- RS90
- SerenityOS
- Solaris
- Windows 10
- Windows 11
- Windows 2000
- Windows 7
- Windows 8
- Windows NT 3.5
- Windows 95
- Windows 98
- Windows Millennium
- Windows NT 3.5
- Windows Vista
- Windows 2000
- Windows XP
- Windows Millennium
- Windows Vista
- Windows 7
- Windows 8
- Windows 10
- Windows 11
## Dependencies (PC)
@@ -123,7 +125,7 @@ following dependencies come as recommended:
- GL headers / Vulkan headers
- X11 headers and libs, or EGL/KMS/GBM
OSX port of RetroArch requires latest versions of XCode to build.
OSX port of RetroArch requires latest versions of Xcode to build.
RetroArch can utilize these libraries if enabled:
@@ -140,6 +142,7 @@ RetroArch needs at least one of these audio driver libraries:
- JACK
- SDL
- PulseAudio
- PipeWire
- XAudio2 (Win32, Xbox 360)
- DirectSound (Win32, Xbox 1)
- CoreAudio (OSX, iOS)
+26
View File
@@ -0,0 +1,26 @@
# Security Policy
## Reasonable expectations
RetroArch is a frontend for the libretro API. The main functionality is fulfilled by invoking other binary libraries ("cores") which are not restricted by RetroArch in any way. Cores are able to read/write/delete files, spawn processes, communicate over the network. Also, source for cores is not necessarily in control by libretro team, and core binaries / RetroArch binaries are not signed. For this reason, it is a bad idea to use RetroArch or any other libretro frontend on security critical systems.
Also, RetroArch and cores have been packaged in several ways. Content on the [official download site](https://buildbot.libretro.com/) is built from a direct mirror of the original RetroArch and core repositories, no binaries are reused. Note that source for the core repositories may be outside libretro team control.
## Supported Versions
For most delivery channels, libretro team does not have control over the version. The exceptions are:
- [official download site](https://buildbot.libretro.com/)
- Steam release
- Apple App Store release
- various Android app store releases
- note that Google Play Store version is years behind and can not be updated
You may report vulnerability against any recent version, but be reasonable.
## Reporting a Vulnerability
Please report security vulnerabilities at libretro@gmail.com
## Possible remediation
Due to the variety of delivery channels, RetroArch team can not recall any given version universally. Security fixes are accepted for next release, and notice may be posted in the channels controlled by RetroArch team, depending on the severity assessed by RetroArch team.
+216
View File
@@ -0,0 +1,216 @@
#include "game_ai.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <dlfcn.h>
#endif
#include <retro_assert.h>
#include <compat/strl.h>
#include "../deps/game_ai_lib/GameAI.h"
#define GAME_AI_MAX_PLAYERS 2
void * ga = NULL;
volatile void * g_ram_ptr = NULL;
volatile int g_ram_size = 0;
volatile signed short int g_buttons_bits[GAME_AI_MAX_PLAYERS] = {0};
volatile int g_frameCount = 0;
volatile char game_ai_lib_path[1024] = {0};
volatile char g_game_name[1024] = {0};
retro_log_printf_t g_log = NULL;
#ifdef _WIN32
HINSTANCE g_lib_handle = NULL;
#else
void * g_lib_handle = NULL;
#endif
/* GameAI Lib API*/
create_game_ai_t create_game_ai = NULL;
destroy_game_ai_t destroy_game_ai = NULL;
game_ai_lib_init_t game_ai_lib_init = NULL;
game_ai_lib_think_t game_ai_lib_think = NULL;
game_ai_lib_set_show_debug_t game_ai_lib_set_show_debug = NULL;
game_ai_lib_set_debug_log_t game_ai_lib_set_debug_log = NULL;
/* Helper functions */
void game_ai_debug_log(int level, const char *fmt, ...)
{
va_list vp;
va_start(vp, fmt);
if (g_log)
g_log((enum retro_log_level)level, fmt, vp);
va_end(vp);
}
void array_to_bits_16(volatile signed short *result, const bool b[16])
{
for (int bit = 0; bit <= 15; bit++)
*result |= b[bit] ? (1 << bit) : 0;
}
/* Interface to RA */
signed short int game_ai_input(unsigned int port, unsigned int device,
unsigned int idx, unsigned int id, signed short int result)
{
if (ga && (port < GAME_AI_MAX_PLAYERS))
return g_buttons_bits[port];
return 0;
}
void game_ai_init(void)
{
if (!create_game_ai)
{
#ifdef _WIN32
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
g_lib_handle = LoadLibrary(TEXT("game_ai.dll"));
retro_assert(hinstLib);
char full_module_path[MAX_PATH];
DWORD dwLen = GetModuleFileNameA(g_lib_handle, static_cast<char*>(&full_module_path), MAX_PATH);
if (hinstLib)
{
create_game_ai = (create_game_ai_t) GetProcAddress(hinstLib, "create_game_ai");
retro_assert(create_game_ai);
destroy_game_ai = (destroy_game_ai_t) GetProcAddress(hinstLib, "destroy_game_ai");
retro_assert(destroy_game_ai);
game_ai_lib_init = (game_ai_lib_init_t) GetProcAddress(hinstLib, "game_ai_lib_init");
retro_assert(game_ai_lib_init);
game_ai_lib_think = (game_ai_lib_think_t) GetProcAddress(hinstLib, "game_ai_lib_think");
retro_assert(game_ai_lib_think);
game_ai_lib_set_show_debug = (game_ai_lib_set_show_debug_t) GetProcAddress(hinstLib, "game_ai_lib_set_show_debug");
retro_assert(game_ai_lib_set_show_debug);
game_ai_lib_set_debug_log = (game_ai_lib_set_debug_log_t) GetProcAddress(hinstLib, "game_ai_lib_set_debug_log");
retro_assert(game_ai_lib_set_debug_log);
}
#else
g_lib_handle = dlopen("./libgame_ai.so", RTLD_NOW);
retro_assert(g_lib_handle);
if (g_lib_handle)
{
dlinfo(g_lib_handle, RTLD_DI_ORIGIN, (void *) &game_ai_lib_path);
create_game_ai = (create_game_ai_t)(dlsym(g_lib_handle, "create_game_ai"));
retro_assert(create_game_ai);
destroy_game_ai = (destroy_game_ai_t)(dlsym(g_lib_handle, "destroy_game_ai"));
retro_assert(destroy_game_ai);
game_ai_lib_init = (game_ai_lib_init_t)(dlsym(g_lib_handle, "game_ai_lib_init"));
retro_assert(game_ai_lib_init);
game_ai_lib_think = (game_ai_lib_think_t)(dlsym(g_lib_handle, "game_ai_lib_think"));
retro_assert(game_ai_lib_think);
game_ai_lib_set_show_debug = (game_ai_lib_set_show_debug_t)(dlsym(g_lib_handle, "game_ai_lib_set_show_debug"));
retro_assert(game_ai_lib_set_show_debug);
game_ai_lib_set_debug_log = (game_ai_lib_set_debug_log_t)(dlsym(g_lib_handle, "game_ai_lib_set_debug_log"));
retro_assert(game_ai_lib_set_debug_log);
}
#endif
}
}
void game_ai_shutdown(void)
{
if (g_lib_handle)
{
if (ga)
{
destroy_game_ai(ga);
ga = NULL;
}
#ifdef _WIN32
FreeLibrary(g_lib_handle);
#else
dlclose(g_lib_handle);
#endif
}
}
void game_ai_load(const char * name, void * ram_ptr, int ram_size, retro_log_printf_t log)
{
strcpy((char *) &g_game_name[0], name);
g_ram_ptr = ram_ptr;
g_ram_size = ram_size;
g_log = log;
if (ga)
{
destroy_game_ai(ga);
ga = NULL;
}
}
void game_ai_think(bool override_p1, bool override_p2, bool show_debug,
const void *frame_data, unsigned int frame_width, unsigned int frame_height,
unsigned int frame_pitch, unsigned int pixel_format)
{
if (ga)
game_ai_lib_set_show_debug(ga, show_debug);
if (!ga && g_ram_ptr)
{
ga = create_game_ai((char *) &g_game_name[0]);
retro_assert(ga);
if (ga)
{
char data_path[1024] = {0};
strcpy(&data_path[0], (char *)game_ai_lib_path);
strcat(&data_path[0], "/data/");
strcat(&data_path[0], (char *)g_game_name);
game_ai_lib_init(ga, (void *) g_ram_ptr, g_ram_size);
game_ai_lib_set_debug_log(ga, game_ai_debug_log);
}
}
if (g_frameCount >= (GAMEAI_SKIPFRAMES - 1))
{
if (ga)
{
bool b[GAMEAI_MAX_BUTTONS] = {0};
g_buttons_bits[0]=0;
g_buttons_bits[1]=0;
if (override_p1)
{
game_ai_lib_think(ga, b, 0, frame_data, frame_width, frame_height, frame_pitch, pixel_format);
array_to_bits_16(&g_buttons_bits[0], b);
}
if (override_p2)
{
game_ai_lib_think(ga, b, 1, frame_data, frame_width, frame_height, frame_pitch, pixel_format);
array_to_bits_16(&g_buttons_bits[1], b);
}
}
g_frameCount=0;
}
else
g_frameCount++;
}
+23 -21
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* copyright (c) 2011-2015 - Daniel De Matteis
* copyright (c) 2016-2019 - Brad Parker
* Copyright (C) 2011-2016 - Daniel De Matteis
* Copyright (C) 2021 - David G.F.
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -15,28 +15,30 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __VGA_DEFINES_H
#define __VGA_DEFINES_H
#ifndef RARCH_GAME_AI_H__
#define RARCH_GAME_AI_H__
#define VGA_WIDTH 320
#define VGA_HEIGHT 200
#include <boolean.h>
#include <retro_common_api.h>
typedef struct vga
{
unsigned char *vga_menu_frame;
unsigned char *vga_frame;
#include <libretro.h>
unsigned vga_menu_width;
unsigned vga_menu_height;
unsigned vga_menu_pitch;
unsigned vga_menu_bits;
unsigned vga_video_width;
unsigned vga_video_height;
unsigned vga_video_pitch;
unsigned vga_video_bits;
RETRO_BEGIN_DECLS
bool color;
bool vga_rgb32;
} vga_t;
signed short int game_ai_input(unsigned int port, unsigned int device,
unsigned int idx, unsigned int id, signed short int result);
void game_ai_init(void);
void game_ai_shutdown(void);
void game_ai_load(const char * name, void * ram_ptr,
int ram_size, retro_log_printf_t log);
void game_ai_think(bool override_p1, bool override_p2, bool show_debug,
const void *frame_data, unsigned int frame_w, unsigned int frame_h,
unsigned int frame_pitch, unsigned int pixel_format);
RETRO_END_DECLS
#endif
+8 -14
View File
@@ -21,23 +21,11 @@
RETRO_BEGIN_DECLS
#define AUDIO_CHUNK_SIZE_BLOCKING 512
/* So we don't get complete line-noise when fast-forwarding audio. */
#define AUDIO_CHUNK_SIZE_NONBLOCKING 2048
#define AUDIO_MAX_RATIO 16
#define AUDIO_MIN_RATIO 0.0625
#define AUDIO_MIXER_MAX_STREAMS 16
#define AUDIO_MIXER_MAX_SYSTEM_STREAMS (AUDIO_MIXER_MAX_STREAMS + 8)
/* Fastforward timing calculations running average samples. Helps with a
consistent pitch when fast-forwarding. */
#define AUDIO_FF_EXP_AVG_SAMPLES 16
/* do not define more than (MAX_SYSTEM_STREAMS - MAX_STREAMS) */
/* Do not define more than (MAX_SYSTEM_STREAMS - MAX_STREAMS) */
enum audio_mixer_system_slot
{
AUDIO_MIXER_SYSTEM_SLOT_OK = AUDIO_MIXER_MAX_STREAMS,
@@ -161,7 +149,13 @@ enum audio_driver_state_flags
* @see audio_driver_t::write_avail
* @see audio_driver_t::buffer_size
*/
AUDIO_FLAG_CONTROL = (1 << 5)
AUDIO_FLAG_CONTROL = (1 << 5),
/**
* Indicates that the audio driver is forcing gain to 0.
* Used for temporary rewind and fast-forward muting.
*/
AUDIO_FLAG_MUTED = (1 << 6)
};
typedef struct audio_statistics
+1043 -218
View File
File diff suppressed because it is too large. Load diff
+10 -21
View File
@@ -110,7 +110,7 @@ typedef struct audio_driver
* Unless said otherwise with set_nonblock_state(), all writes
* are blocking, and it should block till it has written all frames.
*/
ssize_t (*write)(void *data, const void *buf, size_t size);
ssize_t (*write)(void *data, const void *s, size_t len);
/**
* Temporarily pauses the audio driver.
@@ -169,8 +169,8 @@ typedef struct audio_driver
typedef struct
{
double source_ratio_original;
double source_ratio_current;
double src_ratio_orig;
double src_ratio_curr;
uint64_t free_samples_count;
@@ -320,17 +320,6 @@ bool audio_driver_start(bool is_shutdown);
bool audio_driver_stop(void);
/**
* If you need to query the size of audio samples,
* use this function instead of checking the flags directly.
*
* @return The size of a single audio sample in bytes,
* as determined by the presence of the \c AUDIO_FLAG_USE_FLOAT flag.
* Will currently return either 2 (for \c uint16_t) or 4 (for \c float),
* although this may change if we add support for more sample types.
*/
unsigned audio_driver_get_sample_size(void);
#ifdef HAVE_TRANSLATE
/* TODO/FIXME - Doesn't currently work. Fix this. */
bool audio_driver_is_ai_service_speech_running(void);
@@ -344,16 +333,12 @@ bool audio_driver_is_ai_service_speech_running(void);
**/
bool audio_compute_buffer_statistics(audio_statistics_t *stats);
bool audio_driver_init_internal(
void *settings_data,
bool audio_cb_inited);
bool audio_driver_init_internal(void *data, bool audio_cb_inited);
bool audio_driver_deinit(void);
bool audio_driver_find_driver(
void *settings_data,
const char *prefix,
bool verbosity_enabled);
bool audio_driver_find_driver(const char *audio_drv,
const char *prefix, bool verbosity_enabled);
/**
* audio_driver_sample:
@@ -420,6 +405,7 @@ extern audio_driver_t audio_jack;
extern audio_driver_t audio_sdl;
extern audio_driver_t audio_xa;
extern audio_driver_t audio_pulse;
extern audio_driver_t audio_pipewire;
extern audio_driver_t audio_dsound;
extern audio_driver_t audio_wasapi;
extern audio_driver_t audio_coreaudio;
@@ -440,9 +426,12 @@ extern audio_driver_t audio_switch_thread;
extern audio_driver_t audio_switch_libnx_audren;
extern audio_driver_t audio_switch_libnx_audren_thread;
extern audio_driver_t audio_rwebaudio;
extern audio_driver_t audio_audioworklet;
audio_driver_state_t *audio_state_get_ptr(void);
const char *audio_driver_get_ident(void);
extern audio_driver_t *audio_drivers[];
RETRO_END_DECLS
+6 -10
View File
@@ -99,7 +99,7 @@ static void audio_thread_loop(void *data)
thr->driver->stop(thr->driver_data);
while (thr->stopped)
{
/* If we stop right after start,
/* If we stop right after start,
* we might not be able to properly ack.
* Signal in the loop instead. */
thr->stopped_ack = true;
@@ -249,25 +249,21 @@ static bool audio_thread_use_float(void *data)
return thr->use_float;
}
static ssize_t audio_thread_write(void *data, const void *buf, size_t size)
static ssize_t audio_thread_write(void *data, const void *s, size_t len)
{
ssize_t ret;
ssize_t _len;
audio_thread_t *thr = (audio_thread_t*)data;
if (!thr)
return 0;
ret = thr->driver->write(thr->driver_data, buf, size);
if (ret < 0)
_len = thr->driver->write(thr->driver_data, s, len);
if (_len < 0)
{
slock_lock(thr->lock);
thr->alive = false;
scond_signal(thr->cond);
slock_unlock(thr->lock);
}
return ret;
return _len;
}
static const audio_driver_t audio_thread = {
+44 -42
View File
@@ -19,8 +19,9 @@
#include <alsa/asoundlib.h>
#include <asm-generic/errno.h>
#include "alsa.h"
#include "../audio_driver.h"
#include "../common/alsa.h"
#include "../../verbosity.h"
int alsa_init_pcm(snd_pcm_t **pcm,
@@ -43,11 +44,11 @@ int alsa_init_pcm(snd_pcm_t **pcm,
const char *alsa_dev = device ? device : "default";
int errnum = 0;
RARCH_DBG("[ALSA]: Requesting device \"%s\" for %s stream\n", alsa_dev, snd_pcm_stream_name(stream));
RARCH_DBG("[ALSA] Requesting device \"%s\" for %s stream...\n", alsa_dev, snd_pcm_stream_name(stream));
if ((errnum = snd_pcm_open(pcm, alsa_dev, stream, mode)) < 0)
{
RARCH_ERR("[ALSA]: Failed to open %s stream on device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to open %s stream on device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
alsa_dev,
snd_strerror(errnum));
@@ -57,7 +58,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_malloc(&params)) < 0)
{
RARCH_ERR("[ALSA]: Failed to allocate hardware parameters: %s\n",
RARCH_ERR("[ALSA] Failed to allocate hardware parameters: %s.\n",
snd_strerror(errnum));
goto error;
@@ -65,7 +66,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_any(*pcm, params)) < 0)
{
RARCH_ERR("[ALSA]: Failed to query hardware parameters from %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to query hardware parameters from %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -77,7 +78,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
? SND_PCM_FORMAT_FLOAT : SND_PCM_FORMAT_S16;
stream_info->has_float = (format == SND_PCM_FORMAT_FLOAT);
RARCH_LOG("[ALSA]: Using %s sample format for %s device \"%s\"\n",
RARCH_LOG("[ALSA] Using %s sample format for %s device \"%s\".\n",
snd_pcm_format_name(format),
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm)
@@ -85,7 +86,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_set_access(*pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
{
RARCH_ERR("[ALSA]: Failed to set %s access for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to set %s access for %s device \"%s\": %s.\n",
snd_pcm_access_name(SND_PCM_ACCESS_RW_INTERLEAVED),
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -97,7 +98,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_set_format(*pcm, params, format)) < 0)
{
RARCH_ERR("[ALSA]: Failed to set %s format for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to set %s format for %s device \"%s\": %s.\n",
snd_pcm_format_name(format),
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -108,7 +109,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_set_channels(*pcm, params, channels)) < 0)
{
RARCH_ERR("[ALSA]: Failed to set %u-channel audio for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to set %u-channel audio for %s device \"%s\": %s.\n",
channels,
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -120,7 +121,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
/* Don't allow rate resampling when probing for the default rate (but ignore if this call fails) */
if ((errnum = snd_pcm_hw_params_set_rate_resample(*pcm, params, false)) < 0)
{
RARCH_WARN("[ALSA]: Failed to request a default unsampled rate for %s device \"%s\": %s\n",
RARCH_WARN("[ALSA] Failed to request a default unsampled rate for %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -128,7 +129,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_set_rate_near(*pcm, params, &rate, 0)) < 0)
{
RARCH_ERR("[ALSA]: Failed to request a rate near %uHz for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to request a rate near %uHz for %s device \"%s\": %s.\n",
rate,
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -142,7 +143,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((snd_pcm_hw_params_set_buffer_time_near(*pcm, params, &latency_usec, NULL)) < 0)
{
RARCH_ERR("[ALSA]: Failed to request a buffer time near %uus for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to request a buffer time near %uus for %s device \"%s\": %s.\n",
latency_usec,
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -154,7 +155,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params_set_periods_near(*pcm, params, &periods, NULL)) < 0)
{
RARCH_ERR("[ALSA]: Failed to request %u periods per buffer for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to request %u periods per buffer for %s device \"%s\": %s.\n",
periods,
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -165,7 +166,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_hw_params(*pcm, params)) < 0)
{ /* This calls snd_pcm_prepare() under the hood */
RARCH_ERR("[ALSA]: Failed to install hardware parameters for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to install hardware parameters for %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -177,15 +178,15 @@ int alsa_init_pcm(snd_pcm_t **pcm,
* but some drivers are apparently broken. */
if ((errnum = snd_pcm_hw_params_get_period_size(params, &stream_info->period_frames, NULL)) < 0)
{
RARCH_WARN("[ALSA]: Failed to get an exact period size from %s device \"%s\": %s\n",
RARCH_WARN("[ALSA] Failed to get an exact period size from %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
RARCH_WARN("[ALSA]: Trying the minimum period size instead\n");
RARCH_WARN("[ALSA] Trying the minimum period size instead.\n");
if ((errnum = snd_pcm_hw_params_get_period_size_min(params, &stream_info->period_frames, NULL)) < 0)
{
RARCH_ERR("[ALSA]: Failed to get min period size from %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to get min period size from %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -196,28 +197,28 @@ int alsa_init_pcm(snd_pcm_t **pcm,
stream_info->period_size = snd_pcm_frames_to_bytes(*pcm, stream_info->period_frames);
if (stream_info->period_size < 0)
{
RARCH_ERR("[ALSA]: Failed to convert a period size of %lu frames to bytes: %s\n",
RARCH_ERR("[ALSA] Failed to convert a period size of %lu frames to bytes: %s.\n",
stream_info->period_frames,
snd_strerror(stream_info->period_frames));
goto error;
}
RARCH_LOG("[ALSA]: Period: %u periods per buffer (%lu frames, %lu bytes)\n",
RARCH_LOG("[ALSA] Period: %u periods per buffer (%lu frames, %lu bytes).\n",
periods,
stream_info->period_frames,
stream_info->period_size);
if ((errnum = snd_pcm_hw_params_get_buffer_size(params, &buffer_size)) < 0)
{
RARCH_WARN("[ALSA]: Failed to get exact buffer size from %s device \"%s\": %s\n",
RARCH_WARN("[ALSA] Failed to get exact buffer size from %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
RARCH_WARN("[ALSA]: Trying the maximum buffer size instead\n");
RARCH_WARN("[ALSA] Trying the maximum buffer size instead.\n");
if ((errnum = snd_pcm_hw_params_get_buffer_size_max(params, &buffer_size)) < 0)
{
RARCH_ERR("[ALSA]: Failed to get max buffer size from %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to get max buffer size from %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -229,20 +230,20 @@ int alsa_init_pcm(snd_pcm_t **pcm,
stream_info->buffer_size = snd_pcm_frames_to_bytes(*pcm, buffer_size);
if (stream_info->buffer_size < 0)
{
RARCH_ERR("[ALSA]: Failed to convert a buffer size of %lu frames to bytes: %s\n",
RARCH_ERR("[ALSA] Failed to convert a buffer size of %lu frames to bytes: %s.\n",
buffer_size,
snd_strerror(buffer_size));
goto error;
}
RARCH_LOG("[ALSA]: Buffer size: %lu frames (%lu bytes)\n", buffer_size, stream_info->buffer_size);
RARCH_LOG("[ALSA] Buffer size: %lu frames (%lu bytes).\n", buffer_size, stream_info->buffer_size);
stream_info->can_pause = snd_pcm_hw_params_can_pause(params);
RARCH_LOG("[ALSA]: Can pause: %s.\n", stream_info->can_pause ? "yes" : "no");
RARCH_LOG("[ALSA] Can pause: %s.\n", stream_info->can_pause ? "yes" : "no");
if ((errnum = snd_pcm_sw_params_malloc(&sw_params)) < 0)
{
RARCH_ERR("[ALSA]: Failed to allocate software parameters: %s\n",
RARCH_ERR("[ALSA] Failed to allocate software parameters: %s.\n",
snd_strerror(errnum));
goto error;
@@ -250,7 +251,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_sw_params_current(*pcm, sw_params)) < 0)
{
RARCH_ERR("[ALSA]: Failed to query current software parameters for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to query current software parameters for %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -260,7 +261,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_sw_params_set_start_threshold(*pcm, sw_params, buffer_size / 2)) < 0)
{
RARCH_ERR("[ALSA]: Failed to set start %lu-frame threshold for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to set start %lu-frame threshold for %s device \"%s\": %s.\n",
buffer_size / 2,
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
@@ -271,7 +272,7 @@ int alsa_init_pcm(snd_pcm_t **pcm,
if ((errnum = snd_pcm_sw_params(*pcm, sw_params)) < 0)
{
RARCH_ERR("[ALSA]: Failed to install software parameters for %s device \"%s\": %s\n",
RARCH_ERR("[ALSA] Failed to install software parameters for %s device \"%s\": %s.\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm),
snd_strerror(errnum));
@@ -282,11 +283,12 @@ int alsa_init_pcm(snd_pcm_t **pcm,
snd_pcm_hw_params_free(params);
snd_pcm_sw_params_free(sw_params);
RARCH_LOG("[ALSA]: Initialized %s device \"%s\"\n",
RARCH_LOG("[ALSA] Initialized %s device \"%s\".\n",
snd_pcm_stream_name(stream),
snd_pcm_name(*pcm));
return 0;
error:
if (params)
snd_pcm_hw_params_free(params);
@@ -311,7 +313,7 @@ void alsa_free_pcm(snd_pcm_t *pcm)
if ((errnum = snd_pcm_drop(pcm)) < 0)
{
RARCH_WARN("[ALSA]: Failed to drop remaining samples in %s stream \"%s\": %s\n",
RARCH_WARN("[ALSA] Failed to drop remaining samples in %s stream \"%s\": %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_strerror(errnum));
@@ -319,7 +321,7 @@ void alsa_free_pcm(snd_pcm_t *pcm)
if ((errnum = snd_pcm_close(pcm)) < 0)
{
RARCH_WARN("[ALSA]: Failed to close %s stream \"%s\": %s\n",
RARCH_WARN("[ALSA] Failed to close %s stream \"%s\": %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_strerror(errnum));
@@ -350,19 +352,19 @@ bool alsa_start_pcm(snd_pcm_t *pcm)
break;
case SND_PCM_STATE_RUNNING:
RARCH_DBG("[ALSA]: %s stream \"%s\" is already running, no action needed.\n",
RARCH_DBG("[ALSA] %s stream \"%s\" is already running, no action needed.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm));
return true;
default:
RARCH_ERR("[ALSA]: Failed to start %s stream \"%s\" in unexpected state %s\n",
RARCH_ERR("[ALSA] Failed to start %s stream \"%s\" in unexpected state %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state));
return false;
}
RARCH_DBG("[ALSA]: Started %s stream \"%s\", transitioning from %s to %s\n",
RARCH_DBG("[ALSA] Started %s stream \"%s\", transitioning from %s to %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state),
@@ -371,7 +373,7 @@ bool alsa_start_pcm(snd_pcm_t *pcm)
return true;
error:
RARCH_ERR("[ALSA]: Failed to start %s stream \"%s\" in state %s: %s\n",
RARCH_ERR("[ALSA] Failed to start %s stream \"%s\" in state %s: %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state),
@@ -392,12 +394,12 @@ bool alsa_stop_pcm(snd_pcm_t *pcm)
switch (pcm_state)
{
case SND_PCM_STATE_PAUSED:
RARCH_DBG("[ALSA]: %s stream \"%s\" is already paused, no action needed.\n",
RARCH_DBG("[ALSA] %s stream \"%s\" is already paused, no action needed.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm));
return true;
case SND_PCM_STATE_PREPARED:
RARCH_DBG("[ALSA]: %s stream \"%s\" is prepared but not running, no action needed.\n",
RARCH_DBG("[ALSA] %s stream \"%s\" is prepared but not running, no action needed.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm));
return true;
@@ -408,7 +410,7 @@ bool alsa_stop_pcm(snd_pcm_t *pcm)
break;
default:
RARCH_ERR("[ALSA]: Failed to stop %s stream \"%s\" in unexpected state %s\n",
RARCH_ERR("[ALSA] Failed to stop %s stream \"%s\" in unexpected state %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state));
@@ -416,7 +418,7 @@ bool alsa_stop_pcm(snd_pcm_t *pcm)
return false;
}
RARCH_DBG("[ALSA]: Stopped %s stream \"%s\", transitioning from %s to %s\n",
RARCH_DBG("[ALSA] Stopped %s stream \"%s\", transitioning from %s to %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state),
@@ -425,7 +427,7 @@ bool alsa_stop_pcm(snd_pcm_t *pcm)
return true;
error:
RARCH_ERR("[ALSA]: Failed to stop %s stream \"%s\" in state %s: %s\n",
RARCH_ERR("[ALSA] Failed to stop %s stream \"%s\" in state %s: %s.\n",
snd_pcm_stream_name(snd_pcm_stream(pcm)),
snd_pcm_name(pcm),
snd_pcm_state_name(pcm_state),
@@ -459,7 +461,7 @@ struct string_list *alsa_device_list_type_new(const char* type)
char *io = snd_device_name_get_hint(*n, "IOID");
char *desc = snd_device_name_get_hint(*n, "DESC");
/* description of device IOID - input / output identifcation
/* description of device IOID - input / output identification
* ("Input" or "Output"), NULL means both) */
if (!io || (string_is_equal(io, type)))
+11 -10
View File
@@ -17,9 +17,9 @@
#ifndef _RETROARCH_ALSA
#define _RETROARCH_ALSA
#include <stdint.h>
#include <boolean.h>
#include "queues/fifo_queue.h"
#include "rthreads/rthreads.h"
/* Header file for common functions that are used by alsa and alsathread. */
/**
@@ -37,14 +37,15 @@ typedef struct alsa_stream_info
} alsa_stream_info_t;
int alsa_init_pcm(snd_pcm_t **pcm,
const char* device,
snd_pcm_stream_t stream,
unsigned rate,
unsigned latency,
unsigned channels,
alsa_stream_info_t *stream_info,
unsigned *new_rate,
int mode);
const char* device,
snd_pcm_stream_t stream,
unsigned rate,
unsigned latency,
unsigned channels,
alsa_stream_info_t *stream_info,
unsigned *new_rate,
int mode);
void alsa_free_pcm(snd_pcm_t *pcm);
void *alsa_device_list_new(void *data);
struct string_list *alsa_device_list_type_new(const char* type);
-43
View File
@@ -1,43 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 Daniel De Matteis
* Copyright (C) 2023 Jesse Talavera-Greenberg
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "alsathread.h"
void alsa_thread_free_info_members(alsa_thread_info_t *info)
{
if (info)
{
if (info->worker_thread)
{
slock_lock(info->cond_lock);
info->thread_dead = true;
slock_unlock(info->cond_lock);
sthread_join(info->worker_thread);
}
if (info->buffer)
fifo_free(info->buffer);
if (info->cond)
scond_free(info->cond);
if (info->fifo_lock)
slock_free(info->fifo_lock);
if (info->cond_lock)
slock_free(info->cond_lock);
if (info->pcm)
alsa_free_pcm(info->pcm);
}
/* Do NOT free() info itself; it's embedded within another struct
* that will be freed. */
}
-40
View File
@@ -1,40 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 Daniel De Matteis
* Copyright (C) 2023 Jesse Talavera-Greenberg
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef RETROARCH_ALSATHREAD_H
#define RETROARCH_ALSATHREAD_H
#include <alsa/asoundlib.h>
#include <boolean.h>
#include "queues/fifo_queue.h"
#include "rthreads/rthreads.h"
#include "./alsa.h"
typedef struct alsa_thread_info
{
snd_pcm_t *pcm;
fifo_buffer_t *buffer;
sthread_t *worker_thread;
slock_t *fifo_lock;
scond_t *cond;
slock_t *cond_lock;
alsa_stream_info_t stream_info;
volatile bool thread_dead;
} alsa_thread_info_t;
void alsa_thread_free_info_members(alsa_thread_info_t *info);
#endif
+426 -23
View File
@@ -17,45 +17,400 @@
#include <encodings/utf.h>
#include <lists/string_list.h>
#include <string/stdstring.h>
#include "mmdevice_common.h"
#include "mmdevice_common_inline.h"
#include "../../verbosity.h"
char* mmdevice_name(IMMDevice *device)
static const char *mmdevice_data_flow_name(unsigned data_flow)
{
switch (data_flow)
{
case 0:
return "eRender";
case 1:
return "eCapture";
case 2:
return "eAll";
default:
break;
}
return "<unknown>";
}
const char *mmdevice_hresult_name(int hr)
{
switch (hr)
{
/* Standard error codes */
case E_INVALIDARG:
return "E_INVALIDARG";
case E_NOINTERFACE:
return "E_NOINTERFACE";
case E_OUTOFMEMORY:
return "E_OUTOFMEMORY";
case E_POINTER:
return "E_POINTER";
/* Standard success codes */
case S_FALSE:
return "S_FALSE";
case S_OK:
return "S_OK";
/* AUDCLNT error codes */
case AUDCLNT_E_ALREADY_INITIALIZED:
return "AUDCLNT_E_ALREADY_INITIALIZED";
case AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL:
return "AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL";
case AUDCLNT_E_BUFFER_ERROR:
return "AUDCLNT_E_BUFFER_ERROR";
case AUDCLNT_E_BUFFER_OPERATION_PENDING:
return "AUDCLNT_E_BUFFER_OPERATION_PENDING";
case AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED:
return "AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED";
case AUDCLNT_E_BUFFER_SIZE_ERROR:
return "AUDCLNT_E_BUFFER_SIZE_ERROR";
case AUDCLNT_E_CPUUSAGE_EXCEEDED:
return "AUDCLNT_E_CPUUSAGE_EXCEEDED";
case AUDCLNT_E_DEVICE_IN_USE:
return "AUDCLNT_E_DEVICE_IN_USE";
case AUDCLNT_E_DEVICE_INVALIDATED:
return "AUDCLNT_E_DEVICE_INVALIDATED";
case AUDCLNT_E_ENDPOINT_CREATE_FAILED:
return "AUDCLNT_E_ENDPOINT_CREATE_FAILED";
case AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED:
return "AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED";
case AUDCLNT_E_INVALID_DEVICE_PERIOD:
return "AUDCLNT_E_INVALID_DEVICE_PERIOD";
case AUDCLNT_E_INVALID_SIZE:
return "AUDCLNT_E_INVALID_SIZE";
case AUDCLNT_E_NOT_INITIALIZED:
return "AUDCLNT_E_NOT_INITIALIZED";
case AUDCLNT_E_OUT_OF_ORDER:
return "AUDCLNT_E_OUT_OF_ORDER";
case AUDCLNT_E_SERVICE_NOT_RUNNING:
return "AUDCLNT_E_SERVICE_NOT_RUNNING";
case AUDCLNT_E_UNSUPPORTED_FORMAT:
return "AUDCLNT_E_UNSUPPORTED_FORMAT";
case AUDCLNT_E_WRONG_ENDPOINT_TYPE:
return "AUDCLNT_E_WRONG_ENDPOINT_TYPE";
/* AUDCLNT success codes */
case AUDCLNT_S_BUFFER_EMPTY:
return "AUDCLNT_S_BUFFER_EMPTY";
/* Something else; probably from an API that we started using
* after mic support was implemented */
default:
break;
}
return "<unknown>";
}
size_t mmdevice_samplerate(void *data)
{
HRESULT hr;
IPropertyStore *prop_store = NULL;
PWAVEFORMATEX devfmt_props;
PROPVARIANT prop_var;
bool prop_var_init = false;
IMMDevice *device = (IMMDevice*)data;
IPropertyStore *prop_store = NULL;
DWORD result = 0;
if (!device)
return 0;
hr = _IMMDevice_OpenPropertyStore(device,
STGM_READ, &prop_store);
if (FAILED(hr))
return 0;
PropVariantInit(&prop_var);
hr = _IPropertyStore_GetValue(prop_store,
PKEY_AudioEngine_DeviceFormat, &prop_var);
if (SUCCEEDED(hr))
{
devfmt_props = (PWAVEFORMATEX)prop_var.blob.pBlobData;
result = devfmt_props->nSamplesPerSec;
}
PropVariantClear(&prop_var);
if (prop_store)
{
#ifdef __cplusplus
prop_store->Release();
#else
prop_store->lpVtbl->Release(prop_store);
#endif
prop_store = NULL;
}
return (size_t)result;
}
char *mmdevice_name(void *data)
{
HRESULT hr;
PROPVARIANT prop_var;
IMMDevice *device = (IMMDevice*)data;
IPropertyStore *prop_store = NULL;
char* result = NULL;
if (!device)
return NULL;
hr = _IMMDevice_OpenPropertyStore(device, STGM_READ, &prop_store);
hr = _IMMDevice_OpenPropertyStore(device,
STGM_READ, &prop_store);
if (FAILED(hr))
return NULL;
PropVariantInit(&prop_var);
prop_var_init = true;
hr = _IPropertyStore_GetValue(prop_store, PKEY_Device_FriendlyName, &prop_var);
if (FAILED(hr))
goto done;
result = utf16_to_utf8_string_alloc(prop_var.pwszVal);
done:
if (prop_var_init)
PropVariantClear(&prop_var);
IFACE_RELEASE(prop_store);
hr = _IPropertyStore_GetValue(prop_store,
PKEY_Device_FriendlyName, &prop_var);
if (SUCCEEDED(hr))
result = utf16_to_utf8_string_alloc(prop_var.pwszVal);
PropVariantClear(&prop_var);
if (prop_store)
{
#ifdef __cplusplus
prop_store->Release();
#else
prop_store->lpVtbl->Release(prop_store);
#endif
prop_store = NULL;
}
return result;
}
void *mmdevice_list_new(const void *u, EDataFlow data_flow)
void *mmdevice_handle(int id, unsigned data_flow)
{
HRESULT hr;
IMMDeviceEnumerator *enumerator = NULL;
IMMDevice *device = NULL;
IMMDeviceCollection *collection = NULL;
#ifdef __cplusplus
hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
IID_IMMDeviceEnumerator, (void **)&enumerator);
#else
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (void **)&enumerator);
#endif
if (FAILED(hr))
return NULL;
hr = _IMMDeviceEnumerator_EnumAudioEndpoints(enumerator,
data_flow, DEVICE_STATE_ACTIVE, &collection);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to enumerate audio endpoints: %s.\n", mmdevice_hresult_name(hr));
goto error;
}
hr = _IMMDeviceCollection_Item(collection, id, &device);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to get IMMDevice #%d: %s.\n", id, mmdevice_hresult_name(hr));
goto error;
}
return device;
error:
if (collection)
#ifdef __cplusplus
collection->Release();
#else
collection->lpVtbl->Release(collection);
#endif
if (enumerator)
#ifdef __cplusplus
enumerator->Release();
#else
enumerator->lpVtbl->Release(enumerator);
#endif
collection = NULL;
enumerator = NULL;
return NULL;
}
size_t mmdevice_get_samplerate(int id)
{
IMMDevice *device = (IMMDevice*)mmdevice_handle(id, 0 /* eRender */);
if (device)
{
size_t _len = mmdevice_samplerate(device);
#ifdef __cplusplus
device->Release();
#else
device->lpVtbl->Release(device);
#endif
return _len;
}
return 0;
}
void *mmdevice_init_device(const char *id, unsigned data_flow)
{
HRESULT hr;
UINT32 dev_count, i;
IMMDeviceEnumerator *enumerator = NULL;
IMMDevice *device = NULL;
IMMDeviceCollection *collection = NULL;
const char *data_flow_name = mmdevice_data_flow_name(data_flow);
if (id)
RARCH_DBG("[MMDevice] Initializing %s device \"%s\"...\n", data_flow_name, id);
else
RARCH_DBG("[MMDevice] Initializing default %s device...\n", data_flow_name);
#ifdef __cplusplus
hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
IID_IMMDeviceEnumerator, (void **)&enumerator);
#else
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (void **)&enumerator);
#endif
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to create device enumerator: %s.\n", mmdevice_hresult_name(hr));
goto error;
}
if (id)
{
/* If a specific device was requested... */
int32_t idx_found = -1;
struct string_list *list = (struct string_list*)mmdevice_list_new(NULL, data_flow);
if (!list)
{
RARCH_ERR("[MMDevice] Failed to allocate %s device list.\n", data_flow_name);
goto error;
}
if (list->elems)
{
size_t d;
/* If any devices were found... */
for (d = 0; d < list->size; d++)
{
if (string_is_equal(id, list->elems[d].data))
{
RARCH_DBG("[MMDevice] Found device #%d: \"%s\".\n", d,
list->elems[d].data);
idx_found = d;
break;
}
}
/* Index was not found yet based on name string,
* just assume id is a one-character number index. */
if (idx_found == -1 && isdigit(id[0]))
{
idx_found = strtoul(id, NULL, 0);
RARCH_LOG("[MMDevice] Fallback, %s device index is a single number index instead: %u.\n",
data_flow_name, idx_found);
}
}
string_list_free(list);
if (idx_found == -1)
idx_found = 0;
hr = _IMMDeviceEnumerator_EnumAudioEndpoints(enumerator,
data_flow, DEVICE_STATE_ACTIVE, &collection);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to enumerate audio endpoints: %s.\n", mmdevice_hresult_name(hr));
goto error;
}
hr = _IMMDeviceCollection_GetCount(collection, &dev_count);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to count IMMDevices: %s.\n", mmdevice_hresult_name(hr));
goto error;
}
for (i = 0; i < dev_count; ++i)
{
hr = _IMMDeviceCollection_Item(collection, i, &device);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to get IMMDevice #%d: %s.\n", i, mmdevice_hresult_name(hr));
goto error;
}
if (i == (UINT32)idx_found)
break;
if (device)
#ifdef __cplusplus
device->Release();
#else
device->lpVtbl->Release(device);
#endif
device = NULL;
}
}
else
{
hr = _IMMDeviceEnumerator_GetDefaultAudioEndpoint(
enumerator, data_flow, eConsole, &device);
if (FAILED(hr))
{
RARCH_ERR("[MMDevice] Failed to get default audio endpoint: %s.\n", mmdevice_hresult_name(hr));
goto error;
}
}
if (!device)
goto error;
if (collection)
#ifdef __cplusplus
collection->Release();
#else
collection->lpVtbl->Release(collection);
#endif
if (enumerator)
#ifdef __cplusplus
enumerator->Release();
#else
enumerator->lpVtbl->Release(enumerator);
#endif
collection = NULL;
enumerator = NULL;
return device;
error:
if (collection)
#ifdef __cplusplus
collection->Release();
#else
collection->lpVtbl->Release(collection);
#endif
if (enumerator)
#ifdef __cplusplus
enumerator->Release();
#else
enumerator->lpVtbl->Release(enumerator);
#endif
collection = NULL;
enumerator = NULL;
if (id)
RARCH_WARN("[MMDevice] Failed to initialize %s device \"%s\".\n", data_flow_name, id);
else
RARCH_ERR("[MMDevice] Failed to initialize default %s device.\n", data_flow_name);
return NULL;
}
void *mmdevice_list_new(const void *u, unsigned data_flow)
{
HRESULT hr;
UINT i;
@@ -121,11 +476,35 @@ void *mmdevice_list_new(const void *u, EDataFlow data_flow)
free(dev_name_str);
dev_name_str = NULL;
dev_id_wstr = NULL;
IFACE_RELEASE(device);
if (device)
{
#ifdef __cplusplus
device->Release();
#else
device->lpVtbl->Release(device);
#endif
device = NULL;
}
}
IFACE_RELEASE(collection);
IFACE_RELEASE(enumerator);
if (collection)
{
#ifdef __cplusplus
collection->Release();
#else
collection->lpVtbl->Release(collection);
#endif
collection = NULL;
}
if (enumerator)
{
#ifdef __cplusplus
enumerator->Release();
#else
enumerator->lpVtbl->Release(enumerator);
#endif
enumerator = NULL;
}
return sl;
@@ -139,9 +518,33 @@ error:
if (dev_id_wstr)
CoTaskMemFree(dev_id_wstr);
dev_id_wstr = NULL;
IFACE_RELEASE(device);
IFACE_RELEASE(collection);
IFACE_RELEASE(enumerator);
if (device)
{
#ifdef __cplusplus
device->Release();
#else
device->lpVtbl->Release(device);
#endif
device = NULL;
}
if (collection)
{
#ifdef __cplusplus
collection->Release();
#else
collection->lpVtbl->Release(collection);
#endif
collection = NULL;
}
if (enumerator)
{
#ifdef __cplusplus
enumerator->Release();
#else
enumerator->lpVtbl->Release(enumerator);
#endif
enumerator = NULL;
}
if (sl)
string_list_free(sl);
+19 -3
View File
@@ -19,17 +19,33 @@
#include <stdlib.h>
#include <retro_common_api.h>
#include "mmdevice_common_inline.h"
RETRO_BEGIN_DECLS
void *mmdevice_list_new(const void *u, EDataFlow data_flow);
void *mmdevice_list_new(const void *u, unsigned data_flow);
/**
* Gets the friendly name of the provided IMMDevice.
* The string must be freed with free().
*/
char* mmdevice_name(IMMDevice *device);
char* mmdevice_name(void *data);
/**
* Gets the samplerate of the provided IMMDevice.
*/
size_t mmdevice_samplerate(void *data);
/**
* Gets the handle of the IMMDevice.
*/
void *mmdevice_handle(int id, unsigned data_flow);
size_t mmdevice_get_samplerate(int id);
const char *mmdevice_hresult_name(int hr);
void *mmdevice_init_device(const char *id, unsigned data_flow);
RETRO_END_DECLS
+114 -143
View File
@@ -1,143 +1,114 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _MMDEVICE_COMMON_INLINE_H
#define _MMDEVICE_COMMON_INLINE_H
#include <stdlib.h>
/* Fix for MSYS2 increasing _WIN32_WINNT to 0x0603*/
#if defined(__MINGW32__) || defined(__MINGW64__)
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x0600
#define WIN32_LEAN_AND_MEAN
#else
typedef enum EDataFlow EDataFlow;
/* MinGW defines EDataFlow differently than MSVC does;
* this typedef smooths that over. */
#endif
#include <windows.h>
#include <winerror.h>
#include <propidl.h>
#include <initguid.h>
#include <mmdeviceapi.h>
#include <mmreg.h>
#include <audioclient.h>
#include <retro_common_api.h>
#ifdef _MSC_VER
DEFINE_GUID(IID_IAudioClient, 0x1CB9AD4C, 0xDBFA, 0x4C32, 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2);
DEFINE_GUID(IID_IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483, 0xA7, 0xBF, 0xAD, 0xDC, 0xA7, 0xC2, 0x60, 0xE2);
DEFINE_GUID(IID_IAudioCaptureClient, 0xC8ADBD64, 0xE71E, 0x48A0, 0xA4, 0xDE, 0x18, 0x5C, 0x39, 0x5C, 0xD3, 0x17);
DEFINE_GUID(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6);
DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E);
#undef KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
DEFINE_GUID(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
#endif
DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14); /* DEVPROP_TYPE_STRING */
#ifdef __cplusplus
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->Item(nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->Start() )
#define _IAudioClient_Stop(This) ( (This)->Stop() )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->GetCurrentPadding(pNumPaddingFrames) )
#define _IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) \
( (This)->GetBuffer(NumFramesRequested,ppData) )
#define _IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) \
( (This)->ReleaseBuffer(NumFramesWritten,dwFlags) )
#define _IAudioClient_GetService(This,riid,ppv) ( (This)->GetService(riid,ppv) )
#define _IAudioClient_SetEventHandle(This,eventHandle) ( (This)->SetEventHandle(eventHandle) )
#define _IAudioClient_GetBufferSize(This,pNumBufferFrames) ( (This)->GetBufferSize(pNumBufferFrames) )
#define _IAudioClient_GetStreamLatency(This,phnsLatency) ( (This)->GetStreamLatency(phnsLatency) )
#define _IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ( (This)->GetDevicePeriod(phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) )
#define _IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) \
( (This)->Initialize(ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid))
#define _IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) \
( (This)->IsFormatSupported(ShareMode,pFormat,ppClosestMatch))
#define _IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppv) ((This)->Activate(iid,(dwClsCtx),pActivationParams,ppv))
#define _IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) (This)->EnumAudioEndpoints(dataFlow,dwStateMask,ppDevices)
#define _IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) (This)->GetDefaultAudioEndpoint(dataFlow,role,ppEndpoint)
#define _IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) (This)->OpenPropertyStore(stgmAccess,ppProperties)
#define _IMMDevice_GetId(This,ppstrId) ((This)->GetId(ppstrId))
#define _IPropertyStore_GetValue(This,key,pv) ( (This)->GetValue(key,pv) )
#define _IMMDeviceCollection_GetCount(This,cProps) ( (This)->GetCount(cProps) )
#define _IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) \
( (This) -> GetBuffer(ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) )
#define _IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) \
( (This) -> ReleaseBuffer(NumFramesRead) )
#define _IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) \
( (This) -> GetNextPacketSize(pNumFramesInNextPacket) )
#else
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->lpVtbl->Item(This,nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->lpVtbl -> Start(This) )
#define _IAudioClient_Stop(This) ( (This)->lpVtbl -> Stop(This) )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) )
#define _IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) \
( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) )
#define _IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) \
( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) )
#define _IAudioClient_GetService(This,riid,ppv) ( (This)->lpVtbl -> GetService(This,&(riid),ppv) )
#define _IAudioClient_SetEventHandle(This,eventHandle) ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) )
#define _IAudioClient_GetBufferSize(This,pNumBufferFrames) ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) )
#define _IAudioClient_GetStreamLatency(This,phnsLatency) ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) )
#define _IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) )
#define _IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) \
( (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid))
#define _IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) \
( (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch))
#define _IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppv) ((This)->lpVtbl->Activate(This,&(iid),dwClsCtx,pActivationParams,ppv))
#define _IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) (This)->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices)
#define _IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) (This)->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint)
#define _IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) (This)->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties)
#define _IMMDevice_GetId(This,ppstrId) (This)->lpVtbl->GetId(This,ppstrId)
#define _IPropertyStore_GetValue(This,key,pv) ( (This)->lpVtbl -> GetValue(This,&(key),pv) )
#define _IMMDeviceCollection_GetCount(This,cProps) ( (This)->lpVtbl -> GetCount(This,cProps) )
#define _IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) \
( (This)->lpVtbl -> GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) )
#define _IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) \
( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesRead) )
#define _IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) \
( (This)-> lpVtbl -> GetNextPacketSize(This,pNumFramesInNextPacket) )
#endif
#ifdef __cplusplus
#ifndef IFACE_RELEASE
#define IFACE_RELEASE(iface) \
if (iface) \
{ \
iface->Release(); \
iface = NULL; \
}
#endif
#else
#ifndef IFACE_RELEASE
#define IFACE_RELEASE(iface) \
if (iface) \
{ \
iface->lpVtbl->Release(iface);\
iface = NULL; \
}
#endif
#endif
#endif
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _MMDEVICE_COMMON_INLINE_H
#define _MMDEVICE_COMMON_INLINE_H
#include <stdlib.h>
/* Fix for MSYS2 increasing _WIN32_WINNT to 0x0603 */
#if defined(__MINGW32__) || defined(__MINGW64__)
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <winerror.h>
#include <propidl.h>
#include <initguid.h>
#include <mmdeviceapi.h>
#include <mmreg.h>
#include <audioclient.h>
#include <retro_common_api.h>
#ifdef _MSC_VER
DEFINE_GUID(IID_IAudioClient, 0x1CB9AD4C, 0xDBFA, 0x4C32, 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2);
DEFINE_GUID(IID_IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483, 0xA7, 0xBF, 0xAD, 0xDC, 0xA7, 0xC2, 0x60, 0xE2);
DEFINE_GUID(IID_IAudioCaptureClient, 0xC8ADBD64, 0xE71E, 0x48A0, 0xA4, 0xDE, 0x18, 0x5C, 0x39, 0x5C, 0xD3, 0x17);
DEFINE_GUID(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6);
DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E);
#undef KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
DEFINE_GUID(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
#endif
DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14); /* DEVPROP_TYPE_STRING */
#ifdef __cplusplus
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->Item(nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->Start() )
#define _IAudioClient_Stop(This) ( (This)->Stop() )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->GetCurrentPadding(pNumPaddingFrames) )
#define _IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) \
( (This)->GetBuffer(NumFramesRequested,ppData) )
#define _IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) \
( (This)->ReleaseBuffer(NumFramesWritten,dwFlags) )
#define _IAudioClient_GetService(This,riid,ppv) ( (This)->GetService(riid,ppv) )
#define _IAudioClient_SetEventHandle(This,eventHandle) ( (This)->SetEventHandle(eventHandle) )
#define _IAudioClient_GetBufferSize(This,pNumBufferFrames) ( (This)->GetBufferSize(pNumBufferFrames) )
#define _IAudioClient_GetStreamLatency(This,phnsLatency) ( (This)->GetStreamLatency(phnsLatency) )
#define _IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ( (This)->GetDevicePeriod(phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) )
#define _IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) \
( (This)->Initialize(ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid))
#define _IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) \
( (This)->IsFormatSupported(ShareMode,pFormat,ppClosestMatch))
#define _IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppv) ((This)->Activate(iid,(dwClsCtx),pActivationParams,ppv))
#define _IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) (This)->EnumAudioEndpoints(dataFlow,dwStateMask,ppDevices)
#define _IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) (This)->GetDefaultAudioEndpoint(dataFlow,role,ppEndpoint)
#define _IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) (This)->OpenPropertyStore(stgmAccess,ppProperties)
#define _IMMDevice_GetId(This,ppstrId) ((This)->GetId(ppstrId))
#define _IPropertyStore_GetValue(This,key,pv) ( (This)->GetValue(key,pv) )
#define _IMMDeviceCollection_GetCount(This,cProps) ( (This)->GetCount(cProps) )
#define _IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) \
( (This) -> GetBuffer(ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) )
#define _IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) \
( (This) -> ReleaseBuffer(NumFramesRead) )
#define _IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) \
( (This) -> GetNextPacketSize(pNumFramesInNextPacket) )
#else
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->lpVtbl->Item(This,nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->lpVtbl -> Start(This) )
#define _IAudioClient_Stop(This) ( (This)->lpVtbl -> Stop(This) )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) )
#define _IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) \
( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) )
#define _IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) \
( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) )
#define _IAudioClient_GetService(This,riid,ppv) ( (This)->lpVtbl -> GetService(This,&(riid),ppv) )
#define _IAudioClient_SetEventHandle(This,eventHandle) ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) )
#define _IAudioClient_GetBufferSize(This,pNumBufferFrames) ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) )
#define _IAudioClient_GetStreamLatency(This,phnsLatency) ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) )
#define _IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) )
#define _IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) \
( (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid))
#define _IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) \
( (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch))
#define _IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppv) ((This)->lpVtbl->Activate(This,&(iid),dwClsCtx,pActivationParams,ppv))
#define _IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) (This)->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices)
#define _IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) (This)->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint)
#define _IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) (This)->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties)
#define _IMMDevice_GetId(This,ppstrId) (This)->lpVtbl->GetId(This,ppstrId)
#define _IPropertyStore_GetValue(This,key,pv) ( (This)->lpVtbl -> GetValue(This,&(key),pv) )
#define _IMMDeviceCollection_GetCount(This,cProps) ( (This)->lpVtbl -> GetCount(This,cProps) )
#define _IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) \
( (This)->lpVtbl -> GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) )
#define _IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) \
( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesRead) )
#define _IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) \
( (This)-> lpVtbl -> GetNextPacketSize(This,pNumFramesInNextPacket) )
#endif
#endif
+172
View File
@@ -0,0 +1,172 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2024 Viachaslau Khalikin
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "pipewire.h"
#include <spa/utils/result.h>
#include <pipewire/pipewire.h>
#include <retro_assert.h>
#include "../../verbosity.h"
static void core_error_cb(void *data, uint32_t id, int seq, int res, const char *message)
{
pipewire_core_t *pw = (pipewire_core_t*)data;
RARCH_ERR("[PipeWire] Error id:%u seq:%d res:%d (%s): %s.\n",
id, seq, res, spa_strerror(res), message);
pw_thread_loop_stop(pw->thread_loop);
}
static void core_done_cb(void *data, uint32_t id, int seq)
{
pipewire_core_t *pw = (pipewire_core_t*)data;
retro_assert(id == PW_ID_CORE);
pw->last_seq = seq;
if (pw->pending_seq == seq)
pw_thread_loop_signal(pw->thread_loop, false);
}
static const struct pw_core_events core_events = {
PW_VERSION_CORE_EVENTS,
.done = core_done_cb,
.error = core_error_cb,
};
void pipewire_core_wait_resync(pipewire_core_t *pw)
{
retro_assert(pw);
pw->pending_seq = pw_core_sync(pw->core, PW_ID_CORE, pw->pending_seq);
for (;;)
{
pw_thread_loop_wait(pw->thread_loop);
if (pw->pending_seq == pw->last_seq)
break;
}
}
bool pipewire_stream_set_active(struct pw_thread_loop *loop, struct pw_stream *stream, bool active)
{
enum pw_stream_state st;
const char *error;
retro_assert(loop);
retro_assert(stream);
pw_thread_loop_lock(loop);
pw_stream_set_active(stream, active);
pw_thread_loop_wait(loop);
pw_thread_loop_unlock(loop);
st = pw_stream_get_state(stream, &error);
return active ? st == PW_STREAM_STATE_STREAMING : st == PW_STREAM_STATE_PAUSED;
}
bool pipewire_core_init(pipewire_core_t **pw, const char *loop_name, const struct pw_registry_events *events)
{
retro_assert(!*pw);
*pw = (pipewire_core_t*)calloc(1, sizeof(pipewire_core_t));
if (!*pw)
return false;
(*pw)->devicelist = string_list_new();
if (!(*pw)->devicelist)
{
free(*pw);
*pw = NULL;
return false;
}
pw_init(NULL, NULL);
(*pw)->thread_loop = pw_thread_loop_new(loop_name, NULL);
if (!(*pw)->thread_loop)
return false;
(*pw)->ctx = pw_context_new(pw_thread_loop_get_loop((*pw)->thread_loop), NULL, 0);
if (!(*pw)->ctx)
return false;
if (pw_thread_loop_start((*pw)->thread_loop) < 0)
return false;
pw_thread_loop_lock((*pw)->thread_loop);
(*pw)->core = pw_context_connect((*pw)->ctx, NULL, 0);
if (!(*pw)->core)
goto unlock;
if (pw_core_add_listener((*pw)->core,
&(*pw)->core_listener,
&core_events, *pw) < 0)
goto unlock;
if (events)
{
(*pw)->registry = pw_core_get_registry((*pw)->core, PW_VERSION_REGISTRY, 0);
spa_zero((*pw)->registry_listener);
pw_registry_add_listener((*pw)->registry, &(*pw)->registry_listener, events, *pw);
}
return true;
unlock:
pw_thread_loop_unlock((*pw)->thread_loop);
return false;
}
void pipewire_core_deinit(pipewire_core_t *pw)
{
if (!pw)
{
pw_deinit();
return;
}
if (pw->thread_loop)
pw_thread_loop_stop(pw->thread_loop);
if (pw->registry)
{
spa_hook_remove(&pw->registry_listener);
pw_proxy_destroy((struct pw_proxy*)pw->registry);
}
if (pw->core)
{
spa_hook_remove(&pw->core_listener);
pw_core_disconnect(pw->core);
}
if (pw->ctx)
pw_context_destroy(pw->ctx);
if (pw->thread_loop)
pw_thread_loop_destroy(pw->thread_loop);
if (pw->devicelist)
string_list_free(pw->devicelist);
free(pw);
pw_deinit();
}
+63
View File
@@ -0,0 +1,63 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2024 The RetroArch team
*
* RetroArch is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Found- ation, either version 3 of the License, or (at your option) any later
* version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* RetroArch. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _RETROARCH_PIPEWIRE
#define _RETROARCH_PIPEWIRE
#include <stdint.h>
#include <spa/param/audio/format-utils.h>
#include <spa/utils/ringbuffer.h>
#include <pipewire/pipewire.h>
#include <lists/string_list.h>
#define PW_RARCH_APPNAME "RetroArch"
/* String literals are part of the PipeWire specification */
#define PW_RARCH_MEDIA_TYPE_AUDIO "Audio"
#define PW_RARCH_MEDIA_TYPE_VIDEO "Video"
#define PW_RARCH_MEDIA_TYPE_MIDI "Midi"
#define PW_RARCH_MEDIA_CATEGORY_PLAYBACK "Playback"
#define PW_RARCH_MEDIA_CATEGORY_RECORD "Capture"
#define PW_RARCH_MEDIA_ROLE "Game"
typedef struct pipewire_core
{
struct pw_thread_loop *thread_loop;
struct pw_context *ctx;
struct pw_core *core;
struct spa_hook core_listener;
int last_seq, pending_seq;
struct pw_registry *registry;
struct spa_hook registry_listener;
struct string_list *devicelist;
bool nonblock;
} pipewire_core_t;
bool pipewire_core_init(pipewire_core_t **pw, const char *loop_name, const struct pw_registry_events *events);
void pipewire_core_deinit(pipewire_core_t *pw);
void pipewire_core_wait_resync(pipewire_core_t *pw);
bool pipewire_stream_set_active(struct pw_thread_loop *loop, struct pw_stream *stream, bool active);
#endif /* _RETROARCH_PIPEWIRE */
-756
View File
@@ -1,756 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 Daniel De Matteis
* Copyright (C) 2023 Jesse Talavera-Greenberg
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "wasapi.h"
#include <stdio.h>
#ifdef HAVE_MICROPHONE
#include "audio/microphone_driver.h"
#endif
#include "queues/fifo_queue.h"
#include "lists/string_list.h"
#include "configuration.h"
#include "verbosity.h"
#include "string/stdstring.h"
#include "mmdevice_common.h"
const char *hresult_name(HRESULT hr)
{
switch (hr)
{
/* Standard error codes */
case E_INVALIDARG:
return "E_INVALIDARG";
case E_NOINTERFACE:
return "E_NOINTERFACE";
case E_OUTOFMEMORY:
return "E_OUTOFMEMORY";
case E_POINTER:
return "E_POINTER";
/* Standard success codes */
case S_FALSE:
return "S_FALSE";
case S_OK:
return "S_OK";
/* AUDCLNT error codes */
case AUDCLNT_E_ALREADY_INITIALIZED:
return "AUDCLNT_E_ALREADY_INITIALIZED";
case AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL:
return "AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL";
case AUDCLNT_E_BUFFER_ERROR:
return "AUDCLNT_E_BUFFER_ERROR";
case AUDCLNT_E_BUFFER_OPERATION_PENDING:
return "AUDCLNT_E_BUFFER_OPERATION_PENDING";
case AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED:
return "AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED";
case AUDCLNT_E_BUFFER_SIZE_ERROR:
return "AUDCLNT_E_BUFFER_SIZE_ERROR";
case AUDCLNT_E_CPUUSAGE_EXCEEDED:
return "AUDCLNT_E_CPUUSAGE_EXCEEDED";
case AUDCLNT_E_DEVICE_IN_USE:
return "AUDCLNT_E_DEVICE_IN_USE";
case AUDCLNT_E_DEVICE_INVALIDATED:
return "AUDCLNT_E_DEVICE_INVALIDATED";
case AUDCLNT_E_ENDPOINT_CREATE_FAILED:
return "AUDCLNT_E_ENDPOINT_CREATE_FAILED";
case AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED:
return "AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED";
case AUDCLNT_E_INVALID_DEVICE_PERIOD:
return "AUDCLNT_E_INVALID_DEVICE_PERIOD";
case AUDCLNT_E_INVALID_SIZE:
return "AUDCLNT_E_INVALID_SIZE";
case AUDCLNT_E_NOT_INITIALIZED:
return "AUDCLNT_E_NOT_INITIALIZED";
case AUDCLNT_E_OUT_OF_ORDER:
return "AUDCLNT_E_OUT_OF_ORDER";
case AUDCLNT_E_SERVICE_NOT_RUNNING:
return "AUDCLNT_E_SERVICE_NOT_RUNNING";
case AUDCLNT_E_UNSUPPORTED_FORMAT:
return "AUDCLNT_E_UNSUPPORTED_FORMAT";
case AUDCLNT_E_WRONG_ENDPOINT_TYPE:
return "AUDCLNT_E_WRONG_ENDPOINT_TYPE";
/* AUDCLNT success codes */
case AUDCLNT_S_BUFFER_EMPTY:
return "AUDCLNT_S_BUFFER_EMPTY";
/* Something else; probably from an API that we started using
* after mic support was implemented */
default:
break;
}
return "<unknown>";
}
const char *wave_subtype_name(const GUID *guid)
{
if (IsEqualGUID(guid, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))
return "KSDATAFORMAT_SUBTYPE_IEEE_FLOAT";
return "<unknown sub-format>";
}
const char *wave_format_name(const WAVEFORMATEXTENSIBLE *format)
{
switch (format->Format.wFormatTag)
{
case WAVE_FORMAT_PCM:
return "WAVE_FORMAT_PCM";
case WAVE_FORMAT_EXTENSIBLE:
return wave_subtype_name(&format->SubFormat);
default:
break;
}
return "<unknown>";
}
const char* wasapi_error(DWORD error)
{
static char error_message[256];
FormatMessage(
FORMAT_MESSAGE_IGNORE_INSERTS
| FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
error,
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
error_message,
sizeof(error_message) - 1,
NULL);
return error_message;
}
static const char* wasapi_data_flow_name(EDataFlow data_flow)
{
switch (data_flow)
{
case eCapture:
return "eCapture";
case eRender:
return "eRender";
case eAll:
return "eAll";
default:
break;
}
return "<unknown>";
}
static void wasapi_set_format(WAVEFORMATEXTENSIBLE *wf,
bool float_fmt, unsigned rate, unsigned channels);
/**
* @param[in] format The format to check.
* @return \c true if \c format is suitable for RetroArch.
*/
static bool wasapi_is_format_suitable(const WAVEFORMATEXTENSIBLE *format)
{
/* RetroArch only supports mono mic input and stereo speaker output */
if (!format || format->Format.nChannels == 0 || format->Format.nChannels > 2)
return false;
switch (format->Format.wFormatTag)
{
case WAVE_FORMAT_PCM:
if (format->Format.wBitsPerSample != 16)
/* Integer samples must be 16-bit */
return false;
break;
case WAVE_FORMAT_EXTENSIBLE:
if (!IsEqualGUID(&format->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))
/* RetroArch doesn't support any other subformat */
return false;
if (format->Format.wBitsPerSample != 32)
/* floating-point samples must be 32-bit */
return false;
break;
default:
/* Other formats are unsupported */
return false;
}
return true;
}
/**
* Selects a sample format suitable for the given device.
* @param[in,out] format The place where the chosen format will be written,
* as well as the first format checked.
* @param[in] client The audio client (i.e. device handle) for which a format will be selected.
* @param[in] mode The device mode (shared or exclusive) that \c client will use.
* @param[in] channels The number of channels that will constitute one audio frame.
* @return \c true if successful, \c false if a suitable format wasn't found or there was an error.
* If \c true, the selected format will be written to \c format.
* If \c false, the value referred by \c format will be unchanged.
*/
static bool wasapi_select_device_format(WAVEFORMATEXTENSIBLE *format, IAudioClient *client, AUDCLNT_SHAREMODE mode, unsigned channels)
{
static const unsigned preferred_rates[] = { 48000, 44100, 96000, 192000, 32000 };
const bool preferred_formats[] = {format->Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE, format->Format.wFormatTag != WAVE_FORMAT_EXTENSIBLE};
/* Try the requested sample format first, then try the other one */
WAVEFORMATEXTENSIBLE *suggested_format = NULL;
bool result = false;
HRESULT hr = _IAudioClient_IsFormatSupported(
client, mode,
(const WAVEFORMATEX *)format,
(WAVEFORMATEX **)&suggested_format);
/* The Windows docs say that casting these arguments to WAVEFORMATEX* is okay. */
switch (hr)
{
case S_OK:
/* The requested format is okay without any changes */
RARCH_DBG("[WASAPI]: Desired format (%s, %u-channel, %uHz) can be used as-is.\n",
wave_format_name(format), format->Format.nChannels, format->Format.nSamplesPerSec);
result = true;
break;
case S_FALSE:
/* The requested format is unsupported, but Windows has suggested a similar one. */
RARCH_DBG("[WASAPI]: Windows suggests a format of (%s, %u-channel, %uHz).\n",
wave_format_name(suggested_format), suggested_format->Format.nChannels, suggested_format->Format.nSamplesPerSec);
if (wasapi_is_format_suitable(suggested_format))
{
*format = *suggested_format;
result = true;
}
else
{
result = false;
RARCH_ERR("[WASAPI]: Windows suggested a format, but RetroArch can't use it.\n");
}
break;
case AUDCLNT_E_UNSUPPORTED_FORMAT:
{ /* The requested format is unsupported
* and Windows was unable to suggest another.
* Usually happens with exclusive mode.
* RetroArch will try selecting a format. */
size_t i, j;
WAVEFORMATEXTENSIBLE possible_format;
HRESULT format_check_hr;
RARCH_WARN("[WASAPI]: Requested format not supported, and Windows could not suggest one. RetroArch will do so.\n");
for (i = 0; i < ARRAY_SIZE(preferred_formats); ++i)
{
for (j = 0; j < ARRAY_SIZE(preferred_rates); ++j)
{
wasapi_set_format(&possible_format, preferred_formats[i], preferred_rates[j], channels);
format_check_hr = _IAudioClient_IsFormatSupported(client, mode, (const WAVEFORMATEX *) &possible_format, NULL);
if (SUCCEEDED(format_check_hr))
{
*format = possible_format;
result = true;
RARCH_DBG("[WASAPI]: RetroArch suggests a format of (%s, %u-channel, %uHz).\n",
wave_format_name(format), format->Format.nChannels, format->Format.nSamplesPerSec);
goto done;
}
}
}
RARCH_ERR("[WASAPI]: Failed to select client format: No suitable format available\n");
result = false;
break;
}
default:
/* Something else went wrong. */
RARCH_ERR("[WASAPI]: Failed to select client format: %s\n", hresult_name(hr));
result = false;
break;
}
done:
/* IAudioClient::IsFormatSupported allocates a format object */
if (suggested_format)
CoTaskMemFree(suggested_format);
return result;
}
static void wasapi_set_format(WAVEFORMATEXTENSIBLE *wf,
bool float_fmt, unsigned rate, unsigned channels)
{
WORD wBitsPerSample = float_fmt ? 32 : 16;
WORD nBlockAlign = (channels * wBitsPerSample) / 8;
DWORD nAvgBytesPerSec = rate * nBlockAlign;
wf->Format.nChannels = channels;
wf->Format.nSamplesPerSec = rate;
wf->Format.nAvgBytesPerSec = nAvgBytesPerSec;
wf->Format.nBlockAlign = nBlockAlign;
wf->Format.wBitsPerSample = wBitsPerSample;
if (float_fmt)
{
wf->Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wf->Format.cbSize = sizeof(WORD) + sizeof(DWORD) + sizeof(GUID);
wf->Samples.wValidBitsPerSample = wBitsPerSample;
wf->dwChannelMask = channels == 1 ? KSAUDIO_SPEAKER_MONO : KSAUDIO_SPEAKER_STEREO;
wf->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
}
else
{
wf->Format.wFormatTag = WAVE_FORMAT_PCM;
wf->Format.cbSize = 0;
wf->Samples.wValidBitsPerSample = 0;
wf->dwChannelMask = 0;
memset(&wf->SubFormat, 0, sizeof(wf->SubFormat));
}
}
static IAudioClient *wasapi_init_client_ex(IMMDevice *device,
bool *float_fmt, unsigned *rate, unsigned latency, unsigned channels)
{
WAVEFORMATEXTENSIBLE wf;
IAudioClient *client = NULL;
REFERENCE_TIME minimum_period = 0;
REFERENCE_TIME buffer_duration = 0;
UINT32 buffer_length = 0;
HRESULT hr = _IMMDevice_Activate(device,
IID_IAudioClient, CLSCTX_ALL, NULL, (void**)&client);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: IMMDevice::Activate failed: %s\n", hresult_name(hr));
return NULL;
}
hr = _IAudioClient_GetDevicePeriod(client, NULL, &minimum_period);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to get device period of exclusive-mode client: %s\n", hresult_name(hr));
goto error;
}
/* buffer_duration is in 100ns units */
buffer_duration = latency * 10000.0;
if (buffer_duration < minimum_period)
buffer_duration = minimum_period;
wasapi_set_format(&wf, *float_fmt, *rate, channels);
RARCH_DBG("[WASAPI]: Requesting format: %u-bit %u-channel client with %s samples at %uHz\n",
wf.Format.wBitsPerSample,
wf.Format.nChannels, wave_format_name(&wf), wf.Format.nSamplesPerSec);
if (wasapi_select_device_format(&wf, client, AUDCLNT_SHAREMODE_EXCLUSIVE, channels))
{
RARCH_DBG("[WASAPI]: Using format: %u-bit %u-channel client with %s samples at %uHz\n",
wf.Format.wBitsPerSample,
wf.Format.nChannels, wave_format_name(&wf), wf.Format.nSamplesPerSec);
}
else
{
RARCH_ERR("[WASAPI]: Failed to select a suitable device format\n");
goto error;
}
hr = _IAudioClient_Initialize(client, AUDCLNT_SHAREMODE_EXCLUSIVE,
AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST,
buffer_duration, buffer_duration, (WAVEFORMATEX*)&wf, NULL);
if (hr == AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED)
{
RARCH_WARN("[WASAPI]: Unaligned buffer size: %s\n", hresult_name(hr));
hr = _IAudioClient_GetBufferSize(client, &buffer_length);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to get buffer size of client: %s\n", hresult_name(hr));
goto error;
}
IFACE_RELEASE(client);
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: IMMDevice::Activate failed: %s\n", hresult_name(hr));
return NULL;
}
buffer_duration = 10000.0 * 1000.0 / (*rate) * buffer_length + 0.5;
hr = _IAudioClient_Initialize(client, AUDCLNT_SHAREMODE_EXCLUSIVE,
AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST,
buffer_duration, buffer_duration, (WAVEFORMATEX*)&wf, NULL);
}
if (hr == AUDCLNT_E_ALREADY_INITIALIZED)
{
IFACE_RELEASE(client);
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI] IMMDevice::Activate failed: %s\n", hresult_name(hr));
return NULL;
}
hr = _IAudioClient_Initialize(client, AUDCLNT_SHAREMODE_EXCLUSIVE,
AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST,
buffer_duration, buffer_duration, (WAVEFORMATEX*)&wf, NULL);
}
if (hr != AUDCLNT_E_UNSUPPORTED_FORMAT)
{
if (hr == AUDCLNT_E_DEVICE_IN_USE)
goto error;
if (hr == AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED)
goto error;
}
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to create exclusive-mode client: %s\n", hresult_name(hr));
goto error;
}
*float_fmt = wf.Format.wFormatTag != WAVE_FORMAT_PCM;
*rate = wf.Format.nSamplesPerSec;
RARCH_DBG("[WASAPI]: Initialized exclusive %s client at %uHz, latency %ums\n",
*float_fmt ? "float" : "pcm", *rate, latency);
return client;
error:
IFACE_RELEASE(client);
return NULL;
}
static IAudioClient *wasapi_init_client_sh(IMMDevice *device,
bool *float_fmt, unsigned *rate, unsigned latency, unsigned channels)
{
WAVEFORMATEXTENSIBLE wf;
IAudioClient *client = NULL;
bool float_fmt_res = *float_fmt;
unsigned rate_res = *rate;
HRESULT hr = _IMMDevice_Activate(device,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
if (FAILED(hr))
{ /* If we couldn't create the IAudioClient... */
RARCH_ERR("[WASAPI]: Failed to create %s IAudioClient: %s\n", hresult_name(hr));
return NULL;
}
wasapi_set_format(&wf, float_fmt_res, rate_res, channels);
if (wasapi_select_device_format(&wf, client, AUDCLNT_SHAREMODE_SHARED, channels))
{
RARCH_DBG("[WASAPI]: Requesting %u-channel shared-mode client with %s samples at %uHz.\n",
wf.Format.nChannels, wave_format_name(&wf), wf.Format.nSamplesPerSec);
}
else
{
RARCH_ERR("[WASAPI]: Failed to select a suitable device format.\n");
goto error;
}
hr = _IAudioClient_Initialize(client, AUDCLNT_SHAREMODE_SHARED,
AUDCLNT_STREAMFLAGS_EVENTCALLBACK,
0, 0, (WAVEFORMATEX*)&wf, NULL);
if (hr == AUDCLNT_E_ALREADY_INITIALIZED)
{
IFACE_RELEASE(client);
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: IMMDevice::Activate failed: %s\n", hresult_name(hr));
return NULL;
}
hr = _IAudioClient_Initialize(client, AUDCLNT_SHAREMODE_SHARED,
AUDCLNT_STREAMFLAGS_EVENTCALLBACK,
0, 0, (WAVEFORMATEX*)&wf, NULL);
}
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: IAudioClient::Initialize failed: %s\n", hresult_name(hr));
goto error;
}
*float_fmt = wf.Format.wFormatTag != WAVE_FORMAT_PCM;
*rate = wf.Format.nSamplesPerSec;
RARCH_DBG("[WASAPI]: Initialized shared %s client at %uHz.\n",
wave_format_name(&wf), *rate);
return client;
error:
IFACE_RELEASE(client);
return NULL;
}
IMMDevice *wasapi_init_device(const char *id, EDataFlow data_flow)
{
HRESULT hr;
UINT32 dev_count, i;
IMMDeviceEnumerator *enumerator = NULL;
IMMDevice *device = NULL;
IMMDeviceCollection *collection = NULL;
const char *data_flow_name = wasapi_data_flow_name(data_flow);
if (id)
RARCH_DBG("[WASAPI]: Initializing %s device \"%s\"..\n", data_flow_name, id);
else
RARCH_DBG("[WASAPI]: Initializing default %s device..\n", data_flow_name);
#ifdef __cplusplus
hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
IID_IMMDeviceEnumerator, (void **)&enumerator);
#else
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (void **)&enumerator);
#endif
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to create device enumerator: %s\n", hresult_name(hr));
goto error;
}
if (id)
{ /* If a specific device was requested... */
int32_t idx_found = -1;
struct string_list *list = (struct string_list*)mmdevice_list_new(NULL, data_flow);
if (!list)
{
RARCH_ERR("[WASAPI]: Failed to allocate %s device list.\n", data_flow_name);
goto error;
}
if (list->elems)
{ /* If any devices were found... */
unsigned d;
for (d = 0; d < list->size; d++)
{
if (string_is_equal(id, list->elems[d].data))
{
RARCH_DBG("[WASAPI]: Found device #%d: \"%s\"\n", d, list->elems[d].data);
idx_found = d;
break;
}
}
/* Index was not found yet based on name string,
* just assume id is a one-character number index. */
if (idx_found == -1 && isdigit(id[0]))
{
idx_found = strtoul(id, NULL, 0);
RARCH_LOG("[WASAPI]: Fallback, %s device index is a single number index instead: %u.\n", data_flow_name, idx_found);
}
}
string_list_free(list);
if (idx_found == -1)
idx_found = 0;
hr = _IMMDeviceEnumerator_EnumAudioEndpoints(enumerator,
data_flow, DEVICE_STATE_ACTIVE, &collection);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to enumerate audio endpoints: %s\n", hresult_name(hr));
goto error;
}
hr = _IMMDeviceCollection_GetCount(collection, &dev_count);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to count IMMDevices: %s\n", hresult_name(hr));
goto error;
}
for (i = 0; i < dev_count; ++i)
{
hr = _IMMDeviceCollection_Item(collection, i, &device);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to get IMMDevice #%d: %s\n", i, hresult_name(hr));
goto error;
}
if (i == (UINT32)idx_found)
break;
IFACE_RELEASE(device);
}
}
else
{
hr = _IMMDeviceEnumerator_GetDefaultAudioEndpoint(
enumerator, data_flow, eConsole, &device);
if (FAILED(hr))
{
RARCH_ERR("[WASAPI]: Failed to get default audio endpoint: %s\n", hresult_name(hr));
goto error;
}
}
if (!device)
goto error;
IFACE_RELEASE(collection);
IFACE_RELEASE(enumerator);
return device;
error:
IFACE_RELEASE(collection);
IFACE_RELEASE(enumerator);
if (id)
{
RARCH_WARN("[WASAPI]: Failed to initialize %s device \"%s\".\n", data_flow_name, id);
}
else
{
RARCH_ERR("[WASAPI]: Failed to initialize default %s device.\n", data_flow_name);
}
return NULL;
}
IAudioClient *wasapi_init_client(IMMDevice *device, bool *exclusive,
bool *float_fmt, unsigned *rate, unsigned latency, unsigned channels)
{
HRESULT hr;
IAudioClient *client;
double latency_res;
REFERENCE_TIME device_period = 0;
REFERENCE_TIME stream_latency = 0;
UINT32 buffer_length = 0;
RARCH_DBG("[WASAPI]: Requesting %s %s client (rate=%uHz, latency=%ums).\n",
*exclusive ? "exclusive" : "shared",
*float_fmt ? "float" : "pcm", *rate, latency);
if (*exclusive)
{
client = wasapi_init_client_ex(device, float_fmt, rate, latency, channels);
if (!client)
{
RARCH_WARN("[WASAPI]: Failed to initialize exclusive client, attempting shared client.\n");
client = wasapi_init_client_sh(device, float_fmt, rate, latency, channels);
if (client)
*exclusive = false;
}
}
else
{
client = wasapi_init_client_sh(device, float_fmt, rate, latency, channels);
if (!client)
{
RARCH_WARN("[WASAPI]: Failed to initialize shared client, attempting exclusive client.\n");
client = wasapi_init_client_ex(device, float_fmt, rate, latency, channels);
if (client)
*exclusive = true;
}
}
if (!client)
return NULL;
/* next calls are allowed to fail (we losing info only) */
if (*exclusive)
{
hr = _IAudioClient_GetDevicePeriod(client, NULL, &device_period);
if (SUCCEEDED(hr))
{
RARCH_DBG("[WASAPI]: Minimum exclusive-mode device period is %uns (%.1fms).\n",
device_period * 100, (double)device_period * 100 / 1e6);
}
/* device_period is in 100ns units */
}
else
{
hr = _IAudioClient_GetDevicePeriod(client, &device_period, NULL);
if (SUCCEEDED(hr))
{
RARCH_DBG("[WASAPI]: Default shared-mode device period is %uns (%.1fms).\n",
device_period * 100, (double)device_period * 100 / 1e6);
}
}
if (FAILED(hr))
{
RARCH_WARN("[WASAPI]: IAudioClient::GetDevicePeriod failed: %s\n", hresult_name(hr));
}
if (!*exclusive)
{
hr = _IAudioClient_GetStreamLatency(client, &stream_latency);
if (SUCCEEDED(hr))
{
RARCH_DBG("[WASAPI]: Shared stream latency is %uns (%.1fms).\n",
stream_latency * 100, (double)stream_latency * 100 / 1e6);
}
else
{
RARCH_WARN("[WASAPI]: IAudioClient::GetStreamLatency failed: %s\n", hresult_name(hr));
}
}
hr = _IAudioClient_GetBufferSize(client, &buffer_length);
if (SUCCEEDED(hr))
{
size_t num_samples = buffer_length * channels;
size_t num_bytes = num_samples * (*float_fmt ? sizeof(float) : sizeof(int16_t));
RARCH_DBG("[WASAPI]: Endpoint buffer size is %u frames (%u samples, %u bytes).\n",
buffer_length, num_samples, num_bytes);
}
else
{
RARCH_WARN("[WASAPI]: IAudioClient::GetBufferSize failed: %s.\n", hresult_name(hr));
}
if (*exclusive)
latency_res = (double)buffer_length * 1000.0 / (*rate);
else
{
settings_t *settings = config_get_ptr();
int sh_buffer_length = settings->ints.audio_wasapi_sh_buffer_length;
if (sh_buffer_length < 0)
{
#ifdef USE_CLIENT_BUFFER
latency_res = (double)buffer_length * 1000.0 / (*rate);
#else
latency_res = (double)(stream_latency + device_period) / 10000.0;
#endif
}
else if (sh_buffer_length > 0)
latency_res = sh_buffer_length * 1000.0 / (*rate);
else
latency_res = 0;
}
RARCH_LOG("[WASAPI]: Client initialized (%s, %s, %uHz, %.1fms).\n",
*exclusive ? "exclusive" : "shared",
*float_fmt ? "float" : "pcm",
*rate, latency_res);
RARCH_LOG("[WASAPI]: Client buffer length is %u frames (%.1fms).\n",
buffer_length, (double)buffer_length * 1000.0 / (*rate));
RARCH_LOG("[WASAPI]: Device period is %lld frames (%.1fms).\n",
device_period * (*rate) / 10000000, (double)device_period / 10000.0);
return client;
}
+5 -13
View File
@@ -17,22 +17,14 @@
/**
* Contains WASAPI-specific support functions that are used
* by the WASAPI audio and microphone drivers.
*
*/
#ifndef RETROARCH_COMMON_WASAPI_H
#define RETROARCH_COMMON_WASAPI_H
#include "../common/mmdevice_common_inline.h"
#include "boolean.h"
/* Shared buffer size replacement placeholders */
#define WASAPI_SH_BUFFER_AUDIO_LATENCY 0
#define WASAPI_SH_BUFFER_DEVICE_PERIOD 32
#define WASAPI_SH_BUFFER_CLIENT_BUFFER 64
/* Get automatic buffer size from client buffer instead of device period */
#define USE_CLIENT_BUFFER
const char *hresult_name(HRESULT hr);
const char* wasapi_error(DWORD error);
IMMDevice *wasapi_init_device(const char *id, EDataFlow data_flow);
IAudioClient *wasapi_init_client(IMMDevice *device, bool *exclusive,
bool *float_fmt, unsigned *rate, unsigned latency, unsigned channels);
#endif /* RETROARCH_COMMON_WASAPI_H */
#endif /* RETROARCH_COMMON_WASAPI_H */
+315 -50
View File
@@ -1,6 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2023-2025 - Jesse Talavera-Greenberg
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -20,12 +21,281 @@
#include <string/stdstring.h>
#include <alsa/asoundlib.h>
#include <alsa/pcm.h>
#include <asm-generic/errno.h>
#include "../audio_driver.h"
#include "../common/alsa.h"
#include "../../verbosity.h"
#ifdef HAVE_MICROPHONE
#include "../microphone_driver.h"
#define BYTES_TO_FRAMES(bytes, frame_bits) ((bytes) * 8 / frame_bits)
#define FRAMES_TO_BYTES(frames, frame_bits) ((frames) * frame_bits / 8)
typedef struct alsa_microphone_handle
{
snd_pcm_t *pcm;
alsa_stream_info_t stream_info;
} alsa_microphone_handle_t;
typedef struct alsa_microphone
{
bool nonblock;
} alsa_microphone_t;
static void *alsa_microphone_init(void)
{
alsa_microphone_t *alsa = (alsa_microphone_t*)calloc(1, sizeof(alsa_microphone_t));
if (!alsa)
{
RARCH_ERR("[ALSA] Failed to allocate driver context.\n");
return NULL;
}
RARCH_LOG("[ALSA] Using ALSA version %s.\n", snd_asoundlib_version());
return alsa;
}
static void alsa_microphone_close_mic(void *driver_context, void *mic_context);
static void alsa_microphone_free(void *driver_context)
{
alsa_microphone_t *alsa = (alsa_microphone_t*)driver_context;
/* The mic frontend should've closed all mics before calling free(). */
if (alsa)
{
snd_config_update_free_global();
free(alsa);
}
}
static bool alsa_microphone_start_mic(void *driver_context, void *mic_context);
static int alsa_microphone_read(void *driver_context, void *mic_context, void *s, size_t len)
{
size_t frames_size;
snd_pcm_sframes_t size;
snd_pcm_state_t state;
alsa_microphone_t *alsa = (alsa_microphone_t*)driver_context;
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
uint8_t *buf = (uint8_t*)s;
snd_pcm_sframes_t read = 0;
int errnum = 0;
if (!alsa || !mic || !buf)
return -1;
size = BYTES_TO_FRAMES(len, mic->stream_info.frame_bits);
frames_size = mic->stream_info.has_float ? sizeof(float) : sizeof(int16_t);
state = snd_pcm_state(mic->pcm);
if (state != SND_PCM_STATE_RUNNING)
{
RARCH_WARN("[ALSA] Expected microphone \"%s\" to be in state RUNNING, was in state %s.\n",
snd_pcm_name(mic->pcm),
snd_pcm_state_name(state));
errnum = snd_pcm_start(mic->pcm);
if (errnum < 0)
{
RARCH_ERR("[ALSA] Failed to start microphone \"%s\": %s.\n",
snd_pcm_name(mic->pcm),
snd_strerror(errnum));
return -1;
}
}
if (alsa->nonblock)
{
while (size)
{
snd_pcm_sframes_t frames = snd_pcm_readi(mic->pcm, buf, size);
if (frames == -EPIPE || frames == -EINTR || frames == -ESTRPIPE)
{
errnum = snd_pcm_recover(mic->pcm, frames, 0);
if (errnum < 0)
{
RARCH_ERR("[ALSA] Failed to read from microphone: %s.\n", snd_strerror(frames));
RARCH_ERR("[ALSA] Additionally, recovery failed with: %s.\n", snd_strerror(errnum));
return -1;
}
break;
}
else if (frames == -EAGAIN)
break;
else if (frames < 0)
return -1;
read += frames;
buf += frames_size;
size -= frames;
}
}
else
{
bool eagain_retry = true;
while (size)
{
snd_pcm_sframes_t frames;
int rc = snd_pcm_wait(mic->pcm, -1);
if (rc == -EPIPE || rc == -ESTRPIPE || rc == -EINTR)
{
if (snd_pcm_recover(mic->pcm, rc, 1) < 0)
return -1;
continue;
}
frames = snd_pcm_readi(mic->pcm, buf, size);
if (frames == -EPIPE || frames == -EINTR || frames == -ESTRPIPE)
{
if (snd_pcm_recover(mic->pcm, frames, 1) < 0)
return -1;
break;
}
else if (frames == -EAGAIN)
{
/* Definitely not supposed to happen. */
if (eagain_retry)
{
eagain_retry = false;
continue;
}
break;
}
else if (frames < 0)
return -1;
read += frames;
buf += frames_size;
size -= frames;
}
}
return FRAMES_TO_BYTES(read, mic->stream_info.frame_bits);
}
static bool alsa_microphone_mic_alive(const void *driver_context, const void *mic_context)
{
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
(void)driver_context;
if (!mic)
return false;
return snd_pcm_state(mic->pcm) == SND_PCM_STATE_RUNNING;
}
static void alsa_microphone_set_nonblock_state(void *driver_context, bool nonblock)
{
alsa_microphone_t *alsa = (alsa_microphone_t*)driver_context;
alsa->nonblock = nonblock;
}
static struct string_list *alsa_microphone_device_list_new(const void *data)
{
return alsa_device_list_type_new("Input");
}
static void alsa_microphone_device_list_free(const void *driver_context, struct string_list *devices)
{
(void)driver_context;
string_list_free(devices);
/* Does nothing if devices is NULL */
}
static void *alsa_microphone_open_mic(void *driver_context,
const char *device,
unsigned rate,
unsigned latency,
unsigned *new_rate)
{
alsa_microphone_t *alsa = (alsa_microphone_t*)driver_context;
alsa_microphone_handle_t *mic = NULL;
if (!alsa) /* If we weren't given a valid ALSA context... */
return NULL;
/* If the microphone context couldn't be allocated... */
if (!(mic = calloc(1, sizeof(alsa_microphone_handle_t))))
return NULL;
/* channels hardcoded to 1, because we only support mono mic input */
if (alsa_init_pcm(&mic->pcm, device, SND_PCM_STREAM_CAPTURE, rate, latency, 1,
&mic->stream_info, new_rate, SND_PCM_NONBLOCK) < 0)
goto error;
return mic;
error:
RARCH_ERR("[ALSA] Failed to initialize microphone.\n");
alsa_microphone_close_mic(alsa, mic);
return NULL;
}
static void alsa_microphone_close_mic(void *driver_context, void *mic_context)
{
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
(void)driver_context;
if (mic)
{
alsa_free_pcm(mic->pcm);
free(mic);
}
}
static bool alsa_microphone_start_mic(void *driver_context, void *mic_context)
{
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
if (!mic)
return false;
return alsa_start_pcm(mic->pcm);
}
static bool alsa_microphone_stop_mic(void *driver_context, void *mic_context)
{
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
if (!mic)
return false;
return alsa_stop_pcm(mic->pcm);
}
static bool alsa_microphone_mic_use_float(const void *driver_context, const void *mic_context)
{
alsa_microphone_handle_t *mic = (alsa_microphone_handle_t*)mic_context;
return mic->stream_info.has_float;
}
microphone_driver_t microphone_alsa = {
alsa_microphone_init,
alsa_microphone_free,
alsa_microphone_read,
alsa_microphone_set_nonblock_state,
"alsa",
alsa_microphone_device_list_new,
alsa_microphone_device_list_free,
alsa_microphone_open_mic,
alsa_microphone_close_mic,
alsa_microphone_mic_alive,
alsa_microphone_start_mic,
alsa_microphone_stop_mic,
alsa_microphone_mic_use_float
};
#endif
typedef struct alsa
{
snd_pcm_t *pcm;
@@ -49,21 +319,20 @@ static void *alsa_init(const char *device, unsigned rate, unsigned latency,
if (!alsa)
{
RARCH_ERR("[ALSA]: Failed to allocate driver context\n");
RARCH_ERR("[ALSA] Failed to allocate driver context.\n");
return NULL;
}
RARCH_LOG("[ALSA]: Using ALSA version %s\n", snd_asoundlib_version());
RARCH_LOG("[ALSA] Using ALSA version %s.\n", snd_asoundlib_version());
if (alsa_init_pcm(&alsa->pcm, device, SND_PCM_STREAM_PLAYBACK, rate, latency, 2, &alsa->stream_info, new_rate, SND_PCM_NONBLOCK) < 0)
{
if (alsa_init_pcm(&alsa->pcm, device, SND_PCM_STREAM_PLAYBACK, rate,
latency, 2, &alsa->stream_info, new_rate, SND_PCM_NONBLOCK) < 0)
goto error;
}
return alsa;
error:
RARCH_ERR("[ALSA]: Failed to initialize...\n");
RARCH_ERR("[ALSA] Failed to initialize.\n");
alsa_free(alsa);
@@ -73,20 +342,41 @@ error:
#define BYTES_TO_FRAMES(bytes, frame_bits) ((bytes) * 8 / frame_bits)
#define FRAMES_TO_BYTES(frames, frame_bits) ((frames) * frame_bits / 8)
static bool alsa_start(void *data, bool is_shutdown);
static ssize_t alsa_write(void *data, const void *buf_, size_t size_)
static bool alsa_start(void *data, bool is_shutdown)
{
alsa_t *alsa = (alsa_t*)data;
const uint8_t *buf = (const uint8_t*)buf_;
snd_pcm_sframes_t written = 0;
snd_pcm_sframes_t size = BYTES_TO_FRAMES(size_, alsa->stream_info.frame_bits);
size_t frames_size = alsa->stream_info.has_float ? sizeof(float) : sizeof(int16_t);
alsa_t *alsa = (alsa_t*)data;
if (!alsa->is_paused)
return true;
if ( alsa->stream_info.can_pause
&& alsa->is_paused)
{
int ret = snd_pcm_pause(alsa->pcm, 0);
if (ret < 0)
{
RARCH_ERR("[ALSA] Failed to unpause: %s.\n",
snd_strerror(ret));
return false;
}
alsa->is_paused = false;
}
return true;
}
static ssize_t alsa_write(void *data, const void *buf_, size_t len)
{
ssize_t _len = 0;
alsa_t *alsa = (alsa_t*)data;
const uint8_t *buf = (const uint8_t*)buf_;
snd_pcm_sframes_t size = BYTES_TO_FRAMES(len, alsa->stream_info.frame_bits);
size_t frames_size = alsa->stream_info.has_float ? sizeof(float) : sizeof(int16_t);
/* Workaround buggy menu code.
* If a write happens while we're paused, we might never progress. */
if (alsa->is_paused)
if (!alsa_start(alsa, false))
return -1;
if (alsa->is_paused && !alsa_start(alsa, false))
return -1;
if (alsa->nonblock)
{
@@ -106,9 +396,9 @@ static ssize_t alsa_write(void *data, const void *buf_, size_t size_)
else if (frames < 0)
return -1;
written += frames;
buf += (frames << 1) * frames_size;
size -= frames;
_len += frames;
buf += (frames << 1) * frames_size;
size -= frames;
}
}
else
@@ -149,13 +439,13 @@ static ssize_t alsa_write(void *data, const void *buf_, size_t size_)
else if (frames < 0)
return -1;
written += frames;
buf += (frames << 1) * frames_size;
size -= frames;
_len += frames;
buf += (frames << 1) * frames_size;
size -= frames;
}
}
return written;
return _len;
}
static bool alsa_alive(void *data)
@@ -192,29 +482,6 @@ static void alsa_set_nonblock_state(void *data, bool state)
alsa->nonblock = state;
}
static bool alsa_start(void *data, bool is_shutdown)
{
alsa_t *alsa = (alsa_t*)data;
if (!alsa->is_paused)
return true;
if (alsa->stream_info.can_pause
&& alsa->is_paused)
{
int ret = snd_pcm_pause(alsa->pcm, 0);
if (ret < 0)
{
RARCH_ERR("[ALSA]: Failed to unpause: %s.\n",
snd_strerror(ret));
return false;
}
alsa->is_paused = false;
}
return true;
}
static void alsa_free(void *data)
{
alsa_t *alsa = (alsa_t*)data;
@@ -254,10 +521,8 @@ void alsa_device_list_free(void *data, void *array_list_data)
{
struct string_list *s = (struct string_list*)array_list_data;
if (!s)
return;
string_list_free(s);
if (s)
string_list_free(s);
}
audio_driver_t audio_alsa = {
+35 -36
View File
@@ -64,14 +64,14 @@ static void *alsa_qsa_init(const char *device,
if ((err = snd_pcm_open_preferred(&alsa->pcm, &card, &dev,
SND_PCM_OPEN_PLAYBACK)) < 0)
{
RARCH_ERR("[ALSA QSA]: Audio open error: %s\n",
RARCH_ERR("[ALSA QSA] Audio open error: %s.\n",
snd_strerror(err));
goto error;
}
if ((err = snd_pcm_nonblock_mode(alsa->pcm, 1)) < 0)
{
RARCH_ERR("[ALSA QSA]: Can't set blocking mode: %s\n",
RARCH_ERR("[ALSA QSA] Can't set blocking mode: %s.\n",
snd_strerror(err));
goto error;
}
@@ -80,7 +80,7 @@ static void *alsa_qsa_init(const char *device,
pi.channel = SND_PCM_CHANNEL_PLAYBACK;
if ((err = snd_pcm_channel_info(alsa->pcm, &pi)) < 0)
{
RARCH_ERR("[ALSA QSA]: snd_pcm_channel_info failed: %s\n",
RARCH_ERR("[ALSA QSA] snd_pcm_channel_info failed: %s.\n",
snd_strerror(err));
goto error;
}
@@ -88,27 +88,27 @@ static void *alsa_qsa_init(const char *device,
memset(&params, 0, sizeof(params));
params.channel = SND_PCM_CHANNEL_PLAYBACK;
params.mode = SND_PCM_MODE_BLOCK;
params.mode = SND_PCM_MODE_BLOCK;
params.format.interleave = 1;
params.format.format = SND_PCM_SFMT_S16_LE;
params.format.rate = DEFAULT_RATE;
params.format.voices = 2;
params.format.format = SND_PCM_SFMT_S16_LE;
params.format.rate = DEFAULT_RATE;
params.format.voices = 2;
params.start_mode = SND_PCM_START_FULL;
params.stop_mode = SND_PCM_STOP_STOP;
params.stop_mode = SND_PCM_STOP_STOP;
params.buf.block.frag_size = pi.max_fragment_size;
params.buf.block.frags_min = 2;
params.buf.block.frags_max = 8;
RARCH_LOG("Fragment size: %d\n", params.buf.block.frag_size);
RARCH_LOG("Min Fragment size: %d\n", params.buf.block.frags_min);
RARCH_LOG("Max Fragment size: %d\n", params.buf.block.frags_max);
RARCH_LOG("[ALSA QSA] Fragment size: %d.\n", params.buf.block.frag_size);
RARCH_LOG("[ALSA QSA] Min Fragment size: %d.\n", params.buf.block.frags_min);
RARCH_LOG("[ALSA QSA] Max Fragment size: %d.\n", params.buf.block.frags_max);
if ((err = snd_pcm_channel_params(alsa->pcm, &params)) < 0)
{
RARCH_ERR("[ALSA QSA]: Channel Parameter Error: %s\n",
RARCH_ERR("[ALSA QSA] Channel Parameter Error: %s.\n",
snd_strerror(err));
goto error;
}
@@ -117,7 +117,7 @@ static void *alsa_qsa_init(const char *device,
if ((err = snd_pcm_channel_setup(alsa->pcm, &setup)) < 0)
{
RARCH_ERR("[ALSA QSA]: Channel Parameter Read Back Error: %s\n",
RARCH_ERR("[ALSA QSA] Channel Parameter Read Back Error: %s.\n",
snd_strerror(err));
goto error;
}
@@ -127,7 +127,7 @@ static void *alsa_qsa_init(const char *device,
else
alsa->buf_size = next_pow2(32 * latency);
RARCH_LOG("[ALSA QSA]: buffer size: %u bytes\n", alsa->buf_size);
RARCH_LOG("[ALSA QSA] Buffer size: %u bytes.\n", alsa->buf_size);
alsa->buf_count = (latency * 4 * rate + 500) / 1000;
alsa->buf_count = (alsa->buf_count + alsa->buf_size / 2) / alsa->buf_size;
@@ -135,7 +135,7 @@ static void *alsa_qsa_init(const char *device,
if ((err = snd_pcm_channel_prepare(alsa->pcm,
SND_PCM_CHANNEL_PLAYBACK)) < 0)
{
RARCH_ERR("[ALSA QSA]: Channel Prepare Error: %s\n",
RARCH_ERR("[ALSA QSA] Channel Prepare Error: %s.\n",
snd_strerror(err));
goto error;
}
@@ -153,7 +153,7 @@ static void *alsa_qsa_init(const char *device,
alsa->has_float = false;
alsa->can_pause = true;
RARCH_LOG("[ALSA QSA]: Can pause: %s.\n",
RARCH_LOG("[ALSA QSA] Can pause: %s.\n",
alsa->can_pause ? "yes" : "no");
return alsa;
@@ -175,35 +175,35 @@ static int check_pcm_status(void *data, int channel_type)
{
if (status.status == SND_PCM_STATUS_UNSECURE)
{
RARCH_ERR("check_pcm_status got SND_PCM_STATUS_UNSECURE, aborting playback\n");
RARCH_ERR("[ALSA QSA] check_pcm_status got SND_PCM_STATUS_UNSECURE, aborting playback.\n");
ret = -EPROTO;
}
else if (status.status == SND_PCM_STATUS_UNDERRUN)
{
RARCH_LOG("check_pcm_status: SNDP_CM_STATUS_UNDERRUN.\n");
RARCH_LOG("[ALSA QSA] check_pcm_status: SNDP_CM_STATUS_UNDERRUN.\n");
if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0)
{
RARCH_ERR("Invalid state detected for underrun on snd_pcm_channel_prepare: %s\n",
RARCH_ERR("[ALSA QSA] Invalid state detected for underrun on snd_pcm_channel_prepare: %s.\n",
snd_strerror(ret));
ret = -EPROTO;
}
}
else if (status.status == SND_PCM_STATUS_OVERRUN)
{
RARCH_LOG("check_pcm_status: SNDP_CM_STATUS_OVERRUN.\n");
RARCH_LOG("[ALSA QSA] check_pcm_status: SNDP_CM_STATUS_OVERRUN.\n");
if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0)
{
RARCH_ERR("Invalid state detected for overrun on snd_pcm_channel_prepare: %s\n",
RARCH_ERR("[ALSA QSA] Invalid state detected for overrun on snd_pcm_channel_prepare: %s.\n",
snd_strerror(ret));
ret = -EPROTO;
}
}
else if (status.status == SND_PCM_STATUS_CHANGE)
{
RARCH_LOG("check_pcm_status: SNDP_CM_STATUS_CHANGE.\n");
RARCH_LOG("[ALSA QSA] check_pcm_status: SNDP_CM_STATUS_CHANGE.\n");
if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0)
{
RARCH_ERR("Invalid state detected for change on snd_pcm_channel_prepare: %s\n",
RARCH_ERR("[ALSA QSA] Invalid state detected for change on snd_pcm_channel_prepare: %s.\n",
snd_strerror(ret));
ret = -EPROTO;
}
@@ -211,7 +211,7 @@ static int check_pcm_status(void *data, int channel_type)
}
else
{
RARCH_ERR("check_pcm_status failed: %s\n", snd_strerror(ret));
RARCH_ERR("[ALSA QSA] check_pcm_status failed: %s.\n", snd_strerror(ret));
if (ret == -ESRCH)
ret = -EBADF;
}
@@ -219,24 +219,24 @@ static int check_pcm_status(void *data, int channel_type)
return ret;
}
static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size)
static ssize_t alsa_qsa_write(void *data, const void *buf, size_t len)
{
alsa_qsa_t *alsa = (alsa_qsa_t*)data;
snd_pcm_sframes_t written = 0;
ssize_t _len = 0;
alsa_qsa_t *alsa = (alsa_qsa_t*)data;
while (size)
{
size_t avail_write = MIN(alsa->buf_size - alsa->buffer_ptr, size);
size_t avail_write = MIN(alsa->buf_size - alsa->buffer_ptr, len);
if (avail_write)
{
memcpy(alsa->buffer[alsa->buffer_index] +
alsa->buffer_ptr, buf, avail_write);
alsa->buffer_ptr += avail_write;
buf = (void*)((uint8_t*)buf + avail_write);
size -= avail_write;
written += avail_write;
alsa->buffer_ptr += avail_write;
buf = (void*)((uint8_t*)buf + avail_write);
len -= avail_write;
_len += avail_write;
}
if (alsa->buffer_ptr >= alsa->buf_size)
@@ -260,10 +260,9 @@ static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size)
return -1;
}
}
}
return written;
return _len;
}
static bool alsa_qsa_stop(void *data)
@@ -300,7 +299,7 @@ static bool alsa_qsa_start(void *data, bool is_shutdown)
if (ret < 0)
{
RARCH_ERR("[ALSA QSA]: Failed to unpause: %s.\n",
RARCH_ERR("[ALSA QSA] Failed to unpause: %s.\n",
snd_strerror(ret));
return false;
}
@@ -318,7 +317,7 @@ static void alsa_qsa_set_nonblock_state(void *data, bool state)
if ((err = snd_pcm_nonblock_mode(alsa->pcm, state)) < 0)
{
RARCH_ERR("Can't set blocking mode to %d: %s\n", state,
RARCH_ERR("[ALSA QSA] Can't set blocking mode to %d: %s.\n", state,
snd_strerror(err));
return;
}
+436 -35
View File
@@ -1,6 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2012-2015 - Michael Lelli
* Copyright (C) 2023-2025 - Jesse Talavera-Greenberg
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -15,8 +16,10 @@
*/
#include <stdlib.h>
#include <boolean.h>
#include <alsa/asoundlib.h>
#include <alsa/pcm.h>
#include <rthreads/rthreads.h>
#include <queues/fifo_queue.h>
@@ -25,9 +28,412 @@
#include "../audio_driver.h"
#include "../common/alsa.h" /* For some common functions/types */
#include "../common/alsathread.h"
#include "../../verbosity.h"
typedef struct alsa_thread_info
{
snd_pcm_t *pcm;
fifo_buffer_t *buffer;
sthread_t *worker_thread;
slock_t *fifo_lock;
scond_t *cond;
slock_t *cond_lock;
alsa_stream_info_t stream_info;
volatile bool thread_dead;
} alsa_thread_info_t;
static void alsa_thread_free_info_members(alsa_thread_info_t *info)
{
if (info)
{
if (info->worker_thread)
{
slock_lock(info->cond_lock);
info->thread_dead = true;
slock_unlock(info->cond_lock);
sthread_join(info->worker_thread);
}
if (info->buffer)
fifo_free(info->buffer);
if (info->cond)
scond_free(info->cond);
if (info->fifo_lock)
slock_free(info->fifo_lock);
if (info->cond_lock)
slock_free(info->cond_lock);
if (info->pcm)
alsa_free_pcm(info->pcm);
}
/* Do NOT free() info itself; it's embedded within another struct
* that will be freed. */
}
#ifdef HAVE_MICROPHONE
#include "../microphone_driver.h"
typedef struct alsa_thread_microphone_handle
{
alsa_thread_info_t info;
} alsa_thread_microphone_handle_t;
typedef struct alsa_thread_microphone
{
bool nonblock;
} alsa_thread_microphone_t;
static void *alsa_thread_microphone_init(void)
{
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)calloc(1, sizeof(alsa_thread_microphone_t));
if (!alsa)
{
RARCH_ERR("[ALSA] Failed to allocate driver context.\n");
return NULL;
}
RARCH_LOG("[ALSA] Using ALSA version %s\n", snd_asoundlib_version());
return alsa;
}
/* Forward declaration */
static void alsa_thread_microphone_close_mic(void *driver_context, void *mic_context);
static void alsa_thread_microphone_free(void *driver_context)
{
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
if (alsa)
free(alsa);
}
/** @see alsa_thread_read_microphone() */
static void alsa_microphone_worker_thread(void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
uint8_t *buf = NULL;
uintptr_t thread_id = sthread_get_current_thread_id();
if (!(buf = (uint8_t *)calloc(1, mic->info.stream_info.period_size)))
{
RARCH_ERR("[ALSA] [capture thread %p] Failed to allocate audio buffer.\n", thread_id);
goto end;
}
RARCH_DBG("[ALSA] [capture thread %p] Beginning microphone worker thread.\n", thread_id);
RARCH_DBG("[ALSA] [capture thread %p] Microphone \"%s\" is in state %s.\n",
thread_id,
snd_pcm_name(mic->info.pcm),
snd_pcm_state_name(snd_pcm_state(mic->info.pcm)));
/* Until we're told to stop... */
while (!mic->info.thread_dead)
{
size_t avail;
size_t fifo_size;
snd_pcm_sframes_t frames;
int errnum = 0;
/* Lock the incoming sample queue (the main thread may block) */
slock_lock(mic->info.fifo_lock);
/* Fill the incoming sample queue with whatever we recently read */
avail = FIFO_WRITE_AVAIL(mic->info.buffer);
fifo_size = MIN(mic->info.stream_info.period_size, avail);
fifo_write(mic->info.buffer, buf, fifo_size);
/* Tell the main thread that it's okay to query the mic again */
scond_signal(mic->info.cond);
/* Unlock the incoming sample queue (the main thread may resume) */
slock_unlock(mic->info.fifo_lock);
/* If underrun, fill rest with silence. */
memset(buf + fifo_size, 0, mic->info.stream_info.period_size - fifo_size);
errnum = snd_pcm_wait(mic->info.pcm, 33);
if (errnum == 0)
{
RARCH_DBG("[ALSA] [capture thread %p] Timeout after 33ms waiting for input.\n", thread_id);
continue;
}
else if (errnum == -EPIPE || errnum == -ESTRPIPE || errnum == -EINTR)
{
RARCH_WARN("[ALSA] [capture thread %p] Wait error: %s.\n",
thread_id,
snd_strerror(errnum));
if ((errnum = snd_pcm_recover(mic->info.pcm, errnum, false)) < 0)
{
RARCH_ERR("[ALSA] [capture thread %p] Failed to recover from prior wait error: %s.\n",
thread_id,
snd_strerror(errnum));
break;
}
continue;
}
frames = snd_pcm_readi(mic->info.pcm, buf, mic->info.stream_info.period_frames);
if (frames == -EPIPE || frames == -EINTR || frames == -ESTRPIPE)
{
RARCH_WARN("[ALSA] [capture thread %p] Read error: %s.\n",
thread_id,
snd_strerror(frames));
if ((errnum = snd_pcm_recover(mic->info.pcm, frames, false)) < 0)
{
RARCH_ERR("[ALSA] [capture thread %p] Failed to recover from prior read error: %s.\n",
thread_id,
snd_strerror(errnum));
break;
}
continue;
}
else if (frames < 0)
{
RARCH_ERR("[ALSA] [capture thread %p] Read error: %s.\n",
thread_id,
snd_strerror(frames));
break;
}
}
end:
slock_lock(mic->info.cond_lock);
mic->info.thread_dead = true;
scond_signal(mic->info.cond);
slock_unlock(mic->info.cond_lock);
free(buf);
RARCH_DBG("[ALSA] [capture thread %p] Ending microphone worker thread.\n", thread_id);
}
static int alsa_thread_microphone_read(void *driver_context, void *mic_context, void *sv, size_t len)
{
snd_pcm_state_t state;
size_t _len = 0;
uint8_t *s = (uint8_t*)sv;
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
if (!alsa || !mic || !s) /* If any of the parameters were invalid... */
return -1;
if (mic->info.thread_dead) /* If the mic thread is shutting down... */
return -1;
state = snd_pcm_state(mic->info.pcm);
if (state != SND_PCM_STATE_RUNNING)
{
int errnum;
RARCH_WARN("[ALSA] Expected microphone \"%s\" to be in state RUNNING, was in state %s.\n",
snd_pcm_name(mic->info.pcm), snd_pcm_state_name(state));
errnum = snd_pcm_start(mic->info.pcm);
if (errnum < 0)
{
RARCH_ERR("[ALSA] Failed to start microphone \"%s\": %s.\n",
snd_pcm_name(mic->info.pcm), snd_strerror(errnum));
return -1;
}
}
/* If driver interactions shouldn't block... */
if (alsa->nonblock)
{
size_t avail;
/* "Hey, I'm gonna borrow the queue." */
slock_lock(mic->info.fifo_lock);
avail = FIFO_READ_AVAIL(mic->info.buffer);
_len = MIN(avail, len);
/* "It's okay if you don't have any new samples, I'll just check in on you later." */
fifo_read(mic->info.buffer, s, _len);
/* "Here, take this queue back." */
slock_unlock(mic->info.fifo_lock);
}
else
{
/* Until we've read all requested samples (or we're told to stop)... */
while (_len < len && !mic->info.thread_dead)
{
size_t avail;
/* "Hey, I'm gonna borrow the queue." */
slock_lock(mic->info.fifo_lock);
avail = FIFO_READ_AVAIL(mic->info.buffer);
if (avail == 0)
{ /* "Oh, wait, it's empty." */
/* "Here, take it back..." */
slock_unlock(mic->info.fifo_lock);
/* "...I'll just wait right here." */
slock_lock(mic->info.cond_lock);
/* "Unless we're closing up shop..." */
if (!mic->info.thread_dead)
/* "...let me know when you've produced some samples." */
scond_wait(mic->info.cond, mic->info.cond_lock);
/* "Oh, you're ready? Okay, I'm gonna continue." */
slock_unlock(mic->info.cond_lock);
}
else
{
size_t read_amt = MIN(len - _len, avail);
/* "I'll just go ahead and consume all these samples..."
* (As many as will fit in s, or as many as are available.) */
fifo_read(mic->info.buffer,s + _len, read_amt);
/* "I'm done, you can take the queue back now." */
slock_unlock(mic->info.fifo_lock);
_len += read_amt;
}
/* "I'll be right back..." */
}
}
return _len;
}
static bool alsa_thread_microphone_mic_alive(const void *driver_context, const void *mic_context);
static void *alsa_thread_microphone_open_mic(void *driver_context,
const char *device, unsigned rate, unsigned latency, unsigned *new_rate)
{
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
alsa_thread_microphone_handle_t *mic = NULL;
if (!alsa) /* If we weren't given a valid ALSA context... */
return NULL;
/* If the microphone context couldn't be allocated... */
if (!(mic = calloc(1, sizeof(alsa_thread_microphone_handle_t))))
{
RARCH_ERR("[ALSA] Failed to allocate microphone context.\n");
return NULL;
}
if (alsa_init_pcm(&mic->info.pcm, device, SND_PCM_STREAM_CAPTURE, rate, latency,
1, &mic->info.stream_info, new_rate, 0) < 0)
goto error;
mic->info.fifo_lock = slock_new();
mic->info.cond_lock = slock_new();
mic->info.cond = scond_new();
mic->info.buffer = fifo_new(mic->info.stream_info.buffer_size);
if (!mic->info.fifo_lock || !mic->info.cond_lock || !mic->info.cond || !mic->info.buffer || !mic->info.pcm)
goto error;
mic->info.worker_thread = sthread_create(alsa_microphone_worker_thread, mic);
if (!mic->info.worker_thread)
{
RARCH_ERR("[ALSA] Failed to initialize microphone worker thread.\n");
goto error;
}
RARCH_DBG("[ALSA] Initialized microphone worker thread.\n");
return mic;
error:
RARCH_ERR("[ALSA] Failed to initialize microphone.\n");
if (mic)
{
if (mic->info.pcm)
snd_pcm_close(mic->info.pcm);
alsa_thread_microphone_close_mic(alsa, mic);
}
return NULL;
}
static void alsa_thread_microphone_close_mic(void *driver_context, void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
if (mic)
{
alsa_thread_free_info_members(&mic->info);
free(mic);
}
}
static bool alsa_thread_microphone_mic_alive(const void *driver_context, const void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t *)mic_context;
if (!mic)
return false;
return snd_pcm_state(mic->info.pcm) == SND_PCM_STATE_RUNNING;
}
static void alsa_thread_microphone_set_nonblock_state(void *driver_context, bool state)
{
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
alsa->nonblock = state;
}
static struct string_list *alsa_thread_microphone_device_list_new(const void *data)
{
return alsa_device_list_type_new("Input");
}
static void alsa_thread_microphone_device_list_free(const void *driver_context, struct string_list *devices)
{
string_list_free(devices);
/* Does nothing if devices is NULL */
}
static bool alsa_thread_microphone_start_mic(void *driver_context, void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
if (!mic)
return false;
return alsa_start_pcm(mic->info.pcm);
}
static bool alsa_thread_microphone_stop_mic(void *driver_context, void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
if (!mic)
return false;
return alsa_stop_pcm(mic->info.pcm);
}
static bool alsa_thread_microphone_mic_use_float(const void *driver_context, const void *mic_context)
{
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
return mic->info.stream_info.has_float;
}
microphone_driver_t microphone_alsathread = {
alsa_thread_microphone_init,
alsa_thread_microphone_free,
alsa_thread_microphone_read,
alsa_thread_microphone_set_nonblock_state,
"alsathread",
alsa_thread_microphone_device_list_new,
alsa_thread_microphone_device_list_free,
alsa_thread_microphone_open_mic,
alsa_thread_microphone_close_mic,
alsa_thread_microphone_mic_alive,
alsa_thread_microphone_start_mic,
alsa_thread_microphone_stop_mic,
alsa_thread_microphone_mic_use_float
};
#endif
typedef struct alsa_thread
{
alsa_thread_info_t info;
@@ -43,11 +449,11 @@ static void alsa_worker_thread(void *data)
if (!buf)
{
RARCH_ERR("[ALSA] [playback thread %u]: Failed to allocate audio buffer\n", thread_id);
RARCH_ERR("[ALSA] [playback thread %u] Failed to allocate audio buffer.\n", thread_id);
goto end;
}
RARCH_DBG("[ALSA] [playback thread %p]: Beginning playback worker thread\n", thread_id);
RARCH_DBG("[ALSA] [playback thread %p] Beginning playback worker thread.\n", thread_id);
while (!alsa->info.thread_dead)
{
size_t avail;
@@ -65,12 +471,13 @@ static void alsa_worker_thread(void *data)
frames = snd_pcm_writei(alsa->info.pcm, buf, alsa->info.stream_info.period_frames);
if (frames == -EPIPE || frames == -EINTR ||
frames == -ESTRPIPE)
if ( frames == -EPIPE
|| frames == -EINTR
|| frames == -ESTRPIPE)
{
if (snd_pcm_recover(alsa->info.pcm, frames, false) < 0)
{
RARCH_ERR("[ALSA] [playback thread %u]: Failed to recover from error: %s\n",
RARCH_ERR("[ALSA] [playback thread %u] Failed to recover from error: %s.\n",
thread_id,
snd_strerror(frames));
break;
@@ -80,7 +487,7 @@ static void alsa_worker_thread(void *data)
}
else if (frames < 0)
{
RARCH_ERR("[ALSA] [playback thread %u]: Error writing audio to device: %s\n",
RARCH_ERR("[ALSA] [playback thread %u] Error writing audio to device: %s.\n",
thread_id,
snd_strerror(frames));
break;
@@ -93,7 +500,7 @@ end:
scond_signal(alsa->info.cond);
slock_unlock(alsa->info.cond_lock);
free(buf);
RARCH_DBG("[ALSA] [playback thread %p]: Ending playback worker thread\n", thread_id);
RARCH_DBG("[ALSA] [playback thread %p] Ending playback worker thread...\n", thread_id);
}
static bool alsa_thread_use_float(void *data)
@@ -122,43 +529,43 @@ static void *alsa_thread_init(const char *device,
if (!alsa)
{
RARCH_ERR("[ALSA] Failed to allocate driver context\n");
RARCH_ERR("[ALSA] Failed to allocate driver context.\n");
return NULL;
}
RARCH_LOG("[ALSA] Using ALSA version %s\n", snd_asoundlib_version());
RARCH_LOG("[ALSA] Using ALSA version %s.\n", snd_asoundlib_version());
if (alsa_init_pcm(&alsa->info.pcm, device, SND_PCM_STREAM_PLAYBACK, rate, latency, 2, &alsa->info.stream_info, new_rate, 0) < 0)
{
if (alsa_init_pcm(&alsa->info.pcm, device, SND_PCM_STREAM_PLAYBACK, rate,
latency, 2, &alsa->info.stream_info, new_rate, 0) < 0)
goto error;
}
alsa->info.fifo_lock = slock_new();
alsa->info.cond_lock = slock_new();
alsa->info.cond = scond_new();
alsa->info.buffer = fifo_new(alsa->info.stream_info.buffer_size);
alsa->info.cond = scond_new();
alsa->info.buffer = fifo_new(alsa->info.stream_info.buffer_size);
if (!alsa->info.fifo_lock || !alsa->info.cond_lock || !alsa->info.cond || !alsa->info.buffer)
goto error;
alsa->info.worker_thread = sthread_create(alsa_worker_thread, alsa);
if (!alsa->info.worker_thread)
{
RARCH_ERR("[ALSA]: Failed to initialize worker thread\n");
RARCH_ERR("[ALSA] Failed to initialize worker thread.\n");
goto error;
}
return alsa;
error:
RARCH_ERR("[ALSA]: Failed to initialize...\n");
RARCH_ERR("[ALSA] Failed to initialize.\n");
alsa_thread_free(alsa);
return NULL;
}
static ssize_t alsa_thread_write(void *data, const void *buf, size_t size)
static ssize_t alsa_thread_write(void *data, const void *s, size_t len)
{
ssize_t _len = 0;
alsa_thread_t *alsa = (alsa_thread_t*)data;
if (alsa->info.thread_dead)
@@ -167,21 +574,17 @@ static ssize_t alsa_thread_write(void *data, const void *buf, size_t size)
if (alsa->nonblock)
{
size_t avail;
size_t write_amt;
slock_lock(alsa->info.fifo_lock);
avail = FIFO_WRITE_AVAIL(alsa->info.buffer);
write_amt = MIN(avail, size);
avail = FIFO_WRITE_AVAIL(alsa->info.buffer);
_len = MIN(avail, len);
fifo_write(alsa->info.buffer, buf, write_amt);
fifo_write(alsa->info.buffer, s, _len);
slock_unlock(alsa->info.fifo_lock);
return write_amt;
}
else
{
size_t written = 0;
while (written < size && !alsa->info.thread_dead)
while (_len < (ssize_t)len && !alsa->info.thread_dead)
{
size_t avail;
slock_lock(alsa->info.fifo_lock);
@@ -197,15 +600,15 @@ static ssize_t alsa_thread_write(void *data, const void *buf, size_t size)
}
else
{
size_t write_amt = MIN(size - written, avail);
size_t write_amt = MIN(len - _len, avail);
fifo_write(alsa->info.buffer,
(const char*)buf + written, write_amt);
(const char*)s + _len, write_amt);
slock_unlock(alsa->info.fifo_lock);
written += write_amt;
_len += write_amt;
}
}
return written;
}
return _len;
}
static bool alsa_thread_alive(void *data)
@@ -219,7 +622,6 @@ static bool alsa_thread_alive(void *data)
static bool alsa_thread_stop(void *data)
{
alsa_thread_t *alsa = (alsa_thread_t*)data;
if (alsa)
alsa->is_paused = true;
return true;
@@ -242,15 +644,14 @@ static bool alsa_thread_start(void *data, bool is_shutdown)
static size_t alsa_thread_write_avail(void *data)
{
size_t _len;
alsa_thread_t *alsa = (alsa_thread_t*)data;
size_t val;
if (alsa->info.thread_dead)
return 0;
slock_lock(alsa->info.fifo_lock);
val = FIFO_WRITE_AVAIL(alsa->info.buffer);
_len = FIFO_WRITE_AVAIL(alsa->info.buffer);
slock_unlock(alsa->info.fifo_lock);
return val;
return _len;
}
static size_t alsa_thread_buffer_size(void *data)
+17 -21
View File
@@ -33,12 +33,11 @@
#define DEFAULT_DEV "/dev/audio"
static void *audioio_init(const char *device, unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_out_rate)
unsigned block_frames, unsigned *new_out_rate)
{
struct audio_info info;
const char *audiodev = device ? device : DEFAULT_DEV;
int *fd = (int*)calloc(1, sizeof(int));
const char *audiodev = device ? device : DEFAULT_DEV;
int *fd = (int*)calloc(1, sizeof(int));
if (!fd)
return NULL;
@@ -46,17 +45,17 @@ static void *audioio_init(const char *device, unsigned rate, unsigned latency,
AUDIO_INITINFO(&info);
#ifdef AUMODE_PLAY_ALL
info.mode = AUMODE_PLAY_ALL;
info.mode = AUMODE_PLAY_ALL;
#elif defined(AUMODE_PLAY)
info.mode = AUMODE_PLAY;
info.mode = AUMODE_PLAY;
#endif
info.play.sample_rate = rate;
info.play.channels = 2;
info.play.precision = 16;
info.play.channels = 2;
info.play.precision = 16;
#ifdef AUDIO_ENCODING_SLINEAR
info.play.encoding = AUDIO_ENCODING_SLINEAR;
info.play.encoding = AUDIO_ENCODING_SLINEAR;
#else
info.play.encoding = AUDIO_ENCODING_LINEAR;
info.play.encoding = AUDIO_ENCODING_LINEAR;
#endif
if ((*fd = open(audiodev, O_WRONLY)) < 0)
@@ -82,15 +81,15 @@ error:
return NULL;
}
static ssize_t audioio_write(void *data, const void *buf, size_t size)
static ssize_t audioio_write(void *data, const void *s, size_t len)
{
ssize_t ret;
ssize_t _len;
int *fd = (int*)data;
if (size == 0)
if (len == 0)
return 0;
if ((ret = write(*fd, buf, size)) < 0)
if ((_len = write(*fd, s, len)) < 0)
{
if (errno == EAGAIN && (fcntl(*fd, F_GETFL) & O_NONBLOCK))
return 0;
@@ -98,7 +97,7 @@ static ssize_t audioio_write(void *data, const void *buf, size_t size)
return -1;
}
return ret;
return _len;
}
static bool audioio_stop(void *data)
@@ -158,7 +157,7 @@ static void audioio_set_nonblock_state(void *data, bool state)
else
rc = fcntl(*fd, F_SETFL, fcntl(*fd, F_GETFL) & (~O_NONBLOCK));
if (rc != 0)
RARCH_WARN("Could not set nonblocking on audio file descriptor. Will not be able to fast-forward.\n");
RARCH_WARN("[AudioIO] Could not set nonblocking on audio file descriptor. Will not be able to fast-forward.\n");
}
static void audioio_free(void *data)
@@ -189,11 +188,8 @@ static size_t audioio_write_avail(void *data)
return audioio_buffer_size(data);
}
static bool audioio_use_float(void *data)
{
(void)data;
return false;
}
/* TODO/FIXME - implement? */
static bool audioio_use_float(void *data) { return false; }
audio_driver_t audio_audioio = {
audioio_init,
+537
View File
@@ -0,0 +1,537 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2025 - OlyB
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <boolean.h>
#include <emscripten/wasm_worker.h>
#include <emscripten/webaudio.h>
#include <emscripten/atomic.h>
#include "../../frontend/drivers/platform_emscripten.h"
#include <queues/fifo_queue.h>
#include <retro_timers.h>
#include "../audio_driver.h"
#include "../../verbosity.h"
#define WORKLET_STACK_SIZE 4096
/* additional buffer size (for EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK only) */
/* if this is too small, frames may be dropped and content could run too fast. */
/* very large slow-motion rate values may be too large for this; avoid anything higher than 6 or 7. */
#define EXTERNAL_BLOCK_BUFFER_MS 128
typedef struct audioworklet_data
{
uint8_t *worklet_stack;
uint32_t write_avail_bytes; /* atomic */
size_t visible_buffer_size;
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
size_t write_avail_diff;
#endif
#ifdef PROXY_TO_PTHREAD
emscripten_lock_t trywrite_lock;
emscripten_condvar_t trywrite_cond;
#endif
emscripten_lock_t buffer_lock;
EMSCRIPTEN_WEBAUDIO_T context;
float *tmpbuf;
fifo_buffer_t *buffer;
unsigned rate;
unsigned latency;
bool nonblock;
bool initing;
#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
bool block_requested;
#endif
volatile bool running; /* currently only used by RetroArch */
volatile bool driver_running; /* whether the driver is running (buffer allocated) */
volatile bool context_running; /* whether the AudioContext is running */
volatile bool init_done;
volatile bool init_error;
} audioworklet_data_t;
/* We only ever want to create 1 worklet, so we need to keep its data even if the driver is inactive. */
static audioworklet_data_t *audioworklet_static_data = NULL;
/* Note that we cannot allocate any heap in here. */
static bool audioworklet_process_cb(int numInputs, const AudioSampleFrame *inputs,
int numOutputs, AudioSampleFrame *outputs,
int numParams, const AudioParamFrame *params,
void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
size_t avail;
size_t max_read;
unsigned writing_frames = 0;
int i;
/* TODO: do we need to pay attention to audioworklet->running here too? */
if (audioworklet->driver_running)
{
/* can't use Atomics.wait in AudioWorklet */
/* busyspin is safe as of emscripten 4.0.4 */
if (!emscripten_lock_busyspin_wait_acquire(&audioworklet->buffer_lock, 2.5))
{
printf("[WARN] [AudioWorklet] Worklet: could not acquire lock\n");
return true;
}
avail = FIFO_READ_AVAIL(audioworklet->buffer);
max_read = MIN(avail, outputs[0].samplesPerChannel * 2 * sizeof(float));
if (max_read)
{
fifo_read(audioworklet->buffer, audioworklet->tmpbuf, max_read);
emscripten_atomic_add_u32(&audioworklet->write_avail_bytes, max_read);
}
emscripten_lock_release(&audioworklet->buffer_lock);
#ifdef PROXY_TO_PTHREAD
emscripten_condvar_signal(&audioworklet->trywrite_cond, 1);
#endif
writing_frames = max_read / 2 / sizeof(float);
for (i = 0; i < writing_frames; i++)
{
outputs[0].data[i] = audioworklet->tmpbuf[i * 2];
outputs[0].data[outputs[0].samplesPerChannel + i] = audioworklet->tmpbuf[i * 2 + 1];
}
}
if (writing_frames < outputs[0].samplesPerChannel)
{
int zero_frames = outputs[0].samplesPerChannel - writing_frames;
memset(outputs[0].data + writing_frames, 0, zero_frames * sizeof(float));
memset(outputs[0].data + writing_frames + outputs[0].samplesPerChannel, 0, zero_frames * sizeof(float));
}
return true;
}
static void audioworklet_processor_inited_cb(EMSCRIPTEN_WEBAUDIO_T context, bool success, void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
int outputChannelCounts[1] = { 2 };
EmscriptenAudioWorkletNodeCreateOptions opts = { 0, 1, outputChannelCounts };
EMSCRIPTEN_AUDIO_WORKLET_NODE_T worklet_node;
if (!success)
{
RARCH_ERR("[AudioWorklet] Failed to init AudioWorkletProcessor.\n");
audioworklet->init_error = true;
audioworklet->init_done = true;
return;
}
worklet_node = emscripten_create_wasm_audio_worklet_node(context, "retroarch", &opts, audioworklet_process_cb, audioworklet);
emscripten_audio_node_connect(worklet_node, context, 0, 0);
audioworklet->init_done = true;
}
static void audioworklet_thread_inited_cb(EMSCRIPTEN_WEBAUDIO_T context, bool success, void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
WebAudioWorkletProcessorCreateOptions opts = { "retroarch", 0 };
if (success)
emscripten_create_wasm_audio_worklet_processor_async(context, &opts,
audioworklet_processor_inited_cb, audioworklet);
else
{
RARCH_ERR("[AudioWorklet] Failed to init worklet thread! Is the worklet file in the right place?\n");
audioworklet->init_error = true;
audioworklet->init_done = true;
}
}
static void audioworklet_ctx_statechange_cb(void *data, bool state)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->context_running = state;
}
static void audioworklet_ctx_create(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->context = emscripten_create_audio_context(0);
audioworklet->tmpbuf = memalign(16, emscripten_audio_context_quantum_size(audioworklet->context) * 2 * sizeof(float));
audioworklet->rate = EM_ASM_INT({
return emscriptenGetAudioObject($0).sampleRate;
}, audioworklet->context);
audioworklet->context_running = EM_ASM_INT({
let ac = emscriptenGetAudioObject($0);
ac.addEventListener("statechange", function() {
getWasmTableEntry($2)($1, ac.state == "running");
});
return ac.state == "running";
}, audioworklet->context, audioworklet, audioworklet_ctx_statechange_cb);
emscripten_start_wasm_audio_worklet_thread_async(audioworklet->context,
audioworklet->worklet_stack, WORKLET_STACK_SIZE, audioworklet_thread_inited_cb, audioworklet);
}
static void audioworklet_alloc_buffer(void *data)
{
size_t buffer_size;
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->visible_buffer_size = (audioworklet->latency * audioworklet->rate * 2 * sizeof(float)) / 1000;
buffer_size = audioworklet->visible_buffer_size;
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
audioworklet->write_avail_diff = (EXTERNAL_BLOCK_BUFFER_MS * audioworklet->rate * 2 * sizeof(float)) / 1000;
buffer_size += audioworklet->write_avail_diff;
#endif
audioworklet->buffer = fifo_new(buffer_size);
emscripten_atomic_store_u32(&audioworklet->write_avail_bytes, buffer_size);
RARCH_LOG("[AudioWorklet] Buffer size: %lu bytes.\n", audioworklet->visible_buffer_size);
}
static void audioworklet_init_error(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
RARCH_ERR("[AudioWorklet] Failed to initialize driver.\n");
free(audioworklet->worklet_stack);
free(audioworklet->tmpbuf);
free(audioworklet);
}
static bool audioworklet_resume_ctx(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
if (!audioworklet->context_running)
{
MAIN_THREAD_ASYNC_EM_ASM({
emscriptenGetAudioObject($0).resume();
}, audioworklet->context);
}
return audioworklet->context_running;
}
static void *audioworklet_init(const char *device, unsigned rate,
unsigned latency, unsigned block_frames, unsigned *new_rate)
{
audioworklet_data_t *audioworklet;
if (audioworklet_static_data)
{
if (audioworklet_static_data->driver_running || audioworklet_static_data->initing)
{
RARCH_ERR("[AudioWorklet] Tried to start already running driver.\n");
return NULL;
}
RARCH_LOG("[AudioWorklet] Reusing old context.\n");
audioworklet = audioworklet_static_data;
audioworklet->latency = latency;
*new_rate = audioworklet->rate;
RARCH_LOG("[AudioWorklet] Device rate: %d Hz.\n", *new_rate);
audioworklet_alloc_buffer(audioworklet);
audioworklet_resume_ctx(audioworklet);
audioworklet->driver_running = true;
return audioworklet;
}
audioworklet = (audioworklet_data_t*)calloc(1, sizeof(audioworklet_data_t));
if (!audioworklet)
return NULL;
audioworklet->worklet_stack = memalign(16, WORKLET_STACK_SIZE);
if (!audioworklet->worklet_stack)
return NULL;
audioworklet_static_data = audioworklet;
audioworklet->latency = latency;
platform_emscripten_run_on_browser_thread_sync(audioworklet_ctx_create, audioworklet);
*new_rate = audioworklet->rate;
RARCH_LOG("[AudioWorklet] Device rate: %d Hz.\n", *new_rate);
audioworklet->initing = true;
audioworklet_alloc_buffer(audioworklet);
emscripten_lock_init(&audioworklet->buffer_lock);
#ifdef PROXY_TO_PTHREAD
emscripten_lock_init(&audioworklet->trywrite_lock);
emscripten_condvar_init(&audioworklet->trywrite_cond);
#endif
#ifndef EMSCRIPTEN_AUDIO_EXTERNAL_BLOCK
/* TODO: can MIN_ASYNCIFY block here too? */
while (!audioworklet->init_done)
retro_sleep(1);
audioworklet->initing = false;
if (audioworklet->init_error)
{
audioworklet_init_error(audioworklet);
return NULL;
}
audioworklet->driver_running = true;
#elif defined(EMSCRIPTEN_AUDIO_FAKE_BLOCK)
audioworklet->block_requested = true;
platform_emscripten_enter_fake_block(1);
#endif
/* external block: will be handled later */
return audioworklet;
}
static ssize_t audioworklet_write(void *data, const void *s, size_t ss)
{
size_t avail;
size_t max_write;
size_t to_write_frames;
size_t to_write_bytes;
size_t _len = 0;
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
const float *samples = (const float*)s;
size_t num_frames = ss / 2 / sizeof(float);
/* too early! might happen with external blocking */
if (!audioworklet->driver_running)
return 0;
/* don't write audio if the context isn't running, just try to start it */
if (!audioworklet_resume_ctx(audioworklet))
return 0;
while (num_frames)
{
#ifdef PROXY_TO_PTHREAD
if (!emscripten_lock_wait_acquire(&audioworklet->buffer_lock, 2500000))
#else
if (!emscripten_lock_busyspin_wait_acquire(&audioworklet->buffer_lock, 2.5))
#endif
{
RARCH_WARN("[AudioWorklet] Main thread: could not acquire lock.\n");
break;
}
avail = FIFO_WRITE_AVAIL(audioworklet->buffer);
max_write = avail;
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
/* make sure we don't write into the blocking buffer for nonblock */
if (audioworklet->nonblock)
{
if (max_write > audioworklet->write_avail_diff)
max_write -= audioworklet->write_avail_diff;
else
max_write = 0;
}
#endif
to_write_frames = MIN(num_frames, max_write / 2 / sizeof(float));
if (to_write_frames)
{
to_write_bytes = to_write_frames * 2 * sizeof(float);
avail -= to_write_bytes;
fifo_write(audioworklet->buffer, samples, to_write_bytes);
emscripten_atomic_store_u32(&audioworklet->write_avail_bytes, (uint32_t)avail);
num_frames -= to_write_frames;
samples += (to_write_frames * 2);
_len += to_write_frames;
}
emscripten_lock_release(&audioworklet->buffer_lock);
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
/* see if we're over the threshold to go to fake block */
if (avail < audioworklet->write_avail_diff)
{
audioworklet->block_requested = true;
platform_emscripten_enter_fake_block(1);
}
#endif
if (num_frames && !audioworklet->nonblock)
RARCH_WARN("[AudioWorklet] Dropping %lu frames.\n", num_frames);
break;
#endif
if (audioworklet->nonblock || !num_frames)
break;
#if defined(PROXY_TO_PTHREAD)
emscripten_condvar_wait(&audioworklet->trywrite_cond, &audioworklet->trywrite_lock, 3000000);
#elif defined(EMSCRIPTEN_FULL_ASYNCIFY)
retro_sleep(1);
#else /* equivalent to defined(EMSCRIPTEN_AUDIO_BUSYWAIT) */
while (emscripten_atomic_load_u32(&audioworklet->write_avail_bytes) < 2 * sizeof(float))
audioworklet_resume_ctx(audioworklet);
#endif
/* try resuming, on the off chance that the context was interrupted while blocking */
audioworklet_resume_ctx(audioworklet);
}
return _len;
}
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_BLOCK
/* returns true if fake block should continue */
bool audioworklet_external_block(void)
{
audioworklet_data_t *audioworklet = audioworklet_static_data;
if (audioworklet)
{
#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
if (!audioworklet->block_requested)
return false;
#endif
while (audioworklet->initing && !audioworklet->init_done)
#ifdef EMSCRIPTEN_AUDIO_ASYNC_BLOCK
retro_sleep(1);
#else
return true;
#endif
if (audioworklet->init_done && !audioworklet->driver_running)
{
audioworklet->initing = false;
if (audioworklet->init_error)
{
audioworklet_init_error(audioworklet);
abort();
return false;
}
audioworklet->driver_running = true;
}
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
if (!audioworklet->driver_running)
return false;
while (emscripten_atomic_load_u32(&audioworklet->write_avail_bytes) < audioworklet->write_avail_diff)
{
audioworklet_resume_ctx(audioworklet);
#ifdef EMSCRIPTEN_AUDIO_ASYNC_BLOCK
retro_sleep(1);
#else
return true;
#endif
}
#endif
#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
audioworklet->block_requested = false;
platform_emscripten_exit_fake_block();
return true; /* return to RAF if needed */
#endif
}
return false;
}
#endif
/* called on program exit */
void audioworklet_close(void)
{
audioworklet_data_t *audioworklet = audioworklet_static_data;
if (!audioworklet)
return;
MAIN_THREAD_EM_ASM({
emscriptenGetAudioObject($0).close();
}, audioworklet->context);
}
static bool audioworklet_stop(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->running = false;
return true;
}
static bool audioworklet_start(void *data, bool is_shutdown)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->running = true;
return true;
}
static bool audioworklet_alive(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
return audioworklet->running;
}
static void audioworklet_set_nonblock_state(void *data, bool state)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
audioworklet->nonblock = state;
}
static void audioworklet_free(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
/* that's not good... this shouldn't happen? */
if (!audioworklet->driver_running)
{
RARCH_ERR("[AudioWorklet] Tried to free before done initing.\n");
return;
}
#ifdef PROXY_TO_PTHREAD
if (!emscripten_lock_wait_acquire(&audioworklet->buffer_lock, 10000000))
#else
if (!emscripten_lock_busyspin_wait_acquire(&audioworklet->buffer_lock, 10))
#endif
{
RARCH_ERR("[AudioWorklet] Main thread: could not acquire lock to free buffer.\n");
return;
}
audioworklet->driver_running = false;
fifo_free(audioworklet->buffer);
emscripten_lock_release(&audioworklet->buffer_lock);
MAIN_THREAD_ASYNC_EM_ASM({
emscriptenGetAudioObject($0).suspend();
}, audioworklet->context);
}
static size_t audioworklet_write_avail(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
size_t avail = emscripten_atomic_load_u32(&audioworklet->write_avail_bytes);
if (avail > audioworklet->write_avail_diff)
return avail - audioworklet->write_avail_diff;
return 0;
#else
return emscripten_atomic_load_u32(&audioworklet->write_avail_bytes);
#endif
}
static size_t audioworklet_buffer_size(void *data)
{
audioworklet_data_t *audioworklet = (audioworklet_data_t*)data;
return audioworklet->visible_buffer_size;
}
static bool audioworklet_use_float(void *data) { return true; }
audio_driver_t audio_audioworklet = {
audioworklet_init,
audioworklet_write,
audioworklet_stop,
audioworklet_start,
audioworklet_alive,
audioworklet_set_nonblock_state,
audioworklet_free,
audioworklet_use_float,
"audioworklet",
NULL,
NULL,
audioworklet_write_avail,
audioworklet_buffer_size
};
+62 -69
View File
@@ -78,7 +78,7 @@ static void coreaudio_free(void *data)
free(dev);
}
static OSStatus audio_write_cb(void *userdata,
static OSStatus coreaudio_audio_write_cb(void *userdata,
AudioUnitRenderActionFlags *action_flags,
const AudioTimeStamp *time_stamp, UInt32 bus_number,
UInt32 number_frames, AudioBufferList *io_data)
@@ -102,31 +102,24 @@ static OSStatus audio_write_cb(void *userdata,
if (FIFO_READ_AVAIL(dev->buffer) < write_avail)
{
*action_flags = kAudioUnitRenderAction_OutputIsSilence;
/* Seems to be needed. */
memset(outbuf, 0, write_avail);
slock_unlock(dev->lock);
/* Technically possible to deadlock without. */
scond_signal(dev->cond);
return noErr;
}
fifo_read(dev->buffer, outbuf, write_avail);
else
fifo_read(dev->buffer, outbuf, write_avail);
slock_unlock(dev->lock);
scond_signal(dev->cond);
return noErr;
}
#if !TARGET_OS_IPHONE
static void choose_output_device(coreaudio_t *dev, const char* device)
static void coreaudio_choose_output_device(coreaudio_t *dev, const char* device)
{
int i;
UInt32 deviceCount;
UInt32 device_count;
AudioObjectPropertyAddress propaddr;
AudioDeviceID *devices = NULL;
UInt32 size = 0;
AudioDeviceID *devices = NULL;
UInt32 size = 0;
propaddr.mSelector = kAudioHardwarePropertyDevices;
#if HAS_MACOSX_10_12
@@ -140,36 +133,35 @@ static void choose_output_device(coreaudio_t *dev, const char* device)
&propaddr, 0, 0, &size) != noErr)
return;
deviceCount = size / sizeof(AudioDeviceID);
devices = (AudioDeviceID*)malloc(size);
if (!devices || AudioObjectGetPropertyData(kAudioObjectSystemObject,
&propaddr, 0, 0, &size, devices) != noErr)
goto done;
device_count = size / sizeof(AudioDeviceID);
devices = (AudioDeviceID*)malloc(size);
if (devices && AudioObjectGetPropertyData(kAudioObjectSystemObject,
&propaddr, 0, 0, &size, devices) == noErr)
{
#if HAS_MACOSX_10_12
#else
propaddr.mScope = kAudioDevicePropertyScopeOutput;
propaddr.mScope = kAudioDevicePropertyScopeOutput;
#endif
propaddr.mSelector = kAudioDevicePropertyDeviceName;
propaddr.mSelector = kAudioDevicePropertyDeviceName;
for (i = 0; i < deviceCount; i ++)
{
char device_name[1024];
device_name[0] = 0;
size = 1024;
if (AudioObjectGetPropertyData(devices[i],
&propaddr, 0, 0, &size, device_name) == noErr
&& string_is_equal(device_name, device))
for (i = 0; i < (int)device_count; i ++)
{
AudioUnitSetProperty(dev->dev, kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global, 0, &devices[i], sizeof(AudioDeviceID));
goto done;
char device_name[1024];
device_name[0] = 0;
size = 1024;
if (AudioObjectGetPropertyData(devices[i],
&propaddr, 0, 0, &size, device_name) == noErr
&& string_is_equal(device_name, device))
{
AudioUnitSetProperty(dev->dev, kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global, 0, &devices[i], sizeof(AudioDeviceID));
break;
}
}
}
done:
free(devices);
}
#endif
@@ -232,7 +224,7 @@ static void *coreaudio_init(const char *device,
#if !TARGET_OS_IPHONE
if (device)
choose_output_device(dev, device);
coreaudio_choose_output_device(dev, device);
#endif
dev->dev_alive = true;
@@ -245,9 +237,11 @@ static void *coreaudio_init(const char *device,
stream_desc.mBytesPerFrame = 2 * sizeof(float);
stream_desc.mFramesPerPacket = 1;
stream_desc.mFormatID = kAudioFormatLinearPCM;
stream_desc.mFormatFlags = kAudioFormatFlagIsFloat |
kAudioFormatFlagIsPacked | (is_little_endian() ?
0 : kAudioFormatFlagIsBigEndian);
stream_desc.mFormatFlags = kAudioFormatFlagIsFloat
| kAudioFormatFlagIsPacked;
if (!is_little_endian())
stream_desc.mFormatFlags |= kAudioFormatFlagIsBigEndian;
if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input, 0, &stream_desc, sizeof(stream_desc)) != noErr)
@@ -268,7 +262,7 @@ static void *coreaudio_init(const char *device,
if (real_desc.mFormatID != stream_desc.mFormatID)
goto error;
RARCH_LOG("[CoreAudio]: Using output sample rate of %.1f Hz\n",
RARCH_LOG("[CoreAudio] Using output sample rate of %.1f Hz.\n",
(float)real_desc.mSampleRate);
*new_rate = real_desc.mSampleRate;
@@ -281,7 +275,7 @@ static void *coreaudio_init(const char *device,
#endif
/* Set callbacks and finish up. */
cb.inputProc = audio_write_cb;
cb.inputProc = coreaudio_audio_write_cb;
cb.inputProcRefCon = dev;
if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_SetRenderCallback,
@@ -298,7 +292,7 @@ static void *coreaudio_init(const char *device,
if (!(dev->buffer = fifo_new(fifo_size)))
goto error;
RARCH_LOG("[CoreAudio]: Using buffer size of %u bytes: (latency = %u ms)\n",
RARCH_LOG("[CoreAudio] Using buffer size of %u bytes: (latency = %u ms).\n",
(unsigned)fifo_size, latency);
if (AudioOutputUnitStart(dev->dev) != noErr)
@@ -307,31 +301,31 @@ static void *coreaudio_init(const char *device,
return dev;
error:
RARCH_ERR("[CoreAudio]: Failed to initialize driver ...\n");
RARCH_ERR("[CoreAudio] Failed to initialize driver.\n");
coreaudio_free(dev);
return NULL;
}
static ssize_t coreaudio_write(void *data, const void *buf_, size_t size)
static ssize_t coreaudio_write(void *data, const void *buf_, size_t len)
{
coreaudio_t *dev = (coreaudio_t*)data;
const uint8_t *buf = (const uint8_t*)buf_;
size_t written = 0;
size_t _len = 0;
while (!dev->is_paused && size > 0)
while (!dev->is_paused && len > 0)
{
size_t write_avail;
slock_lock(dev->lock);
write_avail = FIFO_WRITE_AVAIL(dev->buffer);
if (write_avail > size)
write_avail = size;
if (write_avail > len)
write_avail = len;
fifo_write(dev->buffer, buf, write_avail);
buf += write_avail;
written += write_avail;
size -= write_avail;
_len += write_avail;
len -= write_avail;
if (dev->nonblock)
{
@@ -353,7 +347,7 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size)
slock_unlock(dev->lock);
}
return written;
return _len;
}
static void coreaudio_set_nonblock_state(void *data, bool state)
@@ -374,19 +368,25 @@ static bool coreaudio_alive(void *data)
static bool coreaudio_stop(void *data)
{
coreaudio_t *dev = (coreaudio_t*)data;
if (!dev)
return false;
dev->is_paused = (AudioOutputUnitStop(dev->dev) == noErr) ? true : false;
return dev->is_paused ? true : false;
if (dev)
{
dev->is_paused = (AudioOutputUnitStop(dev->dev) == noErr) ? true : false;
if (dev->is_paused)
return true;
}
return false;
}
static bool coreaudio_start(void *data, bool is_shutdown)
{
coreaudio_t *dev = (coreaudio_t*)data;
if (!dev)
return false;
dev->is_paused = (AudioOutputUnitStart(dev->dev) == noErr) ? false : true;
return dev->is_paused ? false : true;
if (dev)
{
dev->is_paused = (AudioOutputUnitStart(dev->dev) == noErr) ? false : true;
if (!dev->is_paused)
return true;
}
return false;
}
static bool coreaudio_use_float(void *data) { return true; }
@@ -409,16 +409,9 @@ static size_t coreaudio_buffer_size(void *data)
return dev->buffer_size;
}
static void *coreaudio_device_list_new(void *data)
{
/* TODO/FIXME */
return NULL;
}
static void coreaudio_device_list_free(void *data, void *array_list_data)
{
/* TODO/FIXME */
}
/* TODO/FIXME - implement */
static void *coreaudio_device_list_new(void *data) { return NULL; }
static void coreaudio_device_list_free(void *data, void *array_list_data) { }
audio_driver_t audio_coreaudio = {
coreaudio_init,
+17 -23
View File
@@ -27,6 +27,9 @@
#pragma mark - ringbuffer
#define UNLIKELY(x) __builtin_expect((x), 0)
#define LIKELY(x) __builtin_expect((x), 1)
typedef struct ringbuffer
{
float *buffer;
@@ -93,9 +96,6 @@ static void rb_free(ringbuffer_h r)
memset(r, 0, sizeof(*r));
}
#define UNLIKELY(x) __builtin_expect((x), 0)
#define LIKELY(x) __builtin_expect((x), 1)
static void rb_write_data(ringbuffer_h r, const float *data, size_t len)
{
size_t avail = rb_avail(r);
@@ -109,8 +109,8 @@ static void rb_write_data(ringbuffer_h r, const float *data, size_t len)
rest_write = n - first_write;
}
memcpy(r->buffer + r->write_ptr, data, first_write*sizeof(float));
memcpy(r->buffer, data + first_write, rest_write*sizeof(float));
memcpy(r->buffer + r->write_ptr, data, first_write * sizeof(float));
memcpy(r->buffer, data + first_write, rest_write * sizeof(float));
rb_advance_write_n(r, n);
rb_len_add(r, (int)n);
@@ -155,7 +155,7 @@ static void rb_read_data(ringbuffer_h r,
#pragma mark - CoreAudio3
static bool g_interrupted;
static bool coreaudio3_g_interrupted;
@interface CoreAudio3 : NSObject {
ringbuffer_t _rb;
@@ -227,7 +227,7 @@ static bool g_interrupted;
_au = au;
RARCH_LOG("[CoreAudio3]: Using buffer size of %u bytes: (latency = %u ms)\n", (unsigned)self.bufferSizeInBytes, latency);
RARCH_LOG("[CoreAudio3] Using buffer size of %u bytes: (latency = %u ms).\n", (unsigned)self.bufferSizeInBytes, latency);
[self start];
}
@@ -260,8 +260,8 @@ static bool g_interrupted;
}
- (ssize_t)writeFloat:(const float *)data samples:(size_t)samples {
size_t written = 0;
while (!g_interrupted && samples > 0)
size_t _len = 0;
while (!coreaudio3_g_interrupted && samples > 0)
{
size_t write_avail = rb_avail(&_rb);
if (write_avail > samples)
@@ -269,7 +269,7 @@ static bool g_interrupted;
rb_write_data(&_rb, data, write_avail);
data += write_avail;
written += write_avail;
_len += write_avail;
samples -= write_avail;
if (_nonBlock)
@@ -279,7 +279,7 @@ static bool g_interrupted;
dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER);
}
return written;
return _len;
}
@end
@@ -307,12 +307,11 @@ static void *coreaudio3_init(const char *device,
return (__bridge_retained void *)dev;
}
static ssize_t coreaudio3_write(void *data,
const void *buf_, size_t size)
static ssize_t coreaudio3_write(void *data, const void *buf_, size_t len)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
return [dev writeFloat:(const float *)
buf_ samples:size/sizeof(float)] * sizeof(float);
buf_ samples:len / sizeof(float)] * sizeof(float);
}
static void coreaudio3_set_nonblock_state(void *data, bool state)
@@ -328,8 +327,7 @@ static bool coreaudio3_alive(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
return false;
return !dev.paused;
}
@@ -337,8 +335,7 @@ static bool coreaudio3_stop(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
return false;
[dev stop];
return dev.paused;
}
@@ -347,16 +344,13 @@ static bool coreaudio3_start(void *data, bool is_shutdown)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
return false;
[dev start];
return !dev.paused;
}
static bool coreaudio3_use_float(void *data)
{
return YES;
}
static bool coreaudio3_use_float(void *data) { return true; }
static size_t coreaudio3_write_avail(void *data)
{
+476
View File
@@ -0,0 +1,476 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2025 - Joseph Mattiello
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*/
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
#include "audio/microphone_driver.h"
#include "queues/fifo_queue.h"
#include "verbosity.h"
#include <memory.h>
#include <stdatomic.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include "audio/audio_driver.h"
#include "../../verbosity.h"
typedef struct coreaudio_microphone
{
AudioUnit audio_unit; /* CoreAudio audio unit */
AudioStreamBasicDescription format; /* Audio format */
fifo_buffer_t *sample_buffer; /* Sample buffer */
bool is_running; /* Whether the microphone is running */
bool nonblock; /* Non-blocking mode flag */
int sample_rate; /* Current sample rate */
bool use_float; /* Whether to use float format */
} coreaudio_microphone_t;
/* Callback for receiving audio samples */
static OSStatus coreaudio_input_callback(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
OSStatus status;
AudioBufferList bufferList;
void *tempBuffer = NULL;
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)inRefCon;
/* Calculate required buffer size */
size_t bufferSize = inNumberFrames * microphone->format.mBytesPerFrame;
if (bufferSize == 0)
{
RARCH_ERR("[CoreAudio] Invalid buffer size calculation.\n");
return kAudio_ParamError;
}
/* Allocate temporary buffer */
tempBuffer = malloc(bufferSize);
if (!tempBuffer)
{
RARCH_ERR("[CoreAudio] Failed to allocate temporary buffer.\n");
return kAudio_MemFullError;
}
/* Set up buffer list */
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0].mDataByteSize = (UInt32)bufferSize;
bufferList.mBuffers[0].mData = tempBuffer;
/* Render audio data */
status = AudioUnitRender(microphone->audio_unit,
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
&bufferList);
/* Write to FIFO buffer */
if (status == noErr)
fifo_write(microphone->sample_buffer,
bufferList.mBuffers[0].mData,
bufferList.mBuffers[0].mDataByteSize);
else
{
RARCH_ERR("[CoreAudio] Failed to render audio: %d.\n", status);
}
/* Clean up temporary buffer */
free(tempBuffer);
return status;
}
/* Initialize CoreAudio microphone driver */
static void *coreaudio_microphone_init(void)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)calloc(1, sizeof(*microphone));
if (!microphone)
{
RARCH_ERR("[CoreAudio] Failed to allocate microphone driver.\n");
return NULL;
}
/* Default sample rate will be set during open_mic */
microphone->sample_rate = 0;
microphone->nonblock = false;
microphone->use_float = false;
return microphone;
}
/* Free CoreAudio microphone driver */
static void coreaudio_microphone_free(void *driver_context)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)driver_context;
if (microphone)
{
if (microphone->audio_unit && microphone->is_running)
{
AudioOutputUnitStop(microphone->audio_unit);
microphone->is_running = false;
}
/* TODO: This crashes, though we protect calls around `audio_unit` nil! */
#if 0
if (microphone->audio_unit)
{
AudioComponentInstanceDispose(microphone->audio_unit);
microphone->audio_unit = nil;
}
#endif
if (microphone->sample_buffer)
fifo_free(microphone->sample_buffer);
free(microphone);
}
}
/* Read samples from microphone */
static int coreaudio_microphone_read(void *driver_context,
void *microphone_context, void *buf, size_t size)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)driver_context;
size_t avail, read_amt;
if (!microphone || !buf)
{
RARCH_ERR("[CoreAudio] Invalid parameters in read.\n");
return -1;
}
avail = FIFO_READ_AVAIL(microphone->sample_buffer);
read_amt = MIN(avail, size);
if (microphone->nonblock && read_amt == 0)
return 0; /* Return immediately in non-blocking mode */
if (read_amt > 0)
{
fifo_read(microphone->sample_buffer, buf, read_amt);
#if DEBUG
RARCH_LOG("[CoreAudio] Read %zu bytes from microphone.\n", read_amt);
#endif
}
return (int)read_amt;
}
/* Set non-blocking state */
static void coreaudio_microphone_set_nonblock_state(void *driver_context, bool state)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)driver_context;
if (microphone)
microphone->nonblock = state;
}
/* Helper method to set audio format */
static void coreaudio_microphone_set_format(coreaudio_microphone_t *microphone, bool use_float)
{
microphone->use_float = use_float; /* Store the format choice */
microphone->format.mSampleRate = microphone->sample_rate;
microphone->format.mFormatID = kAudioFormatLinearPCM;
microphone->format.mFormatFlags = use_float
? (kAudioFormatFlagIsFloat | kAudioFormatFlagIsPacked)
: (kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked);
microphone->format.mFramesPerPacket = 1;
microphone->format.mChannelsPerFrame = 1;
microphone->format.mBitsPerChannel = use_float ? 32 : 16;
microphone->format.mBytesPerFrame = microphone->format.mChannelsPerFrame * microphone->format.mBitsPerChannel / 8;
microphone->format.mBytesPerPacket = microphone->format.mBytesPerFrame * microphone->format.mFramesPerPacket;
RARCH_LOG("[CoreAudio] Format setup: sample_rate=%d, bits=%d, bytes_per_frame=%d.\n",
(int)microphone->format.mSampleRate,
microphone->format.mBitsPerChannel,
microphone->format.mBytesPerFrame);
}
/* Open microphone device */
static void *coreaudio_microphone_open_mic(void *driver_context,
const char *device,
unsigned rate,
unsigned latency,
unsigned *new_rate)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)driver_context;
if (!microphone)
{
RARCH_ERR("[CoreAudio] Invalid driver context.\n");
return NULL;
}
/* Initialize handle fields */
microphone->sample_rate = rate;
microphone->use_float = false; /* Default to integer format */
/* Validate requested sample rate */
if (rate != 44100 && rate != 48000)
{
RARCH_WARN("[CoreAudio] Requested sample rate %u not supported, defaulting to 48000.\n", rate);
rate = 48000;
}
#if TARGET_OS_IPHONE
/* Configure audio session */
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (error)
{
RARCH_ERR("[CoreAudio] Failed to set audio session category: %s.\n", [[error localizedDescription] UTF8String]);
return NULL;
}
/*/ Set preferred sample rate */
[audioSession setPreferredSampleRate:rate error:&error];
if (error)
{
RARCH_ERR("[CoreAudio] Failed to set preferred sample rate: %s.\n", [[error localizedDescription] UTF8String]);
return NULL;
}
/* Get actual sample rate */
Float64 actualRate = [audioSession sampleRate];
if (new_rate)
*new_rate = (unsigned)actualRate;
microphone->sample_rate = (int)actualRate;
RARCH_LOG("[CoreAudio] Using sample rate: %d Hz.\n", microphone->sample_rate);
#else
#endif
/* Set format using helper method */
coreaudio_microphone_set_format(microphone, false); /* Default to 16-bit integer */
/* Calculate FIFO buffer size */
size_t fifoBufferSize = (latency * microphone->sample_rate * microphone->format.mBytesPerFrame) / 1000;
if (fifoBufferSize == 0)
{
RARCH_WARN("[CoreAudio] Calculated FIFO buffer size is 0 for latency: %u, sample_rate: %d, bytes_per_frame: %d.\n",
latency, microphone->sample_rate, microphone->format.mBytesPerFrame);
fifoBufferSize = 1024; /* Default to a reasonable buffer size */
}
RARCH_LOG("[CoreAudio] FIFO buffer size: %zu bytes.\n", fifoBufferSize);
/* Create sample buffer */
microphone->sample_buffer = fifo_new(fifoBufferSize);
if (!microphone->sample_buffer)
{
RARCH_ERR("[CoreAudio] Failed to create sample buffer.\n");
return NULL;
}
/* Initialize audio unit */
AudioComponentDescription desc = {
.componentType = kAudioUnitType_Output,
#if TARGET_OS_IPHONE
.componentSubType = kAudioUnitSubType_RemoteIO,
#else
.componentSubType = kAudioUnitSubType_HALOutput,
#endif
.componentManufacturer = kAudioUnitManufacturer_Apple,
.componentFlags = 0,
.componentFlagsMask = 0
};
AudioComponent comp = AudioComponentFindNext(NULL, &desc);
OSStatus status = AudioComponentInstanceNew(comp, &microphone->audio_unit);
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to create audio unit.\n");
goto error;
}
/* Enable input */
UInt32 flag = 1;
status = AudioUnitSetProperty(microphone->audio_unit,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Input,
1, /* Input bus */
&flag,
sizeof(flag));
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to enable input.\n");
goto error;
}
/* Set format using helper method */
coreaudio_microphone_set_format(microphone, false); /* Default to 16-bit integer */
status = AudioUnitSetProperty(microphone->audio_unit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Output,
1, /* Input bus */
&microphone->format,
sizeof(microphone->format));
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to set format: %d.\n", status);
goto error;
}
/* Set callback */
AURenderCallbackStruct callback = { coreaudio_input_callback, microphone };
status = AudioUnitSetProperty(microphone->audio_unit,
kAudioOutputUnitProperty_SetInputCallback,
kAudioUnitScope_Global,
1, /* Input bus */
&callback,
sizeof(callback));
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to set callback.\n");
goto error;
}
/* Initialize audio unit */
status = AudioUnitInitialize(microphone->audio_unit);
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to initialize audio unit: %d.\n", status);
goto error;
}
/* Start audio unit */
status = AudioOutputUnitStart(microphone->audio_unit);
if (status != noErr)
{
RARCH_ERR("[CoreAudio] Failed to start audio unit: %d.\n", status);
goto error;
}
return microphone;
error:
if (microphone)
{
if (microphone->audio_unit)
{
AudioComponentInstanceDispose(microphone->audio_unit);
microphone->audio_unit = nil;
}
free(microphone);
}
return NULL;
}
/* Close microphone */
static void coreaudio_microphone_close_mic(void *driver_context, void *microphone_context)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)microphone_context;
if (microphone)
{
if (microphone->is_running)
AudioOutputUnitStop(microphone->audio_unit);
if (microphone->audio_unit)
{
AudioComponentInstanceDispose(microphone->audio_unit);
microphone->audio_unit = nil;
}
if (microphone->sample_buffer)
fifo_free(microphone->sample_buffer);
free(microphone);
}
else
{
RARCH_ERR("[CoreAudio] Failed to close microphone.\n");
}
}
/* Start microphone */
static bool coreaudio_microphone_start_mic(void *driver_context, void *microphone_context)
{
RARCH_LOG("[CoreAudio] Starting microphone.\n");
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)microphone_context;
if (!microphone)
{
RARCH_ERR("[CoreAudio] Failed to start microphone.\n");
return false;
}
RARCH_LOG("[CoreAudio] Starting audio unit...\n");
OSStatus status = AudioOutputUnitStart(microphone->audio_unit);
if (status == noErr)
{
RARCH_LOG("[CoreAudio] Audio unit started successfully.\n");
microphone->is_running = true;
return true;
}
RARCH_ERR("[CoreAudio] Failed to start microphone: %d.\n", status);
return false;
}
/* Stop microphone */
static bool coreaudio_microphone_stop_mic(void *driver_context, void *microphone_context)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)microphone_context;
if (!microphone)
{
RARCH_ERR("[CoreAudio] Failed to stop microphone.\n");
return false;
}
if (microphone->is_running)
{
OSStatus status = AudioOutputUnitStop(microphone->audio_unit);
if (status == noErr)
{
microphone->is_running = false;
return true;
}
RARCH_ERR("[CoreAudio] Failed to stop microphone: %d.\n", status);
}
return true; /* Already stopped */
}
/* Check if microphone is alive */
static bool coreaudio_microphone_mic_alive(const void *driver_context, const void *microphone_context)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)microphone_context;
return microphone && microphone->is_running;
}
/* Check if microphone uses float samples */
static bool coreaudio_microphone_mic_use_float(const void *driver_context, const void *microphone_context)
{
coreaudio_microphone_t *microphone = (coreaudio_microphone_t*)microphone_context;
return microphone && microphone->use_float;
}
/* Get device list (not implemented for CoreAudio) */
static struct string_list *coreaudio_microphone_device_list_new(const void *driver_context)
{
return NULL;
}
/* Free device list (not implemented for CoreAudio) */
static void coreaudio_microphone_device_list_free(const void *driver_context, struct string_list *devices)
{
}
/* CoreAudio microphone driver structure */
microphone_driver_t microphone_coreaudio = {
coreaudio_microphone_init,
coreaudio_microphone_free,
coreaudio_microphone_read,
coreaudio_microphone_set_nonblock_state,
"coreaudio",
coreaudio_microphone_device_list_new,
coreaudio_microphone_device_list_free,
coreaudio_microphone_open_mic,
coreaudio_microphone_close_mic,
coreaudio_microphone_mic_alive,
coreaudio_microphone_start_mic,
coreaudio_microphone_stop_mic,
coreaudio_microphone_mic_use_float
};
File diff suppressed because it is too large. Load diff
+24 -29
View File
@@ -162,34 +162,35 @@ static void ctr_csnd_audio_free(void *data)
free(ctr);
}
static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t len)
{
int i;
uint32_t samples_played = 0;
uint64_t current_tick = 0;
const uint16_t *src = buf;
ctr_csnd_audio_t *ctr = (ctr_csnd_audio_t*)data;
unsigned int i;
uint32_t samples_played = 0;
uint64_t current_tick = 0;
const uint16_t *src = buf;
ctr_csnd_audio_t *ctr = (ctr_csnd_audio_t*)data;
ctr_csnd_audio_update_playpos(ctr);
if ((((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 2)) ||
(((ctr->pos - ctr->playpos ) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)) ||
(((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (size >> 2)))
if ( (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 2))
|| (((ctr->pos - ctr->playpos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4))
|| (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (len >> 2)))
{
if (ctr->nonblock)
ctr->pos = (ctr->playpos + (CTR_CSND_AUDIO_COUNT >> 1)) & CTR_CSND_AUDIO_COUNT_MASK;
else
{
do{
do
{
/* todo: compute the correct sleep period */
retro_sleep(1);
ctr_csnd_audio_update_playpos(ctr);
}while (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 1)
} while (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 1)
|| (((ctr->pos - ctr->playpos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)));
}
}
for (i = 0; i < (size >> 1); i += 2)
for (i = 0; i < (len >> 1); i += 2)
{
ctr->l[ctr->pos] = src[i];
ctr->r[ctr->pos] = src[i + 1];
@@ -200,7 +201,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
GSPGPU_FlushDataCache(ctr->l, CTR_CSND_AUDIO_SIZE);
GSPGPU_FlushDataCache(ctr->r, CTR_CSND_AUDIO_SIZE);
return size;
return len;
}
static bool ctr_csnd_audio_stop(void *data)
@@ -239,20 +240,19 @@ static bool ctr_csnd_audio_start(void *data, bool is_shutdown)
/* Prevents restarting audio when the menu
* is toggled off on shutdown */
if (is_shutdown)
return true;
if (!is_shutdown)
{
#if 0
CSND_SetPlayState(0x8, 1);
CSND_SetPlayState(0x9, 1);
CSND_SetPlayState(0x8, 1);
CSND_SetPlayState(0x9, 1);
#endif
CSND_SetVol(0x8, 0x00008000, 0);
CSND_SetVol(0x9, 0x80000000, 0);
CSND_SetVol(0x8, 0x00008000, 0);
CSND_SetVol(0x9, 0x80000000, 0);
csndExecCmds(false);
ctr->playing = true;
csndExecCmds(false);
ctr->playing = true;
}
return true;
}
@@ -264,11 +264,7 @@ static void ctr_csnd_audio_set_nonblock_state(void *data, bool state)
ctr->nonblock = state;
}
static bool ctr_csnd_audio_use_float(void *data)
{
(void)data;
return false;
}
static bool ctr_csnd_audio_use_float(void *data) { return false; }
static size_t ctr_csnd_audio_write_avail(void *data)
{
@@ -280,7 +276,6 @@ static size_t ctr_csnd_audio_write_avail(void *data)
static size_t ctr_csnd_audio_buffer_size(void *data)
{
(void)data;
return CTR_CSND_AUDIO_COUNT;
}
Loaded 100 of 1614 files, more files were not shown because too many files have changed in this diff. Show more