685 Commits

Author SHA1 Message Date
Stenzek
f6f709bcc5
System: Fix vsync preventing fast forward/turbo 2025-01-16 21:14:21 +10:00
Stenzek
0dc257abe4
System: Set time constraints for GPU thread on MacOS
Fixes erratic frame times.
2025-01-13 19:51:35 +10:00
Stenzek
f6c7681ef0
ImGuiOverlays: Double buffer input OSD and add vibration 2025-01-13 16:49:31 +10:00
Stenzek
3621705933
Achievements: Ensure loading old states behave the same as new 2025-01-13 13:13:15 +10:00
Stenzek
035762af94
System: Fix subimage change OSD message 2025-01-12 19:03:53 +10:00
Stenzek
e4dea69713
System: Drop state load OSD duration to quick 2025-01-12 17:50:33 +10:00
Stenzek
e43d7046ba
Achievements: Attempt relogin on system boot
And display an error notification if login fails, instead of
invalidating the token.
2025-01-12 17:50:33 +10:00
Stenzek
29934d62c4
System: Improve rewind behaviour
- Fix crash when rewinding before first state is saved.
- Always save a rewind state immediately after normal save state load.
- Don't toss the last rewind state when rewinding, that way there is
  always at least one state to rewind to.
2025-01-09 23:46:06 +10:00
Stenzek
4449ae7904
Settings: Rearrange fields to avoid padding 2025-01-09 21:21:12 +10:00
Stenzek
561397a53c
CDROM: Add 'maximum' read speedup option
"Instant" seek is now renamed to Maximum as well, for consistency.
2025-01-09 15:23:47 +10:00
Stenzek
0960160589
System: Don't check for subchannel with GPU dump 2025-01-06 21:17:27 +10:00
Stenzek
db14824d61
System: Use task queue for saving states/screenshots/gpudumps
System shutdown no longer needs to block. Gets rid of the slight
hitch when shutting down and saving state with the Big Picture UI.
2025-01-03 20:16:38 +10:00
Stenzek
37e5e64ddc
System: Move state display updates to call sites
Fixes black frames when changing settings with runahead/rewind enabled.
2025-01-01 23:05:08 +10:00
Stenzek
f3b7686457
System: Fix crash with memory save states + renderer switch 2025-01-01 22:55:31 +10:00
Stenzek
dcd439e7d8
GTE: Add 'Free Camera' feature 2025-01-01 22:02:55 +10:00
Stenzek
a08acdb93a
System: Improve texture recycling when changing rewind/runahead settings
Fix suprious failures when changing rewind settings when low on VRAM.
2025-01-01 19:33:01 +10:00
Stenzek
b76618fdf4
System: Should call PGXP Reset not Initialize() in InternalReset() 2024-12-31 15:24:36 +10:00
Stenzek
e0877c1922
System: Add IsUsingPS2BIOS() 2024-12-31 14:58:31 +10:00
Stenzek
7228f6f1cf
System: Don't fail startup if cpuinfo init fails 2024-12-30 18:11:56 +10:00
Stenzek
82a843c121
RegTest: Log state and RAM hashes on exit
Useful for checking determinism.
2024-12-29 17:25:55 +10:00
Stenzek
1ed9e609a5
RegTest: Support replaying GPU dumps 2024-12-29 17:25:55 +10:00
Stenzek
dd180f2fd6
System: Fix dump VRAM writes not updating on GPU thread 2024-12-25 15:53:53 +10:00
Stenzek
dc18ce2c2a
System: Warn if fastmem mode is not optimal 2024-12-24 13:16:37 +10:00
Stenzek
f3f99f7eac
FullscreenUI: Support renderer swapping without restart 2024-12-23 14:37:38 +10:00
Stenzek
9e04b0bf55
GPU/TextureCache: Add 'Always Track Uploads' option 2024-12-23 13:52:23 +10:00
Stenzek
515a4d07fb
System: Fix pre-frame sleep getting stuck 2024-12-22 16:48:45 +10:00
Stenzek
0aa89ec7b0
System: Fix some GPU settings not updating 2024-12-21 18:29:56 +10:00
Stenzek
62285dcf33
Settings: Split into GPU and main settings
That way the GPU thread copy doesn't need fields it never touches.
2024-12-21 14:53:15 +10:00
Stenzek
26db661a05
GPU: Remove global indirection 2024-12-21 14:35:12 +10:00
Stenzek
c4b0430d5e
System: Remove unused SetExpansionROM() 2024-12-19 23:32:15 +10:00
Stenzek
7826c258b0
System: Frame step after runahead
Makes it behave as expected.
2024-12-19 23:32:15 +10:00
Stenzek
2d659fc3eb
GPU: Move backend work off CPU thread 2024-12-19 23:32:15 +10:00
Stenzek
831c982f3b
System: Rewrite memory save state handling
Makes it more friendly to GPU thread.
2024-12-19 22:42:28 +10:00
Stenzek
f010d81652
ISOReader: Add XA and raw extraction modes 2024-12-17 14:19:41 +10:00
Stenzek
b634eecd21
System: Allow separate configuration for multi-disc games 2024-12-16 01:22:48 +10:00
Stenzek
43af57d735
System: Fix UpdateGTEAspectRatio() during initialization 2024-12-15 22:12:43 +10:00
Stenzek
5687dd22bd
PIO: Add basic flash cartridge support 2024-12-13 23:22:57 +10:00
Stenzek
db848d1381
System: Remove redundant GameDB lookup 2024-12-12 17:43:00 +10:00
Stenzek
e507fdcb1f
System: Load state before calling OnSystemStarted()
Needed for transitent state cleanup on Android.
2024-12-11 22:04:21 +10:00
Stenzek
1edcc8c0ac
System: Merge system taints with state taints on load 2024-12-10 20:19:27 +10:00
Stenzek
5d7cb6c5dc
System: Move state compression/writing to worker thread
Reduce hitches when saving.
2024-12-09 14:16:55 +10:00
Stenzek
31d953dac2
System: Prevent memcard blocking resume state save
Because otherwise you end up with a stale/old resume state, which is
arguably worse.
2024-12-09 13:42:41 +10:00
Stenzek
5c4d95fd51
Settings: Add missing GPU feature disables 2024-12-06 15:07:56 +10:00
Stenzek
0c7636b3c3
System: Add missing safe mode disable messages 2024-12-05 17:04:09 +10:00
Stenzek
5b6e3a952c
System: Reset code cache on fastmem mode change
Fixes excess backpatching and potential crashes when changing mode.
2024-12-03 17:29:47 +10:00
Stenzek
b7fff840c8
System: Move thread name init to host
Prevents funky thread names for regtest on Linux.
2024-11-29 21:21:27 +10:00
Stenzek
aafc029682
Misc: Un-namespace Timer 2024-11-29 20:13:37 +10:00
Stenzek
0befbf8021
GPU: Add Uncorrected Borders crop mode
Should behave the same as the old "All Borders" mode.
The pixel aspect ratio WILL BE WRONG.

