Commit Graph
100 Commits
Author SHA1 Message Date
Mary fe452ac784 CI: Add option to manually trigger github actions 2021-04-07 21:20:15 +02:00
Mary 2b308bb36e CI: Add temporary fix for Windows nuget issues and fix git hashes for PRs 2021-04-07 21:17:16 +02:00
Mary 0b022cad1e oops for last commit.. 2021-03-20 21:48:37 +01:00
Mary 6dc3fedf8c ci: Tune Github Actions artifacts
Let's github actions pack zip for all os, put the real name in the output artifact and ensure to only publish the Ryujinx project
2021-03-20 21:46:49 +01:00
MaryandGitHub aef25980a7 Salieri: Detect and avoid caching shaders using bindless textures (#2097)
* Salieri: Add blacklist system and blacklist shaders using bindless

Currently the shader cache doesn't have the right format to support
bindless textures correctly and may cache shaders that it cannot rebuild
after host invalidation.

This PR address the issue by blacklisting shaders using bindless
textures.

THis also support detection of already cached broken shader and handle removal
of those.

* Move to a feature flags design to avoid intrusive changes in the translator

This remove the auto correct behaviour

* Reduce diff on TranslationFlags

* Reduce comma on last entry of TranslationFlags

* Fix inverted logic and remove leftovers

* remove debug edits oops
2021-03-19 20:07:37 +01:00
MaryandGitHub 88d0708061 Fix typo in assert in OpenAL implementation detail (#2106)
That one missing patch oops.
2021-03-14 23:48:35 +01:00
MaryandGitHub 39f171ece5 Override openal-soft configuration (#2101)
This enforce speaker mode to avoid weird audio quality reduction with
output considered as headphones by Windows (It applies a HRTF or crossfeed filter supposed to improve audio quality, might be a bug on their end)
2021-03-13 21:20:02 +11:00
MaryandGitHub 31fca432a7 Amadeus: Add ARM SIMD fast path (#2069)
Add fast paths in the audio renderer for AArch64 in all current fast paths.
2021-03-02 23:50:46 +01:00
MaryandGitHub d02eeed9c1 Haydn: Make SoundIO session implementation lock-free (#2068)
* Haydn: Fix race condition in SoundIO Update implementation

This should fix weird crashes happening for some people with SoundIO.

Fix #2062

* haydn: Make SoundIO session lock-free
2021-02-28 17:20:34 +01:00
MaryandGitHub 460a98390e ci: Use Github artifacts for PRs (#2040)
* ci: Use Github artifacts for PRs

This PR extends the build job by upload artifacts for all PRs.
The version of those builds is set to "1.0.0-<git_short_hash>" and those
builds have the updater explicitly disabled.

With this in place, we will be able to disable ApppVeyor on PRs.

* Add actions to comment build links

As Github doesn't provide links to unlogged users, we use nightly.link for that.

* Address Ac_k's comments
2021-02-28 11:56:15 +01:00
MaryandGitHub f556c80d02 Haydn: Part 1 (#2007)
* Haydn: Part 1

Based on my reverse of audio 11.0.0.

As always, core implementation under LGPLv3 for the same reasons as for Amadeus.

This place the bases of a more flexible audio system while making audout & audin accurate.

This have the following improvements:
- Complete reimplementation of audout and audin.
- Audin currently only have a dummy backend.
- Dramatically reduce CPU usage by up to 50% in common cases (SoundIO and OpenAL).
- Audio Renderer now can output to 5.1 devices when supported.
- Audio Renderer init its backend on demand instead of keeping two up all the time.
- All backends implementation are now in their own project.
- Ryujinx.Audio.Renderer was renamed Ryujinx.Audio and was refactored because of this.

As a note, games having issues with OpenAL haven't improved and will not
because of OpenAL design (stopping when buffers finish playing causing
possible audio "pops" when buffers are very small).

* Update for latest hexkyz's edits on Switchbrew

* audren: Rollback channel configuration changes

* Address gdkchan's comments

* Fix typo in OpenAL backend driver

* Address last comments

* Fix a nit

* Address gdkchan's comments
2021-02-26 01:11:56 +01:00
MaryandGitHub 30c7b77118 Github Actions: Workaround windows-latest restore failures (#1957)
See https://github.com/actions/setup-dotnet/issues/155.
2021-01-24 14:29:16 +01:00
Mary 73118dcb98 amadeus: Update copyright year
Happy new Year
2021-01-01 00:12:32 +01:00
b1d3cfd2da Distribute with OpenAL Soft on Windows (#1847)
* Distribute with OpenAL Soft on Windows

This remove dependency on OpenAL EA on Windows and allows to operate with both backend without any user interventions.

Co-authored-by: jduncanator <jduncanator@hotmail.com>

* Fix Atmosphere utf8 issue

Co-authored-by: jduncanator <jduncanator@hotmail.com>
2020-12-31 09:08:09 +11:00
MaryandGitHub 6bc2733c17 salieri: Support read-only mode if archive is already opened (#1807)
This improves shader cache resilience when people opens another program that touch the cache.zip.
2020-12-13 08:46:07 +01:00
MaryandGitHub 0ab1c42eea Make sure to not leak copy handles passed in request (#1772)
* Make sure to not leak copy handles passed in request

Following last gdkchan's PR this make sure to close copy handles that
are passed by guest when it should.

* fix comment copy pasta
2020-12-03 19:19:10 +01:00
MaryandGitHub bc11443621 amadeus: Fix a typo in TapFrame logic (#1767)
This fix a crash at boot in Pang Adventures
2020-12-02 00:46:26 +01:00
MaryandGitHub f6d88558b1 salieri: Fix missing guest GPU accessor missing on hashes (#1759)
This adds the guest GPU accessor to hashes computation.
As this change all the hashes from the cache, I added some migration
logic.

This is required for #1755.
2020-12-01 22:48:31 +01:00
MaryandGitHub 245f8a7eee ui: Check last played datetime validity against current culture (#1730)
This is an issue happening when you change your datetime format on your
system and try to sort via last played datetime. DateTime.Parse use the
current thread culture and will not parse date correctly, effectively
causing a crash.

As such, I added a check when loading the game list that ensure that the
datetime is valid in current culture.

Fix #1727.
2020-11-27 19:05:36 +01:00
MaryandGitHub 9abdba5539 amadeus: Fix reverb 3d mono wrong delay line offset (#1742)
This fix reverb 3d mono rendering using -1 instead of 1 for delay line
offset.

I also did some clean up as this value is now used by all channel
variants.

Now Resident Evil 6 goes in-gane.
2020-11-21 22:52:52 +01:00
MaryandGitHub 25b9cde8be salieri: remove a wrong debug assert (#1740)
THis assert is wrong and useless now, remove it because it's annoying in
Debug.
2020-11-21 22:10:08 +01:00
MaryandGitHub 92bcdcb369 amadeus: Fix possible underflow in delay time delay effect (#1739)
This fix an underflow in the setup of delay time in the delay effect.

THis fix a regression caused by Amadeus on Shovel Knight: Treasure
Trove.
2020-11-21 21:57:49 +01:00
MaryandGitHub 863edae328 shader cache: Fix Linux boot issues (#1709)
* shader cache: Fix Linux boot issues

This rollback the init logic back to previous state, and replicate the
way PTC handle initialization.

* shader cache: set default state of ready for translation event to false

* Fix cpu unit tests
2020-11-17 22:40:19 +01:00
MaryandGitHub cc60ba9d22 shader cache: Fix possible race causing crashes on manifest at startup (#1718)
* shader cache: Fix possible race causing crashes on manifest at startup

This fix a misplace function call ending up causing possibly two write
on the cache.info at the same time.

* shader cache: Make RemoveManifestEntries async too to be sure all operations are perform before starting the game
2020-11-17 22:31:05 +01:00
MaryandGitHub 383c039037 shader cache: Fix invalid virtual address clean up (#1717)
* shader cache: Fix invalid virtual address clean up

This fix an issue causing the virtual address of texture descriptors to
not be cleaned up when caching and instead cleaning texture format and swizzle.

This should fix duplicate high duplication in the cache for certain
games and possible texture corruption issues.

**THIS WILL INVALIDATE ALL SHADER CACHE LEVELS CONSIDERING THE NATURE OF THE ISSUE**

* shader cache: Address gdk's comment
2020-11-17 22:20:17 +01:00
MaryandGitHub 4bc4cacdd0 ui diag: Add missing error message for ApplicationNotFound (#1693)
I missed to add the error messages for this error code on the initial
PR, this fix it.
2020-11-15 21:26:49 +01:00
MaryandGitHub aa129fdbdf infra: Migrate to .NET 5 (#1694)
* infra: Migrate to .NET 5

This migrate projects and CI to .NET 5

* Remove language version restrictions (now on 9.0 by default)

* infra: pin .NET 5 to avoid later issues

* infra: Cleanup csproj files

* infra: update dependencies

* infra: Add temporary workaround for a bug in Vector128.Create

see https://github.com/dotnet/runtime/issues/44704 for more informations
2020-11-15 19:27:15 +01:00
MaryandGitHub 48f6570557 Salieri: shader cache (#1701)
Here come Salieri, my implementation of a disk shader cache!

"I'm sure you know why I named it that."
"It doesn't really mean anything."

This implementation collects shaders at runtime and cache them to be later compiled when starting a game.
2020-11-13 00:15:34 +01:00
MaryandGitHub 61e67b64ea updater: Ignore first commandline argument when passing commandline to updated binary (#1674)
Fix a regression caused by #1643.
2020-11-06 19:46:22 +01:00
MaryandGitHub c482718d2e surfaceflinger: Disable async buffer (#1603)
This fix a mistake I made during my original reimplementation of SurfaceFlinger by disabling async buffer.

This fix a memory corruption on Super Mario All-Stars 3D (Super Mario Sunshine & Super
Mario Galaxy now go ingame).

Thanks to @gdkchan for tracing the memory corruption.
2020-10-10 21:45:49 +11:00
Thog ace67ed324 Rollback the CreateExitDialog function that was lost with auto updater 2020-10-10 01:22:25 +02:00
MaryandGitHub 8506b7a334 Fix exiting emulator with multi programs (#1590)
THis fix a bug introduced in #1560 that would cause "Stop emulation" to
actually restart the game all the time.
2020-10-10 00:52:11 +02:00
MaryandGitHub 2ac0ce4557 Fix GetStream implementation (#1588)
Fix wrong argument usage on GetStream.

Doesn't change anything as it's not used but a nice catch from jD ^^.
2020-10-01 05:22:09 +02:00
Thog a6f8a0b01e Do not show update being availaible when appveyor is still building 2020-09-29 22:52:41 +02:00
33f8284bc0 hle/ui: Basic multi programs support (#1560)
* hos/gui: Add a check of NCA program index in titleid

This add a check to `ApplicationLoader` for the last 2 digits of the game TitleId who seems to be the NCA program index.
We currently return the last index, instead of the lower one.
Same check is added to ApplicationLibrary in the UI.

I've cleaned up both file too.

* hle: implement partial relaunch logic

TODO: make the emulator auto relauch.

* Handle auto relaunch

* hle: Unify update usage system

* hle: Implement support of multi programs in update system

* Add some documentation

* Address rip's comment

Co-authored-by: Ac_K <Acoustik666@gmail.com>
2020-09-21 13:45:30 +10:00
MaryandGitHub 2ce59c44bc Fix debug Config using res scaling 2x by default (#1546)
As the title say, this restore the value to 1.
2020-09-13 11:02:45 +10:00
MaryandGitHub 6aef271661 Amadeus: Fix multi-channel PCM sources on REV8 (#1536)
This add a missing offset on the output buffer of the DataSourceVersion2Command.

This fix music only playing on the left channel on Fairy Tail, Family Mysteries: Poisonous Promises, SEGA AGES Sonic the Hedgehog 2 and probably more.
2020-09-06 16:54:33 -03:00
MaryandGitHub 3ec911a630 ui: Initial better user error reporting (#1503)
This update the "No keys" dialog and block starting NSP/XCI/NCA without firmware.

Also propose to the user if they want to install firmware if they start an untrimmed XCI and remove KEYS.md as it was completely outdated.

PS: Also fix a bug with "&" in URL with OpenUrl on Windows.
2020-09-01 11:09:42 +02:00
MaryandGitHub 4f3ae6f62c Remove the Ryujinx.Debugger project (#1506)
This project wasn't really used by anyone and isn't worth mantaining.

This commit remove the profiler entirely from Ryujinx and remove the associated CI tasks.
2020-08-30 19:06:05 +02:00
2f2623b379 Clean up and update readme (#1501)
* Clean up and update readme

THis clean up and improve the README a bit.

* Apply suggestions from code review

Co-authored-by: EmulationFanatic <62343878+EmulationFanatic@users.noreply.github.com>

Co-authored-by: EmulationFanatic <62343878+EmulationFanatic@users.noreply.github.com>
2020-08-30 18:35:42 +02:00
MaryandGitHub 000ba5f7cc Amadeus: Fix inverted downmixing of center and lfe (#1507)
This fix front center and lfe being inverted in input of the
DownMixSurroundToStereoCommand.

This fix:
- Voices being missing on FE3H videos
- Mario Tennis Aces missing backgroun
- Probably more.
2020-08-27 14:53:34 -03:00
MaryandGitHub 5b26e4ef94 Misc audio fixes (#1348)
Changes:

    Implement software surround downmixing (fix #796).
    Fix a crash when no audio renderer were created when stopping emulation.

NOTE: This PR also disable support of 5.1 surround on the OpenAL backend as we cannot detect if the hardware directly support it. (the downmixing applied by OpenAL on Windows is terribly slow)
2020-08-18 21:03:55 +02:00
MaryandGitHub a389dd59bd Amadeus: Final Act (#1481)
* Amadeus: Final Act

This is my requiem, I present to you Amadeus, a complete reimplementation of the Audio Renderer!

This reimplementation is based on my reversing of every version of the audio system module that I carried for the past 10 months.
This supports every revision (at the time of writing REV1 to REV8 included) and all features proposed by the Audio Renderer on real hardware.

Because this component could be used outside an emulation context, and to avoid possible "inspirations" not crediting the project, I decided to license the Ryujinx.Audio.Renderer project under LGPLv3.

- FE3H voices in videos and chapter intro are not present.
- Games that use two audio renderer **at the same time** are probably going to have issues right now **until we rewrite the audio output interface** (Crash Team Racing is the only known game to use two renderer at the same time).

- Persona 5 Scrambler now goes ingame but audio is garbage. This is caused by the fact that the game engine is syncing audio and video in a really aggressive way. This will disappears the day this game run at full speed.

* Make timing more precise when sleeping on Windows

Improve precision to a 1ms resolution on Windows NT based OS.
This is used to avoid having totally erratic timings and unify all
Windows users to the same resolution.

NOTE: This is only active when emulation is running.
2020-08-17 22:49:37 -03:00
MaryandGitHub 3c099454ca fs: stub ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute (#1443)
This is required by AC:NH for the new online save features of 1.4.0
2020-07-31 12:25:33 +02:00
MaryandGitHub d5c34291a3 ipc hle: Fix disposing of session created with MakeObject (#1404)
This fix a missing part of #1397, making HLE ipc session being disposed
when needed.

THis is needed for upcoming wip changes.
2020-07-20 12:23:26 +10:00
MaryandGitHub 43b78ae157 prepo: Update implementation for 10.x changes (#1361)
* prepo: Update implementation for 10.x changes

On 10.x, Nintendo changed yet another time the prepo SaveReport &
SaveReportWithUser command ids.

This PR add support for command 10104 & 10105 and update naming of the
old variants to match switchbrew.

* Fix misalign and remove a ToString

* Address jD's comment
2020-07-05 10:58:11 +10:00
MaryandGitHub 686eceb9f6 Readd SoundIO as OpenAL fallback (#1356) 2020-07-04 02:38:39 +02:00
MaryandGitHub 2c48750ff0 Fix compilation warnings and use new LibHac APIs for executable loading (#1350)
* Fix compilation warnings and use new LibHac APIs for executable loading

* Migrate NSO loader to the new reader and fix kip loader

* Fix CS0162 restore

* Remove extra return lines

* Address Moose's comment
2020-07-04 01:58:01 +02:00
MaryandGitHub c70056bc76 sockets: Make sure to write the receivedBuffer (#1346)
Fix #1341
2020-07-04 00:13:35 +02:00
Thog b312c82a2c Remove profiled build task from AppVeyor (#1319)
As it was removed on the website on https://github.com/Ryujinx/Ryujinx-Website/commit/fb46709fda8a1a9137647037fc0f6d8bd1103ef7, we don't need to build it anymore.

This also cut the build time and allow us more flexibility for hotfixes if needed.
2020-06-23 16:46:23 +02:00
ThogandGitHub 05c63f3061 Increment PTC version (#1311)
Fix issues caused by https://github.com/Ryujinx/Ryujinx/commit/2421186d974446ef4183420c50bc37e58d9fe213
2020-06-18 13:41:00 +02:00
ThogandGitHub bcb7761eac SurfaceFlinger: fix some bugs (#1262)
* SurfaceFlinger: fix some bugs

This fixes some bugs in the current implementation and make it closer to
the real implementation.

* Fix align of some variables
2020-06-02 17:58:19 +02:00
ThogandGitHub ff7a933ec0 Implement TMML and TMML.B (#1270)
* Implement TMML and TMML.B

This implement TMML and TMML.B instructions

* Fix TmmlB declaration alignment

* Address gdkchan's comments

* Fix inverted encoding definitions
2020-05-23 12:04:35 +02:00
ThogandGitHub cc8dbdd3fb time: Make sure to initialize the network system clock with a valid system clock (#1259)
This should fix AC:NH events and probably other games.
2020-05-20 11:35:30 +02:00
Thog da3fd3f71b surfaceflinger: FreeBufferLocked doesn't reset the graphic buffer
That's the job of the user on Horizon (via SetPreallocatedBuffer).
2020-05-15 12:20:24 +02:00
ThogandGitHub 0ff00bd6d3 am: Implement common web applets (#1188)
* am: Implemnet common web applets

This implement parsing of input and output of web applets while making
those close directly.

TODO for the future: Use and hook a web browser.

* Address Ac_K's comments
2020-05-15 03:56:14 +02:00
ThogandGitHub 378259a40a Surface Flinger: Implement GetBufferHistory (#1232)
* Surface Flinger: Implement GetBufferHistory

Also fix some bugs on the Surface Flinger implementation

* Address Ac_K's comment
2020-05-15 03:30:08 +02:00
ThogandGitHub 2285a1792f Remove travis configuration (#1181) 2020-05-04 12:12:42 +10:00
ThogandGitHub 12399b8aea Update GLWidget to 1.0.2 (#1191)
This should fix OpenGL context creation on OSX (using Cocoa).

NOTE: As macOS doesn't support OpenGL 4.3, the emulator will probably not work but this fix the hardcrash when starting any games.
2020-05-04 08:58:59 +10:00
Thog 80d0cc7d6f system: Make index 0 of keyboards in configuration 'all keyboards' 2020-05-03 15:00:29 +02:00
Thog afecb551c5 ui: fix major regression on SaveConfig 2020-05-03 12:08:21 +02:00
ThogandGitHub 764891e670 nvservice: add a lock around NvHostEvent and remove release fence on SFv2 (#1197)
* nvservice: add a lock to NvHostEvent

* Disable surface flinger release fence and readd infinite timeout

* FenceAction: Add a timeout of 1 seconds as this shouldn't wait forever anyuway

* surfaceflinger: remove leftovers from the release fence

* Don't allow infinite timeout on syncpoint while printing all timeout for better debugging
2020-05-02 22:47:06 +02:00
ThogandGitHub 81cba3c3df nvservices: mitigate abort with heavy load on the GPU processing thread (#1173)
* nvservices: mitigate abort with heavy load on the GPU processing thread.

This should fix Mario Tennis and LM3 regressions with syncpoints.

NOTE: Mario Tennis seems to have another issue related to the texture
cache that happens randomly when starting a match.

PS: Also add a debug logger for all known ioctl call to facilitate
debugging and add a missing UpdateMin in EventSignal.

* Address LDj3SNuD's comment

* Address gdkchan's comment
2020-05-01 23:18:42 +02:00
ThogandGitHub a0c06103c9 am: add IsVrModeEnabled (#1189)
* am: stub IsVrMode

Needed by SSBU 7.0.0

* Address Ac_K's comments
2020-05-01 18:51:00 +02:00
ThogandGitHub 886e42fb19 Use the official JSON parser (#1151)
This remove Utf8son and JsonPrettyPrinter dependencies.

NOTE: the standard JSON parser doesn't support configurable
indentation, as a result, all the pretty printed JSON are indented with 2
spaces.
2020-04-30 14:07:41 +02:00
ThogandGitHub 23170da5a0 audren: implement Renderer Info output informations (#1179)
This implement the rendering information output informations of
RequestUpdate.

This is needed by some games to keep track of the count of update on the
DSP.
2020-04-30 13:03:05 +10:00
ThogandGitHub 486f3163f3 Fix hbl 2.3.1 and hbmenu 3.3.0 (#1171)
* Fix hbl 2.3.1 and hbmenu 3.3.0

* log class: Add ServicePtm

* fix build issue

* do not cast titleId to byte

* Address Ac_K's comment
2020-04-28 11:44:29 +10:00
Thog 3dfa4232f8 Fix building of previous commit 2020-04-25 16:17:22 +02:00
ThogandGitHub 74f8a9bd79 UI: Implement interactive search on GameTable (#1148)
As I was unable to disable the ctrl + f keybinding, this implement
something to make it works with the default GTK code logic.

Also remove unused _treeView static member.
2020-04-25 23:02:44 +10:00
ThogandGitHub 75ec30c962 SurfaceFlinger: fix SetPreallocatedBuffer correctness (#1153)
Nintendo sets the buffer count in SetPreallocatedBuffer too.

This fix triple buffering on all games and finally fix SSBU flickering.
2020-04-25 12:08:50 +02:00
ThogandGitHub fba8651213 ui: Make ExtractSection supports updates (#1150)
This adds update support to the section extractor.
2020-04-23 21:21:32 +02:00
ThogandGitHub cdbb689b80 Add support for dynamic docking/undocking (#1147)
* Add support for dynamic docking/undocking

As SurfaceFlinger is now working more accurately, we can now support
dynamic configuration of docking mode :)

* Simplify a bt the code

* Fix import ordering

* Remove unused argument
2020-04-23 13:59:11 +02:00
ThogandGitHub 21a0b0ebeb SurfaceFlinger: Invalid GraphicBuffer in SetPreallocatedBuffer (#1145)
This invalidate the GraphicBuffer on the consumer side when
SetPreallocatedBuffer is called on a buffer slot.

This fix rendering issues on games with a dynamic resolution like Yoshi
Crafted World.
2020-04-22 21:18:53 +02:00
ThogandGitHub 36749c358d SurfaceFlinger v2 (#981)
* Rewrite SurfaceFlinger

Reimplement accurately SurfaceFlinger (based on my 8.1.0 reversing of it)

TODO: support swap interval properly and reintroduce disabled "game vsync" support.

* Some fixes for SetBufferCount

* uncomment a test from last commit

* SurfaceFlinger: don't free the graphic buffer in SetBufferCount

* SurfaceFlinger: Implement swap interval correctly

* SurfaceFlinger: Reintegrate Game VSync toggle

* SurfaceFlinger: do not push a fence on buffer release on the consumer side

* Revert "SurfaceFlinger: do not push a fence on buffer release on the consumer side"

This reverts commit 586b52b0bfab2d11f361f4b59ab7b7141020bbad.

* Make the game vsync toggle work dynamically again

* Unregister producer's Binder object when closing layer

* Address ripinperi's comments

* Add a timeout on syncpoint wait operation

Syncpoint aren't supposed to be waited on for more than a second.

This effectively workaround issues caused by not having a channel
scheduling in place yet.

PS: Also introduce Android WaitForever warning about fence being not
signaled for 3s

* Fix a print of previous commit

* Address Ac_K's comments

* Address gdkchan's comments

* Address final comments
2020-04-22 14:10:27 +10:00
ThogandGitHub 644de99e86 Implement GPU syncpoints (#980)
* Implement GPU syncpoints

This adds support for GPU syncpoints on the GPU backend & nvservices.

Everything that was implemented here is based on my researches,
hardware testing of the GM20B and reversing of nvservices (8.1.0).

Thanks to @fincs for the informations about some behaviours of the pusher
and for the initial informations about syncpoints.

* syncpoint: address gdkchan's comments

* Add some missing logic to handle SubmitGpfifo correctly

* Handle the NV event API correctly

* evnt => hostEvent

* Finish addressing gdkchan's comments

* nvservices: write the output buffer even when an error is returned

* dma pusher: Implemnet prefetch barrier

lso fix when the commands should be prefetch.

* Partially fix prefetch barrier

* Add a missing syncpoint check in QueryEvent of NvHostSyncPt

* Address Ac_K's comments and fix GetSyncpoint for ChannelResourcePolicy == Channel

* fix SyncptWait & SyncptWaitEx cmds logic

* Address ripinperi's comments

* Address gdkchan's comments

* Move user event management to the control channel

* Fix mm implementation, nvdec works again

* Address ripinperi's comments

* Address gdkchan's comments

* Implement nvhost-ctrl close accurately + make nvservices dispose channels when stopping the emulator

* Fix typo in MultiMediaOperationType
2020-04-19 11:25:57 +10:00
ThogandGitHub f70cc96464 libhac: use ApplicationControlProperty instead of Nacp (#1073)
* libhac: use ApplicationControlProperty instead of Nacp

Nacp was marked as deprecated in 0.10.0, this PR remove all usage of it
from Ryujinx and use the new struct ApplicationControlProperty.

* Address Moose's comment
2020-04-03 21:01:26 +11:00
Thog 5a52ca5071 Retrigger CI 2020-03-30 13:54:38 +02:00
ThogandGitHub 8f21db810d Reduce requirements for running homebrew (#1053)
* Reduce requirements for running homebrews

This commit change the following behaviours:

- TimeZoneBinary system archive isn't required until guest code call LoadTimeZoneRule.
- Fonts system archives aren't requred until a "pl:u" IPC call is made.
- Custom font support was dropped.
- TimeZoneBinary missing message is now an error and not a warning.

* Address comments
2020-03-30 08:23:05 +11:00
ThogandGitHub 0dd38028cb Make Device Location Name configuration (custom TZ) (#1031)
This permit to use arbitrary timezone (instead of UTC).

Useful for games like ACNH.
2020-03-26 09:23:21 +11:00
ThogandGitHub 5423daea56 ui: Make it possible to open the device save directory (#1040)
* Add an open device folder option

* Simplify logic from previous commit

* Address Xpl0itR's comments

* Address Ac_K comment
2020-03-25 18:09:38 +01:00
ThogandGitHub e590262531 friends: Stub GetBlockedUserListIds (#1017) 2020-03-23 22:19:45 +01:00
ThogandGitHub 7475e180b4 audren: Accept REV8 (#993)
REV8 only added changes on performance buffer and wavebuffer dsp command
generation.

As we don't support any of those, we can just increment the revision
number for now.
2020-03-18 09:43:47 +11:00
ThogandGitHub 47f079d23e stub GetNintendoAccountUserResourceCacheForApplication (#962) 2020-03-03 01:07:27 +11:00
3b531de670 Implement mii:u and mii:e entirely (#955)
* Implement mii:u and mii:e entirely

Co-authored-by: AcK77 <Acoustik666@gmail.com>

This commit implement the mii service accurately.

This is based on Ac_k work but was polished and updated to 7.x.

Please note that the following calls are partially implemented:

- Convert: Used to convert from old console format (Wii/Wii U/3ds)
- Import and Export: this is shouldn't be accesible in production mode.

* Remove some debug leftovers

* Make it possible to load an arbitrary mii database from a Switch

* Address gdk's comments

* Reduce visibility of all the Mii code

* Address Ac_K's comments

* Remove the StructLayout of DatabaseSessionMetadata

* Add a missing line return in DatabaseSessionMetadata

* Misc fixes and style changes

* Fix some issues from last commit

* Fix database server metadata UpdateCounter in MarkDirty (Thanks Moose for the catch)

* MountCounter should only be incremented when no error is reported

* Fix FixDatabase

Co-authored-by: Alex Barney <thealexbarney@gmail.com>
2020-03-02 09:56:01 +11:00
ThogandGitHub 5f6949d9b0 Improve rendering on resolution lower than 1080p (#944)
* Improve rendering on resolution lower than 1080p

* Apply scaling factor to the renderer (This fix 4K displays)
2020-02-18 22:34:57 +11:00
ThogandGitHub e9a37ca6a8 Implement GetCurrentIpConfigInfo (#943)
* Implement GetCurrentIpConfigInfo

This is needed by Rocket League.

Also fix GetCurrentIpConfigInfo to not return ipv6 addresses

* Address Ac_K comment
2020-02-17 16:28:41 +01:00
Thog 45d86b8f6f Retrigger Appveyor 2020-02-15 13:08:05 +01:00
ThogandGitHub 91b37ae36e Accept gamepad inputs when not focused (#941) 2020-02-15 12:30:53 +01:00
ThogandGitHub 4789f79254 Fix crash when first starting the emulator (#945)
* Fix crash when first starting the emulator

* Fix a nit
2020-02-14 23:07:22 +01:00
ThogandGitHub dbe3f938c7 Remove ScopedGlContext (#933)
As MakeCurrent can be slow to execute, this PR changes GLRenderer to not
have to reexecute MakeCurrent when processing frames.
2020-02-14 11:52:34 +01:00
ThogandGitHub 416ddd0f6e Some fixes for the new GLRenderer (#930)
* Some fixes for the new GLRenderer

Changelog:
- Fix transparency of the window on some games on Windows.
- Fix escape key not being able to exit emulation.
- Fix inverted logic in fullscreen event handling.
- Fix a race condition when stoping emulation causing a hang.
- Fix a memory leak of the OpenGL context when stoping emulation (saving ~200MB of RAM when stoping emulation).
- Simplify and document behaviours when exiting the emulator while the
emulation is running.

* Make sure to clear alpha channel when presenting Texture

This fix once and for all the transparency issue on Windows.

* Enforce footer bar size to avoid gl widget to get resized to 1280x724

* Fix full screen inversion in MainWindow and make sure _listStatusBox don't come back when not needed

* Remove previous transparency clear attempt that is useless now

* Remove an extra line return
2020-02-13 14:43:29 -03:00
ThogandGitHub 8d83878f67 Improve build identification (#927)
* Improve build identification

Add versioning on CI build

Fix #887

* Fix appveyor

* Fix appveyor for real now
2020-02-12 14:35:39 +01:00
c464e1ec52 Stub the application copyright framebuffer api (#921)
* Stub the application copyright framebuffer api

As we currently don't support multi layers on vi/nvnflinger, this PR
implement a stub of this API.

* Address Cyuubi's comments

* Add IPC checks and comments for future reversing

Co-authored-by: Ac_K <Acoustik666@gmail.com>

Co-authored-by: Ac_K <Acoustik666@gmail.com>
2020-02-12 00:07:13 +01:00
ThogandGitHub a906f2071c Fix a crash when closing the main UI (#904)
* Fix a crash when closing the main Ui

Also make sure to dispose the OpenAL context to not leak memory when
unloading the emulation context.

* Improve keys and 'game already running' dialogs

* Make sure to dispose the page table and ThreadContext

Less memory leaks!

* Fix tests

* Address gdk's comments
2020-02-06 12:38:24 +01:00
ThogandGitHub db9f8f999f Implement IDeliveryCacheProgressService in bcat (#908)
* Implement IDeliveryCacheProgressService in bcat

This stub IDeliveryCacheProgressService IPC interface as we don't plan
to support cache delivery.

* Address jd's comments

* Address jd's comment correctly

* Address gdk's comments
2020-02-06 05:09:59 +01:00
ThogandGitHub ea14a95524 Fix inconsistencies with UserId (#906)
* Fix inconsistencies with UserId

The account user id isn't an UUID. This PR adds a new UserId type with
the correct value ordering to avoid mismatch with LibHac's Uid. This also fix
an hardcoded value of the UserId.

As the userid has been invalid for quite some time (and to avoid forcing
users to their recreate saves), the userid has been changed to "00000000000000010000000000000000".

Also implement a stub for IApplicationFunctions::GetSaveDataSize. (see
the sources for the reason)

Fix #626

* Address jd's & Ac_k's comments
2020-02-02 14:24:17 +11:00
ThogandGitHub 5bd75477eb Fix OpenBisFileSystem wrong buffer type (#909)
As the title say.
2020-01-27 21:09:04 +01:00
ThogandAc_K 1d8da18334 Make VirtualFileSystem only instanciable once (#901)
This fix a regression caused by #888 on temporary saves for SNES Online.
(and probably other games)
2020-01-24 17:01:21 +01:00
ThogandAc_K d6b9babe1d Keep the GUI alive when closing a game (#888)
* Keep the GUI alive when closing a game

Make HLE.Switch init when starting a game and dispose it when closing
the GlScreen.

This also make HLE in charge of disposing the audio and gpu backend.

* Address Ac_k's comments

* Make sure to dispose the Discord module and use GTK quit method

Also update Discord Precense when closing a game.

* Make sure to dispose MainWindow

* Address gdk's comments
2020-01-21 23:23:11 +01:00
Thogandgdkchan d0f15cb0b1 Update 32 bits syscalls to match 64 bits implementation (#892)
* Implement 32 bits syscalls

Co-authored-by: riperiperi <rhy3756547@hotmail.com>

Implement all 32 bits counterparts of the 64 bits syscalls we currently
have.

* Add FlushProcessDataCache32

* Address jd's comments
2020-01-19 19:21:53 -03:00