254 Commits

Author SHA1 Message Date
Connor McLaughlin
19d6037b99 CPU: Implement instruction cache simulation
Implemented for all execution modes. Disabled by default in the cached
interpreter and recompiler, always enabled in the pure interpreter.
2020-08-29 22:07:40 +10:00
Connor McLaughlin
ab002e78e1 Support translating strings in emulator core 2020-08-22 13:06:20 +10:00
Connor McLaughlin
bca609a2a6 Qt: Add option to disable per-game settings 2020-08-21 00:09:37 +10:00
Connor McLaughlin
c3ce9135bf Fix recompiler not auto-disabling with PGXP-CPU mode 2020-08-21 00:09:37 +10:00
Connor McLaughlin
60d3fffec1 Add per-game overrides (mainly for compatibility) 2020-08-21 00:09:37 +10:00
Connor McLaughlin
2e9f656546 CPU: Implement PGXP CPU Mode
This is *very* slow. You don't want to enable it if you don't need it.
It is also incompatible with the recompiler and will disable it if the
option is enabled.
2020-08-20 00:49:39 +10:00
Connor McLaughlin
10a46a7fd8 OSD: Add option to show display resolution 2020-08-16 00:20:11 +10:00
Connor McLaughlin
26aa627deb GPU/HW: Include resolution in scale change message 2020-08-16 00:20:11 +10:00
Connor McLaughlin
f5fb8186c7 Switch some messages to the OSD and increase durations 2020-08-16 00:20:10 +10:00
Connor McLaughlin
d9893bb127 System: Add option to use a single memory card for playlists 2020-08-16 00:20:10 +10:00
Connor McLaughlin
d1ee6c0da7 GPU/HW: Make settings update slightly safer 2020-08-12 02:27:52 +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
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
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
0c1b637549 PGXP: Add initial implementation 2020-08-02 00:25:07 +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
8802177e25 BIOS: Add more revision filenames/hashes 2020-07-31 16:28:15 +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
9496c992f7 System: Add an option to preload CD image to RAM 2020-07-22 00:03:22 +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
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
7ba1bed37b Settings: Leave interlacing on by default
Too many games break without it.
2020-07-14 01:27:57 +10:00
Connor McLaughlin
b0b3901722 libretro: Fix DualShock analog mode auto-enable 2020-07-05 00:05:14 +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
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
e374853cf5 HostInterface: Better configuration of custom crosshair/software cursor 2020-07-01 01:57:25 +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
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
eec37df1e0 Settings: Make the recompiler the default CPU mode 2020-06-24 01:39:42 +10:00
Connor McLaughlin
49d11988bf Core: Add Vulkan GPU renderer 2020-06-19 00:18:17 +10:00
Connor McLaughlin
075380f8e0 Move most helper logic from base HostInterface to FrontendCommon 2020-06-09 02:35:37 +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
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
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
2795dea124 HostInterface: Prioritize SCPH-3000 over SCPH-1000 for NTSC-J 2020-05-17 01:08:14 +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
d781de2ce6 GameList: Add support for compatibility database 2020-05-16 20:32:36 +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
db9d637f92 HostInterface: Fix mute not applying on startup 2020-05-13 13:47:12 +10:00
Connor McLaughlin
c329f58afe HostInterface: Add audio buffer/count/volume/mute settings 2020-05-10 00:44:37 +10:00
Connor McLaughlin
0f5bc7267f HostInterface: Fix hang when switching audio backends 2020-05-05 03:04:28 +10:00
Connor McLaughlin
d8ab587153 HostInterface: Modify settings loading interface to support per-frontend settings 2020-05-01 01:01:50 +10:00
Connor McLaughlin
b4c31e55e2 HostDisplay: Add integer upscaling option 2020-05-01 01:00:22 +10:00
Connor McLaughlin
e37962009e HostInterface: Add log lettings to ini 2020-05-01 00:58:32 +10:00
Connor McLaughlin
59f055f4b9 HostInterface: Make title-based memory cards the default 2020-04-30 01:21:18 +10:00
Connor McLaughlin
940b725c1d Settings: Make DMA performance parameters tweakable 2020-04-29 20:00:22 +10:00
Connor McLaughlin
74e455a5f7 System: Support per-game memory cards 2020-04-27 16:22:25 +10:00
Connor McLaughlin
08c8d1a521 System: Support saving screenshots in save states 2020-04-21 02:50:45 +10:00
Connor McLaughlin
1757932b3a GPU: Implement FIFO and timings
This will cause a slight performance loss. I've left some knobs in which
can be tweaked to mitigate this, but the goal is to be compatible with
all games which require them.
2020-04-19 01:17:28 +10:00
Connor McLaughlin
f75ea052a6 FrontendCommon: Add input profile support 2020-04-15 01:44:04 +10:00
Connor McLaughlin
81cf4b469f Frontends: Add shared command line interface
Also provides batch mode and automatic fullscreen switching.

  -help: Displays this information and exits.
  -version: Displays version information and exits.
  -batch: Enables batch mode (exits after powering off)
  -fastboot: Force fast boot for provided filename
  -slowboot: Force slow boot for provided filename
  -resume: Load resume save state. If a boot filename is provided,
    that game's resume state will be loaded, otherwise the most
    recent resume save state will be loaded.
  -state <index>: Loads specified save state by index. If a boot
    filename is provided, a per-game state will be loaded, otherwise
    a global state will be loaded.
  -statefile <filename>: Loads state from the specified filename.
    No boot filename is required with this option.
  -fullscreen: Enters fullscreen mode immediately after starting.
  -nofullscreen: Prevents fullscreen mode from triggering if enabled.
  -portable: Forces "portable mode", data in same directory.
  --: Signals that no more arguments will follow and the remaining
    parameters make up the filename. Use when the filename contains
    spaces or starts with a dash.
