Commit Graph
62 Commits
Author SHA1 Message Date
libretroadmin f0b97a2e90 Remove the standalone frontends
The libretro core is the frontend, and the headless tools are the test and
debugging hosts. The Windows, UWP, Android, iOS, macOS and SDL apps, the UI
framework and imgui go, along with what only they used: the Win32 debugger
hooks (g_frameMutex, the shutdown lock), JNI thread attachment, the Android
text drawer, RAIntegration, Discord, recent files, game installs, tilt input,
the audio resamplers, the control mapper, memstick moving and the remote ISO
and upload server modes. The web server keeps the debugger. The MSVC, Gradle
and ndk-build projects go too.
2026-10-09 04:56:10 +02:00
libretroadmin 5f0f72bfda Remove sleeps and timed polling from networking
Socket waits now block in select() on the socket plus a wake or cancel
socket (Common/Net/Cancel), so a stop or cancel ends them at once.

- HTTP: cancel flags become net::CancelToken; Connect waits once on all
  addresses, receives wait instead of spinning, no DNS retry sleep.
- Adhoc: the friend finder and adhoc server block on their sockets with
  a wake socket and a deadline; matching runs on a CoreTiming tick
  instead of two threads (savestate section bumped).
- sceNetInet select/poll check without blocking and park the HLE thread,
  re-checked from a CoreTiming event until ready or the emulated
  timeout.
- Vendor the aemu_postoffice client (was a submodule) with no sleeps:
  waits on the socket, close via shutdown and an eventcount, cancelable
  connects, and lock-free session slot claims.
- PortManager waits without a timeout; PSP_InitWait replaces the
  headless boot poll.
- TimeUtil: sleep_us/sleep_ms only outside the core; sleep_precise,
  sleep_random, yield and the Windows timer period are gone.
- Unit test for the socket waits.
2026-10-08 17:58:46 +02:00
libretroadmin d56b453891 Replace zlib, zstd, libchdr, libzip and libpng with libretro-common
Deflate, zlib and gzip streams go through rinflate and rdeflate, zstd
through rzstd, CHD images through rchd, zip archives through
rzip_archive and PNG through rpng. The bundled libraries, their build
glue and the system-library options are gone; adler32 and uncompress
keep zlib's ABI for the prebuilt FFmpeg archives that still call them.
libretro-common is one CMake library that the core, the headless tool
and the unit tests all link.

The reads take shorter paths on the way. CHD decodes straight from the
loader's reads and a range of blocks at a time, and a file read at any
alignment decodes into place; CSO keeps one inflate stream instead of
one per block; a plain ISO serves a file read with one read of its exact
bytes; a stored zip member is read in place and a deflated one through
restart points rather than a copy of the whole image in memory; zip
members decode into the caller's buffer; sequential reads through the
frontend's VFS skip the seek, which also keeps its buffering.

libretro/test reads one image as ISO, CSO, CHD and zip through the block
devices, boots each, and checks the codecs against Python-made vectors;
a CI job runs it.
2026-10-08 14:14:38 +02:00
libretroadmin cf9d102864 libretro: vendor libretro-common from RetroArch in-tree
The libretro-common submodule pinned the standalone repository at
76a3d54. It is replaced by an in-tree copy of RetroArch master
(b655a20) holding only what the core uses: the VFS, file, string,
encoding, compat and time sources it already built, the headers they and
the core include, the threading set - rthreads, retro_atomic, retro_spsc
and retro_waitable_spsc, mpsc_stack, retro_triple_buffer,
retro_eventcount, retro_asym_eventcount, retro_procbarrier and tpool,
with features_cpu and rstrtod, which they need - and the codecs that
replace the bundled zlib, zstd, libchdr, libzip and libpng: rinflate and
rdeflate, rzstd, rchd with its LZMA and FLAC decoders, rzip_archive,
rpng and crc32.

