Commit graph

2736 commits

Author SHA1 Message Date
Stenzek abbb21ffec
GPU: Approxiate texture cache reload time for P8/C16 sprites 2024-08-11 23:50:37 +10:00
Stenzek db4e28f44c
GPU: Add cycle penalty for reloading CLUT 2024-08-11 23:50:37 +10:00
Stenzek 00a58eb4e5
Bus: Fix sideloading EXEs without initial SP value 2024-08-11 23:50:37 +10:00
Stenzek 62eb557832
MediaCapture: Warning fix 2024-08-11 23:50:37 +10:00
Stenzek af47eb6956
System: Add video capture feature 2024-08-11 21:06:58 +10:00
Stenzek 98b1a703f3
GPU/HW: Use texture instead of RTs for rewind/runahead w/o MSAA 2024-08-10 01:24:38 +10:00
Stenzek 55d095174f
CDROM: Defer init completion until after seek
Reduces leaky reverb in some games.
2024-08-10 00:13:59 +10:00
Stenzek d1f0669374
SPU: Ensure all samples are generated prior to DMA write 2024-08-09 12:36:24 +10:00
Stenzek c97516b01d
CDROM: Further improve seek timing
Fixes background music in World Cup 98, background noise in Idol
Promotion - Yumie Island, probably others.
2024-08-09 12:36:24 +10:00
Stenzek b2ca23e9da
GPU: Use full display rect for postfx calculations 2024-08-06 17:38:08 +10:00
Stenzek 4f16cb61b4
GPUDevice: Expose swap chain clear colour 2024-08-06 17:35:27 +10:00
Stenzek aeb9d383ce
System: Add save state compression mode options 2024-08-06 17:02:21 +10:00
Stenzek 70411783cd
System: Make more functions static 2024-08-06 16:10:15 +10:00
Stenzek e6a682f8d5
System: Reduce rewind/runahead memory usage w/o 8MB enabled 2024-08-06 16:02:18 +10:00
Stenzek 0517aef5bd
CDROM: Don't allow deferred INT1 after Pause ACK 2024-08-06 13:34:11 +10:00
Stenzek 0c15c9eaa8
Qt: Fix bug where config-based RAIntegration occasionally failed 2024-08-04 21:03:42 +10:00
Stenzek c3bf267936
System: Remove redundant remap 2024-08-04 21:03:39 +10:00
Stenzek 02fbfae6a0
System: Add advanced 'Export Shared Memory' option
Memory map is exported as duckstation_<pid>. Previously, this only
worked on Windows, now it is extended to Linux as well.
2024-08-04 20:28:07 +10:00
Stenzek c538df317a
GameDatabase: Add crop mode override 2024-08-04 18:59:21 +10:00
Stenzek 6c0a0e6203
GPU: Fix incorrect lightgun line with force progressive 2024-08-04 17:54:19 +10:00
Stenzek ec5d8cb1d6
Achievements: Use badge IDs from server
Fixes icons not invalidating if they're changed/reassigned in the RA
database.
2024-08-04 17:00:08 +10:00
Stenzek f9079b0151
CDROM: Display XA coding info in debug window 2024-08-04 16:30:04 +10:00
Stenzek ee538ae0ea
CDROM: Improve resampling quality of 18900hz XA 2024-08-04 16:21:35 +10:00
Stenzek a2f98541b3
Misc: Slim down some header includes 2024-08-04 14:49:55 +10:00
Stenzek 143acca03b
Core: Purge resources.cpp
Save around 64KB in binary size.
2024-08-04 14:13:15 +10:00
Stenzek 1b9b4699d9
Qt: Fix render-window-resize with 270deg rotation 2024-08-03 01:19:22 +10:00
Stenzek 9a626caad9
Qt: Reduce game list jank after shutting down VM
Prevents progress bar briefly appearing, and the list scrolling to the
top when you exit a game.
2024-08-03 00:50:04 +10:00
Stenzek 3a83c4265c
Misc: Fix a bunch of code analysis warnings
Some of which were even actual errors.
2024-08-02 23:56:07 +10:00
Stenzek 33f6cc246e
System: Use default compression level
I'd intended to make this an option.
2024-07-29 22:06:21 +10:00
Stenzek e0911d7f54
GPU/HW: Fix spec violation with Vulkan fbfetch 2024-07-29 17:27:33 +10:00
Stenzek 6ce9e571ed
Misc: Purge remaining ByteStream references 2024-07-29 17:27:32 +10:00
Stenzek a6518ff9dc
System: Rewrite save state I/O
No more ByteStream or virtual calls for every piece of data.
2024-07-29 17:27:32 +10:00
Stenzek dd8bf2c9d9
MemoryCard: Purge use of ByteStream 2024-07-29 17:27:32 +10:00
Stenzek b5009da2bc
GameList: Purge use of ByteStream 2024-07-29 17:27:32 +10:00
Stenzek 7aaaf7c575
GameDatabase: Purge use of ByteStream 2024-07-29 17:27:32 +10:00
Stenzek ab7a3e1934
BinaryReaderWriter: Add class for files as well as spans 2024-07-29 17:27:32 +10:00
Stenzek 6fe0c986fa
System: Rewrite EXE override/loading
Relies on POST=7 as a kernel initialization indicator, instead of
patching the BIOS.

