Commit graph

1175 commits

Author SHA1 Message Date
Connor McLaughlin bb344a4e1e GPU/D3D11: Fix crash/hang when toggling bilinear setting 2020-08-12 02:27:52 +10:00
Connor McLaughlin d1ee6c0da7 GPU/HW: Make settings update slightly safer 2020-08-12 02:27:52 +10:00
Connor McLaughlin 17a1719450 GPU/HW: Fix incorrect texel offset when upscaling
Fixes incorrectly coloured triangles in Tomb Raider.
2020-08-12 02:27:52 +10:00
Connor McLaughlin d733553425 GPU/HW: Don't display a deleted texture in D3D/OpenGL when updating settings 2020-08-11 04:03:11 +10:00
Connor McLaughlin 2130d3b004 GPU/Vulkan: Don't add UV limits as attribute when unused 2020-08-11 03:58:59 +10:00
Connor McLaughlin fba2488bc5 GPU/D3D11: Don't add UV limits to input layout when unused 2020-08-11 03:58:59 +10:00
Connor McLaughlin bf9ac64183 GPU/D3D11: Don't leak input layout objects 2020-08-11 03:48:24 +10:00
Connor McLaughlin 3a020ef87e HostInterface; Fix crash on shutdown if boot fails 2020-08-11 03:01:08 +10:00
Connor McLaughlin 5c6e92cdfc GPU/HW: Disable coordinate clamping when unnecessary 2020-08-10 23:28:37 +10:00
Connor McLaughlin b95ce993e0 GPU/HW: Clamp interpolated UVs to polygon limits
Fixes texture filtering and PGXP issues in some games.
2020-08-10 23:28:37 +10:00
Connor McLaughlin 5b9db71b87 CPU/Recompiler: Fix mid-block software interrupts not updating pc
Fixes Need for Speed: High Stakes hanging at boot.
2020-08-09 04:32:53 +10:00
Connor McLaughlin 223074b78f SPU: Fix activating transfer event with a downcount of 0
Happened when loading states.
2020-08-09 04:29:43 +10:00
Connor McLaughlin 70767dc6bf CPU/Recompiler/AArch64: Use cmn for negative constant comparisons 2020-08-08 23:44:13 +10:00
Connor McLaughlin 901ca71fdc CPU/Recompiler: Add temporary inhibiting of register allocation 2020-08-08 23:44:13 +10:00
Connor McLaughlin 1d5f810a4b CPU/Recompiler: Disable memory access exceptions by default
This means it'll no longer pass amidog's CPU test in the default config.
But no games rely on this. You can enable it in advanced options if you
want to pass the CPU test.
2020-08-08 23:44:13 +10:00
Connor McLaughlin b1377fe0d9 CPU/Recompiler: Add a fast block lookup array
Up to 15% perf improvement.
2020-08-08 23:06:28 +10:00
Connor McLaughlin f6e88353eb CPU/Recompiler: Make generated code invariant to virtual PC 2020-08-08 23:06:28 +10:00
Connor McLaughlin 8d4216068a CPU/Recompiler: Implement div/divu 2020-08-08 23:06:27 +10:00
Connor McLaughlin a2f271c505 CPU: Simplify some exception checks in cop0-3 2020-08-07 17:05:01 +10:00
Connor McLaughlin e5c46a54b7 System: Restore/reset state on recreating GPU/updating settings
Fixes display corruption on RetroArch when switching renderers.
2020-08-06 23:20:52 +10:00
Connor McLaughlin 359234080a D3D11: Set GS to null when restoring state
Fixes the D3D11 renderer being broken on RetroArch due to it leaving a
geometry shader bound.
2020-08-06 23:19:19 +10:00
Connor McLaughlin 6e586311e8 Common: Add title, modal information to ProgressCallback 2020-08-06 19:32:53 +10:00
Connor McLaughlin 466e4099d4 CDROM: Fix handling of logical seeks to audio sectors
Fixes Wizard's Harmony.
2020-08-05 03:14:04 +10:00
Connor McLaughlin dd9705ef31 GPU/HW: Fix last row of oversized writes not applying
Combined with the wrap changes, fixes Namco Museum motherboard scene.
2020-08-04 14:40:00 +10:00
Connor McLaughlin 0b0bc32afb GPU/HW: Use texture samplers rather than fetching for batches
Enables wrap-around.
2020-08-04 14:40:00 +10:00
Connor McLaughlin 0fc301d654 GPU/HW: Use wrap texture address modes 2020-08-04 14:40:00 +10:00
Connor McLaughlin 231c0b5ff6 GPU/SW: Wrap texture coordinates when sampling 2020-08-04 14:40:00 +10:00
Connor McLaughlin 818892cb1b GPU: Claer interlaced field buffer when enabling
Fixes old frames getting briefly displayed.
2020-08-03 03:26:13 +10:00
Connor McLaughlin 23df239469 GPU/HW: Debug build compile fix 2020-08-03 03:26:00 +10:00
Connor McLaughlin f712c42c21 GPU/HW: Add more details to debug window 2020-08-03 03:06:23 +10:00
Connor McLaughlin 9b7512f7b8 GPU/HW: Implement automatic resolution scale from window size 2020-08-03 03:06:03 +10:00
Connor McLaughlin be6ae8b70b GPU/Vulkan: Work around Mali crash with readbacks 2020-08-03 02:03:33 +10:00
Connor McLaughlin b527118c0a GPU/HW: Fix macOS compile 2020-08-02 18:04:00 +10:00
Connor McLaughlin 92975b2e81 GPU/HW: Tiny performance optimization in polygon loading 2020-08-02 17:32:43 +10:00
Connor McLaughlin 96ba9198ef GPU/HW: Expand lines into triangles before rendering
Fewer batches, consistent upscaling behavior.
2020-08-02 17:17:11 +10:00
Connor McLaughlin 568cfa1865 GPU/OpenGL: Fix possible error on shutdown 2020-08-02 17:16:51 +10:00
Connor McLaughlin 4d9c2c1b6c GPU: Ensure pending time is used in events
Fixes long delay in Syphon Filter.
2020-08-02 14:09:22 +10:00
Connor McLaughlin bd0c403672 GPU/HW: Fix mask bit test regression
Fixes white boxes in Silent Hill. Again.
2020-08-02 13:04:25 +10:00
Connor McLaughlin 0c1b637549 PGXP: Add initial implementation 2020-08-02 00:25:07 +10:00
Connor McLaughlin e9882a10aa System: Move restore/reset graphics API state to System
Fixes frame stepping.
2020-08-01 16:45:07 +10:00
Connor McLaughlin 2eb9384275 Replace more instances of fopen() with FileSystem::OpenFile() 2020-08-01 14:00:22 +10:00
Connor McLaughlin 2885d2e547 CPU/CodeCache: Hopefully fix 32-bit compile errors 2020-08-01 03:53:53 +10:00
Connor McLaughlin b6f871d2b9
JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
2020-07-31 17:09:18 +10:00
Connor McLaughlin 1f9fc6ab74 BIOS: Fix Linux build 2020-07-31 16:34:25 +10:00
Connor McLaughlin 8802177e25 BIOS: Add more revision filenames/hashes 2020-07-31 16:28:15 +10:00
Connor McLaughlin 66e79091d3 BIOS: Use fopen() wrapper from FileSystem 2020-07-31 16:04:10 +10:00
Connor McLaughlin 5634e821c5 CDROM: Reset audio decoder state immediately after pause or seek
Fixes stuttering dialogue in Dino Crisis (control room at beginning of
game).
2020-07-30 01:55:37 +10:00
Connor McLaughlin 5a34a15bf2 CDROM: Include FIFO size in debug window 2020-07-30 01:03:59 +10:00
Connor McLaughlin dd48a1f585 System: Handle large event timing overshoots better
Usually a result of DMA cycle stealing. Instead of adding all time, add
min(all_events.downcount) at a time. 1.5% performance improvement, but
fixes desyncs between the SPU and CD-ROM.
2020-07-30 00:47:19 +10:00
Connor McLaughlin cdab84e210 GPU/Vulkan: Display shader compiling message 2020-07-26 23:59:06 +10:00
Connor McLaughlin 7c54129409
Merge pull request #665 from ggrtk/analog-controller
AnalogController: Expose axis scale setting to frontend
2020-07-26 23:57:40 +10:00
Connor McLaughlin caf9943418 GPU/Vulkan: Possible workaround for Adreno GS shader compiler bug 2020-07-25 15:17:29 +10:00
Albert Liu 79576ca956 AnalogController: Expose axis scale setting to frontend 2020-07-24 19:18:41 -07:00
Connor McLaughlin d711baaa31 GPU/HW: Fix lines being one pixel too short
Fixes lines in screen wipe effect in Vagrant Story.
2020-07-25 02:37:01 +10:00
Connor McLaughlin 104b80f111 HostInterface: Move 'System shut down' message to SDL
Only frontend where it makes sense anyway.
2020-07-23 02:45:20 +10:00
Connor McLaughlin 8e1c0a4fe4 System: Support loading m3u playlists 2020-07-23 02:36:05 +10:00
Connor McLaughlin d46c104d1b System: Preload CD images to RAM when switching/loading state 2020-07-23 02:35:23 +10:00
Connor McLaughlin 08a8434140 GPU/HW: Fix off-by-one in wrap-around VRAM writes 2020-07-23 02:35:03 +10:00
Connor McLaughlin 10cd00c8dd CDROM: Play audio when reading and mode.0 is set 2020-07-22 15:23:13 +10:00
Connor McLaughlin e9db1d0f6f GPU/OpenGL: Use base class helper for filling VRAM copy uniforms 2020-07-22 14:47:09 +10:00
Connor McLaughlin 2dc62ab987 GPU/HW: Fix VRAM updates when Y >= 512 2020-07-22 14:46:52 +10:00
jdgleaver 49f9ddfa0e Finish adding support for PSX BIOS included in PSP firmware 6.60 2020-07-21 17:06:38 +01:00
jdgleaver 7478e75ed6 (libretro) Fix 'Fast Boot' option 2020-07-21 16:32:36 +01:00
Connor McLaughlin f28ef01d24 CDROM: Move audio FIFO to CDROM class and skip sectors when unempty
Fixes cutscene audio in Nickelodeon Rugrats - Search for Reptar.
2020-07-22 00:05:52 +10:00
Connor McLaughlin f9bbbbbaec Settings: Make auto-detect the default console region 2020-07-22 00:03:31 +10:00
Connor McLaughlin 9496c992f7 System: Add an option to preload CD image to RAM 2020-07-22 00:03:22 +10:00
Connor McLaughlin 8b91bf5e57 Core: Add loading screen based progress callbacks 2020-07-22 00:03:01 +10:00
Connor McLaughlin 93528db388 System: Use existing CD media when loading state where possible 2020-07-22 00:02:37 +10:00
Connor McLaughlin 75a8a7fcca Settings: Make per-game memory cards for slot 1 the default 2020-07-21 20:15:52 +10:00
Connor McLaughlin 68d98af497 Qt: Remove usage of QString where possible for settings 2020-07-21 20:10:06 +10:00
Connor McLaughlin bddd098a66
Merge branch 'master' into qt-inisettings 2020-07-21 13:28:18 +10:00
Connor McLaughlin 5c1c467e38 GTE: Add widescreen hack 2020-07-18 00:28:37 +10:00
Connor McLaughlin 401ecfa872 Bus: Make memory map public 2020-07-18 00:28:37 +10:00
Albert Liu 9b2740b395 HostInterface: Save tweak/hack defaults to settings file
Fixes tweak/hack defaults not displaying correctly in Qt frontend.
2020-07-16 20:35:18 -07:00
Connor McLaughlin dd9a4191e6 AnalogController: Fix swapped rumble test
Fixes weak rumble test in MGS.

