Skip to content

Commit f1db3f9

Browse files
Merge branch 'libretro:master' into master
2 parents 3aa2f87 + 5b9763b commit f1db3f9

File tree

298 files changed

+15208
-14161
lines changed

Some content is hidden

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

298 files changed

+15208
-14161
lines changed

.github/workflows/webOS.yml

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,35 +61,56 @@ jobs:
6161
tar xzf arm-webos-linux-gnueabi_sdk-buildroot-x86_64.tar.gz
6262
./arm-webos-linux-gnueabi_sdk-buildroot/relocate-sdk.sh
6363
64-
- name: Compile RA
64+
- name: Load RARCH_VERSION from version.all
65+
id: version
66+
shell: bash
67+
run: |
68+
RARCH_VERSION=$(grep -Po '(?<=#define PACKAGE_VERSION ")[^"]+' version.all)
69+
echo "RARCH_VERSION=$RARCH_VERSION" >> "$GITHUB_ENV"
70+
71+
- name: Compile RA (GLES3 variant)
6572
shell: bash
6673
run: |
6774
. /tmp/arm-webos-linux-gnueabi_sdk-buildroot/environment-setup
68-
make -f Makefile.webos ipk PACKAGE_NAME=${PACKAGE_NAME} ADD_SDL2_LIB=1 -j$(getconf _NPROCESSORS_ONLN)
75+
make -f Makefile.webos clean
76+
make -f Makefile.webos ipk PACKAGE_NAME=${PACKAGE_NAME} ADD_SDL2_LIB=1 \
77+
HAVE_OPENGLES3=1 HAVE_OPENGLES3_1=1 HAVE_OPENGLES3_2=1 -j"$(getconf _NPROCESSORS_ONLN)"
78+
mv webos/com.retroarch.webos_${RARCH_VERSION}_arm.ipk \
79+
webos/com.retroarch.webos.gles3_${RARCH_VERSION}_arm.ipk
6980
env:
7081
DEBUG: ${{ github.event_name == 'release' && '0' || '1' }}
7182

72-
- name: Get short SHA
73-
id: slug
74-
run: echo "sha8=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
83+
- name: Upload GLES3 artifact
84+
uses: actions/upload-artifact@v4
85+
with:
86+
name: com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_${{ github.sha }}_arm.ipk
87+
path: webos/com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_arm.ipk
88+
89+
- name: Compile RA (default)
90+
shell: bash
91+
run: |
92+
. /tmp/arm-webos-linux-gnueabi_sdk-buildroot/environment-setup
93+
make -f Makefile.webos ipk PACKAGE_NAME=${PACKAGE_NAME} ADD_SDL2_LIB=1 -j"$(getconf _NPROCESSORS_ONLN)"
94+
env:
95+
DEBUG: ${{ github.event_name == 'release' && '0' || '1' }}
7596

