diff --git a/.github/workflows/build-all.yml b/.github/workflows/build-all.yml index 56c563c6e8..421da2d842 100644 --- a/.github/workflows/build-all.yml +++ b/.github/workflows/build-all.yml @@ -76,6 +76,26 @@ jobs: cmakeflags: "-DHOST_PAGE_SIZE=${{ matrix.pageSize }} -DHOST_CACHE_LINE_SIZE=${{ matrix.cacheLineSize }}" buildAppImage: true + # ---- libretro core (linux arm64) --------------------------------------- + pc-linux-arm64-libretro: + name: PC · Linux arm64 (libretro core) + uses: ./.github/workflows/linux_build_libretro.yml + with: + jobName: "libretro Core Build (arm64)" + artifactPrefixName: "armsx2-linux-arm64-libretro" + fetchTags: true + secrets: inherit + + # ---- SDL/kmsdrm handheld frontend (linux arm64) ------------------------ + pc-linux-arm64-sdl: + name: PC · Linux arm64 (SDL kmsdrm) + uses: ./.github/workflows/linux_build_sdl.yml + with: + jobName: "SDL Handheld Build (arm64)" + artifactPrefixName: "armsx2-linux-arm64-sdl" + fetchTags: true + secrets: inherit + # ---- PC arm64 Qt GUI (windows) ----------------------------------------- pc-windows-arm64: name: PC · Windows arm64 (Qt) diff --git a/.github/workflows/linux_build_libretro.yml b/.github/workflows/linux_build_libretro.yml index a14784b4ce..472ffac06e 100644 --- a/.github/workflows/linux_build_libretro.yml +++ b/.github/workflows/linux_build_libretro.yml @@ -1,6 +1,6 @@ name: Linux libretro Core Build Steps -# yaps2 fork: builds the libretro core (yaps2_libretro.so) for RetroArch and +# ARMSX2: builds the libretro core (armsx2_libretro.so) for RetroArch and # other libretro frontends. The core is driven by the frontend's Vulkan # context sharing (see pcsx2/GS/Renderers/Vulkan/VKLibretro.cpp), so it links # no Qt and needs no X11/Wayland/SDL WSI. Packaged as a self-contained @@ -128,7 +128,7 @@ jobs: -DOVERRIDE_HOST_PAGE_SIZE=4096 \ -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON - - name: Build yaps2_libretro + - name: Build armsx2_libretro working-directory: build run: | ccache -p @@ -140,8 +140,8 @@ jobs: env: NAME: ${{ steps.artifact-metadata.outputs.artifact-name }} run: | - SO=$(find build -name 'yaps2_libretro.so' | head -1) - test -n "$SO" || { echo "yaps2_libretro.so not found"; exit 1; } + SO=$(find build -name 'armsx2_libretro.so' | head -1) + test -n "$SO" || { echo "armsx2_libretro.so not found"; exit 1; } # Keep the retro_* dynamic exports (link.T version script), drop the # rest — the Devel/RelWithDebInfo .so is ~80 MB unstripped. strip --strip-unneeded "$SO" diff --git a/.github/workflows/linux_build_sdl.yml b/.github/workflows/linux_build_sdl.yml index c9981113d4..2cc107e52c 100644 --- a/.github/workflows/linux_build_sdl.yml +++ b/.github/workflows/linux_build_sdl.yml @@ -1,6 +1,6 @@ name: Linux SDL Handheld Build Steps -# yaps2 fork: builds the SDL3 frontend (yaps2-sdl) for bare-kmsdrm handhelds. +# ARMSX2: builds the SDL3 frontend (armsx2-sdl) for bare-kmsdrm handhelds. # NOT for Rocknix / Batocera — those run Wayland compositors and use the Qt # build. This frontend acquires its surface via Vulkan VK_KHR_display # direct-display (see pcsx2-sdl/Main.cpp:BuildWindowInfo), taking over the @@ -121,7 +121,7 @@ jobs: -DOVERRIDE_HOST_PAGE_SIZE=4096 \ -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON - - name: Build yaps2-sdl + - name: Build armsx2-sdl working-directory: build run: | ccache -p diff --git a/.github/workflows/nightly_release.yml b/.github/workflows/nightly_release.yml deleted file mode 100644 index f339c09c39..0000000000 --- a/.github/workflows/nightly_release.yml +++ /dev/null @@ -1,122 +0,0 @@ -name: 🌙 Nightly Release - -# yaps2 fork: build the aarch64 artifacts and publish them as a single rolling -# "nightly" pre-release on this repo. The `nightly` tag/release is deleted and -# recreated each run, so its download URLs always point at the latest build. -# -# Assets: -# * yaps2-linux-arm64-qt-…​.AppImage (desktop / dev + Rocknix / Batocera) -# * yaps2-linux-arm64-qt-…​.tar.zst (same Qt build, portable no-FUSE tarball) -# * yaps2-linux-arm64-sdl-…​.tar.zst (bare-kmsdrm handhelds) -# * yaps2-macos-arm64-…​.tar.zst (EXPERIMENTAL native Apple Silicon .app) - -on: - schedule: - - cron: "0 7 * * *" # 07:00 UTC daily - workflow_dispatch: # …and on demand. - -permissions: - contents: write - -jobs: - build_qt: - if: github.repository == 'yaps2/yaps2' - name: "Qt Tarball (arm64)" - uses: ./.github/workflows/linux_build_qt.yml - with: - jobName: "Qt Portable Build (arm64)" - artifactPrefixName: "yaps2-linux-arm64-qt" - compiler: clang - cmakeflags: "" - buildTarball: true - fetchTags: true - secrets: inherit - - build_sdl: - if: github.repository == 'yaps2/yaps2' - name: "SDL Handheld (arm64)" - uses: ./.github/workflows/linux_build_sdl.yml - with: - jobName: "SDL Handheld Build (arm64)" - artifactPrefixName: "yaps2-linux-arm64-sdl" - fetchTags: true - secrets: inherit - - build_libretro: - if: github.repository == 'yaps2/yaps2' - name: "libretro Core (arm64)" - uses: ./.github/workflows/linux_build_libretro.yml - with: - jobName: "libretro Core Build (arm64)" - artifactPrefixName: "yaps2-linux-arm64-libretro" - fetchTags: true - secrets: inherit - - build_macos: - if: github.repository == 'yaps2/yaps2' - name: "macOS arm64 (experimental)" - uses: ./.github/workflows/macos_build.yml - with: - jobName: "macOS arm64 Build (experimental)" - artifactPrefixName: "yaps2-macos-arm64" - fetchTags: true - secrets: inherit - - publish_nightly: - # Wait for the experimental macOS job too (so its artifact is ready if it - # succeeded) but only REQUIRE the Linux builds — a macOS failure must never - # block the handheld release. !cancelled() lets us run after build_macos fails. - if: >- - ${{ !cancelled() - && github.repository == 'yaps2/yaps2' - && needs.build_qt.result == 'success' - && needs.build_sdl.result == 'success' }} - name: "Publish Nightly" - needs: - - build_qt - - build_sdl - - build_libretro - - build_macos - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - with: - fetch-depth: 0 - - - name: Download all artifacts - uses: actions/download-artifact@v8 - with: - path: ci-artifacts - - - name: Stage release assets - run: | - mkdir -p out - find ci-artifacts -type f \( -name '*.tar.zst' -o -name '*.AppImage' \) -exec cp -v {} out/ \; - echo "Assets to publish:" - ls -la out - - - name: Publish rolling nightly release - env: - GH_TOKEN: ${{ github.token }} - run: | - set -euo pipefail - DATE=$(date -u +%Y-%m-%d) - SHA=$(git rev-parse --short HEAD) - TAG=nightly - - # Move the rolling tag+release to the current commit. - gh release delete "$TAG" --repo "$GITHUB_REPOSITORY" --yes --cleanup-tag || true - - gh release create "$TAG" out/* \ - --repo "$GITHUB_REPOSITORY" \ - --target "$GITHUB_SHA" \ - --title "yaps2 Nightly ($DATE)" \ - --prerelease \ - --notes "Automated nightly build of yaps2 (aarch64 Linux) from \`main\` @ ${SHA} on ${DATE}. - - **Assets** - - \`*-qt-*.AppImage\` — Qt AppImage for desktop / dev and Wayland handhelds (Rocknix / Batocera). Needs FUSE. - - \`*-qt-*.tar.zst\` — the same Qt build as a portable tarball (no FUSE; run \`./AppRun\`). - - \`*-sdl-*.tar.zst\` — SDL3 build for bare-kmsdrm handhelds (VK_KHR_display direct-display). Extract next to a compatible base system; run \`./yaps2-sdl\`. - - \`*-libretro-*.tar.zst\` — **EXPERIMENTAL** libretro core (\`yaps2_libretro.so\`) for RetroArch and other libretro frontends. Vulkan context sharing; drop the \`.so\` in your frontend's cores dir. Absent on days the libretro build failed. - - \`*-macos-arm64-*.tar.zst\` — **EXPERIMENTAL** native Apple Silicon \`.app\` (ad-hoc signed, not notarized; right-click > Open). Unproven — may not run. Absent on days the macOS build failed." diff --git a/yaps2_libretro.info b/armsx2_libretro.info similarity index 79% rename from yaps2_libretro.info rename to armsx2_libretro.info index 809a88a910..7992bcd562 100644 --- a/yaps2_libretro.info +++ b/armsx2_libretro.info @@ -1,8 +1,8 @@ # Software Information -display_name = "Sony - PlayStation 2 (yaps2)" +display_name = "Sony - PlayStation 2 (ARMSX2)" authors = "PCSX2 Team|bmdhacks|WizzardSK" supported_extensions = "elf|iso|ciso|chd|cso|zso|bin|mdf|nrg|dump|gz|img|irx|m3u" -corename = "yaps2" +corename = "ARMSX2" categories = "Emulator" license = "GPLv3" permissions = "" @@ -39,6 +39,6 @@ firmware0_opt = "false" firmware1_desc = "'pcsx2/resources' folder (shaders, GameIndex.yaml, fonts)" firmware1_path = "pcsx2/resources" firmware1_opt = "false" -notes = "[1] This only checks that the folders exist in the correct location.|[2] The core does not require a specific BIOS filename, so this info file|[^] cannot tell you whether the content of your 'bios' folder is correct.|[3] The 'resources' folder must be copied from a matching yaps2/PCSX2 build;|[^] the core will not boot without it.|[4] The core is Vulkan-only: the frontend's Vulkan context is shared with the|[^] emulator through the hardware-render negotiation interface." +notes = "[1] This only checks that the folders exist in the correct location.|[2] The core does not require a specific BIOS filename, so this info file|[^] cannot tell you whether the content of your 'bios' folder is correct.|[3] The 'resources' folder must be copied from a matching ARMSX2/PCSX2 build;|[^] the core will not boot without it.|[4] The core is Vulkan-only: the frontend's Vulkan context is shared with the|[^] emulator through the hardware-render negotiation interface." -description = "A libretro port of yaps2, a PlayStation 2 emulator forked from PCSX2 and aimed at ARM handhelds (working arm64 recompilers, Adreno fixes). The core renders through the frontend's own Vulkan context -- it takes the VkInstance and VkPhysicalDevice from the hardware-render context-negotiation interface and hands finished frames back through set_image -- so a Vulkan-capable driver is required and no other video driver will work. Place a PS2 BIOS dump in 'system/pcsx2/bios' and a copy of the emulator's 'resources' directory in 'system/pcsx2/resources'. Save states, .m3u disc swapping and the usual renderer/upscale/speedhack core options are implemented. This core is experimental." +description = "A libretro port of ARMSX2, a PlayStation 2 emulator forked from PCSX2 for ARM devices, with native arm64 recompilers and mobile-GPU fixes. The core renders through the frontend's own Vulkan context -- it takes the VkInstance and VkPhysicalDevice from the hardware-render context-negotiation interface and hands finished frames back through set_image -- so a Vulkan-capable driver is required and no other video driver will work. Place a PS2 BIOS dump in 'system/pcsx2/bios' and a copy of the emulator's 'resources' directory in 'system/pcsx2/resources'. Save states, .m3u disc swapping and the usual renderer/upscale/speedhack core options are implemented. This core is experimental." diff --git a/pcsx2-libretro/CMakeLists.txt b/pcsx2-libretro/CMakeLists.txt index c0013dea36..6d8f5ed8bd 100644 --- a/pcsx2-libretro/CMakeLists.txt +++ b/pcsx2-libretro/CMakeLists.txt @@ -2,7 +2,7 @@ add_library(pcsx2-libretro SHARED) # Libretro cores are named _libretro.so with no "lib" prefix. set_target_properties(pcsx2-libretro PROPERTIES - OUTPUT_NAME "yaps2_libretro" + OUTPUT_NAME "armsx2_libretro" PREFIX "" ) diff --git a/pcsx2-libretro/Main.cpp b/pcsx2-libretro/Main.cpp index 319263b9f0..39cdcfbb04 100644 --- a/pcsx2-libretro/Main.cpp +++ b/pcsx2-libretro/Main.cpp @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team // SPDX-License-Identifier: GPL-3.0+ -// pcsx2-libretro — libretro core frontend (yaps2_libretro). +// pcsx2-libretro — libretro core frontend (armsx2_libretro). // // Milestone 1 scaffold: the core builds as a shared library, exposes the // libretro v1 API, and boots the VM headlessly (GS renderer forced to Null, @@ -193,7 +193,7 @@ bool LibretroCore::InitializeConfig() } } - const std::string ini_path = Path::Combine(EmuFolders::Settings, "yaps2-libretro.ini"); + const std::string ini_path = Path::Combine(EmuFolders::Settings, "armsx2-libretro.ini"); const bool ini_exists = FileSystem::FileExists(ini_path.c_str()); s_base_settings = std::make_unique(ini_path); @@ -838,111 +838,111 @@ static struct retro_core_option_v2_category kOptionCategories[] = { }; static struct retro_core_option_v2_definition kOptionDefinitions[] = { - {"yaps2_renderer", "GS Renderer (restart)", "GS Renderer (restart)", + {"armsx2_renderer", "GS Renderer (restart)", "GS Renderer (restart)", "Vulkan renders the GS on the GPU. Software renders on the CPU and presents through the same shared Vulkan context.", nullptr, "video", {{"Vulkan", nullptr}, {"Software", nullptr}, {nullptr, nullptr}}, "Vulkan"}, - {"yaps2_upscale", "Internal Resolution", "Internal Resolution", + {"armsx2_upscale", "Internal Resolution", "Internal Resolution", "Renders the PS2 output at a multiple of native resolution. The output canvas follows this size.", nullptr, "video", {{"1x", "1x (native)"}, {"2x", nullptr}, {"3x", nullptr}, {"4x", nullptr}, {nullptr, nullptr}}, "1x"}, - {"yaps2_aspect_ratio", "Aspect Ratio", "Aspect Ratio", + {"armsx2_aspect_ratio", "Aspect Ratio", "Aspect Ratio", "Display aspect ratio. 16:9 is intended for games with widescreen patches or native widescreen modes.", nullptr, "video", {{"Auto 4:3/3:2", "Auto (4:3 / 3:2 progressive)"}, {"4:3", nullptr}, {"16:9", nullptr}, {"Stretch", nullptr}, {nullptr, nullptr}}, "Auto 4:3/3:2"}, - {"yaps2_deinterlacing", "Deinterlacing", "Deinterlacing", + {"armsx2_deinterlacing", "Deinterlacing", "Deinterlacing", "How interlaced (480i/576i) output is turned into a full frame. Automatic picks per game; " "Bob is fast, Adaptive is highest quality; Off shows the raw field.", nullptr, "video", {{"Automatic", nullptr}, {"Off", nullptr}, {"Weave TFF", nullptr}, {"Weave BFF", nullptr}, {"Bob TFF", nullptr}, {"Bob BFF", nullptr}, {"Blend TFF", nullptr}, {"Blend BFF", nullptr}, {"Adaptive TFF", nullptr}, {"Adaptive BFF", nullptr}, {nullptr, nullptr}}, "Automatic"}, - {"yaps2_no_interlacing_patches", "No-Interlacing Patches (restart)", "No-Interlacing Patches (restart)", + {"armsx2_no_interlacing_patches", "No-Interlacing Patches (restart)", "No-Interlacing Patches (restart)", "Patches supported games to render progressive instead of interlaced — sharper than any deinterlacer.", nullptr, "video", {{"disabled", nullptr}, {"enabled", nullptr}, {nullptr, nullptr}}, "disabled"}, - {"yaps2_widescreen_patches", "Widescreen Patches (restart)", "Widescreen Patches (restart)", + {"armsx2_widescreen_patches", "Widescreen Patches (restart)", "Widescreen Patches (restart)", "Patches supported games to render 16:9. Set Aspect Ratio to 16:9 alongside this.", nullptr, "video", {{"disabled", nullptr}, {"enabled", nullptr}, {nullptr, nullptr}}, "disabled"}, - {"yaps2_blending_accuracy", "Blending Accuracy", "Blending Accuracy", + {"armsx2_blending_accuracy", "Blending Accuracy", "Blending Accuracy", "How accurately PS2 framebuffer blending is emulated on the GPU. Lower levels are faster; " "raise it only for games with visible blending artifacts.", nullptr, "video", {{"Minimum", nullptr}, {"Basic", nullptr}, {"Medium", nullptr}, {"High", nullptr}, {"Full", nullptr}, {"Maximum", nullptr}, {nullptr, nullptr}}, "Basic"}, - {"yaps2_dithering", "Dithering", "Dithering", + {"armsx2_dithering", "Dithering", "Dithering", "Unscaled replicates PS2 dithering; Off can reduce banding artifacts at higher internal resolutions.", nullptr, "video", {{"Unscaled", nullptr}, {"Off", nullptr}, {"Scaled", nullptr}, {nullptr, nullptr}}, "Unscaled"}, - {"yaps2_trilinear_filtering", "Trilinear Filtering", "Trilinear Filtering", + {"armsx2_trilinear_filtering", "Trilinear Filtering", "Trilinear Filtering", nullptr, nullptr, "video", {{"Automatic", nullptr}, {"Off", nullptr}, {"Trilinear (PS2)", nullptr}, {"Trilinear (Forced)", nullptr}, {nullptr, nullptr}}, "Automatic"}, - {"yaps2_mipmapping", "Hardware Mipmapping", "Hardware Mipmapping", + {"armsx2_mipmapping", "Hardware Mipmapping", "Hardware Mipmapping", nullptr, nullptr, "video", {{"enabled", nullptr}, {"disabled", nullptr}, {nullptr, nullptr}}, "enabled"}, - {"yaps2_fxaa", "FXAA", "FXAA", + {"armsx2_fxaa", "FXAA", "FXAA", "Cheap post-process anti-aliasing.", nullptr, "video", {{"disabled", nullptr}, {"enabled", nullptr}, {nullptr, nullptr}}, "disabled"}, - {"yaps2_texture_filtering", "Texture Filtering", "Texture Filtering", + {"armsx2_texture_filtering", "Texture Filtering", "Texture Filtering", "Bilinear (PS2) filters as the game requests. Forced filters everything, which smooths textures " "but can blur 2D elements; the sprite-excluding variant protects UI sprites.", nullptr, "video", {{"Nearest", nullptr}, {"Bilinear (Forced)", nullptr}, {"Bilinear (PS2)", nullptr}, {"Bilinear (Forced excluding sprites)", nullptr}, {nullptr, nullptr}}, "Bilinear (PS2)"}, - {"yaps2_anisotropic_filtering", "Anisotropic Filtering", "Anisotropic Filtering", + {"armsx2_anisotropic_filtering", "Anisotropic Filtering", "Anisotropic Filtering", "Sharpens textures viewed at an angle. Cheap on the GPU, but can cause artifacts in games that " "rely on point sampling.", nullptr, "video", {{"0", "disabled"}, {"2", "2x"}, {"4", "4x"}, {"8", "8x"}, {"16", "16x"}, {nullptr, nullptr}}, "0"}, - {"yaps2_sw_threads", "Software Renderer Threads", "Software Renderer Threads", + {"armsx2_sw_threads", "Software Renderer Threads", "Software Renderer Threads", "Worker threads for the Software renderer (in addition to the GS thread). No effect on Vulkan.", nullptr, "video", {{"0", nullptr}, {"1", nullptr}, {"2", nullptr}, {"3", nullptr}, {"4", nullptr}, {nullptr, nullptr}}, "2"}, - {"yaps2_show_fps", "Show FPS", "Show FPS", + {"armsx2_show_fps", "Show FPS", "Show FPS", "Draws the internal framerate on screen.", nullptr, "video", {{"disabled", nullptr}, {"enabled", nullptr}, {nullptr, nullptr}}, "disabled"}, - {"yaps2_ee_cycle_rate", "EE Cycle Rate", "EE Cycle Rate", + {"armsx2_ee_cycle_rate", "EE Cycle Rate", "EE Cycle Rate", "Underclocks or overclocks the emulated Emotion Engine. Below 100% speeds up emulation but can " "cause stutter or breakage; above 100% can smooth out games with internal slowdown.", nullptr, "performance", {{"50%", nullptr}, {"60%", nullptr}, {"75%", nullptr}, {"100%", "100% (default)"}, {"130%", nullptr}, {"180%", nullptr}, {"300%", nullptr}, {nullptr, nullptr}}, "100%"}, - {"yaps2_ee_cycle_skip", "EE Cycle Skip", "EE Cycle Skip", + {"armsx2_ee_cycle_skip", "EE Cycle Skip", "EE Cycle Skip", "Makes the emulated EE skip cycles. Helps games with obvious VU-driven slowdown; " "can cause false FPS readings and breakage.", nullptr, "performance", {{"disabled", nullptr}, {"mild", nullptr}, {"moderate", nullptr}, {"maximum", nullptr}, {nullptr, nullptr}}, "disabled"}, - {"yaps2_hw_download_mode", "Hardware Download Mode", "Hardware Download Mode", + {"armsx2_hw_download_mode", "Hardware Download Mode", "Hardware Download Mode", "How GS-to-EE readbacks are handled. Accurate is correct but expensive on mobile GPUs; " "Disable Readbacks skips the data copy, Unsynchronized doesn't wait for the GPU, Disabled " "ignores the transfer entirely. Anything but Accurate can break effects that read the framebuffer.", nullptr, "performance", {{"Accurate", nullptr}, {"Disable Readbacks", nullptr}, {"Unsynchronized", nullptr}, {"Disabled", nullptr}, {nullptr, nullptr}}, "Accurate"}, - {"yaps2_mtvu", "MTVU (Multi-Threaded VU1)", "MTVU (Multi-Threaded VU1)", + {"armsx2_mtvu", "MTVU (Multi-Threaded VU1)", "MTVU (Multi-Threaded VU1)", "Runs VU1 on its own thread. Large speedup on multi-core CPUs; a small number of games hang with it.", nullptr, "performance", {{"enabled", nullptr}, {"disabled", nullptr}, {nullptr, nullptr}}, "enabled"}, - {"yaps2_instant_vu1", "Instant VU1", "Instant VU1", + {"armsx2_instant_vu1", "Instant VU1", "Instant VU1", "Runs VU1 programs to completion instantly instead of interleaving with the EE. " "Fast and safe for most games.", nullptr, "performance", {{"enabled", nullptr}, {"disabled", nullptr}, {nullptr, nullptr}}, "enabled"}, - {"yaps2_bios", "BIOS (restart)", "BIOS (restart)", + {"armsx2_bios", "BIOS (restart)", "BIOS (restart)", "Which BIOS image from /pcsx2/bios to boot. Auto picks the first valid image.", nullptr, "system", {{"auto", "Auto (first valid image)"}, {nullptr, nullptr}}, "auto"}, - {"yaps2_fast_boot", "Fast Boot", "Fast Boot", + {"armsx2_fast_boot", "Fast Boot", "Fast Boot", "Skips the BIOS boot animation.", nullptr, "system", {{"enabled", nullptr}, {"disabled", nullptr}, {nullptr, nullptr}}, "enabled"}, - {"yaps2_cheats", "Enable Cheats", "Enable Cheats", + {"armsx2_cheats", "Enable Cheats", "Enable Cheats", "Loads .pnach cheat files from /pcsx2/cheats for the running game.", nullptr, "system", {{"disabled", nullptr}, {"enabled", nullptr}, {nullptr, nullptr}}, "disabled"}, @@ -954,29 +954,29 @@ static struct retro_core_options_v2 kOptionsV2 = {kOptionCategories, kOptionDefi // Legacy fallback: first value doubles as the default. Non-const so the // BIOS entry can be pointed at the scanned list. static struct retro_variable kCoreVariables[] = { - {"yaps2_renderer", "GS renderer (restart); Vulkan|Software"}, - {"yaps2_upscale", "Internal resolution; 1x|2x|3x|4x"}, - {"yaps2_aspect_ratio", "Aspect ratio; Auto 4:3/3:2|4:3|16:9|Stretch"}, - {"yaps2_deinterlacing", "Deinterlacing; Automatic|Off|Weave TFF|Weave BFF|Bob TFF|Bob BFF|Blend TFF|Blend BFF|Adaptive TFF|Adaptive BFF"}, - {"yaps2_no_interlacing_patches", "No-interlacing patches (restart); disabled|enabled"}, - {"yaps2_widescreen_patches", "Widescreen patches (restart); disabled|enabled"}, - {"yaps2_blending_accuracy", "Blending accuracy; Basic|Minimum|Medium|High|Full|Maximum"}, - {"yaps2_dithering", "Dithering; Unscaled|Off|Scaled"}, - {"yaps2_trilinear_filtering", "Trilinear filtering; Automatic|Off|Trilinear (PS2)|Trilinear (Forced)"}, - {"yaps2_mipmapping", "Hardware mipmapping; enabled|disabled"}, - {"yaps2_fxaa", "FXAA; disabled|enabled"}, - {"yaps2_texture_filtering", "Texture filtering; Bilinear (PS2)|Nearest|Bilinear (Forced)|Bilinear (Forced excluding sprites)"}, - {"yaps2_anisotropic_filtering", "Anisotropic filtering; 0|2|4|8|16"}, - {"yaps2_sw_threads", "Software renderer threads; 2|0|1|3|4"}, - {"yaps2_show_fps", "Show FPS on screen; disabled|enabled"}, - {"yaps2_ee_cycle_rate", "EE cycle rate; 100%|50%|60%|75%|130%|180%|300%"}, - {"yaps2_ee_cycle_skip", "EE cycle skip; disabled|mild|moderate|maximum"}, - {"yaps2_hw_download_mode", "Hardware download mode; Accurate|Disable Readbacks|Unsynchronized|Disabled"}, - {"yaps2_mtvu", "MTVU (multi-threaded VU1); enabled|disabled"}, - {"yaps2_instant_vu1", "Instant VU1; enabled|disabled"}, - {"yaps2_bios", "BIOS (restart); auto"}, - {"yaps2_fast_boot", "Fast boot; enabled|disabled"}, - {"yaps2_cheats", "Enable cheats; disabled|enabled"}, + {"armsx2_renderer", "GS renderer (restart); Vulkan|Software"}, + {"armsx2_upscale", "Internal resolution; 1x|2x|3x|4x"}, + {"armsx2_aspect_ratio", "Aspect ratio; Auto 4:3/3:2|4:3|16:9|Stretch"}, + {"armsx2_deinterlacing", "Deinterlacing; Automatic|Off|Weave TFF|Weave BFF|Bob TFF|Bob BFF|Blend TFF|Blend BFF|Adaptive TFF|Adaptive BFF"}, + {"armsx2_no_interlacing_patches", "No-interlacing patches (restart); disabled|enabled"}, + {"armsx2_widescreen_patches", "Widescreen patches (restart); disabled|enabled"}, + {"armsx2_blending_accuracy", "Blending accuracy; Basic|Minimum|Medium|High|Full|Maximum"}, + {"armsx2_dithering", "Dithering; Unscaled|Off|Scaled"}, + {"armsx2_trilinear_filtering", "Trilinear filtering; Automatic|Off|Trilinear (PS2)|Trilinear (Forced)"}, + {"armsx2_mipmapping", "Hardware mipmapping; enabled|disabled"}, + {"armsx2_fxaa", "FXAA; disabled|enabled"}, + {"armsx2_texture_filtering", "Texture filtering; Bilinear (PS2)|Nearest|Bilinear (Forced)|Bilinear (Forced excluding sprites)"}, + {"armsx2_anisotropic_filtering", "Anisotropic filtering; 0|2|4|8|16"}, + {"armsx2_sw_threads", "Software renderer threads; 2|0|1|3|4"}, + {"armsx2_show_fps", "Show FPS on screen; disabled|enabled"}, + {"armsx2_ee_cycle_rate", "EE cycle rate; 100%|50%|60%|75%|130%|180%|300%"}, + {"armsx2_ee_cycle_skip", "EE cycle skip; disabled|mild|moderate|maximum"}, + {"armsx2_hw_download_mode", "Hardware download mode; Accurate|Disable Readbacks|Unsynchronized|Disabled"}, + {"armsx2_mtvu", "MTVU (multi-threaded VU1); enabled|disabled"}, + {"armsx2_instant_vu1", "Instant VU1; enabled|disabled"}, + {"armsx2_bios", "BIOS (restart); auto"}, + {"armsx2_fast_boot", "Fast boot; enabled|disabled"}, + {"armsx2_cheats", "Enable cheats; disabled|enabled"}, {nullptr, nullptr}, }; @@ -1009,7 +1009,7 @@ static void PopulateBiosOptions(retro_environment_t cb) retro_core_option_v2_definition* bios_def = nullptr; for (retro_core_option_v2_definition& def : kOptionDefinitions) { - if (def.key && !std::strcmp(def.key, "yaps2_bios")) + if (def.key && !std::strcmp(def.key, "armsx2_bios")) { bios_def = &def; break; @@ -1030,7 +1030,7 @@ static void PopulateBiosOptions(retro_environment_t cb) for (retro_variable& var : kCoreVariables) { - if (var.key && !std::strcmp(var.key, "yaps2_bios")) + if (var.key && !std::strcmp(var.key, "armsx2_bios")) { var.value = s_bios_legacy_values.c_str(); break; @@ -1047,7 +1047,7 @@ static void ApplyCoreOptions(bool startup) { auto lock = Host::GetSettingsLock(); - var = {"yaps2_renderer", nullptr}; + var = {"armsx2_renderer", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value && startup) { // Renderer swaps need the whole context negotiation to rerun; @@ -1056,31 +1056,31 @@ static void ApplyCoreOptions(bool startup) s_base_settings->SetIntValue("EmuCore/GS", "Renderer", static_cast(GSRendererType::SW)); } - var = {"yaps2_upscale", nullptr}; + var = {"armsx2_upscale", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetFloatValue("EmuCore/GS", "upscale_multiplier", static_cast(std::clamp(atoi(var.value), 1, 4))); - var = {"yaps2_fast_boot", nullptr}; + var = {"armsx2_fast_boot", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore", "EnableFastBoot", !std::strcmp(var.value, "enabled")); - var = {"yaps2_widescreen_patches", nullptr}; + var = {"armsx2_widescreen_patches", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore", "EnableWideScreenPatches", !std::strcmp(var.value, "enabled")); - var = {"yaps2_show_fps", nullptr}; + var = {"armsx2_show_fps", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore/GS", "OsdShowFPS", !std::strcmp(var.value, "enabled")); - var = {"yaps2_aspect_ratio", nullptr}; + var = {"armsx2_aspect_ratio", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Option values match Pcsx2Config::GSOptions::AspectRatioNames. s_base_settings->SetStringValue("EmuCore/GS", "AspectRatio", var.value); } - var = {"yaps2_deinterlacing", nullptr}; + var = {"armsx2_deinterlacing", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Indices match the GSInterlaceMode enum. @@ -1096,11 +1096,11 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_no_interlacing_patches", nullptr}; + var = {"armsx2_no_interlacing_patches", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore", "EnableNoInterlacingPatches", !std::strcmp(var.value, "enabled")); - var = {"yaps2_blending_accuracy", nullptr}; + var = {"armsx2_blending_accuracy", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Indices match the AccBlendLevel enum. @@ -1115,7 +1115,7 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_dithering", nullptr}; + var = {"armsx2_dithering", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Values match the Dithering config field: 0=Off, 1=Scaled, 2=Unscaled. @@ -1130,7 +1130,7 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_trilinear_filtering", nullptr}; + var = {"armsx2_trilinear_filtering", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Values match the TriFiltering enum (Automatic=-1). @@ -1146,15 +1146,15 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_mipmapping", nullptr}; + var = {"armsx2_mipmapping", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore/GS", "hw_mipmap", !std::strcmp(var.value, "enabled")); - var = {"yaps2_fxaa", nullptr}; + var = {"armsx2_fxaa", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore/GS", "fxaa", !std::strcmp(var.value, "enabled")); - var = {"yaps2_ee_cycle_rate", nullptr}; + var = {"armsx2_ee_cycle_rate", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { static constexpr std::pair kRates[] = {{"50%", -3}, {"60%", -2}, {"75%", -1}, @@ -1169,7 +1169,7 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_ee_cycle_skip", nullptr}; + var = {"armsx2_ee_cycle_skip", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { static constexpr const char* kSkips[] = {"disabled", "mild", "moderate", "maximum"}; @@ -1183,7 +1183,7 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_texture_filtering", nullptr}; + var = {"armsx2_texture_filtering", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Indices match the BiFiltering enum. @@ -1199,15 +1199,15 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_anisotropic_filtering", nullptr}; + var = {"armsx2_anisotropic_filtering", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetIntValue("EmuCore/GS", "MaxAnisotropy", std::clamp(atoi(var.value), 0, 16)); - var = {"yaps2_sw_threads", nullptr}; + var = {"armsx2_sw_threads", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetIntValue("EmuCore/GS", "extrathreads", std::clamp(atoi(var.value), 0, 4)); - var = {"yaps2_hw_download_mode", nullptr}; + var = {"armsx2_hw_download_mode", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Explicit values: EnabledForceFull (1) is deliberately not exposed. @@ -1226,15 +1226,15 @@ static void ApplyCoreOptions(bool startup) } } - var = {"yaps2_mtvu", nullptr}; + var = {"armsx2_mtvu", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore/Speedhacks", "vuThread", !std::strcmp(var.value, "enabled")); - var = {"yaps2_instant_vu1", nullptr}; + var = {"armsx2_instant_vu1", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore/Speedhacks", "vu1Instant", !std::strcmp(var.value, "enabled")); - var = {"yaps2_bios", nullptr}; + var = {"armsx2_bios", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { // Empty setting = FindBiosImage() picks the first valid image. @@ -1242,7 +1242,7 @@ static void ApplyCoreOptions(bool startup) std::strcmp(var.value, "auto") ? var.value : ""); } - var = {"yaps2_cheats", nullptr}; + var = {"armsx2_cheats", nullptr}; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) s_base_settings->SetBoolValue("EmuCore", "EnableCheats", !std::strcmp(var.value, "enabled")); } @@ -1265,9 +1265,9 @@ static void ApplyCoreOptions(bool startup) static const VkApplicationInfo* GetVulkanApplicationInfo(void) { static VkApplicationInfo app_info{VK_STRUCTURE_TYPE_APPLICATION_INFO}; - app_info.pApplicationName = "yaps2"; + app_info.pApplicationName = "ARMSX2"; app_info.applicationVersion = VK_MAKE_VERSION(2, 0, 0); - app_info.pEngineName = "yaps2"; + app_info.pEngineName = "ARMSX2"; app_info.engineVersion = VK_MAKE_VERSION(2, 0, 0); app_info.apiVersion = VK_API_VERSION_1_1; return &app_info; @@ -1404,7 +1404,7 @@ RETRO_API void retro_deinit(void) RETRO_API void retro_get_system_info(struct retro_system_info* info) { std::memset(info, 0, sizeof(*info)); - info->library_name = "yaps2"; + info->library_name = "ARMSX2"; info->library_version = GIT_REV; info->valid_extensions = "elf|iso|ciso|chd|cso|zso|bin|mdf|nrg|dump|gz|img|irx|m3u"; info->need_fullpath = true; diff --git a/pcsx2-sdl/CMakeLists.txt b/pcsx2-sdl/CMakeLists.txt index 18149b7c37..477f0e9a4a 100644 --- a/pcsx2-sdl/CMakeLists.txt +++ b/pcsx2-sdl/CMakeLists.txt @@ -1,8 +1,8 @@ add_executable(pcsx2-sdl) -# yaps2 fork: emit the handheld frontend binary as "yaps2-sdl" instead of +# ARMSX2: emit the handheld frontend binary as "armsx2-sdl" instead of # "pcsx2-sdl". Target name stays pcsx2-sdl; only the produced file changes. -set_target_properties(pcsx2-sdl PROPERTIES OUTPUT_NAME "yaps2-sdl") +set_target_properties(pcsx2-sdl PROPERTIES OUTPUT_NAME "armsx2-sdl") if (PACKAGE_MODE) install(TARGETS pcsx2-sdl DESTINATION ${CMAKE_INSTALL_BINDIR})