Skip to content

Releases: switchbrew/libnx

libnx v4.2.0

02 Oct 14:58
748cf5a
Compare
Choose a tag to compare

system

  • Added new SVCs introduced in [13.0.0+].
  • Thread structures are now pre-populated with information prior to creation.

input

  • hidsys: Added support for [13.0.0+].
  • hiddbg: Added support for [13.0.0+].

graphics

  • Fixed crashes caused by arbitrary sizes in linear framebuffers.

other

  • ncm: Added support for [13.0.0+].
  • setsys: Added support for [13.0.0+].
    • Filled in SetSysNxControllerSettings structure definition (which was previously unpopulated).
  • btm: Added support for [13.0.0+].
  • btdrv: Added support for [13.0.0+].
    • Fixed btdrvRespondToSspRequest for [12.0.0+].
  • psel: Added support for [13.0.0+] (pselShowUserQualificationPromoter).
  • Corrected ldr:ro/ro:1 initialization.

Several issues were fixed, and usability and stability were improved.

libnx v4.1.3

25 Jun 17:34
bee27ba
Compare
Choose a tag to compare

Check v4.1.0 changelog for more details.

input

  • Removed old deprecated HID API.

network

  • Fixed inet_pton implementation.

Several issues were fixed, and usability and stability were improved.

libnx v4.1.0

12 Jun 14:42
c3ea95c
Compare
Choose a tag to compare

system

  • Removed old virtmem API.
  • Added mechanism for overriding libnx's dynamic memory allocation behavior.
    • This also added specific mechanisms for NV and BSD transfer memory handling.
  • Added hosversionIsAtmosphere, together with support for receiving this information through HBABI.
  • Added tipc (Tiny IPC) serialization support, introduced in [12.0.0+].
    • Updated sm, sm:m and pgl wrappers for tipc support.
  • Fixed certain serialization bug in cmif handling code.
  • argv setup code can now be overriden.
  • virtmem RNG algorithm can now be overriden.
  • Added support for incremental CRC calculations.

fs

  • Added fsOpenHostFileSystem(WithOption).

input

  • Added HidKeyboardKey enum.
  • Added hidKeyboardStateGetKey helper function.
  • Added support for SleepButton AutoPilot in hiddbg.
  • Updated hdls service wrapper for [12.0.0+].
  • Corrected HidGestureAttribute, HidGestureState.
  • Corrected several swkbd enums and structs.
  • Minor Palma documentation improvements.

