Home Microsoft Rilasciato OpenOrbis PS4 Toolchain v0.4

[Scena PS4] Rilasciato OpenOrbis PS4 Toolchain v0.4

451
0

Disponibile un nuovo aggiornamento per la toolchain OpenOrbis, la raccolta di strumenti open source dedicato allo sviluppo di applicazioni homebrew su console PlayStation 4 e PlayStation 4 Pro jailbroken.

Questa nuova versione include il supporto per la libreria libcxx che può essere utilizzata per lo sviluppo di applicazioni homebrew in C++.

 

[stextbox id=’info’]Nota: Per il momento, tutti i file della soluzione di Visual Studio sono considerati VS2017. Questo cambierà quando cadranno i progetti basati su core .NET, che sarà VS2019 per consentire l’utilizzo di .NET core 3.1.[/stextbox]

Note

I seguenti progetti verranno aggiunti all’interno della repository ufficiale entro i prossimi giorni:

  • Debugger
  • MiraLib

Documentazione

Ogni strumento avrà un file README.md aggiuntivo all’interno della sottodirectory che fornisce informazioni più specifiche su quel progetto. La sottodirectory docs contiene anche materiali e documentazione aggiuntivi. Di seguito una panoramica dello scopo di ciascuna sottodirectory:

DirectoryContenuti
/binFile eseguibili per strumenti su ogni piattaforma (Windows in /bin/windows e Linux in /bin/linux).
/docsDocumentazione per le specifiche del formato PS4 (reverse engineering) e la toolchain stessa.
/extraFile extra e varie. Attualmente, questo include modelli di progetto per Visual Studio.
/includeContiene i file di intestazione da compilare quando si creano applicazioni/librerie (i file specifici di PS4 sono in /include/orbis.
/libContiene gli stub della libreria a cui collegarsi durante la creazione di applicazioni/librerie.
/samplesProgrammi di esempio per iniziare e per riferimento.
/scriptsScript utili per visualizzare le informazioni Orbis ELF (OELF) e altri strumenti.
/srcContiene il codice sorgente per gli strumenti (vedere /src/README.md per ulteriori informazioni su questa directory).

Setup e installazione

La toolchain clang e il linker llvm (lld) sono necessari per compilare e collegare utilizzando questo SDK. Per Windows, questi possono essere scaricati utilizzando i file binari predefiniti forniti da LLVM. Per Linux e macOS, la stessa pagina contiene file binari predefiniti, tuttavia è anche possibile usare i seguenti comandi (Debian/Ubuntu):

sudo apt-get update
sudo apt-get install clang
sudo apt-get install lld

Nel caso in cui si utilizzi un derivato Arch:

sudo pacman -S clang
sudo pacman -S lld

Gli utenti macOS possono utilizzare Homebrew per installare una copia pura di LLVM (la versione Apple non funzionerebbe con la toolchain).

brew install llvm

In futuro, potremmo includere binari predefiniti per clang/lld, tuttavia per il momento è necessario installarli separatamente, è inoltre necessario impostare la variabile di ambiente OO_PS4_TOOLCHAIN.

Su Windows, questo può essere fatto utilizzando il pannello di controllo delle variabili d’ambiente. Su Linux e macOS, è possibile aggiungere il seguente comando a ~/.bashrc (Debian/Ubuntu), ~/.bash_profile (macOS Mojave e inferiore) o ~/.zshrc (macOS Catalina):

export OO_PS4_TOOLCHAIN=[directory di installazione]

Ciò è necessario affinché gli script di compilazione e lo strumento di conversione sappiano dove cercare determinati file. Si consiglia inoltre di aggiungere la directory root SDK + /bin alla variabile del percorso.

Windows Installer

Per PC Windows, viene fornito un programma di installazione tramite script Nullsoft, che automatizzerà il processo di estrazione dei file della toolchain e l’impostazione della variabile di ambiente OO_PS4_TOOLCHAIN.

Linux

Per Linux, dopo aver installato le dipendenze richieste e aver impostato la variabile d’ambiente come indicato sopra, ti consigliamo di eseguire lo script setup-toolchain.sh in /extra. Ciò contrassegnerà tutti i file binari di Linux come eseguibili, poiché per impostazione predefinita sono in lettura/scrittura.

macOS

Per macOS, viene fornito un programma di installazione PKG, che automatizzerà il processo di estrazione dei file della toolchain e l’impostazione della variabile di ambiente OO_PS4_TOOLCHAIN nelle shell bash e zsh.

Creazione di progetti homebrew

Per Windows, /extra fornisce modelli di Visual Studio che possono essere aggiunti nella directory dei modelli dell’installazione VS per consentire una facile creazione di progetti homebrew, è inoltre possibile copiare e modificare le soluzioni dagli esempi forniti.

Per Linux e macOS, /extra contiene uno script setup-project.sh che creerà una directory di progetto basata sull’esempio hello_world.

Strumenti

Ogni strumento avrà un file README.md dedicato con informazioni più specifiche sullo strumento. Di seguito viene elencata una panoramica generica degli strumenti inclusi attualmente nella toolchain.

create-eboot

Lo strumento create-eboot prende i normali file ELF (Executable Linkable Format) ed esegue le patch e il ricollegamento necessari per creare un ELF (OELF) Orbis.

Prenderà ulteriormente questo OELF e lo trasformerà in Signed Executable Linkable Format (SELF). Ciò è stato reso possibile grazie al precedente lavoro di flatz sullo script make-fself.py, che può essere trovato in /scripts. Per ulteriori informazioni su questi formati, consultare il wiki o /docs.

Autore: Specter + flatz (fself stuff)

create-lib

Lo strumento create-lib è simile allo strumento create-eboot, tuttavia produce file della libreria Playstation Relocatable eXecutable (PRX) da un determinato file ELF.

Autore: Specter + flatz (fself stuff)

create-pkg

Lo strumento create-pkg prende una serie di file che le applicazioni dovrebbero avere (eboot.bin, param.sfo, moduli necessari, ecc..) e crea un file di pacchetto (pkg) che può essere installato su PS4.

Autore: maxton

stub-generator

Il generatore di stub genera i file header e i file delle librerie condivise (.so) per il collegamento con le librerie di sistema PS4. L’output di questo strumento è disponibile in /include/orbis e in /lib. Queste directory sono essenziali per collegarsi correttamente con le librerie PS4.

Autore: CrazyVoid

miralib

La libreria miralib contiene codice C# e Python per interagire con Mira sul lato desktop delle cose. Ciò include la gestione di un elenco locale di console, la connessione a una console e l’esecuzione di varie azioni una volta connesse tramite RPC.

Autore: Specter + Kiwi

assistant

Assistant è in realtà una suite di strumenti per aiutare nello sviluppo di homebrew per PS4. Ciò include un visualizzatore di registri, un debugger, un launcher per Mira e un’applicazione della barra delle applicazioni per avviarli facilmente.

Autore: Specter

readelf replacement

Questo è uno strumento sostitutivo per la lettura di file ELF compatibili con PS4, altrimenti noto come ELF Orbis (OELF).

Autore: Specter

Script

Tutti gli script presenti nella directory /scripts sono script Python 3, specifici per Python 3.7.0, ad eccezione di /scripts/make_fself.py. Avrai bisogno di Python installato sul tuo sistema per eseguire questi script. L’uso di questi script è disponibile in /scripts/README.md.

autobuild.py – è uno script per la generazione automatica di file pkg basato sul contenuto della directory del progetto (potrebbe essere instabile, attendere la compilazione del rilascio).

dynamic_entries.py – Questo script ottiene un elenco di voci dinamiche dalla tabella dinamica degli ELF Orbis.

make_fself.py – Copia dello script flatz’ per generare file SELF falsi. Questa funzionalità è stata ora integrata come parte di create-eboot e create-lib.

program_headers.py – Ottiene un elenco di intestazioni del programma dalla tabella delle intestazioni del programma degli ELF Orbis.

rela_entries.py – Ottiene un elenco di voci di trasferimento con aggiunta (RELA) dalla tabella di trasferimento degli ELF Orbis.

symbol_entries.py – ottiene un elenco di simboli dalla tabella dei simboli degli ELF Orbis.

Changelog

  • Aggiunto supporto C++ tramite le intestazioni include/c++/v1 e libcxx compilato staticamente.
  • Aggiunto supporto per tag dinamici C++ init_array/fini_array in create-eboot / create-lib.
  • Ricreato un nuovo programma di installazione di Windows.
  • Creato uno script per semplificare il processo di creazione della versione.
  • Aggiunta della documentazione iniziale della libreria PS4 in /docs per libkernel, pad, sysmodule, userservice e videoout.
  • Funzionalità comuni tra campioni (grafica e registrazione, nonché decodifica PNG) sono state spostate in /samples/_common.
  • Il font di esempio è stato riscritto per usare C++.
  • Il campione Hello World è stato riscritto per usare il C++.
  • Il campione di input è stato riscritto per usare C++ e ora ha un componente visivo per rendere il campione più ovvio in quello che fa.
  • Il campione di decodifica PNG è stato riscritto per usare C ++.
  • Il campione di sistema è stato riscritto per usare C++ e ora stampa sullo schermo invece di stdout per dimostrare meglio cosa fa.
  • Il campione di threading è stato riscritto per usare C++ e in modo simile al campione di sistema, ora stampa sullo schermo.
  • Corretto il problema per cui gli script create-eboot/lib e readelf build non venivano creati per macOS.
  • Risolto un errore di battitura secondario che causava l’errata identificazione dei tag DT_INIT_ARRAY_SZ e DT_FINI_ARRAY_SZ come tag DT_INIT_ARRAY e DT_FINI_ARRAY.
  • Aggiornati vari readme di esempio per tenere conto dei campioni rielaborati.
  • Rimosso il vecchio script NSIS del programma di installazione.

Problemi noti

  • std::cout di iostream non funziona correttamente e smetterà di funzionare dopo una scrittura. Per scrivere su stdout, utilizzare la macro DEBUGLOG in samples/_uncommon/log.h. Speriamo di risolverlo in futuro.

Video

Download: OpenOrbis PS4 Toolchain v0.4 (exe)

Download: OpenOrbis PS4 Toolchain v0.4 (pkg)

Download: OpenOrbis PS4 Toolchain v0.4 (zip)

Download: Source code OpenOrbis PS4 Toolchain v0.4

Fonte: github.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.