mirror of
https://github.com/KarnerF/SMPlusGui.git
synced 2026-10-06 06:00:20 +02:00
Initial release v1.0.0
This commit is contained in:
commit
bace39a2cc
12 files changed
+41615
No files matched your search
@@ -0,0 +1,2 @@
|
||||
*.elf
|
||||
*.o
|
||||
@@ -0,0 +1,33 @@
|
||||
ifdef PS5_PAYLOAD_SDK
|
||||
include $(PS5_PAYLOAD_SDK)/toolchain/prospero.mk
|
||||
else
|
||||
$(error PS5_PAYLOAD_SDK is undefined)
|
||||
endif
|
||||
|
||||
VERSION := 1.0.0
|
||||
TARGET := SMPlusGui_$(VERSION).elf
|
||||
CFLAGS += -Wall -g -I. \
|
||||
-DPLATFORM_PS5 \
|
||||
-DSMPLUS_VERSION=\"$(VERSION)\" \
|
||||
-DMG_ARCH=MG_ARCH_UNIX \
|
||||
-DMG_TLS=MG_TLS_NONE \
|
||||
-DMG_ENABLE_TCPIP=0 \
|
||||
-DMG_ENABLE_IPV6=0
|
||||
LDADD := -lSceIpmi -lSceAppInstUtil -lSceUserService -lSceSystemService -lSceNotification
|
||||
SRCS := main.c mongoose.c app_installer.c
|
||||
|
||||
PS5_HOST ?= ps5
|
||||
PS5_PORT ?= 9021
|
||||
|
||||
.PHONY: all clean test
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
$(TARGET): $(SRCS) mongoose_config.h mongoose.h
|
||||
$(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LDADD)
|
||||
|
||||
test: $(TARGET)
|
||||
$(PS5_DEPLOY) -h $(PS5_HOST) -p $(PS5_PORT) $(TARGET)
|
||||
|
||||
clean:
|
||||
rm -f SMPlusGui_*.elf
|
||||
@@ -0,0 +1,87 @@
|
||||
# SMPlusGui
|
||||
|
||||
A web-based configuration UI for [ShadowMountPlus](https://github.com/drakmor/ShadowMountPlus) running directly on the PS5 as a payload ELF.
|
||||
|
||||
Opens at **http://\<PS5-IP\>:7070** from any browser — PS5, phone, laptop.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Full ShadowMountPlus configuration** — all settings from one clean web interface
|
||||
- **Backup management** — create, restore, download, copy and move backups between internal storage and USB
|
||||
- **Multi-language UI** — German, English, French, Spanish + automatic PS5 system language detection
|
||||
- **USB detection** — automatically refreshes when a USB drive is plugged or unplugged
|
||||
- **Debug log viewer** — live log with category filters and clear function
|
||||
- **Responsive design** — works on PS5 browser, mobile phones, and desktop
|
||||
- **PS5 home screen tile** — installs a launcher icon for quick access (PPSX99998)
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- PS5 with a homebrew environment (e.g. via BD-JB or Y2JB)
|
||||
- [ShadowMountPlus](https://github.com/drakmor/ShadowMountPlus) installed and running
|
||||
- A payload loader such as [Payload Manager](https://github.com/itsPLK/ps5-payload-manager)
|
||||
|
||||
---
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
export PS5_PAYLOAD_SDK=/path/to/ps5-payload-sdk
|
||||
make
|
||||
```
|
||||
|
||||
Output: `SMPlusGui_1.0.0.elf`
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
1. Load `SMPlusGui_1.0.0.elf` via your payload loader
|
||||
2. Open `http://<PS5-IP>:7070` in any browser
|
||||
3. Configure ShadowMountPlus settings and press **Speichern**
|
||||
4. Use the **Backup** panel to manage configuration backups
|
||||
|
||||
The PS5 home screen tile is reinstalled on every launch to keep it at the front.
|
||||
|
||||
---
|
||||
|
||||
## Backup System
|
||||
|
||||
Backups are stored in `/data/SMPlusGui/backups/` on the PS5.
|
||||
USB backups go to `<USB>/SMPlusGui/` on the connected drive.
|
||||
|
||||
Per-backup operations (copy/move/restore/download) are available for both internal and USB backups.
|
||||
Bulk operations (copy all, move all, download all, delete all) are available in the section footer.
|
||||
|
||||
---
|
||||
|
||||
## Credits & Thanks
|
||||
|
||||
This project would not exist without the work of the following people:
|
||||
|
||||
- **[drakmor](https://github.com/drakmor)** — Creator of [ShadowMountPlus](https://github.com/drakmor/ShadowMountPlus), the mount manager this GUI is built for. Also author of [APR Emu](https://github.com/drakmor/ampr_emu) and `build_ampr_index.py`.
|
||||
|
||||
- **[itsPLK](https://github.com/itsPLK) / [najdek](https://github.com/najdek)** — [PS5 Payload Manager](https://github.com/itsPLK/ps5-payload-manager), which serves as the recommended payload loader for this ELF.
|
||||
|
||||
- **[juma-sayeh](https://github.com/juma-sayeh)** — [PS5 Game Compressor](https://github.com/juma-sayeh/PS5-Game-Compressor), a related PS5 tool in the same ecosystem.
|
||||
|
||||
- **[john-tornblom](https://github.com/john-tornblom)** — [PS5 Payload SDK](https://github.com/ps5-payload-dev) and various reference payloads that made this project possible.
|
||||
|
||||
- **[Cesanta](https://github.com/cesanta)** — [Mongoose](https://github.com/cesanta/mongoose) embedded HTTP server, used as the networking backbone.
|
||||
|
||||
- **[Lucide](https://lucide.dev)** — Open-source icon library (MIT license), providing the clean SVG icons used throughout the UI.
|
||||
|
||||
- **The PS5 homebrew community** — for continued research, testing, and support.
|
||||
|
||||
---
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This is unofficial homebrew software. Use at your own risk.
|
||||
Not affiliated with Sony Interactive Entertainment or any game publisher.
|
||||
|
||||
Config files are stored on the PS5 internal storage under `/data/SMPlusGui/`.
|
||||
Always keep backups of important configurations before making changes.
|
||||
@@ -0,0 +1,80 @@
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "app_installer.h"
|
||||
|
||||
/* Assets einbetten - exakt wie Payload Manager und Game Compressor */
|
||||
#define INCASSET(name, file) \
|
||||
__asm__(".section .rodata\n" \
|
||||
".global " #name "\n" \
|
||||
".global " #name "_size\n" \
|
||||
".align 16\n" #name ":\n" \
|
||||
".incbin \"" file "\"\n.L" #name "_end:\n" #name "_size:\n" \
|
||||
".quad .L" #name "_end - " #name "\n" \
|
||||
".previous\n"); \
|
||||
extern const uint8_t name[]; \
|
||||
extern const size_t name##_size
|
||||
|
||||
INCASSET(sm_param_json, "assets-app/param.json");
|
||||
INCASSET(sm_icon0_png, "assets-app/icon1.png");
|
||||
|
||||
/* Direkt verlinkt via -lSceAppInstUtil (wie SDK install_app Sample) */
|
||||
int sceAppInstUtilInitialize(void);
|
||||
int sceAppInstUtilTerminate(void);
|
||||
int sceAppInstUtilAppInstallAll(void *);
|
||||
int sceAppInstUtilAppUnInstall(const char *);
|
||||
|
||||
/* NID-basiert: sceAppInstUtilAppInstallTitleDir */
|
||||
#include <ps5/kernel.h>
|
||||
static int install_title_dir(const char *title_id, const char *dir) {
|
||||
int (*fn)(const char *, const char *, void *) = NULL;
|
||||
uint32_t handle = 0;
|
||||
if (kernel_dynlib_handle(-1, "libSceAppInstUtil.sprx", &handle) == 0)
|
||||
fn = (void *)kernel_dynlib_resolve(-1, handle, "Wudg3Xe3heE");
|
||||
if (fn) return fn(title_id, dir, NULL);
|
||||
return sceAppInstUtilAppInstallAll(NULL);
|
||||
}
|
||||
|
||||
#define TITLE_ID "PPSX99998"
|
||||
#define APP_ROOT "/user/app"
|
||||
#define MARKER "/data/shadowmount/launcher.ok"
|
||||
|
||||
static int write_file(const char *p, const uint8_t *d, size_t s) {
|
||||
FILE *f = fopen(p, "wb");
|
||||
if (!f) return -1;
|
||||
size_t w = fwrite(d, 1, s, f);
|
||||
fclose(f);
|
||||
return w == s ? 0 : -1;
|
||||
}
|
||||
|
||||
void smplus_install_if_needed(void) {
|
||||
if (sceAppInstUtilInitialize() != 0) return;
|
||||
|
||||
/* Always uninstall + reinstall: PS5 treats it as new install and pushes to front */
|
||||
sceAppInstUtilAppUnInstall(TITLE_ID);
|
||||
|
||||
char adir[256], sdir[256], par[256], ico[256];
|
||||
snprintf(adir, sizeof(adir), APP_ROOT "/%s", TITLE_ID);
|
||||
snprintf(sdir, sizeof(sdir), APP_ROOT "/%s/sce_sys", TITLE_ID);
|
||||
snprintf(par, sizeof(par), APP_ROOT "/%s/sce_sys/param.json", TITLE_ID);
|
||||
snprintf(ico, sizeof(ico), APP_ROOT "/%s/sce_sys/icon0.png", TITLE_ID);
|
||||
|
||||
mkdir(adir, 0755);
|
||||
mkdir(sdir, 0755);
|
||||
|
||||
if (write_file(par, sm_param_json, sm_param_json_size) != 0) goto done;
|
||||
if (write_file(ico, sm_icon0_png, sm_icon0_png_size) != 0) goto done;
|
||||
|
||||
if (install_title_dir(TITLE_ID, APP_ROOT "/") != 0) goto done;
|
||||
|
||||
mkdir("/data/shadowmount", 0755);
|
||||
write_file(MARKER, (const uint8_t *)"ok\n", 3);
|
||||
|
||||
|
||||
done:
|
||||
sceAppInstUtilTerminate();
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
#ifndef APP_INSTALLER_H
|
||||
#define APP_INSTALLER_H
|
||||
void smplus_install_if_needed(void);
|
||||
#endif
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"applicationCategoryType": 0,
|
||||
"titleId": "PPSX99998",
|
||||
"deeplinkUri": "http://127.0.0.1:7070/",
|
||||
"localizedParameters": {
|
||||
"defaultLanguage": "de-DE",
|
||||
"de-DE": {
|
||||
"titleName": "SMPlusGui"
|
||||
},
|
||||
"en-US": {
|
||||
"titleName": "SMPlusGui"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,578 @@
|
||||
/* Auto-generated i18n string table for SMPlusGui */
|
||||
/* To add a language: add column to STRINGS and increment LANG_COUNT */
|
||||
#pragma once
|
||||
|
||||
#define LANG_DE 0
|
||||
#define LANG_EN 1
|
||||
#define LANG_FR 2
|
||||
#define LANG_ES 3
|
||||
#define LANG_COUNT 4
|
||||
|
||||
typedef enum {
|
||||
LS_RUNNING = 0,
|
||||
LS_NOT_RUNNING = 1,
|
||||
LS_WARNING_SM = 2,
|
||||
LS_IMG_OVERRIDES = 3,
|
||||
LS_NOTIF_LANG = 4,
|
||||
LS_FORCE_HINT = 5,
|
||||
LS_KEEP_IMGS = 6,
|
||||
LS_SCAN_DEPTH = 7,
|
||||
LS_DEPTH_1 = 8,
|
||||
LS_DEPTH_2 = 9,
|
||||
LS_SCAN_PATHS = 10,
|
||||
LS_ADD_PATH = 11,
|
||||
LS_RM_MISSING = 12,
|
||||
LS_RM_DLC = 13,
|
||||
LS_DELAY_SEC = 14,
|
||||
LS_KSTUFF_TOG = 15,
|
||||
LS_KSTUFF_DLY = 16,
|
||||
LS_KSTUFF_NOPAUSE = 17,
|
||||
LS_KSTUFF_FMT = 18,
|
||||
LS_FAKELIB_HINT = 19,
|
||||
LS_PRIORITY = 20,
|
||||
LS_PRIO_GAME = 21,
|
||||
LS_PRIO_GLOBAL = 22,
|
||||
LS_FAKELIB_EXCL = 23,
|
||||
LS_EXFAT_BE = 24,
|
||||
LS_UFS_BE = 25,
|
||||
LS_BIND_ADDR = 26,
|
||||
LS_LOCAL_ONLY = 27,
|
||||
LS_ALL_IFACES = 28,
|
||||
LS_OR = 29,
|
||||
LS_MOUNTED_RW = 30,
|
||||
LS_SECTOR_FMT = 31,
|
||||
LS_ADD_ENTRY = 32,
|
||||
LS_ELF_NOT_FOUND = 33,
|
||||
LS_SELECT_SM = 34,
|
||||
LS_ERROR_STR = 35,
|
||||
LS_MANUAL = 36,
|
||||
LS_NOTIFS = 37,
|
||||
LS_LOADING = 38,
|
||||
LS_SAVE = 39,
|
||||
LS_RESTORE_DEF = 40,
|
||||
LS_CANCEL = 41,
|
||||
LS_SAVED = 42,
|
||||
LS_QUIET_MODE = 43,
|
||||
LS_READ_ONLY = 44,
|
||||
LS_MOUNT_DAMAGED = 45,
|
||||
LS_BATCH_REG = 46,
|
||||
LS_KSTUFF_PAUSE = 47,
|
||||
LS_CRASH_TUNE = 48,
|
||||
LS_EN_BACKPORT = 49,
|
||||
LS_EN_GLOBAL_FL = 50,
|
||||
LS_DEBUG_LOG = 51,
|
||||
LS_SCAN_INTV = 52,
|
||||
LS_PAUSE_IMG = 53,
|
||||
LS_PAUSE_DIR = 54,
|
||||
LS_LVD_EXFAT_S = 55,
|
||||
LS_LVD_UFS_S = 56,
|
||||
LS_LVD_PFS_S = 57,
|
||||
LS_MD_EXFAT_S = 58,
|
||||
LS_MD_UFS_S = 59,
|
||||
LS_PORT = 60,
|
||||
LS_FL_PATH = 61,
|
||||
LS_STAB_WAIT = 62,
|
||||
LS_RESET_CONFIRM = 63,
|
||||
LS_MIN_VER = 64,
|
||||
LS_SCANPATH_HINT = 65,
|
||||
LS_SECTOR_HINT = 66,
|
||||
LS_MANUAL_HINT = 67,
|
||||
LS_FAN_HINT = 68,
|
||||
LS_PS5_NO_DL = 69,
|
||||
LS_PS5_NO_UL = 70,
|
||||
LS_BAK_NAME_PH = 71,
|
||||
LS_USB_NO_DRIVE = 72,
|
||||
LS_USB_EXPORT_OK = 73,
|
||||
LS_USB_IMPORT_OK = 74,
|
||||
LS_IMPORT_OK = 75,
|
||||
LS_USB_EXPORT = 76,
|
||||
LS_USB_IMPORT = 77,
|
||||
LS_DL_CURRENT = 78,
|
||||
LS_BAK_DL_ALL = 79,
|
||||
LS_BAK_USB_ALL = 80,
|
||||
LS_BAK_RESTORE = 81,
|
||||
LS_BAK_DELETE = 82,
|
||||
LS_BAK_DL = 83,
|
||||
LS_BAK_CREATE = 84,
|
||||
LS_BAK_DEL_ALL = 85,
|
||||
LS_CURR_CONFIG = 86,
|
||||
LS_BAK_NO_BAKS = 87,
|
||||
LS_IMPORT_PC = 88,
|
||||
LS_BAK_IMPORT_PC = 89,
|
||||
LS_BAD_CONFIG = 90,
|
||||
LS_NO_USB_CONFIG = 91,
|
||||
LS_USB_NO_BAKS = 92,
|
||||
LS_CONFIRM_RESTORE = 93,
|
||||
LS_CONFIRM_DELETE = 94,
|
||||
LS_CONFIRM_DEL_ALL = 95,
|
||||
LS_USB_RESTORE_BAK = 96,
|
||||
LS_BAK_SKIPPED = 97,
|
||||
LS_COPY_TO_LOCAL = 98,
|
||||
LS_MOVE_TO_USB = 99,
|
||||
LS_DEL_USB_BAK = 100,
|
||||
LS_COPY_ALL_LOCAL = 101,
|
||||
LS_MOVE_ALL_USB = 102,
|
||||
LS_CONFIRM_DEL_USB = 103,
|
||||
LS_CONFIRM_MOVE = 104,
|
||||
LS_INTERN_BAKS = 105,
|
||||
LS_USB_BAKS = 106,
|
||||
LS_MOVE_FROM_USB = 107,
|
||||
LS_MOVE_ALL_LOCAL = 108,
|
||||
LS_CLEAR_LOG = 109,
|
||||
LS_COUNT = 110
|
||||
} LangStrId;
|
||||
|
||||
static int ui_lang = LANG_EN;
|
||||
|
||||
static const char *lang_table[LANG_COUNT][LS_COUNT] = {
|
||||
/* DE */ {
|
||||
"laeuft",
|
||||
"nicht aktiv",
|
||||
"Warnung: ShadowMount",
|
||||
"Image-Overrides",
|
||||
"Sprache der Benachrichtigungen",
|
||||
"Versucht Images trotzdem zu mounten wenn das Dateisystem Fehler hat. Kann zu Abstürzen führen.",
|
||||
"Images permanent eingebunden lassen",
|
||||
"Scan-Tiefe",
|
||||
"nur erste Unterordner-Ebene",
|
||||
"auch eine weitere Ebene tiefer",
|
||||
"Scan-Pfade",
|
||||
"Pfad hinzufügen",
|
||||
"Fehlende Games entfernen",
|
||||
"Games mit installiertem DLC entfernen",
|
||||
"Verzögerung (Sek.)",
|
||||
"Auto-Toggle pausiert kstuff während Spielen um Konflikte zu vermeiden. Autotune erkennt kstuff-bedingte Abstürze und erhöht den Pause-Delay automatisch.",
|
||||
"Zeit bis kstuff nach Spielstart reaktiviert wird. Image=25s Direct=15s Standard.",
|
||||
"kstuff bleibt aktiv wenn dieses Spiel startet",
|
||||
"Titel-ID : eigener Pause-Delay in Sekunden",
|
||||
"Fakelib ersetzt PS5-Systemdateien für ein Spiel (z.B. Backport-Bibliotheken). Nur aktivieren wenn Fakelib-Dateien vorhanden sind.",
|
||||
"Priorität",
|
||||
"game-spezifisch hat Priorität",
|
||||
"globale Fakelib hat Priorität",
|
||||
"Global-Fakelib für diesen Titel deaktiviert",
|
||||
"exFAT Backend",
|
||||
"UFS Backend",
|
||||
"Bind-Adresse",
|
||||
"nur lokal (sicher)",
|
||||
"alle Interfaces (Fernzugriff)",
|
||||
"oder",
|
||||
"wird als Read-Write gemountet",
|
||||
"Dateiname des Images : Sektorgrösse in Bytes",
|
||||
"Eintrag hinzufügen",
|
||||
"SM ELF nicht gefunden",
|
||||
"ShadowMount auswaehlen",
|
||||
"Fehler",
|
||||
"Manuell",
|
||||
"Benachrichtigungen",
|
||||
"Lade...",
|
||||
"Speichern",
|
||||
"Standardwerte wiederherstellen",
|
||||
"Abbrechen",
|
||||
"Gespeichert",
|
||||
"Quiet Mode",
|
||||
"Nur lesend mounten",
|
||||
"Beschädigte Dateisysteme mounten",
|
||||
"Batch App-Registrierung (nur bei Bedarf auf FW 12+)",
|
||||
"kstuff bei Game-Start pausieren",
|
||||
"Crash-Erkennung & Autotune",
|
||||
"Backport Fakelib aktivieren",
|
||||
"Globale Fakelib aktivieren",
|
||||
"Debug-Logging",
|
||||
"Scan-Intervall (Sek.)",
|
||||
"Pause-Delay Image (Sek.)",
|
||||
"Pause-Delay Direct (Sek.)",
|
||||
"lvd exFAT-Sektorgrösse",
|
||||
"lvd UFS-Sektorgrösse",
|
||||
"lvd PFS-Sektorgrösse",
|
||||
"md exFAT-Sektorgrösse",
|
||||
"md UFS-Sektorgrösse",
|
||||
"Port",
|
||||
"Pfad zur globalen Fakelib",
|
||||
"stability_wait_s (Sek. bis Datei stabil)",
|
||||
"Alle Einstellungen auf Standardwerte zuruecksetzen und speichern?",
|
||||
"Mindestversion 1.6beta16 empfohlen.",
|
||||
"Sobald mindestens ein Pfad gesetzt ist, werden nur diese + eingebaute Pfade gescannt.",
|
||||
"Sektorgrössen in Bytes. Standardwerte passen für die meisten Images (nur ändern wenn Spiel nicht startet).",
|
||||
"Für Games außerhalb der normalen Scan-Pfade. SM überwacht Änderungen sofort.",
|
||||
"Zieltemperatur für den PS5-Lüfter bei Spielstart. \"auto\" lässt das System entscheiden.",
|
||||
"Download wird auf PS5 nicht untersützt.",
|
||||
"Upload wird auf PS5 nicht unterstützt.",
|
||||
"Name (optional)",
|
||||
"Kein USB-Laufwerk gefunden.",
|
||||
"Auf USB gespeichert.",
|
||||
"Von USB importiert.",
|
||||
"Import erfolgreich.",
|
||||
"Auf USB",
|
||||
"Von USB",
|
||||
"Config herunterladen",
|
||||
"Alle herunterladen",
|
||||
"Alle auf USB",
|
||||
"Wiederherstellen",
|
||||
"L\u00f6schen",
|
||||
"Herunterladen (PC)",
|
||||
"Erstellen",
|
||||
"Alle l\u00f6schen",
|
||||
"Aktuelle Config",
|
||||
"Noch keine Backups.",
|
||||
"Import (PC)",
|
||||
"Backup importieren",
|
||||
"Ung\u00fcltige Datei (kein ShadowMount-Config).",
|
||||
"Keine config.ini auf USB gefunden.",
|
||||
"Keine Backups auf USB gefunden.",
|
||||
"wiederherstellen?",
|
||||
"l\u00f6schen?",
|
||||
"Alle Backups l\u00f6schen?",
|
||||
"Backup von USB wiederherstellen",
|
||||
"ung\u00fcltig",
|
||||
"Lokal kopieren",
|
||||
"Nach USB verschieben",
|
||||
"Von USB l\u00f6schen",
|
||||
"Intern kopieren",
|
||||
"Alle nach USB",
|
||||
"Von USB l\u00f6schen?",
|
||||
"Verschieben? Quelle wird nach dem Kopieren gel\u00f6scht.",
|
||||
"Interne Backups",
|
||||
"USB-Backups",
|
||||
"Lokal verschieben",
|
||||
"Intern verschieben",
|
||||
"Log l\u00f6schen",
|
||||
},
|
||||
/* EN */ {
|
||||
"running",
|
||||
"not running",
|
||||
"Warning: ShadowMount",
|
||||
"Image Overrides",
|
||||
"Notification Language",
|
||||
"Tries to mount images even when the filesystem has errors. May cause crashes.",
|
||||
"Keep images mounted",
|
||||
"Scan depth",
|
||||
"first subdirectory level only",
|
||||
"one extra nesting level deep",
|
||||
"Scan Paths",
|
||||
"Add path",
|
||||
"Remove missing games",
|
||||
"Remove games with installed DLC",
|
||||
"Delay (sec)",
|
||||
"Auto-toggle pauses kstuff during games to avoid conflicts. Autotune detects kstuff-caused crashes and increases the pause delay automatically.",
|
||||
"Time before kstuff reactivates after game launch. Image=25s Direct=15s default.",
|
||||
"kstuff stays active when this game launches",
|
||||
"Title-ID : custom pause delay seconds",
|
||||
"Fakelib overrides PS5 system files for games (e.g. backport libraries). Only enable if fakelib files are present.",
|
||||
"Priority",
|
||||
"game-specific takes priority",
|
||||
"global fakelib takes priority",
|
||||
"Disable global fakelib for this title",
|
||||
"exFAT Backend",
|
||||
"UFS Backend",
|
||||
"Bind address",
|
||||
"local only (safe)",
|
||||
"all interfaces (remote access)",
|
||||
"or",
|
||||
"mounted as read-write",
|
||||
"image filename : sector size in bytes",
|
||||
"Add entry",
|
||||
"SM ELF not found",
|
||||
"Select ShadowMount",
|
||||
"Error",
|
||||
"Manual",
|
||||
"Notifications",
|
||||
"Loading...",
|
||||
"Save",
|
||||
"Restore defaults",
|
||||
"Cancel",
|
||||
"Saved",
|
||||
"Quiet Mode",
|
||||
"Read-only mounts",
|
||||
"Mount damaged filesystems",
|
||||
"Batch app registration (only if needed on FW 12+)",
|
||||
"Pause kstuff on game launch",
|
||||
"Crash detection & autotune",
|
||||
"Enable backport fakelib",
|
||||
"Enable global fakelib",
|
||||
"Debug Logging",
|
||||
"Scan interval (sec)",
|
||||
"Pause delay image (sec)",
|
||||
"Pause delay direct (sec)",
|
||||
"lvd exFAT sector size",
|
||||
"lvd UFS sector size",
|
||||
"lvd PFS sector size",
|
||||
"md exFAT sector size",
|
||||
"md UFS sector size",
|
||||
"Port",
|
||||
"Global fakelib path",
|
||||
"stability_wait_s (sec until file stable)",
|
||||
"Reset all settings to defaults and save?",
|
||||
"Minimum version 1.6beta16 recommended.",
|
||||
"Once at least one path is set, only these + built-in paths are scanned (default list replaced).",
|
||||
"Sector sizes in bytes. Default values suit most images (only change if game fails to launch).",
|
||||
"For games outside normal scan paths. SM detects changes immediately.",
|
||||
"Target temperature for PS5 fan at game launch. \"auto\" lets the system decide.",
|
||||
"Download not supported on PS5.",
|
||||
"Upload not supported on PS5.",
|
||||
"Name (optional)",
|
||||
"No USB drive found.",
|
||||
"Saved to USB.",
|
||||
"Imported from USB.",
|
||||
"Import successful.",
|
||||
"Copy to USB",
|
||||
"From USB",
|
||||
"Download config",
|
||||
"Download all",
|
||||
"All to USB",
|
||||
"Restore",
|
||||
"Delete",
|
||||
"Download (PC)",
|
||||
"Create",
|
||||
"Delete all",
|
||||
"Current Config",
|
||||
"No backups yet.",
|
||||
"Import (PC)",
|
||||
"Import backup (PC)",
|
||||
"Invalid file (not a ShadowMount config).",
|
||||
"No config.ini found on USB.",
|
||||
"No backups found on USB.",
|
||||
"restore?",
|
||||
"delete?",
|
||||
"Delete all backups?",
|
||||
"Restore backup from USB",
|
||||
"invalid",
|
||||
"Copy local",
|
||||
"Move to USB",
|
||||
"Delete from USB",
|
||||
"Copy local",
|
||||
"Move all to USB",
|
||||
"Delete from USB?",
|
||||
"Move? Source will be deleted after copying.",
|
||||
"Local Backups",
|
||||
"USB Backups",
|
||||
"Move local",
|
||||
"Move local",
|
||||
"Clear log",
|
||||
},
|
||||
/* FR */ {
|
||||
"actif",
|
||||
"inactif",
|
||||
"Avertissement : ShadowMount",
|
||||
"Image-Overrides",
|
||||
"Langue des notifications",
|
||||
"Tente de monter les images même en cas d'erreurs. Peut provoquer des plantages.",
|
||||
"Garder les images montées",
|
||||
"Profondeur d'analyse",
|
||||
"premier niveau uniquement",
|
||||
"un niveau supplémentaire",
|
||||
"Chemins d'analyse",
|
||||
"Ajouter un chemin",
|
||||
"Supprimer les jeux manquants",
|
||||
"Supprimer les jeux avec DLC installé",
|
||||
"Délai (s)",
|
||||
"Le basculement auto met kstuff en pause pendant les jeux. L'autotune détecte les plantages et augmente le délai automatiquement.",
|
||||
"Temps avant la réactivation de kstuff. Image=25s Direct=15s par défaut.",
|
||||
"kstuff reste actif quand ce jeu démarre",
|
||||
"ID de titre : délai de pause personnalisé en secondes",
|
||||
"Fakelib remplace les fichiers système PS5 pour les jeux. N'activer que si des fichiers fakelib sont présents.",
|
||||
"Priorité",
|
||||
"le jeu spécifique est prioritaire",
|
||||
"la fakelib globale est prioritaire",
|
||||
"Désactiver la fakelib globale pour ce titre",
|
||||
"Backend exFAT",
|
||||
"Backend UFS",
|
||||
"Adresse d'écoute",
|
||||
"local uniquement (sécurisé)",
|
||||
"toutes les interfaces (accès distant)",
|
||||
"ou",
|
||||
"monté en lecture-écriture",
|
||||
"nom du fichier image : taille de secteur en octets",
|
||||
"Ajouter une entrée",
|
||||
"SM ELF introuvable",
|
||||
"Sélectionner ShadowMount",
|
||||
"Erreur",
|
||||
"Manuel",
|
||||
"Notifications",
|
||||
"Chargement...",
|
||||
"Enregistrer",
|
||||
"Restaurer les valeurs",
|
||||
"Annuler",
|
||||
"Enregistré",
|
||||
"Mode silencieux",
|
||||
"Montage en lecture seule",
|
||||
"Monter les systèmes de fichiers endommagés",
|
||||
"Enregistrement par lot (seulement si nécessaire sur FW 12+)",
|
||||
"Mettre kstuff en pause au lancement du jeu",
|
||||
"Détection de plantage & autotune",
|
||||
"Activer la fakelib de backport",
|
||||
"Activer la fakelib globale",
|
||||
"Journal de débogage",
|
||||
"Intervalle d'analyse (s)",
|
||||
"Délai de pause image (s)",
|
||||
"Délai de pause direct (s)",
|
||||
"lvd exFAT sector size",
|
||||
"lvd UFS sector size",
|
||||
"lvd PFS sector size",
|
||||
"md exFAT sector size",
|
||||
"md UFS sector size",
|
||||
"Port",
|
||||
"Chemin de la fakelib globale",
|
||||
"stability_wait_s (s jusqu'à stabilité)",
|
||||
"Réinitialiser tous les paramètres aux valeurs par défaut ?",
|
||||
"Version minimale 1.6beta16 recommandée.",
|
||||
"Dès qu'un chemin est défini, seuls ces chemins + les intégrés sont analysés.",
|
||||
"Tailles de secteur en octets. Les valeurs par défaut conviennent à la plupart des images.",
|
||||
"Pour les jeux hors des chemins normaux. SM détecte les changements immédiatement.",
|
||||
"Température cible du ventilateur PS5 au lancement. \"auto\" laisse le système décider.",
|
||||
"Téléchargement non pris en charge sur PS5.",
|
||||
"Téléversement non pris en charge sur PS5.",
|
||||
"Nom (optionnel)",
|
||||
"Aucun lecteur USB trouvé.",
|
||||
"Enregistré sur USB.",
|
||||
"Importé depuis USB.",
|
||||
"Importation réussie.",
|
||||
"Copier sur USB",
|
||||
"Importer depuis USB",
|
||||
"Télécharger config",
|
||||
"Tout télécharger",
|
||||
"Tout copier sur USB",
|
||||
"Restaurer",
|
||||
"Supprimer",
|
||||
"Télécharger (PC)",
|
||||
"Créer",
|
||||
"Tout supprimer",
|
||||
"Config actuelle",
|
||||
"Aucune sauvegarde.",
|
||||
"Importer (PC)",
|
||||
"Importer sauvegarde (PC)",
|
||||
"Fichier invalide (pas une config ShadowMount).",
|
||||
"Pas de config.ini trouv\u00e9 sur USB.",
|
||||
"Aucune sauvegarde trouv\u00e9e sur USB.",
|
||||
"restaurer ?",
|
||||
"supprimer ?",
|
||||
"Supprimer toutes les sauvegardes ?",
|
||||
"Restaurer sauvegarde (USB)",
|
||||
"invalides",
|
||||
"Copier local",
|
||||
"D\u00e9placer vers USB",
|
||||
"Supprimer de USB",
|
||||
"Copier local",
|
||||
"Tout vers USB",
|
||||
"Supprimer de USB ?",
|
||||
"D\u00e9placer ? La source sera supprim\u00e9e apr\u00e8s la copie.",
|
||||
"Sauvegardes USB",
|
||||
"D\u00e9placer local",
|
||||
"D\u00e9placer local",
|
||||
"Cr\u00e9er sur USB",
|
||||
"Effacer le journal",
|
||||
},
|
||||
/* ES */ {
|
||||
"activo",
|
||||
"inactivo",
|
||||
"Advertencia: ShadowMount",
|
||||
"Reemplazos de imagen",
|
||||
"Idioma de notificaciones",
|
||||
"Intenta montar imágenes incluso con errores del sistema de archivos. Puede causar cuelgues.",
|
||||
"Mantener imágenes montadas",
|
||||
"Profundidad de análisis",
|
||||
"solo el primer nivel",
|
||||
"un nivel adicional",
|
||||
"Rutas de análisis",
|
||||
"Agregar ruta",
|
||||
"Eliminar juegos faltantes",
|
||||
"Eliminar juegos con DLC instalado",
|
||||
"Retraso (s)",
|
||||
"El basculamiento auto pausa kstuff durante los juegos. El autotune detecta cuelgues y aumenta el retraso automáticamente.",
|
||||
"Tiempo hasta la reactivación de kstuff. Image=25s Direct=15s predeterminado.",
|
||||
"kstuff permanece activo cuando este juego se inicia",
|
||||
"ID de título : retraso de pausa personalizado en segundos",
|
||||
"Fakelib reemplaza los archivos del sistema PS5 para los juegos. Solo activar si hay archivos fakelib presentes.",
|
||||
"Prioridad",
|
||||
"el juego específico tiene prioridad",
|
||||
"la fakelib global tiene prioridad",
|
||||
"Deshabilitar fakelib global para este título",
|
||||
"Backend exFAT",
|
||||
"Backend UFS",
|
||||
"Dirección de escucha",
|
||||
"solo local (seguro)",
|
||||
"todas las interfaces (acceso remoto)",
|
||||
"o",
|
||||
"montado en lectura-escritura",
|
||||
"nombre de archivo de imagen : tamaño de sector en bytes",
|
||||
"Agregar entrada",
|
||||
"SM ELF no encontrado",
|
||||
"Seleccionar ShadowMount",
|
||||
"Error",
|
||||
"Manual",
|
||||
"Notificaciones",
|
||||
"Cargando...",
|
||||
"Guardar",
|
||||
"Restaurar valores",
|
||||
"Cancelar",
|
||||
"Guardado",
|
||||
"Modo silencioso",
|
||||
"Montaje de solo lectura",
|
||||
"Montar sistemas de archivos dañados",
|
||||
"Registro por lotes (solo si es necesario en FW 12+)",
|
||||
"Pausar kstuff al iniciar el juego",
|
||||
"Detección de cuelgues & autotune",
|
||||
"Activar fakelib de backport",
|
||||
"Activar fakelib global",
|
||||
"Registro de depuración",
|
||||
"Intervalo de análisis (s)",
|
||||
"Retraso de pausa imagen (s)",
|
||||
"Retraso de pausa directo (s)",
|
||||
"lvd exFAT sector size",
|
||||
"lvd UFS sector size",
|
||||
"lvd PFS sector size",
|
||||
"md exFAT sector size",
|
||||
"md UFS sector size",
|
||||
"Puerto",
|
||||
"Ruta de la fakelib global",
|
||||
"stability_wait_s (s hasta estabilidad)",
|
||||
"¿Restablecer todos los ajustes a los valores predeterminados?",
|
||||
"Versión mínima 1.6beta16 recomendada.",
|
||||
"Si hay una ruta, solo esas + las integradas serán analizadas.",
|
||||
"Tamaños de sector en bytes. Valores predeterminados para la mayoría de las imágenes.",
|
||||
"Para juegos fuera de las rutas normales. SM detecta los cambios de inmediato.",
|
||||
"Temperatura objetivo del ventilador PS5 al inicio. \"auto\" deja que el sistema decida.",
|
||||
"Descarga no compatible en PS5.",
|
||||
"Subida no compatible en PS5.",
|
||||
"Nombre (opcional)",
|
||||
"No se encontró unidad USB.",
|
||||
"Guardado en USB.",
|
||||
"Importado desde USB.",
|
||||
"Importación exitosa.",
|
||||
"A USB",
|
||||
"Desde USB",
|
||||
"Descargar config",
|
||||
"Descargar todo",
|
||||
"Copiar todo a USB",
|
||||
"Restaurar",
|
||||
"Eliminar",
|
||||
"Descargar (PC)",
|
||||
"Crear",
|
||||
"Eliminar todo",
|
||||
"Config actual",
|
||||
"Sin copias de seguridad.",
|
||||
"Importar (PC)",
|
||||
"Importar copia (PC)",
|
||||
"Archivo inv\u00e1lido (no es config de ShadowMount).",
|
||||
"No hay config.ini en USB.",
|
||||
"Sin copias de seguridad en USB.",
|
||||
"¿restaurar?",
|
||||
"\u00bfeliminar?",
|
||||
"\u00bfEliminar todas las copias?",
|
||||
"Restaurar copia (USB)",
|
||||
"inv\u00e1lidos",
|
||||
"Copiar local",
|
||||
"Mover a USB",
|
||||
"Eliminar de USB",
|
||||
"Copiar local",
|
||||
"Mover todo a USB",
|
||||
"\u00bfEliminar de USB?",
|
||||
"\u00bfMover? El origen se eliminar\u00e1 tras copiar.",
|
||||
"Copias locales",
|
||||
"Copias USB",
|
||||
"Mover local",
|
||||
"Mover local",
|
||||
"Borrar log",
|
||||
}
|
||||
};
|
||||
|
||||
#define L(id) lang_table[ui_lang][id]
|
||||
+32310
File diff suppressed because it is too large.
Load diff
+6015
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,3 @@
|
||||
#ifndef MONGOOSE_CONFIG_H
|
||||
#define MONGOOSE_CONFIG_H
|
||||
#endif
|
||||
Reference in new issue
Block a user