diff --git a/.github/workflows/cooker-selfhosted.yml b/.github/workflows/cooker-selfhosted.yml
index 3bfc2c23..1171a8b7 100644
--- a/.github/workflows/cooker-selfhosted.yml
+++ b/.github/workflows/cooker-selfhosted.yml
@@ -70,6 +70,9 @@ jobs:
continue-on-error: true
# Sometimes flatpak download fails, in this case it tries a second time
+ - name: Run pre-build automation tasks (retry)
+ if: steps.flatpak-download.outcome == 'failure'
+ run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
diff --git a/automation_tools/automation_task_list.cfg b/automation_tools/automation_task_list.cfg
index ebf7d98f..09a15943 100644
--- a/automation_tools/automation_task_list.cfg
+++ b/automation_tools/automation_task_list.cfg
@@ -1,12 +1,12 @@
# The proper format for this file is
# ACTION^PLACEHOLDERTEXT^URL^REPO(Optional)
# hash^DOOMSHAPLACEHOLDER^https://buildbot.libretro.com/assets/cores/DOOM/Doom%20%28Shareware%29.zip
-hash^VITASHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
hash^DUCKSTATIONSHAPLACEHOLDER^https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage
hash^SAMEDUCKSHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/sameduck_libretro.so.zip
hash^PPSSPPBIOSHASHPLACEHOLDER^https://github.com/hrydgard/ppsspp/archive/refs/heads/master.zip
hash^MSXBIOSHASHPLACEHOLDER^http://bluemsx.msxblue.com/rel_download/blueMSXv282full.zip
hash^XEMUHDDHASHPLACEHOLDER^https://github.com/mborgerson/xemu-hdd-image/releases/latest/download/xbox_hdd.qcow2.zip
+hash^VITA3KSHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main
outside_info^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
branch^THISBRANCH
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/es-configs/es_systems.xml b/es-configs/es_systems.xml
index b9da6c2e..31f064bc 100644
--- a/es-configs/es_systems.xml
+++ b/es-configs/es_systems.xml
@@ -1337,7 +1337,7 @@
psp
psp
-
+
psx
Sony PlayStation
diff --git a/functions/prepare_emulator.sh b/functions/prepare_emulator.sh
index 0f880fe3..e4fdfe82 100644
--- a/functions/prepare_emulator.sh
+++ b/functions/prepare_emulator.sh
@@ -667,6 +667,41 @@ prepare_emulator() {
fi
fi
+ if [[ "$emulator" =~ ^(vita3k|Vita3K|all)$ ]]; then
+ # TODO: do a proper script
+ # This is just a placeholder script to test the emulator's flow
+ echo "----------------------"
+ echo "Initializing Vita3K"
+ echo "----------------------"
+
+ # extracting the emulator
+ # NOTE: the emulator is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
+ rm -rf "/var/data/Vita3K"
+ mkdir -p "/var/data/Vita3K"
+ unzip "/app/retrodeck/vita3k.zip" -d "/var/data/Vita3K"
+ chmod +x "/var/data/Vita3K/Vita3K"
+ rm -f "/var/data/Vita3K/update-vita3k.sh"
+
+ # copying config file
+ cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K"
+ # TODO: this step is to be done properly: Replacing RETRODECKHOMEDIR placeholder
+ sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "/var/data/Vita3K/config.yml"
+
+ # copying vita user config
+ cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K"
+
+ # prep saves folder
+ dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata"
+
+ # Installing firmware
+ # TODO: at the moment this is here instead of a tool because it seems like it cannot run without Firmware
+ curl "http://dus01.psv.update.playstation.net/update/psv/image/2022_0209/rel_f2c7b12fe85496ec88a0391b514d6e3b/PSVUPDAT.PUP" -po /tmp/PSVUPDAT.PUP
+ curl "http://dus01.psp2.update.playstation.net/update/psp2/image/2019_0924/sd_8b5f60b56c3da8365b973dba570c53a5/PSP2UPDAT.PUP?dest=us" -po /tmp/PSP2UPDAT.PUP
+ Vita3K --firmware /tmp/PSVUPDAT.PUP
+ Vita3K --firmware /tmp/PSP2UPDAT.PUP
+
+ fi
+
# Update presets for all emulators after any reset or move
if [[ ! "$emulator" == "retrodeck" ]]; then
build_retrodeck_current_presets
diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml
index 14c2428a..731e9dcf 100644
--- a/net.retrodeck.retrodeck.yml
+++ b/net.retrodeck.retrodeck.yml
@@ -1261,6 +1261,30 @@ modules:
# Ryujinx - END
+ # Vita3K - START
+ # Vita3K is writing some files in its own directory
+ # So that is placed in /var/data/Vita3K and not in the readonly filesystem
+ # This module is just fetching the file so it will be unique for this build
+
+ - name: vita3k
+ buildsystem: simple
+ build-commands:
+ # Creating an empty symlink that will point to Vita3K binary
+ - ln -s /var/data/Vita3K/Vita3K ${FLATPAK_DEST}/bin/Vita3K
+ # Copying the user icon
+ - mkdir -p ${FLATPAK_DEST}/retrodeck
+ - cp retrodeck.png ${FLATPAK_DEST}/retrodeck
+ # preparing the vita3k zip for later
+ - mv ubuntu-latest.zip ${FLATPAK_DEST}/retrodeck/vita3k.zip
+ sources:
+ - type: file
+ url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
+ sha256: VITA3KSHAPLACEHOLDER
+ - type: file
+ path: res/retrodeck.png
+
+ # Vita3K - END
+
# External manifests end
- name: retrodeck
diff --git a/old/removed-modules.yml b/old/removed-modules.yml
index 968982ed..6489959f 100644
--- a/old/removed-modules.yml
+++ b/old/removed-modules.yml
@@ -127,28 +127,4 @@
# url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.685/ryujinx-1.1.685-linux_x64.tar.gz
# sha256: bc4d7076106d7aa59c3a3ea22b83c553e5fa1a897815831adcf18cc13d729e15
- # Ryujinx Appimage - END
-
- # Vita3K - START
- # Very broken, disabled
- # NOTE: this is a continuos release, it's provided but not supported
- # to update this module:
- # wget https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip -O rd-submodules/vita3k/vita3k-14-01-23.zip
- # sha256sum rd-submodules/vita3k/vita3k*.zip
- # change url and sha
- # check the branch in the url
-
- # - name: Vita3K
- # buildsystem: simple
- # build-commands:
- # - |
- # mkdir -p ${FLATPAK_DEST}/vita3k
- # cp -r * ${FLATPAK_DEST}/vita3k
- # chmod +x ${FLATPAK_DEST}/vita3k/Vita3K
- # 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 - END
\ No newline at end of file
+ # Ryujinx Appimage - END
\ No newline at end of file
diff --git a/rd-submodules/SDL2-no-libdecor.json b/rd-submodules/SDL2-no-libdecor.json
deleted file mode 100644
index f101d4b0..00000000
--- a/rd-submodules/SDL2-no-libdecor.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "SDL2",
- "buildsystem": "autotools",
- "config-opts": ["--disable-static"],
- "sources": [
- {
- "type": "archive",
- "url": "https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.26.3.tar.gz",
- "sha256": "af0ff86e4a268bc12c915a0ea19ea1a16419ab1426d92bad5f4e26eb31583967"
- }
- ],
- "cleanup": [ "/bin/sdl2-config",
- "/include",
- "/lib/libSDL2.la",
- "/lib/libSDL2main.a",
- "/lib/libSDL2main.la",
- "/lib/libSDL2_test.a",
- "/lib/libSDL2_test.la",
- "/lib/cmake",
- "/share/aclocal",
- "/lib/pkgconfig"]
-}
diff --git a/rd-submodules/vita3k/vita3k-14-01-23.zip b/rd-submodules/vita3k/vita3k-14-01-23.zip
deleted file mode 100644
index 4cd7532e..00000000
Binary files a/rd-submodules/vita3k/vita3k-14-01-23.zip and /dev/null differ
diff --git a/res/retrodeck.png b/res/retrodeck.png
new file mode 100755
index 00000000..d16329c3
Binary files /dev/null and b/res/retrodeck.png differ
diff --git a/tools/configurator.sh b/tools/configurator.sh
index 52813c3e..5e826176 100644
--- a/tools/configurator.sh
+++ b/tools/configurator.sh
@@ -35,6 +35,7 @@ source /app/libexec/global.sh
# - Primehack
# - RPCS3
# - Ryujinx
+# - Vita3K
# - XEMU
# - Yuzu
# - Tools
@@ -441,6 +442,7 @@ configurator_open_emulator_dialog() {
"Primehack" "Open the Metroid Prime emulator Primehack" \
"RPCS3" "Open the PS3 emulator RPCS3" \
"Ryujinx" "Open the Switch emulator Ryujinx" \
+ "Vita3K" "Open the PSVita emulator Vita3K" \
"XEMU" "Open the Xbox emulator XEMU" \
"Yuzu" "Open the Switch emulator Yuzu")
@@ -490,6 +492,10 @@ configurator_open_emulator_dialog() {
ryujinx-wrapper
;;
+ "Vita3K" )
+ Vita3K
+ ;;
+
"XEMU" )
xemu
;;