Fixes EXE loading with OpenBIOS and PS2 BIOS, and fast boot getting
baked into save states.
2024-07-28 19:05:56 +10:00
Stenzek 7b99fcbbf3
GPU: Fix edge bleeding with Bilinear Integer scaling 2024-07-28 14:08:28 +10:00
Stenzek a3acb0c5db
GPU/HW: Always allow shader blend with fbfetch 2024-07-27 19:52:08 +10:00
Stenzek c2d24f436c
CDROM: Re-enable error-on-seeking-pause behaviour
See the comments in the diff. This **will** cause lag in Final Fantasy
VII during preload areas, but that has also been confirmed on console.

Duke Nukem - Total Meltdown does this silly Read -> Pause command chain,
except it sets its data/INT1 callback on the read, but never clears it
after the pause. Therefore, if it doesn't receive at least one sector,
the callback never gets cleared, and when the next read happens, it
stores the "current" callback in the "backup" variable, which should be
null, but now has the callback from the dud read.

The result is any INT1 during XA playback running the dud callback,
which says "hey, I'm not expecting any data, so pause, and stops the
background music playback. Making sure at least one sector from that
silly chain is delivered ensures the callback is cleared, and this does
not happen.

Since the pause first mentioned above will now error out until the first
sector is delievered, the game spams pause until it eventually does
succeed after the INT1. This behaviour has also been verified on
hardware, thanks to rama for the xStation logs.
2024-07-27 14:24:23 +10:00
Stenzek 440e08cf3e
Qt: Fix crash opening game compatibility report 2024-07-27 01:31:22 +10:00
Stenzek 7a3a72ec3d
GPU: Add display rotation option 2024-07-26 23:09:33 +10:00
Stenzek 0b5287f199
Bus: Implement RAM_SIZE register
Fixes Rock-Climbing - Mitouhou e no Chousen - Alps Hen (Japan) crashing
on boot. Silly game does a 512 word DMA from CDROM to 0x001FFF04, with the
mapped memory size set to 4MB, expecting the DMA to trigger a bus error,
because if it doesn't, then your kernel memory goes bye bye.

A bunch of other games do set the upper 4MB to be unmapped, but this
change appears to have no effect on them. As expected, they're probably
doing the correct thing.
2024-07-24 00:14:17 +10:00
Stenzek dce1221021
Bus: Log when RAM_SIZE changes 2024-07-23 23:00:44 +10:00
Stenzek 68575d15a4
CDROM: Shift instead of divide in ZigZagInterpolate 2024-07-23 22:10:04 +10:00
Stenzek 5ec9c8a397
CDROM: Fix handling of 8-bit ADPCM and decoder overruns
Fixes pops in menu music in Simple 1500 Series Vol. 92 - The Tozan
RPG - Ginrei no Hasha.

I haven't seen anything that _properly_ uses 8-bit ADPCM yet. The above
game does, but only in the inaudible portion of the start of the track.
2024-07-23 21:54:22 +10:00
Stenzek 861d4a5aa2
FullscreenUI: Reorder graphics settings to match Qt 2024-07-23 21:11:01 +10:00
Stenzek 0407f939fc
CPU: Fix loading recompiler-saved states with interpreter 2024-07-23 21:11:01 +10:00
Stenzek 2a617c505a
GPU/HW: Support using ROV for accurate blending 2024-07-23 14:46:06 +10:00
Stenzek e743c5d1b1
GPU/HW: Force update CLUT on save state
Fixes switching from hardware->software renderer in games that are
drawing without reloading the CLUT.
2024-07-22 21:25:14 +10:00