Home Homebrew Rilasciato MakeROM v0.18.4

[Scena 3DS] Rilasciato MakeROM v0.18.4

327
0

Pubblicato un nuovo aggiornamento per MakeROM, lo strumento a riga di comando può essere utilizzato per creare file NCCH, CCI e CIA per console Nintendo 3DS.

Il formato nativo che memorizza i binari del codice e gli archivi di dati per la console 3DS è NCCH. I file NCCH sono composti da:

  • codice/exheader/plainregion (usato per l’esecuzione del codice) (plainregion elenca solo i componenti aggiuntivi della libreria SDK inclusi).
  • icona (testo del titolo dell’app, icona, impostazioni del menu home, vedi qui.
  • banner (cbmd + cwav, ovvero il banner/suono dello schermo superiore mostrato nell’homemenu).
  • logo (la schermata iniziale visualizzata dopo l’avvio di un’applicazione dal menu principale).
  • romfs (filesystem di sola lettura utilizzato per memorizzare le risorse).

Gli usi tipici dei file NCCH includono:

  • Immagine eseguibile (codice+exheader+icona+banner+logo+romfs).
  • Archivio e-Manual (accessibile da homemenu) (romfs).
  • Archivio CIA figlio DLP (accessibile dall’applicazione) (romfs).
  • Aggiorna Archivio dati (rom).
  • Archivio dati autonomo (roms).
  • Archivio indice DLC (icon+romfs).
  • Archivio DLC (rom).

Il formato nativo per le immagini delle schede di gioco è invece CCI ed è un formato contenitore NCCH. I file CCI sono limitati a contenere 8 file NCCH e possono contenere file NCCH solo per i titoli delle applicazioni.

Configurazione NCCH per CCI

NCCHNecessarioIndex
Immagine eseguibileSi0
Archivio e-ManualNo1
Archivio DLP child CIANo2
Aggiorna Archivio dataNo7

CIA

Il formato nativo per il confezionamento dei file NCCH per l’installazione è CIA, che è anche un formato contenitore NCCH. I file CIA sono limitati a contenere 65535 file NCCH e possono essere utilizzati per contenere file NCCH per qualsiasi tipo di titolo.

I file CIA contengono anche dati firmati utilizzati dal 3DS per la gestione generale del titolo e DRM. Installare file CIA personalizzati su un 3DS che utilizza anche eShop/SysUpdates non è saggio poiché è probabile che si verifichino conflitti.

Configurazioni NCCH per CIA

Applicazioni (Applicazione/DlpChild/Demo/Patch/Applicazione di sistema):

NCCHNecessarioIndex
Immagine eseguibileSi0
Archivio e-ManualNo1
Archivio DLP child CIANo2

System Applet/Module:

NCCHNecessarioIndex
Immagine eseguibileSi0

Archivi System Data:

NCCHNecessarioIndex
Data archiveSi0

DLC:

Il numero di archivi data DLC nel DLC varia per ciascun DLC.

NCCHNecessarioIndex
DLC index archiveSi0
DLC data archive SiVaria

Utilizzo Makerom

Riga di comando

makerom [general args] [rsf args] [crypto args] [ncch 0 build args] [cci args] [cia args]

Argomenti generali

ArgomentoValori accettabiliNote
-f 'ncch'/'cxi'/'cfa'/'cci'/'cia'Specifica il formato del file di output. 'nnch'/'cxi'/'cfa' non ha alcun effetto, probabilmente analizzato senza errori per il supporto legacy.
-o Percorso file valido.Specifica nome/percorso per il file di output. Makerom deciderà un nome se questo non è specificato.
-vNon richiestoAbilita output dettagliato.

Argomenti RSF

ArgomentoValori accettabiliNote
-rsf Percorso file validoSpecifica il percorso di Rom Specification File (RSF). Vedi sotto per la creazione di RSF.
-D=Viene utilizzato per sostituire dove esiste "$()" nei file RSF con "". (Le maiuscole non sono obbligatorie)

Argomenti crittografici

ArgomentoValori accettabiliNote
-target 't'/'d'/'p'Specifica la key-chain. Ciò influisce sulla crittografia, sulla firma e sulla disponibilità del modello "-desc". t=test, adatto per homebrew. d=devkit(incompleto), adatto per devkit. p=retail(inutilizzabile), adatto per la firma di software di vendita al dettaglio?
-ckeyid Qualsiasi valore compreso tra 0 e 255 (incluso).Sostituisce la chiave comune predefinita utilizzata per crittografare le chiavi del titolo CIA.
-showkeysNessunoScarica la key-chain caricato su stdout.

Argomenti NCCH Build

ArgomentoValori accettabiliNote
-elf Percorso file validoSpecificare ELF. Vedere sotto per la creazione di ELF.
-icon Percorso file validoSpecifica l'icona.
-banner Percorso file validoSpecifica banner.
-desc : ='app'/'ecapp'/'demo'/'dlpchild'. ='kernel version minor'.Usa un modello per exheader/accessdesc. Questi sono hardcoded, quindi non tutti i firmware hanno un modello, è possibile utilizzare un valore compreso tra 1 e 7 al posto di "versione kernel minore". Un modello non dovrebbe essere utilizzato se il titolo necessita di autorizzazioni "speciali", l'RSF deve essere completamente configurato.
-exefslogoNessunoIncludi il logo in ExeFS. Necessario per l'utilizzo su sistemi <5.0.

Argomenti utili per ricostruire un file NCCH:

ArgomentoValori accettabiliNote
-code Percorso file validoSpecifica il codice binario decompresso/in chiaro exefs.
-exheader Percorso file validoSpecifica il binario di intestazione in testo normale.
-logo Percorso file validoSpecifica il logo.
-plainrgn Percorso file validoSpecificare la regione normale NCCH.
-romfs Percorso file validoSpecificare un binario RomFS non crittografato.

Argomenti CCI

ArgomentoValori accettabiliNote
-content :=Percorso file valido. =Qualsiasi valore compreso tra 0-7 (incluso)Includere un file NCCH creato nel contenitore CCI. "-i" può essere utilizzato al posto di "-content".
-devcciNessunoCrea una CCI di debug?
-nomodtidNessunoNon modifica i TitleId dei file NCCH inclusi in modo che corrispondano a NCCH0
-alignwrNessunoAllinea l'offset per la regione scrivibile Card2 alla fine dell'ultimo NCCH nel CCI.

Argomenti CIA

ArgomentiValori accettabili Note
-content ::=Percorso file valido. =Qualsiasi valore compreso tra 0x0-0xFFFF (incluso). =Qualsiasi valore compreso tra 0x0-0xFFFFFFFF (incluso)Includere un file NCCH creato nel contenitore CIA. Se non è specificato, verrà generato in modo casuale. "-i" può essere utilizzato al posto di "-content".
-major Qualsiasi valore compreso tra 0-63 (incluso)Specificare la versione principale per il titolo. Non può essere utilizzato con "-dver".
-minor Qualsiasi valore compreso tra 0-63 (incluso)Specificare la versione minore per il titolo. Non può essere utilizzato con "-dver".
-micro Qualsiasi valore compreso tra 0-15 (incluso)Specificare la versione micro per il titolo.
-dver Qualsiasi valore compreso tra 0-4095 (incluso)Specificare la versione del titolo dati per il titolo. Non può essere utilizzato con "-major" o "-minor".
-dlcNessunoSpecifica questo flag durante la creazione di un DLC CIA.
-randNessunoUsa una chiave del titolo casuale per crittografare il contenuto del file CIA.

Esempi

Esempi generali:

Crea CXI

makerom -o sample.cxi -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4

Crea CFA

makerom -o sample.cfa -rsf sample.rsf -target t

Crea CCI

makerom -f cci -o sample.cci -target t -i sample.cxi:0 -i sample.cfa:1

Crea CIA

makerom -f cia -o sample.cia -target t -i sample.cxi:0:0 -i sample.cfa:1:1

Makerom supporta la creazione di un file NCCH e includerlo automaticamente (come index 0) in un contenitore NCCH:

Crea CCI e CXI contemporaneamente e includi un CFA

makerom -f cci -o sample.cci -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1

Crea CIA e CXI contemporaneamente e includi un CFA

makerom -f cia -o sample.cia -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1:1

Ricostruzione CXI:

makerom -o rebuild.cxi -rsf rebuild.rsf -target t -code rebuild/code.bin -exheader rebuild/exheader.bin -icon rebuild/icon.bin -banner rebuild/banner.bin -romfs rebuild/romfs.bin

Creazione di file RSF

Ispirato al formato Nintendo per la loro MakeROM, è necessario un file di configurazione yaml per creare file NCCH, è possibile creare CIA/CCI senza utilizzare un file RSF, ma verranno utilizzate le impostazioni predefinite.

Per CXI, i file RSF possono essere utilizzati per specificare le autorizzazioni e le impostazioni di controllo dell’accesso. Makerom può utilizzare le impostazioni predefinite utilizzando l’opzione “-desc”, che rimuove il requisito per specificarle nel file RSF.

Esempio di RSF da utilizzare con “-desc”: download (link interrotto)

Esempio di RSF da utilizzare senza “-desc”: download

Creazione di file ELF

L’ultimo devkitARM utilizzato insieme a ctrulib può creare file ELF compatibili con MakeROM. Anche i file ELF creati utilizzando l’SDK ufficiale sono supportati da MakeROM.

Changelog v0.18.4

  • [BugFix] Makerom non richiede più che un ELF abbia un segmento dati #142.

Changelog v0.18.3

  • [BuildSystem] makefile per makerom e libyaml aggiornato per definire -D_GNU_SOURCE per build linux.
    • Questo corregge il problema #122 in cui alcune funzioni sono state definite implicitamente causando segfault su Linux.

Changelog v0.18.2

  • [BugFix] Inizializza correttamente prod InitialData KeyX.
  • [BugFix] Seleziona correttamente CCI CryptoType quando non specificato manualmente.

Changelog v0.18.1

  • [BugFix] Corretto un bug in cui i dati iniziali non venivano generati correttamente (#107).
  • [Modifica] Gli errori nella generazione delle firme RSA ora sono un avviso, non un errore.
  • [Modifica] MakeROM ora fornirà maggiori informazioni sugli errori irreversibili. Questo dovrebbe aiutare a diagnosticare errori confusi.
  • [Modifica] MakeROM avviserà gli utenti se il tipo di crittografia CCI non è supportato dalla destinazione.

Download: MakeROM v0.18.4 [MacOS ARM64]

Download: MakeROM v0.18.4 [MacOS x86_64]

Download: MakeROM v0.18.4 [Ubuntu x86_64]

Download: MakeROM v0.18.4 [Win x86_64]

Download: Source code MakeROM v0.18.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.