Skip to content

Commit 88c875a

Browse files
committed
Merge remote-tracking branch 'upstream/master' into next
2 parents a486b5c + 2d1f507 commit 88c875a

File tree

293 files changed

+30294
-8153
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

293 files changed

+30294
-8153
lines changed

.dir-locals.el

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
;;; See Info node `(emacs) Directory Variables' for more information.
33

44
(
5-
(c-mode . ((c-basic-offset . 3)
5+
(c-mode . ((standard-indent . 3)
6+
(c-basic-offset . 3)
67
(c-file-offsets . ((arglist-intro . ++)
7-
(arglist-cont-nonempty . ++)))
8+
(arglist-cont-nonempty . ++)
9+
(block-close . 0)
10+
(block-open . 0)))
811
(eval . (setq-local c-cleanup-list
912
(cl-set-difference c-cleanup-list
1013
'(brace-else-brace

CHANGES.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
# Future
2+
- ANDROID: OnNewIntent handler to allow launchers start new content without closing first
23
- APPLE: Include sameduck, gearcoleco, geargrafx cores in App Store builds
34
- APPLE: Include reminiscence, virtualjaguar, vitaquake2 cores in App Store builds
5+
- APPLE: Include gam4980 core in App Store builds
46
- APPLE: Bundle identifier added to Information menu
57
- APPLE: Option to control the usage of Metal argument buffers
68
- APPLE: Don't force fullscreen, allow multitasking on iPad
9+
- APPLE: AppIntents for Siri, Shortcuts
10+
- APPLE: Fix ffmpeg camera driver
711
- AUDIO: Microphone CoreAudio driver for iOS and macOS
12+
- AUTOCONF: Autoconfig match extended with a physical identifier
813
- CAMERA: Use ffmpeg libavfilter virtual input device as default
914
- CHEEVOS: Show additional message for unsupported achievements
15+
- CHEEVOS: Upgrade to rcheevos 12.0
16+
- DATABASE: Filter in Database Manager now works for genre and region
1017
- CLOUDSYNC: Enable icloud_drive cloud sync backend on MacOS / iOS
1118
- CLOUDSYNC: Don't always trust the server hash
1219
- CLOUDSYNC: Enable WebDAV support for Android
1320
- CLOUDSYNC: Speed up cloudsync on Apple
1421
- DATABASE: Improve multidisk game scanning
22+
- EMSCRIPTEN: Support core switching
1523
- EMSCRIPTEN: Support suspend screensaver
1624
- EMSCRIPTEN/RWEBCAM: Fix camera driver
1725
- EMSCRIPTEN/RWEBINPUT: Add accelerometer/gyroscope support
@@ -23,10 +31,23 @@
2331
- INPUT: Fix menu usage when OK/Cancel has mouse binds
2432
- INPUT: Ignore menu mouse startup position before moving
2533
- INPUT: Fix heavy slowdown when using Bluetooth XInput controllers with rumble
34+
- INPUT: Reset and close content hotkeys now require confirmation, similar to quit
35+
- INPUT: Menu toggle and hotkey enable can now be assigned to the same key
36+
- INPUT/ANDROID: Favor mouse coordinates for lightgun
2637
- INPUT/UDEV: Fix lost terminal settings after restart from menu
38+
- INPUT/BSV/REPLAY: Bumped replay format version to 2. Old replays will still play back fine.
39+
- INPUT/BSV/REPLAY: Add option to skip deserializing checkpoints from replay files (it introduces jank in some emulators).
40+
- 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.
41+
- 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.
42+
- 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.
43+
- 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.
44+
- 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).
2745
- INTL: Add Irish Gaelic to selectable languages
2846
- IOS: Fix crash on iOS9 when fetching refresh rate
47+
- LIBRETRO: Deprecate intfstream_open_writable_memory
48+
- LIBRETRO: New environment function RETRO_ENVIRONMENT_GET_TARGET_SAMPLE_RATE
2949
- LINUX: Add full complement of key/value pairs to desktop entry
50+
- MACOS: Fix coreaudio microphone handling
3051
- MENU: Common Thumbnail Background option for all menu drivers
3152
- MENU: Move core options reset from Settings/Configuration to Main Menu / Configuration Files
3253
- MENU: Use right analog stick for thumbnail cycling in playlists
@@ -40,27 +61,45 @@
4061
- MENU: Unwanted input is prevented when menu is triggered by toggle combo
4162
- MENU: 32-bit values in cheats and rumble are not presented as huge lists
4263
- MENU: Less important widgets are now sized like task notifications
64+
- MENU: Play count is added to runtime log
65+
- MENU: Configurable startup page (several options beside default Main Menu)
66+
- MENU: Shader menu rework, combined save/remove menus, save current, Y and Start hotkeys for shader parameters and background opacity toggle
67+
- MENU: Single-click start option from playlists and Explore view
68+
- MENU: Allow kiosk mode and hiding of Settings menu also in GLUI and RGUI
69+
- MENU: Task widget improvements
70+
- MENU/GLUI: Show thumbnails in Explore view
4371
- MENU/XMB: Select button toggles thumbnails in playlists
4472
- MENU/XMB,OZONE: Fix content icons when playlist tabs are hidden
4573
- MENU/OZONE: Horizontal padding factor option
4674
- MENU/OZONE: Custom font selection and scaling factor
75+
- MENU/RGUI: Clock format is now configurable and moved to top header
4776
- NETWORK: Fixes for nmcli wifi driver
4877
- NETWORK: Network command interface enabled for Android, iOS, TVOS
4978
- OTHER: ZStandard support and libchdr update for support of chd files converted with createdvd option
5079
- OVERLAY: Speed limit on touch pointer tracking
80+
- OVERLAY: Dedicate each touch pointer to hitboxes or pointing devices
5181
- PLAYLIST: Built-in playlists are now stored under playlists/builtin
5282
- PLAYLIST: Fix subsystem information in playlists
83+
- PS3: Fix psl1ght target of dist-cores.sh
5384
- REPLAY: Bugs fixed regarding rewind
5485
- REPLAY: Same timeline check and future state check for replays vs. savestates
5586
- SAVESTATES: Savestate thumbnails are default enabled for x86_64 builds
87+
- SAVESTATES: Slot is now remembered using the runtime log file
88+
- SAVESTATES: Slot hotkey widget shows save state thumbnail
5689
- VIDEO: Fix auto swap interval setup
5790
- VIDEO: Improvements for integer scale half scaling
5891
- VIDEO: Frame delay improvements for the automatic setting
92+
- VIDEO: Auto-enable GPU recording with HW context cores
93+
- VIDEO: Fix viewport bias when using custom aspect ratio
5994
- VIDEO/D3D11/D3D12: snappy extra vsync presentation mode
95+
- VIDEO/GL: Fallback OpenGL symbol loader for Linux devices with EGL < 1.5
96+
- VIDEO/GL: Support for Cg and GLSL shaders in the GLCore video driver
6097
- VIDEO/SHADER: Shader hold function, useful for some lightguns and shader comparison
6198
- VIDEO/SWITCHRES: Horizontal and vertical geometry adjustment options added
6299
- VIDEO/SWITCHRES: Game overrides
63100
- VIDEO/WAYLAND: Support for xdg-toplevel-icon-v1
101+
- VIDEO/WAYLAND: Fix deadlock when using Wayland Vulkan driver
102+
- VITA: Touchscreen support for PS Vita
64103
- WEBOS: Various fixes and tunings
65104
- WEBOS: Disable core dumps
66105
- WEBOS: Debug builds enabled

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
HAVE_FILE_LOGGER=1
2+
HAVE_STATESTREAM?=1
23
NEED_CXX_LINKER?=0
34
NEED_GOLD_LINKER?=0
45
MISSING_DECLS =0

Makefile.common

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,12 @@ endif
451451

452452
ifeq ($(HAVE_BSV_MOVIE), 1)
453453
DEFINES += -DHAVE_BSV_MOVIE
454+
OBJ += input/bsv/bsvmovie.o
455+
endif
456+
457+
ifeq ($(HAVE_STATESTREAM), 1)
458+
DEFINES += -DHAVE_STATESTREAM
459+
OBJ += input/bsv/uint32s_index.o
454460
endif
455461

456462
ifeq ($(HAVE_RUNAHEAD), 1)

Makefile.ctr

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ ifeq ($(GRIFFIN_BUILD), 1)
6868
#DEFINES += -DHAVE_SOCKET_LEGACY
6969
#-DHAVE_SSL -DHAVE_BUILTINMBEDTLS -DMBEDTLS_SSL_DEBUG_ALL
7070
#ssl is currently incompatible with griffin due to use of the "static" flag on repeating functions that will conflict when included in one file
71+
CFLAGS += -I. \
72+
-Ideps \
73+
-Ideps/7zip \
74+
-Ideps/stb \
75+
-Ideps/mbedtls \
76+
-Ideps/rcheevos/include \
77+
-Ilibretro-common/include \
78+
-Ilibretro-common/include/compat/zlib
7179
else
7280
HAVE_CC_RESAMPLER = 1
7381
HAVE_MENU_COMMON = 1
@@ -104,7 +112,7 @@ else
104112
HAVE_CLOUDSYNC = 1
105113

106114
include Makefile.common
107-
CFLAGS += $(DEF_FLAGS)
115+
CFLAGS += $(DEF_FLAGS) -I. $(INCLUDE_DIRS)
108116
endif
109117

110118
ifeq ($(strip $(DEVKITPRO)),)
@@ -180,14 +188,6 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
180188
WHOLE_END := -Wl,--no-whole-archive
181189
endif
182190

183-
CFLAGS += -I. \
184-
-Ideps \
185-
-Ideps/7zip \
186-
-Ideps/stb \
187-
-Ideps/mbedtls \
188-
-Ideps/rcheevos/include \
189-
-Ilibretro-common/include \
190-
-Ilibretro-common/include/compat/zlib
191191

192192
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
193193
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)

Makefile.emscripten

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ OBJ :=
1414
DEFINES := -DRARCH_INTERNAL -DHAVE_MAIN -DEMSCRIPTEN
1515
DEFINES += -DHAVE_FILTERS_BUILTIN -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORE_INFO
1616

17+
HAVE_STATESTREAM ?= 1
1718
HAVE_PATCH = 1
1819
HAVE_DSP_FILTER = 1
1920
HAVE_VIDEO_FILTER = 1
@@ -161,7 +162,7 @@ ifeq ($(HAVE_SDL2), 1)
161162
endif
162163

163164
LDFLAGS := -L. --no-heap-copy -s STACK_SIZE=$(STACK_SIZE) -s INITIAL_MEMORY=$(INITIAL_HEAP) \
164-
-s EXPORTED_RUNTIME_METHODS=$(EXPORTS) \
165+
-s EXPORTED_RUNTIME_METHODS=$(EXPORTS) -s EXIT_RUNTIME=1 \
165166
-s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="$(EXPORTED_FUNCTIONS)" \
166167
-s MODULARIZE=1 -s EXPORT_ES6=1 -s EXPORT_NAME="libretro_$(subst -,_,$(LIBRETRO))" \
167168
-s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0 \

audio/audio_driver.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ microphone_driver_t *microphone_drivers[] = {
231231
#ifdef HAVE_PIPEWIRE
232232
&microphone_pipewire,
233233
#endif
234-
#if defined(HAVE_COREAUDIO) && IOS
234+
#if defined(HAVE_COREAUDIO)
235235
&microphone_coreaudio,
236236
#endif
237237
&microphone_null,

audio/common/mmdevice_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
#include "../../verbosity.h"
2626

27-
static const char* mmdevice_data_flow_name(unsigned data_flow)
27+
static const char *mmdevice_data_flow_name(unsigned data_flow)
2828
{
2929
switch (data_flow)
3030
{

audio/drivers/alsathread.c

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,10 @@ static void alsa_microphone_worker_thread(void *mic_context)
214214

215215
static int alsa_thread_microphone_read(void *driver_context, void *mic_context, void *s, size_t len)
216216
{
217+
snd_pcm_state_t state;
218+
size_t _len = 0;
217219
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
218220
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
219-
snd_pcm_state_t state;
220221

221222
if (!alsa || !mic || !s) /* If any of the parameters were invalid... */
222223
return -1;
@@ -245,28 +246,23 @@ static int alsa_thread_microphone_read(void *driver_context, void *mic_context,
245246
if (alsa->nonblock)
246247
{
247248
size_t avail;
248-
size_t write_amt;
249249

250250
/* "Hey, I'm gonna borrow the queue." */
251251
slock_lock(mic->info.fifo_lock);
252252

253253
avail = FIFO_READ_AVAIL(mic->info.buffer);
254-
write_amt = MIN(avail, len);
254+
_len = MIN(avail, len);
255255

256256
/* "It's okay if you don't have any new samples, I'll just check in on you later." */
257-
fifo_read(mic->info.buffer, s, write_amt);
257+
fifo_read(mic->info.buffer, s, _len);
258258

259259
/* "Here, take this queue back." */
260260
slock_unlock(mic->info.fifo_lock);
261-
262-
return (int)write_amt;
263261
}
264262
else
265263
{
266-
size_t read = 0;
267-
268264
/* Until we've read all requested samples (or we're told to stop)... */
269-
while (read < len && !mic->info.thread_dead)
265+
while (_len < len && !mic->info.thread_dead)
270266
{
271267
size_t avail;
272268

@@ -294,21 +290,20 @@ static int alsa_thread_microphone_read(void *driver_context, void *mic_context,
294290
}
295291
else
296292
{
297-
size_t read_amt = MIN(len - read, avail);
293+
size_t read_amt = MIN(len - _len, avail);
298294

299295
/* "I'll just go ahead and consume all these samples..."
300296
* (As many as will fit in s, or as many as are available.) */
301-
fifo_read(mic->info.buffer,s + read, read_amt);
297+
fifo_read(mic->info.buffer,s + _len, read_amt);
302298

303299
/* "I'm done, you can take the queue back now." */
304300
slock_unlock(mic->info.fifo_lock);
305-
read += read_amt;
301+
_len += read_amt;
306302
}
307-
308303
/* "I'll be right back..." */
309304
}
310-
return (int)read;
311305
}
306+
return _len;
312307
}
313308

314309
static bool alsa_thread_microphone_mic_alive(const void *driver_context, const void *mic_context);
@@ -475,8 +470,9 @@ static void alsa_worker_thread(void *data)
475470

476471
frames = snd_pcm_writei(alsa->info.pcm, buf, alsa->info.stream_info.period_frames);
477472

478-
if (frames == -EPIPE || frames == -EINTR ||
479-
frames == -ESTRPIPE)
473+
if ( frames == -EPIPE
474+
|| frames == -EINTR
475+
|| frames == -ESTRPIPE)
480476
{
481477
if (snd_pcm_recover(alsa->info.pcm, frames, false) < 0)
482478
{
@@ -625,7 +621,6 @@ static bool alsa_thread_alive(void *data)
625621
static bool alsa_thread_stop(void *data)
626622
{
627623
alsa_thread_t *alsa = (alsa_thread_t*)data;
628-
629624
if (alsa)
630625
alsa->is_paused = true;
631626
return true;

audio/drivers/audioio.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,26 @@ static void *audioio_init(const char *device, unsigned rate, unsigned latency,
3636
unsigned block_frames, unsigned *new_out_rate)
3737
{
3838
struct audio_info info;
39-
const char *audiodev = device ? device : DEFAULT_DEV;
40-
int *fd = (int*)calloc(1, sizeof(int));
39+
const char *audiodev = device ? device : DEFAULT_DEV;
40+
int *fd = (int*)calloc(1, sizeof(int));
4141

4242
if (!fd)
4343
return NULL;
4444

4545
AUDIO_INITINFO(&info);
4646

4747
#ifdef AUMODE_PLAY_ALL
48-
info.mode = AUMODE_PLAY_ALL;
48+
info.mode = AUMODE_PLAY_ALL;
4949
#elif defined(AUMODE_PLAY)
50-
info.mode = AUMODE_PLAY;
50+
info.mode = AUMODE_PLAY;
5151
#endif
5252
info.play.sample_rate = rate;
53-
info.play.channels = 2;
54-
info.play.precision = 16;
53+
info.play.channels = 2;
54+
info.play.precision = 16;
5555
#ifdef AUDIO_ENCODING_SLINEAR
56-
info.play.encoding = AUDIO_ENCODING_SLINEAR;
56+
info.play.encoding = AUDIO_ENCODING_SLINEAR;
5757
#else
58-
info.play.encoding = AUDIO_ENCODING_LINEAR;
58+
info.play.encoding = AUDIO_ENCODING_LINEAR;
5959
#endif
6060

6161
if ((*fd = open(audiodev, O_WRONLY)) < 0)

0 commit comments

Comments
 (0)