Home Homebrew LibProsperoPKG si aggiorna alla versione 1.2: codec UCP, generatore fself, encoder Kraken...

LibProsperoPKG si aggiorna alla versione 1.2: codec UCP, generatore fself, encoder Kraken ottimizzato e supporto Linux/macOS

226
0

Il developer SvenGDK ha aggiornato LibProsperoPKG, la libreria open source sviluppata in C# 14 per .NET 10 dedicata alla creazione e gestione dei pacchetti PlayStation 5, introducendo numerose novità che ne ampliano le funzionalità e migliorano l’affidabilità.

A pochi giorni dal debutto del progetto, è già disponibile un importante aggiornamento che introduce nuove funzionalità, migliorando la compatibilità e risolvendo diversi problemi emersi nelle prime versioni, confermando la volontà dell’autore di trasformare la libreria in uno strumento di riferimento per sviluppatori e modder della scena PS5.

Tra le novità più rilevanti spicca l’introduzione di un codec UCP completamente compatibile a livello byte per i file trophy2/.ucp e uds/.ucp, una caratteristica che garantisce una gestione più precisa dei file legati ai trofei.

La libreria integra inoltre un nuovo validatore per npbind.dat, fondamentale per verificare la correttezza di questi file durante il processo di packaging, e un generatore dedicato ai file fself, ampliando ulteriormente gli strumenti disponibili per lo sviluppo.

L’aggiornamento porta anche significativi miglioramenti alle prestazioni grazie alle ottimizzazioni apportate all’encoder Kraken, utilizzato nella compressione dei dati, rendendo più efficiente la generazione dei pacchetti.

Un’altra novità importante riguarda la creazione completa dei file sce_suppl in formato ZIP lungo l’intera pipeline di compilazione, permettendo di automatizzare una fase che in precedenza richiedeva interventi aggiuntivi.

Grande attenzione è stata dedicata anche alla correzione dei bug. È stato infatti risolto un problema che provocava la rimozione silenziosa di numerosi metadati durante la costruzione dei pacchetti, coinvolgendo elementi come license, np, self, deltainfo, keymap_rp, changeinfo, pronunciation e trophy.

Corretti inoltre i problemi relativi ai file naps_meta_300, 301, 302 e 308, migliorando l’affidabilità complessiva del processo di creazione dei file PKG.

Sul fronte della compatibilità multipiattaforma, LibProsperoPKG compie un ulteriore passo avanti introducendo le librerie native .so per Linux e .dylib per macOS.

Sebbene questi file riportino ancora la numerazione della versione 1.0, sono già compilati utilizzando il codice sorgente della versione 1.2, offrendo agli utenti dei sistemi operativi alternativi a Windows un supporto molto più completo.

In evidenza

  • Pipeline completamente integrata. Cartella → layout PFS interno → crittografia AES-XTS → PFS esterno → container dei metadati \x7FCNT → immagine di debug \x7FFIH finalizzata, dall’inizio alla fine.
  • Completamente autonoma. Il modello di progetto GP5, il generatore delle immagini PFS, la crittografia AES-XTS, la firma RSA-3072 dei metadati e la generazione dell’immagine di debug finale vengono gestiti interamente dalla libreria.
  • Lettura e scrittura. Consente di analizzare, ispezionare e modificare pacchetti PS5 esistenti (\x7FCNT / \x7FFIH), oltre a crearne di nuovi.
  • Generazione delle texture. Il ricodificatore delle immagini DDS (BC7) utilizzate per icone e immagini nella cartella sce_sys si basa su Magick.NET.

Requisiti

Componente Requisito
Toolchain .NET 10 SDK o versione successiva
Linguaggio C# 14
Dipendenza NuGet Magick.NET-Q8-AnyCPU

Compilazione

cd LibProsperoPKG/src/LibProsperoPkg
dotnet build -c Release

Questo comando genera il file LibProsperoPkg.dll.

Per creare un pacchetto NuGet: dotnet pack -c Release

Guida rapida

Aggiungere un riferimento al progetto (oppure al file LibProsperoPkg.dll compilato o al pacchetto NuGet) e creare un pacchetto partendo da una cartella dell’applicazione già preparata:

