Implement GetSystemClockContext
This commit is contained in:
parent
adeb8793c2
commit
e13828bea8
258 changed files with 2484 additions and 2277 deletions
|
@ -206,6 +206,7 @@ namespace ChocolArm64
|
|||
SetA64("0>101110000xxxxx0<xxx0xxxxxxxxxx", AInstEmit.Ext_V, typeof(AOpCodeSimdExt));
|
||||
SetA64("011111101x1xxxxx110101xxxxxxxxxx", AInstEmit.Fabd_S, typeof(AOpCodeSimdReg));
|
||||
SetA64("000111100x100000110000xxxxxxxxxx", AInstEmit.Fabs_S, typeof(AOpCodeSimd));
|
||||
SetA64("0>0011101<100000111110xxxxxxxxxx", AInstEmit.Fabs_V, typeof(AOpCodeSimd));
|
||||
SetA64("000111100x1xxxxx001010xxxxxxxxxx", AInstEmit.Fadd_S, typeof(AOpCodeSimdReg));
|
||||
SetA64("0>0011100<1xxxxx110101xxxxxxxxxx", AInstEmit.Fadd_V, typeof(AOpCodeSimdReg));
|
||||
SetA64("0>1011100<1xxxxx110101xxxxxxxxxx", AInstEmit.Faddp_V, typeof(AOpCodeSimdReg));
|
||||
|
|
|
@ -309,6 +309,14 @@ namespace ChocolArm64.Instruction
|
|||
});
|
||||
}
|
||||
|
||||
public static void Fabs_V(AILEmitterCtx Context)
|
||||
{
|
||||
EmitVectorUnaryOpF(Context, () =>
|
||||
{
|
||||
EmitUnaryMathCall(Context, nameof(Math.Abs));
|
||||
});
|
||||
}
|
||||
|
||||
public static void Fadd_S(AILEmitterCtx Context)
|
||||
{
|
||||
if (AOptimizations.UseSse2)
|
||||
|
|
|
@ -64,7 +64,7 @@ https://discord.gg/VkQYXAZ
|
|||
|
||||
**Running**
|
||||
|
||||
To run this emulator, you need the .NET Core 2.0 (or higher) SDK.
|
||||
To run this emulator, you need the .NET Core 2.1 (or higher) SDK *and* the OpenAL 11 Core SDK.
|
||||
Run `dotnet run -c Release -- path\to\homebrew.nro` inside the Ryujinx solution folder to run homebrew apps.
|
||||
Run `dotnet run -c Release -- path\to\game_exefs_and_romfs_folder` to run official games (they need to be decrypted and extracted first!)
|
||||
|
||||
|
@ -73,5 +73,5 @@ You can check out the compatibility list within the Wiki. Only a handful of game
|
|||
|
||||
**Latest build**
|
||||
|
||||
These builds are compiled automatically for each commit on the master branch. They may be unstable or not work at all.
|
||||
To download the latest automatic build for Windows (64-bits), [Click Here](https://ci.appveyor.com/api/projects/gdkchan/ryujinx/artifacts/ryujinx_latest_unstable.zip?pr=false).
|
||||
These builds are compiled automatically for each commit on the master branch. They may be unstable or might not work at all.
|
||||
The latest automatic build for Windows (64-bit) can be found on the [official website](https://ryujinx.org/#/Build).
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Ipc;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Services.Nfp
|
||||
{
|
||||
class IUser : IpcService
|
||||
{
|
||||
private Dictionary<int, ServiceProcessRequest> m_Commands;
|
||||
|
||||
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
|
||||
|
||||
public IUser()
|
||||
{
|
||||
m_Commands = new Dictionary<int, ServiceProcessRequest>()
|
||||
{
|
||||
{ 0, Initialize }
|
||||
};
|
||||
}
|
||||
|
||||
public long Initialize(ServiceCtx Context)
|
||||
{
|
||||
Context.Ns.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,7 +8,9 @@ namespace Ryujinx.Graphics.Gal
|
|||
R32 = 0xf,
|
||||
A1B5G5R5 = 0x14,
|
||||
B5G6R5 = 0x15,
|
||||
BC7U = 0x17,
|
||||
G8R8 = 0x18,
|
||||
R16 = 0x1b,
|
||||
R8 = 0x1d,
|
||||
BC1 = 0x24,
|
||||
BC2 = 0x25,
|
||||
|
|
|
@ -66,6 +66,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
|||
case GalTextureFormat.A1B5G5R5: return (PixelFormat.Rgba, PixelType.UnsignedShort5551);
|
||||
case GalTextureFormat.B5G6R5: return (PixelFormat.Rgb, PixelType.UnsignedShort565);
|
||||
case GalTextureFormat.G8R8: return (PixelFormat.Rg, PixelType.UnsignedByte);
|
||||
case GalTextureFormat.R16: return (PixelFormat.Red, PixelType.HalfFloat);
|
||||
case GalTextureFormat.R8: return (PixelFormat.Red, PixelType.UnsignedByte);
|
||||
}
|
||||
|
||||
|
@ -76,11 +77,12 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
|||
{
|
||||
switch (Format)
|
||||
{
|
||||
case GalTextureFormat.BC1: return PixelInternalFormat.CompressedRgbaS3tcDxt1Ext;
|
||||
case GalTextureFormat.BC2: return PixelInternalFormat.CompressedRgbaS3tcDxt3Ext;
|
||||
case GalTextureFormat.BC3: return PixelInternalFormat.CompressedRgbaS3tcDxt5Ext;
|
||||
case GalTextureFormat.BC4: return PixelInternalFormat.CompressedRedRgtc1;
|
||||
case GalTextureFormat.BC5: return PixelInternalFormat.CompressedRgRgtc2;
|
||||
case GalTextureFormat.BC7U: return PixelInternalFormat.CompressedRgbaBptcUnorm;
|
||||
case GalTextureFormat.BC1: return PixelInternalFormat.CompressedRgbaS3tcDxt1Ext;
|
||||
case GalTextureFormat.BC2: return PixelInternalFormat.CompressedRgbaS3tcDxt3Ext;
|
||||
case GalTextureFormat.BC3: return PixelInternalFormat.CompressedRgbaS3tcDxt5Ext;
|
||||
case GalTextureFormat.BC4: return PixelInternalFormat.CompressedRedRgtc1;
|
||||
case GalTextureFormat.BC5: return PixelInternalFormat.CompressedRgRgtc2;
|
||||
}
|
||||
|
||||
throw new NotImplementedException(Format.ToString());
|
||||
|
|
|
@ -202,6 +202,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
|||
{
|
||||
switch (Format)
|
||||
{
|
||||
case GalTextureFormat.BC7U:
|
||||
case GalTextureFormat.BC1:
|
||||
case GalTextureFormat.BC2:
|
||||
case GalTextureFormat.BC3:
|
||||
|
|
|
@ -159,7 +159,8 @@ namespace Ryujinx.Graphics.Gal.Shader
|
|||
case ShaderIrOperAbuf Abuf:
|
||||
{
|
||||
//This is a built-in input variable.
|
||||
if (Abuf.Offs == VertexIdAttr)
|
||||
if (Abuf.Offs == VertexIdAttr ||
|
||||
Abuf.Offs == InstanceIdAttr)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -975,7 +975,8 @@ namespace Ryujinx.Graphics.Gal.Shader
|
|||
switch (Node)
|
||||
{
|
||||
case ShaderIrOperAbuf Abuf:
|
||||
return Abuf.Offs == GlslDecl.VertexIdAttr
|
||||
return Abuf.Offs == GlslDecl.VertexIdAttr ||
|
||||
Abuf.Offs == GlslDecl.InstanceIdAttr
|
||||
? OperType.I32
|
||||
: OperType.F32;
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace Ryujinx.Graphics.Gal.Shader
|
|||
|
||||
for (int Index = 0; Index <= Size; Index++)
|
||||
{
|
||||
Opers[Index] = new ShaderIrOperAbuf(Abuf, Reg);
|
||||
Opers[Index] = new ShaderIrOperAbuf(Abuf + Index * 4, Reg);
|
||||
}
|
||||
|
||||
return Opers;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class BlockLinearSwizzle : ISwizzle
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
interface INvGpuEngine
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
interface ISwizzle
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class LinearSwizzle : ISwizzle
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class MacroInterpreter
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpu
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum NvGpuBufferType
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum NvGpuEngine
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpuEngine2d : INvGpuEngine
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum NvGpuEngine2dReg
|
||||
{
|
|
@ -2,7 +2,7 @@ using Ryujinx.Graphics.Gal;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpuEngine3d : INvGpuEngine
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum NvGpuEngine3dReg
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.Collections.Concurrent;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpuFifo
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum NvGpuFifoMeth
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
delegate void NvGpuMethod(NvGpuVmm Vmm, NvGpuPBEntry PBEntry);
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
struct NvGpuPBEntry
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
static class NvGpuPushBuffer
|
||||
{
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpuVmm : IAMemory, IGalMemory
|
||||
{
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
class NvGpuVmmCache
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using Ryujinx.Graphics.Gal;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
struct Texture
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
static class TextureFactory
|
||||
{
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
static class TextureHelper
|
||||
{
|
||||
|
@ -33,6 +33,7 @@ namespace Ryujinx.Core.Gpu
|
|||
case GalTextureFormat.A1B5G5R5: return Texture.Width * Texture.Height * 2;
|
||||
case GalTextureFormat.B5G6R5: return Texture.Width * Texture.Height * 2;
|
||||
case GalTextureFormat.G8R8: return Texture.Width * Texture.Height * 2;
|
||||
case GalTextureFormat.R16: return Texture.Width * Texture.Height * 2;
|
||||
case GalTextureFormat.R8: return Texture.Width * Texture.Height;
|
||||
|
||||
case GalTextureFormat.BC1:
|
||||
|
@ -44,6 +45,7 @@ namespace Ryujinx.Core.Gpu
|
|||
return W * H * 8;
|
||||
}
|
||||
|
||||
case GalTextureFormat.BC7U:
|
||||
case GalTextureFormat.BC2:
|
||||
case GalTextureFormat.BC3:
|
||||
case GalTextureFormat.BC5:
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
static class TextureReader
|
||||
{
|
||||
|
@ -17,7 +17,9 @@ namespace Ryujinx.Core.Gpu
|
|||
case GalTextureFormat.A1B5G5R5: return Read5551 (Memory, Texture);
|
||||
case GalTextureFormat.B5G6R5: return Read565 (Memory, Texture);
|
||||
case GalTextureFormat.G8R8: return Read2Bpp (Memory, Texture);
|
||||
case GalTextureFormat.R16: return Read2Bpp (Memory, Texture);
|
||||
case GalTextureFormat.R8: return Read1Bpp (Memory, Texture);
|
||||
case GalTextureFormat.BC7U: return Read16Bpt4x4(Memory, Texture);
|
||||
case GalTextureFormat.BC1: return Read8Bpt4x4 (Memory, Texture);
|
||||
case GalTextureFormat.BC2: return Read16Bpt4x4(Memory, Texture);
|
||||
case GalTextureFormat.BC3: return Read16Bpt4x4(Memory, Texture);
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
enum TextureSwizzle
|
||||
{
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using Ryujinx.Graphics.Gal;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Gpu
|
||||
namespace Ryujinx.HLE.Gpu
|
||||
{
|
||||
static class TextureWriter
|
||||
{
|
|
@ -1,9 +1,10 @@
|
|||
using ChocolArm64.Memory;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public class Hid
|
||||
{
|
||||
|
@ -85,11 +86,16 @@ namespace Ryujinx.Core.Input
|
|||
{
|
||||
ShMemPositions = SharedMem.GetVirtualPositions();
|
||||
|
||||
(AMemory Memory, long Position) ShMem = ShMemPositions[ShMemPositions.Length - 1];
|
||||
(AMemory Memory, long Position) = ShMemPositions[ShMemPositions.Length - 1];
|
||||
|
||||
Log.PrintInfo(LogClass.Hid, $"HID shared memory successfully mapped to 0x{ShMem.Position:x16}!");
|
||||
for (long Offset = 0; Offset < Horizon.HidSize; Offset += 8)
|
||||
{
|
||||
Memory.WriteInt64Unchecked(Position + Offset, 0);
|
||||
}
|
||||
|
||||
Init(ShMem.Memory, ShMem.Position);
|
||||
Log.PrintInfo(LogClass.Hid, $"HID shared memory successfully mapped to 0x{Position:x16}!");
|
||||
|
||||
Init(Memory, Position);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,9 +130,7 @@ namespace Ryujinx.Core.Input
|
|||
{
|
||||
long BaseControllerOffset = Position + HidControllersOffset + 8 * HidControllerSize;
|
||||
|
||||
HidControllerType Type =
|
||||
HidControllerType.ControllerType_Handheld |
|
||||
HidControllerType.ControllerType_JoyconPair;
|
||||
HidControllerType Type = HidControllerType.ControllerType_Handheld;
|
||||
|
||||
bool IsHalf = false;
|
||||
|
||||
|
@ -186,18 +190,22 @@ namespace Ryujinx.Core.Input
|
|||
|
||||
ControllerOffset += HidControllersLayoutHeaderSize;
|
||||
|
||||
long LastEntryOffset = ControllerOffset + LastEntry * HidControllersInputEntrySize;
|
||||
|
||||
ControllerOffset += CurrEntry * HidControllersInputEntrySize;
|
||||
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x0, Timestamp);
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x8, Timestamp);
|
||||
long SampleCounter = Memory.ReadInt64Unchecked(LastEntryOffset) + 1;
|
||||
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x0, SampleCounter);
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x8, SampleCounter);
|
||||
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x10, (uint)Buttons);
|
||||
|
||||
Memory.WriteInt32Unchecked(ControllerOffset + 0x18, LeftStick.DX);
|
||||
Memory.WriteInt32Unchecked(ControllerOffset + 0x1c, LeftStick.DY);
|
||||
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x20, RightStick.DX);
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x24, RightStick.DY);
|
||||
Memory.WriteInt32Unchecked(ControllerOffset + 0x20, RightStick.DX);
|
||||
Memory.WriteInt32Unchecked(ControllerOffset + 0x24, RightStick.DY);
|
||||
|
||||
Memory.WriteInt64Unchecked(ControllerOffset + 0x28,
|
||||
(uint)HidControllerConnState.Controller_State_Connected |
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
[Flags]
|
||||
public enum HidControllerButtons
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
[Flags]
|
||||
public enum HidControllerColorDesc
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
[Flags]
|
||||
public enum HidControllerConnState
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public enum HidControllerId
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public enum HidControllerLayouts
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
[Flags]
|
||||
public enum HidControllerType
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public struct HidJoystickPosition
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public struct HidTouchPoint
|
||||
{
|
|
@ -1,5 +1,5 @@
|
|||
//TODO: This is only used by Config, it doesn't belong to Core.
|
||||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public struct JoyConLeft
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Input
|
||||
namespace Ryujinx.HLE.Input
|
||||
{
|
||||
public enum JoyConColor //Thanks to CTCaer
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Loaders.Compression
|
||||
namespace Ryujinx.HLE.Loaders.Compression
|
||||
{
|
||||
static class Lz4
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
struct ElfDyn
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
enum ElfDynTag
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
struct ElfRel
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
enum ElfRelType
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
struct ElfSym
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
enum ElfSymBinding
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
enum ElfSymType
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
enum ElfSymVisibility
|
||||
{
|
|
@ -1,9 +1,9 @@
|
|||
using ChocolArm64.Memory;
|
||||
using Ryujinx.Core.Loaders.Executables;
|
||||
using Ryujinx.Core.OsHle;
|
||||
using Ryujinx.HLE.Loaders.Executables;
|
||||
using Ryujinx.HLE.OsHle;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.Loaders
|
||||
namespace Ryujinx.HLE.Loaders
|
||||
{
|
||||
class Executable
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Loaders.Executables
|
||||
namespace Ryujinx.HLE.Loaders.Executables
|
||||
{
|
||||
public interface IExecutable
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.Loaders.Executables
|
||||
namespace Ryujinx.HLE.Loaders.Executables
|
||||
{
|
||||
class Nro : IExecutable
|
||||
{
|
|
@ -1,8 +1,8 @@
|
|||
using Ryujinx.Core.Loaders.Compression;
|
||||
using Ryujinx.HLE.Loaders.Compression;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.Loaders.Executables
|
||||
namespace Ryujinx.HLE.Loaders.Executables
|
||||
{
|
||||
class Nso : IExecutable
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Logging
|
||||
namespace Ryujinx.HLE.Logging
|
||||
{
|
||||
public enum LogClass
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.Logging
|
||||
namespace Ryujinx.HLE.Logging
|
||||
{
|
||||
public class LogEventArgs : EventArgs
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.Logging
|
||||
namespace Ryujinx.HLE.Logging
|
||||
{
|
||||
public enum LogLevel
|
||||
{
|
|
@ -2,7 +2,7 @@ using System;
|
|||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Ryujinx.Core.Logging
|
||||
namespace Ryujinx.HLE.Logging
|
||||
{
|
||||
public class Logger
|
||||
{
|
|
@ -1,9 +1,9 @@
|
|||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.Core.OsHle.Services.Am;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using Ryujinx.HLE.OsHle.Services.Am;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
class AppletStateMgr : IDisposable
|
||||
{
|
|
@ -2,7 +2,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Diagnostics
|
||||
namespace Ryujinx.HLE.OsHle.Diagnostics
|
||||
{
|
||||
static class Demangler
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
static class ErrorCode
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
enum ErrorModule
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Exceptions
|
||||
namespace Ryujinx.HLE.OsHle.Exceptions
|
||||
{
|
||||
public class GuestBrokeExecutionException : Exception
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Exceptions
|
||||
namespace Ryujinx.HLE.OsHle.Exceptions
|
||||
{
|
||||
public class UndefinedInstructionException : Exception
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
class GlobalStateTable
|
||||
{
|
|
@ -2,7 +2,7 @@ using ChocolArm64.Memory;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class HSharedMem
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using ChocolArm64.Memory;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class HTransferMem
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KEvent : KSynchronizationObject { }
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KProcessHandleTable
|
||||
{
|
|
@ -1,9 +1,9 @@
|
|||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KProcessScheduler : IDisposable
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using Ryujinx.Core.OsHle.Services;
|
||||
using Ryujinx.HLE.OsHle.Services;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KSession : IDisposable
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KSynchronizationObject : IDisposable
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using ChocolArm64;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class KThread : KSynchronizationObject
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class SchedulerThread : IDisposable
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Handles
|
||||
namespace Ryujinx.HLE.OsHle.Handles
|
||||
{
|
||||
class ThreadQueue
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using ChocolArm64.Memory;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
static class Homebrew
|
||||
{
|
|
@ -1,11 +1,11 @@
|
|||
using Ryujinx.Core.Loaders.Executables;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Loaders.Executables;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
public class Horizon : IDisposable
|
||||
{
|
|
@ -2,7 +2,7 @@ using System;
|
|||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
class IdDictionary
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
struct IpcBuffDesc
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
class IpcHandleDesc
|
||||
{
|
|
@ -1,9 +1,9 @@
|
|||
using ChocolArm64.Memory;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
static class IpcHandler
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
abstract class IpcMagic
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
class IpcMessage
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
enum IpcMessageType
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
struct IpcPtrBuffDesc
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System.IO;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
struct IpcRecvListBuffDesc
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Ipc
|
||||
namespace Ryujinx.HLE.OsHle.Ipc
|
||||
{
|
||||
delegate long ServiceProcessRequest(ServiceCtx Context);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
static class KernelErr
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
static class NsTimeConverter
|
||||
{
|
|
@ -1,14 +1,14 @@
|
|||
using ChocolArm64.Events;
|
||||
using ChocolArm64.Memory;
|
||||
using ChocolArm64.State;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
partial class SvcHandler : IDisposable
|
||||
{
|
||||
|
@ -47,6 +47,7 @@ namespace Ryujinx.Core.OsHle.Kernel
|
|||
{ 0x0b, SvcSleepThread },
|
||||
{ 0x0c, SvcGetThreadPriority },
|
||||
{ 0x0d, SvcSetThreadPriority },
|
||||
{ 0x0e, SvcGetThreadCoreMask },
|
||||
{ 0x0f, SvcSetThreadCoreMask },
|
||||
{ 0x10, SvcGetCurrentProcessorNumber },
|
||||
{ 0x12, SvcClearEvent },
|
|
@ -1,11 +1,11 @@
|
|||
using ChocolArm64.Memory;
|
||||
using ChocolArm64.State;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
|
||||
using static Ryujinx.Core.OsHle.ErrorCode;
|
||||
using static Ryujinx.HLE.OsHle.ErrorCode;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
partial class SvcHandler
|
||||
{
|
|
@ -1,16 +1,16 @@
|
|||
using ChocolArm64.Memory;
|
||||
using ChocolArm64.State;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Exceptions;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.Core.OsHle.Ipc;
|
||||
using Ryujinx.Core.OsHle.Services;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Exceptions;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using Ryujinx.HLE.OsHle.Ipc;
|
||||
using Ryujinx.HLE.OsHle.Services;
|
||||
using System;
|
||||
using System.Threading;
|
||||
|
||||
using static Ryujinx.Core.OsHle.ErrorCode;
|
||||
using static Ryujinx.HLE.OsHle.ErrorCode;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
partial class SvcHandler
|
||||
{
|
|
@ -1,11 +1,11 @@
|
|||
using ChocolArm64.State;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System.Threading;
|
||||
|
||||
using static Ryujinx.Core.OsHle.ErrorCode;
|
||||
using static Ryujinx.HLE.OsHle.ErrorCode;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
partial class SvcHandler
|
||||
{
|
||||
|
@ -139,6 +139,28 @@ namespace Ryujinx.Core.OsHle.Kernel
|
|||
}
|
||||
}
|
||||
|
||||
private void SvcGetThreadCoreMask(AThreadState ThreadState)
|
||||
{
|
||||
int Handle = (int)ThreadState.X2;
|
||||
|
||||
Ns.Log.PrintDebug(LogClass.KernelSvc, "Handle = " + Handle.ToString("x8"));
|
||||
|
||||
KThread Thread = GetThread(ThreadState.Tpidr, Handle);
|
||||
|
||||
if (Thread != null)
|
||||
{
|
||||
ThreadState.X0 = 0;
|
||||
ThreadState.X1 = (ulong)Thread.IdealCore;
|
||||
ThreadState.X2 = (ulong)Thread.CoreMask;
|
||||
}
|
||||
else
|
||||
{
|
||||
Ns.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||
|
||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||
}
|
||||
}
|
||||
|
||||
private void SvcSetThreadCoreMask(AThreadState ThreadState)
|
||||
{
|
||||
//FIXME: This is wrong, but the "correct" way to handle
|
|
@ -1,14 +1,14 @@
|
|||
using ChocolArm64.State;
|
||||
using Ryujinx.Core.Logging;
|
||||
using Ryujinx.Core.OsHle.Handles;
|
||||
using Ryujinx.HLE.Logging;
|
||||
using Ryujinx.HLE.OsHle.Handles;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
using static Ryujinx.Core.OsHle.ErrorCode;
|
||||
using static Ryujinx.HLE.OsHle.ErrorCode;
|
||||
|
||||
namespace Ryujinx.Core.OsHle.Kernel
|
||||
namespace Ryujinx.HLE.OsHle.Kernel
|
||||
{
|
||||
partial class SvcHandler
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Core.OsHle
|
||||
namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
class MemoryAllocator
|
||||
{
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue