Commit Graph

3845 Commits

Author SHA1 Message Date
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
libretroadmin 7c6054573e (rhmap) use custom strdup 2024-07-06 00:00:29 +02: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
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
Joseph C. Osborn e51a316cfd tidy up intfstream_truncate ifdefs. 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 c4685e8c31 Cut down on strlcats 2024-06-16 19:15:07 +02:00
libretroadmin e2e6602ac2 Buildfix 2024-06-16 15:39: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 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 29c89a46f1 file_archive_get_file_list_cb - remove string_list usage 2024-06-15 15:35:26 +02:00
libretroadmin 827e631903 (libretro-common) Some functions now return len 2024-06-15 12:47:51 +02:00
libretroadmin c022e4e624 Cut down on snprintf 2024-06-15 00:56:51 +02:00
Eric Warmenhoven e9682cbbd6 Fix #16626 fix crash parsing truncated 7z file 2024-06-05 13:06:27 -05:00
libretroadmin 3e85a17d7a iFix warnings picked up by -fanalyzer 2024-05-23 23:50:23 +02: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
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
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
libretroadmin b8d12a7d12 Replace do { while (true) ; with for (;;) 2024-04-05 20:03:05 +02:00
Jesse Talavera 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 <robloach@gmail.com>

* (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 <robloach@gmail.com>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <robloach@gmail.com>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <robloach@gmail.com>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <robloach@gmail.com>

* 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 <robloach@gmail.com>

* 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 <robloach@gmail.com>

* 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 <robloach@gmail.com>

* Update libretro-common/include/libretro.h

Co-authored-by: Rob Loach <robloach@gmail.com>

* 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 <robloach@gmail.com>
2024-03-09 17:24:01 -08:00
sonninnos 3c4dd50974
More widget additions and adjustments (#16287) 2024-02-25 20:23:08 -08: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
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
Giovanni Cascione 5932a30824
Add environment command to get playlists path (#16103) 2024-01-10 07:26:46 -08:00
Eric Warmenhoven 4220e5683d
Do CRC checks on PSP/PSP(PSN) content scan (#15623) 2024-01-01 21:57:44 -08: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
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
sonninnos e7a01dbf67
Silence signedness warning (#15875) 2023-11-05 17:22:11 -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
Joe Osborn 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 <robloach@gmail.com>
2023-11-02 13:25:50 -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 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
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
libretroadmin 10c60cdd4d Rewrite retro_vfs_file_remove_impl 2023-08-20 05:36:03 +02:00
libretroadmin d167c4f62e (PSL1GHT) Buildfix 2023-08-20 04:56:19 +02:00
libretroadmin a9733ab418 (VFS/libretro-common) Cleanups 2023-08-20 04:29:42 +02:00
Ryunam c5c86fe5e8
Allow all systems to check for backslashes (Windows) as last slash in path. Improves portable core logic (#15612) 2023-08-17 14:15:42 -07:00
libretroadmin 24287b1cce Cleanups/simplifications 2023-08-17 21:58:41 +02:00
Jesse Talavera-Greenberg 954b04669c
Add an environment call for querying the device's battery (#15387)
* First crack at RETRO_ENVIRONMENT_GET_POWER_STATUS

* First crack at RETRO_ENVIRONMENT_GET_POWER_STATUS

* Remove a stray comma

* Rename some symbols for clarity

* Change some references to the old environment call's name

* Fix some mixed-up cases in checking the power state

- I misunderstood the meaning of these enums

* Add a comment

* Rename seconds_remaining to seconds

* Clarify some comments about the power state

* Adjust power state behavior

- Don't return 0 seconds; instead, return NO_ESTIMATE
- Don't force percent to 100 in the CHARGED state

* Adhere to C89

* Mention the environment call in CHANGES.md
2023-08-12 16:41:05 -07:00
Eric Warmenhoven 893b0d142e
Cloud Sync (#15548)
* cloud sync - algorithm and abstract cloud storage API

* WebDAV cloud sync driver, and associated net_http improvements

* Cloud sync settings menu
2023-08-04 09:20:50 +02:00
libretroadmin 8aa0679cbd Fix regression 2023-07-17 17:49:49 +02:00
libretroadmin f1c651053f - Use VK_FALSE/VK_TRUE consistently for Vulkan structts
- Some minuscule changes to file_path.c
2023-07-17 15:27:34 +02:00
libretroadmin a5f2903253 Simplify path_basename 2023-07-17 15:13:13 +02:00
libretroadmin 4a411eb1e5 Cut down on strlcats and use strftime return value 2023-07-17 11:26:48 +02:00
libretroadmin 40049274b2 string_list_join_concat - cut down on one strlcat 2023-07-17 10:33:01 +02:00
libretroadmin fe1297cc33 (file_path.c) Cut down on some strlcats 2023-07-17 10:09:34 +02:00
libretroadmin aeff636a0f Minor cleanups to config_file.c 2023-07-17 09:45:52 +02:00
libretroadmin eb01ce0c09 Simplify archive_file 2023-07-16 19:55:58 +02:00
libretroadmin 4b6bd83780 Replace some more strlcat calls 2023-07-16 18:33:34 +02:00
Ethan O'Brien 24b410476b Fix emscripten sleep 2023-07-14 21:24:15 +02:00
libretroadmin 9e34f22a29 Silence Xcode code warnings + general cleanups 2023-07-14 18:05:54 +02:00
Eric Warmenhoven 280dcb32f9 Fix several warnings 2023-07-02 05:46:45 +02:00
Bernhard Schelling e8283363fb Enhance netpacket interface
- Enable core host to refuse connecting new players to limit the number of connected players
- 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)
2023-06-29 13:55:14 +02:00
Bernhard Schelling 6ccef38fea Enable clients to send netpackets to other clients 2023-06-29 13:55:14 +02:00
Bernhard Schelling c60878a10d Add netpacket interface
Adds a new libretro interface for a core to send and receive custom network packets for implementing a communication based multiplayer system instead of using the default state serialization based multiplayer. Connection management is still done by the frontend while a core gains the ability to easily support tunneling of multi-console data communication traffic.
2023-06-29 13:55:14 +02:00
libretroadmin d9c196154c (net_http.c) Get rid of strlen 2023-06-21 19:21:16 +02:00
libretroadmin bdc398d79f - Safer code - use strlcpy where possible instead of manual character
assignments for strings longer than 2 chars
- Use strlcpy concatenation instead of strlcat
- Make sure that what remains of iteration of the '_len' variable
for manual char assignment
is done in a safer way so mistakes are less possible
2023-06-20 16:33:55 +02:00
libretroadmin 5971f24237 Remove some code duplication 2023-06-20 09:37:07 +02:00
libretroadmin edecf0cb2d Replace more strlcat calls with strlcpy 2023-06-18 19:25:24 +02:00
libretroadmin 631301b3f7 * Cut down on strlcat calls when possible and replace them with clever
usage of strlcpy (when position/offset of previous strlcpy/snprintf call
is known. strlcat implementation in libretro-common makes implicit strlen
call, using strlcpy avoids this
* Reduce a bunch of local char variables by use of said clever usage,
should save up on local stack size usage
2023-06-18 12:06:12 +02:00
Grisly Glee 3861e6e3ba
Introduce RETRO_DEPRECATED macro (#15363) 2023-06-15 23:16:18 +02:00
Grisly Glee de0c6d5cd1
Trivial warnings fixes (#15383)
* Trivial graphics context drivers fix

* Assorted minor warnings fixes
2023-06-14 23:46:27 +02:00
libretroadmin d342a4a04a Signedness warning fixes 2023-06-14 23:25:50 +02:00
libretroadmin 246cceeb27 Silence more signedness warnings 2023-06-14 19:51:31 +02:00
Grisly Glee 4202f8650d
Fix trivial signedness warnings (#15377)
* Fix trivial signedness warnings

* Followup on trivial signedness warnings
2023-06-14 04:43:11 +02:00
Jesse Talavera-Greenberg 938d60d0f4
Add microphone support via a new driver (#14731)
* Some slight fixes

* Update libretro.h

* Log calls to RETRO_ENVIRONMENT_GET_MICROPHONE_INTERFACE

* Finish proof-of-concept for mic support

- It works, but doesn't support floating-point audio yet
- It may need to be resampled, too

* Add macros that aren't available in SDL 2

* Comment out a variable definition for now

- For C89 compliance

* Add some comments for clarity

* Let ALSA tolerate a null new_rate

* Partial ALSA microphone support

- Not yet tested
- Mic is created and destroyed
- Mic can also be paused or unpaused
- Mic is paused or unpaused with the rest of the driver
- Microphone is not yet read

* Install error logging in the ALSA driver

- It defers to RARCH_ERR

* Free the ALSA microphone in alsa_free

* Fix an indent

* First draft of alsa_read_microphone

* Deinitialize SDL Audio in sdl_audio_free

* Save and restore the ALSA error logger

- You should always practice safe global state

* Add newlines to some RARCH_ERRs

* Add some logging

* Check for the mic being active via settings instead of via flags

* Adjusted a log entry to be less misleading

- A frequency of 0Hz looks weird to the uninformed
- In reality, it means the driver used the requested frequency

* Fix an incorrect format string

* Tidy up logging in alsa.c

* Rename audio_enable_microphone to audio_enable_input

* Rename microphone_device to audio_input_device

* Add audio_input_latency and audio_input_block_frames settings

* Add all mic-related settings to the options menu

* Adjust logging for alsa.c

- Log the ALSA library version
- Add errno details

* Refer to the microphone in logs by name

* Use %u instead of %d for some log items

* Add input_samples_buf

* Remove an inaccurate comment

* Change type of input_samples_buf

* Clean up audio_driver_flush_microphone_input

* Comment convert_float_to_s16

- It helped me understand what it's doing
- Turns out it'll work just fine on mono audio

* Don't use the resampler for mic input

* Fix crash in the ALSA driver when reading from a mic

* Update some logging messages

* ALSA support now works for mics

* Reuse some common functions in alsa.c

* Add alsa_thread_microphone_t

* Refactor alsa.c

- Introduce alsa_init_pcm to init any PCM that we're using
- Vastly simplifies the implementation of alsa_init and alsa_init_microphone
- Will be used for the read-based versions next

* Make ALSA logging a little more consistent

* Clean up the mic with alsa_free_microphone if alsa_init_microphone fails

* Remove an unused function

* Move some cleanup in alsa.c to a common function

* First crack at mic support for alsathread

- Refactor some duplicate code into functions
- Use functions introduced in alsa.c
- Create and destroy the mic

* Slight cleanups for clarity

* Implement alsa_thread_set/get_microphone_state

* More work on alsathread

- No more crashing, but the mic just returns silence

* Slight cleanups for clarity

* Add alsa_set_mic_enabled_internal

- For setting the state of a microphone while considering its current state

* Use alsa_set_mic_enabled_internal

* Log a little more info

* Log when the audio driver is started/stopped

* Move base microphone driver code into a new directory

- Add microphone_driver.c to Makefile.common
- Rename functions as needed

* Initialize and deinitialize the microphone driver

* Implement sdl_microphone.c

* Un-const an argument

- In case the driver context needs to do any locking

* Revise comments for microphone_driver.h

* Remove an unimplemented function

* Remove some functions from the mic driver

* Remove mic functions from audio_thread_wrapper

* Remove mic functions from sdl_audio

* Fix microphone_null

* Split the mic code for the alsa audio drivers into microphone drivers

* Fix an extra struct member

* Add a setting for the mic driver

* Add a command to reinitialize the microphone driver

* Rename mic-related settings

* Add DRIVER_MICROPHONE_MASK to DRIVERS_CMD_ALL

* Rename audio_enable_input to microphone_enable

* Remove some labels from qt_options

* Search for microphone_driver within find_driver_nonempty

* Clean up some mic driver code

* Pending mics now return silence

* Adjust some logging and comments

* Some cleanup in the microphone driver

* Invert a flag check

- Oops

* Fix a log message

* Fix the wrong flags being checked

* Slight refactor of wasapi_init_device

- Add a data_flow parameter
- Declare it in a header
- In preparation for WASAPI mic support

* Add some WASAPI macros for _IAudioCaptureClient

* Move some common WASAPI functions to audio/common/wasapi.c

- They'll be used by the mic and the audio drivers

* Add wasapi_log_hr

* Generalize mmdevice_list_new to look for capture devices, too

* Fix a function declaration

* Move driver-specific device_list_new functions into their respective files

* Clean up some declarations

* First draft of wasapi microphone driver

* Add wasapi_microphone_device_list_free

* Change function parameter names to be consistent with microphone_driver

* Partially implement wasapi_microphone_read

- Mostly copied from the audio driver so far
- It doesn't compile yet
- But it'll be beautiful when I'm done with it

* Refactor the mic driver's functions

- Rename get_mic_active to mic_alive
- Split set_mic_active into start_mic and stop_mic
- Refactor the SDL mic driver accordingly

* Edit some WASAPI functions for logging and clarity

* Implement more of the WASAPI mic driver

* Rename write_event to read_event

* Pass the WASAPI driver context to the various read functions

* Mostly implement the read function for the WASAPI mic driver

* Fix a crash in microphone_driver

- Forgot to move the position of the name of null_driver

* Reduce some logging in wasapi common functions

- Only log the chosen audio client format, not all attempted ones

* Add some macro wrappers for IAudioClient methods

* Update mic driver configuration

- Make the mic driver configurable in the menu
- Add config items for WASAPI-related options similar to the audio driver

* Fix a menu entry scrolling through audio devices instead of mic devices

* Add some utility functions

* Expose the new utility functions in wasapi.h

* Add extra logging in the WASAPI common functions

* Add sharemode_name

* Use _IAudioClient_Initialize macro in some places

* Pass channels to wasapi_init_client

- Remember, mics are in mono

* Use _IAudioClient_Initialize macro some more

* Forgot to pass channels in some places

* Add some utility functions

* Forgot an #include

* Add wasapi_select_device_format

* Simplify the format selection logic in wasapi_init_client_sh

* Unset the microphone in wasapi_microphone_close_mic

- Ought to prevent a potential segfault

* Simplify some logging

* Fix incorrect value being passed to _IAudioCaptureClient_ReleaseBuffer

* Remove some unneeded logging

* Add some values to hresult_name

* Polish up wasapi_select_device_format

- Test for formats manually when Windows can't
- Add some debug logging
- Check for channels

* Compute the fields of WAVEFORMATEXTENSIBLE correctly

- As per the doc's stated requirements

* Simplify logic for WASAPI client creation

* Fix a potential hang in wasapi_microphone_read_shared_buffered

* Stop the microphone if the driver is stopped

* Don't name the microphone event

* Ensure that wasapi_init_client reports the correct format and rate

* Implement exclusive microphone read access for WASAPI

* Add _IAudioCaptureClient_GetNextPacketSize macro

* Organize cases in hresult_name

* Clear some extra fields if wasapi_set_format is setting a Pcm format

* Adjust some logs

* Adjust some logs

* Remove unneeded local vars

* Add a log

* Update wasapi.c

* Update wasapi.c

* Fix shared-mode mic support in WASAPI producing broken input

- Turns out it had nothing to do with shared mode

* Reuse a common function

- Remove wasapi_microphone_read_shared_buffered
- Rename wasapi_microphone_read_exclusive to wasapi_microphone_read_buffered

* Remove some code I was using for test purposes

* Clarify some language

* Double the default shared-mode mic buffer length

* Split getting a device's name into a separate function, then use it

* Fix the ALSA mic drivers

- To comply with changes I previously made to the mic driver interface

* Remove unused synchronization primitives from the SDL microphone driver

* Add sdl_microphone_mic_use_float

* Document audio_driver_state_flags

- I needed to understand these to see if similar flags were required for the mic driver

* Remove an unused function in wasapi.c

* Add and document flags in microphone_driver.h

* Remove driver-specific mic start/stop functions

- The mic driver itself doesn't do much processing
- That honor goes to individual mics

* Remove some unused fields in microphone_driver.h

* Add CMD_EVENT_MICROPHONE_STOP/START

* Remove unused functions from microphone_null

* Change how the mic driver state is referenced in some places

* Simplify the SDL microphone driver

- The driver backend no longer keeps a reference to the mic (the frontend does that)
- Remove functions that are no longer needed
- Don't track paused state, just query the mic itself

* Simplify the WASAPI microphone driver

- Don't track the driver running state or the microphone handle, the frontend does that now
- Remove support for unbuffered input (hunterk suggested that it wasn't necessary)

* Make microphone_wasapi_sh_buffer_length a uint, not an int

- It won't be negative anymore
- 0 now represents the default value

* Make the microphone frontend more robust

- Improve documentation for how various functions should be implemented
- Closes all microphones before freeing the driver (so backends don't have to)
- Tracks the enabled state of each microphone, so backends don't have to (but they still can)

* Stop the mic driver in core_unload_game

* Ensure mic support is compatible with the revised menu code

* Move alsa.h into audio/common

* Remove RETRO_ENVIRONMENT_GET_MICROPHONE_ENABLED

- It was never really needed

* Refactor the ALSA microphone driver

- Move common ALSA functions to audio/common/alsa.c
- Replace alsa_set_mic_enabled_internal with alsa_start/stop_pcm
- Don't track the microphone handle in the ALSA driver context
- Remove unneeded fields

* Move some common alsathread code into audio/common/alsathread.c

* Change return type of mic_driver_open_mic_internal to bool

* First crack at resampling mic input

* Remove an extraneous check

- I think something distracted me when I was writing this line

* Add stereo/mono conversion functions

* Make alsa_start_pcm and alsa_stop_pcm more robust

- They now return success if the stream is already running and stopped, respectively

* Revise some mic-related comments in libretro.h

* First crack at resampling mic input

* Simplify an expression

* Simplify an expression

* Fix a log tag

* Allow mic resampler to be configured separately from audio resampler

* Add some comments

* Set the source ratio to something sensible

* Stop deadlock in `alsathread` mic driver

* Allow mics to be initialized even when core is loaded from CLI

- When loading content from CLI, the drivers are initialized a little differently
- That threw off the mic initialization code

* Rename the functions in retro_microphone_interface

* Revise some mic-related comments in libretro.h

* Update retro_microphone_interface

- Add get_mic_rate
- Add a parameter to open_mic
- The modifications don't do anything yet

* Use parameter objects in the microphone handle

* Replace get_mic_rate with get_params

* Add a microphone interface version

* Remove part of a comment

* Set the effective params in mic_driver_microphone_handle_init

* Drop a stray newline

* Change where the mic interface is zeroed

- I was accidentally throwing out the version that the core was asking for

* Reduce logspam for wasapi_set_nonblock_state

- Now it only logs when the sync mode is changed

* Change DEFAULT_WASAPI_SH_BUFFER_LENGTH to 0

- -16 is no longer a valid value

* Set the new_rate in wasapi_init

* Change description of microphone sample rate in the settings

* First attempt at resampling configured mic input

* Forgot a section

* Fix some input samples being skipped

* Rename a variable for clarity

* Add microphone.outgoing_samples

* Update the mic driver

- Processed samples are now buffered
- The resampler is skipped if the ratio is (very close to) 1

* Remove part of a comment

* Update some comments in audio_resampler.h

* Slightly refactor the SDL microphone driver

- Move SDL_AudioSpec to a field of sdl_microphone_handle_t
- Allow SDL to change the requested format and sample rate
- Request floating-point input
- Implement sdl_microphone_mic_use_float

* Fix a non-C89-compliant declaration

* Add new files to griffin.c

* Remove a C++-style comment

* Add two more files to griffin.c

* Remove some unneeded declarations in microphone_driver.h

* Remove a stray comma in configuration.c

- For C89 compliance

* Fix compilation on some platforms

* Change some function signatures

* Make the ALSA drivers always set the audio rate

* Fix the alsathread mic driver

* Make state_manager_frame_is_reversed return false if HAVE_REWIND isn't defined

* Mute the microphone if the core is running in fast-forward, slow-mo, or rewind

* Clarify a comment

* Clarify a comment

* Add a comment

* Don't allocate memory for slowmo samples in the mic driver

- We're not supporting slowmo for mics, so it's not needed

* Fix a {

* Add my name to AUTHORS.h

* Add driver_lifetime_flags

- For drivers that have special setup/teardown needs

* Ensure that resetting the mic driver maintains active mic handles

- Prevents fullscreen toggle from stopping all mic input

* Update CHANGES.md

* Move some default microphone settings to a new part of the config file

* Ensure that RetroArch can use the audio format that Windows suggests

* Remove references to mic support in the SDL audio driver

* Remove unused WASAPI functions

* Return failure if RetroArch couldn't select a WASAPI format

* Ensure that Windows uses the WASAPI mic driver by default

* Treat disabled mic support as a warning, not an error

* Clarify some WASAPI-related microphone settings

* Remove some unused variables

* Add or revise microphone-related comments

* Rearrange doc comments for microphone types in libretro.h

* Remove a space

* Remove some unused flags

* Remove ALSA error logger

- It was never used anyway

* Remove unneeded microphone-related arguments

* Document a parameter

* Remove a logging call

* Add a constant for the microphone's shared buffer length for WASAPI

* Fix stylistic inconsistencies

* Make mic_driver_get_sample_size a macro instead of a function

* Move the microphone implementation to the audio directory

* Make microphone support optional (but enabled by default)

* Fix the griffin build
2023-06-06 21:55:06 +02:00
libretroadmin 862acd7160 rjson_optional_skip - fix code 2023-05-30 19:45:15 +02:00
libretroadmin 3f992de8a6 Silence warning 2023-05-30 19:39:12 +02:00
libretroadmin 72bd1a2ba4 (libretro-common) Resync 2023-05-30 19:34:55 +02:00
libretroadmin 735500ff66 Warning fixes and style nits 2023-05-29 15:30:54 +02:00
libretroadmin c4d22cf51f Simplification 2023-05-28 22:45:46 +02:00
libretroadmin 90115e2dc9 Silence warnings; code cleanups 2023-05-28 22:43:33 +02:00
Bernhard Schelling 18f79a8a8d Allow RETRO_ENVIRONMENT_SET_MEMORY_MAPS also after core startup
Change the comment in libretro.h about the removed limit and handle the environment call during core runtime in RetroArch.
2023-05-28 05:23:12 +02:00
libretroadmin 207dfe170c Small cleanups 2023-05-03 21:10:21 +02:00
libretroadmin b951a010fd Move strftime_am_pm to libretro-common and get rid of duplicated
function
2023-05-01 19:03:11 +02:00
libretroadmin 1db2f20665 Clean warnings 2023-04-28 02:11:52 +02:00
warmenhoven 5eddcfee48
The default pthread stack size on Apple is too small for detect_ps2_game (#15235) 2023-04-27 21:16:36 +02:00
David G. F 5fec32649f
Fix bug introduced in f13cf9 regarding non-compressed ZIPs (#15230)
This happens on platforms with HAVE_MMAP (Linux/Mac) and with ZIPs that
contain uncompressed files.
2023-04-26 21:56:51 +02:00
warmenhoven 295e5f0682
JIT support in iOS (#15224)
* Use AltKit to try to enable JIT on iOS

* libretro: Add API to check JIT availability on iOS
2023-04-26 01:55:37 +02:00
David G. F f13cf92341
Improve ZIP decompression (#15220)
This reduces the amount of memory Retroarch needs to extract a ROM file.
It will only need the size of the ROM plus 128KiB to extract the file
from the ZIP. Previously it needed as much as twice that amount if the
compression ratio was not great. This is useful on memory constrained
platforms and has no impact on platforms with plenty of memory.

Handles all cases correctly (with and without MMAP, for cores that
require fullpath or not, small and big ZIP files).
2023-04-25 13:17:18 +02:00
libretroadmin d48bd7244a Libretro API update - add new context hardware render enums - enables
autodetection of DX12 for PS2 core
2023-04-11 00:54:02 +02:00
aliaspider 0adbd6905f
add D3D12 HW_render support. (#15177) 2023-04-10 01:08:44 +01:00
warmenhoven 54055558f1
Fix several warnings (#15153) 2023-04-04 15:06:34 +01:00
hunterk 2a36245e0c
make ffmpeg core compile separately again and silence a couple of unused variable warnings (#15108) 2023-03-19 02:38:18 +01:00
libretroadmin d2ac15c6db Fixes filestream_vscanf regression 2023-03-15 20:13:04 +01:00
LibretroAdmin a03587d890
Update reverb.c 2023-03-11 23:00:39 +01:00
libretroadmin d4677790eb Hopefully fixes Dingux issues with ScummVM 2023-02-24 19:13:30 +01:00
libretroadmin 3adcbea501 Silence some implicit conversion warnings 2023-02-23 21:59:02 +01:00
libretroadmin 4811568c78 Silence -Wunused-const-variable warnings 2023-02-23 21:49:46 +01:00
libretroadmin 27ad653dbd Fixed another CXX_BUILD error 2023-02-23 17:11:26 +01:00
libretroadmin 4fa19e552a CXX_BUILD buildfixes 2023-02-23 17:09:45 +01:00
libretroadmin 581b9e0b0d (RSX) Updates to video driver 2023-02-23 16:11:01 +01:00
libretroadmin 1d35e1a460 (PS3) Fix typedefs 2023-02-23 15:25:23 +01:00
libretroadmin e447443e86 (PS3) Define KbData 2023-02-23 13:20:56 +01:00
libretroadmin 7ebab640d7 Cleanups/style nits 2023-02-23 13:15:14 +01:00
LibretroAdmin 491c495249
Unify ps3 (#15014)
* Unify PS3 input driver

* Fix builds

* Add missing variable

* (PS3/Keyboard) Add more missing defines
2023-02-23 00:35:46 +01:00
libretroadmin a77802fec4 Update libretro-common 2023-02-22 23:31:42 +01:00
libretroadmin d55d1a8863 Fix typo 2023-02-22 14:54:53 +01:00
libretroadmin 51894c3cbb (Config file/libretro-common) config_file_extract_value - don't make
it dependent on strldup which pulls in another dependency/source file -
instead just unroll strldup for this specific one-time instance
2023-02-21 16:37:30 +01:00
libretroadmin 1f0a5f9615 (libretro-common) retro_endianness.h - Get rid of warning: #warning Defining MSB_FIRST and LSB_FIRST in compile options is deprecated [-Wcpp]
#  warning Defining MSB_FIRST and LSB_FIRST in compile options is deprecated
    ^~~~~~~
2023-02-21 13:35:04 +01:00
libretroadmin 1440196fa0 (GX/GEKKO/RTHREADS) scond_wait_timeout - correct Gekko codepath 2023-02-21 11:00:17 +01:00
libretroadmin 8590dd6425 (GX/Gekko) Implement scond_wait_timeout - now.tv_sec / now.tv_nsec were
previously uninitialized when being touched
2023-02-21 10:28:23 +01:00
libretroadmin 48e551a2e6 (libretro-common/PSL1GHT) Don't redefine defines 2023-02-20 19:32:59 +01:00
libretroadmin 258c161d84 (libretro-common/vfs_implementation) Don't rely on ps3_defines.h which pulls in a ton of other header files
which might not be available for a given core
2023-02-20 19:26:54 +01:00
libretroadmin 35fa25bed6 (PS3) Start turning PS3 input drivers more the same 2023-02-20 18:09:57 +01:00
libretroadmin 851177bf20 (libretro-common) Buildfix 2023-02-20 14:52:00 +01:00
libretroadmin 22cdfaf95a (libretro-common) Backport reverb.c changes 2023-02-20 14:40:10 +01:00
libretroadmin a6bb8679c9 (memmap.c) Silence implicit declaration of function 'free' for PSL1GHT 2023-02-20 14:29:40 +01:00
crystalct 0fe92cc954
PSL1GHT fix http download (#14994) 2023-02-19 18:07:01 +01:00
libretroadmin 6624126885 (MSVC) silence warnings 2023-02-18 17:04:23 +01:00
Hans-Kristian Arntzen 9f7d0c74d5
[Vulkan] Define and implement v2 of context negotiation interface (#14890)
* [Vulkan] Add v2 of context negotiation interface.

* [Vulkan] Add vkEnumerateInstanceVersion symbol.

* [Vulkan] Implement v2 context negotiation

* [libretro] Add GET_HW_CONTEXT_NEGOTIATION_INTERFACE_SUPPORT.

Works around issues in v1 interface where it was not possible to
query what frontend would do when faces with newer interface versions.

This env-call gives stronger guarantees how things have to work.

* [runloop] Implement GET_HW_CONTEXT_NEGOATION_INTERFACE_SUPPORT.

Fairly trivial. Just report the latest version.

* [Vulkan] Add stricted wording around get_application_info in v2.

* [Vulkan] Be more defensive about get_application_info() in v1.
2023-02-04 16:51:50 +01:00
Jamiras 0ec1a6acfd
call ssl_socket_close for ssl sockets (#14903) 2023-01-25 16:17:41 +01:00
retroNUC afe3bf72bb
net_http - 3ds build fix (#14900) 2023-01-25 07:15:17 +01:00
retroNUC 4ad9c7e020
net_http - Temp fix for cheevos crash (#14742) (#14899)
* net_http - Temp fix for cheevos crash (#14742)

Don't use new timeout/poll code for cheevos http requests

* net_http - Typo fix in comment
2023-01-24 23:36:17 +01:00
libretroadmin 9fbd62d7b8 Reduce dependence on strcpy_literal (just a macro for strcpy) - prefer
going through safer strlcpy
2023-01-22 17:13:38 +01:00
libretroadmin daa9e352cc Remove asserts 2023-01-09 00:51:05 +01:00
reallibretroadmin d36bd9e677 Silence some warnings found in Xcode 2023-01-05 09:27:45 +01:00
Eric Warmenhoven cf64525343 Include "Update Core Info Files" for iOS/tvOS
Also a build fix for tvOS with Xcode 14.2
2023-01-04 03:43:42 +01:00
libretroadmin 6e3f168c1c (sinc) Hopefully that's the last of these warnings 2022-11-23 18:07:53 +01:00
libretroadmin 8ed246be86 (sinc resampler) Silence warning
(MaterialUI) Style nits
2022-11-23 18:03:44 +01:00
libretroadmin 3fbcde000c (string_list) Silence warning 2022-11-23 05:10:35 +01:00
sonninnos aeaf5561bd
Fix libchdr warning (#14658) 2022-11-22 14:44:56 +01:00
libretroadmin 1c9d3ad0bf Silence some warnings 2022-11-21 20:56:28 +01:00
libretroadmin 6b71214ed7 Silence some signed/unsigned mismatch warnings 2022-11-21 19:34:43 +01:00
libretroadmin d5a268a2ac * Fix signed/unsigned mismatches
* Fix missing IPAddr on MSVC2017 UWP - use ULONG instead since this is
just a typedef
2022-11-15 00:24:26 +01:00
Michael Burgardt b89692c532
Add Hungarian language option (#14585) 2022-11-04 19:52:39 +01:00
neil4 b98c53ddb7
Improve haptic feedback for input overlays (#14517)
Repurpose vibrate_on_keypress to enable device's standard keypress feedback on overlay key/button state changes

- Add keypress_vibrate function ptr to input_driver_t (only implemented on Android for now)
- (Android) Remove APP_CMD_VIBRATE_KEYPRESS
- (Android) Add doHapticFeedback, called directly to avoid latency
2022-10-16 09:58:09 +02:00
Michael Burgardt 254ac65549
Add British English language option (#14504) 2022-10-12 23:26:00 +02:00
LibretroAdmin 78ffb973b1
Add WIIU ifdef for socket_connect_with_timeout and revert (#14503)
else default codepath
2022-10-10 18:04:05 +02:00
Bernhard Schelling c9bbe7683f
Add View feature (#14467)
* Add View feature
Add saving of a filter set in the Explore menu into a so called "View" file which then gets listed alongside playlists.
This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches.

* Menu improvements for explore and views

* Collapse ozone sidebar in view

* Fix problems with the sidebar in explore/view

* Ignore view files in the Qt playlists menu

* Add missing semicolon

* Support downloading thumbnails in views
2022-10-10 06:36:02 +02:00
gblues c51b1491ef
Get mkdir working on wiiu (#14490)
== DETAILS
Looks like Wii U's mkdir() implementation doesn't like trailing
slashes either.

Since we already have an implementation to handle this, I just added
Wii U to it.
2022-10-07 06:19:54 +02:00
LibretroAdmin 951b98fe1b
Bools to flags (#14486)
* (D3D11) Use flags instead of bools

* (RPNG) Use flags

* Simplify rpng_is_valid

* (rpng_is_valid) Prevent potential NULL pointer dereference
(D3D11) Some whitespacing changes/code nits

* (task_pl_thumbnail_download.c) Simplify some code
2022-10-06 19:26:38 +02:00
gblues 714878783a
Fix socket_connect_with_timeout for WIIU (#14483)
== DETAILS
Previous work to clean up the HTTP networking code surfaced a bug
in `socket_connect_with_timeout()` that caused connections to
immediately fail. Specifically, achievements stopped working because
the http task code path was rewritten to use
`socket_connect_with_timeout` instead of `socket_connect`.

The bug appears to come down to an unsupported socket option. The final
check is to try to read `SO_ERROR` from the socket, and on WIIU the
`getsockopt()` call returns -1 and sets `lastsocketerr()` (WIIU's
equivalent to errno) to 16.

The fix is to change the logic to only abort the connection if that
`getsockopt()` call succeeds *and* the error is set.
2022-10-06 17:01:19 +02:00
LibretroAdmin b3bb62881a Disable poll support for MSVC 2010 and earlier 2022-10-06 01:27:27 +02:00
LibretroAdmin 92e996e272 Revert "(Win32/Sockets/Networking) WSAPoll is only available since Windows Vista; disable"
This reverts commit d832ce15d6.
2022-10-06 00:46:33 +02:00
LibretroAdmin d832ce15d6 (Win32/Sockets/Networking) WSAPoll is only available since Windows Vista; disable
NETWORK_HAVE_POLL for MSVC2003/2005/2010
2022-10-05 23:54:25 +02:00
LibretroAdmin d0c6dfee0b Cleanup bitmask setting 2022-10-05 18:43:58 +02:00
Cthulhu-throwaway d774256e0d
(Network) Add the const qualifier to some function parameters (#14463) 2022-10-03 07:35:37 +02:00
Cthulhu-throwaway daf8cb9bc8
(Netplay) Add a private or CGNAT address warning to UPnP (#14461) 2022-10-03 01:18:34 +02:00
reallibretroadmin 0033224c25 Fix some implicit conversion signedness warnings 2022-10-02 03:22:34 +02:00