namespace Ryujinx.HLE.Loaders.Npdm
{
    enum FSPermissionRW : ulong
    {
        MountContentType2     = 0x8000000000000801,
        MountContentType5     = 0x8000000000000801,
        MountContentType3     = 0x8000000000000801,
        MountContentType4     = 0x8000000000000801,
        MountContentType6     = 0x8000000000000801,
        MountContentType7     = 0x8000000000000801,
        Unknown0x6            = 0x8000000000000000,
        ContentStorageAccess  = 0x8000000000000800,
        ImageDirectoryAccess  = 0x8000000000001000,
        MountBisType28        = 0x8000000000000084,
        MountBisType29        = 0x8000000000000080,
        MountBisType30        = 0x8000000000008080,
        MountBisType31        = 0x8000000000008080,
        Unknown0xD            = 0x8000000000000080,
        SdCardAccess          = 0xC000000000200000,
        GameCardUser          = 0x8000000000000010,
        SaveDataAccess0       = 0x8000000000040020,
        SystemSaveDataAccess0 = 0x8000000000000028,
        SaveDataAccess1       = 0x8000000000000020,
        SystemSaveDataAccess1 = 0x8000000000000020,
        BisPartition0         = 0x8000000000010082,
        BisPartition10        = 0x8000000000010080,
        BisPartition20        = 0x8000000000010080,
        BisPartition21        = 0x8000000000010080,
        BisPartition22        = 0x8000000000010080,
        BisPartition23        = 0x8000000000010080,
        BisPartition24        = 0x8000000000010080,
        BisPartition25        = 0x8000000000010080,
        BisPartition26        = 0x8000000000000080,
        BisPartition27        = 0x8000000000000084,
        BisPartition28        = 0x8000000000000084,
        BisPartition29        = 0x8000000000000080,
        BisPartition30        = 0x8000000000000080,
        BisPartition31        = 0x8000000000000080,
        BisPartition32        = 0x8000000000000080,
        Unknown0x23           = 0xC000000000200000,
        GameCard_System       = 0x8000000000000100,
        MountContent_System   = 0x8000000000100008,
        HostAccess            = 0xC000000000400000
    };

    enum FSPermissionBool : ulong
    {
        BisCache                  = 0x8000000000000080,
        EraseMmc                  = 0x8000000000000080,
        GameCardCertificate       = 0x8000000000000010,
        GameCardIdSet             = 0x8000000000000010,
        GameCardDriver            = 0x8000000000000200,
        GameCardAsic              = 0x8000000000000200,
        SaveDataCreate            = 0x8000000000002020,
        SaveDataDelete0           = 0x8000000000000060,
        SystemSaveDataCreate0     = 0x8000000000000028,
        SystemSaveDataCreate1     = 0x8000000000000020,
        SaveDataDelete1           = 0x8000000000004028,
        SaveDataIterators0        = 0x8000000000000060,
        SaveDataIterators1        = 0x8000000000004020,
        SaveThumbnails            = 0x8000000000020000,
        PosixTime                 = 0x8000000000000400,
        SaveDataExtraData         = 0x8000000000004060,
        GlobalMode                = 0x8000000000080000,
        SpeedEmulation            = 0x8000000000080000,
        NULL                      = 0,
        PaddingFiles              = 0xC000000000800000,
        SaveData_Debug            = 0xC000000001000000,
        SaveData_SystemManagement = 0xC000000002000000,
        Unknown0x16               = 0x8000000004000000,
        Unknown0x17               = 0x8000000008000000,
        Unknown0x18               = 0x8000000010000000,
        Unknown0x19               = 0x8000000000000800,
        Unknown0x1A               = 0x8000000000004020
    }

    enum NpdmApplicationType
    {
        SystemModule,
        Application,
        Applet
    }

    enum SvcName
    {
        svcUnknown0,
        svcSetHeapSize,
        svcSetMemoryPermission,
        svcSetMemoryAttribute,
        svcMapMemory,
        svcUnmapMemory,
        svcQueryMemory,
        svcExitProcess,
        svcCreateThread,
        svcStartThread,
        svcExitThread,
        svcSleepThread,
        svcGetThreadPriority,
        svcSetThreadPriority,
        svcGetThreadCoreMask,
        svcSetThreadCoreMask,
        svcGetCurrentProcessorNumber,
        svcSignalEvent,
        svcClearEvent,
        svcMapSharedMemory,
        svcUnmapSharedMemory,
        svcCreateTransferMemory,
        svcCloseHandle,
        svcResetSignal,
        svcWaitSynchronization,
        svcCancelSynchronization,
        svcArbitrateLock,
        svcArbitrateUnlock,
        svcWaitProcessWideKeyAtomic,
        svcSignalProcessWideKey,
        svcGetSystemTick,
        svcConnectToNamedPort,
        svcSendSyncRequestLight,
        svcSendSyncRequest,
        svcSendSyncRequestWithUserBuffer,
        svcSendAsyncRequestWithUserBuffer,
        svcGetProcessId,
        svcGetThreadId,
        svcBreak,
        svcOutputDebugString,
        svcReturnFromException,
        svcGetInfo,
        svcFlushEntireDataCache,
        svcFlushDataCache,
        svcMapPhysicalMemory,
        svcUnmapPhysicalMemory,
        svcGetFutureThreadInfo,
        svcGetLastThreadInfo,
        svcGetResourceLimitLimitValue,
        svcGetResourceLimitCurrentValue,
        svcSetThreadActivity,
        svcGetThreadContext3,
        svcWaitForAddress,
        svcSignalToAddress,
        svcUnknown1,
        svcUnknown2,
        svcUnknown3,
        svcUnknown4,
        svcUnknown5,
        svcUnknown6,
        svcDumpInfo,
        svcDumpInfoNew,
        svcUnknown7,
        svcUnknown8,
        svcCreateSession,
        svcAcceptSession,
        svcReplyAndReceiveLight,
        svcReplyAndReceive,
        svcReplyAndReceiveWithUserBuffer,
        svcCreateEvent,
        svcUnknown9,
        svcUnknown10,
        svcMapPhysicalMemoryUnsafe,
        svcUnmapPhysicalMemoryUnsafe,
        svcSetUnsafeLimit,
        svcCreateCodeMemory,
        svcControlCodeMemory,
        svcSleepSystem,
        svcReadWriteRegister,
        svcSetProcessActivity,
        svcCreateSharedMemory,
        svcMapTransferMemory,
        svcUnmapTransferMemory,
        svcCreateInterruptEvent,
        svcQueryPhysicalAddress,
        svcQueryIoMapping,
        svcCreateDeviceAddressSpace,
        svcAttachDeviceAddressSpace,
        svcDetachDeviceAddressSpace,
        svcMapDeviceAddressSpaceByForce,
        svcMapDeviceAddressSpaceAligned,
        svcMapDeviceAddressSpace,
        svcUnmapDeviceAddressSpace,
        svcInvalidateProcessDataCache,
        svcStoreProcessDataCache,
        svcFlushProcessDataCache,
        svcDebugActiveProcess,
        svcBreakDebugProcess,
        svcTerminateDebugProcess,
        svcGetDebugEvent,
        svcContinueDebugEvent,
        svcGetProcessList,
        svcGetThreadList,
        svcGetDebugThreadContext,
        svcSetDebugThreadContext,
        svcQueryDebugProcessMemory,
        svcReadDebugProcessMemory,
        svcWriteDebugProcessMemory,
        svcSetHardwareBreakPoint,
        svcGetDebugThreadParam,
        svcUnknown11,
        svcGetSystemInfo,
        svcCreatePort,
        svcManageNamedPort,
        svcConnectToPort,
        svcSetProcessMemoryPermission,
        svcMapProcessMemory,
        svcUnmapProcessMemory,
        svcQueryProcessMemory,
        svcMapProcessCodeMemory,
        svcUnmapProcessCodeMemory,
        svcCreateProcess,
        svcStartProcess,
        svcTerminateProcess,
        svcGetProcessInfo,
        svcCreateResourceLimit,
        svcSetResourceLimitLimitValue,
        svcCallSecureMonitor
    };
}