stdstring.c, which nothing calls, is no longer built. The threading sources are always built, by both the static Makefile and
CMake; the VFS set stays behind HAVE_LIBRETRO_VFS as before. The codecs
are built by the change that switches the core over to them.
2026-10-08 14:14:37 +02:00
Henrik Rydgård 2096df52f5 Vendor naett in-tree, de-amalgamated
naett has been a submodule pinned at v0.3.3; upstream has had no commits since
April 2024, and we want to carry local changes (next up: a libcurl-backed HTTPS
path for Linux). It's ~1500 lines of MIT C, smaller than several things we
already vendor, so bring it in-tree and drop the submodule.

Also drop the generated single-file amalgam (naett.c) that every build system
was compiling, and build src/*.c directly instead - otherwise the file you edit
isn't the file that gets compiled, which is a trap for anyone patching this.
example/ and testrig/ (a whole Android Studio project) are gone with it.

Two changes were needed to make the sources build on their own, both noted in
ext/naett/README-ppsspp.md along with the upstream commit:

- naett_internal.h now includes naett.h, which the amalgam pulled in first.
- naett_linux.c now includes stdio.h/stdlib.h. It calls exit/calloc/realloc/
  free/fprintf without ever including either, and only got away with it because
  naett_core.c sat above it in the concatenation.

No functional change - Linux still has HTTPS_NOT_AVAILABLE set, so it doesn't
build naett at all yet.

Rename naett to naett-lib
2026-09-02 17:35:14 +02:00
Henrik Rydgård 0e30353583 CI: fetch the frametests submodule in the test job and always run frametests on Linux
The test set lives in the 'frametests' git submodule (hrydgard/ppsspp-frametest-ci).
The test job previously only inited pspautotests, so the submodule was never
synced on CI and the (now removed) hashFiles gates skipped the frametests steps.
Use an HTTPS submodule URL so CI can fetch it without SSH keys.
2026-08-09 21:15:51 +02:00
Henrik Rydgård 0d47851e92 Add the frametests repo as a submodule 2026-08-09 13:41:39 +02:00
Henrik Rydgård 593e0fd8d9 Remove stray space in .gitmodules. This might be what broke the flatpak build:
https://github.com/flathub/org.ppsspp.PPSSPP/pull/97
2026-03-08 18:53:08 +01:00
Katharine Chui 5aa266934b import aemu_postoffice as a submodule instead 2026-01-19 22:14:51 +01:00
Henrik Rydgård 74874bb81e Test a multi-shape image 2025-09-19 10:31:51 -06:00
Henrik Rydgård 46b08530a5 Add nanosvg submodule 2025-09-19 10:31:51 -06:00
Henrik Rydgård 0e6dd2faa0 Use forked free-type with a patch 2025-09-11 10:20:45 -06:00
Henrik Rydgård 40a5331581 Delete reference to prebuilt libfreetype, pull in the source instead. 2025-09-10 13:02:47 -06:00
Henrik Rydgård 28f8ce64f7 Add freetype as a submodule (2.14.0) 2025-09-10 13:02:47 -06:00
Henrik Rydgård f8c6543664 Remove the dx9sdk submodule, no longer needed for anything 2025-08-29 10:41:45 +02:00
Henrik Rydgård 0cb7011fdd Switch to a fork of glslang with an include fix for gcc 15
See #20399 and #19952
2025-05-26 22:18:06 +02:00
Henrik Rydgård ec4065aab1 Remove the pfd submodule. 2025-03-29 11:15:37 +01:00
Henrik Rydgård fe4ca6fb63 Add portable-file-dialogs as a submodule 2025-03-29 08:41:33 +01:00
Henrik Rydgård f23ec1cf23 Initial build setup for including lua 2024-11-05 11:20:43 +01:00
Henrik Rydgård ab257e335f Ugprade miniupnp submodule to latest
Maybe will help #19246, but no idea really.

Windows buildfix

UWP buildfix

miniupnpc path fixes

libretro buildfix attempt, android.mk
2024-06-05 00:18:00 +02:00
Henrik Rydgård 76c5a8cf1b Fix submodule path, remove some logspam.
Fixes #19180
2024-05-24 19:01:34 +02:00
Henrik Rydgård 41f8670d2a Add MoltenVK.xcframework as a submodule 2024-05-23 09:41:00 +02:00
Henrik Rydgård fc1d984b20 Update rcheevos, switch back to upstream. Avoid using rcheevos' hash.c, by computing game hashes ourselves. 2024-04-03 16:43:34 +02:00
Lubos 76b015a4ab OpenXR - Migrate to official SDK 2024-03-20 12:23:54 +01:00
Henrik Rydgård 0f97180ee1 Update rcheevos.
While doing so, switch to a fork with 3DS hashing support removed.
2024-02-28 11:26:33 +07:00
Dzmitry Dubrova a461800973 Implement custom driver loading for ARM64 Android devices 2023-12-14 08:53:03 +03:00
Henrik Rydgård ade64171ce Proof-of-concept: libchdr works on Windows 2023-09-29 10:05:19 +02:00
Henrik Rydgård cf97038a2d Switch the naett submodule back to the upstream repo
All my PRs are in now.
2023-07-31 23:33:24 +02:00
Henrik Rydgård c17a559188 Update to a patched naett with PRs #18 and #17 2023-07-21 18:23:31 +02:00
Henrik Rydgård 7ae34f148a Setup build for naett - a lightweight https wrapper 2023-07-21 10:27:40 +02:00
Henrik Rydgård a259ed1835 Switch back to rcheevos' upstream version 2023-07-16 17:05:08 +02:00
Henrik Rydgård ba61b495c5 Bump rcheevos to a fork with two important bugfixes (access invalidation, buffer overflow) 2023-07-11 16:33:52 +02:00
Henrik Rydgård c0f0c05417 rcheevos initial build setup and basic scaffolding 2023-06-26 10:01:40 +02:00
xielei 8ff78cb921 aioemu 2023-02-15 17:21:45 +08:00
Unknown W. Brackets 489411359e Common: Add cpu_features library. 2023-01-29 14:35:58 -08:00
Unknown W. Brackets 87aa4e127c Build: Update to glslang v11.13.0, use upstream.
This switches the submodule origin.
2023-01-01 10:28:53 -08:00
Unknown W. Brackets 0cf07a8d62 Debugger: Add web debugger in assets.
This is from the "bundled" branch, which is generated by GitHub Actions.
2021-09-26 12:24:29 -07:00
vit9696 e1cb1c9a67 Switch to submodules and fix release version generation 2021-09-16 10:40:39 +03:00
Henrik Rydgård bbe39339cb Remove lang from gitmodules 2021-07-17 16:45:41 +02:00
Unknown W. Brackets d3e2aa6d28 Build: Add libzstd to build. 2021-04-11 09:13:10 -07:00
Henrik Rydgård eb7b6b38f6 Switch to my miniupnpc fork with a UWP fix 2020-07-21 23:43:32 +02:00
ANR2ME 33d3ac28de Added UPnP Support
Fix i18n type
2020-07-21 23:02:58 +02:00
TotalCaesar659 fd81c123b0 Update submodule URL 2020-07-03 16:43:31 +03:00
Henrik Rydgård 2bf92c5d97 Atlastool/zimtool: Make it easy to build these on Windows (prebuilt submodule) 2020-02-29 12:19:08 +01:00
Henrik Rydgård eddaf97938 Add submodules, namespace json to prepare for the addition of rapidjson (sigh) 2018-08-13 00:18:54 +02:00
Henrik Rydgard a8ee70f23d Import SPIRV-Cross. This will be used later to translate post-processing shaders to the various shader languages we use.
Eventually, this will make it possible to use post-processing with
Vulkan and D3D11. Probably not DX9, though maybe.

Not adding to Android build, there's some strangeness with STL.
2017-02-14 23:33:27 +01:00
Henrik Rydgard b46bb1efdb glslang for vulkan: Use my proper glslang fork instead of the ugly old SDK-glslang fork 2016-12-20 00:30:09 +01:00
Henrik Rydgard c87d4a66c1 Move lang into assets. 2016-10-14 22:33:45 +02:00
Henrik Rydgard 8684180620 Add ppsspp-glslang as a submodule (shader compiler for future Vulkan support)
This also adds a Windows project file, for building it.
2016-02-17 21:38:35 +01:00
Unknown W. Brackets f5c1473f25 Native merge part 3: remove old native. 2015-09-06 13:06:58 -07:00