Fixes building on Debian 12 Bookworm for the included `ffmpeg` project.
Changes since 13.x:
* ver 1.14.x (full list of changes - https://www.ppsspp.org/news/release-1.14)
* Graphics fixes in Burnout Dominator, Kurohyou, Ratchet & Clank, Outrun, Ridge Racer, Spongebob: Yellow Avenger, Cars: Race-o-Rama, Hunter x Hunter, many others
* Performance improvements: Killzone now runs at playable speed, Juiced 2 performance fixed, lighting ubershader optimization
* Many software renderer improvements, both performance and accuracy.
* Some input handling fixes, IR interpreter fixes, and so much more.
* MSAA antialiasing added to the Vulkan backend (desktop only)
* New API for plugins to access aspect ratio, scaling and fast-forward ([#16441]), other new APIs & improvements
* UI improvements
- New interactive Display Layout & Effects screen, replacing the old Display Layout Editor
- Add default shader for LCD persistence simulation
- Game being played can now be seen as a background in most menus
- Reorganize speed hack settings
* Stability fixes
- Workaround for hangs on older Adreno GPUs
- Input handling fixes for deadzones and touch controls
- Avoid game bugs in Twinbee Portable and Shining Ark
* Performance improvements
- Vulkan bandwidth and synchronization optimizations
- Lighting "ubershader" optimization to prevent hitches
- Assorted minor other improvements
- Improve texture replacement memory usage
- Texture upscaling speedup and fixes
* version 1.15 (full list of changes - https://www.ppsspp.org/news/release-1.15)
* Tilt controls: Restore "Low end radius" control
* Improve the workarounds for the DJ Max games
* OpenGL: Restore most of the lost performance on low-end hardware from the shader variant reduction
* Add a simple profiling tool to check CPU usage by the GL backend
* Loader: Fix bug preventing WWE 2009 from starting
* Control mapping: Fix bugs in mapping UI causing trouble with some controllers
* Fix for broken tilt d-pad controls
* Stutter caused by shader compilation has been reduced drastically
* Rendering performance and fixes
* Texture replacement improvements
* Optimizations for Vulkan texture uploads, Software renderer, Lighting shader optimizations.
* GLSL shader compatibility fixes
* Rewind savestates no longer slows things down a lot
* Depth-related rendering fixes
* UI fixes: Vertical use of space, scrollbars, touchpad scroll on Windows
* version 1.16 (full list of changes - https://www.ppsspp.org/news/release-1.16)
* RetroAchievements support !
* Fix performance issue with Vulkan descriptor set allocation
* Smoother loading of replacement textures
* Fix problem with waves background
* Fix for crash when changing render backend in-game
* Simplify shader cache lookups on Vulkan, hopefully fixing some crashes
* Other crash and stability fixes
* Assorted improvements to the IR JITs
* Fix crash bug and performance issue in Vulkan shader cache
* Fix for HTTP support on Linux on networks with shaky or incomplete IPv6 support
* Fix hang when switching UMD with RetroAchievements enabled
* Input fixes
* Rendering performance and fixes
* Texture replacement fixes
* UI changes
- Color emoji support on some platforms
- Use TTF fonts on SDL where available (macOS, Linux/Steam Deck)
- Allow setting the PSP's MAC address directly
- Better looking notifications
* Fix horrible audio glitch in After Burner
* Fix timing issue causing slowdowns in MLB games
* Emulate the vrnd instruction accurately
Included `lr-snes9x` and `lr-pcsx-rearmed` in the main section when `aarch64` is detected, otherwise they won't be installed during a basic installation.
Changed the source repository to the libretro fork of the core, since it gets a bit of maintenance than the original repo ('r-type/xmil-libretro') and I noticed a few more core options have been added over the time. The original core repository hasn't been updated since 2017.
Added the licence from the libretro fork.
libretro build files are now included in the upstream scummvm repository, and the libretro repo is a fork of that.
The `main` branch is now `master` and the libretro makefiles have moved to backends/platform/libretro.
Update the module licence path and install file paths.
fix
Upstream uses a shallow submodule, but is tracking a rolling branch that changed since the submodule was added.
Older `git` versions cannot fetch the ref registered in the parent repo and the recursive clone fails.
It affects Debian _buster_ and Ubuntu 18.04, plus other downstream distros (Linux Mint 19.3).
Clone the repo temporarily and remove the submodule, since it's not used actively by the core.
Issue was reporeted upstream in https://github.com/libretro/libretro-cap32/issues/116.
gcc -dumpversion on GCC >= 7 seems to provide the major version but the documentation suggests this depends on how it's configured.
We only need to test the major version so using compareVersions isn't required.
https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html states:
>Print the compiler version (for example, 3.0, 6.3.0 or 7)—and don’t do anything else. This is the compiler
>version used in filesystem paths and specs. Depending on how the compiler has been configured it can be
>just a single number (major version), two numbers separated by a dot (major and minor version) or three
>numbers separated by dots (major, minor and patchlevel version).
Ensure __gcc_version only contains the major version just in case in system.sh
This fixes building on Bullseye.
According to https://github.com/libretro/dosbox-pure/commit/603b1c7ae
>Switch to gcc 9 to avoid buggy assembly genetation [sic] of gcc 10
>On armv7l, gcc 10.2 with -O2 on the file core_dynrec.cpp generates assembly that wrongfully passes NULL to the runcode function
>resulting in a segfault crash. It can be observed by writing block->cache.start to stdout twice where it is NULL at first
>and then the actual value thereafter. This affects upstream SVN DOSBox as well as this core.
Until [1] is resolved - one way or another - use a good known commit to build the PrBoom core.
Upstream core is relatively static, so we're not loosing much for pinning the version.
[1] https://github.com/libretro/libretro-prboom/issues/181
Recently, upstream re-organized the repository and changed the build process.
This commit adapts the scriptmodule to the new structure:
- building is done directly from the main repo source
- data files neeed for the core is built with `make datafiles` and copied to our package
- ScummVM is upgraded to current stable (v2.6.1) in the process.
NOTE: WIP engines are not built by default and are not included
- switched the theme the `scummremastered`, added in 2019 in ScummVM
- license changed to GPLv3 (same as the main ScummVM project)
LTO was recently enabled in the upstream Makefile, but our CFLAGS are not sent to the linking stage which causes issues due to conflicts with our CPU flags
LTO has been problematic in the past so easiest to disable it as before.
The libretro/pcsx_rearmed NEON gpu plugin now can also run on arm64 and x86,
and it's makefile should be able to detect when to enable those things.
Remove the 'else' case and let it do the detection.
libretro/pcsx_rearmed#690
Upstream introduced recently an ASM optimized path for NEON platforms, enabled with a new `define`.
Added the new define for NEON platforms, otherwise the build fails because it picks the wrong ASM path.
Introduced in 047899a4f3
245e1a126f changes the include paths for CapsLibAll.h which breaks our build script.
This change adds the include path for the caps headers ($md_build/src/includes/caps) to CFLAGS which resolves it.
Also remove the symlink creation in hatari.sh for the caps5 include path that is no longer used.
platform var needs the additional 'unix' keyword since the changes in 3af49d8d5d or else the wrong target platform is used (it tries to include x86 specific code)
Both stand-alone `ppsspp` and the libretro core `lr-ppsspp` share the `$HOME/.config/ppsspp` save file directory.
`moveConfigDir` removes the symlink on removal; this will disconnects the existing saves from the remaining emulator.
ppsspp: Use moveConfigDir only on install.
On removal, do not use the helper function. Remove the symlink manually and only if no remaining PSP emulators.
lr-ppsspp: Libretro core did not link this dir at all, and just used mkUserDir instead. Switch to use moveConfigDir and same fix as above, for libretro core also.
Current master has shader issues on videocore causing a black screen, so switching back to last tagged version - v1.12.3.
Historically we have had to fix up a fair number of ppsspp issues on the RPI due to upstream changes so sticking to a stable release seems like a good idea and allows us to test before we update.
The PPSSPP repository is also quite active and re-building ppsspp/lr-ppsspp binaries for every change takes a lot of time, so this also frees up some cpu time on our build system.
We were missing ensureSystemretroconfig calls for FBNeo's console subsystems that are needed to populate a default retroarch.cfg
Move the systems into an array to avoid listing them twice.
`lr-ppsspp` uses the `savefile_directory` path in order to create its own save structure.
Game saves are not regular `.srm` files, but they're saved in a `PSP/SAVEDATA/<GAME_ID>` folder structure.
Without setting a `savefile_directory`, the core will try to save to `/PSP/SAVEDATA/<GAME_ID>`, which obviously fails.
Setting this to `$HOME/.config/ppsspp` makes it possible to share the savedata with the standalone emulator.
Now we have a new upstream lr-stella we don't want this rename anymore as it will rename the new module.
If a user upgrades from a very old release with the older lr-stella module, they will get upgraded to the new core but can always install lr-stella2014 if they want the older core again.