RadWolfie
f894d31332
Cleanly rebase chihiro-work on develop
...
Co-authored-by: Luke Usher <luke.usher@outlook.com>
Co-authored-by: wutno <aaron@installgentoo.net>
Co-authored-by: RadWolfie <RadWolfie@users.noreply.github.com>
2024-07-05 12:19:54 -05:00
RadWolfie
9241bec768
Merge ergo720 less_busy_loops branch
2024-07-05 12:19:53 -05:00
RadWolfie
c50a0c5c7d
Merge EmuX86 passive branch
2024-07-05 12:18:57 -05:00
Luke Usher
87bab04932
EmuX86: Let invalid memory accesses trigger a warning rather than a fatal error
...
This seems to resolve most regressions we have had in recent history.
2024-07-05 12:18:54 -05:00
ergo720
ad6769bbf3
Never change the thread priority on the host and the disable boost flag too
...
This fixes almost all the games that were broken in this branch
2024-07-05 10:58:05 -05:00
ergo720
0e63131fc3
Use a DPC for expired timers + don't execute NV2A DPCs from the timer thread to avoid the exception overhead
2024-07-05 10:58:05 -05:00
ergo720
889040c56a
Fixed an issue in WaitApc where the wait block was not removed when using a zero timeout or when satisfied by a user APC + properly lock the wait block operations to avoid a race between SatisfyWait and KiTimerExpiration
2024-07-05 10:58:05 -05:00
ergo720
86542c9f2e
Implemented PTIMER alarm interrupt of NV2A + fixed a bug in timer_init
...
This fixes DOAU showing the dirty disk error in PAL50 mode
2024-07-05 10:58:05 -05:00
ergo720
c9edbd1003
Fixed wrong nv2a clock frequency
...
This is accessed by DOAU via PTIMER only in PAL50 mode
2024-07-05 10:58:05 -05:00
ergo720
ebb122f2a0
Fixed a bug in KeTickCount + check all timer indices when we are late in KiClockIsr
...
This almost completely fixes the slowness in Panzer Dragoon Orta
2024-07-05 10:58:04 -05:00
ergo720
c158a472ff
Make sure to reset WaitStatus when a new wait starts
...
This fixes an issue in Panzer Dragoon Orta, where KeDelayExecutionThread would return X_STATUS_TIMEOUT | X_STATUS_USER_APC
2024-07-05 10:58:04 -05:00
ergo720
6961d1c7a1
Make sure that GetNativeHandle succeeds before attempting to get the native handle
...
This fixes a sporadic crash in Panzer Dragoon Orta, where the title calls KeSetBasePriorityThread on a thread that has already terminated
2024-07-05 10:58:04 -05:00
ergo720
2f7cfe7e95
Fixed a bug in KiInsertTimerTable + log all objects being waited on in NtWaitForMultipleObjectsEx
...
This fixes a crash in Metal Slug 3
2024-07-05 10:58:04 -05:00
ergo720
46d0173673
Account for partial milliseconds in KiClockIsr
...
This fixes the slowness in The lord of the rings: the third era
2024-07-05 10:58:04 -05:00
ergo720
c7b028b3e7
Fixed a race condition in WaitApc + removed wrong InsertTailList for ktimers used during a timeout
...
This fixes almost all broken games in this branch. Still broken: PDO: 1 fps vs 10 fps, DOA3: freezes after title screen, Lord of the rings The third era: Unable to determine default Xbox backbuffer error???
2024-07-05 10:58:04 -05:00
ergo720
3d12edc77d
Always create a wait object even when we satisfy the wait on the host side + fixed a bug in KiWaitTestNoYield
...
This fixes an occasionl freeze in Steel Battalion + the slowness in JSRF
2024-07-05 10:58:04 -05:00
ergo720
08ab4b9164
Revert to using the host to do thread suspension
2024-07-05 10:58:04 -05:00
ergo720
4fca5c7007
Hack: <= thread priority instead of >=
2024-07-05 10:58:04 -05:00
ergo720
e26f20108a
Setup a KTIMER for the other functions using WaitApc too
2024-07-05 10:58:04 -05:00
ergo720
8475124e5b
Restore single interrupt loop in update_non_periodic_events
2024-07-05 10:58:03 -05:00
ergo720
9b2ae106e5
Place nvnet in its own thread
2024-07-05 10:58:03 -05:00
ergo720
b3bfeca3a8
Use get_now directly in system_events instead of qpc
2024-07-05 10:58:03 -05:00
ergo720
b77a13b708
Adjust KeSystemTime when the host system time is changed by the user
2024-07-05 10:58:03 -05:00
ergo720
1b5e111ae3
Account for delays between calls to KiClockIsr
...
This fixes the slowness in the dashboard
2024-07-05 10:58:03 -05:00
ergo720
1504a75a46
Raise priority of system events thread
2024-07-05 10:58:03 -05:00
ergo720
87496ab873
Removed delta amount added to KeSystemTime
2024-07-05 10:58:03 -05:00
ergo720
5b37a7ec21
Fixed thread order initialization when a thread starts suspended
2024-07-05 10:58:03 -05:00
ergo720
639f42c318
Make sure to hold the DPC lock until the DPC list has been emptied
...
This fixes a crash in Lord of the rings: The fellowship of the ring
2024-07-05 10:58:03 -05:00
ergo720
8d92992a6b
Implemented kernel unwait routines + updated/fixed KeWaitForMultipleObjects and KeWaitForSingleObject
2024-07-05 10:58:02 -05:00
ergo720
7323eed73e
Only change the priority of a thread if it is being set above normal
2024-07-05 10:58:02 -05:00
ergo720
b47c1f195c
Unpatch D3DDevice_BlockUntilVerticalBlank and D3DDevice_SetVerticalBlankCallback
2024-07-05 10:58:02 -05:00
ergo720
7c73bfc525
Avoid triggering multiple gpu interrupts outside the vblank
2024-07-05 10:58:02 -05:00
ergo720
1b4a3bb54f
Moved position of ObfDereferenceObject in NtSuspendThread
2024-07-05 10:58:02 -05:00
ergo720
750d202fa8
Removed scaling hack in KeInterruptTime and KeTickCount + added yield in system_events routine
...
This fixes the stuttering in Halo 2, Metal slug 3, JSRF and restores PDO, PSO to the same state as in master
2024-07-05 10:58:02 -05:00
ergo720
e7bca5e1bf
Implemented suspend/resume kernel Nt routines with the corresponding Ke routines
2024-07-05 10:58:01 -05:00
ergo720
937ab9e1c2
Fixed a bug in KeSetBasePriorityThread
2024-07-05 10:58:01 -05:00
ergo720
8006f55cf3
Merge many different periodic events in a single thread, instead of each having its own busy loop
...
This merges vblank, ohci's eof, pit interrupt, dsound sync and async workers, nvnet packet processing and system interrupt
2024-07-05 10:58:01 -05:00
ergo720
1828ddfd6f
Merge lle and hle vblank routines in a single thread
2024-07-05 10:58:00 -05:00
ergo720
bc42cfaa6b
Removed unnecessary lock in the interrupt thread
2024-07-05 10:58:00 -05:00
PatrickvL
b1235b7733
Merge pull request #2458 from LukeUsher/fix-compilation-vs2022
2024-07-05 10:41:18 -05:00
Luke Usher
1615ecc976
fix the build on vs2022 17.9.1
2024-05-22 12:46:03 +01:00
Luke Usher
0007d20b03
Merge pull request #2445 from medievil1/fog-stuff
...
fog stuff
2024-05-22 12:42:07 +01:00
RadWolfie
bfb10092c0
Merge pull request #2451 from RadWolfie/fix-hardware-model
...
Fix hardware model conversions + use respective hardware model based on console type
2024-02-08 12:48:46 -06:00
Luke Usher
f5b4878245
Merge pull request #2452 from medievil1/my-master
...
fix incorrect setting in pixel shader template
2024-02-04 19:47:12 +00:00
RadWolfie
4174fbc23f
review remarks
2024-02-04 13:29:40 -06:00
medievil1
0560ed6955
change clamp to saturate in shader templates
...
per discussions
2024-02-03 14:46:54 -05:00
medievil1
875015164c
fix incorrect setting in pixel shader template
...
it should be normal2, not normal 3...
PS_TEXTUREMODES_DOT_RFLCT_DIFF(ts) works in conjunction with #define PS_TEXTUREMODES_DOT_RFLCT_SPEC(ts)(after) and PS_TEXTUREMODES_DOTPRODUCT(ts)(before)
dotproduct uses it's own product/normal, dot_rflct uses dotproduct and it's own, and dot_spec uses the previous 2 and it's own ... this corrects light reflection on the floor in Halo
2024-02-03 14:38:16 -05:00
medievil1
aedb5ba87b
address review comment
...
remove PB pr sampling adjustments
2024-02-03 12:08:00 -05:00
RadWolfie
e5dcdebe7f
device: corrected conversions based on hardware model
2024-02-03 02:45:37 -06:00
medievil1
ad0b8340da
change flow of fog table/enable
...
per Jack, change flow to :
if fog is disabled, avoid table code and just set fogFactor to 1
2024-01-24 00:34:47 -05:00