76-
- uses: actions/upload-artifact@v4
97+
- name: Upload default artifact
98+
uses: actions/upload-artifact@v4
7799
with:
78-
name: com.retroarch.webos_${{ steps.slug.outputs.sha8 }}_arm.ipk
79-
path: |
80-
webos/*.ipk
100+
name: com.retroarch.webos_${{ env.RARCH_VERSION }}_${{ github.sha }}_arm.ipk
101+
path: webos/com.retroarch.webos_${{ env.RARCH_VERSION }}_arm.ipk
81102

82-
- name: Generate Manifest
103+
- name: Generate Manifest (default only)
104+
if: github.repository == 'webosbrew/Retroarch'
83105
shell: bash
84106
run: |
85-
. version.all
86107
webosbrew-gen-manifest -o webos/${PACKAGE_NAME}.manifest.json \
87108
-p webos/${PACKAGE_NAME}_${RARCH_VERSION}_arm.ipk \
88109
-i https://github.com/webosbrew/RetroArch/raw/webos/webos/icon160.png \
89110
-l https://github.com/webosbrew/RetroArch
90111
91112
- name: Release
92-
if: github.event_name == 'release'
113+
if: github.event_name == 'release' && github.repository == 'webosbrew/Retroarch'
93114
uses: ncipollo/release-action@v1
94115
with:
95116
token: ${{ secrets.GITHUB_TOKEN }}
@@ -98,4 +119,7 @@ jobs:
98119
omitNameDuringUpdate: true
99120
omitBody: true
100121
omitPrereleaseDuringUpdate: true
101-
artifacts: webos/*.ipk,webos/*.manifest.json
122+
artifacts: |
123+
webos/com.retroarch.webos_${{ env.RARCH_VERSION }}_arm.ipk
124+
webos/com.retroarch.webos.gles3_${{ env.RARCH_VERSION }}_arm.ipk
125+
webos/${{ env.PACKAGE_NAME }}.manifest.json

CHANGES.md

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Future
2+
3+
# 1.22.1
24
- ANDROID: OnNewIntent handler to allow launchers start new content without closing first
5+
- ANDROID: Use app-specific storage for Google Play builds of RetroArch
6+
- 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.
7+
- 3DS: Add 800px mode for New 3DS models
38
- APPLE: Include sameduck, gearcoleco, geargrafx cores in App Store builds
49
- APPLE: Include reminiscence, virtualjaguar, vitaquake2 cores in App Store builds
510
- APPLE: Include gam4980 core in App Store builds
@@ -8,17 +13,20 @@
813
- APPLE: Don't force fullscreen, allow multitasking on iPad
914
- APPLE: AppIntents for Siri, Shortcuts
1015
- APPLE: Fix ffmpeg camera driver
16+
- APPLE/MFI: Try harder to own the home button
1117
- AUDIO: Microphone CoreAudio driver for iOS and macOS
1218
- AUTOCONF: Autoconfig match extended with a physical identifier
1319
- CAMERA: Use ffmpeg libavfilter virtual input device as default
1420
- 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
21+
- CHEEVOS: Upgrade to rcheevos 12.1
22+
- CHEEVOS: Change expired token message from info to error
23+
- CHEEVOS: Hashing of RVZ files is now supported
1724
- CLOUDSYNC: Enable icloud_drive cloud sync backend on MacOS / iOS
1825
- CLOUDSYNC: Don't always trust the server hash
1926
- CLOUDSYNC: Enable WebDAV support for Android
2027
- CLOUDSYNC: Speed up cloudsync on Apple
2128
- DATABASE: Improve multidisk game scanning
29+
- DATABASE: Filter in Database Manager now works for genre and region
2230
- EMSCRIPTEN: Support core switching
2331
- EMSCRIPTEN: Support suspend screensaver
2432
- EMSCRIPTEN/RWEBCAM: Fix camera driver
@@ -33,6 +41,7 @@
3341
- INPUT: Fix heavy slowdown when using Bluetooth XInput controllers with rumble
3442
- INPUT: Reset and close content hotkeys now require confirmation, similar to quit
3543
- INPUT: Menu toggle and hotkey enable can now be assigned to the same key
44+
- INPUT: Option to have hotkeys follow the port mapped first to the core
3645
- INPUT/ANDROID: Favor mouse coordinates for lightgun
3746
- INPUT/UDEV: Fix lost terminal settings after restart from menu
3847
- INPUT/BSV/REPLAY: Bumped replay format version to 2. Old replays will still play back fine.
@@ -43,11 +52,18 @@
4352
- 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.
4453
- 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).
4554
- INTL: Add Irish Gaelic to selectable languages
55+
- IOS: Use native keyboard in search
4656
- IOS: Fix crash on iOS9 when fetching refresh rate
57+
- IOS: Stronger haptics, controllable by setting
58+
- IOS: Down arrow menu is removed, all 3 options are available by other means now
59+
- IOS/MACOS: Fix display server resolution and refresh rates
60+
- IOS/TVOS: Use native keyboard
61+
- JPEG: Fix clamping bug in JPEG decode
4762
- LIBRETRO: Deprecate intfstream_open_writable_memory
4863
- LIBRETRO: New environment function RETRO_ENVIRONMENT_GET_TARGET_SAMPLE_RATE
4964
- LINUX: Add full complement of key/value pairs to desktop entry
5065
- MACOS: Fix coreaudio microphone handling
66+
- MACOS: Fix window size calculation
5167
- MENU: Common Thumbnail Background option for all menu drivers
5268
- MENU: Move core options reset from Settings/Configuration to Main Menu / Configuration Files
5369
- MENU: Use right analog stick for thumbnail cycling in playlists
@@ -68,16 +84,19 @@
6884
- MENU: Allow kiosk mode and hiding of Settings menu also in GLUI and RGUI
6985
- MENU: Task widget improvements
7086
- MENU/GLUI: Show thumbnails in Explore view
87+
- MENU/XMB: Improvements for mobile/touch. More natural horizontal/vertical scrolling
7188
- MENU/XMB: Select button toggles thumbnails in playlists
7289
- MENU/XMB,OZONE: Fix content icons when playlist tabs are hidden
7390
- MENU/OZONE: Horizontal padding factor option
7491
- MENU/OZONE: Custom font selection and scaling factor
7592
- MENU/RGUI: Clock format is now configurable and moved to top header
93+
- NETPLAY: Push room info to lobby
7694
- NETWORK: Fixes for nmcli wifi driver
7795
- NETWORK: Network command interface enabled for Android, iOS, TVOS
7896
- OTHER: ZStandard support and libchdr update for support of chd files converted with createdvd option
7997
- OVERLAY: Speed limit on touch pointer tracking
8098
- OVERLAY: Dedicate each touch pointer to hitboxes or pointing devices
99+
- OVERLAY: Fix overlay turbo fire
81100
- PLAYLIST: Built-in playlists are now stored under playlists/builtin
82101
- PLAYLIST: Fix subsystem information in playlists
83102
- PS3: Fix psl1ght target of dist-cores.sh
@@ -86,23 +105,32 @@
86105
- SAVESTATES: Savestate thumbnails are default enabled for x86_64 builds
87106
- SAVESTATES: Slot is now remembered using the runtime log file
88107
- SAVESTATES: Slot hotkey widget shows save state thumbnail
108+
- SCAN: Fix crash with Sega CD
109+
- SCAN: Log files without database match
110+
- SCAN: Optimization of database queries by content file size
89111
- VIDEO: Fix auto swap interval setup
90112
- VIDEO: Improvements for integer scale half scaling
113+
- VIDEO: Adjustments to smart integer scaling, considering title safe area
91114
- VIDEO: Frame delay improvements for the automatic setting
92115
- VIDEO: Auto-enable GPU recording with HW context cores
93116
- VIDEO: Fix viewport bias when using custom aspect ratio
94117
- VIDEO/D3D11/D3D12: snappy extra vsync presentation mode
95118
- VIDEO/GL: Fallback OpenGL symbol loader for Linux devices with EGL < 1.5
96119
- VIDEO/GL: Support for Cg and GLSL shaders in the GLCore video driver
120+
- VIDEO/GL: Improve GLES version detection
97121
- VIDEO/SHADER: Shader hold function, useful for some lightguns and shader comparison
98122
- VIDEO/SWITCHRES: Horizontal and vertical geometry adjustment options added
99123
- VIDEO/SWITCHRES: Game overrides
124+
- VIDEO/VULKAN: Add VK_EXT_full_screen_exclusive extension support for Windows
100125
- VIDEO/WAYLAND: Support for xdg-toplevel-icon-v1
101126
- VIDEO/WAYLAND: Fix deadlock when using Wayland Vulkan driver
127+
- VIDEO/WAYLAND: Fix fullscreen on auto monitor index (partial)
102128
- VITA: Touchscreen support for PS Vita
129+
- VITA: Set RGUI framebuffer to 272 lines to remove blurriness
103130
- WEBOS: Various fixes and tunings
104131
- WEBOS: Disable core dumps
105132
- WEBOS: Debug builds enabled
133+
- WEBOS: Fix GLES 3/3.1/3.2 option, enable 64-bit option
106134

107135
# 1.21.0
108136
- 3DS: Fix unique IDs for newer cores

Makefile.common

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,10 @@ OBJ += \
302302
$(LIBRETRO_COMM_DIR)/streams/network_stream.o \
303303
$(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.o
304304

305+
ifeq ($(ANDROID), 1)
306+
OBJ += $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation_saf.o
307+
endif
308+
305309
OBJ += \
306310
$(LIBRETRO_COMM_DIR)/lists/string_list.o \
307311
$(LIBRETRO_COMM_DIR)/string/stdstring.o \
@@ -2404,6 +2408,12 @@ ifeq ($(HAVE_NETWORKING), 1)
24042408
deps/rcheevos/src/rapi/rc_api_runtime.o \
24052409
deps/rcheevos/src/rapi/rc_api_user.o \
24062410

2411+
# RVZ/WIA disc image support for RetroAchievements
2412+
ifeq ($(HAVE_ZSTD), 1)
2413+
DEFINES += -DHAVE_CHEEVOS_RVZ
2414+
OBJ += cheevos/cheevos_rvz.o
2415+
endif
2416+
24072417
ifeq ($(HAVE_LUA), 1)
24082418
DEFINES += -DHAVE_LUA \
24092419
-DLUA_32BITS

Makefile.libnx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ HAVE_CHD = 1
5757
HAVE_STB_VORBIS = 1
5858
HAVE_IBXM = 1
5959
HAVE_CORE_INFO_CACHE = 1
60+
HAVE_CLOUD_SYNC = 1
61+
HAVE_SSL = 1
6062

6163
# RetroArch libnx useful flags
6264
HAVE_THREADS = 1
@@ -148,7 +150,7 @@ LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-de
148150
# add things from Makefile.common
149151
CFLAGS += $(DEF_FLAGS)
150152

151-
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lm
153+
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lmbedtls -lmbedx509 -lmbedcrypto -lnx -lm
152154

153155
ifeq ($(HAVE_OPENGL), 1)
154156
LIBS := -lEGL -lglapi -ldrm_nouveau $(LIBS)

Makefile.webos

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
include version.all
22

3-
ifneq ($(CROSS_COMPILE),arm-webos-linux-gnueabi-)
4-
$(error You need webOS toolchain to build this. See https://github.com/webosbrew/native-toolchain)
3+
ifneq ($(filter $(CROSS_COMPILE),arm-webos-linux-gnueabi- aarch64-webos-linux-gnu-),$(CROSS_COMPILE))
4+
$(error You need webOS toolchain to build this. See https://github.com/webosbrew/native-toolchain)
55
endif
66

77
ifdef SDKTARGETSYSROOT
@@ -24,7 +24,7 @@ SDL2_PREBUILT_ARCHIVE ?= https://github.com/webosbrew/SDL-webOS/releases/downloa
2424
#########################
2525

2626
APP_PACKAGE_NAME ?= com.retroarch.webos
27-
PACKAGE_VERSION := $(patsubst "%",%,$(RARCH_VERSION))
27+
IPK_VERSION := $(shell grep '#define PACKAGE_VERSION' version.all | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/')
2828

2929
DEBUG ?= 0
3030

@@ -80,7 +80,7 @@ HAVE_LANGEXTRA = 1
8080
HAVE_LIBRETRODB = 1
8181
HAVE_MENU = 1
8282
HAVE_MENU_COMMON = 1
83-
HAVE_NEON = 1
83+
HAVE_NEON = 0
8484
HAVE_NETWORKING = 1
8585
HAVE_IFINFO = 1
8686
HAVE_NETWORK_CMD = 1
@@ -140,7 +140,12 @@ DEF_FLAGS += -ffunction-sections -fdata-sections
140140
DEF_FLAGS += -I. -Ideps -Ideps/stb -DWEBOS=1 -MMD
141141
DEF_FLAGS += -Wall -Wno-unused-variable
142142
LIBS := -ldl -lz -lrt -pthread
143-
ARCHFLAGS := -mcpu=cortex-a9 -mtune=cortex-a53 -mfloat-abi=softfp
143+
ifeq ($(findstring arm64,$(ARCH)),arm64)
144+
ARCHFLAGS := -mcpu=cortex-a53
145+
else
146+
ARCHFLAGS := -mcpu=cortex-a9 -mtune=cortex-a53 -mfloat-abi=softfp
147+
HAVE_NEON = 1
148+
endif
144149
CFLAGS := $(ARCHFLAGS)
145150
CXXFLAGS := $(ARCHFLAGS) -fno-exceptions -fno-rtti -std=c++11 -D__STDC_CONSTANT_MACROS
146151
ASFLAGS := $(ARCHFLAGS)
@@ -157,6 +162,15 @@ DEFINES += -DHAVE_NETWORKING -DHAVE_IFINFO -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_A
157162
DEFINES += -DHAVE_NETWORKGAMEPAD
158163
DEFINES += -DHAVE_FREETYPE
159164
DEFINES += -DHAVE_UPDATE_CORE_INFO
165+
ifneq (,$(filter 1,$(HAVE_OPENGLES3) $(HAVE_OPENGLES3_1) $(HAVE_OPENGLES3_2)))
166+
DEFINES += -DHAVE_OPENGLES3
167+
endif
168+
ifeq ($(HAVE_OPENGLES3_1),1)
169+
DEFINES += -DHAVE_OPENGLES3_1
170+
endif
171+
ifeq ($(HAVE_OPENGLES3_2),1)
172+
DEFINES += -DHAVE_OPENGLES3_2
173+
endif
160174

161175
PKG_CONFIG=pkg-config
162176

@@ -169,8 +183,10 @@ FREETYPE_LIBS := $(shell $(PKG_CONFIG) --libs freetype2)
169183
FONTCONFIG_CFLAGS := $(shell $(PKG_CONFIG) --cflags fontconfig)
170184
FONTCONFIG_LIBS := $(shell $(PKG_CONFIG) --libs fontconfig)
171185
MMAP_LIBS = -lc
172-
NEON_CFLAGS = -mfpu=neon
173-
NEON_ASFLAGS = -mfpu=neon
186+
ifeq ($(HAVE_NEON),1)
187+
NEON_CFLAGS += -mfpu=neon
188+
NEON_ASFLAGS += -mfpu=neon
189+
endif
174190
NETWORKING_LIBS = -lc
175191

176192
OBJDIR_BASE := obj-unix
@@ -201,14 +217,17 @@ RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
201217
define APPINFO
202218
{
203219
"id": "$(APP_PACKAGE_NAME)",
204-
"version": "$(PACKAGE_VERSION)",
220+
"version": "$(IPK_VERSION)",
205221
"vendor": "webosbrew.org",
206222
"title": "RetroArch",
207223
"icon": "icon160.png",
208224
"main": "retroarch",
209225
"iconColor": "#333333",
210226
"type": "native",
211-
"appDescription": "Emulation frontend"
227+
"appDescription": "Emulation frontend",
228+
"cloudgame_active": true,
229+
"useAllMouseButtons": true,
230+
"useAllKeyboardKeys": true
212231
}
213232
endef
214233
export APPINFO
@@ -297,7 +316,7 @@ endif
297316
cd webos && ares-package dist
298317

299318
install: ipk
300-
ares-install webos/$(APP_PACKAGE_NAME)_$(PACKAGE_VERSION)_$(ARCH).ipk
319+
ares-install webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(ARCH).ipk
301320

302321
launch: install
303322
ares-launch $(APP_PACKAGE_NAME)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ RetroArch has been ported to the following platforms:
7373
- Emscripten (WebAssembly and JavaScript)
7474
- FreeBSD
7575
- Haiku
76+
- LG webOS
7677
- Linux
7778
- Original Microsoft Xbox
7879
- Microsoft Xbox 360 (Libxenon/XeXDK)

audio/common/pipewire.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,10 @@ bool pipewire_core_init(pipewire_core_t **pw, const char *loop_name, const struc
138138
void pipewire_core_deinit(pipewire_core_t *pw)
139139
{
140140
if (!pw)
141-
return pw_deinit();
141+
{
142+
pw_deinit();
143+
return;
144+
}
142145

143146
if (pw->thread_loop)
144147
pw_thread_loop_stop(pw->thread_loop);

audio/drivers/alsathread.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,11 @@ static void alsa_microphone_worker_thread(void *mic_context)
212212
RARCH_DBG("[ALSA] [capture thread %p] Ending microphone worker thread.\n", thread_id);
213213
}
214214

215-
static int alsa_thread_microphone_read(void *driver_context, void *mic_context, void *s, size_t len)
215+
static int alsa_thread_microphone_read(void *driver_context, void *mic_context, void *sv, size_t len)
216216
{
217217
snd_pcm_state_t state;
218218
size_t _len = 0;
219+
uint8_t *s = (uint8_t*)sv;
219220
alsa_thread_microphone_t *alsa = (alsa_thread_microphone_t*)driver_context;
220221
alsa_thread_microphone_handle_t *mic = (alsa_thread_microphone_handle_t*)mic_context;
221222

audio/drivers/coreaudio.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ static void *coreaudio_init(const char *device,
285285
if (AudioUnitInitialize(dev->dev) != noErr)
286286
goto error;
287287

288+
/* Enforce minimum latency to prevent buffer issues */
289+
if (latency < 8)
290+
latency = 8;
291+
288292
fifo_size = (latency * (*new_rate)) / 1000;
289293
fifo_size *= 2 * sizeof(float);
290294
dev->buffer_size = fifo_size;

audio/drivers/coreaudio_mic_ios.m

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -458,16 +458,6 @@ static void coreaudio_microphone_device_list_free(const void *driver_context, st
458458
{
459459
}
460460

461-
/* Check if microphone is using float format */
462-
static bool coreaudio_microphone_use_float(const void *driver_context, const void *microphone_context)
463-
{
464-
coreaudio_microphone_t *microphone = (coreaudio_microphone_t *)microphone_context;
465-
if (!microphone)
466-
return false;
467-
468-
return microphone->use_float;
469-
}
470-
471461
/* CoreAudio microphone driver structure */
472462
microphone_driver_t microphone_coreaudio = {
473463
coreaudio_microphone_init,

0 commit comments

Comments
 (0)