* 🎵 Fast forward audio resampling. Solves #15160.
Previously, we avoided doing any resampling while fastforwarding based
on the assumption it was impossible to make the audio not crackle due to
both flush-to-flush timing fluctuations and timer accuracy.
However, turns out this is not the case. The audio doesn't "crackle" per
se when the timing fluctuates! It's just that the sounds don't make
sense since the time compression and decompression caused by the flush
time fluctuations mess with the audio consistency.
To work around that, we introduce a running average flush delta time
that makes sure the audio is both resampled to approximately the correct
rate and consistent.
This was tested in two settings:
- Limited rate fastforwarding (2x-4x)
- Unlimited fastforwarding
In both cases it seems to work well, but with unlimited fastforwarding
it's just high pitched and annoying, so this is probably the most useful
in the 2x to 4x range.
* Move declartion to support C89
* resampling ratio upper and lower bounds
* Add toggle for speeding up audio
If cores are not deterministic, or if they only have bounded
determinism, we can obtain less drift if replay files also contain
periodic checkpoint states. These are configured by the new retroarch
stting replay_checkpoint_interval (measured in seconds). States are
inserted into the replay file in between frames.
This patch also fixes the settings display for the replay
autoincrement max keep setting.
* Add bsv replay controls (not yet fully implemented), remove toggle
see notes in task_movie.c, make sure command.c calls the right
functions, check retroarch.c and other todos.
bsv files are also now stored with states, not saves.
* Compilation fixes
* Added command impls for play and record replay, and some code in load state to do the right thing there
* Guard some parts of the new code with HAVE_BSV_MOVIE
* wip, menu fixes
* more menu fixes, osd for movie errors, halt recording properly
* Menu and label fixes
* move bsvs to own file suffix series under savestates, fix recording and playback command validity checks
* Fix replay autoincrement
* fix endif placement, whoops
---------
Co-authored-by: Joseph C. Osborn <jcoa2018@pomona.edu>
ever implemented for OpenGL2 driver, lots of code debt, best to
instead just keep improving the overlay system instead which is
already available for most video drivers
* msg_hash_us.c contents to Crowdin, phase 2
Remaining part of the fixed strings moved to msg_hash_us.h, and some other changes:
- added help text for individual menu drivers
- prepared help labels for video drivers
- prepared help labels for input drivers
- old entries from the now defunct help menu are hidden from compilation
(may be added back later, when the menu is again visible)
- moved notification color/bgcolor items to sublabels
- language fixes from phase 1 comments
* c89 compilation fixes
* Compilation fix for Android builds
* msg_hash_us.c contents to Crowdin, phase 2
Remaining part of the fixed strings moved to msg_hash_us.h, and some other changes:
- added help text for individual menu drivers
- prepared help labels for video drivers
- prepared help labels for input drivers
- old entries from the now defunct help menu are hidden from compilation
(may be added back later, when the menu is again visible)
- moved notification color/bgcolor items to sublabels
- language fixes from phase 1 comments
- 'Unlocks/Mastery' split into two options
- 'Account/Login Messages' split off from 'Verbose', gated all login success/error messages
- menu_cbs_sublabel.c - Now in same order as menu options
- menu_setting.c - VISIBILITY_UNLOCK default value now uses define
- All suggested text/cleanup changes from Jamiras
- Startup Summary split off from Verbose Mode, added option to hide for games with zero core cheevos
- Some existing options moved into this submenu
- Leaderboard-related options coming in future PR
When running on Android, RetroArch considers most devices that emit dpad events as gamepads, even if they also emit other keyboard events; this is usually the right thing to do, but it has the side effect of not letting some actual keyboards (e.g.: Logitech K480) act as such inside RetroArch. This configuration option allows users to manually select a specific input device to act as a physical keyboard instead of a gamepad, which is handy when emulating computers as opposed to consoles.
also adds audio_driver_mixer_play_scroll_sound to menu_cbs_left and menu_cbs_right which are (seemingly) responsible for the large scroll on some menus (and also bumper scrolling on glui's playlist menu?).
* Allow repositioning of achievement notifications
* PS4/ORBIS build fix
Would have thought cheevos-related notification code was wrapped in HAVE_CHEEVOS, but guess not.
WIP version of Append and Prepend preset, Includes UI for Standard Retroarch, but not the QT UI companion
Co-authored-by: HyperspaceMadness <remimcgill@hotmail.com>
- New descriptors: 'dpad_area' and 'abxy_area'
- Each has a diagonal sensitivity setting, 100% being 8-way symmetry
- Buttons can be redefined in the cfg file
E.g. This would create a d-pad area, then redefine it to use analog directions:
overlay0_desc0 = "dpad_area,0.85,0.57,rect,0.166228,0.295516"
overlay0_desc0_up = "r_y_minus"
overlay0_desc0_down = "r_y_plus"
overlay0_desc0_left = "r_x_minus"
overlay0_desc0_right = "r_x_plus"
* 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
* New Menu Items Disable Info & Search
Add menu options for disabling Info and Search buttons
* Update msg_hash_us.h
Update Sublabels
* Update menu_setting.c
Set Advanced flag for new settings
one - if you set the last parameter to a valid 'rarch_setting_t' pointer
and enum_msg to MSG_UNKNOWN, you will get the previous menu_entries_append
behavior
* Renamed remaining function to menu_entries_append so that we have one
consistent way of adding menu entries instead of two
Reduces some code duplication significantly
Reasons:
1 - Just a macro for strcpy
1.2 - doesn't have a return type unlike strlcpy, can't be used
for string concatenation
1.3 - unsafe compared to strlcpy
Do either manual string assignment per character or strlcpy, no
inbetween by resorting to strcpy
- (database_info.c) Optimizations for database_info_build_query_enum() -
it would call strlcat at the very least 3 times, normally more than that.
Every strlcat call is at least one or more strlens. Reduce it all down
to manual string concatenation and one strlcat
- (database_info_build_query_enum) - always NULL terminates string so no need for NULL termination done by callee
* (menu_displaylist) use smaller strings for basename paths, remove one unnecessary string
in menu_displaylist.c function
- (disk_index_file.c) Avoid another trivial string concatenation by doing
it manually after fill_pathname_join_special
- (fill_pathname_join_delim) since fill_pathname_join_delim() now has a return value, use it for
string concatenation
- (platform_unix) - Use BUFSIZ as size for a buffer in system_property_get
- some other trivial strlcat usage replacements
as deprecated.
* Use fill_pathname_join_special in the vast majority of cases where
we can ensure out_path is a new empty string
* Get rid of some extension concatenation with strlcat where encountered
* Some general cleanups with NULL termination of strings that get immediately
passed to strlcpy/strlcpy-adjacent functions
* (joypad_connection) Small optimizations -
* Turn functions static where possible
* Hose strlen call out of loop
* (input_driver.c) General cleanups:
* Some small code/style nits
task_screenshot.c:
* Move widget callback function for screenshots to task_screenshot.c
(file_path.c):
* Turn get_pathname_num_slashes into static function
* path_linked_list_free - always returns true, so get rid of return value
* path_linked_list_new - fix function signature
* path_get_archive_delim - do not NULL-terminate string, already done by strlcpy later on
General:
* Slight optimizations - use int/size_t for loop counter variable instead of unsigned
* Take advantage of fact that strlcpy already NULL-terminates, so don't do this explicitly
outside if we're just going to end up calling strlcpy/fill_pathname_join on it anyway
Path: Netplay -> Host -> Kick Client
- Allows the host to kick clients.
- Allows the host to view client information: connected clients (names), status (playing/spectating) and ping.