I should write some hardware tests for this at some point, particularly
for the large motor, which should have a variable intensity.
2020-07-15 02:38:16 +10:00
Connor McLaughlin 7ba1bed37b Settings: Leave interlacing on by default
Too many games break without it.
2020-07-14 01:27:57 +10:00
Connor McLaughlin 6ed67468d2 CDROM: Prevent games which spam Reset from getting wedged 2020-07-14 01:26:37 +10:00
Albert Liu 91f51c2833 Settings: Add 1:1 pixel aspect ratio 2020-07-12 17:09:15 -07:00
Albert Liu 9e316e4502 Settings: Add 8:7 display aspect ratio
Requested by users for some 256-width 240p titles (effectively 1:1 PAR
at 256x224 when overscan cropping is turned on).
2020-07-12 17:08:28 -07:00
Connor McLaughlin dbce58e07d CDROM: Display paused position in debug window 2020-07-13 02:23:56 +10:00
Albert Liu c44e74db80 GPU: Compute VRAM display width from GP1(06h) values
Fixes overpadding in some specific cases, e.g. when cropping overscan in
Captain Commando.
2020-07-11 10:57:23 -07:00
Connor McLaughlin 50a25b63b1 CDROM: Track seek position when resetting
Fixes Blasto hanging after starting game.
2020-07-11 20:35:36 +10:00
Connor McLaughlin d1a2ebd8f3 GPU/HW: Eliminate CPU round trip on oversized VRAM writes 2020-07-11 20:35:33 +10:00
Connor McLaughlin eab70546c8 CDROMAsyncReader: Only log warning when waiting time exceeds 1ms 2020-07-11 03:21:05 +10:00
Connor McLaughlin c5e8327e7a CDROM: Seek to LBA 0 when resetting
Fixes Love & Destroy.
2020-07-10 20:55:15 +10:00
Connor McLaughlin 71157b171e CDROM: Use partial seek position when re-seeking 2020-07-10 20:55:00 +10:00
Connor McLaughlin 4d1880091e GPU: Ignore display start bit 0 instead of reducing width 2020-07-10 20:31:58 +10:00
Connor McLaughlin 93abf8e53d GPU: Drop least significant bit of display start address
Fixes extra column in some games, e.g. Nascar Thunder 2004,
U.S. Navy Fighters.
2020-07-10 20:23:27 +10:00
Connor McLaughlin 604ff20b0d AnalogController: Treat rumble as binary on/off
Fixes vibration in Final Fantasy 8.
2020-07-10 20:15:46 +10:00
Connor McLaughlin c01854e9d1 Define LIBRETRO macro when building core, skip swap chain 2020-07-10 14:02:45 +10:00
Connor McLaughlin a5fe740e30 Fix a bunch of compiler warnings 2020-07-09 13:30:16 +10:00
Connor McLaughlin 57cf40d1ae Bus: Work around VS2017 bug with std::array 2020-07-08 12:45:53 +10:00
Connor McLaughlin 209d7c67e9 GPU/OpenGL: Prefer SSBOs over small texel buffers+subimage 2020-07-08 02:05:36 +10:00
Connor McLaughlin 1d4b5e22cb Vulkan: Fall back to geometryShader when fillModeNonSolid unsupported 2020-07-07 00:59:35 +10:00
Connor McLaughlin d1eae288bf GameList: Add EntryCompatibilityRatingToString 2020-07-07 00:59:28 +10:00
Albert Liu e42d5fed75 GPU: Adjust 4-pixel boundary alignment formula
Fixes missing edge in Tenchi wo Kurau II: Sekiheki no Tatakai.
2020-07-05 06:00:36 -07:00
Albert Liu 000a51298a GPU: Don't round screen size to 4-pixel multiple 2020-07-05 06:00:36 -07:00
Albert Liu e2b1158514 GPU: Report CRTC padding as signed in debug window 2020-07-05 06:00:36 -07:00
Connor McLaughlin 511c3133f1 GPU: Let GPU catch up before handling GP1 reset commands
Fixes trashed VRAM writes in some homebrew.
2020-07-05 02:25:56 +10:00
Connor McLaughlin b0b3901722 libretro: Fix DualShock analog mode auto-enable 2020-07-05 00:05:14 +10:00
Connor McLaughlin c76bb5eb6a libretro: Fix display aspect ratio 2020-07-04 22:33:07 +10:00
Connor McLaughlin f396a2c373 Renderers: Make shader cache path a prefix instead of directory 2020-07-04 22:14:07 +10:00
Connor McLaughlin 1231f6dafe GPU: Handle GP1 command mirrors 2020-07-04 01:28:18 +10:00
Connor McLaughlin 2d74062abb CPU: Delay interrupts by one instruction/block
Fixes Gameshark Sampler Disc.
2020-07-03 01:51:08 +10:00
Connor McLaughlin 8a8ce8d41c NamcoGunCon: Use correct GPU clock as reference 2020-07-03 01:51:05 +10:00
Connor McLaughlin 0710e3b6d3 CDROM: Ignore sectors with channel number=255
Some games (Taxi 2 and Blues Blues) have junk audio sectors with a channel number of 255.
We need to skip them otherwise it ends up playing the incorrect file.

