Commit graph

166 commits

Author SHA1 Message Date
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 9b7512f7b8 GPU/HW: Implement automatic resolution scale from window size 2020-08-03 03:06:03 +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 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
Albert Liu bf597aab44 Settings: Specify GPU resolution scale as VRAM size 2020-07-23 01:03:18 -07: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 8c3051ae14 SDL: Add widescreen hack option 2020-07-18 00:28:37 +10:00
Connor McLaughlin 48be73be5a SDL: Fix crash when changing debug settings while running 2020-07-14 01:26:43 +10: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 86c6be41b3 SDL: Wayland support 2020-07-11 03:28:57 +10:00
Connor McLaughlin 97a946bd62 CommonHostInterface: Implement frame step hotkey 2020-07-08 02:05:36 +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 bf08385051 WindowInfo: Add surface_scale field 2020-07-01 01:57:25 +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 77291096db Settings: Add GPU adapter option and hook up to D3D11/Vulkan 2020-06-20 03:34:19 +10:00
Connor McLaughlin 1e26ded73c SDL: Use FrontendCommon D3D11 host display wrapper 2020-06-20 03:34:19 +10:00
Connor McLaughlin d168947ae4 SDL: Support Vulkan 2020-06-19 00:18:51 +10:00
Albert Liu 53a2b8c03d SDL: Update advanced settings description 2020-06-16 09:53:18 -07:00
Connor McLaughlin 91734e35b0 SDL: Add icon to executable 2020-06-15 03:29:21 +10:00
Connor McLaughlin 075380f8e0 Move most helper logic from base HostInterface to FrontendCommon 2020-06-09 02:35:37 +10:00
Connor McLaughlin a56d7385eb SDL: Support rendering software cursor in D3D11 2020-06-08 02:59:38 +10:00
Connor McLaughlin fe364d5e8b SDL: Include frame times in status bar 2020-05-30 02:19:01 +10:00
Connor McLaughlin 06621a9547 SDL: Fix second port controller/memcard type changes 2020-05-28 03:07:18 +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 eb6b490c76 SDL: Ignore unused key modifiers 2020-05-27 00:27:52 +10:00
Connor McLaughlin 2156236f52 Frontends: Use common GL context wrapper 2020-05-25 15:02:44 +10:00
Connor McLaughlin fa027d9c2a SDL: Add remove disc menu option 2020-05-20 02:26:23 +10:00
Connor McLaughlin 88cc695d0b HostDisplay: Adjust offsets for linear filtering
Fixes line on right of screen in South Park.
2020-05-17 21:10:48 +10:00
Connor McLaughlin 0bdac9e4be SDL: Add disable interlacing to quick settings menu 2020-05-17 17:58:32 +10:00
Connor McLaughlin c475923bdd SDL: Add log level settings to debug menu 2020-05-17 14:12:36 +10:00
Connor McLaughlin 8fd3a83ea8 Settings: Save DMA timing hacks to ini 2020-05-17 14:12:35 +10:00
Connor McLaughlin 93031fc27f SDL: Re-add frame step hotkey
Needs porting to Qt at some point.
2020-05-17 01:00:44 +10:00
Connor McLaughlin 47c2b29395 Build: Use bin directory for cmake, fix Windows/cmake build 2020-05-16 13:10:31 +10:00
Connor McLaughlin 26e0177caa SDL: Fix browse button not showing on hidpi displays 2020-05-05 03:04:56 +10:00
Connor McLaughlin 1ed86f4897 Frontends: Add Discord Presence support 2020-05-01 01:01:53 +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 0ec44327d1 SDL: Add integer upscaling option 2020-05-01 01:00:35 +10:00
Connor McLaughlin 59d0e4aa21 SDL: Switch to Windows instead of Console subsystem 2020-05-01 00:58:38 +10:00
Connor McLaughlin 940b725c1d Settings: Make DMA performance parameters tweakable 2020-04-29 20:00:22 +10:00
Connor McLaughlin bae4945c7a SDL: Add option for memory card type 2020-04-27 16:22:25 +10:00
Connor McLaughlin a8c43b0c8c SDL: Only enable D3D11 break-on-error when debugger attached 2020-04-27 00:53:25 +10:00
Connor McLaughlin 1000cb30a9 HostDisplay: Track mouse position 2020-04-26 17:36:49 +10:00
Connor McLaughlin 2502afc3f6 SDL: Hook up mouse button events to bindings 2020-04-26 17:24:00 +10:00
Connor McLaughlin a02c818245 HostDisplay: Drop some unused methods 2020-04-22 21:15:59 +10:00
Connor McLaughlin 08c8d1a521 System: Support saving screenshots in save states 2020-04-21 02:50:45 +10:00
Connor McLaughlin 13903c2abd SDL: Add advanced options for tweaking GPU FIFO/runahead
These values are not saved.
2020-04-19 16:58:46 +10:00
Connor McLaughlin 277c03aca0 Add auto-generated Git version to window titles 2020-04-17 02:10:56 +10:00
Connor McLaughlin 9c184c5733 SDL: Support loading .psf files 2020-04-17 00:30:19 +10:00
Connor McLaughlin b45b70970b GL/ShaderCache: Support geometry shaders 2020-04-16 21:25:56 +10:00
Connor McLaughlin 193763b4aa SDL: Fix possible crash when parsing key modifiers 2020-04-14 16:41:59 +10:00
Connor McLaughlin d9ebb975b2 CommonHostInterface: Reimplement controller rumble support
Even better than before, supports separate motor control.
2020-04-14 16:34:42 +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 4fd5d6ca4f SDL: Fix software renderer image uploads in OpenGL 2020-04-11 18:54:20 +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 156a360d86 SDL: Migrate to common host interface
It now supports controllers again. But you have to bind them in Qt.
2020-04-11 00:00:44 +10:00
Connor McLaughlin ebc3aa118c SDL: Fix DXGI intercepting ALT+ENTER 2020-04-11 00:00:15 +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 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 70ccdcfc30 INISettingsInterface: Make constructor parameter a std::string 2020-04-05 22:57:29 +10:00
Connor McLaughlin 3daa6b469a Build: Explicitly disable spectre mitigations
Mitigations-off gave a roughly 20-25% boost in performance on my laptop
(i7-7700HQ), even with the recompiler.

