Here is an update to ppsspp 1.17.1.
What's new in 1.17.1 -------------------- - Fixed green rendering errors on some PowerVR GPUs ([#18781]) - Release all held keys on pause to avoid "stuck keys" after unpausing or in run-behind-pause ([#18786]) - UI fixes ([#18785]) - Update libchdr with zstd support, warn the user about bad CHDs ([#18824], [#18803]) - Add workaround for AdHoc mode in Resistance ([#18821]) - Fix graphics in Tokimeki Memorial 4 ([#18822]) - Fix crash in UFC 2010 on Mali GPUs ([#18813]) - Temporarily disable MSAA on Adreno GPUs due to crashing ([#18819]) - Fixed some crashes and optimized the game metadata cache ([#18794], [#18775]) - Additional crashfixes and similar ([#18777], [#18779], [#18823]) - Fixed playback of frame dumps with Vulkan ([#18793]) - Volume slider added for RetroAchievements sounds ([#18772]) What's new in 1.17 ------------------ - Rendering performance and fixes - Fix for very old rendering issue in Tokimeki Memorial 4 ([#18650]) (didn't quite work, see 1.17.1) - Performance improvement in Tactics Ogre by avoiding a readback ([#18599]) - Cull small draws that are quick to check that they are offscreen ([#18446]) - Assorted optimizations ([#18586], [#18573], [#18476], [#18413], [#18416], [#18219]) - Fix HUD in Tiger Woods 06 ([#18554]) - Adrenotools support added - you can now load custom Vulkan drivers on Adreno ([#18532], [#18548], [#18699]) - Fix rendering with bad Z parameters, fixes homebrew Zig example ([#18535]) - Fix Z problem in Hayate no Gotoku!! Nightmare Paradise [#18478] - Fix frozen pitch meters in MLB games ([#18484]) - Enable MSAA on modern mobile devices (Vulkan-only) ([#18472]) - Fix video flicker in Naruto: Ultimate Ninja Heroes 2 ([#18454]) - UI - Track total time played per game ([#18442]) - When opening the pause menu, there's now an option to keep the game running behind the menu. This is enforced in multiplayer to avoid inadvertent desyncs ([#18517], [#18515]) - ISO loading improvements - The CHD file format is now fully supported (use `chdman createdvd`!), including with Remote ISO and Retroachievements - Improvements to [remote ISO](https://www.ppsspp.org/docs/reference/disc-streaming/): optional tab on home screen, can now share whole folders ([#18627], [#18639], [#18640], [#18631], [#18632], [#18633],) - Controller and touchscreen fixes - More control bindings, organize into categories ([#18635], [#18589]) - Fix inverse deadzone (low end) for joystick input - Fix analog deadzones for XInput controllers ([#18407]) - Improved tilt control further ([#18533]) - Mouse input supported on Android ([#18551], [#18473]) - Customizable threshold for analog-trigger to button-press mapping, customizable delay for mouse-scroll key-up ([#18621], [#18585]) - Make it work better to bind an analog stick to four buttons, useful for camera control in some games - Can now unpause with the key you bound to pause ([#18591]) - Other fixes and updates - More work on the IR JITs ([#18234], [#18235], [#18228], [#18227], [#18226], many more) - Moving the memstick directory on Android is now faster and safer [#18744] - Workaround problems in Add Doko Demo Issho, Driver 76, Harukanaru Toki no Naka, Ace Combat by slowing down the emulated UMD drive to match reality better ([#18436], [#18445]) - VR: Quest 3 rendering issues fixed ([#18677]) - Various bugfixes in texture replacement ([#18638], [#18610], [#18519], [#18466], [#18747]) - RetroAchievements: Rich presence, renamed Challenge Mode back to the recommended Hardcore Mode, various error handling improvements, configure per game ([#18468], [#18651], [#18488], [#18428], [#18425]) - HLE: Slice large-and-slow memcpy/memset operations, can help with some stalls. ([#18560]) - Other various minor fixes and optimizations ([#18558], [#18555], [#18538], [#18529], [#18450], [#18314], [#18233], [#18678], [#18749], [#18736], [#18704]) - SoftGPU fixes ([#18362]) - Fixed international fonts on Steam Deck ([#18732], [#18734]) - GoExplore (GPS app) now starts up and allows navigation ([#18665], [#18666], [#18668], [#18669]) - SDL: Improve input latency in Vulkan mode by running rendering on a separate thread ([#18268]) - Assorted multiplayer fixes ([#18435]) - Support for emulating the infrared port of the original PSP through sceSircs ([#18684]) Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/ppsspp/Makefile,v retrieving revision 1.25 diff -u -p -u -p -r1.25 Makefile --- Makefile 16 Oct 2023 10:23:45 -0000 1.25 +++ Makefile 18 Apr 2024 06:39:32 -0000 @@ -4,7 +4,7 @@ NOT_FOR_ARCHS = ${BE_ARCHS} COMMENT = Sony PlayStation Portable emulator DISTNAME = ppsspp-$V -V = 1.16.6 +V = 1.17.1 SITES = https://github.com/hrydgard/ppsspp/releases/download/v$V/ Index: distinfo =================================================================== RCS file: /cvs/ports/emulators/ppsspp/distinfo,v retrieving revision 1.13 diff -u -p -u -p -r1.13 distinfo --- distinfo 16 Oct 2023 10:23:45 -0000 1.13 +++ distinfo 18 Apr 2024 06:39:32 -0000 @@ -1,2 +1,2 @@ -SHA256 (ppsspp-1.16.6.tar.xz) = l4JGixdavInlNlpz2ISNZg45tZbsjaAjiq2XfInPURY= -SIZE (ppsspp-1.16.6.tar.xz) = 51439288 +SHA256 (ppsspp-1.17.1.tar.xz) = I+C4ZJzIEksMIqYtTUG1kra9QGS86MCbDUq86JXhMq4= +SIZE (ppsspp-1.17.1.tar.xz) = 54663108 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-CMakeLists_txt,v retrieving revision 1.14 diff -u -p -u -p -r1.14 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 19 Dec 2023 14:56:45 -0000 1.14 +++ patches/patch-CMakeLists_txt 18 Apr 2024 06:39:32 -0000 @@ -22,7 +22,7 @@ Index: CMakeLists.txt set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") # Enable checking printf-like format strings (also works for logging functions) -@@ -1134,7 +1134,7 @@ else() +@@ -1147,7 +1147,7 @@ else() endif() # Arm platforms require at least libpng17. Index: patches/patch-Core_AVIDump_cpp =================================================================== RCS file: patches/patch-Core_AVIDump_cpp diff -N patches/patch-Core_AVIDump_cpp --- patches/patch-Core_AVIDump_cpp 18 Jun 2023 21:14:58 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,14 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/AVIDump.cpp ---- Core/AVIDump.cpp.orig -+++ Core/AVIDump.cpp -@@ -91,7 +91,7 @@ bool AVIDump::Start(int w, int h) - - bool AVIDump::CreateAVI() { - #ifdef USE_FFMPEG -- AVCodec *codec = nullptr; -+ const AVCodec *codec = nullptr; - - // Use gameID_EmulatedTimestamp for filename - std::string discID = g_paramSFO.GetDiscID(); Index: patches/patch-Core_HLE_sceAtrac_cpp =================================================================== RCS file: patches/patch-Core_HLE_sceAtrac_cpp diff -N patches/patch-Core_HLE_sceAtrac_cpp --- patches/patch-Core_HLE_sceAtrac_cpp 18 Jun 2023 21:14:58 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/HLE/sceAtrac.cpp ---- Core/HLE/sceAtrac.cpp.orig -+++ Core/HLE/sceAtrac.cpp -@@ -123,6 +123,7 @@ static const int atracDecodeDelay = 2300; - #ifdef USE_FFMPEG - - extern "C" { -+#include "libavcodec/avcodec.h" - #include "libavformat/avformat.h" - #include "libswresample/swresample.h" - #include "libavutil/samplefmt.h" Index: patches/patch-Core_HLE_sceMpeg_cpp =================================================================== RCS file: patches/patch-Core_HLE_sceMpeg_cpp diff -N patches/patch-Core_HLE_sceMpeg_cpp --- patches/patch-Core_HLE_sceMpeg_cpp 19 Dec 2023 14:56:45 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,22 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/HLE/sceMpeg.cpp ---- Core/HLE/sceMpeg.cpp.orig -+++ Core/HLE/sceMpeg.cpp -@@ -108,6 +108,7 @@ static bool useRingbufferPutCallbackMulti = true; - #ifdef USE_FFMPEG - - extern "C" { -+#include "libavcodec/avcodec.h" - #include "libavformat/avformat.h" - #include "libavutil/imgutils.h" - #include "libswscale/swscale.h" -@@ -802,7 +803,7 @@ static bool InitPmp(MpegContext * ctx){ - pmp_want_pix_fmt = AV_PIX_FMT_RGBA; - - // Create H264 video codec -- AVCodec * pmp_Codec = avcodec_find_decoder(AV_CODEC_ID_H264); -+ const AVCodec * pmp_Codec = avcodec_find_decoder(AV_CODEC_ID_H264); - if (pmp_Codec == NULL){ - ERROR_LOG(ME, "Can not find H264 codec, please update ffmpeg"); - return false; Index: patches/patch-Core_HW_MediaEngine_cpp =================================================================== RCS file: patches/patch-Core_HW_MediaEngine_cpp diff -N patches/patch-Core_HW_MediaEngine_cpp --- patches/patch-Core_HW_MediaEngine_cpp 18 Jun 2023 21:14:58 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,46 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/HW/MediaEngine.cpp ---- Core/HW/MediaEngine.cpp.orig -+++ Core/HW/MediaEngine.cpp -@@ -38,6 +38,11 @@ extern "C" { - #include "libavutil/imgutils.h" - #include "libswscale/swscale.h" - -+#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 23, 100) -+ // private libavformat api (see demux.h in ffmpeg src tree) -+ void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type); -+#endif -+ - } - #endif // USE_FFMPEG - -@@ -410,13 +415,19 @@ bool MediaEngine::addVideoStream(int streamNum, int st - #else - stream->request_probe = 0; - #endif -+#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 23, 100) -+ avpriv_stream_set_need_parsing(stream, AVSTREAM_PARSE_FULL); -+#else - stream->need_parsing = AVSTREAM_PARSE_FULL; -+#endif - // We could set the width here, but we don't need to. - if (streamNum >= m_expectedVideoStreams) { - ++m_expectedVideoStreams; - } - -+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(57, 33, 100) - m_codecsToClose.push_back(stream->codec); -+#endif - return true; - } - } -@@ -499,7 +510,7 @@ bool MediaEngine::setVideoStream(int streamNum, bool f - - AVStream *stream = m_pFormatCtx->streams[streamNum]; - #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100) -- AVCodec *pCodec = avcodec_find_decoder(stream->codecpar->codec_id); -+ const AVCodec *pCodec = avcodec_find_decoder(stream->codecpar->codec_id); - if (!pCodec) { - WARN_LOG_REPORT(ME, "Could not find decoder for %d", (int)stream->codecpar->codec_id); - return false; Index: patches/patch-Core_HW_SimpleAudioDec_cpp =================================================================== RCS file: patches/patch-Core_HW_SimpleAudioDec_cpp diff -N patches/patch-Core_HW_SimpleAudioDec_cpp --- patches/patch-Core_HW_SimpleAudioDec_cpp 18 Jun 2023 21:14:58 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/HW/SimpleAudioDec.cpp ---- Core/HW/SimpleAudioDec.cpp.orig -+++ Core/HW/SimpleAudioDec.cpp -@@ -28,6 +28,7 @@ - #ifdef USE_FFMPEG - - extern "C" { -+#include "libavcodec/avcodec.h" - #include "libavformat/avformat.h" - #include "libswresample/swresample.h" - #include "libavutil/samplefmt.h" Index: patches/patch-Core_HW_SimpleAudioDec_h =================================================================== RCS file: patches/patch-Core_HW_SimpleAudioDec_h diff -N patches/patch-Core_HW_SimpleAudioDec_h --- patches/patch-Core_HW_SimpleAudioDec_h 18 Jun 2023 21:14:58 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,14 +0,0 @@ -Deal with newer FFmpeg API. - -Index: Core/HW/SimpleAudioDec.h ---- Core/HW/SimpleAudioDec.h.orig -+++ Core/HW/SimpleAudioDec.h -@@ -78,7 +78,7 @@ class SimpleAudio { (private) - int wanted_resample_freq; // wanted resampling rate/frequency - - AVFrame *frame_; -- AVCodec *codec_; -+ const AVCodec *codec_; - AVCodecContext *codecCtx_; - SwrContext *swrCtx_; - Index: patches/patch-UI_NativeApp_cpp =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-UI_NativeApp_cpp,v retrieving revision 1.11 diff -u -p -u -p -r1.11 patch-UI_NativeApp_cpp --- patches/patch-UI_NativeApp_cpp 17 Sep 2023 08:40:29 -0000 1.11 +++ patches/patch-UI_NativeApp_cpp 18 Apr 2024 06:39:32 -0000 @@ -1,7 +1,7 @@ Index: UI/NativeApp.cpp --- UI/NativeApp.cpp.orig +++ UI/NativeApp.cpp -@@ -416,12 +416,7 @@ void NativeInit(int argc, const char *argv[], const ch +@@ -386,12 +386,7 @@ void NativeInit(int argc, const char *argv[], const ch g_VFS.Register("", new DirectoryReader(Path(ASSETS_DIR))); #endif #if !defined(MOBILE_DEVICE) && !defined(_WIN32) && !PPSSPP_PLATFORM(SWITCH) Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/emulators/ppsspp/pkg/PLIST,v retrieving revision 1.9 diff -u -p -u -p -r1.9 PLIST --- pkg/PLIST 16 Sep 2023 21:02:04 -0000 1.9 +++ pkg/PLIST 18 Apr 2024 06:39:32 -0000 @@ -99,6 +99,7 @@ share/ppsspp/assets/mime/ppsspp.xml share/ppsspp/assets/ppge_atlas.meta share/ppsspp/assets/ppge_atlas.zim share/ppsspp/assets/rargray.png +share/ppsspp/assets/redump.csv share/ppsspp/assets/sfx_achievement_unlocked.wav share/ppsspp/assets/sfx_back.wav share/ppsspp/assets/sfx_confirm.wav