TODO: Verify with a hardware test.
2020-07-02 00:50:53 +10:00
Connor McLaughlin bff5432879 Pad: Improve ACK timing
Fixes random pauses in Moto Racer.
2020-07-02 00:50:53 +10:00
Connor McLaughlin b471d1043a Settings: Load Memory Cards From State -> Load Devices From State
Makes it apply to controllers too.
2020-07-02 00:50:53 +10:00
Connor McLaughlin 8cd9e0887e libretro: Use framebuffer view dimensions not texture dimensions 2020-07-01 01:57:25 +10:00
Connor McLaughlin f65a50d84b HostDisplay: Use surface scale for drawing software cursor 2020-07-01 01:57:25 +10:00
Connor McLaughlin e374853cf5 HostInterface: Better configuration of custom crosshair/software cursor 2020-07-01 01:57:25 +10:00
Connor McLaughlin f0c1dfefe7 Core: Add resources file
Currently includes a crosshair icon.
2020-07-01 00:56:46 +10:00
Connor McLaughlin 0b11a14e24 Qt: Better handling of default settings not in ini 2020-07-01 00:56:46 +10:00
Connor McLaughlin 4dc9e10777 HostInterface: Support per-controller-type settings 2020-07-01 00:56:46 +10:00
Connor McLaughlin 2a38090e7a HostDisplay: Move most backend logic to FrontendCommon 2020-06-30 03:03:56 +10:00
Connor McLaughlin 936d92dfb8 System: Add option to force start in software mode 2020-06-30 02:44:19 +10:00
Connor McLaughlin 919494079b System: Make saving screenshots to state optional 2020-06-30 02:44:09 +10:00
Connor McLaughlin e5f56fcd33 MDEC: Slightly reduce block timing
Fixes FMVs in Disney's Treasure Planet.