C#

using LibProsperoPkg;

var options = new ProsperoBuildOptions
{
    Mode         = ProsperoPackageMode.Application,
    OutputFormat = ProsperoOutputFormat.DebugImage,   // Installabile su console in modalità debug
    SourceFolder = @"/path/to/prepared/app",          // Deve contenere la cartella sce_sys/
    OutputFolder = @"/path/to/output",
    ContentId    = "UP9000-PPSA00000_00-PROSPERO00000000",
    TitleId      = "PPSA00000",
    Title        = "My PS5 Application",
    Version      = "01.00",
};

ProsperoBuildResult result = ProsperoPackageBuilder.Build(options, Console.WriteLine);

Console.WriteLine($"Pacchetto creato in: {result.OutputPath}");
foreach (var warning in result.Warnings)
    Console.WriteLine($"Avviso: {warning}");

Analisi di un pacchetto esistente

C#

using LibProsperoPkg.PKG;

ProsperoPkg pkg = ProsperoPkgReader.Read(@"/path/to/some.pkg");
Console.WriteLine($"Tipo:       {pkg.Type}");
Console.WriteLine($"Content ID: {pkg.Header.ContentId}");
Console.WriteLine($"Elementi:   {pkg.Entries.Count}");

API pubbliche in sintesi

Namespace Tipi principali
LibProsperoPkg ProsperoPackageBuilder, ProsperoBuildOptions, ProsperoBuildResult, ProsperoPackageMode, ProsperoOutputFormat, InnerImageForm
LibProsperoPkg.PKG ProsperoPkgBuilder, ProsperoPkgReader, ProsperoPkgWriter, ProsperoFihBuilder, ProsperoPkgSigner, ProsperoDdsEncoder, ProsperoPkg, ProsperoPkgHeader
LibProsperoPkg.PFS ProsperoPfsLayout, ProsperoPfsImage, ProsperoPfsc
LibProsperoPkg.GP5 Gp5Creator, Gp5Project e relativo modello degli elementi.
LibProsperoPkg.Keys ProsperoKeys
LibProsperoPkg.PlayGo ProsperoPlayGo

Per informazioni più approfondite sullo stato delle funzionalità e sulla documentazione tecnica del formato PKG per PS5, consultare la cartella docs/.

Documentazione

Limitazioni

LibProsperoPkg genera un pacchetto completo e coerente, la cui struttura e il contenitore dei metadati possono essere letti e ricostruiti correttamente tramite il lettore integrato.

Tuttavia, due componenti dell’immagine finale dipendono da informazioni generate direttamente dalla console e vengono quindi ricreate con un approccio best effort anziché essere riprodotte in modo identico: la tabella dei digest dell’immagine finale e l’archivio dei metadati di installazione presente nella parte conclusiva del pacchetto.

La libreria è pensata principalmente per console in modalità debug, dove i controlli sull’immagine finale risultano meno restrittivi. L’accettazione del pacchetto sulla console rimane comunque vincolata all’hardware.

Per maggiori dettagli è possibile consultare docs/implementation-status.md.

Changelog v1.1

  • Codec UCP con corrispondenza byte per byte per i file trophy2/.ucp e uds/.ucp.
  • Validatore per npbind.dat.
  • Generatore di file fself.
  • Corretto un problema per cui i metadati relativi a license, np, self, deltainfo, keymap_rp, changeinfo, pronunciation e trophy venivano rimossi silenziosamente durante la generazione dei pacchetti.

Changelog v1.2

  • Ottimizzazioni all’encoder Kraken.
  • I file ZIP di sce_suppl ora vengono generati automaticamente lungo l’intero processo di creazione del pacchetto.
  • Corretti i problemi relativi ai file naps_meta_300, naps_meta_301, naps_meta_302 e naps_meta_308.
  • Aggiunte le librerie native .so e .dylib per Linux e macOS (attualmente riportano ancora la versione 1.0, ma sono basate sul codice sorgente della versione 1.2).

Download disponibili

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS5

Vedi altri prodotti PS5

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-07-15 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.