From ee3bb4e2f33151cd6888eeaa03bc96809881f058 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 9 Oct 2023 11:35:57 +0200 Subject: [PATCH] Vita3K: addded various resources + configs --- .../how-to-install-psvita-games.txt | 19 +++ .../reference_lists/helper_files_list.cfg | 3 + emu-configs/vita3k/config.yml | 121 ++++++++++++++++++ emu-configs/vita3k/ux0/user/00/user.xml | 12 ++ net.retrodeck.retrodeck.yml | 23 ++-- res/retrodeck.png | Bin 0 -> 18633 bytes 6 files changed, 163 insertions(+), 15 deletions(-) create mode 100644 emu-configs/defaults/retrodeck/helper_files/how-to-install-psvita-games.txt create mode 100644 emu-configs/vita3k/config.yml create mode 100644 emu-configs/vita3k/ux0/user/00/user.xml create mode 100755 res/retrodeck.png diff --git a/emu-configs/defaults/retrodeck/helper_files/how-to-install-psvita-games.txt b/emu-configs/defaults/retrodeck/helper_files/how-to-install-psvita-games.txt new file mode 100644 index 00000000..aae12260 --- /dev/null +++ b/emu-configs/defaults/retrodeck/helper_files/how-to-install-psvita-games.txt @@ -0,0 +1,19 @@ +Please note that the PSVita support is still experimental, and for the way Vita3K is working the automation is limited. +In order to install a PSVita games is needed to: + +- Install a game opening the Vita3K emulator via Configurator, the supported formats are pkg, zip, vpk. +- Upon installation the zRIF may be asked, it's different for each game, you can find it via web search. +- Install DLCs and patches in the same way. +- Create an empty file in roms/psvita/gamename.psvita, please mind the .psvita extension. For example: roms/psvita/WipEout 2048 (EU).psvita. +- Edit the empty file adding the game Title ID (more below). +- The game should appear in the game list after RetroDECK is re-opened. + +How to find a title ID +It can be found inside the Vita3K GUI in the Title ID column, or found via web search. +For example the game WipEout 2048 (EU) has an ID that is PCSF00007. +So simply add PCSF00007 to the WipEout 2048 (EU).psvita file and the setup for this game is complete. + +Related wiki article can be found here: +-- + +The RetroDECK Team \ No newline at end of file diff --git a/emu-configs/defaults/retrodeck/reference_lists/helper_files_list.cfg b/emu-configs/defaults/retrodeck/reference_lists/helper_files_list.cfg index 6700e277..8a3b9744 100644 --- a/emu-configs/defaults/retrodeck/reference_lists/helper_files_list.cfg +++ b/emu-configs/defaults/retrodeck/reference_lists/helper_files_list.cfg @@ -19,3 +19,6 @@ how-to-install-Duckstation-textures.txt^$texture_packs_folder/Duckstation # customs how-to-install-custom-emulators.txt^$rdhome/customs + +# emulators +how-to-install-psvita-games.txt^$roms_folder/psvita diff --git a/emu-configs/vita3k/config.yml b/emu-configs/vita3k/config.yml new file mode 100644 index 00000000..6e1b12dd --- /dev/null +++ b/emu-configs/vita3k/config.yml @@ -0,0 +1,121 @@ +--- +initial-setup: true +gdbstub: false +log-active-shaders: false +log-uniforms: false +log-compat-warn: false +validation-layer: true +pstv-mode: false +show-mode: false +demo-mode: false +show-gui: false +show-info-bar: false +apps-list-grid: false +display-system-apps: true +stretch_the_display_area: false +show-live-area-screen: true +icon-size: 64 +archive-log: false +backend-renderer: OpenGL +gpu-idx: 0 +high-accuracy: true +resolution-multiplier: 1 +disable-surface-sync: true +screen-filter: Bilinear +v-sync: true +anisotropic-filtering: 1 +texture-cache: true +show-compile-shaders: true +hashless-texture-cache: false +boot-apps-full-screen: true +audio-backend: SDL +ngs-enable: true +sys-button: 1 +sys-lang: 1 +sys-date-format: 2 +sys-time-format: 0 +cpu-pool-size: 10 +modules-mode: 0 +delay-background: 4 +delay-start: 10 +background-alpha: 0.300000012 +log-level: 0 +cpu-backend: Dynarmic +cpu-opt: true +pref-path: RETRODECKHOMEDIR/bios/Vita3K/Vita3K/ +discord-rich-presence: true +wait-for-debugger: false +color-surface-debug: false +show-touchpad-cursor: true +performance-overlay: false +perfomance-overlay-detail: 0 +perfomance-overlay-position: 0 +keyboard-button-select: 229 +keyboard-button-start: 40 +keyboard-button-up: 82 +keyboard-button-right: 79 +keyboard-button-down: 81 +keyboard-button-left: 80 +keyboard-button-l1: 20 +keyboard-button-r1: 8 +keyboard-button-l2: 24 +keyboard-button-r2: 18 +keyboard-button-l3: 9 +keyboard-button-r3: 11 +keyboard-button-triangle: 25 +keyboard-button-circle: 6 +keyboard-button-cross: 27 +keyboard-button-square: 29 +keyboard-leftstick-left: 4 +keyboard-leftstick-right: 7 +keyboard-leftstick-up: 26 +keyboard-leftstick-down: 22 +keyboard-rightstick-left: 13 +keyboard-rightstick-right: 15 +keyboard-rightstick-up: 12 +keyboard-rightstick-down: 14 +keyboard-button-psbutton: 19 +keyboard-gui-toggle-gui: 10 +keyboard-gui-fullscreen: 68 +keyboard-gui-toggle-touch: 23 +user-id: 00 +user-auto-connect: true +dump-textures: false +display-info-message: true +show-welcome: false +asia-font-support: false +shader-cache: true +spirv-shader: false +current-ime-lang: 4 +psn-status: 0 +http-enable: true +http-timeout-attempts: 50 +http-timeout-sleep-ms: 100 +http-read-end-attempts: 10 +http-read-end-sleep-ms: 250 +tracy-primitive-impl: false +controller-binds: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 +controller-led-color: + [] +lle-modules: + [] +ime-langs: + - 4 +tracy-advanced-profiling-modules: + [] +... \ No newline at end of file diff --git a/emu-configs/vita3k/ux0/user/00/user.xml b/emu-configs/vita3k/ux0/user/00/user.xml new file mode 100644 index 00000000..03849f03 --- /dev/null +++ b/emu-configs/vita3k/ux0/user/00/user.xml @@ -0,0 +1,12 @@ + + + /app/retrodeck/retrodeck.png + + + default + + + + + + \ No newline at end of file diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index c7d4fdf2..8e7f3b17 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -1262,21 +1262,9 @@ modules: # Ryujinx - END # Vita3K - START - - - name: Vita3K - buildsystem: simple - build-commands: - - | - mkdir -p ${FLATPAK_DEST}/vita3k - cp -r * ${FLATPAK_DEST}/vita3k - chmod +x ${FLATPAK_DEST}/vita3k/Vita3K - rm -f ${FLATPAK_DEST}/vita3k/update-vita3k.sh - ln -s ${FLATPAK_DEST}/vita3k/Vita3K /app/bin/Vita3K - sources: - - type: archive - url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip - sha256: VITASHAPLACEHOLDER - + # Vita3K is writing some files in its own directory + # So that is placed in /var/data/Vita3K and not in the readonly filesystem + # It is installed by the wrapper. # Vita3K - END # External manifests end @@ -1336,6 +1324,11 @@ modules: - mkdir -p ${FLATPAK_DEST}/share/appdata - cp net.retrodeck.retrodeck.appdata.xml ${FLATPAK_DEST}/share/appdata + # Vita3K + # Creating an empty symlink that will point to Vita3K binary + - ln -s -f ${FLATPAK_DEST}/Vita3K /var/data/Vita3K/Vita3K + - mv -f -t ${FLATPAK_DEST}/retrodeck/retrodeck.png ${FLATPAK_DEST}/retrodeck + sources: - type: git url: https://github.com/XargonWan/RetroDECK.git diff --git a/res/retrodeck.png b/res/retrodeck.png new file mode 100755 index 0000000000000000000000000000000000000000..d16329c3261e67469bd5cf8176f5f77c8732d5ba GIT binary patch literal 18633 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