Probably needs sub-block timing emulated at some point.
2020-06-29 14:45:14 +10:00
Connor McLaughlin 614ea632a5 SPU: Log warning when data is lost due to reg clear 2020-06-29 14:45:03 +10:00
Connor McLaughlin 15afe4f436 GPU/Vulkan: Fix incorrect vkCmdPushConstants() call 2020-06-27 16:26:20 +10:00
Connor McLaughlin 0b261e836b GPU/Vulkan: Fix shader VRAM copies
Fixes battle transitions in Final Fantasy IX.
2020-06-27 03:00:03 +10:00
Connor McLaughlin 58b0e6859a Frontend: Reset/restore GPU state before saving screenshot
Fixes driver crashes in Vulkan.
2020-06-27 02:59:58 +10:00
Connor McLaughlin b94de1924d GPU/ShaderGen: Round normalized colours before converting to integer
Fixes broken rendering/precision issues on Intel Ivy Bridge GPUs.

Many thanks to linkmauve from Dolphin for the idea - seems Dolphin also
had a similar problem a few years ago.
2020-06-26 21:40:53 +10:00
Connor McLaughlin 16ca214d09 GPU/OpenGL: Fix VRAM writes breaking on <GL4.3 2020-06-26 21:39:37 +10:00
Connor McLaughlin 34d7b752d8 GPU/ShaderGen: Enable GL_ARB_shader_storage_buffer_object on <GL4.3 2020-06-26 21:39:12 +10:00
Connor McLaughlin 998ec85b16 CDROM: Log slow sector reads in Release builds too 2020-06-26 17:17:25 +10:00
Connor McLaughlin 737337a526 CDROM: Fix incorrect sector read after incomplete seek->read
Fixes crash in Disney's The Lion King - Simba's Mighty Adventure.
2020-06-26 17:15:41 +10:00
Connor McLaughlin b8a2487abf GPU/HW: Fix incorrect offset application in line upscaler
Fixes green line in pause screen of Spyro.
2020-06-26 03:26:06 +10:00
Connor McLaughlin ad727c7991 CPU/Recompiler: Check interrupts after mtc0 sr/cause
Fixes Jackie Chan Stuntmaster in Recompiler mode.
2020-06-25 01:33:00 +10:00
Connor McLaughlin b00f50c927 CPU/Recompiler: Emit test/jz instead of bt/jnc for bits < 8
Likely very slightly faster.
2020-06-25 01:33:00 +10:00
Albert Liu 7c206766ae HostInterface: Save default setting to AspectRatio, not PixelAspectRatio
Fixes inconsistency with default settings saving to PixelAspectRatio,
but loading from AspectRatio instead. PixelAspectRatio was not being
used elsewhere.
2020-06-23 09:24:50 -07:00
Connor McLaughlin 832c7a1192 Vulkan: Support using SSBOs instead texel buffers 2020-06-24 01:40:01 +10:00
Connor McLaughlin 08ef8c1e8d GPU/HW: Support SSBOs instead of texture buffers for VRAM writes 2020-06-24 01:39:53 +10:00
Connor McLaughlin eec37df1e0 Settings: Make the recompiler the default CPU mode 2020-06-24 01:39:42 +10:00
Connor McLaughlin f6aae5e67c Settings: Add 2:1 (VRAM 1:1) display aspect ratio 2020-06-24 01:39:35 +10:00
Connor McLaughlin 4b31034efa
Merge pull request #562 from lioncash/amp
spu: Make use of logical AND within IsPitchModulationEnabled()
2020-06-24 01:29:42 +10:00
Lioncash 20d17b953b spu: Make use of logical AND within IsPitchModulationEnabled()
It seems awfully suspect to use a bitwise AND here.
2020-06-23 06:00:11 -04:00
Connor McLaughlin 6de24f620e
Merge pull request #558 from lioncash/psf
system: Correct error dialog in PSF load case
2020-06-23 19:57:19 +10:00
Lioncash 7a05f8402b playstation_mouse: Amend initial x value
Previously the last host y position was being written to twice, which
seems like a typo.
2020-06-23 05:48:25 -04:00
Lioncash 76af96f15b system: Correct error dialog in PSF load case
Corrects the error message to state that the PSF couldn't be loaded
rather than EXE.
2020-06-23 05:13:47 -04:00
Connor McLaughlin 840a80670f CDROM: Reset XA resampler on file switch
Pure guess work, probably won't affect anything.
2020-06-22 15:58:22 +10:00
Connor McLaughlin eb1b6b6272 GPU/HW: Fix D3D11 upscaled line GS 2020-06-22 15:53:05 +10:00
Connor McLaughlin 73cdd676ad GPU/Vulkan: Fix incorrect srcfactor selection 2020-06-21 16:24:37 +10:00
Connor McLaughlin ce75168238 GPU/Vulkan: Don't assume support for dual-source blend 2020-06-21 01:33:15 +10:00
Connor McLaughlin bf60f9dd61 GPU/Vulkan: Use geometry shader for line rendering at >1xIR 2020-06-21 01:33:08 +10:00
Connor McLaughlin 97ef905f10 GPU/Vulkan: Fix race/crash when changing settings live 2020-06-21 01:33:00 +10:00
Connor McLaughlin fed53b565f GPU/Vulkan: Fix inverted transparency
Fixes FF7 menu, map screen in Porsche Challenge.
2020-06-20 20:22:24 +10:00
Connor McLaughlin a08c398d4b GPU/HW: Provide depth in vertex rather than computing
Fixes mask bit effects in Vulkan (e.g. Silent Hill).
Significantly reduces the number of mask bit refreshes in OpenGL/Vulkan.
2020-06-20 20:21:33 +10:00
Connor McLaughlin 77291096db Settings: Add GPU adapter option and hook up to D3D11/Vulkan 2020-06-20 03:34:19 +10:00
Connor McLaughlin 6aacf0019a FrontendCommon: Add a Vulkan host display interface 2020-06-19 00:18:19 +10:00
Connor McLaughlin 49d11988bf Core: Add Vulkan GPU renderer 2020-06-19 00:18:17 +10:00
Connor McLaughlin 3cd5b7ae74 Core: Add Vulkan renderer types 2020-06-19 00:18:14 +10:00
Connor McLaughlin 47138aa9cf GPU: Consider interlaced rendering for GPU timings
Fixes menu screen flickering in Chrono Cross, summary screen breakage in
Mr. Driller G.
2020-06-18 17:37:13 +10:00
Connor McLaughlin fc0560087f GPU: Skip primitives where clip area is invalid
Fixes palettes being overwritten/menus being broken in
Yoshimoto Mahjong Club Deluxe.
2020-06-14 01:01:01 +10:00
Connor McLaughlin 16c47f4553 Settings: Change default GPU FIFO size to 16
While this has the potential to be slower, there seems to be quite a few
games which break with the larger FIFO. In some cases, they wait for the
DMA interrupt, then busy wait for the GPU to go idle again. If the FIFO
is larger, this wait time till be longer, breaking things.
2020-06-13 01:40:05 +10:00
Connor McLaughlin bda528d70a GPU: Alter timings to reflect new clock 2020-06-13 01:40:05 +10:00
Connor McLaughlin dad63f2303 GPU: Run draw clock at sysclk * 2 2020-06-13 01:40:05 +10:00
Connor McLaughlin 34d27bad4a Timers: Add missing event update after resetting count/target 2020-06-12 01:37:39 +10:00
Connor McLaughlin bdf9c91271 GPU: Fix double shader compilation 2020-06-09 03:04:02 +10:00
Connor McLaughlin 075380f8e0 Move most helper logic from base HostInterface to FrontendCommon 2020-06-09 02:35:37 +10:00
Connor McLaughlin 7b4b2d5dc5 GameList: Ignore all whitespace characters in SYSTEM.CNF
Fixes some games not having serials displayed, e.g. Chrono Cross.

