mirror of
https://github.com/par274/sharpemu.git
synced 2026-08-28 12:20:43 +08:00
7521295ee1
* [Codec/Native] Real H.264 decode for sceVideodec2, fix TLS loader missing the main module sceVideodec2 was a capability-only stub: the game's video pipeline worked end-to-end but never produced a picture, so intro/cinematic videos stayed black even though playback "completed" without errors (confirmed on Ghost of Yotei's intro cinematic). - Videodec2Decoder: owns an FFmpeg H.264 session per decoder handle, running decode and presentation pacing on their own threads (never the guest thread) so a whole clip isn't decoded faster than it can be displayed. Converts to BGRA and submits straight to VulkanVideoPresenter, bypassing guest memory the same way the existing Bink2 path does. - Videodec2Exports: wires the real decoder into sceVideodec2CreateDecoder/Decode/Flush/Reset/DeleteDecoder, falling back to the original no-picture stub whenever FFmpeg is unavailable or a given decoder failed to open. - VulkanVideoPresenter: decoded frames were being dropped under a single "latest wins" slot the render loop didn't always poll in time before the next frame overwrote it. Queues pending video presentations the same way guest-image flips already are. - DirectExecutionBackend: the TLS load patcher's one-shot scan missed the main game module when the entry point resolves to a separate bootstrap allocation, and never re-scanned lazily-committed pages patched in afterward -- both left FS:[0] TLS loads unpatched, causing an early mutex-spin boot stall (reproduced on Demon's Souls: stuck at import #256). Now scans both the entry point's own allocation and the standard PS5/PS4 image base, and re-scans each newly committed executable range as it's touched. * [GUI] Add a toggle for SHARPEMU_FORCE_SUBMIT_ORPHAN_PREAMBLES This flag already existed as an AGC workaround (forces queued GPU command-buffer preambles through when their target queue never picks them up, unblocking titles stuck on a WAIT_REG_MEM that never signals) but was only reachable by setting the environment variable by hand. Expose it as a checkbox next to the other env toggles, in both the global Options panel and the per-game settings panel, so it can be turned on for a specific title without touching a shell. * [GUI] Add remaining language translations for the new env toggle The previous commit only added the new key to en.json/fr.json, relying on Localization's runtime fallback to English -- but LocalizationTests.EmbeddedLanguages_ContainEveryEnglishOptionsKey requires every Options.* key to exist in every embedded language file, which broke CI on all three build jobs. Fills in the remaining 13 languages.
214 lines
12 KiB
JSON
214 lines
12 KiB
JSON
{
|
||
"_languageName": "Italiano",
|
||
|
||
"Page.Library": "Libreria",
|
||
"Page.Options": "Opzioni",
|
||
"Page.GameCount.One": "1 gioco",
|
||
"Page.GameCount.Other": "{0} giochi",
|
||
|
||
"Library.SearchWatermark": "Cerca nella libreria…",
|
||
"Library.AddFolder": "Aggiungi cartella",
|
||
"Library.OpenFile": "Apri file…",
|
||
|
||
"Library.Context.Launch": "Avvia",
|
||
"Library.Context.OpenFolder": "Apri cartella gioco",
|
||
"Library.Context.CopyPath": "Copia percorso",
|
||
"Library.Context.CopyTitleId": "Copia ID titolo",
|
||
"Library.Context.Remove": "Rimuovi dalla libreria",
|
||
|
||
"Library.Empty.Title": "La tua libreria è vuota",
|
||
"Library.Empty.Hint": "Aggiungi la cartella che contiene i tuoi giochi per partire.",
|
||
"Library.Empty.SearchTitle": "Nessun gioco corrisponde alla ricerca",
|
||
"Library.Empty.SearchHint": "Nulla nella libreria corrisponde a “{0}”.",
|
||
"Library.Empty.AddFolder": "+ Aggiungi cartella giochi",
|
||
|
||
"Library.Loading": "Caricamento libreria…",
|
||
"Library.Stat.Version": "Versione",
|
||
"Library.Stat.Installed": "Installato",
|
||
"Library.Stat.TitleId": "ID titolo",
|
||
"Common.Back": "Indietro",
|
||
|
||
"Options.General": "Generale",
|
||
"Options.Logging": "Log",
|
||
"Options.Section.Emulation": "EMULAZIONE",
|
||
"Options.Section.Logging": "LOG",
|
||
"Options.Section.Launcher": "LAUNCHER",
|
||
|
||
"Options.CpuEngine.Label": "CPU engine",
|
||
"Options.CpuEngine.Desc": "Motore di esecuzione utilizzato per eseguire il codice del gioco.",
|
||
"Options.CpuEngine.Native": "Nativo",
|
||
|
||
"Options.Strict.Label": "Risoluzione rigorosa dynlib",
|
||
"Options.Strict.Desc": "Interrompi l'avvio quando un simbolo importato non può essere trovato.",
|
||
|
||
"Options.LogLevel.Label": "Livello Log",
|
||
"Options.LogLevel.Desc": "Livello di dettaglio dell'output console dell'emulatore.",
|
||
"Options.LogLevel.Trace": "Trace",
|
||
"Options.LogLevel.Debug": "Debug",
|
||
"Options.LogLevel.Info": "Info",
|
||
"Options.LogLevel.Warning": "Warning",
|
||
"Options.LogLevel.Error": "Error",
|
||
"Options.LogLevel.Critical": "Critical",
|
||
|
||
"Options.TraceImports.Label": "Limite tracciamento import",
|
||
"Options.TraceImports.Desc": "Traccia i primi N import per modulo (0 = disattivato).",
|
||
|
||
|
||
"Options.LogToFile.Label": "Salva log su file",
|
||
"Options.LogToFile.Desc": "Duplica l'output dell'emulatore in un file di log.",
|
||
|
||
|
||
"Options.LogFilePath.Label": "Percorso file di log",
|
||
"Options.LogFilePath.Default": "Nessun percorso personalizzato — i log vengono salvati in user/logs accanto all'emulatore.",
|
||
"Options.LogFilePath.Select": "Seleziona…",
|
||
|
||
"Options.OverrideLogFile.Label": "Sovrascrivi file di log",
|
||
"Options.OverrideLogFile.Desc": "Usa esattamente il percorso specificato invece di aggiungere Title ID e timestamp.",
|
||
|
||
|
||
"Options.TitleMusic.Label": "Musica del titolo",
|
||
"Options.TitleMusic.Desc": "Riproduci in loop la musica di anteprima del gioco selezionato nella libreria.",
|
||
|
||
"Options.Discord.Label": "Presenza Discord",
|
||
"Options.Discord.Desc": "Mostra il gioco in esecuzione sul tuo profilo Discord.",
|
||
|
||
"Options.Language.Label": "Lingua dell'emulatore",
|
||
"Options.Language.Desc": "Lingua utilizzata in tutto il launcher. Viene applicata immediatamente.",
|
||
"Options.DefaultProfile.Label": "Nome profilo predefinito",
|
||
"Options.DefaultProfile.Desc": "Nome usato quando un gioco richiede l'inserimento di testo. Il valore predefinito è Sharp.",
|
||
|
||
"Common.On": "On",
|
||
"Common.Off": "Off",
|
||
|
||
"Console.Title": "CONSOLE",
|
||
"Console.SearchWatermark": "Cerca...",
|
||
"Console.AutoScroll": "Scorrimento automatico",
|
||
"Console.Split": "Dividi",
|
||
"Console.Copy": "Copia",
|
||
"Console.Clear": "Cancella",
|
||
"Console.WindowTitle": "Console SharpEmu",
|
||
|
||
"Launch.NoGameSelected": "Nessun gioco selezionato",
|
||
"Launch.NoGameHint": "Scegli un gioco dalla libreria, oppure apri direttamente un eboot.bin.",
|
||
"Launch.Idle": "Inattivo",
|
||
"Launch.Console": "≡ Console",
|
||
"Launch.Launch": "▶ Avvia",
|
||
"Launch.Stop": "■ Ferma",
|
||
"Launch.Running": "In esecuzione — {0}",
|
||
"Launch.Stopping": "Arresto in corso…",
|
||
"Launch.Exited": "Terminato con codice {0} ({1})",
|
||
"Launch.ExeNotFound": "Eseguibile SharpEmu non trovato. Compila prima il progetto SharpEmu.CLI (dotnet build).",
|
||
"Launch.LogFile": "File di log: {0}",
|
||
"Launch.Command": "$ SharpEmu {0}",
|
||
"Launch.StartFailed": "Impossibile avviare l'emulatore: {0}",
|
||
"Launch.ProcessExited": "Processo terminato con codice {0} ({1}).",
|
||
|
||
|
||
"Exit.Ok": "OK",
|
||
"Exit.InvalidArguments": "argomenti non validi",
|
||
"Exit.EbootNotFound": "eboot non trovato",
|
||
"Exit.RuntimeException": "errore di runtime",
|
||
"Exit.EmulationError": "errore di emulazione",
|
||
"Exit.Unknown": "sconosciuto",
|
||
|
||
|
||
"Status.EmulatorLocating": "Emulatore: ricerca in corso…",
|
||
"Status.EmulatorPath": "Emulatore: {0}",
|
||
"Status.EmulatorNotFound": "Emulatore: eseguibile SharpEmu non trovato — compila prima SharpEmu.CLI.",
|
||
"Status.ScanningLibrary": "Scansione della libreria…",
|
||
"Status.AddFolderPrompt": "Aggiungi una cartella di giochi per popolare la libreria.",
|
||
"Status.LibraryScanned": "Libreria scansionata: {0} gioco/giochi in {1} cartella/e.",
|
||
"Status.CouldNotOpenFolder": "Impossibile aprire la cartella: {0}",
|
||
"Status.CopiedToClipboard": "{0} copiato negli appunti.",
|
||
"Status.RemovedFromLibrary": "“{0}” rimosso dalla libreria. Riaggiungi la sua cartella per ripristinarlo.",
|
||
"Status.Running": "In esecuzione: {0}",
|
||
"Status.Stopping": "Arresto in corso…",
|
||
"Status.Idle": "Inattivo",
|
||
|
||
"Clipboard.Path": "Percorso",
|
||
"Clipboard.TitleId": "ID Titolo",
|
||
|
||
"Discord.Playing": "Sta giocando a {0}",
|
||
"Discord.Browsing": "Sta esplorando la libreria",
|
||
|
||
"Dialog.ChooseGameFolder": "Scegli una cartella contenente giochi",
|
||
"Dialog.OpenExecutable": "Apri un eseguibile da avviare",
|
||
"Dialog.PsExecutables": "Eseguibili PS",
|
||
"Dialog.SaveLogFile": "Scegli dove salvare il file di log",
|
||
"Dialog.PlainTextFiles": "File di testo semplice",
|
||
"Dialog.LogFiles": "File di log",
|
||
|
||
"Library.Context.GameSettings": "Impostazioni del gioco…",
|
||
"Options.Env.Tab": "Ambiente",
|
||
"Options.Section.Environment": "VARIABILI D'AMBIENTE",
|
||
"Options.Env.Desc": "Opzioni passate all'emulatore come variabili d'ambiente all'avvio.",
|
||
"Options.Env.Bthid.Desc": "Segnala il Bluetooth HID come non disponibile per i titoli il cui middleware volante/FFB attende all'infinito.\nNormalmente lascialo disattivato. Alcuni titoli si bloccano quando l'inizializzazione fallisce.",
|
||
"Options.Env.LoopGuard.Desc": "Non forzare la chiusura dei titoli che ripetono la stessa chiamata troppo a lungo.\nProvalo quando un gioco si chiude da solo durante il caricamento.",
|
||
"Options.Env.WritableApp0.Desc": "Consenti ai titoli di creare e scrivere file nella propria cartella di installazione.\nNecessario per i dump non pacchettizzati che scrivono salvataggi o configurazioni in /app0.",
|
||
"Options.Env.VkValidation.Desc": "Abilita i validation layer di Vulkan per il debug della GPU.\nLento. Richiede l'SDK di Vulkan installato.",
|
||
"Options.Env.DumpSpirv.Desc": "Esporta gli shader AGC e le loro traduzioni SPIR-V nella cartella shader-dumps.\nUsalo quando segnali bug di shader o di rendering.",
|
||
"Options.Env.LogDirectMemory.Desc": "Registra in console le allocazioni di memoria diretta e i relativi errori.\nUsalo quando un gioco si interrompe o si chiude durante l'avvio.",
|
||
"Options.Env.LogIo.Desc": "Registra in console l'apertura e la lettura dei file e la risoluzione dei percorsi.\nUsalo quando un gioco non trova i propri file di dati durante l'avvio.",
|
||
"Options.Env.LogNp.Desc": "Registra in console le chiamate alla libreria NP (PlayStation Network).",
|
||
"Options.Env.Group.Debug": "Debug",
|
||
"Options.Env.Group.General": "Generale",
|
||
"Options.Env.RenderDoc.Desc": "Carica l'API in-application di RenderDoc per catturare i frame dall'interno dell'emulatore.\nPremi F10 mentre il gioco è in esecuzione per catturare un frame; le catture finiscono in user/logs/capture_logs/<TITLE_ID>.\nRichiede RenderDoc installato. Rallenta la GPU e blocca alcuni titoli, quindi lascialo disattivato se non stai facendo debug.",
|
||
"Options.Env.GuestImageCpuSync.Desc": "Ricarica le superfici guest riscritte dal codice CPU del gioco.\nLasciare disattivato normalmente. Attivare per i titoli le cui superfici disegnate dalla CPU non raggiungono mai lo schermo.\nCosta prestazioni e causa regressioni in alcuni titoli, come GTA V.",
|
||
"Options.Env.ForceSubmitOrphanPreambles.Desc": "Consegna i preamboli del buffer di comandi GPU anche quando la coda di destinazione non li preleva mai.\nLasciare disattivato normalmente. Attivare per i titoli che si bloccano in attesa di una fence GPU che non segnala mai.",
|
||
"Common.Save": "Salva",
|
||
"Common.Cancel": "Annulla",
|
||
"Options.About": "Informazioni",
|
||
"About.Github.Label": "GitHub",
|
||
"About.Github.Desc": "Codice sorgente, issue e sviluppo del progetto.",
|
||
"About.Github.LatestCommitLabel": "Ultimo commit",
|
||
"About.Github.LatestCommitDescription": "Ultimo commit sul branch main",
|
||
"About.Discord.Label": "Discord",
|
||
"About.Discord.Desc": "Unisciti alla community, ricevi supporto e segui lo sviluppo.",
|
||
"About.GithubButton": "Contribuisci su GitHub!",
|
||
"About.DiscordComingSoon": "Prossimamente",
|
||
"Updater.Auto.Label": "Controlla aggiornamenti all'avvio",
|
||
"Updater.Auto.Desc": "Interroga GitHub senza rallentare l'avvio.",
|
||
"Updater.Label": "Aggiornamenti",
|
||
"Updater.Check": "Controlla aggiornamenti",
|
||
"Updater.DownloadRestart": "Scarica e riavvia",
|
||
"Updater.Status.Ready": "Build attuale: {0}",
|
||
"Updater.Status.Checking": "Ricerca aggiornamenti…",
|
||
"Updater.Status.Current": "Sei aggiornato ({0}).",
|
||
"Updater.Status.Available": "È disponibile un nuovo build: {0}",
|
||
"Updater.Status.Downloading": "Download dell'aggiornamento… {0}%",
|
||
"Updater.Status.Installing": "Installazione dell'aggiornamento…",
|
||
"Updater.Status.Timeout": "Il controllo degli aggiornamenti è scaduto dopo 10 secondi.",
|
||
"Updater.Status.Failed": "Impossibile controllare gli aggiornamenti.",
|
||
"Updater.Status.ChecksumFailed": "L'aggiornamento scaricato non ha superato la verifica SHA-256.",
|
||
"Updater.Status.Unsupported": "L'aggiornamento automatico richiede un build x64 per Windows, Linux o macOS.",
|
||
"Options.Graphics": "Grafica",
|
||
"Options.Section.Rendering": "RENDERING",
|
||
"Options.Section.Display": "SCHERMO",
|
||
"Options.RenderResolution.Label": "Risoluzione interna",
|
||
"Options.RenderResolution.Desc": "Renderizza i target fuori schermo sotto la risoluzione nativa e li ridimensiona in fase di presentazione. Valori inferiori sacrificano la qualità dell'immagine per lasciare margine alla GPU; ha effetto al prossimo avvio.",
|
||
"Options.RenderResolution.Native": "100% (nativa)",
|
||
"Options.WindowMode.Label": "Modalità finestra",
|
||
"Options.WindowMode.Desc": "Finestra normale, desktop senza bordi o schermo intero esclusivo.",
|
||
"Options.WindowMode.Windowed": "In finestra",
|
||
"Options.WindowMode.Borderless": "Senza bordi",
|
||
"Options.WindowMode.Exclusive": "Esclusiva",
|
||
"Options.Resolution.Label": "Risoluzione",
|
||
"Options.Resolution.Desc": "Dimensione iniziale della finestra o risoluzione dello schermo intero esclusivo.",
|
||
"Options.Display.Label": "Schermo",
|
||
"Options.Display.Desc": "Monitor utilizzato per il centraggio e lo schermo intero.",
|
||
"Options.RefreshRate.Label": "Frequenza di aggiornamento",
|
||
"Options.RefreshRate.Desc": "Frequenza di aggiornamento dello schermo intero esclusivo. La modalità automatica seleziona la modalità più vicina.",
|
||
"Options.RefreshRate.Automatic": "Automatica",
|
||
"Options.Scaling.Label": "Ridimensionamento",
|
||
"Options.Scaling.Desc": "Ridimensiona l'immagine nativa del sistema guest senza modificarne la risoluzione interna.",
|
||
"Options.Scaling.Fit": "Adatta",
|
||
"Options.Scaling.Cover": "Riempi",
|
||
"Options.Scaling.Stretch": "Estendi",
|
||
"Options.Scaling.Integer": "Intero",
|
||
"Options.VSync.Label": "VSync",
|
||
"Options.VSync.Desc": "Usa la presentazione FIFO per evitare lo screen tearing.",
|
||
"Options.Hdr.Label": "Output HDR",
|
||
"Options.Hdr.Desc": "Usa HDR quando lo schermo selezionato e il backend grafico lo supportano. La modalità automatica torna a SDR.",
|
||
"Options.Hdr.Auto": "Automatico"
|
||
}
|