Also fixes the size of screenshots in internal resolution mode.
2024-11-26 18:00:19 +10:00
Stenzek
5fd79254bd
GPU: Fix crash when toggling software renderer 2024-11-26 12:58:12 +10:00
Stenzek
b180b26728
GPU: Rework "All Borders" cropping to be aspect correct
The "All Borders" crop mode was previously creating an aspect ratio that
was completely incorrect when using modes outside of Auto/4:3. We now
scale the aspect ratio relative to the PAL/NTSC aspect ratio to account
for this, regardless of how much of a border the game configures.

Overscan cropping also produced an incorrect aspect ratio outside of 4:3
mode, resulting in minor horizontal stretching. It is now correct,
however, this results in black borders being added in 16:9 for most
games.

To remove these borders, you have two options:

 - Use the "Stretch to Fill" aspect ratio. This will scale the GTE
   aspect ratio to fill the screen.

 - Use the "Only Overscan Area (Aspect Uncorrected)" crop mode. This
   mode retains the "old" behaviour, resulting in a stretched image.
2024-11-25 16:26:16 +10:00
Stenzek
24dfd30839
Image: Refactor to a more generic class 2024-11-24 23:29:29 +10:00
Stenzek
b984f343ae
System: Fix audio CD images not showing title 2024-11-23 18:52:45 +10:00
Stenzek
8ec9c90c82
Qt: Fix settings not applying immediately when editing profile 2024-11-14 00:35:25 +10:00
Stenzek
8611f4f438
System: Handle GPU device loss in BP-only mode 2024-11-10 15:48:41 +10:00
Stenzek
ead9e56c4d
System: Support loading ELF files 2024-11-05 17:54:12 +10:00
Stenzek
8bd0e6c3f7
CPU/CodeCache: Clear blocks on system shutdown
Means we release all allocated memory on system shutdown, rather
than waiting until the next VM/system start.
2024-11-05 13:06:46 +10:00
Stenzek
6551358212
Log: Replace channel string search with bitset
Knocks off around ~20KB of code.
2024-10-31 14:41:33 +10:00
Stenzek
2043128f98
System: Fix per-game fast boot applying too late 2024-10-30 15:19:10 +10:00
Stenzek
bfadd608fb
System: Add 'Task Threads'
Used for saving screenshots/GPU dumps.
2024-10-30 15:19:10 +10:00
Stenzek
53fb5cd9e1
GTE: Remove dependency on GPUDevice 2024-10-28 14:31:22 +10:00
Stenzek
d34707a377
System: Pack state in struct
Don't trust the linker...
2024-10-28 14:31:22 +10:00
Stenzek
166c930738
System: Move private functions to separate header 2024-10-28 14:31:22 +10:00
Stenzek
21d19a6297
System: Move perf counters to separate namespace 2024-10-28 14:31:22 +10:00
Stenzek
875ccecb90
System: Use frame rate for speed calculation
Instead of cycles. Makes it invariant to OC changes, and can
be managed on the (future) GPU thread.
2024-10-27 22:01:00 +10:00
Stenzek
2c57817803
System: Invalidate display on debug window change
Fixes these windows displaying black if the VM is paused.
2024-10-27 15:15:20 +10:00
Stenzek
1ae2dcf192
GPU: Propagate initialization error to caller
Avoids double error popup.
2024-10-26 01:41:29 +10:00
Stenzek
b92eeec962
System: Warning fix 2024-10-25 20:45:11 +10:00
Stenzek
080807e557
CDROM: Move subchannel replacement from CDImage
This will allow you to use SBI/LSD files with real discs, if your
drive does not support reading subchannels, or has an incorrect
skew.
2024-10-25 15:35:12 +10:00
Stenzek
7d2216c289
GameList: Avoid double fopen/read of EXEs 2024-10-23 21:20:28 +10:00
Stenzek
2d04f2eff9
System: Support loading .CPE files 2024-10-23 21:08:17 +10:00
Stenzek
485f81a02f
GPUDump: Support XZ compression 2024-10-22 19:40:03 +10:00
Stenzek
396e7d994a
System: Make global safe mode always take precedence 2024-10-22 01:11:31 +10:00
Stenzek
a9bfe2642f
System: Simplify error path in BootSystem() 2024-10-21 00:18:12 +10:00
Stenzek
b62e58776e
System: Fix GPU usage disappearing on renderer change 2024-10-21 00:12:20 +10:00
Stenzek
c250209336
System: Fix input profiles inheriting base settings 2024-10-21 00:05:32 +10:00
Stenzek
4ab22921c4
GPUDump: Add GPU dump recording and playback
Implements the specification from:

https://github.com/ps1dev/standards/blob/main/GPUDUMP.md
2024-10-20 22:02:24 +10:00
Stenzek
056b629837
ImGuiManager: Add 'Screen Margins' (i.e. safe zone) 2024-10-20 13:17:22 +10:00
Stenzek
76208f5f2d
System: Display localized trait names 2024-10-19 01:16:05 +10:00
Stenzek
57cf0f2643
System: Reload cheats/patches on safe mode toggle 2024-10-19 01:13:32 +10:00
Stenzek
baa9065d2e
System: Add taints to save states
This informs the user they are loading a save state that at some point
had potentially-game-breaking options enabled, and a reset is necessary
to clear them.
2024-10-19 01:13:32 +10:00
Stenzek
86a28d5dc0
ImGuiOverlays: Move debug state to auxiliary windows 2024-10-18 20:48:30 +10:00
Stenzek
eb46142ee7
GPUDevice: Extract swap chain to separate class 2024-10-18 20:48:29 +10:00
Stenzek
005d48a387
System: Don't display setting warnings without game 2024-10-18 20:48:29 +10:00
Stenzek
11c212260c
System: Only check controller changes when valid 2024-10-14 12:46:54 +10:00
Stenzek
e0b6f6f1b2
Cheats: Rewrite cheat management system 2024-10-13 16:43:22 +10:00
Stenzek
26b6c704f0
MemMap: Support dynamic page size selection
i.e. 4K to 16K on ARM64.
2024-10-05 19:25:23 +10:00
Stenzek
3fb5fb4c72
System: Fix saving of subimage index 2024-10-06 18:06:51 +10:00
Stenzek
c9f7ef5f9a
System: Fix reset when booting EXE 2024-10-06 13:36:46 +10:00
Stenzek
08bdffac64
GPU/HW: Fix toggling texture replacement settings 2024-10-05 13:50:36 +10:00
Stenzek
887d588029
System: Further improve fastboot behaviour
Use fastboot when slowboot will fail.
2024-10-04 14:48:05 +10:00
Stenzek
51fefb36a0
System: Fix crash when toggling SW with interpreter 2024-10-01 22:41:01 +10:00
Stenzek
45c8f6ea56
BIOS: Make GetInfoForHash() public
And it should take a const span.
2024-10-01 21:14:43 +10:00
Stenzek
060146a37a
CDROM: Add SubQ Skew option
Fixes corrupted boss sprites in Captain Commando.

One day I'll refactor things to fix this properly.
2024-09-29 17:11:52 +10:00
Stenzek
e06f1f1002
GPU: Add hardware texture cache 2024-09-29 13:37:47 +10:00
Stenzek
4132b5ef3d
Settings: Remove 'Increase Timer Resolution' option
It's no longer needed since I switched to high-resolution waitable
timers, which are supported on Win10 1803+.
2024-09-28 23:50:44 +10:00
Stenzek
036e11f7a8
Qt: Remove unused variable 2024-09-27 22:48:43 +10:00
Stenzek
df8e950e6e
Qt: Rename 'Disable All Enhancements' to 'Safe Mode'
And move it to the bottom of the dialog.
2024-09-26 21:54:51 +10:00
Stenzek
29da7f7211
System: Add 'Fast Forward Boot' option 2024-09-26 21:40:48 +10:00
Stenzek
4d74b203af
System: Don't try to read SYSTEM.CNF from Audio CD 2024-09-26 13:39:01 +10:00
Stenzek
bfc914aaa9
CMake: Add DISABLE_SSE4 option
NOT recommended. Only if you ABSOLUTELY need it.

The SSE2/legacy build will be a separate download option, and
warn you if you try to run it on a CPU that supports SSE4.
2024-09-23 20:27:58 +10:00