Thanks to @TzakShrike for narrowing down the cause.
2020-06-08 03:05:27 +10:00
Connor McLaughlin f9eb3719e3 HostInterface: Add software cursor mode
This will probably need to be extended in the future.
2020-06-08 02:53:55 +10:00
Connor McLaughlin f98bb033ff HostDisplay: Add an interface for setting software cursor 2020-06-08 02:53:37 +10:00
Connor McLaughlin b4e45e865a GPU: Use correct clocks for NTSC region
Fixes sync drift in Bust-a-Move 1/2.
2020-06-07 19:15:06 +10:00
Connor McLaughlin 531c3ad5fa AudioStream: Replace buffer queue with ring buffer
Should achieve a decent overall minimum latency reduction.
2020-06-07 01:22:03 +10:00
Connor McLaughlin 6acd8b27dd Qt: Prevent lag disabling power on buttons when starting 2020-06-06 03:44:57 +10:00
Connor McLaughlin 009e474c51 AnalogController: Fix inverted motor binding 2020-06-05 22:32:51 +10:00
Connor McLaughlin 88502e130e Settings: Fix memory cards not syncing with disc change in title mode 2020-06-04 02:15:29 +10:00
Connor McLaughlin c8e1881ea9 GPU/HW: Clear dirty rectangle when updating shadow texture
Fixes high GPU usage in Robbit mon Dieu in D3D11, should improve overall
performance slightly when VRAM copies are heavily used.
2020-06-02 21:45:38 +10:00
Connor McLaughlin 9ea163e666 GPU/D3D11: Fix mask test in same vertex batch
Fixes shadows in Bust a Groove 2, probably others.
2020-06-02 20:52:07 +10:00
Connor McLaughlin 3848276fa2 GPU: Improvements to height calculations when interlaced
Fixes screen doubling with interlacing force disabled, as well as
incorrect cropping area when non-interleaved framebuffers are used.
2020-06-02 20:52:07 +10:00
Connor McLaughlin 8eb3ac69b2 SPU: Update ADSR envelope when register changes
Fixes menu sounds in Final Fantasy 7 staying audible for too long.
2020-06-02 01:59:49 +10:00
Connor McLaughlin dcfb929de5 CDROM: Fix double-reads hitting incorrect sector again
Fixes Bedlem / Rise 2 without breaking Vigilante 8 - 2nd Offense.
2020-06-02 00:59:13 +10:00
Connor McLaughlin 5e7fd5aa71 CDROM: Fix integer overflow in seek timing calculation 2020-06-01 22:20:26 +10:00
Connor McLaughlin 1947080d91 CDROM: GetlocL should return an error while seeking
Or more specifically, the coarse seek part. Verified with hardware
tests.
2020-06-01 21:40:28 +10:00
Connor McLaughlin e5fc47a008 Bus: Further tweaks to access timing
Matches closely to my console now.