2020-04-13 22:17:09 +10:00
Connor McLaughlin
6a03bb2d15 HostInterface: Drop std::filesystem requirement 2020-04-12 21:06:33 +10:00
Connor McLaughlin
7779a54bc5 GPU: Rename 'Force Progressive Scan' to 'Disable Interlacing'
It affects rendering as well as display/scanout now, after all.
2020-04-11 16:37:53 +10:00
Connor McLaughlin
6cfad33b8e HostInterface: Set NoNav on FPS window
Prevents it stealing focus in SDL frontend.
2020-04-11 00:00:37 +10:00
Connor McLaughlin
fbfd838e22 GPU: Add pixel aspect ratio option
Can display in 4:3, 16:9, 1:1 ratios.
2020-04-10 15:12:35 +10:00
Connor McLaughlin
3325d2c42c GPU: Add Force NTSC timings option
This option forces NTSC timings for PAL games, causing them to either
run faster (more likely) or smoother (less likely).
2020-04-10 13:35:10 +10:00
Connor McLaughlin
610abc1a75 BIOS: Make SCPH-3000 BIOS known 2020-04-07 11:54:24 +10:00
Connor McLaughlin
b4538b1d2e HostInterface: Add redump BIOS filenames to search list
ps-10x.bin, ps-30x.bin, etc.
2020-04-07 11:54:22 +10:00
Connor McLaughlin
e91d760175 HostInterface: Fix crash on startup with controller connected 2020-04-06 12:18:33 +10:00
Connor McLaughlin
e7640d5367 HostInterface: Make SetUserDirectory() overridable by frontends 2020-04-05 22:59:06 +10:00
Connor McLaughlin
15c33ebedb CDROM: Add "Enable Region Check" option 2020-04-01 01:48:37 +10:00
Connor McLaughlin
7cd7dec668 HostInterface: Restore pause state after switching renderers
Fixes #148.
2020-03-25 01:48:51 +10:00
Connor McLaughlin
7e36195f44 HostInterface: Enable on-screen FPS/VPS/Speed display via config 2020-03-22 13:20:08 +10:00
Connor McLaughlin
77a60f0c5f HostInterface: Crash fix again for controller switching 2020-03-22 13:15:44 +10:00
Connor McLaughlin
12ddeb675c HostInterface: Fix controller not updating when switched and system running 2020-03-22 12:54:26 +10:00
Connor McLaughlin
6b68512ac1 HostInterface: Add SaveScreenshot() method 2020-03-16 00:03:57 +10:00
Connor McLaughlin
8e20d0d4ff SPU: Add audio dumping support 2020-03-15 22:04:17 +10:00
Connor McLaughlin
198a64eb5e HostInterface: Add a helper function for generating timestamp-based filenames 2020-03-15 22:03:53 +10:00
Connor McLaughlin
8f39a0f154 Qt: Properly implement "Start Fullscreen" 2020-03-12 13:53:58 +10:00
Connor McLaughlin
e8a5259e68 Qt: Show save times in save state menu as well 2020-03-12 13:51:23 +10:00
Connor McLaughlin
b59e4ffbcb HostInterface: Reset performance counters on unpausing 2020-03-03 10:07:16 +10:00
Connor McLaughlin
69f03959aa Qt: Implement context menu in game list 2020-03-02 11:08:16 +10:00
Connor McLaughlin
635ab72b37 GPU: Implement "Scaled Dithering" option
Fixes #29.
2020-03-01 00:05:31 +10:00
Connor McLaughlin
63064f80c2 HostInterface: Fix default value for Display/CropMode 2020-02-28 18:15:37 +10:00
Connor McLaughlin
fcc0ae9571 GPU: Implement "Crop Mode" (none, overscan, all borders) 2020-02-28 17:01:01 +10:00
Connor McLaughlin
f35970fcac FrontendCommon: Move input binding and some other logic from Qt to common 2020-02-28 17:00:09 +10:00
Connor McLaughlin
07ba2ecd3d Settings: Simplify resolution scale enumeration 2020-02-28 16:59:55 +10:00
Connor McLaughlin
f21cb25426 HostInterface: Recreate system on GPU debug device toggle too 2020-02-28 16:59:53 +10:00
Connor McLaughlin
50a155e775 Settings: Default to relative paths for bios/memcards
Prevents from locking to the directory the first time we run.
2020-02-28 16:58:30 +10:00
Connor McLaughlin
e4ff8b0936 Qt: Add power off hotkey and confirmation message 2020-02-26 19:26:20 +10:00
Connor McLaughlin
e9dea6e0f7 HostInterface: Add a ConfirmMessage() method 2020-02-26 19:25:57 +10:00
Connor McLaughlin
959a555274 CDROM: Implement asynchronous disc reading 2020-02-22 00:24:35 +09:00
Connor McLaughlin
1ed8243776 HostInterface: Reset counters when starting from state 2020-02-22 00:18:27 +09:00
Connor McLaughlin
1e0e802fa4 HostInterface: Add a helper to display a 'Loading Screen' during long startup 2020-02-16 00:15:16 +09:00
Connor McLaughlin
dcc9da3f5e HostInterface: Don't try to resume system without game code 2020-02-16 00:15:09 +09:00
Connor McLaughlin
cd2f6d1f68 HostInterface: Only display error when loading resume state if boot anyway flag isn't set 2020-02-16 00:14:58 +09:00
Connor McLaughlin
6a1206dde7 Frontends: Add option for "Increase Timer Resolution" 2020-02-16 00:14:51 +09:00
Connor McLaughlin
e01cf0dccb Frontends: Implement auto save on exit/resume 2020-02-16 00:14:49 +09:00
Connor McLaughlin
e738b87a25 HostInterface: Add helpers for resume save state 2020-02-16 00:14:47 +09:00
Connor McLaughlin
5f3be68028 HostInterface: Notify host when controller types change 2020-02-16 00:14:44 +09:00
Connor McLaughlin
37d765e8d7 HostInterface: Support switching audio backends 2020-02-16 00:14:40 +09:00
Connor McLaughlin
6a0c15b649 HostInterface: Move timer resolution increase to base class 2020-02-16 00:14:37 +09:00
Connor McLaughlin
1e009133ae Rename 'Default' audio backend to 'SDL' 2020-02-16 00:14:35 +09:00
Connor McLaughlin
fd8ed08307 Move more logic from frontend to base HostInterface 2020-02-16 00:14:28 +09:00
Connor McLaughlin
f0578bb932 HostInterface: Make helper methods const 2020-02-16 00:14:25 +09:00
Connor McLaughlin
7290e5cad0 HostInterface: Add per-slot save state helper functions 2020-02-16 00:14:00 +09:00
Connor McLaughlin
befa2a27d8 HostInterface: Fix crash in SetUserDirectory 2020-02-15 23:12:15 +09:00
Connor McLaughlin
b605a84f7d HostInterface: Set user directory for Linux/macOS, portable.txt support 2020-02-15 22:36:16 +09:00
Connor McLaughlin
8eba4b379c Settings: Default to D3D11 renderer on Windows
This point it's less buggy and slightly more performant.
2020-02-15 10:21:59 +09:00
Connor McLaughlin
5aba89091e HostInterface: Fix possible crash in BIOS loading 2020-02-14 22:45:54 +09:00
Connor McLaughlin
5c7ef65a34 HostInterface: Non-standard speeds are <100% too 2020-02-12 21:27:43 +09:00
Connor McLaughlin
e098c83342 HostInterface: Disable vsync/audio sync when running at not-100% speed 2020-02-11 12:03:25 +09:00
Connor McLaughlin
70fe43a3ec System: Implement variable emulation speed 2020-02-11 12:02:42 +09:00
Connor McLaughlin
c820ddba79 HostInterface: Move throttle and perf stats to System class 2020-02-09 22:16:25 +09:00
Stenzek
057263bda3 HostInterface: Track changes to CPU mode in ApplySettings() 2020-02-05 17:43:15 +09:00
Connor McLaughlin
1b9609ef61 Implement event-based scheduler instead of lock-step components 2020-01-24 16:23:39 +10:00
Connor McLaughlin
624888e131 HostInterface: Default BIOS path to bios subdirectory 2020-01-24 14:52:12 +10:00
Connor McLaughlin
faf2308695 Settings: Move set defaults to HostInterface so it can use user paths 2020-01-24 14:52:04 +10:00
Connor McLaughlin
b5e73a0be4 HostInterface: Add helper methods for getting paths to save states/memcards 2020-01-24 14:52:03 +10:00
Connor McLaughlin
40799d0f77 HostInterface: Move ModifyResolutionScale() to base class 2020-01-24 14:51:56 +10:00
Connor McLaughlin
4a3478b360 HostInterface: Add function to switch between sw/hw rendering 2020-01-24 14:51:53 +10:00
Connor McLaughlin
f2231d6669 HostInterface: Move setting update logic to base class 2020-01-24 14:51:52 +10:00
Connor McLaughlin
82563d94f4 HostInterface: Fix offset OSD messages in Qt frontend 2020-01-24 14:51:38 +10:00
Connor McLaughlin
f6fee86f1c HostInterface: Create user directories on startup 2020-01-24 14:51:10 +10:00
Connor McLaughlin
b4c06fdcc6 GameList: Auto set cache/database path from user directory 2020-01-24 14:51:09 +10:00
Connor McLaughlin
77b282862f HostInterface: Move running title info to System 2020-01-24 14:51:05 +10:00
Connor McLaughlin
b3db3a1cc0 HostInterface: Share settings between SDL and Qt frontends 2020-01-24 14:51:03 +10:00
Connor McLaughlin
2c3a0a6af9 HostInterface: Change working directory to user directory at startup 2020-01-24 14:51:02 +10:00
Connor McLaughlin
53428cb55b HostInterface: Add user directory helpers 2020-01-24 14:51:00 +10:00
Connor McLaughlin
8d4d8e44e4 HostInterface: Saving state message should be OSD not error 2020-01-24 14:50:50 +10:00
Connor McLaughlin
0a5f7fcd75 System: Update running game when media changes from save state 2020-01-24 14:50:48 +10:00
Connor McLaughlin
20b60e0f01 Qt: Update window title/save states from running title 2020-01-24 14:50:46 +10:00
Connor McLaughlin
9562cbea56 Frontends: Add frame time performance counters 2020-01-24 14:49:47 +10:00
Connor McLaughlin
71c1e243fe Remove YBaseLib dependency 2020-01-10 13:40:53 +10:00
Connor McLaughlin
686df4a203 Qt: Improve imgui hidpi scaling 2020-01-07 18:52:33 +10:00
Connor McLaughlin
0590f0935c HostInterface: Fix compile error on Linux 2020-01-04 15:25:15 +10:00
Connor McLaughlin
9de0bf0aaf HostInterface: Most some imgui logic from SDL to core 2020-01-02 19:14:06 +10:00
Connor McLaughlin
ea0845d5ad Move controller creation to System class, switch shared_ptr to unique_ptr 2019-12-14 23:20:24 +10:00
Connor McLaughlin
efb8033d48 HostInterface: Fix for gcc < 8 2019-12-03 01:29:26 +10:00
Connor McLaughlin
299ee05cd9 HostInterface: Move OSD messages to base class 2019-12-01 21:33:56 +10:00
Connor McLaughlin
0a6b913536 HostInterface: Move performance counters to base class 2019-12-01 21:29:09 +10:00
Connor McLaughlin
f11d357ab9 Compile fixes for Android 2019-11-28 01:55:33 +10:00
Connor McLaughlin
48e3683d20 HostInterface: Fix load state on boot not loading state 2019-11-17 19:41:25 +10:00
Connor McLaughlin
b2b5e6c793 HostInterface: Reset throttle timer on slowdown
Prevents too slow messages when fast forwarding.
2019-11-17 01:47:50 +10:00
Connor McLaughlin
8fb4f73d17 Settings: Add audio sync and additional cleanup 2019-11-16 20:52:39 +10:00
Connor McLaughlin
3673c6e33c HostInterface: Re-enable audio sync by default 2019-11-16 20:52:39 +10:00
Connor McLaughlin
b57f1d4a60 HostInterface: Implement non-vsync based speed throttler
Needed for PAL games.
2019-11-16 20:52:39 +10:00
Connor McLaughlin
246c97ccb3 System: Scaffolding for multi-system/multi-bios 2019-11-16 20:50:59 +10:00
Connor McLaughlin
8c51abaf37 System: Move settings to HostInterface 2019-11-08 01:07:39 +10:00
Connor McLaughlin
98a5c4980d Settings: Use simpleini for settings load/save 2019-11-07 01:43:51 +10:00
Connor McLaughlin
ac45f3892c Frontend: Fix broken display texture for OpenGL 2019-11-04 01:01:31 +10:00
Connor McLaughlin
9de9cf3be2 GPU/HW: Add D3D11 renderer and refactor host interface/display 2019-11-04 00:39:48 +10:00
Connor McLaughlin
0092cb1016 Pad: Set up memory cards via settings 2019-10-27 17:46:36 +10:00