Home News Disponibile la nuova versione 4.0.0 della libreria Libnx

[Scena Switch] Disponibile la nuova versione 4.0.0 della libreria Libnx

152
0

Disponibile un nuovo aggiornamento per la libreria Libnx utilizzata per la compilazione di applicazioni homebrew da poter eseguire sul firmware 11.0.0+ della console ibrida Nintendo Switch.


Libnx prende base dalla libreria Libctru, largamente utilizzata per lo sviluppo di applicazioni homebrew sulla console portatile 3DS. L’aggiornamento introduce anche diverse funzioni, corregge alcuni bug e migliora la stabilità delle applicazioni compilate.

Changelog

System

  • Aggiunto supporto per la primitiva di sincronizzazione degli eventi light (richiede [4.0.0+] o mesosphère).
  • L’API virtmem è stata completamente riprogettata per supportare ASLR e aumentare la sicurezza dei thread.
  • Aggiunto diagAbortWithResult, una funzione di panic user sovrascrivibile che ha lo scopo di sostituire fatalThrow per impedire agli homebrew di trattare gli errori dell’applicazione come errori di sistema fatali che portano l’intero sistema operativo inattivo.
    • L’implementazione predefinita utilizza svcBreak.
    • Sostituite le chiamate a fatalThrow con diagAbortWithResult in libnx.
  • Aggiunto detectMesosphere.
  • Aggiunto svcGetResourceLimitPeakValue [11.0.0+].
  • Aggiunto InfoType_FreeThreadCount [11.0.0+].
  • Correzione della definizione di svcBreak e aggiunta dell’enumerazione BreakReason.
  • Rimosso il codice obsoleto di rilevamento della versione del kernel.
    • Il wrapper fatale del servizio ora controlla hosversion.
    • Il wrapper oggetto Jit ora controlla i suggerimenti di syscall forniti dall’ambiente homebrew (richiede nx-hbloader 2.4.0+).
  • Varie correzioni e ottimizzazioni di crt0/linkscript.

Input

  • Importante refactor del servizio HID, inclusa un’API ridisegnata che segue l’uso ufficiale in modo più accurato, consentendo maggiore flessibilità e migliorata manutenibilità futura. Sommario dei cambiamenti:
    • Introdotti HidNpadIdType, HidNpadStyleTag, enumerazioni HidNpadButton e altri.
    • Le enumerazioni e le strutture sono state aggiornate per riflettere più accuratamente i nomi ufficiali; ciò influisce anche su tutti gli altri servizi correlati a HID.
    • Tutto ciò che in precedenza accettava i parametri HidControllerID ora accetta invece HidNpadIdType; questo riguarda anche tutti gli altri servizi correlati a HID.
    • I tipi di handle (come gli handle dei sensori di vibrazione e sixaxis) ora sono strutture invece di valori interi nudi; ciò influisce anche su tutti gli altri servizi correlati a HID.
    • Introdotte funzioni di inizializzazione esplicite per Npad, TouchScreen, Mouse, Tastiera.
    • Introdotte (o rinominate) funzioni per configurare o recuperare lo stile di input di Npad e altri comportamenti associati.
    • Introdotta la famiglia di funzioni hidGetNpadStates{X}, che legge lo stato corrente di un Npad nello stile dato.
    • Allo stesso modo sono stati introdotti hidGetTouchScreenStates, hidGetMouseStates, hidGetKeyboardStates, hidGetSixAxisSensorStates.
    • Aggiunto supporto per la maggior parte degli altri comandi di servizi nascosti vari.
    • Deprecata l’intera vecchia API, inclusi ma non limitati a: hidScanInput, hidGetKeysDown/Held/Up, hidTouchCount, hidTouchRead, ecc..
      • Rimosso hidSetControllerLayout/hidGetControllerLayout insieme a HidControllerLayoutType.
    • Introdotta una nuova API wrapper Pad che sostituisce la vecchia API per l’utilizzo dell’applicazione.
    • Introdotta l’API PadRepeater.
  • Aggiunto supporto completo per i controller GameCube, Palma (Poké Ball Plus), Lark (NES) e Lucia (SNES).
  • Aggiunto supporto per i gesti.
  • Migliorato il supporto per SevenSixAxisSensor.
  • Aggiunto supporto hiddbg AutoPilot per DebugPad, TouchScreen, Mouse, Tastiera.
  • Aggiunto hiddbgDeactivateHomeButton.
  • Aggiunta l’enumerazione di HiddbgNpadButton con i pulsanti Home/Capture (esclusiva per lo stato del pad hiddbg).
  • Wrapper del servizio hidsys aggiornato per [11.0.0+], inclusa una nuova funzionalità.
  • Aggiunto hidsysSendKeyboardLockKeyEvent, hidsysGetNpadInterfaceType, hidsysGetNpadLeftRightInterfaceType, hidsysHasBattery, hidsysHasLeftRightBattery, hidsysIsUsbFullKeyControllerEnabled, hidsysEnableUsbFullKeyController, hidsysIsUsbConnected, hidsysIsFirmwareUpdateNeededForNotification.
  • Migliorato il supporto per i comandi dei pulsanti Home/Sleep/Capture di hidsys.
  • Aggiunta la struttura HidsysUniquePadSerialNumber.
  • Corretto bug nel codice hidbus/Ring-Con che poteva causare un arresto anomalo dopo la pulizia.

Applet

  • Aggiornato applet service wrapper per [11.0.0+], inclusa la nuova funzionalità.
  • Rinominati diversi membri nelle seguenti enumerazioni per riflettere più accuratamente i nomi ufficiali: AppletOperationMode, AppletHookType, AppletMessage, AppletFocusState, AppletFocusHandlingMode, AppletId, AppletWirelessPriorityMode, AppletWindowOriginMode.
  • Aggiunto appletHolderGetExitEvent, appletHolderGetPopInteractiveOutDataEvent.
  • Aggiunto libappletRequestToLaunchApplication, libappletRequestJumpToStory [11.0.0+].
  • Aggiunto webConfigSetTransferMemory.
  • Aggiunto swkbdInlineGetMaxHeight, swkbdInlineGetTouchRectangles, swkbdInlineIsUsedTouchPointByKeyboard, swkbdInlineGetMiniaturizedHeight.
  • Aggiunto wrapper nfpLa (amiibo).
  • Aggiunto wrapper miiLa (Mii editor).
  • Aggiunto wrapper nifmLa.
  • Aggiornato swkbd per [10.0.0+].
  • Aggiornato web per [10.0.0+].
  • Aggiornato hidLa per [11.0.0] + varie correzioni.
  • Implementato supporto per WebSession in web.
  • Implementato supporto per la modalità UserDisplay in swkbd.

Filesystem

  • Aggiunto fsCreateSaveDataFileSystem, fsDeleteSaveDataFileSystem, fsDeleteSaveDataFileSystemBySaveDataAttribute.
  • Aggiunto fsOpenDataFileSystemByCurrentProcess, fsOpenDataFileSystemByProgramId, fsOpenDataStorageByProgramId, fsOpenPatchDataStorageByCurrentProcess.
  • Aggiunto fsOutputAccessLogToSdCard, fsGetProgramIndexForAccessLog.
  • Aggiunto romfsMountDataStorageFromProgram.
  • Corretto il problema con le statistiche sui dispositivi romfs per segnalare correttamente gli errori per file/directory inesistenti.

Altri servizi

  • Aggiunti wrapper del servizio Bluetooth (bt, btdrv, btm, btm:u, btm:sys).
    • Aggiunta API wrapper btdev.
  • Aggiunti wrapper di servizi ins:r e ins:s.
  • Aggiunto wrapper del servizio uart.
  • Aggiunto wrapper del servizio news.
  • Aggiunto wrapper del servizio lp2p.
  • Aggiunto wrapper del servizio ectx:r [11.0.0+].
  • Aggiunto wrapper del servizio capmtp [11.0.0+].
  • Aggiunto smDetachClient [11.0.0+].
  • Aggiunta l’enumerazione ErrorContextType.
  • Aggiornato il wrapper del servizio gpio per aggiungere la maggior parte delle funzionalità mancanti.
  • Aggiornato il wrapper del servizio psm per aggiungere più funzioni della batteria.
  • Aggiornato loader service wrapper per [11.0.0+].
  • Aggiornato il wrapper del servizio usb:ds per [11.0.0+].
  • Wrapper del servizio impostato e aggiornato per [10.1.0+], inclusa la nuova funzionalità.
  • Aggiornato il wrapper del servizio ns per considerare ns:ro se disponibile [11.0.0+].
  • Aggiornamento dell’enumerazione del servizio SSL SslVersion per [11.0.0+].
  • Rinominati diversi membri nelle seguenti enumerazioni per riflettere più accuratamente i nomi ufficiali: ApmPerformanceMode, ApmCpuBoostMode.
  • Corretto bug nel wrapper del servizio splCryptoGetSecurityEngineEvent.
  • Corretto audoutOpenAudioOut per passare correttamente aruid, rendendo nuovamente utilizzabile il servizio (e ripristinando la compatibilità con [1.0.0]).
  • Correzioni di affidabilità e usabilità in usb:ds:
    • Aggiunta l’enumerazione UsbState (ora restituita da usbDsGetState).
    • Corretto il problema con usbDsWaitReady per rispettare correttamente il timeout specificato.

Diversi problemi sono stati corretti e l’usabilità e la stabilità sono state migliorate.

Download: Source code Libnx v4.0.0

Fonte: github.com

Articolo precedente[Scena PS3] Rilasciato etHANol v3.0.4
Articolo successivoDefense Grid: The Awakening gratuito su Epic Games Store
Sono Nato nel 1980 e da diversi anni coltivo la passione per tutto ciò che riguarda il mondo dei videogiochi, ho vissuto l'era degli home computer con il Commodore 64 e l'Amiga 500, da sempre appassionato di giochi di ruolo e di titoli di avventura.