Fixes Otona No Asobi again.
2020-06-01 21:39:33 +10:00
Connor McLaughlin 7d66569d69 GPU/HW: Fix bobbing screen with interlacing disabled
Fixes bobbing screen in Tom and Jerry in House Trap.
2020-06-01 03:26:35 +10:00
Connor McLaughlin f856a8ad65 CDROM: Ignore pending setloc after read/play
Fixes games which send a second Setloc after reading, e.g. Army Men -
Sarge's Heroes.
2020-05-31 17:03:15 +10:00
Connor McLaughlin af1c4f9378 Fix MSVC build 2020-05-31 16:42:51 +10:00
Connor McLaughlin a800f73a8f
Merge pull request #516 from ggrtk/negcon
Controller: Add NeGcon support
2020-05-31 16:41:48 +10:00
Connor McLaughlin bf6faafc54 GameList: Fix cache getting corrupted from unknown games 2020-05-31 16:11:15 +10:00
Albert Liu ee3a96011e Controller: Add NeGcon support 2020-05-30 23:11:02 -07:00
Connor McLaughlin e293c22cde DMA: Run manual channels while halted
Fixes games which have looping linked lists but still expect CD/OTC
reads to work.

Also caps the number of ticks used when looping linked lists are
present, which doesn't steal so much time from the CPU per batch.

Fixes:
 - Victory Spike
 - Magical Drop III - Yokubari Tokudai-gou!
 - Yuukyuu no Eden - The Eternal Eden
 - Loading screen in World Cup Golf - Professional Edition
