L’emulatore Citra, nato come un progetto open-source con l’obiettivo di emulare la console Nintendo 3DS, ha avuto una storia di biforcazioni nel corso degli ultimi anni, anche a causa delle sfide tecniche e delle differenze di visione tra gli sviluppatori.
Da qui nasce lo sviluppo di Mandarine, un fork di Citra che offre modifiche e miglioramenti per ottenere prestazioni superiori rispetto alla versione originale.
Mandarine integra numerosi aggiornamenti e ottimizzazioni rispetto a Citra Enhanced, da cui ha preso spunto. Tra le principali modifiche apportate, Mandarine ha introdotto miglioramenti significativi nell’interfaccia utente e nuove opzioni per l’audio e il controllo su Android.
Le prestazioni sono state ottimizzate sia su PC che su Android, con nuove funzionalità come il supporto per Adreno GPU Boost e il monitoraggio dell’uso della RAM.
Per quanto riguarda le novità specifiche di Mandarine, sono state ridenominate alcune opzioni di hacking per la grafica, come “Skip Slow Draw”, “Skip Texture Copy” e “Skip CPU Write”, ora conosciute come “Force Hardware Vertex Shaders”, “Disable Surface Texture Copy” e “Disable Flush CPU Write”.
Inoltre, sono state apportate ottimizzazioni generali e risolti problemi grafici e di memoria. Su Android, sono state aggiunte opzioni come l’espansione per display cutout e la reimplementazione del ForegroundService.
Sono stati inoltre effettuati miglioramenti generali e aggiornamenti delle dipendenze esterne, come vulkan headers e glslang.
Questi aggiornamenti mirano a fornire un’esperienza di emulazione più fluida e performante, risolvendo alcune delle limitazioni e dei problemi riscontrati nelle versioni precedenti.
Specifiche consigliate
Desktop
- Sistema Operativo: Windows 10 (64-bit), MacOS Ventura o Linux 64-bit moderno.
- CPU: CPU x86-64 (64-bit). Prestazioni del singolo core superiori a 1.800 su Passmark.
- GPU: Supporto per OpenGL 4.3 o Vulkan 1.1.
- Memoria: 2 GB di RAM. Sono consigliati 4 GB.
Android
- Sistema Operativo: Android 9.0+.
- CPU: Snapdragon 835 SoC o superiore.
- GPU: Supporto per OpenGL ES 3.2 o Vulkan 1.1.
- Memoria: 2 GB di RAM. Sono consigliati 4 GB.
Changelog
Cose provenienti da Citra Enhanced
- Android: Ristrutturazione dell’interfaccia delle impostazioni (@Ishan09811).
- Android: Implementazione del backend audio oboe.
- Android: Implementazione dei controlli di opacità del tocco.
- Android: Implementazione della scalatura individuale dei pulsanti (@gperrio).
- Android: Implementazione del supporto per il feedback aptico (@gperrio).
- Android e PC: Passaggio della tecnica di shader anaglifico da Dubois a Rendepth (@cybereality).
- Android e PC: Migrazione dal profiler Microprofile a Tracy (@raphaelthegreat).
- PC: Disattivazione della moltiplicazione accurata per default.
- Android e PC: Backport delle hack Skip Slow Draw, Skip Texture Copy e Skip CPU Write da Citra MMJ (@weihuoya).
- Android/ARM64: Ottimizzazione della funzione AreQuaternionsOpposite (@weihuoya).
- Android e PC: Implementazione della hack Priority Boost per thread affamati (conosciuta come Priority Boost Hack).
- Android: Implementazione della scorciatoia per scambio schermi (@gperrio).
- Android e PC: Ripristino della funzionalità di Frame Skip (con l’aiuto di @rtiangha).
- Android: Implementazione dell’Adreno GPU Boost (@Ishan09811).
- Android e PC: Implementazione dell’audio in tempo reale.
- Android e PC: Implementazione della riduzione del downcount slice (basata sulla hack del limite di utilizzo della CPU di @weihuoya).
- renderer_vulkan: Generazione iniziale di shader vertice SPIR-V (@Wunkolo).
- Android: Aggiunta di bindings per il d-pad (@OpenSauce04).
- Android: Implementazione del contatore dell’uso della RAM nel contatore FPS (@Ishan09811).
- Android: I gamepad ora possono controllare il menu in-game (@OpenSauce04).
- citra_qt: Aggiunta del supporto per i preferiti, le scorciatoie desktop e il tracciamento del tempo di gioco (@FearlessTobi).
- PC: Migliori titoli di gioco nella finestra e supporto per Discord RPC (@BlurrySquire).
- PC: Implementazione di una scheda delle impostazioni Layout e supporto (@blakbin).
- glsl_fs_shader_gen: Utilizzo di un metodo migliore per scartare GasMode.
- Android: Implementazione della finestra “Informazioni sul gioco” (@Ishan09811).
- Android: Correzione di bug delle impostazioni non eseguibili a runtime (@Ishan09811).
Novità del rebranding Mandarine
- Le hack Skip Slow Draw, Skip Texture Copy e Skip CPU Write sono state rinominate in Force Hardware Vertex Shaders, Disable Surface Texture Copy e Disable Flush CPU Write.
- Le nuove opzioni sono state riorganizzate e posizionate in posizioni migliori.
- Risolti tutti i problemi grafici relativi al frameskip.
- memory.cpp: Correzione di una piccola perdita di memoria.
- Android: Sostituzione della compagnia con la regione di gioco per i giochi di carte.
- PC: Implementazione della funzionalità di migrazione dei dati dell’emulatore e relativo prompt (@OpenSauce04).
- Android: Implementazione dell’opzione “Espandi per display cutout”.
- Android: Reimplementazione del ForegroundService.
- oboe_sink: Impostazione di AudioApi su OpenSLES e miglioramenti minori.
- externals: Aggiornamenti massivi dei sottogruppi (header Vulkan, glslang, libadrenotools…).
- pica_types: Restrizione corretta della precisione Float<M, E> (@vitor-k).
- Ulteriori miglioramenti e pulizie minori.
Download
Versioni stabili
Versioni di sviluppo
(software pre-release, potrebbero essere instabili)
- Windows: Qt Build – Windows MSVC
- Android: Qt Build – Android-APK
- Linux: Qt Build – Linux AppImage
- Mac OS: Qt Build – Mac OS Universal
Download: Source code Mandarine v1.0
Fonte: github.com