It seems AppVeyor was building with them enabled. You shouldn't treat an
emulator like a sandbox and run untrusted code in it amyway.
2020-04-01 22:30:19 +10:00
Connor McLaughlin 9933910312 SDL: Add CDROM Enable Region Check option 2020-04-01 14:50:21 +10:00
Connor McLaughlin cbb9b96537 System: Include buffer swap time in frame time measurement 2020-03-24 00:20:56 +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 29a09a3685 Introduce ControllerInterface class, port SDL interface over
This breaks controller support in the SDL frontend until it's ported
over to the common interface.
2020-03-22 00:49:46 +10:00
Connor McLaughlin ffb760c79d SDL: Add screenshot to menu 2020-03-16 00:04:16 +10:00
Connor McLaughlin 2bb992a702 HostDisplay: Add texture dumping/saving support 2020-03-16 00:03:49 +10:00
Connor McLaughlin c4af353d54 SDL: Add audio dumping options 2020-03-15 22:04:25 +10:00
Connor McLaughlin 8f39a0f154 Qt: Properly implement "Start Fullscreen" 2020-03-12 13:53:58 +10:00
Connor McLaughlin 2480624cbe Qt: Replace QWindow for display with QWidget base
Not as elegant, but it solves the input focus issue.
2020-03-12 13:53:51 +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 e1d4c0b9d4 HostDisplay: Fudge texture coordinates for better linear filtering 2020-02-29 00:18:24 +10:00
Connor McLaughlin e8e44991db GPU: Fix display in OpenGL renderer 2020-02-28 22:42:56 +10:00
Connor McLaughlin fcc0ae9571 GPU: Implement "Crop Mode" (none, overscan, all borders) 2020-02-28 17:01:01 +10:00
Connor McLaughlin bbdee22ea8 SDL: Move SDLSettingsInterface (ini) to frontend-common 2020-02-28 17:00:14 +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 4fe57e64d7 SDL: Add -gstate parameter to load global state 2020-02-28 17:00:00 +10:00
Connor McLaughlin 992bf7c338 SDL: Add GPU debug device option to settings 2020-02-28 16:59:58 +10:00
Connor McLaughlin 07ba2ecd3d Settings: Simplify resolution scale enumeration 2020-02-28 16:59:55 +10:00
Connor McLaughlin ce31c85983 SDL: Support high-dpi displays 2020-02-28 16:59:48 +10:00
Connor McLaughlin a0a0cd48fa SDL: Reimplement improved fullscreen toggling 2020-02-28 16:59:46 +10:00
Connor McLaughlin f03de090c4 SDL: Fix setting changes not applying 2020-02-28 16:59:44 +10:00
Connor McLaughlin 4b94224955 SDL: Use RunLater() for menu actions too 2020-02-28 16:59:41 +10:00
Connor McLaughlin e9dea6e0f7 HostInterface: Add a ConfirmMessage() method 2020-02-26 19:25:57 +10:00
Connor McLaughlin c68d188029 Disable DXGI handling of ALT+ENTER
We manage fullscreen ourselves.
2020-02-24 18:19:20 +09:00
Connor McLaughlin bfdf343dfe SDL: Move imgui render to display
Fixes crash on renderer switch.
2020-02-23 00:04:30 +09:00
Connor McLaughlin 959a555274 CDROM: Implement asynchronous disc reading 2020-02-22 00:24:35 +09:00
Connor McLaughlin 3a0f8bffc5 SDL: Use precompiled D3D11 display shaders 2020-02-20 23:22:37 +09:00
Connor McLaughlin 961bc09979 SDL: Fix crashes on starting emulation 2020-02-16 00:33:43 +09:00
Connor McLaughlin 9ddb3a8c7a SDL: Use controller interface from frontend-common 2020-02-16 00:15:14 +09:00
Connor McLaughlin 06f4d72631 FrontendCommon: Use SDL_InitSubSystem() for lazy initialization 2020-02-16 00:15:05 +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