2020-05-31 02:43:51 +10:00
Connor McLaughlin 2d067bb101 CDROM: Fix warning log spam on command 2020-05-31 02:41:42 +10:00
Connor McLaughlin 0672cf4873 CDROM: Implement a heuristic for command cancelling
See note in source. Fixes loading times and slowed down audio in Voice
Idol Collection - Pool Bar Story.
2020-05-30 22:04:15 +10:00
Connor McLaughlin a4f79de7f6 CDROM: Return error for incorrect parameter count 2020-05-30 21:59:03 +10:00
Connor McLaughlin 69a00a64e6 Bus: Adjust memory access and MMIO timing
Hasn't broken anything yet, but needs more thorough testing.
2020-05-30 02:19:12 +10:00
Connor McLaughlin 07e8ab4446 CDROM: Increase seek delay by one sector
Fixes Resident Evil 2.
2020-05-30 02:19:01 +10:00
Connor McLaughlin 38fc843541 GPU/HW: Use upscaled texture coordinates for non-paletted textures
Fixes games which use render-to-texture effects not being upscaled.
2020-05-30 02:19:01 +10:00
Connor McLaughlin 13c3426148
Merge pull request #506 from ggrtk/analog-controller
Update input profiles and input profile handling
2020-05-28 13:06:40 +10:00
Connor McLaughlin 4e8da3cb41 CDROM: Replace sound map assert with error log
I am not aware of any games which use it yet, so have no way of testing
if the implementation is correct.
2020-05-28 03:07:33 +10:00
Connor McLaughlin 2dd7f48d97 CDROM: Don't skip pregap for CDDA
Fixes music looping in Treasure Gear.
2020-05-28 02:42:18 +10:00
Connor McLaughlin 2264849151 CDROM: Update position when double-seeking
Doesn't fix anything I'm aware of, but makes sense.
2020-05-28 02:41:53 +10:00
Albert Liu 1f74d46d39 AnalogController: Use proper upper bound when validating axis_code 2020-05-26 23:23:44 -07:00
Connor McLaughlin 81a7b147fc System: Add option to disable loading memory cards from save states 2020-05-27 02:06:56 +10:00
Connor McLaughlin b17a5832e5 System: Simplify save state booting
Fixes memory card warning messages on load state.
2020-05-27 02:01:11 +10:00
Connor McLaughlin d2c7639dd8 System: Update per-game memory cards on load state
Prevents saves being written to incorrect card after loading.
2020-05-27 00:41:58 +10:00
Connor McLaughlin 445bd02cad GPU/HW: Interlace at native resolution rather than 1x
Also fixes screen bobbing when interlacing is disabled.
2020-05-27 00:27:27 +10:00
Connor McLaughlin 23436f08ba GPU/HW: More improvements to GPUSTAT.31
Fixes True Pinball without breaking intros to Final Fantasy 7/8.
2020-05-26 22:57:58 +10:00
Connor McLaughlin 04f131f979 GPU/OpenGL: Fix 24-bit progressive scanout regression 2020-05-26 21:31:01 +10:00
Connor McLaughlin cb66889856 GPU/OpenGL: Fix non-interleaved interlaced display 2020-05-26 13:44:05 +10:00
Connor McLaughlin e368dbbadc GPU: Implement non-interleaved interlaced rendering
Fixes screen shaking in True Pinball.
2020-05-26 03:18:05 +10:00
Connor McLaughlin 0daea7c2fc GPU/HW: Disable texture buffer based uploads on macOS 2020-05-25 20:26:13 +10:00
Connor McLaughlin e0d9bbced4 GPU/HW: Add UBO extension require if !GL3.2
Might fix errors on Sandy Bridge.
2020-05-25 18:37:32 +10:00
Connor McLaughlin 13df6c3e15 GPU/HW: Fix incorrect version capping for GL<4.3 2020-05-25 18:37:11 +10:00
Connor McLaughlin 2156236f52 Frontends: Use common GL context wrapper 2020-05-25 15:02:44 +10:00
Connor McLaughlin 1494f2bc75 CDROM: Set m_current_lba to the sector being read
Fixes double-read commands returning incorrect sectors.

Fixes Vigilante 8 - 2nd Offense.
2020-05-24 13:28:12 +10:00
Connor McLaughlin 237f469baa GPU: Mask variable sprite/rectangle sizes
Fixes broken sprites in Gradius Deluxe Pack (Gradius II).
2020-05-21 12:04:57 +10:00
Connor McLaughlin c583459c6f GPU: Replace coord/size masks with constants 2020-05-21 12:02:19 +10:00
Connor McLaughlin 35a8c5b47c Timers: Don't hang when counter+target = 0 for timer1
This needs proper research into how it behaves with IRQs.
2020-05-21 00:26:07 +10:00
Connor McLaughlin 3c7229dfe2 CDROM: Add 3 sectors read time to seek time
Simulates the drive's inprecise coarse seek then reading subq to get to
the exact sector.

Fixes Waku Waku Derby.
2020-05-20 23:52:35 +10:00
Connor McLaughlin d41bf86eaa CDROM: Don't apply logical seek rules to subq-based seeks
Fixes Panekit - Infinitive Crafting Toy Case.
2020-05-20 19:30:46 +10:00
Connor McLaughlin 11c2b5a1e8 Bus: Extend SPU address range to 0x400 bytes 2020-05-20 18:57:33 +10:00
Connor McLaughlin a693437bc9 Bus: Handle unaligned byte writes to SPU 2020-05-20 18:56:41 +10:00
Connor McLaughlin 340640821e CDROM: Add delay when swapping discs
Fixes broken disc swap detection in Metal Gear Solid.
2020-05-20 02:26:07 +10:00
Connor McLaughlin 415880fc40 CDROM: Don't restart play/read when current == target
Fixes CDDA locking up Buster Bros. Collection.
2020-05-20 02:05:19 +10:00
Connor McLaughlin 5d46556b7d CDROM: Update position while seeking for GetlocP
Fixes track selection in WipEout.
2020-05-20 01:52:54 +10:00
Connor McLaughlin 1eecd50f3d SPU: Run SPU when changing regs on voice pending key-on
Fixes menu/cursor sounds with different frequencies in Final Fantasy 7.
2020-05-18 00:59:13 +10:00
Connor McLaughlin 03080351c8 SPU: Reset ADPCM decoder last samples on key on 2020-05-18 00:50:55 +10:00
Connor McLaughlin 096ed21767 GPU: Synchronize before filling/writing with interlaced rendering 2020-05-17 21:51:33 +10:00
Connor McLaughlin 19cebd97da GPU: Further refinements to crop overscan
Fixes flickering line in South Park.
2020-05-17 19:23:48 +10:00
Connor McLaughlin 0ef0c36704 GPU: Align display widths to 4 pixels
Documentation thanks to nocash.

