1602 Commits

Author SHA1 Message Date
Margen67
256ce13fd1 Cleanup FUNDING.yml (#1494) 2020-08-30 18:44:01 +02:00
Mary
b1b1469878 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
gdkchan
1e6a80b180 Fix off by one error in pages count calculation on GPU pool (#1511) 2020-08-29 16:42:34 -03:00
Mary
44fe0b3ab5 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
mageven
ff9e84299f Improve multi-controller support in HID and Controller Applet (#1453)
* Initial commit

Enable proper LED patterns
Toggle Hotkeys only on focus
Ignore Handheld on Docked mode
Remove PrimaryController
Validate NpadIdType
Rewrite NpadDevices to process config in update loop
Cleanup

* Notify in log periodically when no matched controllers

* Remove duplicate StructArrayHelpers in favor of Common.Memory

Fix struct padding CS0169 warns in Touchscreen

* Remove GTK markup from Controller Applet

Use IList instead of List
Explicit list capacity in 1ms loop
Fix formatting

* Restrict ControllerWindow to show valid controller types

Add selected player name to ControllerWindow title

* ControllerWindow: Fix controller type initial value

NpadDevices: Simplify default battery charge

* Address AcK's comments

Use explicit types and fix formatting

* Remove HashSet for SupportedPlayers

Fixes potential exceptions due to race

* Fix ControllerSupportArg struct packing

Also comes with two revisions of struct for 4/8 players max.
2020-08-23 22:54:11 +02:00
gdkchan
da0fad24e8 Fix asserts on VP9 decoder in debug mode and build warnings (#1480) 2020-08-20 00:07:04 -03:00
Ac_K
2341456cb3 account: Implement IManagerForApplication calls and IAsyncContext (#1466)
* account: Implement IManagerForApplication calls and IAsyncContext

This implement:
- IManagerForApplication::EnsureIdTokenCacheAsync (accordingly to RE) but the Async task is stubbed.
- IAsyncContext interface (accordingly to RE).
- IManagerForApplication::LoadIdTokenCache (checked with RE, and stubbed).

I've tried some games but now they needs some `sfdnsres` calls, some other boots and crashes with other issues.
Maybe we should disable the connection somewhere to lets the game think we are offline. I have done many attempts, without success, but since the code is here now, it's better than nothing.

(I've cleaned up `using` of IGeneralService too)

Closes #629 and closes #630

* change AccountId

* Fix gdkchan's comments

* use CompletedTask
2020-08-18 21:24:54 +02:00
Mary
2c17f709d2 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
Mary
698ed6c622 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
mageven
ce7dd98df3 Add missing depth-color conversions in CopyTexture (#1474)
* Add missing depth-color conversions in CopyTexture

* Whitespace

* switch expression
2020-08-14 20:03:19 +10:00
mageven
3627a30f6a PPTC GUI: Purge all versioned caches on click (#1454)
* PPTC GUI: Purge all versioned caches on click

* Address AcK's comments

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

* nit: Explicit declarations

Co-authored-by: Ac_K <Acoustik666@gmail.com>
2020-08-13 19:31:13 +02:00
LDj3SNuD
40bbf29b40 Fix MacroJit SubtractWithBorrow Alu Reg Operation. (#1473) 2020-08-13 12:08:48 -03:00
LDj3SNuD
1b46a78fce Fix Vcvt_FI & Vcvt_RM; Add Vfma_S & Vfms_S. Add Tests. (#1471)
* Fix Vcvt_FI & Vcvt_RM; Add Vfma_S & Vfms_S. Add Tests.

* Address PR feedback & Nit.
2020-08-13 02:34:02 -03:00
Ac_K
e1f5d3322d bluetooth: Fix event handle in IBluetoothDriver (#1464)
This fix the InitializeBluetoothLe call who didn't return any event handle
2020-08-13 01:04:59 +02:00
Xpl0itR
db1975b6de Replace the Audio Backend ComboBoxText to a ComboBox with a custom model (#1451)
* Use a combobox with a custom model to be able to disable entries within it

* Address Ack's comments
2020-08-09 22:46:06 +02:00
mageven
d4ad8fda53 Fix PTC version increment from #1433 (#1462) 2020-08-09 05:32:00 +02:00
LDj3SNuD
0f508fbe5e CPU: This PR fixes Fpscr, among other things. (#1433)
* CPU: This PR fixes Fpscr, among other things.

* Add Fpscr.Qc = 1 if sat. for Vqrshrn & Vqrshrun.

* Fix Vcmp & Vcmpe opcode table.

* Revert "Fix Vcmp & Vcmpe opcode table."

This reverts commit c117d9410d693185ff5f8ee8e457ffbfb2027dd5.

* Address PR feedbacks.
2020-08-08 17:18:51 +02:00
Alex Barney
539f842e87 Forward OpenSaveDataInfoReaderOnlyCacheStorage to OpenSaveDataInfoReaderWithFilter (#1449) 2020-08-08 16:02:06 +02:00
Ac_K
6941ca8213 Add Issue Templates (#1456)
* Add Issue Templates

This disable the creation of empty issues and adds some templates when one is opened.
A link to our discord is directly added to the issue templates list.

Thanks EmulationFanatic for the proof reading.

* fix copy paste

* Fix name
2020-08-07 10:52:03 -03:00
mageven
81041a1c3b Rename DebugLevel Performance to Slowdowns (#1450) 2020-08-07 15:30:06 +02:00
gdkchan
286b76d041 Silence several build warnings (#1428)
* Silence several build warnings

* Remove fixed buffers from NVDEC struct

* Remove unused field and usings

* Fix wrong name

* Silence more warning on H264 PictureInfo
2020-08-06 23:40:41 +02:00
Ficture Seven
127449e0d6 Improve branch operations (#1442)
* Add Compare instruction

* Add BranchIf instruction

* Use test when BranchIf & Compare against 0

* Propagate Compare into BranchIfTrue/False use

- Propagate Compare operations into their BranchIfTrue/False use and
  turn these into a BranchIf.

- Clean up Comparison enum.

* Replace BranchIfTrue/False with BranchIf

* Use BranchIf in EmitPtPointerLoad

- Using BranchIf early instead of BranchIfTrue/False improves LCQ and
  reduces the amount of work needed by the Optimizer.

  EmitPtPointerLoader was a/the big producer of BranchIfTrue/False.

- Fix asserts firing when assembling BitwiseAnd because of type
  mismatch in EmitStoreExclusive. This is harmless and should not
  cause any diffs.

* Increment PPTC interval version

* Improve IRDumper for BranchIf & Compare

* Use BranchIf in EmitNativeCall

* Clean up

* Do not emit test when immediately preceded by and
2020-08-05 08:52:33 +10:00
mageven
0092f25176 Improved Logger (#1292)
* Logger class changes only

Now compile-time checking is possible with the help of Nullable Value
types.

* Misc formatting

* Manual optimizations

PrintGuestLog
PrintGuestStackTrace
Surfaceflinger DequeueBuffer

* Reduce SendVibrationXX log level to Debug

* Add Notice log level

This level is always enabled and used to print system info, etc...
Also, rewrite LogColor to switch expression as colors are static

* Unify unhandled exception event handlers

* Print enabled LogLevels during init

* Re-add App Exit disposes in proper order

nit: switch case spacing

* Revert PrintGuestStackTrace to Info logs due to #1407

PrintGuestStackTrace is now called in some critical error handlers
so revert to old behavior as KThread isn't part of Guest.

* Batch replace Logger statements
2020-08-04 01:32:53 +02:00
gdkchan
5f1b07018c Implement a Macro JIT (#1445)
* Implement a Macro JIT

* Nit: space
2020-08-03 03:36:57 +02:00
mageven
2555c6adfa Implement Software Keyboard GTK frontend (#1434)
* Implement SwKbd GUI

* Relocate UI handler to Emu Context from Config

Also create a common interface for UI handlers in the context and specialize for Gtk

Add basic input length validation in InputDialog

* Add Transfer Memory support to AppletCreator

Read Initial Text for SwKbd using Transfer Memory

* Improve InputDialog widget

Improve length validation
Has extra label to show validition info
Handle potential errors and log them

* Misc improvements

* Improve string validation
* Improve error handling
* Remove tuple in struct
* Address formatting nits

* Add proper Cancel functionality

Also handle GUI errors in UI handler

* Address jD's comments

* Fix _uiHandler init

* Address AcK's comments
2020-08-03 03:30:58 +02:00
mageven
212b96ec02 Facilitate OpenGL debug logging via GUI (#1373)
* Allow printing GL Debug logs with GUI options

Improve GL Debugger

Make the new option persistent

Address gdkchan's comments
- Rename enum to GraphicsDebugLevel
- Move Debugger Init to Renderer Init
- Fix formatting

* nit: newlines
2020-08-02 16:41:24 +02:00
Ac_K
99590031ca friend: Implement GetPlayHistoryRegistrationKey (#1424)
* friend: Implement GetPlayHistoryRegistrationKey

This implement IServiceCreator::GetPlayHistoryRegistrationKey call accordingly to RE.

Close #1110

* Fix comments

* Fix guid and comment some codes

* Improve guid casting and remove unused vars
2020-08-02 02:20:44 +02:00
Mary
e8522d143d 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
Ac_K
c3af3df30e common: Fix WMI exception (#1422)
* common: Fix WMI exception

We currently don't check if WMI service is available when we get the CPU name and the RAM size.
This fix the issue by catching all exceptions and set default values instead.

Close #1353

* remove useless assign

* Fix Exception

* Address comments

Co-authored-by: Thog <me@thog.eu>
2020-07-30 21:02:06 +02:00
gdkchan
8d3095ef66 Implement inline memory load/store exclusive and ordered (#1413)
* Implement inline memory load/store exclusive

* Fix missing REX prefix on 8-bits CMPXCHG

* Increment PTC version due to bugfix

* Remove redundant memory checks

* Address PR feedback

* Increment PPTC version
2020-07-30 11:29:28 -03:00
gdkchan
b8f81092ea Print guest stack trace on invalid memory access (#1407)
* Print guest stack trace on invalid memory access

* Improve XML docs
2020-07-30 23:16:41 +10:00
gdkchan
864bdc92f0 Refactor shader translator ShaderConfig and reduce the number of out args (#1438) 2020-07-30 15:53:23 +10:00
Ficture Seven
266f5d8f19 Use movd,movq for i32/64 VectorExtract %x, 0x0 (#1439)
* Use movd,movq for i32/64 VectorExtract %x, 0x0

* Increment PPTC interval version

* Use else-if instead

- Address gdkchan's feedback.
- Clean up Debug.Assert calls

* Inline `count` expression into Debug.Assert

Apparently the CoreCLR JIT will not eliminate this. :(
2020-07-30 15:52:26 +10:00
gdkchan
4763d8b09a Fix shader regression on Intel iGPUs by reverting layout changes (#1425) 2020-07-29 08:01:11 +10:00
gdkchan
f5b1b6f680 Implement alpha test using legacy functions (#1426) 2020-07-28 18:30:08 -03:00
gdkchan
362c57ec31 Implement VIC BGRA output surface format (#1430) 2020-07-28 18:25:58 -03:00
Ac_K
86197a449d ns/nim: Stub eShop related calls (#1420)
* ns/nim: Stub eShop related calls

As we aren't able to process purchase on the eShop throught the emulator, I have:
- Stub IPurchaseEventManager::SetDefaultDeliveryTarget (with RE check).
- Implement IPurchaseEventManager::GetPurchasedEventReadableHandle (with RE check).

As we can't do any eShop async call throught the emulator, I have:
- Stub IShopServiceAccessServerInterface::CreateServerInterface
- Stub IShopServiceAccessServer::CreateAccessorInterface
- Stub IShopServiceAccessor::IShopServiceAsync

Close #1084 and #1322

* fix handle copy

* Fix align

* Fix readonly event
2020-07-27 01:04:08 +02:00
Ac_K
0f98a87681 audin: Implement IAudioInManager ListAudioIns (#1419)
* audin: Implement IAudioInManager ListAudioIns

This implement some calls of IAudioInManager:
- ListAudioIns
- ListAudioInsAuto
- ListAudioInsAutoFiltered

Accordingly to RE.

Close #1056

* Fix count

* Comment condition

* Fix comment
2020-07-27 00:25:04 +02:00
gdkchan
f561fd45d2 Use polygon offset clamp if supported (#1429) 2020-07-26 18:11:28 -03:00
gdkchan
68da3ce3cd Implement BGRA texture support (#1418)
* Implement BGRA texture support

* Missing AppendLine

* Remove empty lines

* Address PR feedback
2020-07-26 00:03:40 -03:00
gdkchan
8715c46c23 PPTC version increment (#1427) 2020-07-25 20:01:57 +02:00
gdkchan
ba86878cb1 Remove GPU MemoryAccessor (#1423)
* Remove GPU MemoryAccessor

* Update outdated XML doc

* Update more outdated stuff
2020-07-25 16:39:45 +10:00
gdkchan
57210a7178 Refactor NativeContext (#1410)
* Refactor NativeContext

* Fix bugs

* Use correct counts

* Check index using register count constants
2020-07-24 16:13:14 -03:00
Alex Barney
bedcbc44ad Update to LibHac 0.11.3 (#1414)
Removes the timeout when deleting files from the local file system
2020-07-24 06:12:19 +02:00
gdkchan
fedcb0811e New GPFifo and fast guest constant buffer updates (#1400)
* Add new structures from official docs, start migrating GPFifo

* Finish migration to new GPFifo processor

* Implement fast constant buffer data upload

* Migrate to new GPFifo class

* XML docs
2020-07-23 23:53:25 -03:00
emmauss
f0e79676b9 fix fullscreen toggling (#1364) 2020-07-23 23:12:19 +10:00
Ac_K
f8d713e554 vi: Implement GetIndirectLayerImageRequiredMemoryInfo (#1415)
This implement GetIndirectLayerImageRequiredMemoryInfo call from vi service, accordingly to RE.

Thanks to Thog and gdkchan for helping me to understand some GPU things.

Close #942
2020-07-23 20:25:41 +10:00
Ac_K
acd159816f Add multiple calls to am service (#1411)
* Add multiple calls to am service

This implement/stub some am calls:

- SetAutoSleepDisabled
- IsAutoSleepDisabled
- SetAlbumImageTakenNotificationEnabled
- EnableApplicationCrashReport
- GetPreviousProgramIndex
- NeedsToExitProcess
- RequestForAppletToGetForeground
- GetIndirectLayerConsumerHandle

All checked by RE.
Additionnaly to that, there is some cleanup here and there.

Fix #1387, #1324, #1165, #1163, #1065

* Fix casting

* Thread safe assign
2020-07-22 14:56:00 +10:00
mageven
50220a7985 Better TimeZone entry in System Settings (#1254)
* Better timezone labels in System TimeZone

Replace with GtkEntry with auto-complete

Also removed async task as now loading is fast

Address Thog's comments

self-nit: Remove string alias

Address AcK's comments

* Improve parsing
* Optimize and fix string matching

Address jD's comments

* Also, make abbreviations searchable
* Optimize EntryCompletion's MatchFunc

* nit: Result.IsFailure()

* Fix potential crash on opening Settings window w/o FW installed
2020-07-21 06:14:42 +02:00
Xpl0itR
709feac3fa A couple fixes for the audio backend GUI option (#1360)
* Detect available audio backends in the gui on a separate thread and

hardcode dummy backend in the dropdown and select it by default

* Use a Task rather than a Thread

* Modify UI on UI thread
2020-07-21 05:33:23 +02:00