Commit Graph

255 Commits (05259bc851fc60ee190948d34b739b53ecf112ed)

Author SHA1 Message Date
Connor McLaughlin 13e3095801 Core: Don't link to imgui for libretro core 5 years ago
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.
5 years ago
Connor McLaughlin ab002e78e1 Support translating strings in emulator core 5 years ago
Connor McLaughlin bca609a2a6 Qt: Add option to disable per-game settings 5 years ago
Connor McLaughlin c3ce9135bf Fix recompiler not auto-disabling with PGXP-CPU mode 5 years ago
Connor McLaughlin 60d3fffec1 Add per-game overrides (mainly for compatibility) 5 years ago
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.
5 years ago
Connor McLaughlin 10a46a7fd8 OSD: Add option to show display resolution 5 years ago
Connor McLaughlin 26aa627deb GPU/HW: Include resolution in scale change message 5 years ago
Connor McLaughlin f5fb8186c7 Switch some messages to the OSD and increase durations 5 years ago
Connor McLaughlin d9893bb127 System: Add option to use a single memory card for playlists 5 years ago
Connor McLaughlin d1ee6c0da7 GPU/HW: Make settings update slightly safer 5 years ago
Connor McLaughlin 3a020ef87e HostInterface; Fix crash on shutdown if boot fails 5 years ago
Connor McLaughlin 5c6e92cdfc GPU/HW: Disable coordinate clamping when unnecessary 5 years ago
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.
5 years ago
Connor McLaughlin e5c46a54b7 System: Restore/reset state on recreating GPU/updating settings
Fixes display corruption on RetroArch when switching renderers.
5 years ago
Connor McLaughlin 0c1b637549 PGXP: Add initial implementation 5 years ago
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
5 years ago
Connor McLaughlin 8802177e25 BIOS: Add more revision filenames/hashes 5 years ago
Connor McLaughlin 104b80f111 HostInterface: Move 'System shut down' message to SDL
Only frontend where it makes sense anyway.
5 years ago
Connor McLaughlin 9496c992f7 System: Add an option to preload CD image to RAM 5 years ago
Connor McLaughlin 68d98af497 Qt: Remove usage of QString where possible for settings 5 years ago
Connor McLaughlin bddd098a66
Merge branch 'master' into qt-inisettings 5 years ago
Connor McLaughlin 5c1c467e38 GTE: Add widescreen hack 5 years ago
Albert Liu 9b2740b395 HostInterface: Save tweak/hack defaults to settings file
Fixes tweak/hack defaults not displaying correctly in Qt frontend.
5 years ago
Connor McLaughlin 7ba1bed37b Settings: Leave interlacing on by default
Too many games break without it.
5 years ago
Connor McLaughlin b0b3901722 libretro: Fix DualShock analog mode auto-enable 5 years ago
Connor McLaughlin f396a2c373 Renderers: Make shader cache path a prefix instead of directory 5 years ago
Connor McLaughlin b471d1043a Settings: Load Memory Cards From State -> Load Devices From State
Makes it apply to controllers too.
5 years ago
Connor McLaughlin e374853cf5 HostInterface: Better configuration of custom crosshair/software cursor 5 years ago
Connor McLaughlin 0b11a14e24 Qt: Better handling of default settings not in ini 5 years ago
Connor McLaughlin 4dc9e10777 HostInterface: Support per-controller-type settings 5 years ago
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.
5 years ago
Connor McLaughlin eec37df1e0 Settings: Make the recompiler the default CPU mode 5 years ago
Connor McLaughlin 49d11988bf Core: Add Vulkan GPU renderer 5 years ago
Connor McLaughlin 075380f8e0 Move most helper logic from base HostInterface to FrontendCommon 6 years ago
Connor McLaughlin f9eb3719e3 HostInterface: Add software cursor mode
This will probably need to be extended in the future.
6 years ago
Connor McLaughlin 531c3ad5fa AudioStream: Replace buffer queue with ring buffer
Should achieve a decent overall minimum latency reduction.
6 years ago
Connor McLaughlin 6acd8b27dd Qt: Prevent lag disabling power on buttons when starting 6 years ago
Connor McLaughlin 81a7b147fc System: Add option to disable loading memory cards from save states 6 years ago
Connor McLaughlin b17a5832e5 System: Simplify save state booting
Fixes memory card warning messages on load state.
6 years ago
Connor McLaughlin 2795dea124 HostInterface: Prioritize SCPH-3000 over SCPH-1000 for NTSC-J 6 years ago
Connor McLaughlin 1c50a09c2e HostInterface: Set user directory to Documents\DuckStation 6 years ago
Connor McLaughlin f7a2448dfb HostInterface: Pull compatibility database from program directory
Fixes compatibility list not reading on Linux.
6 years ago
Connor McLaughlin d781de2ce6 GameList: Add support for compatibility database 6 years ago
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.
6 years ago
Connor McLaughlin db9d637f92 HostInterface: Fix mute not applying on startup 6 years ago
Connor McLaughlin c329f58afe HostInterface: Add audio buffer/count/volume/mute settings 6 years ago
Connor McLaughlin 0f5bc7267f HostInterface: Fix hang when switching audio backends 6 years ago
Connor McLaughlin d8ab587153 HostInterface: Modify settings loading interface to support per-frontend settings 6 years ago
Connor McLaughlin b4c31e55e2 HostDisplay: Add integer upscaling option 6 years ago
Connor McLaughlin e37962009e HostInterface: Add log lettings to ini 6 years ago
Connor McLaughlin 59f055f4b9 HostInterface: Make title-based memory cards the default 6 years ago
Connor McLaughlin 940b725c1d Settings: Make DMA performance parameters tweakable 6 years ago
Connor McLaughlin 74e455a5f7 System: Support per-game memory cards 6 years ago
Connor McLaughlin 08c8d1a521 System: Support saving screenshots in save states 6 years ago
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.
6 years ago
Connor McLaughlin f75ea052a6 FrontendCommon: Add input profile support 6 years ago
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.
6 years ago
Connor McLaughlin 6a03bb2d15 HostInterface: Drop std::filesystem requirement 6 years ago
Connor McLaughlin 7779a54bc5 GPU: Rename 'Force Progressive Scan' to 'Disable Interlacing'
It affects rendering as well as display/scanout now, after all.
6 years ago
Connor McLaughlin 6cfad33b8e HostInterface: Set NoNav on FPS window
Prevents it stealing focus in SDL frontend.
6 years ago
Connor McLaughlin fbfd838e22 GPU: Add pixel aspect ratio option
Can display in 4:3, 16:9, 1:1 ratios.
6 years ago
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).
6 years ago
Connor McLaughlin 610abc1a75 BIOS: Make SCPH-3000 BIOS known 6 years ago
Connor McLaughlin b4538b1d2e HostInterface: Add redump BIOS filenames to search list
ps-10x.bin, ps-30x.bin, etc.
6 years ago
Connor McLaughlin e91d760175 HostInterface: Fix crash on startup with controller connected 6 years ago
Connor McLaughlin e7640d5367 HostInterface: Make SetUserDirectory() overridable by frontends 6 years ago
Connor McLaughlin 15c33ebedb CDROM: Add "Enable Region Check" option 6 years ago
Connor McLaughlin 7cd7dec668 HostInterface: Restore pause state after switching renderers
Fixes #148.
6 years ago
Connor McLaughlin 7e36195f44 HostInterface: Enable on-screen FPS/VPS/Speed display via config 6 years ago
Connor McLaughlin 77a60f0c5f HostInterface: Crash fix again for controller switching 6 years ago
Connor McLaughlin 12ddeb675c HostInterface: Fix controller not updating when switched and system running 6 years ago
Connor McLaughlin 6b68512ac1 HostInterface: Add SaveScreenshot() method 6 years ago
Connor McLaughlin 8e20d0d4ff SPU: Add audio dumping support 6 years ago
Connor McLaughlin 198a64eb5e HostInterface: Add a helper function for generating timestamp-based filenames 6 years ago
Connor McLaughlin 8f39a0f154 Qt: Properly implement "Start Fullscreen" 6 years ago
Connor McLaughlin e8a5259e68 Qt: Show save times in save state menu as well 6 years ago
Connor McLaughlin b59e4ffbcb HostInterface: Reset performance counters on unpausing 6 years ago
Connor McLaughlin 69f03959aa Qt: Implement context menu in game list 6 years ago
Connor McLaughlin 635ab72b37 GPU: Implement "Scaled Dithering" option
Fixes #29.
6 years ago
Connor McLaughlin 63064f80c2 HostInterface: Fix default value for Display/CropMode 6 years ago
Connor McLaughlin fcc0ae9571 GPU: Implement "Crop Mode" (none, overscan, all borders) 6 years ago
Connor McLaughlin f35970fcac FrontendCommon: Move input binding and some other logic from Qt to common 6 years ago
Connor McLaughlin 07ba2ecd3d Settings: Simplify resolution scale enumeration 6 years ago
Connor McLaughlin f21cb25426 HostInterface: Recreate system on GPU debug device toggle too 6 years ago
Connor McLaughlin 50a155e775 Settings: Default to relative paths for bios/memcards
Prevents from locking to the directory the first time we run.
6 years ago
Connor McLaughlin e4ff8b0936 Qt: Add power off hotkey and confirmation message 6 years ago
Connor McLaughlin e9dea6e0f7 HostInterface: Add a ConfirmMessage() method 6 years ago
Connor McLaughlin 959a555274 CDROM: Implement asynchronous disc reading 6 years ago
Connor McLaughlin 1ed8243776 HostInterface: Reset counters when starting from state 6 years ago
Connor McLaughlin 1e0e802fa4 HostInterface: Add a helper to display a 'Loading Screen' during long startup 6 years ago
Connor McLaughlin dcc9da3f5e HostInterface: Don't try to resume system without game code 6 years ago
Connor McLaughlin cd2f6d1f68 HostInterface: Only display error when loading resume state if boot anyway flag isn't set 6 years ago
Connor McLaughlin 6a1206dde7 Frontends: Add option for "Increase Timer Resolution" 6 years ago
Connor McLaughlin e01cf0dccb Frontends: Implement auto save on exit/resume 6 years ago
Connor McLaughlin e738b87a25 HostInterface: Add helpers for resume save state 6 years ago
Connor McLaughlin 5f3be68028 HostInterface: Notify host when controller types change 6 years ago
Connor McLaughlin 37d765e8d7 HostInterface: Support switching audio backends 6 years ago
Connor McLaughlin 6a0c15b649 HostInterface: Move timer resolution increase to base class 6 years ago
Connor McLaughlin 1e009133ae Rename 'Default' audio backend to 'SDL' 6 years ago
Connor McLaughlin fd8ed08307 Move more logic from frontend to base HostInterface 6 years ago
Connor McLaughlin f0578bb932 HostInterface: Make helper methods const 6 years ago
Connor McLaughlin 7290e5cad0 HostInterface: Add per-slot save state helper functions 6 years ago
Connor McLaughlin befa2a27d8 HostInterface: Fix crash in SetUserDirectory 6 years ago
Connor McLaughlin b605a84f7d HostInterface: Set user directory for Linux/macOS, portable.txt support 6 years ago
Connor McLaughlin 8eba4b379c Settings: Default to D3D11 renderer on Windows
This point it's less buggy and slightly more performant.
6 years ago
Connor McLaughlin 5aba89091e HostInterface: Fix possible crash in BIOS loading 6 years ago
Connor McLaughlin 5c7ef65a34 HostInterface: Non-standard speeds are <100% too 6 years ago
Connor McLaughlin e098c83342 HostInterface: Disable vsync/audio sync when running at not-100% speed 6 years ago
Connor McLaughlin 70fe43a3ec System: Implement variable emulation speed 6 years ago
Connor McLaughlin c820ddba79 HostInterface: Move throttle and perf stats to System class 6 years ago
Stenzek 057263bda3 HostInterface: Track changes to CPU mode in ApplySettings() 6 years ago
Connor McLaughlin 1b9609ef61 Implement event-based scheduler instead of lock-step components 6 years ago
Connor McLaughlin 624888e131 HostInterface: Default BIOS path to bios subdirectory 6 years ago
Connor McLaughlin faf2308695 Settings: Move set defaults to HostInterface so it can use user paths 6 years ago
Connor McLaughlin b5e73a0be4 HostInterface: Add helper methods for getting paths to save states/memcards 6 years ago
Connor McLaughlin 40799d0f77 HostInterface: Move ModifyResolutionScale() to base class 6 years ago
Connor McLaughlin 4a3478b360 HostInterface: Add function to switch between sw/hw rendering 6 years ago
Connor McLaughlin f2231d6669 HostInterface: Move setting update logic to base class 6 years ago
Connor McLaughlin 82563d94f4 HostInterface: Fix offset OSD messages in Qt frontend 6 years ago
Connor McLaughlin f6fee86f1c HostInterface: Create user directories on startup 6 years ago
Connor McLaughlin b4c06fdcc6 GameList: Auto set cache/database path from user directory 6 years ago
Connor McLaughlin 77b282862f HostInterface: Move running title info to System 6 years ago
Connor McLaughlin b3db3a1cc0 HostInterface: Share settings between SDL and Qt frontends 6 years ago
Connor McLaughlin 2c3a0a6af9 HostInterface: Change working directory to user directory at startup 6 years ago
Connor McLaughlin 53428cb55b HostInterface: Add user directory helpers 6 years ago
Connor McLaughlin 8d4d8e44e4 HostInterface: Saving state message should be OSD not error 6 years ago
Connor McLaughlin 0a5f7fcd75 System: Update running game when media changes from save state 6 years ago
Connor McLaughlin 20b60e0f01 Qt: Update window title/save states from running title 6 years ago
Connor McLaughlin 9562cbea56 Frontends: Add frame time performance counters 6 years ago
Connor McLaughlin 71c1e243fe Remove YBaseLib dependency 6 years ago
Connor McLaughlin 686df4a203 Qt: Improve imgui hidpi scaling 6 years ago
Connor McLaughlin 0590f0935c HostInterface: Fix compile error on Linux 6 years ago
Connor McLaughlin 9de0bf0aaf HostInterface: Most some imgui logic from SDL to core 6 years ago
Connor McLaughlin ea0845d5ad Move controller creation to System class, switch shared_ptr to unique_ptr 6 years ago
Connor McLaughlin efb8033d48 HostInterface: Fix for gcc < 8 6 years ago
Connor McLaughlin 299ee05cd9 HostInterface: Move OSD messages to base class 6 years ago
Connor McLaughlin 0a6b913536 HostInterface: Move performance counters to base class 6 years ago
Connor McLaughlin f11d357ab9 Compile fixes for Android 6 years ago
Connor McLaughlin 48e3683d20 HostInterface: Fix load state on boot not loading state 6 years ago
Connor McLaughlin b2b5e6c793 HostInterface: Reset throttle timer on slowdown
Prevents too slow messages when fast forwarding.
6 years ago
Connor McLaughlin 8fb4f73d17 Settings: Add audio sync and additional cleanup 6 years ago
Connor McLaughlin 3673c6e33c HostInterface: Re-enable audio sync by default 6 years ago
Connor McLaughlin b57f1d4a60 HostInterface: Implement non-vsync based speed throttler
Needed for PAL games.
6 years ago
Connor McLaughlin 246c97ccb3 System: Scaffolding for multi-system/multi-bios 6 years ago
Connor McLaughlin 8c51abaf37 System: Move settings to HostInterface 6 years ago
Connor McLaughlin 98a5c4980d Settings: Use simpleini for settings load/save 6 years ago
Connor McLaughlin ac45f3892c Frontend: Fix broken display texture for OpenGL 6 years ago
Connor McLaughlin 9de9cf3be2 GPU/HW: Add D3D11 renderer and refactor host interface/display 6 years ago