caps: Implement SaveScreenShot calls and cleanup (#2140)

* caps: Implement SaveScreenShot calls and cleanup

This PR implement:
- caps:u IAlbumApplicationService (32) SetShimLibraryVersion
- caps:c IAlbumControlService (33) SetShimLibraryVersion
- caps:su IScreenShotApplicationService (32) SetShimLibraryVersion
- caps:su IScreenShotApplicationService (203/205/210) SaveScreenShotEx0/SaveScreenShotEx1/SaveScreenShotEx2

ImageSharp is used to save the raw screenshot data as a JPG file following what the service does.
All screenshots are save in: `%AppData%\Ryujinx\sdcard\Nintendo\Album` folder. (as example a screenshot file path will be `%AppData%\Ryujinx\sdcard\Nintendo\Album\2021\03\26\2021032601020300-0123456789ABCDEF0123456789ABCDEF.jpg`

This is needed by Animal Crossing: New Horizon where screenshots looks like this:

And this is needed in Monster Hunter Rise but screenshots are currently empty due to another issue.

* remove useless comment

* Addresses gdkchan feedback

* Addresses gdkchan feedback 2

* remove useless comment 2

* Fix nits
This commit is contained in:
Ac_K 2021-03-26 01:16:08 +01:00 committed by GitHub
parent 4bd1ad16f9
commit 32be8caa9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 327 additions and 10 deletions

View file

@ -0,0 +1,17 @@
namespace Ryujinx.HLE.HOS.Services.Caps
{
enum ResultCode
{
ModuleId = 206,
ErrorCodeShift = 9,
Success = 0,
InvalidArgument = (2 << ErrorCodeShift) | ModuleId,
ShimLibraryVersionAlreadySet = (7 << ErrorCodeShift) | ModuleId,
OutOfRange = (8 << ErrorCodeShift) | ModuleId,
NullOutputBuffer = (141 << ErrorCodeShift) | ModuleId,
NullInputBuffer = (142 << ErrorCodeShift) | ModuleId,
BlacklistedPid = (822 << ErrorCodeShift) | ModuleId
}
}