Hi, Here's an update to ppsspp-1.14.4. Upstream has started providing real tarballs, so all the GitHub fetching/symlinking goes away.
Test reports appreciated. It seemed a bit slow when I tried it, but I don't run PPSSPP very often, so maybe it's normal. Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/ppsspp/Makefile,v retrieving revision 1.19 diff -u -p -r1.19 Makefile --- Makefile 28 May 2022 06:19:59 -0000 1.19 +++ Makefile 25 Apr 2023 10:48:24 -0000 @@ -6,37 +6,19 @@ NOT_FOR_ARCHS = ${BE_ARCHS} PPSSPP_JIT_ARCHS = arm aarch64 i386 amd64 ONLY_FOR_ARCHS = ${PPSSPP_JIT_ARCHS} +V = 1.14.4 +DISTNAME = ppsspp-$V + COMMENT = Sony PlayStation Portable emulator -GH_ACCOUNT = hrydgard -GH_PROJECT = ppsspp -GH_TAGNAME = v1.11.3 - -GLSLANG = d0850f875ec392a130ccf00018dab458b546f27c -PPSSPP_LANG = 6bd5b4bc983917ea8402f73c726b46e36f3de0b4 -SPIRV_CROSS = a1f7c8dc8ea2f94443951ee27003bffa562c1f13 -ARMIPS = 7885552b208493a6a0f21663770c446c3ba65576 -MINIUPNP = 7e229ddd635933239583ab190d9b614bde018157 - -MASTER_SITES0 = https://github.com/hrydgard/glslang/archive/ -MASTER_SITES1 = https://github.com/hrydgard/ppsspp-lang/archive/ -MASTER_SITES2 = https://github.com/hrydgard/SPIRV-Cross/archive/ -MASTER_SITES3 = https://github.com/Kingcom/armips/archive/ -MASTER_SITES4 = https://github.com/hrydgard/miniupnp/archive/ - -DISTFILES = ${DISTNAME}${EXTRACT_SUFX} \ - ${GLSLANG}.tar.gz:0 \ - ${PPSSPP_LANG}.tar.gz:1 \ - ${SPIRV_CROSS}.tar.gz:2 \ - ${ARMIPS}.tar.gz:3 \ - ${MINIUPNP}.tar.gz:4 +EXTRACT_SUFX = .tar.xz + +MASTER_SITES = https://github.com/hrydgard/ppsspp/releases/download/v$V/ CATEGORIES = emulators HOMEPAGE = https://www.ppsspp.org/ -MAINTAINER = Anthony J. Bentley <anth...@anjbe.name> - # GPLv2+ PERMIT_PACKAGE = Yes @@ -67,18 +49,6 @@ CONFIGURE_ARGS = -DUSE_SYSTEM_FFMPEG=ON CXXFLAGS += -I${X11BASE}/include NO_TEST = Yes - -post-extract: - rmdir ${WRKSRC}/assets/lang \ - ${WRKSRC}/ext/armips \ - ${WRKSRC}/ext/glslang \ - ${WRKSRC}/ext/SPIRV-Cross \ - ${WRKSRC}/ext/miniupnp - ln -s ${WRKDIR}/ppsspp-lang-${PPSSPP_LANG} ${WRKSRC}/assets/lang - ln -s ${WRKDIR}/armips-${ARMIPS} ${WRKSRC}/ext/armips - ln -s ${WRKDIR}/glslang-${GLSLANG} ${WRKSRC}/ext/glslang - ln -s ${WRKDIR}/SPIRV-Cross-${SPIRV_CROSS} ${WRKSRC}/ext/SPIRV-Cross - ln -s ${WRKDIR}/miniupnp-${MINIUPNP} ${WRKSRC}/ext/miniupnp pre-configure: ${SUBST_CMD} ${WRKSRC}/CMakeLists.txt ${WRKSRC}/UI/NativeApp.cpp Index: distinfo =================================================================== RCS file: /cvs/ports/emulators/ppsspp/distinfo,v retrieving revision 1.9 diff -u -p -r1.9 distinfo --- distinfo 19 Sep 2021 00:34:55 -0000 1.9 +++ distinfo 25 Apr 2023 10:48:24 -0000 @@ -1,12 +1,2 @@ -SHA256 (ppsspp/6bd5b4bc983917ea8402f73c726b46e36f3de0b4.tar.gz) = tun+Sn2qLdjU88x0y6/FOC99+QMDrzo8GNJexEktiJk= -SHA256 (ppsspp/7885552b208493a6a0f21663770c446c3ba65576.tar.gz) = +KA5BhNftvKTK4C371mR85zKxGs27DaQd2+zjGl3XD0= -SHA256 (ppsspp/7e229ddd635933239583ab190d9b614bde018157.tar.gz) = aBnwmE+mR/aadIMaIzOFmgcJn2QJjOWMNdhgTRlTLT0= -SHA256 (ppsspp/a1f7c8dc8ea2f94443951ee27003bffa562c1f13.tar.gz) = RWseKnWo6CmFziL0cHVwx6ofxQ1BGcuhpkHosjPs3iY= -SHA256 (ppsspp/d0850f875ec392a130ccf00018dab458b546f27c.tar.gz) = aZ4XfgAi8XwgTjVCu/f8toQ5IwlZaO3B67xRJOhaK98= -SHA256 (ppsspp/ppsspp-1.11.3.tar.gz) = UD8Eb6aOS+JNCIIrCqIoDmU61RPZoSx3pZgJRnuVxRY= -SIZE (ppsspp/6bd5b4bc983917ea8402f73c726b46e36f3de0b4.tar.gz) = 662203 -SIZE (ppsspp/7885552b208493a6a0f21663770c446c3ba65576.tar.gz) = 197263 -SIZE (ppsspp/7e229ddd635933239583ab190d9b614bde018157.tar.gz) = 438926 -SIZE (ppsspp/a1f7c8dc8ea2f94443951ee27003bffa562c1f13.tar.gz) = 814213 -SIZE (ppsspp/d0850f875ec392a130ccf00018dab458b546f27c.tar.gz) = 3138654 -SIZE (ppsspp/ppsspp-1.11.3.tar.gz) = 30067677 +SHA256 (ppsspp/ppsspp-1.14.4.tar.xz) = VO3kGvVpEW2cKE97FX0USdzROURnXmDCh1vzo5lPXdo= +SIZE (ppsspp/ppsspp-1.14.4.tar.xz) = 46405556 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-CMakeLists_txt,v retrieving revision 1.7 diff -u -p -r1.7 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 11 Mar 2022 18:59:40 -0000 1.7 +++ patches/patch-CMakeLists_txt 25 Apr 2023 10:48:24 -0000 @@ -5,7 +5,7 @@ Index: CMakeLists.txt --- CMakeLists.txt.orig +++ CMakeLists.txt -@@ -202,6 +202,8 @@ endif() +@@ -252,6 +252,8 @@ endif() if(NOT LIBRETRO AND NOT IOS) find_package(SDL2) endif() @@ -14,7 +14,7 @@ Index: CMakeLists.txt include(FindThreads) if(APPLE) -@@ -293,13 +295,13 @@ if(NOT MSVC) +@@ -351,13 +353,13 @@ if(NOT MSVC) endif() endif() @@ -30,30 +30,30 @@ Index: CMakeLists.txt - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -D_NDEBUG") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_NDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") - #TODO: Remove this and include the file properly everywhere it makes sense - # First step is too use the macros everywhere -@@ -335,7 +337,6 @@ if(NOT MSVC) - if(NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + + # Enable checking printf-like format strings (also works for logging functions) +@@ -388,7 +390,6 @@ if(NOT MSVC) + if(NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") add_definitions(-Wno-psabi) endif() - add_definitions(-D_XOPEN_SOURCE=700) add_definitions(-D_XOPEN_SOURCE_EXTENDED -D__BSD_VISIBLE=1) add_definitions(-D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64) elseif(ANDROID) -@@ -792,6 +793,7 @@ endif() +@@ -900,6 +901,7 @@ endif() find_package(LIBZIP) if(LIBZIP_FOUND AND USE_SYSTEM_LIBZIP) add_definitions(-DSHARED_LIBZIP) + include_directories(${LIBZIP_INCLUDE_DIRS}) else() add_library(libzip STATIC - ext/libzip/zip.h -@@ -1873,7 +1875,7 @@ if(USE_MINIUPNPC) - - if (NOT WIN32) - add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT) -- add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L) -+ add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L) - endif() - if (MACOSX) - add_definitions (-D_DARWIN_C_SOURCE) + ext/libzip/zip_add.c +@@ -2123,7 +2125,7 @@ if(USE_MINIUPNPC) + + if (NOT WIN32) + add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT) +- add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L) ++ add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L) + endif() + if (MACOSX) + add_definitions (-D_DARWIN_C_SOURCE) Index: patches/patch-Core_HLE_proAdhoc_cpp =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-Core_HLE_proAdhoc_cpp,v retrieving revision 1.2 diff -u -p -r1.2 patch-Core_HLE_proAdhoc_cpp --- patches/patch-Core_HLE_proAdhoc_cpp 11 Mar 2022 18:59:40 -0000 1.2 +++ patches/patch-Core_HLE_proAdhoc_cpp 25 Apr 2023 10:48:24 -0000 @@ -3,23 +3,12 @@ support compilation without TCP_KEEPALIV Index: Core/HLE/proAdhoc.cpp --- Core/HLE/proAdhoc.cpp.orig +++ Core/HLE/proAdhoc.cpp -@@ -2013,6 +2013,7 @@ int setUDPConnReset(int udpsock, bool enabled) { - return -1; - } - -+#if defined(TCP_KEEPALIVE) - #if !defined(TCP_KEEPIDLE) - #define TCP_KEEPIDLE TCP_KEEPALIVE //TCP_KEEPIDLE on Linux is equivalent to TCP_KEEPALIVE on macOS - #endif -@@ -2042,6 +2043,11 @@ int setSockKeepAlive(int sock, bool keepalive, const i - } - return result; - } -+#else /* TCP_KEEPALIVE */ -+int setSockKeepAlive(int sock, bool keepalive, const int keepinvl, const int keepcnt, const int keepidle) { -+ return 0; -+} -+#endif - - /** - * Return the Number of Players with the chosen Nickname in the Local Users current Network +@@ -2087,7 +2087,7 @@ int setSockKeepAlive(int sock, bool keepalive, const i + int optval = keepalive ? 1 : 0; + int optlen = sizeof(optval); + int result = setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&optval, optlen); +-#if !PPSSPP_PLATFORM(SWITCH) ++#if !PPSSPP_PLATFORM(SWITCH) && !PPSSPP_PLATFORM(OPENBSD) + if (result == 0 && keepalive) { + if (getsockopt(sock, SOL_SOCKET, SO_TYPE, (char*)&optval, (socklen_t*)&optlen) == 0 && optval == SOCK_STREAM) { + optlen = sizeof(optval); Index: patches/patch-Core_HLE_sceNetAdhoc_cpp =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-Core_HLE_sceNetAdhoc_cpp,v retrieving revision 1.2 diff -u -p -r1.2 patch-Core_HLE_sceNetAdhoc_cpp --- patches/patch-Core_HLE_sceNetAdhoc_cpp 11 Mar 2022 18:59:40 -0000 1.2 +++ patches/patch-Core_HLE_sceNetAdhoc_cpp 25 Apr 2023 10:48:24 -0000 @@ -3,7 +3,7 @@ ensure that u_int32_t and friends are de Index: Core/HLE/sceNetAdhoc.cpp --- Core/HLE/sceNetAdhoc.cpp.orig +++ Core/HLE/sceNetAdhoc.cpp -@@ -20,6 +20,7 @@ +@@ -21,6 +21,7 @@ #endif #if !defined(_WIN32) Index: patches/patch-Core_HW_MediaEngine_cpp =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-Core_HW_MediaEngine_cpp,v retrieving revision 1.3 diff -u -p -r1.3 patch-Core_HW_MediaEngine_cpp --- patches/patch-Core_HW_MediaEngine_cpp 11 Mar 2022 18:59:40 -0000 1.3 +++ patches/patch-Core_HW_MediaEngine_cpp 25 Apr 2023 10:48:24 -0000 @@ -1,159 +0,0 @@ -Fix build with ffmpeg-4.4 from upstream - -Index: Core/HW/MediaEngine.cpp ---- Core/HW/MediaEngine.cpp.orig -+++ Core/HW/MediaEngine.cpp -@@ -314,8 +314,10 @@ bool MediaEngine::openContext(bool keepReadPos) { - av_dict_free(&open_opt); - - if (!SetupStreams()) { -- // Fallback to old behavior. -- if (avformat_find_stream_info(m_pFormatCtx, NULL) < 0) { -+ // Fallback to old behavior. Reads too much and corrupts when game doesn't read fast enough. -+ // SetupStreams sometimes work for newer FFmpeg 3.1+ now, but sometimes framerate is missing. -+ WARN_LOG_REPORT_ONCE(setupStreams, ME, "Failed to read valid video stream data from header"); -+ if (avformat_find_stream_info(m_pFormatCtx, nullptr) < 0) { - closeContext(); - return false; - } -@@ -328,8 +330,14 @@ bool MediaEngine::openContext(bool keepReadPos) { - - if (m_videoStream == -1) { - // Find the first video stream -- for(int i = 0; i < (int)m_pFormatCtx->nb_streams; i++) { -- if(m_pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { -+ for (int i = 0; i < (int)m_pFormatCtx->nb_streams; i++) { -+ const AVStream *s = m_pFormatCtx->streams[i]; -+#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100) -+ AVMediaType type = s->codecpar->codec_type; -+#else -+ AVMediaType type = s->codec->codec_type; -+#endif -+ if (type == AVMEDIA_TYPE_VIDEO) { - m_videoStream = i; - break; - } -@@ -361,8 +369,13 @@ void MediaEngine::closeContext() - av_free(m_pIOContext->buffer); - if (m_pIOContext) - av_free(m_pIOContext); -- for (auto it = m_pCodecCtxs.begin(), end = m_pCodecCtxs.end(); it != end; ++it) -- avcodec_close(it->second); -+ for (auto it : m_pCodecCtxs) { -+#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100) -+ avcodec_free_context(&it.second); -+#else -+ avcodec_close(it.second); -+#endif -+ } - m_pCodecCtxs.clear(); - if (m_pFormatCtx) - avformat_close_input(&m_pFormatCtx); -@@ -411,7 +424,12 @@ bool MediaEngine::addVideoStream(int streamNum, int st - streamId = PSMF_VIDEO_STREAM_ID | streamNum; - - stream->id = 0x00000100 | streamId; -+#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100) -+ stream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; -+ stream->codecpar->codec_id = AV_CODEC_ID_H264; -+#else - stream->request_probe = 0; -+#endif - stream->need_parsing = AVSTREAM_PARSE_FULL; - // We could set the width here, but we don't need to. - if (streamNum >= m_expectedVideoStreams) { -@@ -496,22 +514,31 @@ bool MediaEngine::setVideoStream(int streamNum, bool f - if ((u32)streamNum >= m_pFormatCtx->nb_streams) { - return false; - } -- AVCodecContext *m_pCodecCtx = m_pFormatCtx->streams[streamNum]->codec; --#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57,33,100) -- AVCodecParameters *m_pCodecPar = m_pFormatCtx->streams[streamNum]->codecpar; - -- // Update from deprecated public codec context -- if (avcodec_parameters_from_context(m_pCodecPar, m_pCodecCtx) < 0) { -+ 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); -+ if (!pCodec) { -+ WARN_LOG_REPORT(ME, "Could not find decoder for %d", (int)stream->codecpar->codec_id); - return false; - } --#endif -- -+ AVCodecContext *m_pCodecCtx = avcodec_alloc_context3(pCodec); -+ int paramResult = avcodec_parameters_to_context(m_pCodecCtx, stream->codecpar); -+ if (paramResult < 0) { -+ WARN_LOG_REPORT(ME, "Failed to prepare context parameters: %08x", paramResult); -+ return false; -+ } -+#else -+ AVCodecContext *m_pCodecCtx = stream->codec; - // Find the decoder for the video stream - AVCodec *pCodec = avcodec_find_decoder(m_pCodecCtx->codec_id); - if (pCodec == nullptr) { - return false; - } -+#endif - -+ m_pCodecCtx->flags |= AV_CODEC_FLAG_OUTPUT_CORRUPT | AV_CODEC_FLAG_LOW_DELAY; -+ - AVDictionary *opt = nullptr; - // Allow ffmpeg to use any number of threads it wants. Without this, it doesn't use threads. - av_dict_set(&opt, "threads", "0", 0); -@@ -651,7 +678,22 @@ bool MediaEngine::stepVideo(int videoPixelMode, bool s - av_free_packet(&packet); - #endif - -+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101) -+ if (packet.size != 0) -+ avcodec_send_packet(m_pCodecCtx, &packet); -+ int result = avcodec_receive_frame(m_pCodecCtx, m_pFrame); -+ if (result == 0) { -+ result = m_pFrame->pkt_size; -+ frameFinished = 1; -+ } else if (result == AVERROR(EAGAIN)) { -+ result = 0; -+ frameFinished = 0; -+ } else { -+ frameFinished = 0; -+ } -+#else - int result = avcodec_decode_video2(m_pCodecCtx, m_pFrame, &frameFinished, &packet); -+#endif - if (frameFinished) { - if (!m_pFrameRGB) { - setVideoDim(); -@@ -666,10 +708,28 @@ bool MediaEngine::stepVideo(int videoPixelMode, bool s - m_pCodecCtx->height, m_pFrameRGB->data, m_pFrameRGB->linesize); - } - -- if (av_frame_get_best_effort_timestamp(m_pFrame) != AV_NOPTS_VALUE) -- m_videopts = av_frame_get_best_effort_timestamp(m_pFrame) + av_frame_get_pkt_duration(m_pFrame) - m_firstTimeStamp; -- else -- m_videopts += av_frame_get_pkt_duration(m_pFrame); -+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(55, 58, 100) -+ int64_t bestPts = m_pFrame->best_effort_timestamp; -+ int64_t ptsDuration = m_pFrame->pkt_duration; -+#else -+ int64_t bestPts = av_frame_get_best_effort_timestamp(m_pFrame); -+ int64_t ptsDuration = av_frame_get_pkt_duration(m_pFrame); -+#endif -+ if (ptsDuration == 0) { -+ if (m_lastPts == bestPts - m_firstTimeStamp || bestPts == AV_NOPTS_VALUE) { -+ // TODO: Assuming 29.97 if missing. -+ m_videopts += 3003; -+ } else { -+ m_videopts = bestPts - m_firstTimeStamp; -+ m_lastPts = m_videopts; -+ } -+ } else if (bestPts != AV_NOPTS_VALUE) { -+ m_videopts = bestPts + ptsDuration - m_firstTimeStamp; -+ m_lastPts = m_videopts; -+ } else { -+ m_videopts += ptsDuration; -+ m_lastPts = m_videopts; -+ } - bGetFrame = true; - } - if (result <= 0 && dataEnd) { Index: patches/patch-Core_HW_MediaEngine_h =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-Core_HW_MediaEngine_h,v retrieving revision 1.3 diff -u -p -r1.3 patch-Core_HW_MediaEngine_h --- patches/patch-Core_HW_MediaEngine_h 11 Mar 2022 18:59:40 -0000 1.3 +++ patches/patch-Core_HW_MediaEngine_h 25 Apr 2023 10:48:24 -0000 @@ -1,13 +0,0 @@ -Index: Core/HW/MediaEngine.h ---- Core/HW/MediaEngine.h.orig -+++ Core/HW/MediaEngine.h -@@ -124,7 +124,8 @@ class MediaEngine (public) - int m_desHeight; - int m_decodingsize; - int m_bufSize; -- s64 m_videopts; -+ s64 m_videopts = 0; -+ s64 m_lastPts = -1; - BufferQueue *m_pdata; - - MpegDemux *m_demux; Index: patches/patch-UI_NativeApp_cpp =================================================================== RCS file: /cvs/ports/emulators/ppsspp/patches/patch-UI_NativeApp_cpp,v retrieving revision 1.7 diff -u -p -r1.7 patch-UI_NativeApp_cpp --- patches/patch-UI_NativeApp_cpp 11 Mar 2022 18:59:40 -0000 1.7 +++ patches/patch-UI_NativeApp_cpp 25 Apr 2023 10:48:24 -0000 @@ -1,15 +1,17 @@ Index: UI/NativeApp.cpp --- UI/NativeApp.cpp.orig +++ UI/NativeApp.cpp -@@ -470,10 +470,7 @@ void NativeInit(int argc, const char *argv[], const ch +@@ -483,12 +483,7 @@ void NativeInit(int argc, const char *argv[], const ch + VFSRegister("", new DirectoryAssetReader(Path(ASSETS_DIR))); + #endif #if !defined(MOBILE_DEVICE) && !defined(_WIN32) && !PPSSPP_PLATFORM(SWITCH) - VFSRegister("", new DirectoryAssetReader((File::GetExeDirectory() + "assets/").c_str())); - VFSRegister("", new DirectoryAssetReader((File::GetExeDirectory()).c_str())); -- VFSRegister("", new DirectoryAssetReader("/usr/local/share/ppsspp/assets/")); -- VFSRegister("", new DirectoryAssetReader("/usr/local/share/games/ppsspp/assets/")); -- VFSRegister("", new DirectoryAssetReader("/usr/share/ppsspp/assets/")); -- VFSRegister("", new DirectoryAssetReader("/usr/share/games/ppsspp/assets/")); -+ VFSRegister("", new DirectoryAssetReader("${PREFIX}/share/ppsspp/assets/")); +- VFSRegister("", new DirectoryAssetReader(File::GetExeDirectory() / "assets")); +- VFSRegister("", new DirectoryAssetReader(File::GetExeDirectory())); +- VFSRegister("", new DirectoryAssetReader(Path("/usr/local/share/ppsspp/assets"))); +- VFSRegister("", new DirectoryAssetReader(Path("/usr/local/share/games/ppsspp/assets"))); +- VFSRegister("", new DirectoryAssetReader(Path("/usr/share/ppsspp/assets"))); +- VFSRegister("", new DirectoryAssetReader(Path("/usr/share/games/ppsspp/assets"))); ++ VFSRegister("", new DirectoryAssetReader(Path("${PREFIX}/share/ppsspp/assets"))); #endif + #if PPSSPP_PLATFORM(SWITCH) - std::string assetPath = user_data_path + "assets/"; Index: patches/patch-ppsspp_config_h =================================================================== RCS file: patches/patch-ppsspp_config_h diff -N patches/patch-ppsspp_config_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-ppsspp_config_h 25 Apr 2023 10:48:24 -0000 @@ -0,0 +1,12 @@ +Index: ppsspp_config.h +--- ppsspp_config.h.orig ++++ ppsspp_config.h +@@ -97,6 +97,8 @@ + #else + #error "Unknown Apple platform" + #endif ++#elif defined(__OpenBSD__) ++ #define PPSSPP_PLATFORM_OPENBSD 1 + #elif defined(__SWITCH__) + #define PPSSPP_PLATFORM_SWITCH 1 + #elif defined(__ANDROID__) Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/emulators/ppsspp/pkg/PLIST,v retrieving revision 1.6 diff -u -p -r1.6 PLIST --- pkg/PLIST 11 Mar 2022 18:59:40 -0000 1.6 +++ pkg/PLIST 25 Apr 2023 10:48:24 -0000 @@ -3,7 +3,27 @@ share/ppsspp/ share/ppsspp/assets/ share/ppsspp/assets/7z.png share/ppsspp/assets/Roboto-Condensed.ttf +share/ppsspp/assets/asciifont_atlas.meta +share/ppsspp/assets/asciifont_atlas.zim share/ppsspp/assets/compat.ini +share/ppsspp/assets/compatvr.ini +share/ppsspp/assets/debugger/ +share/ppsspp/assets/debugger/.git +share/ppsspp/assets/debugger/.nojekyll +share/ppsspp/assets/debugger/asset-manifest.json +share/ppsspp/assets/debugger/favicon.ico +share/ppsspp/assets/debugger/index.html +share/ppsspp/assets/debugger/manifest.json +share/ppsspp/assets/debugger/static/ +share/ppsspp/assets/debugger/static/css/ +share/ppsspp/assets/debugger/static/css/main.3eab8a01.css +share/ppsspp/assets/debugger/static/css/main.3eab8a01.css.map +share/ppsspp/assets/debugger/static/js/ +share/ppsspp/assets/debugger/static/js/main.fe87e942.js +share/ppsspp/assets/debugger/static/js/main.fe87e942.js.LICENSE.txt +share/ppsspp/assets/debugger/static/js/main.fe87e942.js.map +share/ppsspp/assets/debugger/static/media/ +share/ppsspp/assets/debugger/static/media/logo.94f885ce93dfb6d29a122402a15cccca.svg share/ppsspp/assets/flash0/ share/ppsspp/assets/flash0/font/ share/ppsspp/assets/flash0/font/jpn0.pgf @@ -24,6 +44,8 @@ share/ppsspp/assets/flash0/font/ltn6.pgf share/ppsspp/assets/flash0/font/ltn7.pgf share/ppsspp/assets/flash0/font/ltn8.pgf share/ppsspp/assets/flash0/font/ltn9.pgf +share/ppsspp/assets/font_atlas.meta +share/ppsspp/assets/font_atlas.zim share/ppsspp/assets/gamecontrollerdb.txt share/ppsspp/assets/knownfuncs.ini share/ppsspp/assets/lang/ @@ -72,6 +94,8 @@ share/ppsspp/assets/lang/vi_VN.ini share/ppsspp/assets/lang/zh_CN.ini share/ppsspp/assets/lang/zh_TW.ini share/ppsspp/assets/langregion.ini +share/ppsspp/assets/mime/ +share/ppsspp/assets/mime/ppsspp.xml share/ppsspp/assets/ppge_atlas.meta share/ppsspp/assets/ppge_atlas.zim share/ppsspp/assets/rargray.png @@ -97,23 +121,30 @@ share/ppsspp/assets/shaders/crt.fsh share/ppsspp/assets/shaders/defaultshaders.ini share/ppsspp/assets/shaders/fxaa.fsh share/ppsspp/assets/shaders/fxaa.vsh -share/ppsspp/assets/shaders/grayscale.fsh -share/ppsspp/assets/shaders/inversecolors.fsh share/ppsspp/assets/shaders/natural.fsh share/ppsspp/assets/shaders/natural.vsh share/ppsspp/assets/shaders/naturalA.fsh share/ppsspp/assets/shaders/naturalA.vsh +share/ppsspp/assets/shaders/persistence.fsh share/ppsspp/assets/shaders/psp_color.fsh share/ppsspp/assets/shaders/scanlines.fsh share/ppsspp/assets/shaders/sharpen.fsh +share/ppsspp/assets/shaders/stereo_red_blue.fsh +share/ppsspp/assets/shaders/stereo_sbs.fsh +share/ppsspp/assets/shaders/tex_2xbrz.csh share/ppsspp/assets/shaders/tex_4xbrz.csh share/ppsspp/assets/shaders/tex_mmpx.csh +share/ppsspp/assets/shaders/upscale_catmull_rom.fsh +share/ppsspp/assets/shaders/upscale_catmull_rom.vsh +share/ppsspp/assets/shaders/upscale_mitchell_netravali.fsh +share/ppsspp/assets/shaders/upscale_mitchell_netravali.vsh share/ppsspp/assets/shaders/upscale_spline36.fsh share/ppsspp/assets/shaders/upscale_spline36.vsh share/ppsspp/assets/shaders/videoAA.fsh share/ppsspp/assets/shaders/vignette.fsh +share/ppsspp/assets/themes/ +share/ppsspp/assets/themes/defaultthemes.ini share/ppsspp/assets/ui_atlas.meta share/ppsspp/assets/ui_atlas.zim -share/ppsspp/assets/ui_atlas_lowmem.zim share/ppsspp/assets/unknown.png share/ppsspp/assets/zip.png