Lo sviluppatore SciresM ha rilasciato il suo sessantunesimo aggiornamento di Atmosphère con la nuova versione 1.2.4. Atmosphère è composto da più componenti, ognuno dei quali sostituisce/modifica un diverso componente del sistema:
- Fusée: First-stage Loader, responsabile del caricamento e della convalida della fase 2 (TrustZone personalizzato) più pacchetto2 (Kernel/FIRM sysmodules) e dell’applicazione delle patch necessarie. Sostituisce tutte le funzionalità normalmente in Package1loader/NX Bootloader.
- Sept: Payload utilizzato per abilitare il supporto per la derivazione della chiave di runtime su 7.0.0.
- Exosphère: TrustZone personalizzato, per eseguire un Secure Monitor personalizzato
- Thermosphère: supporto EL2 EmuNAND, ovvero backup e utilizzo di immagini NAND virtualizzate/reindirizzate
- Stratosphère: Custom Sysmodule(s), sia in stile Rosalina per estendere il kernel/fornire nuove funzionalità, sia dello stile di reimplementazione del loader per agganciare importanti azioni di sistema
- Troposphère: patch del sistema operativo Horizon a livello di applicazione, utilizzate per implementare le funzionalità CFW desiderabili
Qui sotto il changelog completo.
Changelog
v1.2.4
- Sono state apportate modifiche al modo in cui fs.mitm crea le immagini quando fornisce un romfs layeredfs.
- La gestione della cache (per evitare ricostruzioni non necessarie) è stata rivista, per aggiungere un periodo di grazia di ~500ms-1s tra il processo che chiude l’immagine romfs e ams.mitm che deve essere ricostruito se romfs viene riaperto.
- Questo rende la nostra cache molto più efficace, in precedenza stavamo ricostruendo romf più volte.
- La proprietà dell’immagine RomFS è stata rivista, con l’aggiunta di una nuova implementazione del conteggio dei riferimenti (utilizzata per implementare il periodo di grazia di cui sopra).
- Alcuni giochi (ad es. Puyo Puyo Tetris 2, probabilmente altri) erano sensibili a questa tempistica e potevano utilizzare modelli di accesso che avrebbero attivato la creazione dell’immagine romfs mentre l’immagine romfs precedente era nel mezzo del distruttore.
- Ciò potrebbe causare un errore irreversibile, poiché il distruttore della vecchia immagine potrebbe essere eseguito contemporaneamente alla creazione della nuova immagine.
- Ciò fornisce anche un aumento della velocità rispetto al codice 1.2.3, con Animal Crossing che ora impiega circa 8 secondi in meno per superare il logo di Nintendo Switch.
- La gestione della cache (per evitare ricostruzioni non necessarie) è stata rivista, per aggiungere un periodo di grazia di ~500ms-1s tra il processo che chiude l’immagine romfs e ams.mitm che deve essere ricostruito se romfs viene riaperto.
- Miglioramenti generali della stabilità del sistema per migliorare l’esperienza dell’utente.
v1.2.3
- Poiché lo sviluppo di ams.TMA richiede più tempo del previsto, è ora disponibile il supporto sperimentale per gdbstub di Atmosphère come standalone.
- Nota : GDBstub è nuovo e potrebbe avere bug/necessità di lavoro. Se riscontri problemi, segnalali a
SciresM#0524
— tutto l’aiuto per trovare/risolvere i bug è apprezzato, qui.- In generale, se desideri segnalare informazioni sulle correzioni necessarie/discutere dello sviluppo di gdbstub, unisciti al canale #dev-support di ReSwitched.
- Per abilitarlo, imposta
atmosphere!enable_standalone_gdbstub
= u8!0x1 in system_settings.ini.- Lo standalone richiede anche
atmosphere!enable_htc
= u8!0x0, ma questo dovrebbe essere il caso per tutti poiché ams.TMA non è ancora effettivamente utilizzabile.
- Lo standalone richiede anche
- Una volta abilitato, apri il devkitPro fornito-gdb (
aarch64-none-elf-gdb
per 64 bit oarm-none-eabi-gdb
per 32 bit).- Lo stub autonomo si espone sulla porta 22225, quindi il comando per connettersi è
target extended-remote <ip address>:22225
. - Digitare
info os processes
per ottenere un elenco di ID processo a cui è possibile allegare.- Lo stub dovrebbe funzionare su entrambi i programmi di sistema, giochi e homebrew, ma tieni presente che il debug di alcuni processi (come i socket) può causare il blocco a causa del fatto che lo stub li utilizza.
- Lo stub autonomo si espone sulla porta 22225, quindi il comando per connettersi è
- I punti di interruzione del software, i punti di interruzione dell’hardware, i punti di controllo dell’hardware e l’hardware a passo singolo sono tutti supportati/implementati.
- I seguenti comandi del monitor sono attualmente supportati:
monitor get info
: Ottieni informazioni sul processo, layout dello spazio degli indirizzi e informazioni sui moduli.monitor get mappings
: Ottieni tutte le mappature della memoria.monitor get mapping <addr>
: Ottieni la mappatura della memoria per un indirizzo specifico.monitor wait application
: fa in modo che lo stub attenda l’avvio di un’applicazione. La prossima applicazione verrà avviata sospesa.- Si prevede che l’utente invii
attach <pid>
dopo l’avvio, il che causerà la prima istruzione di collegamento. Il mancato collegamento può causare instabilità del sistema, probabilmente è necessario lavorare.
- Si prevede che l’utente invii
- Nota : GDBstub è nuovo e potrebbe avere bug/necessità di lavoro. Se riscontri problemi, segnalali a
- Sono state apportate modifiche al modo in cui fs.mitm crea le immagini quando fornisce un romfs layeredfs.
- L’aggiornamento 2.0.0 di Animal Crossing contiene >99000 file e ha tabelle così grandi che abbiamo esaurito la memoria anche dopo le ottimizzazioni effettuate in 0.10.5.
- In precedenza, usavamo buffer di lavoro 0x40000 di dimensioni fisse per tabelle file/directory e contemporaneamente creavamo tabelle hash/contenuto in un ciclo su file/directory.
- Ora iteriamo più volte sulle tabelle file/directory, prima una volta per determinare gli indici delle tabelle hash, poi ripetutamente per creare tabelle hash, quindi una volta per creare tabelle dei contenuti.
- Ora consentiamo anche buffer di lavoro inferiori a 0x40000, provando buffer di dimensioni pari alla metà fino a quando l’allocazione non riesce (o il buffer di lavoro sarebbe <0x4000, che è una salvaguardia contro prestazioni davvero orribili).
- C’è una leggera penalità di velocità a questi cambiamenti, ma è dell’ordine dei secondi per il caso peggiore (Animal Crossing) e banale per la maggior parte dei giochi con tavoli ragionevoli.
- Se incontri un gioco che esaurisce la memoria di ams.mitm (che si blocca) durante il caricamento di mod layeredfs, contatta
SciresM#0524
.- È davvero difficile immaginare che un gioco sia peggiore di Animal Crossing, ma se succede di nuovo lascerò cadere tutto per risolverlo come al solito.
- L’aggiornamento 2.0.0 di Animal Crossing contiene >99000 file e ha tabelle così grandi che abbiamo esaurito la memoria anche dopo le ottimizzazioni effettuate in 0.10.5.
creport
ora tenta di analizzare le tabelle dei simboli, se presenti.- Se l’eseguibile di un gioco ha un simbolo per un determinato indirizzo, l’offset relativo alla funzione verrà ora stampato dopo l’offset relativo al modulo.
- Miglioramenti generali della stabilità del sistema per migliorare l’esperienza dell’utente.