Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/3.0.6a #2410

Merged
merged 49 commits into from
Mar 30, 2025
Merged

Release/3.0.6a #2410

merged 49 commits into from
Mar 30, 2025

Conversation

JoeMatt
Copy link
Member

@JoeMatt JoeMatt commented Mar 25, 2025

User description

What does this PR do

Where should the reviewer start

How should this be manually tested

Any background context you want to provide

What are the relevant tickets

Screenshots (important for UI changes)

Questions


PR Type

dependencies


Description

  • Added multiple FFmpeg library header files (avformat.h, camellia.h, base64.h) for media handling, encryption, and Base64 utilities, with extensive documentation and API definitions.

  • Introduced Crypto++ zlib.h header for ZLIB compression and decompression, including error handling and Adler32 checksum integration.

  • Removed outdated or unused files from the project, such as PVCitraCore.h, PVCitra.h, and related scripts.


Changes walkthrough 📝

Relevant files
Dependencies
6 files
avformat.h
Added FFmpeg's libavformat public API header file.             

Cores/Citra/lib/libavformat.xcframework/ios-i386_x86_64-simulator/libavformat.framework/Headers/avformat.h

  • Added the entire avformat.h header file, which includes definitions,
    structures, and functions for the FFmpeg library's libavformat module.
  • Introduced extensive documentation for libavformat's API, including
    demuxing, muxing, I/O operations, and metadata handling.
  • Defined numerous constants, macros, and data structures for handling
    media formats and streams.
  • Included function prototypes for core operations like opening
    input/output, reading/writing frames, and managing streams.
  • +2907/-0
    camellia.h
    Introduced CAMELLIA encryption algorithm header in libavutil.

    Cores/Citra/lib/libavutil.xcframework/ios-i386_x86_64-simulator/libavutil.framework/Headers/camellia.h

  • Added the camellia.h header file for the CAMELLIA encryption algorithm
    implementation in FFmpeg's libavutil module.
  • Defined the AVCAMELLIA structure and related functions for allocation,
    initialization, and encryption/decryption.
  • Included detailed documentation for the CAMELLIA API, covering usage
    and parameters.
  • +70/-0   
    avformat.h
    Added FFmpeg's `avformat.h` header for media handling.     

    Cores/Citra/lib/libavformat.xcframework/ios-arm64_armv7/libavformat.framework/Headers/avformat.h

  • Added the entire avformat.h header file, which is part of the FFmpeg
    library.
  • Includes detailed documentation and definitions for libavformat's
    public API.
  • Provides structures, constants, and functions for media file demuxing,
    muxing, and I/O operations.
  • Introduces metadata handling, stream management, and codec-related
    utilities.
  • +2907/-0
    base64.h
    Added FFmpeg's `base64.h` header for Base64 utilities.     

    Cores/Citra/lib/libavutil.xcframework/ios-i386_x86_64-simulator/libavutil.framework/Headers/base64.h

  • Added the base64.h header file, which is part of the FFmpeg library.
  • Provides functions for Base64 encoding and decoding.
  • Includes macros to calculate buffer sizes for Base64 operations.
  • Contains detailed documentation for usage of Base64 utilities.
  • +72/-0   
    avformat.h
    Added FFmpeg's libavformat public API header file.             

    Cores/Citra/lib/libavformat.framework/Headers/avformat.h

  • Added the entire content of the avformat.h header file, which includes
    definitions, structures, and functions for FFmpeg's libavformat.
  • Introduced documentation comments for various components like metadata
    API, encoding, decoding, and I/O operations.
  • Defined numerous macros, constants, and structures related to media
    file handling.
  • Included function prototypes for operations like packet reading,
    stream management, and format probing.
  • +2907/-0
    zlib.h
    Added Crypto++ ZLIB compression and decompression header.

    Dependencies/FFMpeg/xcframeworks/libcryptopp.xcframework/ios-arm64/Headers/cryptopp/zlib.h

  • Added the zlib.h header file for ZLIB compression and decompression in
    Crypto++.
  • Defined classes ZlibCompressor and ZlibDecompressor with methods for
    handling ZLIB streams.
  • Included error handling classes for specific ZLIB decompression
    issues.
  • Introduced integration with Adler32 checksum for data integrity
    verification.
  • +65/-0   
    Additional files
    101 files
    .gitmodules +3/-0     
    CONTRIBUTORS.md +6/-6     
    BuildFlags.xcconfig +69/-11 
    LibAzahar.xcconfig +12/-0   
    project.pbxproj +45741/-0
    contents.xcworkspacedata [link]   
    Package.resolved +14/-0   
    PVAzahar.xcscheme +12/-12 
    azahar.xcscheme +67/-0   
    Core.plist +7/-5     
    Info.plist [link]   
    PVAzahar.h +20/-0   
    CorePlist-Generated.swift +41/-0   
    CorePlist.swift +72/-0   
    PVAzaharCore.swift +92/-0   
    PVAzaharCoreBridge+Audio.h +12/-0   
    PVAzaharCoreBridge+Audio.mm +20/-0   
    PVAzaharCoreBridge+Cheats.mm +35/-0   
    PVAzaharCoreBridge+Controls.h +18/-0   
    PVAzaharCoreBridge+Controls.mm +347/-0 
    PVAzaharCoreBridge+Saves.h +12/-0   
    PVAzaharCoreBridge+Saves.mm +95/-0   
    PVAzaharCoreBridge+Video.h +14/-0   
    PVAzaharCoreBridge+Video.mm +63/-0   
    PVAzaharCoreBridge.h +100/-0 
    PVAzaharCoreBridge.mm +395/-0 
    PVAzaharCoreOptions.swift +435/-0 
    PVAzaharOGLViewController.swift +75/-0   
    PVAzaharVulkanViewController.swift +1029/-0
    PVAzahar.mm +6/-0     
    CameraFactory.h +37/-0   
    CameraFactory.mm +34/-0   
    CameraInterface.h +59/-0   
    CameraInterface.mm +876/-0 
    CitraWrapper.h +114/-0 
    CitraWrapper.mm +636/-0 
    InputBridge.h +100/-0 
    InputBridge.mm +69/-0   
    InputFactory.h +40/-0   
    InputFactory.mm +228/-0 
    MultiplayerManager.h +68/-0   
    MultiplayerManager.mm +214/-0 
    applet_manager.cpp +1608/-0
    coreaudio_sink.cpp +102/-0 
    coreaudio_sink.h +33/-0   
    interpolate.cpp +239/-0 
    interpolate.h +62/-0   
    null_sink.h +25/-0   
    openal_input.cpp +215/-0 
    openal_input.h +34/-0   
    openal_sink.cpp +181/-0 
    openal_sink.h +32/-0   
    sdl2_sink.cpp +108/-0 
    sdl2_sink.h +29/-0   
    bench1.cpp +522/-0 
    bench2.cpp +269/-0 
    bench3.cpp +482/-0 
    ccm.cpp +141/-0 
    settings.cpp +261/-0 
    settings.h +633/-0 
    arm_dynarmic.cpp +317/-0 
    arm_dynarmic.h +80/-0   
    arm_dynarmic_cp15.cpp +86/-0   
    arm_dynarmic_cp15.h +42/-0   
    emu_window.cpp +253/-0 
    emu_window.h +332/-0 
    savestate.cpp +324/-0 
    savestate.h +38/-0   
    datatest.cpp +1360/-0
    emu_window.cpp +84/-0   
    emu_window.h +53/-0   
    emu_window_vk.h +27/-0   
    emu_window_vk.mm +69/-0   
    extra_hid.cpp +304/-0 
    hid.cpp +764/-0 
    mii_selector.cpp +143/-0 
    regtest1.cpp +162/-0 
    regtest2.cpp +107/-0 
    regtest3.cpp +158/-0 
    regtest4.cpp +60/-0   
    renderer_vulkan.cpp +1204/-0
    rsa.cpp +337/-0 
    shader_interpreter.cpp +1988/-0
    validat8.cpp +626/-0 
    validat9.cpp +740/-0 
    rasterizer_cache.h +1446/-0
    vk_pipeline_cache.cpp +548/-0 
    vk_platform.cpp +298/-0 
    vk_rasterizer.cpp +1277/-0
    vk_render_manager.cpp +228/-0 
    vk_render_manager.h +74/-0   
    vk_swapchain.cpp +291/-0 
    vk_texture_runtime.cpp +1602/-0
    PVCitra-Prefix.pch +0/-9     
    project.pbxproj +0/-6617
    PVCitra.h +0/-18   
    PVCitraCore.h +0/-43   
    PVCitraCore.mm +0/-257 
    azahar +1/-0     
    Info.plist +81/-0   
    Additional files not shown

    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • JoeMatt and others added 30 commits March 18, 2025 19:18
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    * fixed ios 16 md5 hash failing; fixed bios watcher crashing
    
    * updated to use url
    
    * removed post
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    
    update emuThreeDS for prior changes
    
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    JoeMatt added 19 commits March 25, 2025 15:09
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    Signed-off-by: Joseph Mattiello <[email protected]>
    @JoeMatt JoeMatt requested a review from jasarien as a code owner March 25, 2025 19:11
    @JoeMatt JoeMatt self-assigned this Mar 25, 2025
    Copy link

    qodo-merge-pro bot commented Mar 25, 2025

    CI Feedback 🧐

    (Feedback updated until commit 51d4278)

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: Build and upload Provenance (Provenance-iOS, iphoneos, Provenance (AppStore) (Release), Provenanc...

    Failed stage: Checkout code [❌]

    Failure summary:

    The action failed because Git couldn't find a URL for the submodule 'Cores/Citra/cmake/zstd' in the
    .gitmodules file. The error occurred during the submodule initialization process with the message:
    "fatal: No url found for submodule path 'Cores/Citra/cmake/zstd' in .gitmodules" (line 436). This
    indicates that the submodule is referenced somewhere in the repository but its URL is not properly
    defined in the .gitmodules configuration file.

    Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    421:  ##[endgroup]
    422:  ##[group]Setting up auth for fetching submodules
    423:  [command]/opt/homebrew/bin/git config --global http.https://github.com/.extraheader AUTHORIZATION: basic ***
    424:  [command]/opt/homebrew/bin/git config --global --unset-all url.https://github.com/.insteadOf
    425:  [command]/opt/homebrew/bin/git config --global --add url.https://github.com/.insteadOf [email protected]:
    426:  [command]/opt/homebrew/bin/git config --global --add url.https://github.com/.insteadOf [email protected]:
    427:  ##[endgroup]
    428:  ##[group]Fetching submodules
    429:  [command]/opt/homebrew/bin/git submodule sync --recursive
    430:  [command]/opt/homebrew/bin/git -c protocol.version=2 submodule update --init --force --recursive
    431:  Submodule 'Cores/4DO' (https://github.com/Provenance-Emu/4DO-Core.git) registered for path 'Cores/4DO'
    432:  Submodule 'Cores/BeetlePSX/beetle-psx' (https://github.com/libretro/beetle-psx-libretro.git) registered for path 'Cores/BeetlePSX/beetle-psx'
    433:  Submodule 'Cores/BeetlePSX/beetle-psx-libretro' (https://github.com/Provenance-Emu/beetle-psx-libretro.git) registered for path 'Cores/BeetlePSX/beetle-psx-libretro'
    434:  Submodule 'Cores/Bliss' (https://github.com/Provenance-Emu/Bliss-Core.git) registered for path 'Cores/Bliss'
    435:  Submodule 'Cores/Citra/emuThreeDS' (https://github.com/Provenance-Emu/emuThreeDS.git) registered for path 'Cores/Citra/azahar'
    436:  ##[error]fatal: No url found for submodule path 'Cores/Citra/cmake/zstd' in .gitmodules
    437:  ##[error]The process '/opt/homebrew/bin/git' failed with exit code 128
    438:  ##[group]Run if [ "failure" = "success" ]; then
    439:  �[36;1mif [ "failure" = "success" ]; then�[0m
    440:  �[36;1m  echo "✅ Build succeeded for Provenance-iOS"�[0m
    441:  �[36;1melse�[0m
    442:  �[36;1m  echo "❌ Build failed for Provenance-iOS"�[0m
    443:  �[36;1m  exit 1�[0m
    444:  �[36;1mfi�[0m
    445:  shell: /bin/bash -e {0}
    446:  env:
    447:  AWS_SECRET_ACCESS_KEY: ***
    448:  AWS_ACCESS_KEY_ID: ***
    449:  SWIFT_PACKAGE_ALLOW_WRITING_TO_DIRECTORY: /Users/runner/work/Provenance/Provenance
    450:  DEVELOPER_DIR: /Applications/Xcode_16.2.app/Contents/Developer
    451:  XCODE_VERSION: 16.2
    452:  ##[endgroup]
    453:  ❌ Build failed for Provenance-iOS
    454:  ##[error]Process completed with exit code 1.
    455:  ##[group]Run if [ "failure" = "success" ]; then
    456:  �[36;1mif [ "failure" = "success" ]; then�[0m
    457:  �[36;1m  STATUS_COLOR="65280"�[0m
    458:  �[36;1m  STATUS="✅ Success"�[0m
    459:  �[36;1melse�[0m
    460:  �[36;1m  STATUS_COLOR="16711680"�[0m
    461:  �[36;1m  STATUS="❌ Failed"�[0m
    462:  �[36;1mfi�[0m
    

    Copy link

    Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here.

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    License Compliance

    The OpenSSL header file is added with Apache License 2.0. Ensure this license is compatible with the project's licensing and that proper attribution is maintained in the distribution.

    /*
     * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
     * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
     * Copyright 2005 Nokia. All rights reserved.
     *
     * Licensed under the Apache License 2.0 (the "License").  You may not use
     * this file except in compliance with the License.  You can obtain a copy
     * in the file LICENSE in the source distribution or at
     * https://www.openssl.org/source/license.html
     */
    LGPL Compliance

    The FFmpeg header file is added with LGPL license. Verify that the project properly complies with LGPL requirements, especially if statically linking this library.

    /*
     * This file is part of FFmpeg.
     *
     * FFmpeg is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2.1 of the License, or (at your option) any later version.
     *
     * FFmpeg is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with FFmpeg; if not, write to the Free Software
     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     */

    Copy link

    Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here.

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Add extern "C" for linkage

    The extern declarations for Vulkan function pointers should be wrapped in an
    extern "C" block when compiling as C++ to ensure proper linkage. Without this,
    you might encounter linking errors when these functions are defined in C code.

    Cores/emuThree/lib/vma/include/vk_mem_alloc.h [149-168]

     #if defined(__ANDROID__) && defined(VK_NO_PROTOTYPES) && VMA_STATIC_VULKAN_FUNCTIONS
    +    #ifdef __cplusplus
    +    extern "C" {
    +    #endif
         extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
         extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
         extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
         extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
         extern PFN_vkAllocateMemory vkAllocateMemory;
         extern PFN_vkFreeMemory vkFreeMemory;
         extern PFN_vkMapMemory vkMapMemory;
         extern PFN_vkUnmapMemory vkUnmapMemory;
         extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
         extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
         extern PFN_vkBindBufferMemory vkBindBufferMemory;
         extern PFN_vkBindImageMemory vkBindImageMemory;
         extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
         extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
         extern PFN_vkCreateBuffer vkCreateBuffer;
         extern PFN_vkDestroyBuffer vkDestroyBuffer;
         extern PFN_vkCreateImage vkCreateImage;
         extern PFN_vkDestroyImage vkDestroyImage;
         extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
    +    #ifdef __cplusplus
    +    }
    +    #endif
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies a potential linkage issue when compiling C++ code that uses these Vulkan function pointers defined in C code. Adding the extern "C" block ensures proper name mangling and prevents linking errors, which is important for cross-language compatibility, especially on Android platforms.

    Medium
    Fix multiplication type casting

    The current multiplication macro doesn't properly cast both operands to word64,
    which could lead to overflow issues in certain cases. Cast both operands to
    word64 to ensure proper 64-bit multiplication.

    Dependencies/FFMpeg/xcframeworks/libcryptopp.xcframework/ios-arm64/Headers/cryptopp/donna_32.h [28]

    -#define mul32x32_64(a,b) (((word64)(a))*(b))
    +#define mul32x32_64(a,b) (((word64)(a))*((word64)(b)))
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies a potential overflow issue in the multiplication macro. By casting both operands to word64 instead of just the first one, it ensures proper 64-bit multiplication and prevents potential overflow when multiplying large 32-bit values.

    Medium
    General
    Fix future copyright date

    The copyright year in the header is set to 2025, which is a future date. This
    could cause confusion or legal issues. Update the copyright year to the current
    year or the appropriate range (e.g., 2017-2023).

    Cores/Citra/lib/vma/include/vk_mem_alloc.h [2]

    +#if defined(__ANDROID__) && defined(VK_NO_PROTOTYPES) && VMA_STATIC_VULKAN_FUNCTIONS
    +    extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
    +    extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
    +    extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
    +    extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
    +    extern PFN_vkAllocateMemory vkAllocateMemory;
    +    extern PFN_vkFreeMemory vkFreeMemory;
    +    extern PFN_vkMapMemory vkMapMemory;
    +    extern PFN_vkUnmapMemory vkUnmapMemory;
    +    extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
    +    extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
    +    extern PFN_vkBindBufferMemory vkBindBufferMemory;
    +    extern PFN_vkBindImageMemory vkBindImageMemory;
    +    extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
    +    extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
    +    extern PFN_vkCreateBuffer vkCreateBuffer;
    +    extern PFN_vkDestroyBuffer vkDestroyBuffer;
    +    extern PFN_vkCreateImage vkCreateImage;
    +    extern PFN_vkDestroyImage vkDestroyImage;
    +    extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
     
    -

    [To ensure code accuracy, apply this suggestion manually]

    Suggestion importance[1-10]: 5

    __

    Why: The suggestion correctly identifies a future copyright year (2025) in the header, which could cause legal issues. However, the improved code doesn't actually show the fix, and the existing_code snippet doesn't contain the copyright line. The issue is in line 2 of the file, not in the function declarations shown in the existing_code.

    Low
    • More

    @JoeMatt JoeMatt merged commit 6a2482c into master Mar 30, 2025
    2 of 9 checks passed
    @JoeMatt JoeMatt deleted the release/3.0.6a branch March 30, 2025 21:36
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants