Home Emulatori Snes9x 3DS v1.60 rivoluziona il retrogaming su Nintendo 3DS con grafica...

[Scena 3DS] Snes9x 3DS v1.60 rivoluziona il retrogaming su Nintendo 3DS con grafica e prestazioni migliorate

101
0

La nuova versione 1.60 di Snes9x 3DS segna un passo importante per chi continua ancora oggi ad usare una console della famiglia Nintendo 3DS o 2DS con custom firmware, dimostrando ancora una volta quanto la scena retrogaming sia viva.

Il lavoro del developer matbo87 non si limita a un semplice aggiornamento, ma rappresenta un’evoluzione profonda dell’emulatore, già considerato da tempo uno dei punti di riferimento per giocare ai titoli Super Nintendo su hardware portatile Nintendo.

Il cambiamento più importante riguarda la migrazione completa del backend di rendering: il vecchio codice GPU viene definitivamente abbandonato in favore di citro3d, con una pipeline grafica più moderna e pulita.

Questo passaggio viene accompagnato da una revisione totale del sistema di draw-call batching, che ora riduce drasticamente il numero di chiamate grazie a un rendering raggruppato e a un sistema di gestione degli stati basato su differenze XOR.

In parallelo, la gestione della GPU è stata separata dalla preparazione degli stati grafici, rendendo l’intero flusso più ordinato, modulare ed efficiente.

Dal punto di vista delle prestazioni, i miglioramenti sono evidenti e diffusi. Il rendering beneficia di un throughput più elevato grazie a una migliore gestione dei layer e dei passaggi grafici, evitando disegni ridondanti e ottimizzando operazioni come il color-math.

Anche il caricamento dei dati e la gestione della memoria sono stati rivisti: le operazioni di scrittura dei salvataggi e delle configurazioni risultano più rapide, l’architettura I/O è più efficiente e si riduce la frammentazione della memoria heap, un problema tipico su hardware limitato come quello della 3DS.

Tutto questo si traduce in un sistema più reattivo, soprattutto nella navigazione dei menu e delle liste ROM, che ora risultano più veloci anche sui modelli Old 2DS e 3DS.

Un altro aspetto importante è la gestione degli asset. Gli sfondi utilizzano ora texture a 16-bit nel formato RGB565, riducendo il consumo di memoria e la banda necessaria.

Inoltre, il passaggio da stb_image a una soluzione basata su libpng, con buffer condivisi e allineati, migliora ulteriormente l’efficienza e limita la frammentazione della memoria durante il caricamento delle immagini.

Tra le funzionalità introdotte o migliorate spicca il nuovo sistema di thumbnails. Il precedente caricamento tramite thread in background, spesso fragile e soggetto a problemi di sincronizzazione, è stato sostituito da un sistema più robusto che legge le immagini su richiesta da file cache dedicati.

Questo elimina i conflitti interni e mantiene prestazioni elevate anche con cartelle ROM molto grandi. A ciò si aggiunge la già citata sincronizzazione del refresh rate con quello originale SNES, che garantisce una fluidità perfetta e fedele all’esperienza originale.

L’interfaccia si arricchisce anche di nuovi elementi visivi e informativi. È presente un overlay con bordi adattivi che si adattano automaticamente allo schermo, un contatore FPS opzionale e notifiche accelerate via GPU, che risultano più fluide e meno invasive.

Interessante anche l’introduzione di un supporto base al 3D stereoscopico, applicato a schermate come lo splash screen, gli sfondi di gioco e il menu di pausa, aggiungendo un tocco moderno a un’esperienza retro.

Sul fronte della stabilità e della qualità del codice, il lavoro è stato altrettanto approfondito. L’intero progetto ha ricevuto una pulizia generale con miglioramenti nella tipizzazione, nella gestione delle costanti e nei percorsi di ritorno delle funzioni.

Aggiornata inoltre la politica di compilazione, eliminando la soppressione globale dei warning e introducendo controlli più severi con l’obbligo di risolvere eventuali errori, segno di un progetto sempre più maturo e mantenuto con attenzione.

Naturalmente, un aggiornamento di questa portata introduce anche alcune modifiche non retrocompatibili. Il file di configurazione potrebbe non essere migrato correttamente e in alcuni casi sarà necessario ripartire dalle impostazioni di default.

Anche il sistema delle miniature cambia completamente: le vecchie cartelle contenenti immagini singole non sono più supportate, sostituite da file cache specifici per tipologia.

Infine, cambiano anche i percorsi degli sfondi, che vengono riorganizzati in nuove directory più coerenti con la struttura aggiornata dell’emulatore.

L’installazione rimane semplice e accessibile per chi ha già familiarità con il modding della console. Basta scaricare il file CIA dell’emulatore, installarlo tramite FBI e, opzionalmente, aggiungere il pacchetto di asset aggiornato nella cartella dedicata sulla scheda SD.

Una volta copiate le ROM nei formati supportati, l’emulatore è pronto all’uso senza configurazioni complicate.

Changelog

Cambiamenti importanti

  • Migrazione del backend di rendering: Passaggio dal codice GPU legacy a citro3d.
  • Revisione del draw-call batching: Meno draw call grazie al rendering raggruppato e al diffing degli stati basato su XOR.
  • Decoupling della GPU: Separazione della preparazione degli stati gfxhw dal processo di invio alla GPU per una pipeline più pulita

Prestazioni

  • Rendering:
    • Maggiore throughput grazie alla gestione ottimizzata di layer/sezioni e all’unione dei passaggi di backdrop e color-math per ridurre i draw ridondanti.
    • Ottimizzazioni nel caricamento delle uniform e nell’aggiornamento degli stati di rendering (inclusa la modifica al comportamento max-dirty di citro3d).
  • I/O e memoria:
    • Scrittura più veloce di salvataggi e configurazioni e architettura file I/O migliorata.
    • Riduzione della frammentazione della memoria heap.
    • Navigazione nei menu e nei file più fluida, soprattutto su Old 2DS/3DS.
    • Miglior caching della lista ROM.
  • Gestione asset:
    • Asset di sfondo in formato texture a 16-bit (RGB565) per ridurre banda e consumo di memoria.
    • Sostituzione di stb_image con un sistema basato su libpng che utilizza buffer condivisi (g_fileBuffer e g_streamBuffer) per ridurre frammentazione e overhead.

Funzionalità

  • Sistema di miniature:
    • Sostituito il caricamento fragile tramite thread in background con lettura on-demand da file cache dedicati per ogni tipo di thumbnail.
    • Eliminati problemi di race condition e migliorata la stabilità con grandi librerie ROM.
  • Refresh rate accurato SNES:
    • All’avvio o alla ripresa del gioco, il display della 3DS si sincronizza al refresh rate originale SNES (NTSC ~60.1 Hz / PAL 50 Hz).
  • On-Screen Display:
    • Overlay con bordi (bezel) con supporto auto-fit.
    • Opzione overlay FPS.
    • Notifiche accelerate via GPU.
  • Supporto 3D stereoscopico:
    • Supporto base al 3D per splash screen, sfondo in-game e overlay pausa.

Stabilità e qualità del codice

  • Pulizia generale del codice: Miglioramenti su tipizzazione, const correctness, percorsi di ritorno e warning sia nel frontend 3DS che nel core SNES.
  • Aggiornamento della policy di build: Rimossa la soppressione globale dei warning (-w) e introdotto l’uso di -Werror.

Modifiche improvvise

  • Migrazione configurazione: settings.cfg potrebbe non essere compatibile; verranno applicati i valori di default.
  • Thumbnail: Le vecchie cartelle con immagini singole sono obsolete; ora si usano file *.cache (boxart.cache, gameplay.cache, title.cache).
  • Percorsi sfondi aggiornati:
    • snes9x_3ds/borderssnes9x_3ds/backgrounds/game_screen
    • snes9x_3ds/coverssnes9x_3ds/backgrounds/second_screen

Download: Snes9x3DS v1.60 (3DSX) (CIA)

Download: Source code Snes9x3DS v1.60

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

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

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

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.