Commit graph

3322 commits

Author SHA1 Message Date
Ac_K
bb74aeae54 Use BinaryPrimitives.ReverseEndianness instead EndianSwap class (#832)
This PR remove the `EndianSwap` class who isn't needed anymore since .NET Core 3.0 got a buildin method `BinaryPrimitives.ReverseEndianness` who did the same thing.
2019-11-23 13:15:15 +11:00
Ac_K
cfcc360d06 ldn: Implement calls of UserLocalCommunicationService (#829)
* ldn: Implement calls of UserLocalCommunicationService

- Implement `IUserServiceCreator: CreateUserLocalCommunicationService` according to RE.
- Implement `IUserLocalCommunicationService` calls:
  - Every calls in this interface are layered to `NetworkInterface`.
  - `GetState` according to RE.
  - `InitializeOld`, `Initialize` and `Finalize` stubbed with the appropriate result code and some TODO according to RE.
  - `AttachStateChangeEvent` according to RE.

* Fix var name and TODO comments

* Fix review
2019-11-21 13:24:06 +01:00
jduncanator
ee81ab547e Initial swkbd implementation (#826)
* am: Initial swkbd implementation

Currently only implements the full screen keyboard, inline keyboard will come later.

* Remove unnecessary logging

* Miscellaneous tidy up

* am: Always pop incoming interactive session data

* am: Add a reminder to implement the full config struct

* am: Check for a max length of zero

We should only limit/truncate text when the max length is set to a non-zero value.

* Add documentation

* am: Return IStorage not available when queue is empty

We should be returning the appropriate error code when the FIFO is empty, rather than just throwing an exception and killing the emulator.

* Fix typo

* Code style changes
2019-11-18 12:16:26 +01:00
Ac_K
79abc6ed93 Implement IApplicationFunctions & IQueryService commands (#823)
* Implement IApplicationFunctions & IQueryService commands

- Fix some nits in `IApplicationFunctions`
- Implement `QueryApplicationPlayStatistics` and `QueryApplicationPlayStatisticsByUid` checked by RE.
- Implement `QueryApplicationPlayStatisticsForSystem` and `QueryApplicationPlayStatisticsByUserAccountIdForSystem` checked by RE.
- Implement `QueryPlayStatisticsManager` to get/set played games statistics. We currently don't store any statistics because it's handled by qlaunch (or maybe am service?) on Switch.
We can add support later if games use returned statistics for something.

* Fix reviews
2019-11-15 01:25:22 +01:00
Natalie C
b9ae0b09d9 Set AArch32 mode in KThread (#818)
* Set AArch32 mode in KThread

* Update ProgramLoader.cs
2019-11-14 15:28:13 +01:00
Ac_K
dead89576e Fix GetAudioDeviceServiceWithRevisionInfo logging (#822)
* Fix GetAudioDeviceServiceWithRevisionInfo logging

`revisionInfo` and `appletResourceUserId` were read in the wrong order.

* Fix comment
2019-11-14 10:06:28 +01:00
jduncanator
35e5612766 Implement a rudimentary applets system (#804)
* Implement Player Select applet

* Initialize the Horizon system reference

* Tidy up namespaces

* Resolve nits

* Resolve nits

* Rename stack to queue

* Implement an applet FIFO

* Remove debugging log

* Log applet creation events

* Reorganise AppletFifo

* More reorganisation

* Final changes
2019-11-14 06:18:44 +01:00
LDj3SNuD
7c111a3567 Add Mrs & Msr (Nzcv) Inst., with Tests. (#819)
* Add Mrs & Msr (Nzcv) Inst., with Tests.

* Don't use `NativeInterface`.
2019-11-14 13:08:07 +11:00
MysticExile
f0188bb345 Update KEYS.md to use a new dumping guide and correct title.key formatting (#814)
* Update title.keys formatting and add key dumping guide

* Update README.md to reflect changes in KEYS.md

* Address feedback and minor style changes

* Remove key templates

* Fix

Co-Authored-By: Ac_K <Acoustik666@gmail.com>

* Fix 2

Co-Authored-By: jduncanator <1518948+jduncanator@users.noreply.github.com>

* Add a description of what keys are

* Minor changes and style fixes

* Fix 3
2019-11-10 14:02:29 +01:00
LDj3SNuD
eefe2b20fc Fix Fcmge_S/V & Fcmgt_S/V Inst.s (#815)
* Fix Fcmge_S/V & Fcmgt_S/V.

Follow-up Fcm**_S/V & Fc*mp*_S.
Improve CmpCondition enum.
Nits.

* Optimize Fccmp*_S & Fcmp*_S.

* Fix cvtsd2si opcode.

* Address PR feedback.
2019-11-09 23:21:03 -03:00
Thomas Guillemard
2ea8d5bd5f Improve IRoInterface logic (#809)
* hle: Improve IRoInterface logic

This commit contains a little rewrite of IRoInterface to fix some issues
that we were facing on some recent games (AC3 Remastered & Final Fantasy
VIII Remastered)

Related issues:

- https://github.com/Ryujinx/Ryujinx-Games-List/issues/196

* Address comments
2019-11-08 15:49:48 +01:00
Thomas Guillemard
88593bf872 Add detail of ZbcSetTableArguments (#810)
* Add detail of ZbcSetTableArguments

This is a missing part of the #800 PR that cause an assert to be
triggered in debug mode.

Also, remove Fence in SurfaceFlinger as it's a duplicate of NvFence.

* Fix critical issue in size checking of ioctl

oops
2019-11-08 15:49:28 +01:00
MysticExile
5116951222 Update README.md to reflect new changes in the Homebrew used and mentioned (#813) 2019-11-08 15:43:00 +11:00
Thomas Guillemard
b29950dbd6 hle: Fix some inconsistencies in namespace naming in Services (#808)
Also fix IShopServiceAccessSystemInterface being in the wrong namespace.
2019-11-03 18:26:29 +01:00
Thomas Guillemard
9426ef3f06 Rewrite nvservices (#800)
* Start rewriting nvservices internals

TODO:

- nvgpu device interface
- nvhost generic device interface

* Some clean up and fixes

- Make sure to remove the fd of a closed channel.
- NvFileDevice now doesn't implement Disposable as it was never used.
- Rename NvHostCtrlGetConfigurationArgument to GetConfigurationArguments
to follow calling convention.
- Make sure to check every ioctls magic.

* Finalize migration for ioctl standard variant

TODO: ioctl2 migration

* Implement SubmitGpfifoEx and fix nvdec

* Implement Ioctl3

* Implement some ioctl3 required by recent games

* Remove unused code and outdated comments

* Return valid event handles with QueryEvent

Also add an exception for unimplemented event ids.

This commit doesn't implement accurately the events, this only define
different events for different event ids.

* Rename all occurance of FileDevice to DeviceFile

* Restub SetClientPid to not cause regressions

* Address comments

* Remove GlobalStateTable

* Address comments

* Align variables in ioctl3

* Some missing alignments

* GetVaRegionsArguments realign

* Make Owner public in NvDeviceFile

* Address LDj3SNuD's comments
2019-11-03 09:47:56 +11:00
Wardoc
848cda1837 Update controller config (#793)
* Update Config

Correct a bad Controller Left and Right Joycon config

* Update config to correct A and B

* Update To fix buttons X and Y

Update To fix buttons X and Y

* Removed stick_y
2019-11-01 14:17:37 +11:00
LDj3SNuD
eee639d6ba .NET Core 3.0 is here! (#784)
* .NET Core 3.0 is here!

* Remove IMemoryManager.cs and its references.

* Add T Math/F.FusedMultiplyAdd(T, T, T). Nits.

* Nit.

* Update appveyor.yml

* Revert "Resolve Visual Studio build issues"

This reverts commit 1772128ce0.

* Update SvcTable.cs
2019-10-31 19:09:03 +01:00
GalladeGuy
35443bac5a Update README.md (#802)
* Update README.md

Improve grammar, replace Switch hacking guide with one that's more up-to-date, and add a guide for shared font dumping

* Update README.md

* Remove shared fonts section
2019-10-31 18:21:56 +01:00
jduncanator
d059ffb15d
Increase IPC buffer size (#803)
This is a hack, but it works for now. We should really determine a way to automatically calculate the required buffer size to avoid situations where specific IPC calls "overflow" the maximum size.
2019-10-31 15:50:12 +11:00
LDj3SNuD
59f48e3710 Fix ghost users bug. (#799)
* Fix ghost users bug.
* Update IAccountServiceForApplication.cs
2019-10-28 11:50:50 +11:00
LDj3SNuD
eff8379d2a Add Sli_S/V & Sri_S/V inst.s (fast & slow paths), with Tests. (#797)
* Add Sli & Sri.

* Add scalar variants.
2019-10-24 20:37:42 -03:00
jduncanator
86b42f176a
svc: Implement ref parameters (#798)
Allows passing data into and out of the same registers when calling via the Kernel ABI. This allows implementing specific supervisor calls like "CallSecureMonitor", that expect their args and results in the same registers.
2019-10-25 10:34:35 +11:00
jduncanator
1772128ce0 Resolve Visual Studio build issues
Visual Studio defaults to a C# version of "latest major". Some of the new projects require C# 7.1 features.
2019-10-22 14:09:49 +11:00
Thomas Guillemard
2b5ec23aa7 Fix latest version of hbl/hb-menu (#795)
* Fix latest version of hbl/hb-menu

This implement GetSettingsItemValueSize (required by hbl) and
GetInternetConnectionStatus (required by hb-menu).

* Address comments
2019-10-19 00:47:50 +02:00
Alex Barney
8a8ea4c8c0 Update to LibHac 0.6.0 (#792)
* Update to LibHac 0.6.0

* Create an IFileSystemProxy object from LibHac

* Rename rc -> result

* Alignment and spacing

* Result formatting

* Spacing

* Sort usings
2019-10-17 08:17:44 +02:00
Ac_K
c0fe6cdca0 Move InvalidSystemResourceException with the other Exceptions (#794)
* Move InvalidSystemResourceException with the other

`InvalidSystemResourceException.cs` was in `Ryujinx.HLE/Resource` who didn't make sense since it's the only file in the folder, and other exceptions class are in `Ryujinx.HLE/Exceptions`.

* Fix empty lines
2019-10-16 11:30:36 +11:00
riperiperi
17d3c75df4 Fix behaviour when an analog trigger is assigned to a button. (#790) 2019-10-13 19:45:12 +02:00
gdkchan
306eeead06
Update license (#788)
After some internal discussion, we decided to change the project license to MIT. I have already talked with most contributors privately, and none of them are against the change. Still, if you're a contributor and you're against the change, feel free to voice your concerns here.

Obviously, any code before the license change can be still used under the terms of the old license. But any new code after the change will be under the terms of the new license.
2019-10-12 23:48:31 -03:00
Thomas Guillemard
0bce40e2ed Fix TimeZoneBinary dispose issues (#785)
* Fix TimeZoneBinary dispose issues

THis fix a regression on Pokémon Let's Go Eevee! (and
probably other games) caused by #783.

* Address Moosehunter's comment
2019-10-11 18:05:10 +02:00
Ac_K
c17e1f99f0 audout:u: Implement SetAudioOutVolume and GetAudioOutVolume (#781)
* audout:u: Implement SetAudioOutVolume and GetAudioOutVolume

- Implementation of `audout:u` SetAudioOutVolume and GetAudioOutVolume (checked with RE).
- Add Get and Set for Volume into audio backends.
- Cleanup of all audio backends to follow the `IAalOutput` structure and .NET standard.
- Split OpenAL backend into 2 files for consistency.

* Address comments

* Fix the volume calculation
2019-10-11 17:54:29 +02:00
Thomas Guillemard
4210fe2b7b Fix error code returned by CloseSession (#787)
When we close a session via IPC, we should return an error code.

This fix an assert in some games that are shipped with debug modules.
2019-10-11 17:53:45 +02:00
Thomas Guillemard
9142aca48f Fix hwopus DecodeInterleaved implementation (#786)
* Fix hwopus DecodeInterleaved implementation

Also implement new variants of this api.

This should fix #763

* Sample rate shouldn't be hardcoded

This fix issues while opening Pokémon Let's Go pause menu.

* Apply Ac_K's suggestion about EndianSwap

* Address gdkchan's comment

* Address Ac_k's comment
2019-10-11 17:22:24 +02:00
Thomas Guillemard
1aba033ba7 Update time implementation to 9.0.0 (#783)
* Fix 9.0.0 related services bindings

This was wrong because of a mistake on switchbrew.

* Fix wronog cmdid for ISteadyClock::GetTestOffset/SetTestOffset

* Update ClockCore logics to 9.0.0

Also apply 9.0.0 permissions and comment time:u, and time:a (as those
are going to be moved)

* Move every clocks instances + timezone to a global manager

* Start implementing time:m

Also prepare the skeleton of the shared memory

* Implement SystemClockContextUpdateCallback and co

* Update StaticService to 9.0.0

* Update ISystemClock to 9.0.0

* Rename IStaticService and add glue's IStaticService

* Implement psc's ITimeZoneService

* Integrate psc layer into glue for TimeZoneService

* Rename TimeZoneManagerForPsc => TimeZoneManager

* Use correct TimeZoneService interface for both StaticService implementations

* Accurately implement time shared memory operations

* Fix two critical flaws in TimeZone logic

The first one was the month range being different fron Nintendo one
(0-11 instead of 1-12)

The other flaw was a bad incrementation order during days & months
computation.

* Follow Nintendo's abort logic for TimeManager

* Avoid crashing when timezone sysarchive isn't present

* Update Readme

* Address comments

* Correctly align fields in ISystemClock

* Fix code style and some typos

* Improve timezone system archive warning/error messages

* Rearrange using definitions in Horizon.cs

* Address comments
2019-10-08 14:48:49 +11:00
LDj3SNuD
16869402bf Add Tbx Inst. (fast & slow paths), with Tests. (#782)
* Update OpCodeTable.cs

* Update InstName.cs

* Update InstEmitSimdMove.cs

* Update SoftFallback.cs

* Update DelegateTypes.cs

* Update CpuTestSimdTbl.cs

* Update CpuTest.cs

* Update Ryujinx.Tests.csproj

* Nit.
2019-10-04 11:43:20 -03:00
Ac_K
92e5e3c505 am: IApplicationFunctions GetGpuErrorDetectedSystemEvent implementation (#775) 2019-09-20 14:42:32 +10:00
Ac_K
f48df486e2 Remove IntUtils and use BitUtils instead. (#774) 2019-09-20 14:41:57 +10:00
LDj3SNuD
72b9f8f0a0 Misc fixes (#772)
* Update Logger.cs

* Update MainWindow.cs

* Update SvcTable.cs

* Update SvcTable.cs

* Update SvcTable.cs
2019-09-19 20:59:48 -03:00
Ac_K
f17b772c56 audren: Fix AudioRenderer implementation (#773)
* Fix AudioRenderer implementation

According to RE:
- `GetAudioRendererWorkBufferSize` is updated and improved to support `REV7`
- `RequestUpdateAudioRenderer` is updated to `REV7` too

Should improve results on recent game and close #718 and #707

* Fix NodeStates.GetWorkBufferSize

* Use BitUtils instead of IntUtils

* Nits
2019-09-20 01:49:05 +02:00
Ac_K
a0720b5681 Refactoring HOS folder structure (#771)
* Refactoring HOS folder structure

Refactoring HOS folder structure:

- Added some subfolders when needed (Following structure decided in private).
- Added some `Types` folders when needed.
- Little cleanup here and there.
- Add services placeholders for every HOS services (close #766 and #753).

* Remove Types namespaces
2019-09-19 10:45:11 +10:00
Alex Barney
4af3101b22 Update to LibHac 0.5.1 (#770) 2019-09-11 11:11:45 +10:00
Ac_K
0e93a51030 bcat:u: Implement EnumerateDeliveryCacheDirectory (#768)
* bcat:u: Implement EnumerateDeliveryCacheDirectory

Basic implementation `EnumerateDeliveryCacheDirectory` call to `IDeliveryCacheStorageService` according to RE.  (close #622)
I've added some comments in the whole service for when we'll implement a real bcat implementation.
For now, all games who use it isn't playable because of GPU.

* Use Array instead of List

* Add ApplicationLaunchPropertyHelper

* Fix helper

* Fix helper 2

* Fix ApplicationLaunchProperty Default

* Fix ApplicationLaunchProperty 2

* Fix folder
2019-09-10 11:55:28 +02:00
Ac_K
1ff89d6482 Implement basic support of SystemSaveData and Cleanup IFileSystemProxy (#767)
* Implement basic support of SystemSaveData and Cleanup IFileSystemProxy

- Implement `OpenSystemSaveData` as a `IFileSystem` in `SaveHelper`:
  On real device, system saves data are stored encrypted, and we can't create an empty system save data for now. That's why if a user put his own dump of system save in `RyuFs\nand\system\save\`, we extract content in associated folder and open it as a `IFileSystem`. If the system save data don't exist, a folder is created.

- Cleanup `IFileSystemProxy` by adding a Helper class.

- Implement `GetSavePath` in `VirtualFileSystem` and remove `GetGameSavePath` in `SaveHelper`.

* remove the forgotten I

* Fix align
2019-09-08 23:33:40 +02:00
Thomas Guillemard
9afb8ad485 ui: Fix segfault on Linux when passing a program via command line (#764) 2019-09-08 11:59:41 +10:00
Thomas Guillemard
7ff394e68a
gui: fix case issues in the code 2019-09-07 15:23:09 +02:00
Thomas Guillemard
b6c9e23a47
csproj: fix case issue on "ryujinxIcon.png"
This fix a build issue when the file system is case sensitive.
2019-09-07 15:18:06 +02:00
Ac_K
333651d346 Implement Bluetooth, Btm, Hid and Nsd services and calls. (#761)
- Implement `btdrv` service (IBluetoothDriver).
  Implement call `InitializeBluetoothLe` for initialize events of `bt` service according to RE.

- Implement `bt` service (IBluetoothUser).
  Implement call `RegisterBleEvent` according to RE.

- Add a placeholder for the `btm` service (close #750).

- Implement `btm:u` service (IBtmUser) (close #751).
  Implement call `GetCore` according to RE (close #752).

- Implement `IBtmUserCore` and calls `AcquireBleScanEvent`, `AcquireBleConnectionEvent`, `AcquireBleServiceDiscoveryEvent` and `AcquireBleMtuConfigEvent` according to RE.

- Implement `SetPalmaBoostMode` in `IHidServer` according to RE.

- Add stub for `SetIsPalmaAllConnectable` in `IHidServer` because we will not support Palma devices soon.

- Implement `nsd:a` and `nsd:u` service (IManager) (close #755).
  Implement call `ResolveEx` according to RE (close #756).
  Implement calls `GetSettingName`, `GetEnvironmentIdentifier`, `GetDeviceId`, `DeleteSettings`, `Resolve`, `ReadSaveDataFromFsForTest`, `WriteSaveDataToFsForTest` and `DeleteSaveDataOfFsForTest` according to RE.
2019-09-06 16:58:50 +02:00
Ac_K
ad40c6a182 Update README.md (#759)
* Update README.md

* Fix grammar
2019-09-05 08:22:15 +10:00
Rodrigo Locatti
ebea4967f8 shader: Add missing fsetp negation bit on srcB (#760) 2019-09-05 08:03:11 +10:00
Thomas Guillemard
b9c94ada34 timezone: improve sanity checks on TimeZone Rule name (#758) 2019-09-04 18:10:15 +02:00
Ac_K
c67f0a7c4b IGeneralService Implement GetClientId and IsAnyInternetRequestAccepted (#749)
* IGeneralService Implement GetClientId and IsAnyInternetRequestAccepted

- Add nifm:a and nifm:u with a max sessions as comment since sm don't take care of sessions for now.
- Implement IGeneralService GetClientId based on RE (close #623).
- Implement IGeneralService IsAnyInternetRequestAccepted based on RE (close #624).
- Add some informations in IGeneralService CreateRequest.
- Fix a comment in IAccountService.

* Fix requested changes
2019-09-04 18:09:20 +02:00