diff --git a/Ryujinx.HLE/OsHle/Kernel/AddressArbiter.cs b/Ryujinx.HLE/OsHle/Kernel/AddressArbiter.cs index 26234ffd3a..8a40170a73 100644 --- a/Ryujinx.HLE/OsHle/Kernel/AddressArbiter.cs +++ b/Ryujinx.HLE/OsHle/Kernel/AddressArbiter.cs @@ -41,7 +41,7 @@ namespace Ryujinx.HLE.OsHle.Kernel { if (ShouldDecrement) { - Memory.WriteUInt32(Address, (uint)CurrentValue - 1); + Memory.WriteInt32(Address, CurrentValue - 1); } } else @@ -89,6 +89,6 @@ namespace Ryujinx.HLE.OsHle.Kernel { Signal, IncrementAndSignalIfEqual, - ModifyByWaitingCountAndSignalIfEqual, + ModifyByWaitingCountAndSignalIfEqual } } diff --git a/Ryujinx.HLE/OsHle/Kernel/SvcThreadSync.cs b/Ryujinx.HLE/OsHle/Kernel/SvcThreadSync.cs index 8161e25f29..9fc426176c 100644 --- a/Ryujinx.HLE/OsHle/Kernel/SvcThreadSync.cs +++ b/Ryujinx.HLE/OsHle/Kernel/SvcThreadSync.cs @@ -231,28 +231,20 @@ namespace Ryujinx.HLE.OsHle.Kernel switch (Type) { case ArbitrationType.WaitIfLessThan: - { ThreadState.X0 = AddressArbiter.WaitForAddressIfLessThan(Process, ThreadState, Memory, Address, Value, Timeout, false); break; - } case ArbitrationType.DecrementAndWaitIfLessThan: - { ThreadState.X0 = AddressArbiter.WaitForAddressIfLessThan(Process, ThreadState, Memory, Address, Value, Timeout, true); break; - } case ArbitrationType.WaitIfEqual: - { ThreadState.X0 = AddressArbiter.WaitForAddressIfEqual(Process, ThreadState, Memory, Address, Value, Timeout); break; - } default: - { ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidEnumValue); break; - } } }