other services

  • Updated btdrv service wrapper for [12.0.0+], along with fixes and improved support.
  • Added audctl service wrapper.
  • Added audrec service wrapper.
  • Added avm service wrapper.
  • Added friends service wrapper (minimal functionality needed for retrieving the user's friend code).
  • Added htcs service wrapper.
  • Added mm:u service wrapper.
  • Added new nvioctlChannel_* wrappers: Submit, GetSyncpt, GetModuleClockRate, MapCommandBuffer, UnmapCommandBuffer.
  • Added SetSysProductModel enum, now used by setsysGetProductModel.
  • Added audrvVoiceIsPaused.
  • Updated BtmDeviceCondition struct, including compatibility with all system versions.
  • Corrected pscmGetPmModule prototype.
  • Renamed ChargerType to PsmChargerType, corrected enum names.
  • Fixed bug in time offset handling.
  • Fixed bug in BSD (sockets) initialization.

Several issues were fixed, and usability and stability were improved.

libnx v4.0.1 (interim)

05 Mar 23:19
639eb86
Compare
Choose a tag to compare

Includes all commits from v4.0.0 up until 0716ed6, except 637dd12.

libnx v4.0.0

19 Dec 16:05
73feb93
Compare
Choose a tag to compare

system

  • Added support for the light event synchronization primitive (needs [4.0.0+] or mesosphère).
  • The virtmem API was completely redesigned to support ASLR and increase thread safety.
  • Added diagAbortWithResult, an overridable user panic function which is intended to replace fatalThrow in order to stop homebrew from treating application errors as fatal system errors that bring the entire OS down.
    • The default implementation uses svcBreak.
    • Replaced calls to fatalThrow with diagAbortWithResult throughout libnx.
  • Added detectMesosphere.
  • Added svcGetResourceLimitPeakValue [11.0.0+].
  • Added InfoType_FreeThreadCount [11.0.0+].
  • Corrected svcBreak definition and added BreakReason enum.
  • Removed obsolete kernel version detection code.
    • fatal service wrapper now checks hosversion.
    • Jit object wrapper now checks syscall hinting provided by the homebrew environment (requires nx-hbloader 2.4.0+).
  • Miscellaneous crt0/linkscript fixes and optimizations.

input

  • Major refactor of the HID service, including a redesigned API that follows official usage more accurately, allowing more flexibility and improved future maintainability. Summary of changes:
    • Introduced HidNpadIdType, HidNpadStyleTag, HidNpadButton enums and others.
    • Enums and structs were updated to more accurately reflect official names; this also affects all other hid related services.
    • Everything which formerly took HidControllerID parameters now takes HidNpadIdType instead; this also affects all other hid related services.
    • Handle types (such as vibration and sixaxis sensor handles) are now structs instead of bare integer values; this also affects all other hid related services.
    • Introduced explicit initialization functions for Npad, TouchScreen, Mouse, Keyboard.
    • Introduced (or renamed) functions for configuring or retrieving Npad input style and other associated behavior.
    • Introduced the hidGetNpadStates{X} family of functions, which read the current state of a Npad in the given style.
    • Likewise introduced hidGetTouchScreenStates, hidGetMouseStates, hidGetKeyboardStates, hidGetSixAxisSensorStates.
    • Added support for most other miscellaneous hid service commands.
    • Deprecated the entirety of the old API, including but not limited to: hidScanInput, hidGetKeysDown/Held/Up, hidTouchCount, hidTouchRead, etc.
      • Removed hidSetControllerLayout/hidGetControllerLayout together with HidControllerLayoutType.
    • Introduced a new wrapper Pad API that replaces the old API for application usage.
    • Introduced PadRepeater API.
  • Added full support for GameCube, Palma (Poké Ball Plus), Lark (NES) and Lucia (SNES) controllers.
  • Added support for gestures.
  • Improved support for SevenSixAxisSensor.
  • Added hiddbg AutoPilot support for DebugPad, TouchScreen, Mouse, Keyboard.
  • Added hiddbgDeactivateHomeButton.
  • Added HiddbgNpadButton enum with Home/Capture buttons (exclusive to hiddbg pad state).
  • Updated hidsys service wrapper for [11.0.0+], including new functionality.
  • Added hidsysSendKeyboardLockKeyEvent, hidsysGetNpadInterfaceType, hidsysGetNpadLeftRightInterfaceType, hidsysHasBattery, hidsysHasLeftRightBattery, hidsysIsUsbFullKeyControllerEnabled, hidsysEnableUsbFullKeyController, hidsysIsUsbConnected, hidsysIsFirmwareUpdateNeededForNotification.
  • Improved support for hidsys' Home/Sleep/Capture button commands.
  • Added HidsysUniquePadSerialNumber struct.
  • Fixed bug in hidbus/Ring-Con code that could cause a crash following cleanup.

applets

  • Updated applet service wrapper for [11.0.0+], including new functionality.
  • Renamed several members in the following enums to more accurately reflect official names: AppletOperationMode, AppletHookType, AppletMessage, AppletFocusState, AppletFocusHandlingMode, AppletId, AppletWirelessPriorityMode, AppletWindowOriginMode.
  • Added appletHolderGetExitEvent, appletHolderGetPopInteractiveOutDataEvent.
  • Added libappletRequestToLaunchApplication, libappletRequestJumpToStory [11.0.0+].
  • Added webConfigSetTransferMemory.
  • Added swkbdInlineGetMaxHeight, swkbdInlineGetTouchRectangles, swkbdInlineIsUsedTouchPointByKeyboard, swkbdInlineGetMiniaturizedHeight.
  • Added nfpLa wrapper (amiibo).
  • Added miiLa wrapper (Mii editor).
  • Added nifmLa wrapper.
  • Updated swkbd for [10.0.0+].
  • Updated web for [10.0.0+].
  • Updated hidLa for [11.0.0] + misc fixes.
  • Implemented support for WebSession in web.
  • Implemented support for UserDisplay mode in swkbd.

filesystem

  • Added fsCreateSaveDataFileSystem, fsDeleteSaveDataFileSystem, fsDeleteSaveDataFileSystemBySaveDataAttribute.
  • Added fsOpenDataFileSystemByCurrentProcess, fsOpenDataFileSystemByProgramId, fsOpenDataStorageByProgramId, fsOpenPatchDataStorageByCurrentProcess.
  • Added fsOutputAccessLogToSdCard, fsGetProgramIndexForAccessLog.
  • Added romfsMountDataStorageFromProgram.
  • Fixed stat on romfs devices to report failure properly for non-existent files/directories.

other services

  • Added Bluetooth (bt, btdrv, btm, btm:u, btm:sys) service wrappers.
    • Added btdev wrapper API.
  • Added ins:r and ins:s service wrappers.
  • Added uart service wrapper.
  • Added news service wrapper.
  • Added lp2p service wrapper.
  • Added ectx:r service wrapper [11.0.0+].
  • Added capmtp service wrapper [11.0.0+].
  • Added smDetachClient [11.0.0+].
  • Added ErrorContextType enum.
  • Updated gpio service wrapper to add most missing functionality.
  • Updated psm service wrapper to add more battery functions.
  • Updated loader service wrapper for [11.0.0+].
  • Updated usb:ds service wrapper for [11.0.0+].
  • Updated set service wrapper for [10.1.0+], including new functionality.
  • Updated ns service wrapper to consider ns:ro if available [11.0.0+].
  • Updated ssl service enum SslVersion for [11.0.0+].
  • Renamed several members in the following enums to more accurately reflect official names: ApmPerformanceMode, ApmCpuBoostMode.
  • Fixed bug in splCryptoGetSecurityEngineEvent service wrapper.
  • Fixed audoutOpenAudioOut to properly pass aruid, making the service usable once again (and restoring compatibility with [1.0.0]).
  • Reliability and usability fixes in usb:ds:
    • Added UsbState enum (now returned by usbDsGetState).
    • Fixed usbDsWaitReady to properly respect the given timeout.

Several issues were fixed, and usability and stability were improved.

libnx v3.3.0

27 May 14:54
bce0ea8
Compare
Choose a tag to compare

system

  • Mutex implementation has been rewritten/optimized to more closely match official software.

filesystem

  • Added lstat support to both fsdev and romfsdev (does the same thing as regular stat, as symlinks don't exist on HOS).
  • Fixed stat for romfs directories.

other services

  • ldn: Added service wrappers.
  • nifm: Added IRequest support.

libnx v3.2.0

11 May 18:29
d1f4b11
Compare
Choose a tag to compare

system

  • Added threadGetSelf.
  • Added a Thread struct for the main thread.
  • Corrected error code in shmemMap.
  • Updated svcQueryIoMapping to match new 10.0.0+ ABI change. Old version still available as svcLegacyQueryIoMapping.
  • Minor fixes in jit wrapper object.

network

  • Added support for the ssl service.
    • Added socketSslConnectionSetSocketDescriptor and socketSslConnectionGetSocketDescriptor (for usage with SSL).
  • Added support for recvmsg/sendmsg and sendmmsg/recvmmsg [7.0.0+].
  • Added nifmGetCurrentNetworkProfile, nifmGetNetworkProfile, nifmSetNetworkProfile, nifmGetCurrentIpConfigInfo.
  • Added structs: NifmIpV4Address, NifmIpAddressSetting, NifmDnsSetting, NifmProxySetting, NifmIpSettingData, NifmWirelessSettingData, NifmSfWirelessSettingData, NifmSfNetworkProfileData, NifmNetworkProfileData.

devices

  • Changed libnx console to only hook stdout. If stderr is necessary, use consoleDebugInit(debugDevice_CONSOLE) explicitly.
  • Added nxlinkConnectToHost with separate flags for redirecting stdout/err.
  • Added nxlinkStdioForDebug, which only redirects stderr and not stdout.

graphics

  • Added priority parameter to nvGpuChannelCreate.
  • Fixed cleanup logic in nvChannelClose.
  • Added nvGpuChannelGetErrorInfo.
  • Renamed NvError struct & NvErrorType enum to NvNotification/NvNotificationType.

other services

  • applet: Support changes for 10.0.0+, including new command support.
    • swkbd: appletHolderPresetLibraryAppletGpuTimeSliceZero is now called on 10.0.0+.
  • audout: Added all remaining IAudioOut commands.
  • bpc: Added hosversion check to bpcGetSleepButtonState.
  • caps: Correct CapsScreenShotDecodeOption.
  • capssc:
    • Added capsscCaptureJpegScreenShot, capsscOpenRawScreenShotReadStream, capsscCloseRawScreenShotReadStream, capsscReadRawScreenShotReadStream.
    • Changed capsscCaptureRawImageWithTimeout to use ViLayerStack enum.
  • fsldr: Support changes for 10.0.0+, including new command support.
  • fsp-pr + ldr: Support changes for 10.0.0+ (SetEnabledProgramVerification changed places).
  • hidsys: Support changes for 10.0.0+, including new command support.
  • irs: Corrected bug on initialization caused by invalid system version logic.
  • lr: Added lrLrEraseProgramRedirection [5.0.0+].
  • mii: Added service wrappers.
  • miiimg: Added service wrappers.
  • nfp: Corrected definition of nfpOpenApplicationArea.
  • ns: Support changes for 10.0.0+, including new command support (also some other misc fixes).
  • pdm: Support changes for 10.0.0+, including new command support.
  • pgl: Added service wrappers [10.0.0+].
  • pl: Added support for changing the service type (PlServiceType).
  • pmshell: Renamed pmshellBoostSystemThreadResourceLimit to pmshellEnableApplicationExtraThread.
  • psc: Corrected hosversion check in pscPmModuleAcknowledge.
  • set:
    • Added new 10.0.0+ commands.
    • Corrected definition of SetRegion to match actual usage.
    • Corrected setsysGetSerialNumber.
    • Corrected setcalGetGyroscopeOffset to use the right struct.
  • time:
    • Added support for time shared memory [6.0.0+].
    • Added timeGetStandardSteadyClockTimePoint.
    • Added timeGetStandardSteadyClockInternalOffset [3.0.0+].
    • Added TimeStandardSteadyClockTimePointType struct.
    • Changed timeGetCurrentTime to use shared memory on 6.0.0+.
  • vi: Added ViLayerStack enum.

miscellaneous

  • Corrected and updated nacp structs.
  • Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.

libnx v3.1.0

05 Apr 00:52
d9c3593
Compare
Choose a tag to compare

system

  • Deleted the old and deprecated IPC system.
  • Added wrappers for all missing system calls.
  • Corrected signatures of many system calls.
  • Removed arm/atomics.h (use C <stdatomic.h> or C++ <atomic> instead).
  • Removed U64_MAX define (use UINT64_MAX instead).
  • Added UtilFloat3 struct.

applet

  • Fixed __nx_applet_exit_mode handling.
  • apm is now only used/initialized for AppletType_Application.
  • Simplified appletGetAppletResourceUserId to return the aruid directly, or 0 on "failure" (which is not really a failure condition).
  • Changed appletSetFocusHandlingMode to return error if the applet type is not AppletType_Application.
  • Added more fields to SwkbdType enum.

filesystem

  • RomFS code now properly supports reading to uncached buffers.
  • Added fsdev commands: fsdevMountDeviceSaveData, fsdevMountBcatSaveData, fsdevMountSystemBcatSaveData, fsdevMountTemporaryStorage, fsdevMountCacheStorage, fsdevMountSaveDataReadOnly.
  • Added commands: fsOpenImageDirectoryFileSystem, fsOpenReadOnlySaveDataFileSystem, fsIsSignedSystemPartitionOnSdCardValid, fsOpen_DeviceSaveData, fsOpen_BcatSaveData, fsOpen_SystemBcatSaveData, fsOpen_TemporaryStorage, fsOpen_CacheStorage, fsOpen_SaveDataReadOnly.
  • Added enum: FsImageDirectoryId.
  • Removed path stack copy logic from fsFsQueryEntry.

graphics

  • Removed bqDetachBuffer calls from nwindowReleaseBuffers as it does nothing in the place it's called.
  • Fixed nvFence/nvGpu/nvMap to use service guard instead of unsafe reference counting.

hid

  • Fixed vibration handling.
  • Added Ring-Con™ support.
  • Added hidbus service wrappers.
  • Added commands: hidSetSixAxisSensorFusionParameters, hidGetSixAxisSensorFusionParameters, hidResetSixAxisSensorFusionParameters, hidSetGyroscopeZeroDriftMode, hidGetGyroscopeZeroDriftMode, hidResetGyroscopeZeroDriftMode.
  • Majorly overhauled irs service support (infrared camera), with support for features introduced in later system versions.
  • Added enum: HidGyroscopeZeroDriftMode.
  • Corrected internal console six-axis sensor initialization function to actually use the right command.
  • Corrected values of JOYSTICK_MIN and JOYSTICK_MAX.

other services

  • Added apm command: apmGetPerformanceMode.
  • Added caps:a service wrappers.
  • Added caps:c service wrappers.
  • Added caps:dc service wrappers.
  • Added fan service wrappers.
  • Added many missing lbl commands.
  • Added nifm commands: nifmGetClientId (with corresponding NifmClientId struct), nifmIsAnyInternetRequestAccepted.
  • Added nim service wrappers (only nimListSystemUpdateTask/nimDestroySystemUpdateTask for now).
  • Majorly overhauled ns service support, with countless commands and structures.
  • Added set:cal service wrappers.
  • Completed and corrected all set:sys commands.
  • Added tc service wrappers.
  • Actually expose ldrShellFlushArguments, ldrDmntFlushArguments, spl*GetServiceSession.
  • Corrected minimum sysver for setsysGetHomeMenuScheme.
  • Corrected minimum sysver for nsListApplicationContentMetaStatus.
  • Fixed splSslLoadSecureExpModKey/splEsLoadSecureExpModKey/splRsaDecryptPrivateKey/splSslLoadSecureExpModKey/splEsLoadRsaOaepKey/splEsLoadSecureExpModKey/splFsLoadSecureExpModKey on 5.0+.
  • Fixed plInitialize failure handling.
  • Removed non-existent fsldrSetCurrentProcess.

miscellaneous

  • Changed timezone support code to always report NX as the timezone name, fixing certain issues.
  • Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.

libnx v3.0.0

10 Dec 23:42
d1e5a5d
Compare
Choose a tag to compare

system

  • The IPC system has been redesigned with a brand new interface and implementation.
    • Changed serviceClone to actually use the non-Ex cmif control command.
    • Added serviceCloneEx.
  • Added NX_INLINE and NX_CONSTEXPR helper macros.
  • Added ServiceMgr object, used for multiplexed multithreaded services.
  • Native threading API now supports using user-provided memory as stack.
    • pthread explicit stack ptr/size attributes are now supported.
  • Fixed incorrect bounds check in virtmem code (solves long-standing JIT bug).
  • Added InfoType_IsApplication.
  • Added LibnxError_ShouldNotHappen.
  • Read-write lock object (rwlock) was completely rewritten to closely match the official implementation.

services in general

  • All service wrappers have been converted to use the new IPC interface.
    • Fixed thread safety during service init/exit.
    • Numerous commands that had IPC bugs were fixed.
  • Improved documentation for many services (list too long to fit here).
  • Corrected and documented system version checks for many different commands.
  • Corrected many structs to avoid using types with incorrect alignment or size.
  • Changed many names of fields in several structs to be more consistent and less random.
  • Corrected many parameter types and names to be more consistent with official software (as well as using enums when possible).
  • Phased out non-existent "Title ID" concept in favor of "Program ID" or other applicable official ID names.
    • Many parameter and enum names were renamed as a result.
  • Added AccountUid struct, which replaces u128 user ids throughout libnx and reduces the need for packed structs. "userID" replaced by "uid" throughout libnx.
    • Added accountUidIsValid.
  • Added Uuid struct, which replaces u128 uuids where applicable and reduces the need for packed structs.
  • Added NacpSendReceiveConfiguration struct.
  • Updated NacpStruct with many fixes and additions.
  • Fixed locking issue in usbComms which caused a hang in usbCommsInitialize(Ex) on failure.

sm

  • Introduced SmServiceName structure:
    • Added constexpr helper functions: smServiceNameToU64, smServiceNameFromU64, smServiceNamesAreEqual, smEncodeName.
    • All SM functions now take in SmServiceName instead of a string, except for smGetService.
      • Added smGetServiceWrapper (which takes SmServiceName and looks inside the override list).
      • smGetService is now an inline wrapper for smEncodeName+smGetServiceWrapper.
  • Removed smHasInitialized.

filesystem

  • Added transparent multithreaded filesystem support.
    • Default maximum number of concurrent filesystem operations is 3, this can be changed through the __nx_fs_num_sessions weak var.
  • Added fsSetPriority, fsFsIsValidSignedSystemPartitionOnSdCard.
  • Thoroughly fixed the names of commands, enums, flags to match official software and be more consistent with the libnx code style (list too long to fit here).
  • Removed FS_SAVEDATA_USERID_COMMONSAVE.
  • Renamed FsStorageId to NcmStorageId (and renamed enum value names too).
  • Added FsSaveDataSpaceId_ProperSystem, FsFileSystemType_RegisteredUpdate, FsSaveDataSpaceId_SdUser, FsSaveDataSpaceId_SafeMode.
  • Added FsSaveDataType_SystemBcat.
  • Added FsGameCardPartition_Logo. (also, a typo was fixed in the name of this enum)
  • Added FsSaveDataFlags_NeedsSecureDelete.
  • Added FsSaveDataRank enum.
  • Added FsFileSystemQueryId_IsValidSignedSystemPartitionOnSdCard.
  • Added FsGameCardAttribute_DifferentRegionCupToTerraDeviceFlag, FsGameCardAttribute_DifferentRegionCupToGlobalDeviceFlag.
  • Renamed FsBisStorageId to FsBisPartitionId.
    • Added FsBisPartitionId_SignedSystemPartitionOnSafeMode.
  • Removed spurious inval param from fsDirRead.
  • fspr:
    • Now using domains.
  • fsdev:
    • Timestamps are now converted into proper POSIX UTC format instead of local time.
    • Directory iterator memory footprint can now be configured with __nx_fsdev_direntry_cache_size.
    • Reduced TLS footprint for rarely used codepaths.
    • Reduced TLS footprint by sharing the path buffer with romfsdev.
    • Removed fsdevGetDefaultFileSystem and default-fs handling.
    • Refactored CWD support to have (dynamically allocated) per-device CWDs (CWD support as a whole can be turned off with __nx_fsdev_support_cwd).
    • Many internal optimizations that reduce unnecessary lookups and buffer copies.
    • Fixed string comparison logic in fsdevFindDevice.
    • Mounting a filesystem now automatically sets the default device if there wasn't any previous default device (or if it's stdnull).
    • fsdevMountSdmc no longer sets cwd to the folder containing the executable; this logic was moved to a new internal function called on startup by default (and it is now disabled for NSOs).
    • Added fsdevMountSaveData/SystemSaveData wrappers.
    • Added fsdevIsValidSignedSystemPartitionOnSdCard.
    • Enhanced fsOpen_SystemSaveData/fsdevMountSystemSaveData with new parameters.
  • romfsdev:
    • Reduced TLS footprint by sharing the path buffer with fsdev.
    • Cleaned up romfsMount* functions and removed unused/unnecessary logic.
    • Changed romfsMount* functions to return real result codes.
    • Renamed romfsMount to romfsMountSelf.
    • Removed romfsInitFromFile and romfsInitFromStorage (use Mount instead).
    • Added bounds-checking safety measures.
    • Fixed errno to use ENOENT instead of EEXIST where required.

network

  • Added transparent multithreaded socket support.
    • Default maximum number of concurrent socket operations is 3, this can be changed through SocketInitConfig::num_bsd_sessions.
  • DNS resolver support was rewritten and spun off from the socket device wrapper.
    • No initialization is required to use resolver functions.
    • Removed phantom sfdnsres commands.
    • Redesigned sfdnsres IPC wrappers.
      • "timeout" was actually the cancel handle.
    • Fixed bug in addrinfo deserialization.
    • Fixed bug in getaddrinfo when hints is NULL.
    • Added commands to configure behavior: resolverGetCancelHandle, resolverGetEnableServiceDiscovery, resolverSetEnableServiceDiscovery, resolverCancel.
      • Placeholders for not-yet-implemented 5.0+ config keys: resolverGetEnableDnsCache, resolverSetEnableDnsCache, resolverRemoveHostnameFromCache, resolverRemoveIpAddressFromCache.
  • Added service session getters: nifmGetServiceSession_StaticService, nifmGetServiceSession_GeneralService.
  • Introduced BsdServiceType enum, which is now used for revised service type handling (bsd:u is now the default service).
  • SocketInitConfig was changed:
    • Added num_bsd_sessions and bsd_service_type fields.
    • Removed fields related to sfdnsres.
  • socketInitialize no longer initializes nifm. As a result, gethostid now calls nifmInitialize/nifmExit as needed.
  • Renamed socketGetLastBsdResult to socketGetLastResult.
  • Renamed socketGetLastSfdnsresResult to resolverGetLastResult.

applet

  • Many internal improvements and fixes stemming from new IPC refactoring.
  • appletGetOperationMode now returns AppletOperationMode instead of u8.
  • appletGetPerformanceMode now returns ApmPerformanceMode instead of u8.
  • Added 9.0+ support for using appletSetTerminateResult via IAppletCommonFunctions.
  • Added 9.0+ support for using appletGetLaunchStorageInfoForDebug, appletGetGpuErrorDetectedSystemEvent with AppletType_LibraryApplet.
  • Added 9.1+ support for using appletSetHandlingHomeButtonShortPressedEnabled with non-AppletType_OverlayApplet.
  • Added appletPushToAppletBoundChannel, appletTryPopFromAppletBoundChannel, appletGetSettingsPlatformRegion, appletSetHdcpAuthenticationActivated, appletSetInputDetectionPolicy, appletSetHealthWarningShowingState, appletGetHealthWarningDisappearedSystemEvent, appletIsForceTerminateApplicationDisabledForDebug, appletGetFriendInvitationStorageChannelEvent, appletTryPopFromFriendInvitationStorageChannel, appletGetNotificationStorageChannelEvent, appletTryPopFromNotificationStorageChannel, appletApplicationPushToFriendInvitationStorageChannel, appletApplicationPushToNotificationStorageChannel, appletPushToAppletBoundChannelForDebug, appletTryPopFromAppletBoundChannelForDebug, appletAlarmSettingNotificationEnableAppEventReserve, appletAlarmSettingNotificationDisableAppEventReserve, appletAlarmSettingNotificationPushAppEventNotify, appletFriendInvitationSetApplicationParameter, appletFriendInvitationClearApplicationParameter, appletFriendInvitationPushApplicationParameter.
  • Added enum: AppletInputDetectionPolicy.

libapplets

  • Added support for the friendsLa libapplet.
  • Added support for the psel (player select) libapplet.
  • Added support for the hidLa (controller configuration) libapplet.
  • Renamed webConfigSetUserID to webConfigSetUid.
  • Renamed WebArgType_UserID to WebArgType_Uid.

ns

  • Corrected names of nsdevLaunchApplicationForDevelop, nsdevLaunchApplicationWithStorageIdForDevelop, nsdevGetRunningApplicationProcessIdForDevelop, nsdevSetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop.
  • Corrected parameters of nsListApplicationRecord, nsListApplicationContentMetaStatus, nsvmGetSafeSystemVersion.
  • Added support for ns:su.
  • Added enum: NsApplicationControlSource.
  • Added service session getters: nsGetServiceSession_GetterInterface, nsGetServiceSession_ApplicationManagerInterface, nsdevGetServiceSession, nssuGetServiceSession.
  • Added structs: NsApplicationDeliveryInfo, NsReceiveApplicationProgress, NsSendApplicationProgress, NsSystemDeliveryInfo, NsSystemUpdateProgress.
  • Added nsGetSystemDeliveryInfo, nsGetApplicationDeliveryInfo, nsSelectLatestSystemDeliveryInfo, nsVerifyDeliveryProtocolVersion, nsHasAllContentsToDeliver, nsCompareApplicationDeliveryInfo, nsCanDeliverApplication, nsListContentMetaKeyToDeliverApplication, nsNeedsSystemUpdateToDeliverApplication, nsEstimateRequiredSize, nsRequestReceiveApplication, nsCommitReceiveApplication, nsGetReceiveApplicationProgress, nsRequestSendApplication, nsGetSend...
Read more

libnx v2.5.0

14 Sep 17:24
3d682b6
Compare
Choose a tag to compare

system

  • Corrected type of id0 in svcGetInfo.

filesystem

  • Added fsExtendSaveDataFileSystem, fsOpenCustomStorageFileSystem, fsSetGlobalAccessLogMode, fsGetGlobalAccessLogMode.
  • Added FsCustomStorageId enum.
  • Fixed by-name RomFS mount lookups to actually compare the entire name.

graphics

  • Added binder session argument to nwindowCreate (nwindowCreateFromLayer not affected).
  • Binder code now supports domain objects.
  • Fixed bug in nvAddressSpaceCreate.

input

  • Explicitly announce support for System/SystemExt layouts, which in turn fixes input on 9.0.0+. It is of utmost importance that all homebrew be recompiled as soon as possible in order to work properly on 9.0.0+.
  • Fixed Hdls to work on 9.0.0+.
    • Several Hdls structs were redefined in 9.0.0+ and libnx was updated to reflect the new struct definitions (this is a breaking change). The old structs are still available but they now have a V7 suffix, and libnx transparently handles conversion to/from the new 9.x structs at runtime on older system versions; so the new structs are always used regardless of system version. List of structs affected:
      • HiddbgHdlsDeviceInfo(V7)
      • HiddbgHdlsState(V7)
      • HiddbgHdlsStateListEntry(V7)
      • HiddbgHdlsStateList(V7)
    • Added hiddbgGetUniquePadDeviceTypeSetInternal.
  • Added hidGetNpadInterfaceType.
  • Added HidNpadInterfaceType, HidDeviceTypeBits, HidDeviceType enums.
  • Prevent AbstractedPad/VirtualPad commands from being used on 9.0.0+ since they were removed.
  • Corrected several commands by internally calling hidControllerIDToOfficial.

applet

  • Added AppletAttribute, AppletProcessLaunchReason, AppletInfo, AppletApplicationLaunchProperty, AppletApplicationLaunchRequestInfo, AppletResourceUsageInfo structs.

  • Added AppletApplicationExitReason, AppletSystemButtonType, AppletProgramSpecifyKind enums.

  • Renamed AppletNotificationMessage to AppletMessage.

  • Renamed AppletLaunchParameterKind_Application to AppletLaunchParameterKind_UserChannel.

  • Added appletGetServiceSession_* funcs.

  • Added appletGetAppletInfo.

  • Changed appletRequestToShutdown/appletRequestToReboot and appletStartShutdownSequenceForOverlay/appletStartRebootSequenceForOverlay on success to enter an infinite sleep loop.

    • This is also used with _appletExitProcess when the exit commands were successful, which is used during __nx_applet_exit_mode handling.
  • Use OpenLibraryAppletProxy command on 3.0.0+ when running appletInitialize for AppletType_LibraryApplet.

  • Added libappletArgsPop and libappletSetJumpFlag.

  • ILibraryAppletSelfAccessor:

    • Added appletPopInData, appletPushOutData, appletPopInteractiveInData, appletPushInteractiveOutData, appletGetPopInDataEvent, appletGetPopInteractiveInDataEvent.
    • Added appletCanUseApplicationCore, appletGetMainAppletApplicationControlProperty, appletGetMainAppletStorageId, appletGetDesirableKeyboardLayout.
    • Added appletPopExtraStorage, appletGetPopExtraStorageEvent, appletUnpopInData, appletUnpopExtraStorage.
    • Added appletGetIndirectLayerProducerHandle, appletGetMainAppletApplicationDesiredLanguage, appletGetCurrentApplicationId.
    • Added appletCreateGameMovieTrimmer, appletReserveResourceForMovieOperation, appletUnreserveResourceForMovieOperation.
    • Added appletGetMainAppletAvailableUsers.
  • IProcessWindingController:

    • Added appletPushContext, appletPopContext.
  • IDebugFunctions:

    • Added appletOpenMainApplication, appletPerformSystemButtonPressing, appletInvalidateTransitionLayer, appletRequestLaunchApplicationWithUserAndArgumentForDebug, appletGetAppletResourceUsageInfo.
  • ILibraryAppletAccessor:

    • Added appletHolderTerminate, appletHolderRequestExitOrTerminate.
  • IProcessWindingController:

    • Added appletHolderJump.
  • IOverlayFunctions:

    • Added appletBeginToObserveHidInputForDevelop.
  • IHomeMenuFunctions:

    • Added appletPopRequestLaunchApplicationForDebug, appletLaunchDevMenu.
  • IApplicationCreator:

    • Added support for AppletApplication.
    • Added appletCreateApplication, appletPopLaunchRequestedApplication, appletCreateSystemApplication, appletPopFloatingApplicationForDevelopment.
  • ILibraryAppletCreator:

    • Added appletTerminateAllLibraryApplets, appletAreAnyLibraryAppletsLeft.
  • IApplicationFunctions:

    • Added appletGetLaunchStorageInfoForDebug, appletRequestFlushGamePlayingMovieForDebug, appletExitAndRequestToShowThanksMessage.
    • Added appletExecuteProgram, appletJumpToSubApplicationProgramForDevelopment, appletRestartProgram, and appletGetPreviousProgramIndex.
    • Added appletCreateMovieMaker and appletPrepareForJit.

libapplets

  • Added support for launching the Album applet via albumLa.

other services

  • Added GRC service support (video recording, streaming and trimming).
  • Changes to caps (capture service) wrappers:
    • Added support for the caps:u service.
    • Added CapsAlbumFileDateTime, CapsAlbumEntryId, CapsApplicationData, CapsUserIdList, CapsScreenShotAttributeForApplication, CapsScreenShotDecodeOption, CapsApplicationAlbumFileEntry, CapsLoadAlbumScreenShotImageOutputForApplication structs.
    • Added AlbumReportOption, CapsContentType enums.
    • Added capsGetShimLibraryVersion (not an actual IPC wrapper).
    • Added capsGetDefaultStartDateTime, capsGetDefaultEndDateTime, capsConvertApplicationAlbumFileEntryToApplicationAlbumEntry, capsConvertApplicationAlbumEntryToApplicationAlbumFileEntry helper functions.
    • Added capssuSaveScreenShotWithUserData, capssuSaveScreenShotWithUserIds, capssuSaveScreenShotEx1, capssuSaveScreenShotEx2.
    • Improved definition of capssuSaveScreenShot and capssuSaveScreenShotEx0.
    • Improved definition of CapsScreenShotAttribute, CapsApplicationAlbumEntry structs.
    • Changed caps:su wrapper to call SetShimLibraryVersion on 7.0.0+.
    • Renamed capsscCaptureScreenshot with capsscCaptureRawImageWithTimeout.
  • Fixed lr RedirectApplication commands on 9.0.0+.
    • Renamed lrLrResolveLegalInformationPath to lrLrResolveApplicationLegalInformationPath.
    • Renamed lrLrRedirectLegalInformationPath to lrLrRedirectApplicationLegalInformationPath.
  • Added missing fields to NacpStruct and other miscellaneous corrections.
  • Fixed definition of setsysGetServiceSession.

miscellaneous

  • Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.