Fixes line on edge in X2 - No Relief, Gunbird.
2020-05-17 18:46:59 +10:00
Connor McLaughlin 664bd06df6 GPU: Don't recursively execute commands
This can happen with interlaced rendering on when a line is pending
scanout and a primitive is drawn.

Fixes screen transitions in Slap Happy Rhythm Busters.
2020-05-17 17:58:48 +10:00
Connor McLaughlin 8fd3a83ea8 Settings: Save DMA timing hacks to ini 2020-05-17 14:12:35 +10:00
Connor McLaughlin 2185bbec73 GPU: Display state in debug window 2020-05-17 14:11:42 +10:00
Connor McLaughlin 597aa20d83 GPU: Don't panic when FIFO is non-empty with VRAM->CPU copy
This probably is not a good state to be in though, since the DMA request
gets turned off and will never resume until it's copied out.
2020-05-17 14:05:31 +10:00
Connor McLaughlin 7d887edf17 DMA: Write correct terminator at end of OTC
Fixes NBA Live 96.
2020-05-17 13:58:26 +10:00
Connor McLaughlin 2795dea124 HostInterface: Prioritize SCPH-3000 over SCPH-1000 for NTSC-J 2020-05-17 01:08:14 +10:00
Connor McLaughlin b25ed6c151 GPU: Fix interlaced rendering in vblank breaking 2020-05-17 01:02:20 +10:00
Connor McLaughlin 1c50a09c2e HostInterface: Set user directory to Documents\DuckStation 2020-05-17 00:22:16 +10:00
Connor McLaughlin f7a2448dfb HostInterface: Pull compatibility database from program directory
Fixes compatibility list not reading on Linux.
2020-05-16 22:18:05 +10:00
Connor McLaughlin 669934eb1a GameList: Support exporting XML snippets for compatibility info 2020-05-16 20:32:36 +10:00
Connor McLaughlin d781de2ce6 GameList: Add support for compatibility database 2020-05-16 20:32:36 +10:00
Connor McLaughlin a937a09b5c CPU: Fix broken exception logging from YBaseLib removal 2020-05-16 01:02:18 +10:00
Connor McLaughlin 214e852a54 CDROM: Add time to read sector to seek time
Fixes Yuukyuu Gensoukyoku Ensemble 1.
2020-05-16 01:01:31 +10:00
Connor McLaughlin 110aa8bd93 CDROM: Reset read sector buffer on INT1
Fixes GetlocL -> DMA out returning incorrect data.

Fixes FoxKids.com - Micro Maniacs Racing.
2020-05-16 00:33:03 +10:00
Connor McLaughlin e1157bff65 CDROM: Don't delay CDDA report, only skip index 0
Fixes music in Advanced V.G.
2020-05-16 00:27:09 +10:00
Connor McLaughlin 14b2506d7d HostInterface: Disable true color/enable scaled dithering by default
Too many games are broken with it enabled. The number which break with
scaled dithering is much smaller.
2020-05-15 01:41:58 +10:00
Connor McLaughlin bf3c83658a GPU: More accurate texture blending in non-true-colour-mode
Fixes Silent Hill loading animation, Advanced V.G. intro fade-out, and
probably others.
2020-05-15 01:32:22 +10:00
Connor McLaughlin c114873ed8 GPU: Fix height underflow in CRTC calculations 2020-05-14 01:25:43 +10:00
Connor McLaughlin 3472e37d21 GPU: Synchronize before clearing FIFO 2020-05-14 01:25:10 +10:00
Connor McLaughlin c0ea35ccdc GPU: Fix parameters not applying on startup 2020-05-14 01:24:39 +10:00
Connor McLaughlin d461d7c87a SPU: Fix reverb write regression from e07d3c9d 2020-05-13 13:47:33 +10:00
Connor McLaughlin db9d637f92 HostInterface: Fix mute not applying on startup 2020-05-13 13:47:12 +10:00
Connor McLaughlin e07d3c9db2 SPU: Fix array bounds overflow in register reads 2020-05-13 12:37:13 +10:00
Connor McLaughlin 777809b3b0 CDROM: Fix XA filter change not applying immediately
Fixes audio getting cut off in PaRappa the Rapper - The Hip Hop Hero,
underwater music in R-Type Delta.
2020-05-13 00:14:20 +10:00
Connor McLaughlin d6f6154380 CDROM: Read last delivered sector when pausing and reading without seek
Fixes Adidas Pro Soccer, Bedlem, Rise 2.
2020-05-13 00:13:57 +10:00
Connor McLaughlin d866bd9cb8 CDROM: Reset XA resampler state on read
Should get rid of pops when switching files.
2020-05-12 12:36:10 +10:00
Connor McLaughlin 634880b5e3 SPU: Clamp before applying main volume not after
Fixes popping in Monkey Magic.
2020-05-12 02:15:18 +10:00
Connor McLaughlin 81f297456c GPU: Fix mismatched scanout between hardware/software renderers 2020-05-12 01:35:06 +10:00