Compare commits

3422 Commits

Author SHA1 Message Date
Stenzek
fa84d9e893 Qt: Default MacOS fractional window scale to disabled 2026-01-24 13:27:09 +10:00
Stenzek
66bfc4b164 Achievements: Increase padding for leaderboard loading indicator 2026-01-24 01:16:56 +10:00
Stenzek
bd1b660514 dep/rcheevos: Destroy parse state in rc_find_next_classification()
Fixes memory leak.
2026-01-24 01:12:43 +10:00
Stenzek
e26ad17fea dep/rcheevos: Fix silent URL truncation in new functions 2026-01-24 01:09:47 +10:00
Stenzek
c41eeda026 Achievements: Fix almost there/active challenge showing in all subsets 2026-01-23 22:00:06 +10:00
Stenzek
d9e442e5c8 GPUDevice: Don't duplicate fullscreen modes
Also sort the list while we're at it.
2026-01-23 21:22:41 +10:00
Stenzek
424a8e7756 Cheats: Fix aspect ratio not updating on change 2026-01-23 21:16:59 +10:00
Stenzek
75aba0d1ed GPUThread: Fix core thread window info not updating on fullscreen 2026-01-20 18:07:22 +10:00
Stenzek
07f2fa8f59 Achievements: Reload game when resetting after disc swap
Otherwise rcheevos maintains the old game info.
2026-01-20 16:38:42 +10:00
Stenzek
9a24913ab3 FullscreenUI: Remove now-unused host file selector functions
Apparently I forgot this. Should've been optimized out with LTO anyway.
2026-01-20 15:59:34 +10:00
Stenzek
c1ff163943 Misc: Replace more 'reset' strings with 'restart' 2026-01-20 00:27:30 +10:00
Stenzek
ce5b358d25 README: Update Mac installation instructions 2026-01-19 23:37:10 +10:00
Stenzek
fb474e8dd1 Qt: Relabel 'Reset Game' as 'Restart Game'
Clearer what it actually does.
2026-01-19 23:18:54 +10:00
Stenzek
f18aaee695 Qt: Use QPlatformTheme for Cancel 2026-01-19 23:18:54 +10:00
Stenzek
29692268b9 Qt: Allow parenting updater to settings dialog
Saves flipping back to main window if queried from interface settings.
2026-01-19 23:18:54 +10:00
Stenzek
e851c665c9 Common: Remove MemorySettingsInterface
No longer needed. Regtest uses the INI interface without a backing file.
2026-01-19 23:18:54 +10:00
Stenzek
06897cd733 Qt: Move windows data location from Documents to AppData
OneDrive shenanigans, Windows Defender preventing access, the list of
issues goes on.

Existing setups with a DuckStation directory in Documents will continue
to use Documents. New installs will use AppData\Local.
2026-01-19 23:18:54 +10:00
Stenzek
322320f816 FileSystem: Backport 3-arg Path::Combine() 2026-01-19 18:29:00 +10:00
Stenzek
a57851fb0c Qt: Fall back to QScreen if WindowInfo refresh rate query fails 2026-01-19 15:38:30 +10:00
Stenzek
ec22863e48 CocoaTools: Add display link fallback for refresh rate query 2026-01-19 15:38:10 +10:00
Stenzek
7f7d827397 GPUPresenter: Avoid NaN sized target during loading
Fixes texture errors during achievement loading with post-processing
active.
2026-01-19 15:05:46 +10:00
Stenzek
4800a4e552 PostProcessing: Avoid creating zero-sized intermediate targets 2026-01-19 15:05:46 +10:00
Stenzek
962454bbf4 Qt: Fix double invoking of mouse wheel/button events
Fixes FSUI scroll speed.
2026-01-19 15:05:46 +10:00
Stenzek
0c1f61f783 FullscreenUI: Add option to swap gamepad confirm/cancel buttons 2026-01-19 15:05:46 +10:00
Stenzek
a44f202f42 ImGuiManager: Remove another source of truth for window size 2026-01-19 15:05:46 +10:00
Stenzek
808d1116e5 GunCon: Don't read ImGuiManager state
Owned by GPU thread.
2026-01-19 15:05:46 +10:00
Davide Pesavento
39634b3555 FSUI: More consistent icons (#3686) 2026-01-19 15:05:36 +10:00
Stenzek
525dba5c52 GPUDevice: Use sorted array for storing shader cache entries
Saves hundreds of heap allocations for something that is more often read
rather than write.
2026-01-18 19:50:16 +10:00
Stenzek
c4255112ce MediaCapture: Remove stream ID check in ProcessVideoEvents()
Wasn't doing anything, and broke hardware encoding on NVIDIA.
2026-01-18 18:37:02 +10:00
Daniel Nylander
0058441ae5 Updated Swedish translation (#3685) 2026-01-18 18:36:48 +10:00
Stenzek
9eb092cf1b Qt: Detect refresh rate change when screen changed 2026-01-18 18:24:48 +10:00
Stenzek
ff0ad1b176 System: Rewrite present skipping
Now can operate in "only if vsync blocks" mode.

Significantly improves frame pacing for fast forward speeds.
2026-01-18 18:24:48 +10:00
Stenzek
4ec6ff7ebc InputManager: Remove second source of truth for window size 2026-01-18 16:51:10 +10:00
Stenzek
7c0e4d37c6 Qt: Forward mouse events through core thread
Instead of messing with core thread state on the UI thread.
2026-01-18 16:51:10 +10:00
Stenzek
71f46cf8c1 GPUThread: Update core thread window size on core thread
Avoid the barrier when reading it.
2026-01-18 16:51:07 +10:00
Stenzek
abed81d53e GPUDevice: Use present instead of current time for skip logic
Fixes erratic frame times when fast forwarding and below the
screen refresh rate.
2026-01-18 13:29:00 +10:00
Stenzek
a7d29da8ef System: Clamp typical time to frame period on MacOS
Gets rid of constraint errors with targeted fast forward speed.
2026-01-18 13:27:31 +10:00
Stenzek
e41ca32459 AudioStream: Fix changing stretch mode without buffer change 2026-01-18 13:24:08 +10:00
Stenzek
c8abdccce4 FullscreenUI: Remove content start sound effect
This ended up being way more annoying than I thought it would be.
2026-01-18 01:44:40 +10:00
Stenzek
4f37bc6e18 dep/rcheevos: Update rcheevos to v12.2.1
Already applied the patch, but this will bump the user agent which may
help with troubleshooting.
2026-01-18 01:44:02 +10:00
Stenzek
53e7cf5e5b System: Disable screensaver inhibit on Gamescope
So I don't have a barrage of Steam Deck users whinging about the OSD
message.

Also disable it if XDG_CURRENT_DESKTOP is missing, like running directly
on the framebuffer.
2026-01-18 01:25:01 +10:00
Stenzek
2a8256673a GPUDevice: Use separate variables for last/next present time
Fixes erratic frame rates in Big Picture mode.

Regression from 09926a3769.
2026-01-17 23:07:24 +10:00
Stenzek
2c77eabe3a Qt: Use nested layouts in controller settings dialog
Gets rid of the gaps but doesn't require rearranging.
2026-01-17 21:45:22 +10:00
Stenzek
9c9bd21c30 Qt: Remove RemoveEmptyRowsAndColumns() helper
Even after fixing this function, Qt's still screwing up the spacing of
grid items after rearranging. Better to approach this a different way.
2026-01-17 21:44:29 +10:00
Stenzek
8863c53813 System: Fix inhibit state if option changed while paused 2026-01-17 20:21:18 +10:00
Stenzek
70d286516e Qt: Fix auto updater half complete state on missing asset 2026-01-17 19:33:36 +10:00
Stenzek
54692a842b Qt: Only override with real/fractional scale on Metal renderer
Vulkan/MoltenVK can't handle it.
2026-01-17 19:13:46 +10:00
Stenzek
171514327d Qt: Fix incorrect fractional window size in MacOS 2026-01-17 19:13:46 +10:00
Stenzek
ebb604e1c6 Achievements: Use secondary colour for active subset
Makes it clearer.
2026-01-17 19:13:46 +10:00
Stenzek
3b57f437d4 Achievements: Don't duplicate subset title in list view
It's already shown in the subset selector.
2026-01-17 19:13:46 +10:00
Stenzek
1c02bf01a7 Achievements: Fix progress bar being too short 2026-01-17 19:13:46 +10:00
Stenzek
2463a5fdb7 Misc: Remove platform_misc.h completely 2026-01-17 19:13:46 +10:00
Stenzek
9c07d9bf7c CocoaTools: Move util functions to common 2026-01-17 19:13:46 +10:00
Stenzek
8135aefacf Qt: Move window corner rounding out of PlatformMisc 2026-01-17 19:13:46 +10:00
Stenzek
ffe7ca9f0a Host: Move screensaver inhibit to host
Removes direct dependency on DBus, uses Qt DBus instead.
2026-01-17 19:13:46 +10:00
Stenzek
e2266cd617 dep/rcheevos: Bumpt a4b9156 + #492
And remove some local patches that are now unnecessary.
2026-01-17 14:41:00 +10:00
Stenzek
2c8647d348 Achievements: Use rc_client_create_leaderboard_list() for hidden test
That way it's compatible with external client.
2026-01-17 14:32:50 +10:00
Stenzek
3a0c4898ef GunCon: Add line/tick offset for position fine-tuning
Fixes calibration in Ghoul Panic and default position in Judge Dredd.
2026-01-17 14:14:09 +10:00
Stenzek
9882ef4251 GPU: Fix ConvertDisplayCoordinatesToBeamTicksAndLines() with forced-progressive 2026-01-17 12:50:42 +10:00
Stenzek
4c92dc1818 Qt: Fix tab order in a couple of places
Regression from ff889fc749 and
e52b7dde8b.
2026-01-16 17:35:14 +10:00
Stenzek
6d61c54d50 Qt: Adjust Darker Fusion highlight colour 2026-01-16 17:34:58 +10:00
Davide Pesavento
ff889fc749 Qt: Fix overlapping group boxes in controller global settings (#3683) 2026-01-16 17:23:44 +10:00
Anderson Cardoso
a9bea9a4dd Atualização Português do Brasil (#3682)
Atualizado para a última versão
2026-01-16 17:22:22 +10:00
Davide Pesavento
0edd6e6fe4 GameDB: PGXP CPU mode and max speedup cycles for The Guardian of Darkness 2026-01-16 18:22:03 +11:00
Davide Pesavento
98596dd7df GameDB: Set PGXP tolerance for Vagrant Story 2026-01-16 18:22:03 +11:00
Stenzek
bd44e36f70 Achievements: Use OSD messages for errors instead of notifications 2026-01-16 02:49:40 +10:00
Stenzek
18768bcaba Achievements: Use note area in more notifications
- Show RA logo for login/game summary.
- Add icons to game complete, subset complete, leaderboard start/fail.
2026-01-16 02:49:40 +10:00
Stenzek
d02df7cf4b Achievements: Don't use visibility for leaderboard paging
Fixes leaderboards not being scrollable with controller only navigation.
2026-01-16 02:49:40 +10:00
Stenzek
f372a92246 Achievements: Add active leaderboard trackers to pause menu 2026-01-16 02:49:39 +10:00
Stenzek
93a5663fc8 Achievements: Make leaderboard notifications a little nicer 2026-01-16 02:49:39 +10:00
Stenzek
f222c5012a Achievements: Raise leaderboard fetch size to 15/50
Was loading too often otherwise.
2026-01-16 00:46:38 +10:00
Stenzek
a108fcf2b2 Hotkeys: Fix power off hotkey in achievements hardcore mode 2026-01-16 00:46:38 +10:00
Stenzek
80993e9880 FullscreenUI: Fix crash when hovering floating buttons
Only used in achievement lists.

Regression from db46413df7.
2026-01-16 00:46:38 +10:00
Stenzek
56fc9afbcf InputManager: Default to using global sources in profiles/games
Fixes controllers disconnecting and reconnecting on game start if any
settings were not copied from global (e.g. new settings).

Also fixes raw input not being hidden on non-Windows.

This is a breaking change if you were relying on input profiles/game
configuration having different sources selected.

In those cases, you will need to enable the new "Use Profile Input
Sources" checkbox to revert to the old behaviour for new profiles.
2026-01-15 20:26:01 +10:00
Stenzek
0c29d4e1db Qt: Remove empty rows/columns in controller settings 2026-01-15 20:26:01 +10:00
Stenzek
82947f0f65 Qt: Don't double-create the controller settings widgets
If editing a preset.
2026-01-15 20:26:01 +10:00
Stenzek
2db018bd88 Qt: Convert text in analog/digital pad SVGs to paths
Makes controller settings open instantly instead of a second or two
delay while DWrite is set up for font rendering.
2026-01-15 20:25:51 +10:00
Davide Pesavento
8dc07e5282 Qt: Use splitter in macro editor (#3680) 2026-01-15 16:58:49 +10:00
Stenzek
1ec280113f Qt: Fix incorrect row for compatibility comments 2026-01-15 16:35:42 +10:00
Stenzek
0912783158 System: Add taint for memory card time travelling 2026-01-15 15:47:40 +10:00
Stenzek
3bff452022 Qt: Add custom titles for disc sets
Still questioning the point since all discs including patched will get
lumped into the same disc set... but it's straightforward enough.
2026-01-15 15:30:59 +10:00
Stenzek
09926a3769 GPUDevice: Update last presented time after present
Instead of before.

Makes present skipping much more effective against NVIDIA's global
framerate cap if enabled, on my system with the cap at 60fps it
went from 120fps to 1400fps. Still about half of the true uncapped
speed, but when the present call blocks for a few milliseconds this
is all you can do. Can't stop presenting frames entirely.
2026-01-14 22:03:15 +10:00
Stenzek
d02382da79 GameList: Log image open errors on file scan failure 2026-01-14 22:03:15 +10:00
Stenzek
0c84baf4da Qt: Use portal file picker on KDE/GNOME 2026-01-14 22:03:15 +10:00
Stenzek
9cc8b0e19f InputManager: Apply 'Disable Background Input' to ImGui too
And fix the incorrect config key.
2026-01-14 02:01:28 +10:00
Stenzek
2d8b7c85bf FullscreenUI: Halve menu animation time
Felt really sluggish. Not sure how I haven't picked up on this before.
2026-01-14 01:22:27 +10:00
Stenzek
e52b7dde8b InputManager: Add 'Disable Background Input' option
Ignores controller input when application is not in the foreground.
2026-01-14 01:10:05 +10:00
Stenzek
f901d716bc InputManager: Don't use relative mode in raw input without bindings
Fixes mouse pointer getting locked if the user accidentially enables it
with nothing bound.
2026-01-14 00:30:12 +10:00
Stenzek
991db9e49a InputManager: Remove default Pointer-0 device on raw input startup
And re-add it on shutdown.

Fix the duplicate devices in the list.
2026-01-14 00:29:37 +10:00
Stenzek
2cb7bace03 InputManager: Fix raw input device disconnect events not triggering on disable 2026-01-14 00:28:54 +10:00
Stenzek
8048c05b3e InputManager: Fix raw input not registering 2026-01-14 00:28:31 +10:00
Davide Pesavento
f7083f9635 Qt: Fix singular form in a few translatable strings (#3681) 2026-01-13 12:55:59 +10:00
Stenzek
671751f980 Qt: Define Q_OBJECT for TextureReplacementSettingsDialog 2026-01-13 12:54:57 +10:00
bl@ck_m@ge
7d2377b98e GameDB: Max speedup cycles for Inuyasha and Monster, Inc. (#3679) 2026-01-12 20:48:36 +10:00
Stenzek
f9bf0cb128 Qt: Make 'Clear Settings' in Game Properties clear ini
Same as fullscreen UI.
2026-01-12 20:47:32 +10:00
Stenzek
08131302cd FullscreenUI: Reorder settings pages to match Qt
And add per-game post-processing.
2026-01-12 20:43:44 +10:00
Stenzek
a011b78d22 FullscreenUI: Fix per-game post processing settings 2026-01-12 20:43:35 +10:00
Stenzek
249f9d03f9 InputManager: Avoid redundant core thread invocation 2026-01-12 20:37:56 +10:00
Stenzek
896395b3ba FullscreenUI: Tweak message dialog widths 2026-01-12 20:37:41 +10:00
Stenzek
1431d5cf5b FullscreenUI: Use horizontal buttons for message dialogs
Unless it's a long string, then use vertical.

Also add icons to the dialogs.
2026-01-12 20:02:33 +10:00
Stenzek
f5ebe1cee2 FullscreenUI: Use horizontal buttons for resuming state 2026-01-12 19:59:41 +10:00
Stenzek
5637fc7804 ImGuiManager: Run idle when OSD messages are present
So we don't miss them.
2026-01-12 18:25:49 +10:00
Stenzek
56cbbb1323 InputManager: Don't display controller connected for initial 3 seconds
Avoids spamming the OSD when starting up.
2026-01-12 18:25:49 +10:00
Stenzek
5154ea9b18 Qt: Route status messages to OSD if fullscreen 2026-01-12 18:25:49 +10:00
Stenzek
82ab3e84a5 Host: Add ReportStatusMessage() 2026-01-12 18:25:49 +10:00
Stenzek
8f94a56ab2 System: Add GetProcessUptime() 2026-01-12 18:25:49 +10:00
Stenzek
a83ccdcd0e FullscreenUI: Fix focusing when pressing west face button 2026-01-12 17:14:49 +10:00
Stenzek
454d33272f FullscreenUI: Hook up L2/R2 to page up/down 2026-01-12 17:07:13 +10:00
Stenzek
d54de027cd FullscreenUI: Don't show ports in game settings by default 2026-01-12 16:45:00 +10:00
Stenzek
db46413df7 FullscreenUI: Use channels for background/highlight/foreground 2026-01-12 16:27:43 +10:00
Stenzek
bc2a2ba8d5 FullscreenUI: Fix background alpha for achievements user heading 2026-01-12 14:22:53 +10:00
Stenzek
9dcef869a3 FullscreenUI: Use appropriate icon for console settings 2026-01-12 14:22:53 +10:00
Stenzek
6c9277dbd2 FullscreenUI: Improve split window UX
- Fix sidebar scroll resetting after activation.
- Fix selection rectangle displaying on escape down.
- Improve padding and remove gaps.
2026-01-12 14:22:53 +10:00
Stenzek
c5ce2f999b dep/imgui: Add ImGuiChildFlags_NoNavCancel 2026-01-12 14:22:53 +10:00
Stenzek
d9fa8d1ed5 FullscreenUI: Use dummy for menu headings
No need to draw frames.
2026-01-12 14:22:52 +10:00
Stenzek
723fb02a76 Qt: Fix reshade shader icon in light themes 2026-01-12 14:22:52 +10:00
Stenzek
beaf01ccd6 Qt: Fix ReportFatalError() returning 2026-01-12 13:03:56 +10:00
Stenzek
a188633f6d FullscreenUI: Don't clear transition when preserving state 2026-01-12 13:03:46 +10:00
Stenzek
cb1e545f05 FullscreenUI: Wrap navigation in split windows 2026-01-12 13:03:27 +10:00
Stenzek
3952477d39 FullscreenUI: Use split window for controller settings
Much better than that massive scrolling list.
2026-01-11 19:43:00 +10:00
Stenzek
23e57f83fc FullscreenUI: Add 'Split Windows'
i.e. sidebar + content
2026-01-11 19:42:45 +10:00
Stenzek
cd688477a0 FullscreenUI: Settings changed fields don't need to be atomic 2026-01-11 17:24:34 +10:00
Stenzek
c126ee7d28 FullscreenUI: Fix EndFullscreenWindow() inside conditional 2026-01-11 13:34:45 +10:00
Stenzek
1ef7ce0d7f Qt: Don't open dialog on shift-click for effect bindings 2026-01-10 16:34:18 +10:00
Stenzek
e0f97a8a00 CompressHelpers: Fix incorrect function call 2026-01-10 15:29:27 +10:00
Stenzek
b287f00235 ZipHelpers: Don't call zip_error_fini() on zip_get_error() object 2026-01-10 15:29:27 +10:00
Stenzek
a8776a3b22 DynamicHeapArray: Don't resize if size is the same 2026-01-10 15:29:27 +10:00
Stenzek
7d95949e87 README: Update deps list 2026-01-10 15:29:27 +10:00
Davide Pesavento
2afc6cf26e Qt: Fix initial state of output latency slider 2026-01-09 23:40:26 +11:00
Davide Pesavento
ad01f993c8 Qt: Polish sliders 2026-01-09 23:40:26 +11:00
Stenzek
0b3c2c3e05 Qt: Fix enable syncing of notification/indicator locations 2026-01-09 16:00:25 +10:00
Davide Pesavento
626d511218 Qt: Fix help text for a couple of OSD settings (#3677) 2026-01-09 12:55:26 +10:00
Stenzek
d908b923ef VideoPresenter: Textures should be uploaded before any draws 2026-01-08 22:19:58 +10:00
Stenzek
0c1cdd31e1 Qt: Fix notification/indicator location enable state 2026-01-08 21:33:06 +10:00
Stenzek
79f9bbe6af Qt: Hide size for directories in ISO browser
It was nonsensical since it was reporting the size of the directory
entry, which has no correlation with the size of the files in the
directory.
2026-01-08 20:09:23 +10:00
Stenzek
bb8179f617 ImGuiManager: Allow repositioning OSD messages 2026-01-08 20:05:30 +10:00
Stenzek
4e0c42100a Achievements: Allow changing position of overlays 2026-01-08 19:54:19 +10:00
Stenzek
212b0e6aed Qt: Display profile icon in achievement settings 2026-01-08 15:31:06 +10:00
Stenzek
f7e83492b9 Qt: Remove game info from settings
Doesn't belong here, and I need the space.
2026-01-08 15:13:41 +10:00
Stenzek
3dcb73f66f Deps: Cherry-pick SDL3 f369e80
Incredible that this silly broken DLL is still causing problems almost a
decade later.
2026-01-08 13:01:53 +10:00
Stenzek
11331eb6c3 Deps: Bump to SDL3 3.4.0 2026-01-08 12:55:30 +10:00
Stenzek
5b5b6bbf77 FullscreenUI: Avoid redundant transition 2026-01-07 14:23:04 +10:00
Stenzek
f989a80541 Qt: Fix initial state of debugger if opened while paused 2026-01-07 14:02:10 +10:00
Stenzek
54285978cf CPU: Add Host::ReportDebuggerEvent()
And replace the old ReportDebuggerMessage().

Fixes breakpoint hit counts not updating in UI.
2026-01-07 13:57:30 +10:00
Stenzek
74a8e6653d FullscreenUI: Fix incorrect state with per-game renderer setting 2026-01-07 13:17:03 +10:00
Stenzek
a2f3d038db dep/imgui: Update to 69a501d 2026-01-06 15:44:28 +10:00
Stenzek
ace6cd2da4 Qt: Use temporary game list entry for properties of playlists
Doesn't provide full functionality, but this is not a supported setup
and it's better than only making the first disc accessible.
2026-01-06 14:57:08 +10:00
Stenzek
bff1f473d6 CPU: Add cop0 breakpoint checks for coprocessor loadstores 2026-01-06 14:00:58 +10:00
Stenzek
b1d1c76289 CPU: Don't set cop bits on DBE 2026-01-06 14:00:58 +10:00
Stenzek
f9c2aeabbb CPU: Fix incorrect EPC after cop0 breakpoint 2026-01-06 13:48:59 +10:00
Stenzek
c02bcdcd9f Qt: Add link to wiki page for changing sounds 2026-01-06 13:48:59 +10:00
Stenzek
cd9e3ffb85 SoundEffectManager: Support converting float wave files too 2026-01-06 01:20:25 +10:00
Stenzek
4522449156 SoundEffectManager: Support converting bit depth 2026-01-06 00:51:04 +10:00
Stenzek
2e659d8cf8 CPU: Pack local state in struct 2026-01-05 18:35:24 +10:00
Stenzek
5a32d194b7 CPU: Fix cop0 breakpoints triggering too late 2026-01-05 18:31:13 +10:00
Stenzek
64d70753fc ImGuiManager: Use default icons when unspecified 2026-01-05 16:44:51 +10:00
Stenzek
6c09ba4944 Qt: Move time stretch settings into audio widget
Fewer popup windows.
2026-01-05 16:44:51 +10:00
Stenzek
f2adc39709 CoreAudioStream: Handle parameter changes without restarting 2026-01-05 16:29:06 +10:00
Stenzek
fa39e63bbb Achievements: Show leaderboard times as relative
With a tooltip showing the absolute time.
2026-01-05 13:40:15 +10:00
Stenzek
4ab3669af0 Qt: Set QT_NO_SIGNALS_SLOTS_KEYWORDS
This should have been on before.
2026-01-05 12:45:01 +10:00
Stenzek
9e0e07f029 FullscreenUI: Update idle state after transition finishes
Just in case the FSUI Active bit gets stuck on.
2026-01-05 12:44:57 +10:00
Daniel Nylander
283478a329 Updated Swedish translation (#3676)
* Updated Swedish translation

* Remove VRAM mention from Swedish translation

* Updated Swedish translation

* Updated Swedish translation

* Minor fixes
2026-01-05 12:35:10 +10:00
Anderson Cardoso
b805c431f9 Atualização Português do Brasil (#3675)
Atualizado para a última versão
2026-01-04 13:12:21 +10:00
Stenzek
5c53fba912 Qt: Fix Wayland workarounds not applying
Forcing XWayland is almost a better option than this garbage.
2026-01-03 21:14:57 +10:00
Stenzek
ae1bd270c7 Data: Update SDL game controller database 2026-01-03 13:12:10 +10:00
Davide Pesavento
43a405413b PlatformMisc: Fix screensaver inhibition on macOS (#3674) 2026-01-03 12:24:40 +10:00
Stenzek
632aa18df0 CPU: Don't raise #RI on write to read-only COP0 registers
Should be silently ignored instead apparently.
2026-01-02 20:35:46 +10:00
Stenzek
c015893571 CPU: Add COP0 register names to disassembly 2026-01-02 19:55:00 +10:00
Davide Pesavento
d7b2f2d5f7 README: Update minimum macOS version (#3673) 2026-01-02 18:59:51 +10:00
Stenzek
2258463d8a CDImagePPF: Implement parsing of undo data 2026-01-02 18:59:21 +10:00
Stenzek
65de509c8d Qt: Fix spurious WinId change error on debug widget close 2026-01-02 13:04:08 +10:00
Stenzek
0ad425f584 GameList: Fix reporting of 'Yesterday' on Jan 1st 2026-01-01 14:40:54 +10:00
Stenzek
45dd5001cd Qt: Restore disassembly register previews in debugger
Probably got lost when I added branch lines.
2025-12-31 20:41:30 +10:00
Stenzek
67bb75250b Cheats: Search local cheats/patches for multi-disc games
Was already done for archives, just not local files.
2025-12-31 20:15:13 +10:00
Stenzek
14625af98e Common: Remove fallback for missing heterogeneous lookup
Minspec has this now, and I don't need to worry about Debian 11 anymore.
2025-12-31 18:18:37 +10:00
Stenzek
0a9bf5aa00 StringUtil: Use to_chars() for floating point types 2025-12-31 18:18:37 +10:00
Stenzek
a584a5a5ae CI: Set MacOS deployment target to 13.3
Required for std::to_chars() with floating-point types.
2025-12-31 18:18:37 +10:00
Stenzek
f03bb5b255 Qt: Defer initial layout of game grid
Knocks ~200ms off the startup time.

For some reason, the pixelMetric() call was taking all the time...
2025-12-31 17:53:53 +10:00
Stenzek
170d4b9fb8 Build: Don't make fast_float a public link for libraries 2025-12-31 17:36:53 +10:00
Stenzek
d4c4ec566a CMake: Prefer private over public include dirs 2025-12-31 17:33:04 +10:00
Stenzek
4c79ee82ac CMake: Adjust fmt build macros
Set on the library, not globally.
2025-12-31 17:30:04 +10:00
Stenzek
84e4aed8a7 dep/fmt: Update to v12.1.0 2025-12-31 17:22:30 +10:00
Stenzek
091517a62e StringUtil: Move FromChars()ToChars() instantiation to source file
Knocks ~10% off compile time.
2025-12-31 16:45:00 +10:00
Stenzek
dea9ce3d68 StringUtil: Move most non-template functions to source file 2025-12-31 16:45:00 +10:00
Stenzek
a42df97716 StringUtil: Use C++20 requires clauses instead of enable_if 2025-12-31 16:45:00 +10:00
Stenzek
8db7cff9d7 InputManager: Remove hotkey list indirection
Should also fix GCC link errors in Release builds.
2025-12-31 16:45:00 +10:00
Stenzek
604b7ce73f Misc: Fix building with GCC
Not that anyone should be doing it.
2025-12-31 16:21:04 +10:00
Stenzek
a725890dee Achievements: Add easing to progress indicators 2025-12-31 14:53:56 +10:00
Stenzek
3ff1ea33cf ImGuiManager: Extract out gradient rect function 2025-12-31 14:30:22 +10:00
Stenzek
83f5fdcab9 Qt: Order volume controls before audio backend configuration
Put the options that the user is more likely to change at the top.
2025-12-30 15:37:31 +10:00
Stenzek
f226581460 Qt: Include time stretch latency in displayed maximum 2025-12-30 15:37:12 +10:00
Stenzek
4b02270c79 Qt: Apply Wayland workarounds before creating QApplication 2025-12-30 15:23:24 +10:00
Stenzek
fb932eb598 FullscreenUI: Don't use SmallString for URL templates 2025-12-30 15:23:24 +10:00
Stenzek
1b9ef2c248 StringUtil: Backport helper functions 2025-12-30 15:23:24 +10:00
Davide Pesavento
bca82e1bb0 Achievements: Improve consistency of log messages (#3671) 2025-12-30 15:22:54 +10:00
Stenzek
3f1ab1cb8a SoundEffectManager: Upmix and resample sound effects when needed
Allows users to provide files at other sample rates/channels.
2025-12-29 20:59:37 +10:00
Stenzek
5cd5853435 Achievements: Add type badges to list and wrap long titles 2025-12-29 20:59:35 +10:00
Stenzek
02a36c78bd Qt: Prefer size from native OS over Qt
The latter is wrong when a resize fails.
2025-12-29 13:01:13 +10:00
Stenzek
c4ee79b52a CoreAudioStream: Ensure stream is destroyed before buffer
Fixes potential race during stream shutdown.
2025-12-28 22:04:54 +10:00
Stenzek
bfa70857e5 Qt: Fix missing borders in separate render window
Regression from f07b726c67
2025-12-28 14:18:28 +10:00
Stenzek
fa23d16c3c Qt: Cache window handle for size updates
Apparently calling winId() during window resizes ends up with a bad
m_surface pointer inside the QWindowsWindow...

I don't feel like debugging Qt any further, so this will be sufficient.
Plus it's faster.
2025-12-28 13:46:11 +10:00
Davide Pesavento
a2d95a1ba5 FullscreenUI: Change a few icons 2025-12-27 23:51:53 +10:00
Davide Pesavento
6c46b0cfe8 Deps: Update FontAwesome to 7.1.0 2025-12-27 23:51:50 +10:00
Davide Pesavento
84ff881721 Deps: Remove version number from FontAwesome header
Reduces code churn on version bumps.
2025-12-27 23:42:26 +10:00
Stenzek
f07b726c67 Qt: Sync after creating widget on Linux
We want to avoid nested event loops as much as possible because it's problematic on MacOS.
I removed the sync/processEvents() here for this reason, except of course fucking Linux throws
a wrench in the plan. On Windows and MacOS, calling show() and showFullscreen() will send resize
events with the correct size before returning. On Linux with X11 and Wankland, it doesn't.

So we have to force a processEvents() here to ensure the display widget is the correct size,
otherwise we'll see a glitched frame at the windowed size when starting fullscreen. Linux is
the odd one out again, as usual. Note: QGuiApplication::sync() is supposed to pump events
before and after syncing, but it seems this alone is not sufficient for getting the resize.
2025-12-27 23:35:47 +10:00
Stenzek
a4657fbcbb Qt: Catch show events for resize too 2025-12-27 23:35:19 +10:00
Stenzek
570a7042a6 OpenGLContextAGL: Compile fix
Not built on CI, so didn't notice.
2025-12-27 23:34:57 +10:00
Stenzek
213d3efdf7 GPUDevice: Unload persistent libraries on shutdown 2025-12-27 23:02:55 +10:00
Stenzek
739b0734bc CodeCache: Don't try to handle page faults when shutting down 2025-12-27 23:00:02 +10:00
Stenzek
21abd24870 Deps: Ensure PDBs get generated for Qt plugins
Need to debug a crash in Qt...
2025-12-26 23:23:01 +10:00
Stenzek
c206bd6311 FullscreenUI: Fix incorrect icon for macro buttons 2025-12-26 16:20:23 +10:00
Stenzek
d2c8df97f9 FullscreenUI: Fix sound on mouse click for some popups
Should only play sound effect using keyboard/gamepad navigation.
2025-12-26 16:20:23 +10:00
Stenzek
9904c5fbb3 FullscreenUI: Fix macro pressure/deadzone dialogs 2025-12-26 16:20:23 +10:00
Stenzek
7c401777a8 Deps: Build Brotli
For woff2 font loading.
2025-12-26 16:20:23 +10:00
Stenzek
c20f8d1ec4 Deps: Version updates
libjpeg-turbo: 3.1.3
libpng: 1.6.53
zlib-ng: 2.3.2
ffmpeg: 8.0.1
2025-12-26 16:20:23 +10:00
Stenzek
ef2cf6e223 System: Fix missing subchannel not blocking startup
I only tested the escape hatch, not the intended path...
2025-12-26 02:09:06 +10:00
Stenzek
682a3b3eb9 FullscreenUI: Only delete sound stream on full shutdown
Not when changing renderers.
2025-12-26 01:57:17 +10:00
Stenzek
5933489456 ImGuiManager: Reduce possible false sharing when adding events 2025-12-26 01:57:15 +10:00
Stenzek
6146769d85 Settings: Restore a few missing defaults in Safe Mode 2025-12-26 01:57:07 +10:00
Víctor "IlDucci
e70ae0be06 Spanish (Spain) translation update 2025/12/25 (#3669)
- Translated the latest batch of strings.
- Minor additional tweaks.
2025-12-26 01:57:00 +10:00
Stenzek
e2aa1ae24c Qt: Fix handling of mouse double-click events
- Fixes double-click events with mouse binds getting dropped.
- Fixes early release event when toggling fullscreen.
2025-12-25 19:56:26 +10:00
Davide Pesavento
182075675d CI: Minimize workflow permissions 2025-12-25 17:29:46 +10:00
Davide Pesavento
9aaaf14e85 CI: Stricter yamllint config 2025-12-25 17:29:46 +10:00
Davide Pesavento
ff747dde38 CI: Use ubuntu-slim runner for lint jobs 2025-12-25 17:29:46 +10:00
Davide Pesavento
1bc30de66f CI: Update actions 2025-12-25 17:29:46 +10:00
Stenzek
25790d704b InputManager: Register for device notifications with XInput
I forgot that I apparently don't poll active controllers.

Fixes controller hotplugging with XInput.
2025-12-25 13:52:30 +10:00
Stenzek
31764738c6 InputSource: Remove before calling OnInputDeviceDisconnected()
Fixes background polling interval not decreasing after last device
disconnects.
2025-12-25 13:51:29 +10:00
Anderson Cardoso
3253cc5bed Atualização Português do Brasil (#3667)
Atualizado para a última versão.
2025-12-25 13:50:32 +10:00
Stenzek
4b9154b45d Hotkeys: Add hotkey to toggle texture modulation cropping 2025-12-24 02:00:06 +10:00
Stenzek
88ca6cf40a README: Add instructions for resource overrides 2025-12-24 01:51:45 +10:00
Stenzek
b55f4041bf GPU: Add option to crop vertex colours before modulation
aka "old" GPU.
2025-12-24 01:23:01 +10:00
Stenzek
ad0312ec82 Settings: Free up space in GPUSettings struct 2025-12-24 00:16:44 +10:00
Stenzek
56d79c76a7 GPU: Extract heavier helper functions to own header 2025-12-23 20:00:58 +10:00
Stenzek
095fef524d GPUDevice: Extract enums to own file
Further reduction of indirect includes.
2025-12-23 19:52:33 +10:00
Stenzek
9370642434 Deps: Update rcheevos to v12.2.0 2025-12-23 19:34:29 +10:00
Stenzek
7bc32cdfa2 VulkanDevice: Swap EXT for KHR in structure type
No net difference.
2025-12-23 18:27:01 +10:00
Stenzek
822d756538 CubebAudioStream: Add missing layout mapping
Not actually used in DuckStation but one fewer patch I have to maintain.
2025-12-23 18:24:21 +10:00
Stenzek
9bcf23fa9b GameDB: Set PGXP-CPU for Vagrant Story
Fixes jitter in attack outline.
2025-12-23 18:24:05 +10:00
Stenzek
a1aa038623 VulkanDevice: Use KHR variants of surface/swapchain maintenance
AMD doesn't support the EXT variant.
2025-12-23 16:43:21 +10:00
Stenzek
41a000c0f1 Deps: Update Vulkan-Headers to v1.4.337 2025-12-23 16:36:17 +10:00
Stenzek
69458bd90b VulkanDevice: Persist instance throughout launches
Testing with AMD on Windows and LLVMPipe on Linux, creating and
destroying a Vulkan instance appears to leak around 20-30MB of memory.

Just keep the thing around for the whole time. Reduces startup time too,
so everyone wins. Unless you're switching renderers all the time, then
you lose a bit of memory.
2025-12-23 16:22:33 +10:00
Stenzek
e13b9a0c17 WindowInfo: Extract type into global namespace 2025-12-23 16:10:45 +10:00
Stenzek
f4c752a99f Qt: Extract window info functions to own file
More include reduction.
2025-12-23 16:10:45 +10:00
Stenzek
5b789be901 GPUDevice: Extract texture format to global namespace
Avoid pulling in gpu_texture.h and indirect includes just for this.
2025-12-23 16:10:45 +10:00
Stenzek
c3415c4891 VulkanDevice: Rearrange fields for locality 2025-12-23 12:50:16 +10:00
Stenzek
5a7acfe730 Qt: Populate graphics adapters asynchronously
More time saved when opening the settings window.
2025-12-23 01:52:06 +10:00
Stenzek
fbdd2689b1 Qt: Populate audio devices asynchronously
Save another 40-60ms when opening the window on my system. That's a few
frames at least!
2025-12-23 01:52:06 +10:00
Stenzek
edd3df899a Qt: Fix noreturn warning in Host::ReportFatalError() 2025-12-23 01:52:06 +10:00
Stenzek
a494477225 SoundEffectManager: Add caching and async reading 2025-12-23 01:52:05 +10:00
Stenzek
c7c29d4141 WAVReader: Add in-memory parsing 2025-12-23 01:52:05 +10:00
Stenzek
b8e93855fe WAVReader: Fix reading into non-data chunks after data 2025-12-23 01:52:05 +10:00
Stenzek
3fe319df51 FullscreenUI: Add navigation sound effects 2025-12-23 01:52:05 +10:00
Stenzek
0897dfcc94 Data: Add navigation sound effects 2025-12-23 01:52:05 +10:00
Stenzek
b1d5c42a13 PlatformMisc: Remove PlaySoundAsync()
No longer needed.
2025-12-23 01:52:05 +10:00
Stenzek
7a85841511 Achievements: Use SoundEffectManager instead of PlaySoundAsync()
Much less jank.
2025-12-23 01:52:05 +10:00
Stenzek
8a7dd1612b SoundEffectManager: Add system for playing short sound effects 2025-12-23 01:52:05 +10:00
Stenzek
cf103e9979 Core: Set correct log channel 2025-12-23 01:52:05 +10:00
Stenzek
c0277db4cf WAVReader: Make ReadFrames() return optional
That way the caller can detect EOF.
2025-12-23 01:52:05 +10:00
Stenzek
132ca44f05 CubebAudioStream: Use a single shared context
Will be needed shortly.
2025-12-23 01:52:05 +10:00
Stenzek
02384ac2aa AudioStream: Move all streams to same log channel 2025-12-23 00:51:06 +10:00
Stenzek
abcaceeb80 AudioStream: Split into source and backend streams 2025-12-23 00:18:07 +10:00
Stenzek
471fba1445 FullscreenUI: Fix stack use-after-free 2025-12-23 00:18:06 +10:00
Stenzek
2935a3d71b Common: Add additional ryml helpers 2025-12-21 16:14:20 +10:00
Stenzek
d7c015aefb MSBuild: Fix non-reproducible path sneaking into binary 2025-12-21 14:00:42 +10:00
Stenzek
22d8b6dc8c GPUBackend: Fix infinite loop on state allocation failure 2025-12-21 13:59:17 +10:00
Stenzek
461aaeda4d ProgressCallback: Add message logging 2025-12-21 01:35:46 +10:00
Stenzek
bfb9ba1c6d Qt: Backport noreturn ReportFatalError() 2025-12-20 23:56:21 +10:00
Stenzek
f4ff36b565 Host: Move async tasks to host namespace
So we can use proper QThreads for them to avoid lazy-creating the Qt
per-thread data.
2025-12-20 23:56:21 +10:00
Stenzek
57adcddc29 Host: Rename CPUThread/EmuThread to CoreThread 2025-12-20 23:56:20 +10:00
Stenzek
a43e05472a Host: Split into multiple files
Translation, actual host, and core for settings management.
2025-12-20 23:50:26 +10:00
Stenzek
26b8fe0d5b MSBuild: Remove _CRT_INTERNAL_NONSTDC_NAMES
Doesn't seem to be needed anymore.
2025-12-20 21:58:21 +10:00
Stenzek
4c97badb07 CMake: Fix Windows build
But you shouldn't be using it.
2025-12-20 21:58:21 +10:00
Stenzek
4810b1c7da Log: Fix empty output with only main window logs enabled 2025-12-20 17:57:02 +10:00
Stenzek
52bd6e7495 Qt: Clamp max upscale multiplier to 32x
Turns out Mali of all GPUs can do 64k x 64k textures.

Of course this is completely impractical as such a texture would use
16GB of memory.
2025-12-20 16:23:29 +10:00
Stenzek
63d352bb03 Misc: Fix move of constant values 2025-12-20 16:23:29 +10:00
Stenzek
b6cd37c6a4 Qt: Add option to show log in main window
When using render to separate window. Makes the main window actually
useful.
2025-12-20 16:06:08 +10:00
Stenzek
962137fcdf Qt: Move some settings around
Need the extra space.
2025-12-20 16:06:08 +10:00
Stenzek
0aff70237d Qt: Reduce indirect includes in mainwindow.h 2025-12-20 14:53:52 +10:00
Stenzek
a7637c5b50 Qt: Split log window into LogWidget and LogWindow
So it can be embedded.
2025-12-20 14:35:40 +10:00
Stenzek
854edd5d39 Achievements: Save/restore state on setting changes
Preserve hardcore mode, wait for load to complete to avoid potentially
missing trigger hits.
2025-12-20 12:48:41 +10:00
Stenzek
ea8d7b015c VulkanDevice: Only enable KHR_maintenance5 with dynamic rendering
Required by spec. Only really gets hit by the
disable-on-broken-mobile-driver path.
2025-12-20 12:33:13 +10:00
Davide Pesavento
b8c8941496 GameDB: Add sort title to FF7 and FF8 demo discs 2025-12-20 12:32:04 +10:00
Davide Pesavento
7d31ab9f16 GameDB: Fix typo in FF7's sort title 2025-12-20 12:32:04 +10:00
Windsurf7
1c06b685c5 GameDB: add missing compatibility entry for original release of A Bug’s Life (#3664)
The compatibility entry for the non-revision original release was missing. This PR adds it.
2025-12-20 12:31:34 +10:00
Stenzek
d5dc9fb568 FullscreenUI: Fix bg load after close->reopen 2025-12-18 01:29:27 +10:00
Stenzek
97128838cf ProgressCallback: Add a variant with alert/confirm
And implement it in both Qt and FullscreenUI.
2025-12-18 01:28:56 +10:00
Stenzek
822024dda5 Qt: Fix empty text box after image verification 2025-12-17 18:50:12 +10:00
Stenzek
51986e763d InputManager: Fix some low-risk races during reload 2025-12-17 13:51:57 +10:00
Stenzek
0af8b74773 InputManager: Move device notification from main window
Can use the new CM_Register_Notification() function since we don't have
to care about Windows 7.

Hopefully should stop a very rare race between window destruction and
device unplugging. Also gets the Windows-specific stuff out of
MainWindow which is nice.
2025-12-17 13:31:12 +10:00
Stenzek
a72d21f7ae Win32RawInputSource: Support device hotplugging 2025-12-17 13:31:08 +10:00
bl@ck_m@ge
9857835142 GameDB: Add mouse support for compatible games (#3662)
* GameDB: Add mouse support for compatible games

* fix trailing spaces for one entry
2025-12-17 13:03:32 +10:00
mariobob
bc72d58fd9 Achievements: Preserve hardcore mode when toggling encore/spectator/unofficial settings (#3661) 2025-12-17 13:02:36 +10:00
Stenzek
93f62c4292 CI: Fix cache key in upload caches workflow 2025-12-17 12:08:44 +10:00
Stenzek
6062f5e2f8 Qt: Use same changed colour in memory scanner as view
More readable.
2025-12-17 01:36:09 +10:00
Stenzek
89946ccad5 Qt: Provide theme icons for most used Qt StandardIcons
Fixes the file selector looking like total ass on Linux, with dark
coloured icons on a dark background.
2025-12-17 01:36:09 +10:00
Stenzek
b8b576e158 Qt: Override application font on Linux
Default fonts are ugly and too large.
2025-12-17 01:36:09 +10:00
Stenzek
6521355343 CMake: Don't copy desktop file to resources
No longer needed as of d5037f1242.
2025-12-17 01:36:09 +10:00
Stenzek
fe8d2e0329 VulkanDevice: Set rasterization order attachment access bit on blend state 2025-12-17 01:36:09 +10:00
Stenzek
7a539ba693 GPUDevice: Reduce GraphicsConfig struct size 2025-12-17 01:36:09 +10:00
Stenzek
b10eba419a VulkanDevice: Disable fbfetch on LLVMpipe
Rendering behaviour with llvmpipe + fbfetch is very strange, it fails
to read push constants sometimes??

Driver bug?
2025-12-17 01:36:09 +10:00
Stenzek
1ccd7508a8 CMake: Avoid using system zlib outside of MacOS 2025-12-17 01:36:06 +10:00
Stenzek
b3caf07a40 Qt: Make enhanced controllers reports option more clear 2025-12-15 19:20:02 +10:00
Stenzek
547b76fe1b SDLInputSource: Use auto mode for enhanced reports
Less chance of breaking other applications unless rumble actually goes
through.
2025-12-15 19:09:50 +10:00
Stenzek
a777466c51 Qt: Invalidate covers when all titles are invalidated 2025-12-15 19:02:36 +10:00
Stenzek
f52a5afcb8 System: Fix fullscreen state persisting between games
This was not intentional.
2025-12-14 20:48:19 +10:00
Stenzek
708e3b8694 Achievements: Use rc_client_create_subset_list() 2025-12-14 20:42:18 +10:00
Stenzek
cda367d211 Achievements: Use badge_url for downloads 2025-12-14 20:42:18 +10:00
Stenzek
f99601e3d0 dep/rcheevos: Bump to b77013b 2025-12-14 20:42:17 +10:00
Stenzek
86ba9ea3af ImGuiManager: Add colour gradient to OSD messages 2025-12-14 20:42:17 +10:00
Stenzek
900d06c32c FullscreenUI: Fix inconsistent notification colour gradient 2025-12-14 20:42:17 +10:00
mariobob
1ee0f73df8 Achievements: Use rc_client API for fetching game titles (#3658)
* dep/rcheevos: Bump to 7fb4300

* Achievements: Use rc_client API for fetching game titles
2025-12-14 20:12:24 +10:00
Stenzek
2498e66a6e MetalDevice: Fix compile warnings 2025-12-14 19:21:28 +10:00
Stenzek
37d7cd46c5 Common: Silence deprecation warnings on MacOS 2025-12-14 19:21:20 +10:00
Stenzek
351e787681 Common: Fix a bunch of errors in ARM vector wrapper
ARM64 passes now at least.
2025-12-14 19:20:20 +10:00
Stenzek
3fc563e5a3 Qt: Invalidate tooltips for title changes as well
Probably unnecessary since I don't think it's cached.
2025-12-14 12:22:10 +10:00
Stenzek
7cf6e04257 GPU/HW: Chunk skewed+overlapping copies
Can't see any retail games that do this from a quick check..
2025-12-14 02:25:24 +10:00
Stenzek
c6a44ff569 GPU: Add "Fine Crop" settings
Allows the image to be cropped while preserving output aspect ratio.
2025-12-14 01:17:21 +10:00
Stenzek
986e66b517 GPU: Use vectors in draw rect calculation 2025-12-14 01:17:21 +10:00
Stenzek
97582bcfec GPU: Use vectors/rects for presentation 2025-12-14 01:17:21 +10:00
Stenzek
69784d10a3 GPU: Move draw helper functions to cpp file
No derived classes that need this inlined anymore.
2025-12-14 01:17:21 +10:00
Stenzek
ed531da03b Qt: Move wireframe rendering to debug tab
Free up space in advanced.
2025-12-14 01:17:21 +10:00
Stenzek
9eaf58613a Qt: Simplify cover and icon invalidation
Get rid of multiple functions for doing the same thing, sync Big Picture
and Qt UIs.
2025-12-14 01:17:20 +10:00
Stenzek
c9177bc398 Common: Add vector rectangle helper functions 2025-12-14 01:17:20 +10:00
Stenzek
e06d880257 MSBuild: Set -Wno-invalid-offsetof
Same as CMake.
2025-12-14 00:36:39 +10:00
Stenzek
9ba0bb9a32 MSBuild: Only remove source paths in ReleaseLTCG
Don't want to hurt debugability.
2025-12-14 00:36:39 +10:00
Stenzek
4c384842ce Qt: Failed to retrieve update change list is not fatal 2025-12-14 00:36:39 +10:00
Anderson Cardoso
f248c1cd74 Atualização Português do Brasil (#3659)
Atualizado para a última versão.
2025-12-14 00:36:12 +10:00
Daniel Nylander
9790c1b8ad Updated Swedish translation (#3660)
* Updated Swedish translation

* Remove VRAM mention from Swedish translation

* Updated Swedish translation
2025-12-14 00:36:01 +10:00
Stenzek
95a196144c Build: Fix RC version field
It broke once the commit count passed 10,000.
2025-12-09 23:21:33 +10:00
Stenzek
dbd8288e96 Common: Fix implicit conversions in ARM vector wrapper 2025-12-09 23:21:22 +10:00
Stenzek
d1f2b80fbe Data: Update game controller database 2025-12-09 22:43:17 +10:00
Stenzek
bde06fe786 Settings: Disable wireframe+downsample in Safe Mode
Apparently I forgot these.
2025-12-09 22:41:45 +10:00
Stenzek
0e0e82d122 ImGuiManager: Apply same change to OSD messages 2025-12-09 22:41:44 +10:00
Stenzek
e9767ba349 FullscreenUI: Tweak achievement notification animation
Make colour gradient more obvious. Animate position instead of size
(less jarring).
2025-12-09 22:41:42 +10:00
Stenzek
43074cfe52 FullscreenUI: Slightly improve achievement notifications
Add more spacing between title and points. Allow note to overlap with
description in horizontal size.
2025-12-09 22:41:38 +10:00
Stenzek
6e5291d8fc Qt: Update English plural strings 2025-12-08 02:06:10 +10:00
Stenzek
6070bff9f6 dep/rcheevos: Bump to 9aa1352 2025-12-07 19:10:36 +10:00
Stenzek
de01bf704e FullscreenUI: Remember the last-opened achievement subset 2025-12-07 18:57:41 +10:00
Stenzek
4da93d7e19 FullscreenUI: Set scrollbar rounding 2025-12-07 18:57:32 +10:00
Stenzek
ac0a299884 FullscreenUI: Add achievement subset selection 2025-12-07 18:57:31 +10:00
Stenzek
75380e7859 FullscreenUI: Improve styling consistency between achievements/leaderboards 2025-12-07 18:31:26 +10:00
Stenzek
7214ec0b8b FullscreenUI: Improve leaderboard display
Finally somewhat satisfied with it. The old layout always bothered me.
2025-12-07 18:31:26 +10:00
Stenzek
56d8750f41 FullscreenUI: Add floating nav bar widgets 2025-12-07 18:31:26 +10:00
Stenzek
e2fc40c407 FullscreenUI: Fix infinite loading at end of leaderboard 2025-12-07 17:32:32 +10:00
Davide Pesavento
4b82191502 Qt: Fix use-after-free in edit/remove cheat (#3657) 2025-12-06 19:15:21 +10:00
Stenzek
d9f8302292 Qt: Increase idle polling interval
Use less power.
2025-12-06 16:15:14 +10:00
Stenzek
f7ca150c79 InputManager: Fix possible use-after-free on source reload 2025-12-06 16:15:14 +10:00
Stenzek
ea4933abe5 Achievements: Add progress to progress database refresh
That way there's some indication in the UI that the operation is
happening.
2025-12-06 16:15:14 +10:00
Stenzek
42c872efff FullscreenUI: Add achievement game icon download 2025-12-06 16:15:14 +10:00
Stenzek
3867c848b0 Qt: Allow cancelling icon downloads 2025-12-06 16:15:14 +10:00
Stenzek
1541200903 Qt: Name consistency improvements 2025-12-06 16:15:11 +10:00
Stenzek
a870f62709 Achievements: Use main HTTP for badge downloads 2025-12-06 14:13:29 +10:00
Stenzek
972dcd7920 Achievements: Tidy up badge downloader 2025-12-06 13:57:39 +10:00
mariobob
5b91141f09 GameList: Add option to download all game icons (#3655)
* GameList: Add option to download all game icons

* Fix translation support in status text calls

* Parallelize downloading game icons
2025-12-06 13:27:45 +10:00
Davide Pesavento
9b31d8b571 GameDB: Adjust cropping in a number of titles (part 2) (#3656)
* GameDB: Adjust cropping in a number of titles

Namely:
 - Metal Gear Solid
 - Parasite Eve 1 & 2
 - Resident Evil 3
 - Star Ocean
 - Tales of Destiny II
 - Tenchu 1 & 2
 - Vagrant Story
 - Valkyrie Profile

* GameDB: Disable auto analog for Xenogears
2025-12-06 12:47:43 +10:00
bl@ck_m@ge
0eaf1dd228 GameDB: Add various fixes for some games (#3654)
* GameDB: Add various fixes for some games

* Disable analog controller support for Dance Europe (compatible only with Digital)

* Disable texture filtering for Star Wars - Dark Forces

* Disable auto analog for some Wrestling titles

* Disable auto analog for Japanese DDR games
2025-12-06 12:39:36 +10:00
Stenzek
27802bf450 Deps: Set PKG_CONFIG_PATH when building 2025-12-05 20:42:56 +10:00
Stenzek
1d28a4b385 Deps: Disable GTK when building Qt
Why did I have this enabled...
2025-12-05 17:52:54 +10:00
Stenzek
801114f4cf Deps: Bump SDL3 to 3.2.28 2025-12-05 17:52:54 +10:00
Stenzek
5650880f90 Deps: Set QT_PREFIX_PATH for Qt on Linux 2025-12-05 17:52:54 +10:00
Stenzek
760b7b4740 CI: Revert hardcoded Mac cache key
Upstream issue has been resolved (at least for now).
2025-12-03 20:49:12 +10:00
Stenzek
241f720cb8 FullscreenUI: Avoid png/svg name clash for disc icon 2025-12-03 20:49:11 +10:00
Stenzek
941b62e938 FullscreenUI: Slight tweak to font weights
Improves readability on low-dpi displays.
2025-12-03 20:49:11 +10:00
Stenzek
9a8d9d7104 Hotkeys: Fix rotation hotkeys not having any effect 2025-12-03 20:49:11 +10:00
Stenzek
b4b05ed07a README: Remove non-functional link
Been paying hundreds of dollars for hosting for the last few years, and
with no immediate plans to push a new Android release, it does not make
sense for me to keep paying for it, especially since I make $0 off
DuckStation.

(it's been non-functional for a few weeks, apparently it took until now
for someone else to notice, which kinda shows how little use it was
getting)

If there's significant demand, then I may re-consider.
2025-12-03 20:49:11 +10:00
Stenzek
e92fb99a10 Qt: Update padtest URL 2025-12-03 20:49:11 +10:00
Davide Pesavento
b42f26fbac SDLInputSource: Log the joystick GUID as well (#3653) 2025-12-03 15:07:48 +10:00
Stenzek
60dbc5ad3d Qt: Remove unused block_until_done parameter
Recipe for deadlocks.
2025-12-02 20:06:56 +10:00
Stenzek
84aa425620 Qt: Move lock in ConfirmMessageAsync() 2025-12-02 20:05:30 +10:00
Stenzek
42c26cf919 Qt: Use ShowOrRaiseWindow() for main window 2025-12-02 20:05:14 +10:00
Stenzek
0172f220ed GPU/HW: Draw small fill sprites with software if TC is enabled
Wild Arms 2 clears out the sprite area of VRAM, then uploads new
sprites. The clears were not counting as fills before, because
they did not meet the page threshold.

It's not worth risking treating all untextured sprite draws as
clears, so instead just draw it with software as well to ensure
the local copy of VRAM is cleared.
2025-12-02 20:02:31 +10:00
Stenzek
af29ce010e Achievements: Show points for most recent unlock 2025-12-01 19:54:57 +10:00
Stenzek
c5c5a80414 Achievements: Fix challenge badge display in pause menu 2025-12-01 19:40:42 +10:00
Stenzek
3e32deebfc Qt: Fix power off system hotkey when fullscreen 2025-12-01 15:19:08 +10:00
Stenzek
ceb199b18d System: Add missing game list lock 2025-12-01 13:56:52 +10:00
Stenzek
8e3a65c152 MemoryCard: Show game icon when saving 2025-12-01 02:05:46 +10:00
Stenzek
7970287d69 GameList: Fix memcard icon extraction for non-database games
Also fix "Edit Memory Cards" menu option.
2025-12-01 00:35:17 +10:00
Daniel Nylander
1bf7431b89 Updated Swedish translation (#3648)
* Updated Swedish translation

* Remove VRAM mention from Swedish translation
2025-11-30 23:57:18 +10:00
Stenzek
11a0abaa83 Qt: Improve widget device pixel ratio detection
Fixes forced integer scaling when running under Wayland.

Why on earth QScreen is giving integer DPRs is beyond me. But my
reasoning for pulling the DPR from here dates back to 2020, so it
was probably a Qt5 thing.
2025-11-30 23:56:31 +10:00
Stenzek
df75127fc8 Qt: Disable AA_DontCreateNativeWidgetSiblings hack on KDE
Seems this is no longer needed... but it still breaks on GNOME,
because of course...

Almost at the point of just forcing XWayland on everything except KDE.
2025-11-30 23:56:16 +10:00
Stenzek
843558a16c Qt: Don't create wasteful display container on KDE
Still needed on GNOME because it's fucking stupid and they refuse to
support server-side decorations, with no signs this will ever change.
2025-11-30 21:44:55 +10:00
Stenzek
521eee42b3 Qt: Remove unnecessary application syncs
Wayland seems fine with this now.
2025-11-30 21:14:26 +10:00
Stenzek
621649748a Qt: Disable window rounded corners is only needed on Win32 2025-11-30 21:13:53 +10:00
Stenzek
259cd846a4 Qt: Use fine-grained cover invalidate in downloader 2025-11-30 21:00:26 +10:00
Stenzek
1fccee229b Qt: Use QtAsyncTaskWithProgress for cover downloader 2025-11-30 19:05:18 +10:00
Stenzek
d1d9008ffe Qt: Add QtAsyncTaskWithProgress 2025-11-30 19:05:00 +10:00
Stenzek
f3e0fe90d9 Qt: Rename QtAsyncTaskWithProgress to QtAsyncTaskWithProgressDialog 2025-11-30 17:29:34 +10:00
Stenzek
547d3495ed HTTPDownloaderCurl: Fix crash in worker thread 2025-11-30 17:29:24 +10:00
Stenzek
682d0075bd Achievements: Add missing lock in OnSystemDestroyed() 2025-11-30 16:35:44 +10:00
Stenzek
8cfbaca0e1 Achievements: Don't enable HC mode on reset without game 2025-11-30 16:28:47 +10:00
Stenzek
5859f0dbfd Achievements: Don't try to enable HC mode when starting without disc 2025-11-30 16:18:27 +10:00
Stenzek
1706dac0f0 System: Fix possible deadlock when starting
HC mode + debug windows enabled
2025-11-30 16:16:02 +10:00
Stenzek
177afb2aff Achievements: Executable read error should not show when starting BIOS 2025-11-30 16:14:15 +10:00
Stenzek
c3b1859f45 HTTPDownloaderCurl: Use INT_MAX timeout
Don't wake up for no reason.
2025-11-30 15:52:37 +10:00
Davide Pesavento
e1ca130fd4 GameDB: Set DisableFastForwardMemoryCardAccess for Lunar 2025-11-30 14:57:39 +10:00
Davide Pesavento
577f74a7fd GameDB: Increase cdromMaxReadSpeedupCycles for Dino Crisis 2 2025-11-30 14:57:39 +10:00
Davide Pesavento
51524d7259 GameDB: Adjust cropping in a number of titles
Namely:
 - Arc the Lad III
 - Breath of Fire IV
 - Dino Crisis 1 & 2
 - Dragon Warrior VII
 - Echo Night
 - Front Mission 3
 - Galerians
 - Koudelka
 - Lunar 1 & 2
2025-11-30 14:57:39 +10:00
Stenzek
521a23f5c3 Qt: Make disc select dialog window-modal 2025-11-30 14:54:55 +10:00
Stenzek
4a445a051d Qt: Disable Game Properties for PSF/GPUDump 2025-11-30 14:54:34 +10:00
Stenzek
6f80a199f1 Qt: Pack main window local state in struct 2025-11-30 14:42:30 +10:00
Stenzek
ed71c45da4 Qt: Simplify updateEmulationActions() and updateShortcutActions() 2025-11-30 14:39:42 +10:00
Stenzek
d612f8eea8 Qt: Support populating game list entry at runtime
Re-enables support for modifying cheats when running direct from disc.
2025-11-30 14:25:37 +10:00
Stenzek
d8a92f7c97 Qt: Fix styling of checked push buttons 2025-11-30 13:11:20 +10:00
Davide Pesavento
7a929b1d41 Qt: Allow copying the version string from interface settings 2025-11-30 13:01:46 +10:00
Davide Pesavento
9fa42e2f61 Qt: Add close button to "About" dialog
And fix title font size on macOS.
2025-11-30 13:01:46 +10:00
Davide Pesavento
d106639619 Qt: Reload game settings after reset to default (#3651) 2025-11-30 13:00:42 +10:00
Anderson Cardoso
e3dfc85562 Atualização Português do Brasil (#3649)
Atualizado para a última versão.
2025-11-30 13:00:13 +10:00
bl@ck_m@ge
9aeb6ee798 GameDB: Max speedup cycles and other fixes for some games (#3647)
* GameDB: Max speed up cycles and other fixes for some games

* GameDB: Fix metadata for one entry

* Fix string length under settings for SLUS-00872
2025-11-30 12:59:19 +10:00
Stenzek
b723a8852d GPU: Update CRTC configuration on line offset change
Fixes offsets not applying immediately in interlaced modes that do not
flip buffers.
2025-11-30 12:57:39 +10:00
Stenzek
65e890f7f4 Qt: Fix incorrect use of toggled signal
Fixes frame stepping, probably others.

Regression from 9ee1b02cd7.
2025-11-30 12:50:34 +10:00
Stenzek
de36fefad4 GPU: Re-add missing AR correction
Regression from 2b26690565.
2025-11-29 18:27:29 +10:00
Stenzek
e0a0745839 Qt: Fix devbuild check 2025-11-29 18:27:19 +10:00
Stenzek
db9a9e7624 Qt: Add indication that update check is in progress
Only for manually initiated update checks as feedback for the action
triggering.
2025-11-29 16:31:33 +10:00
Stenzek
fe8b8f04a7 HTTPDownloader: Remove unused default user agent 2025-11-29 16:19:04 +10:00
Stenzek
a1162731a0 HTTPDownloader: Remove InternalPollRequests()
CURL uses a worker thread now, so it's no longer needed.
2025-11-29 16:19:04 +10:00
Stenzek
e2b3f65134 HTTPDownloaderCurl: Use worker thread for processing
Should significantly speed up update downloads.
2025-11-29 16:19:04 +10:00
Stenzek
d6f7084309 HTTPDownloader: Use release-acquire ordering for request state 2025-11-29 16:19:04 +10:00
Stenzek
a171c25fb2 PostProcessing/Slang: Handle option names containing "//" 2025-11-29 16:19:03 +10:00
Stenzek
e71a022ad4 Qt: Fix crash on updater exit 2025-11-29 14:38:32 +10:00
Stenzek
3d27de7835 Qt: Fix inverted fullscreen condition 2025-11-29 13:38:24 +10:00
Stenzek
480d002324 Log: Only include function names for warn/error
Regressed when I redid the macros.
2025-11-29 13:11:21 +10:00
Stenzek
03c2ec2cad OpenGLDevice: Fix creation on MacOS
Only for debugging, CI builds have GL disabled.
2025-11-29 13:11:21 +10:00
Stenzek
8bc3f04be5 Qt: Try to work out the "real" display scale on MacOS
Avoids the rendering at 2x and downsampling at fractional DPI scale.
2025-11-29 13:11:21 +10:00
Stenzek
9ee1b02cd7 Qt: Remove a bunch of unnecessary QSignalBlockers
QAction::setChecked() does not invoke triggered().
2025-11-29 12:59:18 +10:00
Stenzek
f069570b3c Qt: Show update dialog after fullscreen exit completes
Use the new completion handlers.
2025-11-29 12:59:18 +10:00
Stenzek
a5755d12f1 Qt: Get rid of multiple sources of truth for fullscreen
Only has UI and CPU thread "views" now.
2025-11-29 12:59:18 +10:00
Stenzek
b13207a02f Qt: Remove unused fields 2025-11-28 23:57:56 +10:00
Stenzek
3c00c4d273 Qt: Remove main window surfaceless hackery 2025-11-28 23:57:56 +10:00
Stenzek
33b532d10b Qt: Remove unused focusDisplayWidget() 2025-11-28 21:43:52 +10:00
Stenzek
c91446c603 Qt: Remove unused cover downloader signal 2025-11-28 21:02:24 +10:00
Stenzek
cc6428645a Qt: Remove unsafe EmuThread isFullscreen() from UI thread 2025-11-28 21:00:24 +10:00
Stenzek
97c9daf1b9 Qt: Remove unused EmuThread::SystemLock 2025-11-28 20:58:03 +10:00
Stenzek
0c6cbf82d9 Qt: Remove redundant grid layout in updater 2025-11-28 20:57:49 +10:00
Stenzek
58cb4f2e37 FullscreenUI: Update loading/notification run idle on shutdown
Stops us from ending up in a state where we're always running idle when
paused, because a previous notification was blown away by shutdown.
2025-11-28 16:52:41 +10:00
bl@ck_m@ge
9fb1172a8b GameDB: Disable auto analog for some titles (#3645) 2025-11-28 16:47:39 +10:00
Stenzek
9d61e8c4e8 Qt: Do blocking game list refresh with autoboot without batch
Still need the entries.
2025-11-28 16:46:57 +10:00
Stenzek
e026117269 Qt: Make auto updater window-modal 2025-11-28 16:23:41 +10:00
Stenzek
1ba3efae7c Qt: Better layout for updater window 2025-11-28 15:57:38 +10:00
Stenzek
243a8afe97 Qt: Simplify updater configuration and process 2025-11-28 15:57:38 +10:00
Stenzek
f6bfb739f4 Qt: Remove QtModalProgressCallback
No longer needed.
2025-11-28 14:40:05 +10:00
Stenzek
8fcdf1049e Qt: Get rid of nested event loop in updater 2025-11-28 14:24:50 +10:00
Stenzek
676165282b Qt: Remove QtAsyncProgressThread
Merged into CoverDownloaderThread.
2025-11-28 14:24:50 +10:00
Stenzek
2b26690565 GPU: Simplify PAR calculation
Also fixes difference in aspect ratio with force 4:3 option and stretch.
2025-11-28 14:24:02 +10:00
Stenzek
4cbd01d033 Qt: Get rid of nested event loops in achievement login 2025-11-28 14:13:43 +10:00
Stenzek
ee1defd43c Qt: Don't try to center on an invisible window 2025-11-28 14:13:43 +10:00
Stenzek
cbbfecc0ff HTTPDownloader: Set initial indeterminate state 2025-11-28 14:13:43 +10:00
Stenzek
5b1e0117c9 Qt: Compile warning fix 2025-11-28 11:54:48 +10:00
Stenzek
cc6bfeb976 Qt: Use QtAsyncTaskWithProgress for ISO Browser extraction 2025-11-27 18:29:48 +10:00
Stenzek
d8e1418f37 Qt: Use QtAsyncTaskWithProgress for padtest download 2025-11-27 18:29:48 +10:00
Stenzek
d1519aa097 Qt: Use QtAsyncTaskWithProgress for dump verification 2025-11-27 18:29:48 +10:00
Stenzek
3f882cf254 Qt: Add QtAsyncTaskWithProgress class
Async work item with a progress dialog that doesn't require a nested
event loop.
2025-11-27 18:29:48 +10:00
Stenzek
82a44b19bf ProgressCallback: Avoid unnecessary struct padding 2025-11-27 18:29:48 +10:00
Stenzek
4290f75951 ProgressCallback: Remove modal methods
Still required for the updater, but I've moved that to an
updater-specific class in the heirarchy.
2025-11-27 18:29:47 +10:00
Stenzek
548887449e Misc: Eliminate usage of modal progress callback functions
Too error-prone, nested event loops are nasty. Error pattern is better.
2025-11-27 18:29:12 +10:00
Davide Pesavento
48ec261043 Qt: Center game properties window too (#3644)
Missed it in 63f929e6f8
2025-11-27 18:08:51 +10:00
Stenzek
90ec75b4e4 Achievements: Don't display points badge for 0 points 2025-11-27 18:08:51 +10:00
Stenzek
5e2b32f33f Host: Remove blocking ConfirmMessage()
No longer needed.
2025-11-27 18:08:51 +10:00
Stenzek
7ce8959247 System: Use ConfirmMessageAsync() for SBI-less boot
No more nested event loops!
2025-11-27 17:48:31 +10:00
Stenzek
7b6fd224af System: Confirm HC disable on undo load state/reset
Again, no issue since it was unconditionally disabling, but this gives
the user the opportunity to cancel it.
2025-11-27 17:48:30 +10:00
Stenzek
08f357f0d7 System: Avoid load state message on HC disable confirm
It wasn't actually loading, so no issue, but could be confusing to a
user.
2025-11-27 17:48:30 +10:00
Stenzek
93f3be46f2 Achievements: Remove ConfirmHardcoreModeDisable
No longer needed.
2025-11-27 17:48:30 +10:00
Stenzek
249f8cf4a0 System: Always use async hardcore cancel on boot
No blocking event loops.
2025-11-27 17:48:30 +10:00
Stenzek
e142a321f2 CDImagePBP: Fix TOC misreporting for some images 2025-11-27 17:48:30 +10:00
bl@ck_m@ge
6369f38d65 GameDB: Disable read speedup for Gundam Battle Assault 2 (#3643) 2025-11-27 01:45:37 +10:00
Davide Pesavento
c00aac6463 GameDB: Increase cdromMaxReadSpeedupCycles for Alundra 2 (#3642) 2025-11-27 01:45:30 +10:00
Stenzek
5626fe09b3 Qt: Replace most blocking message boxes with async 2025-11-26 23:48:22 +10:00
Stenzek
459ee19298 Qt: Add QtUtils::AsyncMessageBox() 2025-11-26 22:01:04 +10:00
Stenzek
73823edf56 Qt: Make message box utility parameter order consistent 2025-11-26 22:00:24 +10:00
Stenzek
8311a0cf55 FullscreenUI: Fix moving achievement points badge 2025-11-26 21:49:55 +10:00
Stenzek
f3523508b5 FullscreenUI: Add gradient to achievement notification background 2025-11-26 21:49:40 +10:00
Stenzek
0302d6eefa Qt: Use metaobject class name for saving/restoration
Less chance for error.
2025-11-26 20:05:08 +10:00
Víctor "IlDucci
f84990bc79 Spanish (Spain) translation update 2025-11-25 (#3641)
- Translated the last batch of strings.
2025-11-26 12:13:20 +10:00
bl@ck_m@ge
225623b78e GameDB: Disable auto analog for some games and add missing info (#3640) 2025-11-26 12:08:43 +10:00
Stenzek
952b6c90c0 ImGuiOverlays: Add missing space 2025-11-26 12:07:21 +10:00
Davide Pesavento
3b25e7b3ad Qt: Use Close button in ControllerCustomSettingsDialog
Consistency.
2025-11-25 13:19:31 +10:00
Davide Pesavento
63f929e6f8 Qt: Fix centering of secondary windows
The window size may be incorrect in the constructor because layouting
hasn't happened yet. We need to wait until show() is called.
2025-11-25 13:19:31 +10:00
Davide Pesavento
f9ca1f2241 Qt: Disable game compat comments button instead of hiding it (#3639) 2025-11-25 13:14:18 +10:00
Stenzek
21daf6c873 Qt: Fix window icon for setup wizard 2025-11-24 23:56:21 +10:00
Stenzek
17284156d6 Qt: Swap table view for tree in setup wizard game list 2025-11-24 23:56:16 +10:00
Stenzek
618d154ee5 Qt: Swap table for tree in Game Properties track list
More space-efficient.
2025-11-24 23:50:17 +10:00
Stenzek
afc019d586 FullscreenUI: Avoid drawing OSD messages over achievement badges 2025-11-24 23:08:14 +10:00
Stenzek
79bfa1a65a System: Fix inverted save state overclock warning 2025-11-24 22:55:27 +10:00
Stenzek
267e81f470 README: Remove compatibility list link
Hasn't been updated in years, isn't providing any value anymore as most
games work fine.
2025-11-24 22:14:41 +10:00
Stenzek
a14433e033 FullscreenUI: Fix ImGui asset tripping on empty game grid 2025-11-24 21:56:46 +10:00
Stenzek
e012d97800 Achievements: Use RA icon for some notifications 2025-11-24 21:56:34 +10:00
Stenzek
ce37f0e751 ImGuiManager: Support non-font icons in OSD 2025-11-24 21:40:58 +10:00
Stenzek
b5392ee2ce Regtest: Build fix 2025-11-24 21:02:04 +10:00
Stenzek
db72c78f7c ImGuiManager: Fix incorrect condition in OSD rendering 2025-11-24 21:02:04 +10:00
Stenzek
302ce03fe4 Qt: Async messageReported() signal should not block 2025-11-24 21:02:04 +10:00
Stenzek
eb518c8e39 Qt: Eliminate OSD from debug RAM dumping 2025-11-24 21:02:04 +10:00
Stenzek
e02883eabd Settings: Make OSD message durations customizable 2025-11-24 21:02:04 +10:00
Stenzek
1cc5fe081c ImGuiManager: Remove duration parameter from OSD messages
Use a type instead.
2025-11-24 21:02:04 +10:00
Stenzek
2290f31ffd ImGuiManager: Remove multiple sources of truth for prescale/margins 2025-11-24 19:19:48 +10:00
Stenzek
b5316239b0 Settings: Slightly reduce struct size 2025-11-24 19:19:48 +10:00
Stenzek
795e2d2735 ImGuiOverlays: Fix bold with ICache enabled 2025-11-24 19:19:48 +10:00
bl@ck_m@ge
d4e2f4fb93 GameDB: Disable auto analog for Tenchu (#3636) 2025-11-24 12:31:35 +10:00
Davide Pesavento
e3332d176f Qt: Fix open button icon in ISO browser (#3638) 2025-11-24 12:27:07 +10:00
Stenzek
fd24d9946e CI: Work around Mac runner failing 2025-11-23 12:48:36 +10:00
Stenzek
c9c4997d6f PostProcessing/Slang: Separate original and input textures
Only applies when chaining.
2025-11-23 12:38:20 +10:00
Stenzek
5d9309cd55 Qt: Make parented progress callback dialog window modal
Maybe this'll help with it not appearing for some Linux users...

Whole thing needs to be re-done with threads.
2025-11-22 21:09:44 +10:00
Stenzek
86bf551620 Qt: Warn when executable has been renamed 2025-11-22 15:34:36 +10:00
Stenzek
1f7a44c65d Qt: Remove a couple of left-over spacer size hints 2025-11-22 15:34:36 +10:00
zkdpower
3a43f59934 Update the Simplified-Chinese Translation. (#3635) 2025-11-22 15:29:53 +10:00
Stenzek
783e7675d5 Qt: Swap remaining form layouts for grid 2025-11-22 14:43:52 +10:00
Stenzek
573734eeb2 Qt: Swap form for grid layouts in setup wizard
Consistency with main settings window, mainly for MacOS.
2025-11-22 14:43:52 +10:00
Stenzek
7829d4316b Qt: Add proper alert titles in a couple of areas 2025-11-22 14:43:52 +10:00
Stenzek
6146d33fa2 Qt: Fix game list background on MacOS 2025-11-22 14:43:52 +10:00
Davide Pesavento
30a0b94a4f CI: Download all artifacts into the same directory 2025-11-22 14:43:27 +10:00
Davide Pesavento
5b56399d8d CI: Update GitHub actions 2025-11-22 14:43:27 +10:00
shikulja
b79d69b702 Update Russian translation (#3634) 2025-11-22 14:42:46 +10:00
Stenzek
f7e6c20fed CMake: Bump Qt version requirement 2025-11-21 15:01:35 +10:00
Stenzek
95563345b1 Deps: Revert Qt window-modal dialog disabling on Tahoe
It's not a problem for us, and the non-native dialogs look awful.
2025-11-21 12:44:59 +10:00
Stenzek
704cdef932 Deps: Bump to Qt 6.10.1 2025-11-21 12:38:18 +10:00
Stenzek
b4900c90ed dep/imgui: Fix memory leak in imgui_freetype
Only once on font load, but still a leak.
2025-11-21 12:28:07 +10:00
Stenzek
e9966cfed0 Qt: Fix QEventLoop leak on shutdown
This one is inconsequential.
2025-11-21 02:11:53 +10:00
Stenzek
857a767898 Qt: Fix QAction memory leak on shutdown
Would also leak if you changed languages.
2025-11-21 02:07:09 +10:00
Stenzek
654587ea38 System: Add 'Low VRAM' rewind mode
i.e. use the software renderer for rewinding instead.

Works fairly well, and takes away the VRAM hit when upscaling.
2025-11-21 01:59:03 +10:00
Stenzek
a8967b2b44 Settings: Shouldn't be accessing the global object 2025-11-21 01:59:03 +10:00
Stenzek
938a0e50c9 GPU/HW: Add field for software renderer drawing 2025-11-21 00:45:17 +10:00
Stenzek
012c7de231 GPU/HW: Slightly rearrange data fields
Make space for software renderer flag.
2025-11-21 00:38:03 +10:00
Stenzek
aecdfd5a1d GPU: Align the memory allocation rather than the class 2025-11-21 00:29:42 +10:00
Stenzek
defbe7061b GameDB: Set DisableAllBordersCrop for Alundra 2
I'd expect there'd be a good few others too.
2025-11-20 14:21:25 +10:00
Stenzek
b9571a2371 GameDatabase: Add DisableAllBordersCrop trait 2025-11-20 14:19:42 +10:00
Stenzek
e7862b9ca7 Qt: Prefer eliding source over the middle of the binding
Makes arrows more readable.
2025-11-20 14:16:33 +10:00
Anderson Cardoso
542a2cf0d5 Atualização Português do Brasil (#3631)
Atualizado para a última versão.
Pequenas alterações de contexto no geral.
2025-11-20 14:03:43 +10:00
zkdpower
c8a2f931a5 Update the Simplified-Chinese Translation. (#3630) 2025-11-20 14:03:36 +10:00
Davide Pesavento
b949c17cc8 Qt: Improve text elision in InputBindingWidget (#3629) 2025-11-20 14:03:29 +10:00
Stenzek
bea07e71af Updater: Set default title
Avoid any potential flicker.
2025-11-20 13:47:35 +10:00
Stenzek
4a5e17273b Updater: Close button should be disabled 2025-11-20 13:47:10 +10:00
Stenzek
942422babb Updater: Set application icon 2025-11-20 13:41:24 +10:00
Stenzek
bda75db0fa Updater: Compute window size dynamically 2025-11-20 13:41:11 +10:00
Stenzek
65ddf1a9f8 Updater: Make high DPI aware 2025-11-20 13:12:56 +10:00
Stenzek
8f5a1fdcf0 Updater: Replace incorrect ANSI Win32 calls 2025-11-20 13:10:30 +10:00
Stenzek
acadbffe1c Achievements: Allow overriding host through config
[Cheevos]
Host = http[s]://servername
2025-11-17 22:33:37 +10:00
Stenzek
16e56d7824 Qt: Use icon text instead of duplicate actions 2025-11-16 13:35:24 +10:00
Davide Pesavento
e4d9bed880 Qt: Get rid of the last few QMenu::exec() (#3628)
Completes c025da4e5c
2025-11-16 12:46:15 +10:00
Stenzek
483f9ba41b Qt: Allow overriding cover placeholder image 2025-11-16 02:24:25 +10:00
Stenzek
d5037f1242 Qt: Remove setDesktopFileName() icon workaround
No longer needed since XDG toplevel icon is a thing. Don't care about
compositors other than KWin.

Keeping it around was also causing KDE to report an incorrect title
above the windows in the taskbar, anyway.
2025-11-16 02:22:52 +10:00
Stenzek
4d9f31890a Qt: Use icon theme enum for sort icons 2025-11-16 02:02:19 +10:00
Stenzek
a293792385 Qt: Remove a bunch of old/unused resources 2025-11-16 02:02:19 +10:00
Stenzek
f6976c4888 Qt: Remove unused function 2025-11-16 02:02:19 +10:00
Stenzek
63b99a647e Qt: Use theme icons in Memory Card Editor 2025-11-16 02:02:19 +10:00
Stenzek
1e57a5b94e Qt: Make the memory card modified state more obvious 2025-11-16 01:40:47 +10:00
Stenzek
f5bd7c1b01 Qt: Don't include calling function name in Qt logs
It's redundant.
2025-11-16 01:40:47 +10:00
Stenzek
085c02d495 Qt: Add more actions to toolbar (hidden by default)
Media Capture, Memory Editor, Memory Scanner
2025-11-16 01:40:47 +10:00
Stenzek
5a26f38213 Qt: Add icons to tools menu actions 2025-11-16 01:40:47 +10:00
Stenzek
c396f0ab8d Qt: Set game icon as window icon in Game Properties 2025-11-16 01:40:33 +10:00
Stenzek
b3385094f9 Qt: Provide a central point for getting the app logo
And ensure it's using high DPI.
2025-11-16 01:32:06 +10:00
Stenzek
75aee64772 Qt: Set appropriate window icons for subwindows
Too bad it won't work on most Wankland compositors, too bad.
2025-11-16 00:50:21 +10:00
Stenzek
67208460f4 ImGuiOverlays: Tidy up font weight in OSD 2025-11-16 00:50:21 +10:00
Stenzek
8ce216e42c Qt: Improve readability of changed bytes in memory view 2025-11-16 00:50:21 +10:00
Stenzek
23d45a35db Data: Swap Roboto Mono for JetBrains Mono
Also move the font license/copyright to the main third-party file.

Most were OFL, not Apache anyway.
2025-11-16 00:50:21 +10:00
Stenzek
6c3c02f703 Qt: Use bundled fixed-width font where appropriate
Better than trying to juggle the differences between monospaced fonts on
different platforms.
2025-11-16 00:49:41 +10:00
Stenzek
87847ed248 Qt: Fix crash when changing toolbar icons
Regression from c025da4e5c
2025-11-16 00:49:41 +10:00
Stenzek
d45f630a56 Qt: Further tidy up for 4850471 2025-11-16 00:49:40 +10:00
Davide Pesavento
48504711cd Qt: Remove a few more instances of QDialog::exec() (#3623) 2025-11-15 23:15:03 +10:00
Stenzek
e3a044a8a4 Log: Move FastWrite() into macro
That way the format args can be packed inside the conditional,
potentially outside of the hot path.
2025-11-15 20:16:41 +10:00
Stenzek
b4f9bc794d InputManager: Remove setting of unused config variable 2025-11-15 17:47:45 +10:00
Stenzek
c8ef05a16d Qt: Fix non-native message boxes in Dark Fusion on MacOS 2025-11-15 17:47:14 +10:00
Stenzek
c5f60c13b3 Qt: Don't display two popup messages on card open failure 2025-11-15 17:40:47 +10:00
Stenzek
c025da4e5c Qt: Invoke popup menus asynchronously
And use the invokable overload for addAction() while we're at it.
2025-11-15 17:40:47 +10:00
Stenzek
b14c17b718 Qt: Set attributes on popup menus
Fixes extra border appearing in popup menus in Darker Fusion theme.
2025-11-15 17:40:47 +10:00
Stenzek
2bf14f84e0 Qt: Don't copy QtConcurrent DLL 2025-11-15 17:40:47 +10:00
Stenzek
3d6627c7a0 Qt: Speed up interface page creation
By deferring the loading of CJK fonts. Saves ~170ms on my machine.
2025-11-15 14:35:11 +10:00
Stenzek
b9b1b13fb3 Qt: QtConcurrent is no longer needed
Hasn't been in some time. Apparently I forgot to remove it.
2025-11-15 14:20:37 +10:00
Stenzek
754591f279 StringUtil: Add GetUTF8CharacterCount() 2025-11-15 14:20:36 +10:00
Stenzek
982035fbcc GPU: Remove implicit bool conversion 2025-11-15 14:06:44 +10:00
Stenzek
0edf71bd03 GPU: Fix 480i resolution display with force progressive 2025-11-15 13:09:24 +10:00
Stenzek
4c56f06ffe Qt: Style check boxes in Darker Fusion 2025-11-14 01:59:22 +10:00
Stenzek
3099f5f3d2 Qt: Fix game grid selection rect bottom/right edges 2025-11-13 23:45:00 +10:00
Stenzek
35e3d9a4d1 Qt: Get window sizes from OS instead of scaling Qt size
Qt's device independent sizes are a lossy transformation.

This stops our sizes from being potentially off by one with the "real"
window size.

Too bad it can't be done properly on Linux, see comment. Don't care.
2025-11-13 23:45:00 +10:00
Stenzek
d1f26eef3b Qt: Fix a bunch of implicit conversion warnings
Qt previously hid these... thanks Qt.
2025-11-13 23:45:00 +10:00
Stenzek
ef2086b2c3 Qt: Silence new warning from VS2026 2025-11-13 23:45:00 +10:00
Stenzek
df547195ae README: Bump VS version requirement to 2026 2025-11-13 23:45:00 +10:00
Stenzek
7e7e51db08 D3D12Device: Remove unused class member 2025-11-13 23:45:00 +10:00
Stenzek
d532acb39a Build: Use VS2026 build tools
GitHub runners don't have it yet, but it's a non-issue there as they're
using clang, not MSVC.
2025-11-13 23:45:00 +10:00
Stenzek
c953480ed5 Build: Use Unicode as default MSBuild character set
Apparently I forgot to change this ages ago...
2025-11-13 23:44:59 +10:00
Stenzek
65be533ad3 Build: Use C17 for MSBuild 2025-11-13 23:44:59 +10:00
Stenzek
fa793ce3ad Updater: Fix compiling in Unicode mode 2025-11-13 23:44:59 +10:00
Stenzek
34484d4f96 CDImageDevice: Fix compiling in Unicode mode 2025-11-13 23:44:59 +10:00
bl@ck_m@ge
e2cd5e79a1 GameDB: Max speedup cycles for Street Fighter Alpha 2 & 3 and Super Puzzle Fighter II (#3627) 2025-11-13 16:26:00 +10:00
bl@ck_m@ge
66c924e29e GameDB: Max speedup cycles for Bugs Bunny - Lost in Time & Bugs Bunny and Taz - Time Busters (#3626) 2025-11-12 15:01:57 +10:00
bl@ck_m@ge
a742164b6e GameDB: Increase cdromMaxReadSpeedupCycles for Discworld Noir (#3625) 2025-11-12 15:01:40 +10:00
Stenzek
29d5598de4 PostProcessing: Fix slang+overlay+odd shader count combination 2025-11-12 14:59:08 +10:00
Stenzek
6581e8e3bb PostProcessing: Fix unscaled input sizes if first stage disabled 2025-11-12 14:59:08 +10:00
Stenzek
cad8b43763 PostProcessing: Fix starting with all stages disabled 2025-11-12 14:59:07 +10:00
Stenzek
fa965cf9f2 Qt: Use delegate for drawing covers
More efficient, less memory usage. Also adds a border around the covers
to indicate what is selected.
2025-11-11 23:32:05 +10:00
Stenzek
a301066926 Qt: Use QSizeF for device scaled sizes
More consistent with Qt internally.
2025-11-11 23:32:05 +10:00
Stenzek
fc97cf514c PostProcessing/slang: Flip textures if using OpenGL
Fixes them being sampled upside down.
2025-11-11 23:31:53 +10:00
Stenzek
3a1e8fe7a1 PostProcessing: Load shaders even if disabled
Gets rid of the lag when toggling on and off.
2025-11-11 23:20:28 +10:00
Stenzek
a9b9e8952d PostProcessing: Rename Enabled -> StageEnabled
Less chance of conflicting with shader config keys.
2025-11-11 22:52:12 +10:00
Anderson Cardoso
c06e4fea0e Atualização Português do Brasil (#3624)
Atualizado para a última versão.
2025-11-11 22:37:17 +10:00
Ariel Nogueira Kovaljski
0b2865730c Qt, FullscreenUI, PostProcessing: Add shader enable/disable toggle. (#3621)
* Qt, FullscreenUI, PostProcessing: Add shader enable/disable toggle.

Allows enabling/disabling individual shaders in a post processing chain. Unlike removing, disabling preserves custom parameter values.

* Use `Qt::ItemIsUserCheckable` flag for shader list
2025-11-11 22:36:55 +10:00
Stenzek
475b69baa9 Qt: Save/restore painter state in achievements delegate 2025-11-09 22:50:52 +10:00
Stenzek
013cce51c9 Qt: Return size hint for covers 2025-11-09 22:50:52 +10:00
Stenzek
cb609fc6b2 ImGuiOverlays: Polish frame time graph 2025-11-09 22:48:52 +10:00
Stenzek
639aa3c7fc ImGuiOverlays: Fix inconsistent font weight 2025-11-09 22:48:51 +10:00
Stenzek
a1a763cead GameDB: Set tolerance for Tekken 3
Stops polygon glitches when characters go partially offscreen,
probably bit manipulation again.
2025-11-09 22:48:51 +10:00
Stenzek
127cc70ba1 GameDB: Enable PGXP-CPU for Tekken 3
Game fudges vertices by small amounts. Still noticeable, but at least
the Z gets perserved now.
2025-11-09 15:43:46 +10:00
Stenzek
bdeeecefa7 GPU/HW: Clamp after round with round upscaling fix
Stops coordinates possibly ending up off by one, which is mostly
noticeable with sprites in the Crash Bandicoot series.
2025-11-09 15:07:23 +10:00
Stenzek
361bcde48b FullscreenUI: Fix loading screen progress going negative
Mainly during shader compilation, because it uses RenderLoadingScreen()
directly.
2025-11-09 14:38:24 +10:00
Stenzek
26323f4419 GPU/HW: Fix incorrect clamp UV state on setting change 2025-11-09 14:15:01 +10:00
Stenzek
4a246a74a2 GPU: Avoid unnecessary postfx source preprocess when upscaling 2025-11-08 13:04:11 +10:00
Stenzek
63d5c34242 System: Fix use of moved string in error path 2025-11-08 13:04:11 +10:00
Davide Pesavento
bf0c0fd95a GameDB: Decrease cdromMaxReadSpeedupCycles for AITD4 and Dino Crisis 2 2025-11-08 13:03:52 +10:00
Davide Pesavento
540e02a2e6 GameDB: Add various comments 2025-11-08 13:03:52 +10:00
Davide Pesavento
652ce9ef3a GameDB: Set DisableFastForwardMemoryCardAccess for Broken Sword II 2025-11-08 13:03:52 +10:00
Davide Pesavento
fbffdbc960 GameDB: Disable widescreen for Digimon World 2025-11-08 13:03:52 +10:00
Davide Pesavento
326016d1dd GameDB: Set max speedup cycles to 35k for Alundra 2 2025-11-08 13:03:52 +10:00
zkdpower
2059e9bbac Update the Simplified-Chinese Translation. (#3619) 2025-11-08 13:03:40 +10:00
bl@ck_m@ge
00444fd912 GameDB: Max speedup cycles for Discworld II (#3618) 2025-11-08 11:21:21 +10:00
Davide Pesavento
62054ba97c Qt: Fix canceling shader selection dialog (#3617) 2025-11-08 11:21:18 +10:00
Víctor "IlDucci
c2737f953a Spanish (Spain) translation update 2025/11/07 (#3616)
- Translated new terms just so I can return to monthly updates at the beginning or end of each month.
- Removed obsolete entries.
2025-11-08 11:21:02 +10:00
Daniel Nylander
859e1908bd Updated Swedish translation (#3614)
* Updated Swedish translation

* Updated Swedish translation
2025-11-08 02:00:58 +10:00
Anderson Cardoso
93f4e40bfc Ajuste (#3615)
Pequeno ajuste na mensagem OSD de desafio descontextualizada.
2025-11-08 02:00:35 +10:00
Stenzek
c00428669b Qt: Improve shader add dialog
- Use icon instead of text.
- Fix duplicated subdirectory nodes.
- Collapse single item nodes.
- Add on double-click.
2025-11-07 23:03:01 +10:00
Stenzek
de250b86c9 Qt: Increase spacing in game list toolbar 2025-11-07 22:23:28 +10:00
Stenzek
e4797b1ca9 Qt: Add 'Open Directory' button to post-processing settings 2025-11-07 22:20:52 +10:00
Stenzek
ac30cf341b GPU: Display emulated GPU usage in stats 2025-11-07 21:44:50 +10:00
Stenzek
242280d6ed GPU: Rearrange and reduce struct padding 2025-11-07 21:44:50 +10:00
Stenzek
3e25958477 Qt: Add dialog for adding postfx shaders
Better than an overflowing menu.
2025-11-07 21:44:50 +10:00
Stenzek
cb5ab7292e Qt: Fix qrc generation script ordering differently 2025-11-07 20:24:28 +10:00
Stenzek
a49b351db2 CMake: Bump SDL version requirement 2025-11-07 18:45:59 +10:00
Stenzek
8dc0b99ee2 VulkanDevice: Fix off-by-one in assertion 2025-11-07 18:36:03 +10:00
Stenzek
082ba21640 Deps: Update versions
Update to SDL3 3.2.26
Update to Shaderc 2025.4
Update to DXCompiler 1.8.2505.32
Update to SPIV-Cross 1.4.328.1
Update to MoltenVK 1.4.0
2025-11-07 18:35:55 +10:00
Stenzek
8302a6b9e1 Deps: Remove unused CMake argument 2025-11-07 18:27:41 +10:00
Stenzek
d797ca4839 Deps: Don't build qtdeclarative
See previous commit.
2025-11-07 18:27:41 +10:00
Stenzek
9ed5254293 Deps: Patch Linguist to build without Qt Quick
Quick/Declarative takes way too long to build on the CI, and insane
amounts of disk space.
2025-11-07 18:27:40 +10:00
Stenzek
28b911137b Deps: Bump MacOS deployment target to 13.0 2025-11-07 18:27:40 +10:00
Davide Pesavento
dca565a2fe GameDB: Adjust crop area for Gran Turismo 2 (#3613) 2025-11-07 13:32:07 +10:00
Stenzek
fbc99916f8 PostProcessing/Slang: Remap and skip binding unused textures
Hopefully keep us under the limit where it might otherwise go over.
2025-11-07 13:28:30 +10:00
Anderson Cardoso
51726e3be2 Atualização Português do Brasil (#3612)
Atualizado para a última versão.
2025-11-07 04:33:34 +10:00
bl@ck_m@ge
15d70ffb10 GameDB: Max speedup cycles for Discworld and Discworld Noir (#3611) 2025-11-07 04:30:26 +10:00
Stenzek
3d39fe2683 GPU: Don't crash if first frame is interlaced+black
Regression from dd0c7ec9fe.

Fixes crash in Destruction Derby Raw.
2025-11-06 20:14:11 +10:00
Stenzek
42cf66cbd7 FullscreenUI: Fix achievement points placement with short description 2025-11-06 20:14:11 +10:00
Stenzek
d598470de2 Scripts: Remove Flatpak manifest
As I noted in 41b8f2bf77 and #3454, I was
still undecided on how to proceed with the Flatpak going forward, and
was waiting on user feedback.

However, it appears that decision has been made for me. As of the time,
of writing, the page displays "This application is no longer available on
Flathub." "This application is no longer maintained on Flathub", and I
was not notified in any way of the removal.

No idea if this was automated (it's been ~3 months since the last push),
or manual, so I'm not pointing fingers at anyone here. But it is still
completely unprofessional on flathub's part. No other distributor would
remove applications without notifying the developer. Combined with the
constant workflow/CI breakage, new requirements being added and enforced
with little notice, and delisting of anything more than a couple years
old, I would recommend to any application developers considering
flatpak/hub and don't heavily use it themselves: don't, it ain't worth it.

No point keeping it around now, since it was only a copy of the AppImage
anyway, and if I recall correctly there's other tools that can bwrap an
AppImage if you really desire. But IMO the security argument is kinda
weak, if you don't trust the code you're running, don't run it. The app
is still interacting with the rest of the OS regardless...
2025-11-06 20:13:51 +10:00
Stenzek
df4d04c868 Qt: Style patches widget on Mac 2025-11-06 00:11:44 +10:00
Stenzek
8b217b5cc1 GPU: Fix OSD reporting of non-interleaved interlaced resolution 2025-11-05 16:04:10 +10:00
Stenzek
dd0c7ec9fe GPU: Insert null field buffer if display disabled
Don't throw away all buffers. 240p Test Suite flips display disabled
during vblank every frame.
2025-11-05 16:03:34 +10:00
Stenzek
f9cab709bd INISettingsInterface: Use case sensitive storage
Need to replace SimpleIni at some point, want to move the settings
interface to use string_views.
2025-11-05 13:13:17 +10:00
Stenzek
a22d3a794b Qt: Style more widgets in Darker Fusion 2025-11-05 02:38:01 +10:00
Stenzek
d58f2d0222 Qt: Make auto/clear bindings buttons QPushButtons
On the Darker Fusion theme they don't look nearly as ass, so no need to
use QToolButtons here.
2025-11-05 01:42:49 +10:00
Stenzek
14481affba Qt: Bring toolbar checked background closer to combo background 2025-11-05 01:36:10 +10:00
Stenzek
d6f4fc7f18 PostProcessing: Ensure input buffer matches present format 2025-11-05 01:31:01 +10:00
Stenzek
a88cfbee67 PostProcessing/slang: Raise error if too many textures are bound 2025-11-05 01:30:57 +10:00
Stenzek
7080e98bc1 PostProcessing/slang: Don't balk at duplicate option names
Apparently some shaders are like this.
2025-11-05 01:11:06 +10:00
Stenzek
a8e922c458 Qt: Improve Darker Fusion style
Style more elements consistently.
2025-11-05 00:52:04 +10:00
Stenzek
de2e89ea90 Settings: Ensure slang shaders subdirectory is created 2025-11-05 00:51:45 +10:00
Stenzek
cebb1348ab FullscreenUI: Fix button-held colour in menus 2025-11-04 22:00:50 +10:00
Stenzek
2a350960bf FullscreenUI: Fix misdetection of some light themes 2025-11-04 22:00:39 +10:00
zkdpower
a5e20511d9 Update the Simplified-Chinese Translation. (#3606) 2025-11-04 13:44:49 +10:00
Davide Pesavento
0c7e8f3d87 Qt: Fix overlapping widgets in cheat settings (#3607) 2025-11-04 13:44:38 +10:00
Davide Pesavento
a1889a20bb Qt: Add standard shortcut to open settings (#3608)
That is "⌘ ," on macOS.

Also fix a couple of menu roles.
2025-11-04 13:44:18 +10:00
Davide Pesavento
e91db67c79 Qt: Reload icons and tooltips when game list rows change (#3609) 2025-11-04 13:43:47 +10:00
Stenzek
520502dab0 FileSystem: Fix RealPath() with relative paths 2025-11-02 22:40:39 +10:00
Stenzek
f5fc2474a4 Qt: Resolve command line paths before autobooting
Increase the chances of Game Properties still functioning.
2025-11-02 22:11:32 +10:00
Stenzek
70352b69ce Qt: Center windows when they don't have saved positions
Stupid Linux decides to spawn it in the top-left corner of the screen
otherwise.
2025-11-02 22:07:07 +10:00
Stenzek
b4d71cb66c Qt: Save position of settings windows 2025-11-02 21:56:10 +10:00
Stenzek
b0689d54e6 FullscreenUI: Move loading screen progress callback into namespace 2025-11-02 21:32:24 +10:00
Stenzek
85275a1965 Qt: Add missing help text in Interface Settings 2025-11-02 17:34:43 +10:00
Stenzek
49a1446fbe Common: Fix SSE2 build
Tired of having to support processors that are old enough to drink, but
every time I try to remove it someone complains.
2025-11-02 17:12:02 +10:00
Stenzek
5ca35363d4 CPU/Recompiler: Set up frame pointer on Windows ARM64
Required by the ABI. Not tested yet.
2025-11-02 16:30:20 +10:00
Stenzek
042bc7945c ImGuiManager: Use different OSD title/text colours
And add an early out when there's no messages.
2025-11-02 16:30:20 +10:00
Stenzek
b04b87a730 PostProcessing: Use titled OSD messages 2025-11-02 16:30:20 +10:00
Stenzek
4ec6752fe7 GPUPresenter: Handle padding for unscaled/slang input 2025-11-02 16:30:20 +10:00
zkdpower
5da178eb28 Update the Simplified-Chinese Translation. (#3605) 2025-11-02 16:30:09 +10:00
Stenzek
9a5e0c9028 ShaderGen: Fix ImGui rendering with Vulkan 2025-11-01 21:07:37 +10:00
Stenzek
77b1abf5e3 MemoryCard: Fix off-by-one reporting in card number 2025-11-01 16:30:07 +10:00
Stenzek
8a732ded41 PostProcessing: Support loading slang shaders/presets
Compatibility will likely vary quite a bit.
2025-11-01 16:30:07 +10:00
Stenzek
81fb8014a1 PostProcessing: Support unscaled input
Needed for slang support.
2025-11-01 16:30:07 +10:00
Stenzek
fc618b8b62 SPIRVModule: Add class for iterating/manipulating SPIR-V 2025-11-01 16:30:07 +10:00
Stenzek
eb0a8890e2 MetalDevice: Fix creating mipmapped textures with generate flag 2025-11-01 16:30:07 +10:00
Stenzek
d06f306f8f GPUDevice: Ensure clear is committed in MakeReadyForSampling() 2025-11-01 16:30:07 +10:00
Stenzek
af5c3fac42 GPUDevice: Fix mipmap generation on targets
Mainly DX12 that was broken.
2025-11-01 16:30:07 +10:00
Stenzek
9a5eadd86a GPUDevice: Add SRGBA8 texture format 2025-11-01 16:30:07 +10:00
Stenzek
08317d9478 GPUDevice: Set fixed names for UBO/push constants in SPV transpiling
Ensures that name-based binding in GL succeeds.
2025-11-01 16:30:07 +10:00
Stenzek
4729e22573 GPUDevice: Handle non-contiguous texture bindings in SPV transpiling 2025-11-01 16:30:07 +10:00
Stenzek
b43111f36e GPUDevice: Remap input attributes when transpiling to HLSL 2025-11-01 16:30:06 +10:00
Stenzek
47c820455d GPUDevice: Add MultiTextureAndUBOAndPushConstants pipeline layout 2025-11-01 16:30:06 +10:00
Stenzek
916b23f85c GPUDevice: Use separate buffer for push constants 2025-11-01 16:30:06 +10:00
Stenzek
6848f07c57 GPUDevice: Combine draw and push constant functions
Prevents us from being in a situation where the push constants haven't
been uploaded because we couldn't allocate a descriptor or something
else which forced a flush.
2025-11-01 16:30:06 +10:00
Stenzek
683ccbf216 GPUDevice: Swap ImGui rendering to use UBO 2025-11-01 16:30:06 +10:00
Davide Pesavento
863b9b10a0 Qt: Minor layout fixes in analog controller binding widget (#3604) 2025-11-01 16:30:00 +10:00
Stenzek
5de231ca5a System: Fix regtest build
Keep forgetting I'm using these functions here.
2025-11-01 14:46:26 +10:00
Stenzek
899d500d35 GPU: Fix compile warning 2025-11-01 14:44:57 +10:00
Stenzek
3e6dd9b9a2 System: Simplify and polish more OSD messages 2025-11-01 14:32:59 +10:00
Davide Pesavento
22220853de Qt: Fix recommended value for "Challenge Indicators" (#3603)
The default was changed in babf4201d8
but the help text wasn't updated to match.
2025-11-01 14:32:47 +10:00
Stenzek
0d4ffde7c5 Qt: Allow command line boot of device path
Untested.
2025-11-01 01:47:02 +10:00
Stenzek
529da22ef5 System: Use new OSD message variants 2025-11-01 01:44:25 +10:00
Stenzek
b483d2f61f ImGuiManager: Add title variants for OSD messages 2025-11-01 01:43:45 +10:00
Stenzek
dc5b57aa42 Qt: Missed a couple of shutdown -> close messages 2025-11-01 00:14:24 +10:00
Stenzek
c33354e2d6 Qt: Don't hold game list lock on popup 2025-11-01 00:14:20 +10:00
Stenzek
0841ab4b92 Qt: Fix disc swap from game list incorrectly pausing 2025-11-01 00:14:20 +10:00
Stenzek
b797aae28b GPU: Fix a couple instances of reading wrong thread settings 2025-11-01 00:14:04 +10:00
shikulja
a929aaf194 Update Russian translation (#3601)
* Update ts

* Update Russian translation

* more corrections
2025-11-01 00:13:53 +10:00
bl@ck_m@ge
bfc6da2574 GameDB: Disable disc speedup on MDEC for Warcraft II (#3600) 2025-10-31 12:50:13 +10:00
Davide Pesavento
97db72cb2c Achievements: Fix display of game completion time (#3599) 2025-10-31 12:50:05 +10:00
Davide Pesavento
5a49db0717 Qt: Reflect DisableFastForwardMemoryCardAccess trait in the settings UI 2025-10-31 12:49:44 +10:00
Davide Pesavento
d0bbf8ca18 GameDB: Set DisableFastForwardMemoryCardAccess for Tales of Destiny 2025-10-31 12:49:44 +10:00
Anderson Cardoso
5f6b690b9d Atualização Português do Brasil (#3597)
Atualizado para a última versão.
2025-10-31 12:49:16 +10:00
zkdpower
7bba98af3d Update the Simplified-Chinese Translation. (#3596) 2025-10-31 12:49:09 +10:00
Stenzek
8c0878882f Qt: Normalize shut down labels 2025-10-31 12:47:47 +10:00
Stenzek
88802e0d09 GameList: Fix achievement game ID not set for disc sets 2025-10-31 12:44:32 +10:00
Stenzek
b8764e8c1b Qt: Add exit specific message for confirmation dialog 2025-10-29 23:33:28 +10:00
Stenzek
d54234444f Qt: Don't need these functions defined in the header 2025-10-29 23:33:28 +10:00
Stenzek
cd8d6d8387 Qt: Remove game icon extra size
Looks worse because the icon is significantly larger than the text.
2025-10-29 23:33:27 +10:00
Stenzek
f6cdf95b6e Qt: Fix positioning of game list achievements icon 2025-10-29 23:33:27 +10:00
Stenzek
1999b0df6c GameDB: Set DisableFastForwardMemoryCardAccess for Twisted Metal 4 2025-10-29 23:33:27 +10:00
Stenzek
c5d93583da GameDatabase: Add DisableFastForwardMemoryCardAccess trait 2025-10-29 23:33:27 +10:00
Stenzek
efa6e4aeca Common: Use NSAlert for assertion failures/panics 2025-10-29 23:33:27 +10:00
zkdpower
94cfc9ba2e Update the Simplified-Chinese Translation. (#3594) 2025-10-29 23:33:14 +10:00
Davide Pesavento
458ad1334c Qt: Take header width into account for all columns
Seemed inconsistent to do it only for a subset of columns.

Also respect DPR for region icons.
2025-10-29 22:37:29 +10:00
Davide Pesavento
59d0f3c01c Qt: Fix game icon size and row height in game list 2025-10-29 22:37:29 +10:00
Davide Pesavento
49762aa493 Qt: Fix column width estimation in game list
More accurately copy how Qt calculates the width (we were
underestimating it in some cases).
2025-10-29 22:37:29 +10:00
Davide Pesavento
e89ab8311e Qt: Misc code cleanups 2025-10-29 22:37:29 +10:00
Stenzek
d82ae473a4 CI: Bump minimum macOS version to 13.0
Qt's minimum is 13, and I don't particularly feel like debugging issues
created if I work around it for an OS that hasn't been supported in over
a year.
2025-10-29 21:34:32 +10:00
Stenzek
a038c88d24 dep/reshadefx: Work around inability to discard in function in DXC
Need to fix this in SPIRV-Cross instead.
2025-10-29 21:21:33 +10:00
Stenzek
fcde8c7765 dep/reshadefx: Cherry-pick upstream 74e95dd 2025-10-29 21:21:32 +10:00
Stenzek
05701fef41 GPUDevice: Make dyn libs public 2025-10-29 21:21:32 +10:00
Stenzek
cff3ece1a7 VulkanDevice: Fix incorrect struct type 2025-10-29 21:21:32 +10:00
Stenzek
2c2fb1d496 D3D12Device: Fix incorrect StencilBeginningAccess/StencilEndingAccess 2025-10-29 21:21:32 +10:00
Stenzek
b858fe5e94 GPUDevice: Display OSD message if debug settings are enabled 2025-10-29 21:21:32 +10:00
Stenzek
24ae4a5d24 FullscreenUI: Fix uniform push before pipeline set 2025-10-29 21:06:36 +10:00
Stenzek
eefcd90714 GPU/HW: Avoid some redundant calls in Metal 2025-10-29 21:06:36 +10:00
Stenzek
0fec148e02 GPU/HW: Add missing padding to UBOs 2025-10-29 21:06:36 +10:00
Stenzek
a44c8466eb CMake: Fix Xcode project debugging
No more manual resource copying.
2025-10-29 21:06:36 +10:00
Stenzek
de08a2fff5 CMake: Only remap source path in Release builds
Don't make debugging painful.
2025-10-29 21:06:36 +10:00
Stenzek
5a7094b812 Achievements: Use consistent icon style in list 2025-10-25 14:02:36 +10:00
Stenzek
5818a05be3 Achievements: Add point count to unlock popup 2025-10-25 13:58:46 +10:00
Stenzek
b237604ac7 GPUDevice: Don't log warning for WARP driver 2025-10-25 13:58:46 +10:00
Anderson Cardoso
eb23999d6d Atualização Português do Brasil (#3593)
Atualizado para a última versão
2025-10-25 13:58:30 +10:00
zkdpower
7414ed92e4 Update the Simplified-Chinese Translation. (#3592) 2025-10-25 13:58:22 +10:00
Stenzek
326a6e391f CMake: Fix scmversion.cpp always updating on Mac 2025-10-21 23:17:43 +10:00
Stenzek
6432ac103f Qt: Fix non-rounded buttons in achievement login 2025-10-21 22:55:08 +10:00
Stenzek
8775ca0ff9 Qt: Convert more message boxes to window modal 2025-10-21 22:37:16 +10:00
Stenzek
db7598ffa6 Qt: Use message box wrapper functions 2025-10-21 22:34:09 +10:00
Stenzek
d9e363f848 Qt: Add message box helpers
Because the standard Qt message boxes look terrible on MacOS.

Using the helpers prevents the stylesheet from breaking liquid ass.

Also styles the dialog so the title isn't hidden.
2025-10-21 22:33:21 +10:00
Stenzek
2fb3773591 Qt: NativeThemeStylesheetNeedsUpdate() should not apply to Fusion 2025-10-21 21:16:35 +10:00
Stenzek
0776e2f9c3 Qt: Clear style sheet before applying theme 2025-10-21 21:15:23 +10:00
Stenzek
e48649bc26 FullscreenUI: Remove unused variable 2025-10-20 20:56:13 +10:00
Stenzek
9fa8b17cb5 FullscreenUI: Fix a couple of missing strings 2025-10-20 17:55:35 +10:00
Stenzek
3d6c042ffd FullscreenUI: Fix missing lock for settings read 2025-10-20 17:55:35 +10:00
Stenzek
93b4c3467f FullscreenUI: Fix missing logo on landing page 2025-10-20 17:55:35 +10:00
Stenzek
cab6669eb7 DMA: Speed up RAM write with CDROM speedup
Might make it ever-so-slightly more reliable. The number of cycles is
pretty small though, ~500 or so.
2025-10-20 17:55:35 +10:00
Stenzek
751781325c Settings: Remove CD speedup above 6x
In the majority of games it just crashes. Maximum is safer.
2025-10-20 17:55:35 +10:00
zkdpower
b4a868c5c9 Update the Simple-Chinese Translation to latest. (#3591) 2025-10-20 17:55:04 +10:00
Mario
9977e1dca0 FullscreenUI: Disable rewind options when runahead is enabled (#3589) 2025-10-19 12:29:11 +10:00
Stenzek
aa980a44cd GPU: Don't save settings to save state 2025-10-19 01:33:37 +10:00
Stenzek
a52020bcfc DMA: Reduce linked list header read time
Closer to console.
2025-10-19 01:33:34 +10:00
Stenzek
f2dd91c874 RegTest: Compile fix 2025-10-18 23:12:15 +10:00
Stenzek
9ca1c9730f Mini: Compile fix 2025-10-18 22:57:50 +10:00
Stenzek
476c1c5b9d FullscreenUI: Make OpenOrUpdateLoadingScreen() thread safe 2025-10-18 22:48:37 +10:00
Stenzek
45d3c66579 FullscreenUI: Simplify game properties state
Only allow scanned games to be changed like the Qt UI, makes everything
much simpler.
2025-10-18 22:48:37 +10:00
Stenzek
32aa86a608 FullscreenUI: Move achievements to its own file 2025-10-18 22:48:37 +10:00
Stenzek
bed758a75b FullscreenUI: Move translation strings to own file 2025-10-18 22:48:37 +10:00
Stenzek
10a7d8ad4d FullscreenUI: More scope clean up 2025-10-18 22:48:37 +10:00
Stenzek
f4f8aa587e FullscreenUI: Defer more resource loads
That way we're not compiling the background shader (if any) when we're
just using the pause menu.
2025-10-18 22:48:37 +10:00
Stenzek
cc2ee00681 FullscreenUI: Split game list into its own file 2025-10-18 22:48:37 +10:00
Stenzek
dc7a7ed6bb FullscreenUI: Split settings into its own file 2025-10-18 22:48:37 +10:00
Stenzek
ba28a3fb3c Achievements: Cache user badge path 2025-10-18 22:48:36 +10:00
Stenzek
2bc387fe33 FullscreenUI: Fix returning to window that was open
e.g. disc swap hotkey
2025-10-18 22:48:36 +10:00
Stenzek
b1cd5625f2 System: Don't add to the pause timer when we're already paused 2025-10-18 22:48:36 +10:00
Stenzek
983cde33bc FullscreenUI: Make notifications/toasts thread-safe 2025-10-18 22:48:36 +10:00
Stenzek
8c25144abb FullscreenUI: Always initialize widgets
That way notifications etc can be used independently of FSUI.
2025-10-18 22:48:36 +10:00
Stenzek
9cbcf78090 FullscreenUI: Move transition handling to widgets file 2025-10-18 22:48:36 +10:00
Stenzek
e36ea9e3a8 FullscreenUI: Remove more redundancy 2025-10-18 22:48:36 +10:00
Stenzek
fab4b05bc8 FullscreenUI: Remove ImGuiFullscreen namespace 2025-10-18 22:48:36 +10:00
Stenzek
836fd9bcfb FullscreenUI: Make file naming consistent 2025-10-18 22:48:36 +10:00
Stenzek
1fbf083987 FullscreenUI: Move ImGuiFullscreen to core 2025-10-18 22:48:36 +10:00
Stenzek
2c03fb915c ImGuiManager: Use static key map
No need to dynamically look it up now, since we're using USB key codes
everywhere.
2025-10-18 22:48:36 +10:00
Stenzek
5653f8dd64 ImGuiManager: Don't let non-imgui keys through
Stops hotkeys bound to some keys from activating in pause menu.
2025-10-18 22:48:36 +10:00
Stenzek
bae05a7f67 SDLInputSource: Change default for WGI to off
Changed in SDL 3.2.24.
2025-10-18 22:48:36 +10:00
Stenzek
7deb374cf9 Deps: Hopefully work around path length limits 2025-10-16 20:50:37 +10:00
Stenzek
33a342751a Deps: Remove build directory after each library
Hopefully work around running out of space on the runners.
2025-10-16 19:23:56 +10:00
Stenzek
f2291eaaff Deps: Build Qt Declarative/ShaderTools
Needed for Linguist now.
2025-10-16 18:19:52 +10:00
Stenzek
8520e3f94d System: Work around lupdate bug causing hang 2025-10-16 17:55:45 +10:00
Stenzek
a49d0b665f PostProcessing/GLSL: Skip recompile on target size change
This is specific to reshade.
2025-10-16 16:32:26 +10:00
Stenzek
41b8f2bf77 CI: Remove Flatpak builds
Now they're getting random timeouts updating the SDKs, just tired of it.

The workflow to publish is still in the tree, but I haven't updated
Flathub in months, and it's arguably kinda pointless since the Flatpak
is literally just a wrapper of the AppImage now...

So, still undecided what to do about that. If you are using it, please
let me know, because in the months that it's been deprecated only a
couple of people mentioned that they were using it. Therefore, as best I
can tell there's basically no userbase.
2025-10-16 16:00:18 +10:00
Stenzek
2a0fe0a753 GameDB: Add disc set for GT2 US
Match Europe/Japan.
2025-10-16 15:56:11 +10:00
Stenzek
bd6e747c65 GameDB: Fix serials for Black-Matrix + 2025-10-16 15:56:11 +10:00
Anderson Cardoso
e96a85d29f Atualização Português do Brasil (#3588)
Atualizado para a última versão
2025-10-15 19:32:40 +10:00
shikulja
70185cb693 Update Russian translation (#3587)
* Update ts

* purge ts

* Update Russian translation

* typo
2025-10-15 19:32:32 +10:00
Stenzek
2ff9c67c71 Qt: Replace table widget in Game List Settings 2025-10-15 19:16:24 +10:00
Stenzek
2b3c7e00c8 Qt: Initialize COM before Qt
Ensures we're consistent regardless of whether Qt initializes it or not.

Currently, it initializes it through OLE -> COM.
2025-10-15 19:07:13 +10:00
Stenzek
89e3ba29a5 Qt: Fix warning 2025-10-15 19:06:55 +10:00
Stenzek
3d2c3c919d GameList: Avoid a couple of heap allocations 2025-10-14 15:01:23 +10:00
Stenzek
a035c48721 GameList: Fall back to achievement badges for game icons 2025-10-14 00:16:39 +10:00
Stenzek
ac4634c289 Add StringPool and BumpStringPool classes 2025-10-14 00:06:56 +10:00
Stenzek
84806d3055 GameList: Use LockedFile class 2025-10-14 00:06:56 +10:00
Stenzek
e7f4034678 FileSystem: Add LockedFile helper class 2025-10-14 00:06:56 +10:00
Stenzek
8f0c9dd171 Qt: Fix disabled menu items in MacOS native theme 2025-10-14 00:06:50 +10:00
Stenzek
3c632c896d Qt: Fix hang on theme change on MacOS 2025-10-14 00:06:29 +10:00
Stenzek
114c26307d Qt: Fix initial button state in memory card editor 2025-10-13 18:29:03 +10:00
Víctor "IlDucci
a08996d55f Spanish (Spain) 2025/10/12 translation update (#3586)
- Translated the new strings.
 - Corrected major misunderstandings related to Safe Mode and RetroAchievements' hardcore mode.
 - Changed "shaders" translation from "sombreador" to the English word. Computer graphics shader's name has become a lost war to English.
2025-10-12 23:29:14 +10:00
Stenzek
8ed329ff1f Qt: Fix serial mismatch error when verifying 2025-10-12 23:28:24 +10:00
Stenzek
c117059c82 GPU/HW: Fix crash when preloading texture replacements 2025-10-12 13:40:51 +10:00
Stenzek
90e6078543 Cheats: Show OSD warning when parsing fails 2025-10-12 13:26:27 +10:00
Stenzek
ec96dd70f9 Qt: Don't use hash cheat list when PPFs exist 2025-10-12 13:21:00 +10:00
Stenzek
c4c6357be3 Qt: Improve column width behaviour in cheat list
Prevent long cheats being truncated after addition/editing.
2025-10-12 13:08:07 +10:00
Stenzek
286f9dddec Qt: Validate cheats before saving edits 2025-10-12 12:38:37 +10:00
Stenzek
bfcd3d4220 Cheats: Strip whitespace on code body when editing 2025-10-12 12:37:11 +10:00
Stenzek
08556f3143 Qt: Normalize line endings in cheat edit dialog 2025-10-12 12:16:40 +10:00
Stenzek
f8c720a5ef Qt: Tab should change focus in edit cheat dialog 2025-10-12 12:04:43 +10:00
Stenzek
adbfe7f184 Qt: Display hash in game properties summary 2025-10-12 12:04:25 +10:00
Stenzek
00042a5ea4 Qt: Default to native theme on MacOS 2025-10-12 01:09:48 +10:00
Stenzek
a654ce63bf Qt: Style QMenu and QToolButton with stylesheet on MacOS
Using a QStyleProxy would be preferable, but this is fast enough and
stops the native theme from looking so ugly.
2025-10-12 01:09:47 +10:00
Stenzek
e0e245d59a Qt: Swap most out-of-toolbar QToolButtons to QPushButtons
Styles better on MacOS.
2025-10-12 01:09:47 +10:00
Stenzek
b5e1087e2a Qt: Fix submenu accessibility on MacOS 2025-10-12 01:09:47 +10:00
Stenzek
f0f7475c39 FullscreenUI: Modernize blocking loading dialog
And add a time estimate.
2025-10-11 18:08:20 +10:00
Stenzek
a1c177402b CI: Fix AppImage build (again)
So tired of this silly OS...
2025-10-11 15:43:50 +10:00
Stenzek
4587c45d93 MediaCapture: Improve FFmpeg load error message 2025-10-11 14:51:24 +10:00
Stenzek
505753da48 Deps: Update to FFmpeg 8.0 2025-10-11 14:51:24 +10:00
Stenzek
3552a5b001 Qt: Fix rare bug where covers get stuck in loading state
When quickly changing cover scale.
2025-10-11 12:25:16 +10:00
Stenzek
50a9f04dd9 dep/rcheevos: Bump to 6755915 2025-10-10 20:23:29 +10:00
Stenzek
330eb057d5 Scripts: Hopefully fix AppImage build 2025-10-09 23:06:12 +10:00
Stenzek
29d73cb18c GameDB: Remove PGXP vertex cache from Touge Max G
No longer needed with the earlier fix. But add CPU mode, since that
helps the sprite jitter.
2025-10-09 23:06:12 +10:00
Stenzek
4d516c5247 dep/rcheevos: Bump external client image URL buffer size
Works around invalid parameter being triggered on long usernames.
2025-10-09 23:06:12 +10:00
Stenzek
27d26794d9 CPU/GTE: Remove unnecessary struct padding 2025-10-09 23:06:12 +10:00
Stenzek
8bce5b0a55 CPU/PGXP: Make register writes more readable 2025-10-09 23:06:12 +10:00
Stenzek
05a58285aa CPU/PGXP: Handle SXYP mirror reads
Fixes PGXP on some parts of geometry in Legend of Legaia.

Also fixes broken PGXP in Boxing and Touge Max G.
2025-10-09 23:06:12 +10:00
Stenzek
cd37cd741c Deps: Update to Qt 6.10.0 2025-10-09 21:22:35 +10:00
Stenzek
00a2f5a2ce FullscreenUI: Fix crash opening settings
Regression from 76facb3. Derp.
2025-10-09 18:22:59 +10:00
zkdpower
550858104f Update the Simplified Chinese Translation. (#3585) 2025-10-08 20:57:56 +10:00
Daniel Nylander
c039a946fb Updated Swedish translation (#3584) 2025-10-08 20:57:32 +10:00
Stenzek
4f0d35c2ef VulkanDevice: Make current command buffer lookup consistent 2025-10-08 19:37:45 +10:00
Stenzek
97c49a9e36 CDImageDevice: Use g_settings for ignore host subcode 2025-10-08 19:31:59 +10:00
Stenzek
76facb3da7 FullscreenUI: Fix default value for theme 2025-10-08 19:28:32 +10:00
Stenzek
5afa6b2d67 Controller: Remove unused helper function 2025-10-08 19:28:14 +10:00
Stenzek
98761961bc Cheats: Remove unnecessary std::move() 2025-10-08 19:27:58 +10:00
Stenzek
dbf2849803 Misc: Move SettingInfo declaration to input_types.h
267b74c breaks on cross-compiled Linux otherwise, and I can't be
bothered to set it up locally to debug.
2025-10-07 01:31:20 +10:00
Anderson Cardoso
267b74cab8 Atualização Português do Brasil (#3583)
Atualizado para a última versão
2025-10-07 01:17:32 +10:00
Stenzek
7575050b00 Controller: Don't indirectly include settings.h 2025-10-07 01:14:06 +10:00
Stenzek
39eb2c564f Qt: Don't include git hash in window title
It's too verbose and meaningless to the user. Still shown in the about
dialog for reference purposes.
2025-10-07 01:14:06 +10:00
Stenzek
733df6a0ce Qt: Show screenshot in resume game popup 2025-10-06 13:45:48 +10:00
zkdpower
1b7e42920b Update the Simplified Chinese Translation to latest. (#3582) 2025-10-06 02:51:14 +10:00
Stenzek
3a806738b9 Qt: Fix cover title being clipped 2025-10-05 23:09:11 +10:00
Stenzek
848833b687 CI: Fix Windows build symbol upload 2025-10-05 01:32:50 +10:00
Stenzek
24a3dcb412 InputManager: Sync effect state on connection
Fixes mic/RGB LED not synchronizing on new device connection.

Apparently I forgot that it doesn't reload bindings, only when the
InputSource list changes.
2025-10-05 00:58:57 +10:00
Stenzek
e373be9fd3 CMake: Bump required dependency versions 2025-10-05 00:58:57 +10:00
Stenzek
4e797f398f CI: Remove redundant prefix on AppImage cross job 2025-10-05 00:58:55 +10:00
Stenzek
9cc29fb603 Qt: Use QSize throughout GameListWidget 2025-10-05 00:24:12 +10:00
Stenzek
7b991def42 Qt: Bump currently-visible covers to front on scale change
Fixes flicker when very quickly changing scales from small to large.
2025-10-05 00:17:35 +10:00
Stenzek
78db5addcd Qt: Fix flicker when changing cover size
By scaling images instead of tossing the whole cache.
2025-10-04 23:52:55 +10:00
Stenzek
f219c2ca98 AnalogController: Fix sync/readback value for vibration 2025-10-04 22:59:53 +10:00
Stenzek
1665cb6953 InputManager: Refactor and simplify vibration mapping
Now multiple devices can be bound if anyone wants to do that for some
reason...

Current strength will also synchronize on binding reload instead of
getting lost.
2025-10-04 22:53:36 +10:00
Stenzek
f57eeb349c CI: Simplify Windows/Linux workflows
Use matrix instead of duplicating.
2025-10-04 19:18:17 +10:00
Stenzek
22399c25a1 FullscreenUI: Fix localization of 'None' background 2025-10-04 19:17:32 +10:00
Stenzek
e6788b313e System: Add 'Runahead for Analog Input' option
Mitigates the performance impact of serializing PGXP state.
2025-10-04 19:17:31 +10:00
Stenzek
cf0b602476 Settings: Rearrange fields
To make space in the bitfield.
2025-10-04 19:17:31 +10:00
zkdpower
95e9cba79b Update the Simple-Chinese Translation to latest. (#3581) 2025-10-04 19:17:20 +10:00
Stenzek
3966a9eea7 System: Serialize PGXP state for runahead 2025-10-04 17:51:25 +10:00
Stenzek
10f9039dea Controller: Skip runahead replay when analog is unchanged
Slight CPU usage reduction at idle.
2025-10-04 17:44:33 +10:00
Stenzek
424f9a9db9 Controller: Simplify deadzone calculation
Use Pythagoras to measure distance from center. Fixes incorrect results
very close to the center.
2025-10-04 17:38:20 +10:00
Stenzek
1b49f82c98 Controller: Merge all binds into one index space
Simplifies things a bit.
2025-10-04 16:52:26 +10:00
Stenzek
9d8d81d092 InputManager: Only update vibration once per frame 2025-10-04 16:39:40 +10:00
Stenzek
f0c67e998b Controller: Remove GetInputOverlayIconColor()
Use the bind state instead.
2025-10-04 16:39:40 +10:00
Stenzek
3624474b91 Controller: Remove unused InAnalogMode() 2025-10-04 16:39:24 +10:00
Stenzek
2adf7a1663 CI: Bump MacOS runner to macos-15 + Xcode 26 2025-10-04 16:39:21 +10:00
Stenzek
570f0416b1 Deps: Bump to Qt 6.9.3 2025-10-04 13:51:25 +10:00
Stenzek
21c83440b3 Misc: Add error checking to LocalTime() 2025-10-04 13:51:25 +10:00
Stenzek
6cb727f383 GameDB: Disable auto analog in Alien Resurrection
Game enables analog mode itself, and ends up in a state where
vibration does not function until manually toggled if forced.
2025-10-03 00:49:49 +10:00
Stenzek
a048e092b2 Qt: Make LED settings clearer 2025-10-03 00:10:52 +10:00
Stenzek
982753d7ce Qt: Allow binding both active and inactive LED colours 2025-10-02 11:55:10 +10:00
Stenzek
cf8b1a58ca Qt: Re-introduce FlowLayout 2025-10-02 11:55:10 +10:00
Stenzek
ffa0e8d131 Qt: Refactor LED bindings
Make it more general and bindable to both the mode and RGB LED, that way
it can be used on Dualshock 4 as well.
2025-10-02 11:54:41 +10:00
Ariel Nogueira Kovaljski
51942df7dd Use DualSense Mic Mute LED for Analog Mode (#3574)
* Use DualSense Mic Mute LED for Analog Mode

* Fix function casing and move function call outside loop

* Refactored code to use binds

- `InputManager` no longer uses API specific logic
- The Mic Mute LED gets bound as `ModeLED = SDL-0/ModeLED` only for DualSense controllers
- Changed DualSense detection to use Vendor & Product ID
2025-10-02 11:54:13 +10:00
Stenzek
c790972265 System: Warn if geometry tolerance is not default 2025-09-30 18:18:22 +10:00
Stenzek
e5c17880cb Qt: Fix vibration binding not applying immediately 2025-09-29 00:48:17 +10:00
Stenzek
975b9b18e0 AnalogController: Fix inverted motor display in OSD 2025-09-29 00:48:17 +10:00
Stenzek
9807948ac1 Qt: Remove old vsync mode migration function
Been over a year.
2025-09-29 00:35:39 +10:00
Daniel Nylander
5c9e28f115 Updated Swedish translation (#3580)
* Updated Swedish translation

* Add files via upload
2025-09-28 23:03:59 +10:00
Stenzek
38bb240a44 Qt: Avoid extra string storage 2025-09-28 20:27:47 +10:00
Stenzek
a50997a554 Qt: Fix app icon ending up as null 2025-09-28 20:27:47 +10:00
Stenzek
3d4115613c Achievements: Fix unused variable warning 2025-09-28 20:27:47 +10:00
zkdpower
3fada38b57 Update the Simple-Chinese Translation to latest. (#3579) 2025-09-28 16:53:29 +10:00
Anderson Cardoso
0a25dd0693 Atualização Português do Brasil (#3578)
Atualizado para a última versão
2025-09-28 16:51:43 +10:00
Stenzek
eadca6cd7b Settings: Prefer widescreen patches over GTE hack
Since they tend to work better.
2025-09-28 16:43:34 +10:00
Stenzek
fa8a995d7e Cheats: Fix uninitialized data read in parsing 2025-09-28 16:43:34 +10:00
Stenzek
fb60691afc Cheats: Pack state in struct 2025-09-28 16:43:34 +10:00
Stenzek
c5d309f320 Settings: Avoid log.h include 2025-09-28 16:43:34 +10:00
Stenzek
6c1ee0ca87 Settings: Store custom aspect ratios in main key
What a pain. But allows patches to override aspect ratio to any
arbitrary value.
2025-09-28 16:43:34 +10:00
Stenzek
3832b39576 Qt: Fix disabling patches not removing empty ini 2025-09-28 16:43:34 +10:00
Stenzek
ea57a428f9 Qt: Don't use static storage for app icon
Wastes TLS space apparently.
2025-09-28 12:27:47 +10:00
Stenzek
daf5fee9ff Qt: Don't bother using worker for background resize
Ends up looking jankier.
2025-09-28 12:13:59 +10:00
Stenzek
50c9f63e8e Qt: Hackfix game list background on stylesheet themes 2025-09-28 12:13:43 +10:00
Stenzek
bb9dbf9a33 Qt: Avoid casts on animation delegate 2025-09-27 22:00:06 +10:00
zkdpower
a904544c64 Update the Simple-Chinese translation to latest. (#3577) 2025-09-27 17:47:58 +10:00
Stenzek
b40ff8b0bd Qt: Add optional animation of icons in game list
Disabled by default.
2025-09-27 17:45:24 +10:00
Stenzek
da471120c4 Qt: Link memory scanner address double-click to editor 2025-09-26 22:44:22 +10:00
Stenzek
ecf13ded23 Qt: Add Memory Editor window 2025-09-26 22:44:01 +10:00
Stenzek
4ee8738771 FullscreenUI: Stop icons leaking into cover cache 2025-09-26 20:02:08 +10:00
Stenzek
93a13a6fa2 FullscreenUI: Draw generated covers when not present 2025-09-26 20:02:08 +10:00
Stenzek
5caa560134 FileSystem: Disallow control characters on Linux/Mac as well
Technically allowed, but just asking for trouble.
2025-09-26 20:02:08 +10:00
Stenzek
d4c6905cfa Tests: Linux build fix 2025-09-26 20:02:08 +10:00
Stenzek
ea11ce2dd5 Tests: Add for CueParser and ElfFile 2025-09-26 20:02:08 +10:00
Stenzek
8e65beb736 GameList: Save APNGs for memory card icons 2025-09-26 20:02:08 +10:00
Stenzek
102af48b6b AnimatedImage: Add class for reading APNGs
And probably GIFs in the future.
2025-09-26 20:02:08 +10:00
Stenzek
9d14a4a57f Tests: Add tests for Image class 2025-09-26 20:02:08 +10:00
Stenzek
8f78f83587 Image: Don't use png_read_image()
Avoids a temporary buffer allocation.
2025-09-26 20:02:08 +10:00
Stenzek
bcc066a2e0 Image: Fix a couple of random bugs 2025-09-26 20:02:08 +10:00
Stenzek
f2cee19002 HeapArray: Add size_bytes() 2025-09-26 20:02:08 +10:00
Stenzek
2624914628 Deps: Patch libpng for apng support 2025-09-26 20:02:08 +10:00
Stenzek
29aa0faa6c Deps: Update Harfbuzz to 11.5.0 2025-09-26 20:02:07 +10:00
Stenzek
7e4f0ce119 Deps: Update to FreeType 2.14.1
And use dynamic Harfbuff loading.
2025-09-26 20:02:07 +10:00
Stenzek
86f36ad339 Deps: Remap paths in libbacktrace
File path creeps in otherwise, we want reproducible builds.
2025-09-26 20:02:07 +10:00
Stenzek
7df21b216d Deps: Bump cpuinfo version 2025-09-26 20:02:07 +10:00
Stenzek
94efd0089f Qt: Add fallback if system colour scheme is unknown 2025-09-23 22:58:06 +10:00
Stenzek
5b4cf75c74 Qt: Fix game list icon colours on theme change 2025-09-23 22:35:32 +10:00
Stenzek
65d6ecc4ca Qt: Don't use style hints as source of truth for dark mode
Apparently this doesn't work on Linux. Typical.
2025-09-23 22:35:11 +10:00
Stenzek
598d393ae9 System: Don't create any memory cards in PSF/GPU Dump mode 2025-09-22 20:50:37 +10:00
Víctor "IlDucci
36ebaf87a7 Spanish (Spain) translation update 2025/09/22 (#3576)
- Added latest translation changes.
 - Resorted all of Qt->View->keyboard shortcuts to include the newest additions.
2025-09-22 20:50:31 +10:00
Stenzek
dc1882dd3e System: Fix patch setting override desync on safe mode toggle 2025-09-22 20:46:12 +10:00
Stenzek
c2bbef066d System: Simplify memory card opening
Now cards no longer reopen when changing discs in a multi-disc game.
2025-09-22 20:37:45 +10:00
Stenzek
790ac23515 GPU: Get present parameters before allocating command
Fixes corruption/crash when video frame rate changes with capture
active.
2025-09-22 17:12:16 +10:00
Stenzek
03cbfc2e3f CI: Auto-retry patch download
Should hopefully work around random failures at the download endpoint.
2025-09-22 16:18:16 +10:00
Stenzek
fcf67396cd Qt: Require non-zero displacement for reverse axis binding
Should hopefully work around controllers with digital triggers getting
flagged as inverted bindings.
2025-09-22 16:18:16 +10:00
Stenzek
055caf5cbe Qt: Log input state when binding 2025-09-22 15:32:04 +10:00
Stenzek
9baa09aace InputManager: Use TinyString for key-to-string function 2025-09-22 15:32:04 +10:00
Stenzek
ba0390f6e0 System: Fix patch settings not clearing on game change
Also the redundant memory card notification when loading state.
2025-09-22 15:32:03 +10:00
Stenzek
7de84817f8 System: Fix changing GPU thread state when inactive 2025-09-21 19:00:03 +10:00
Stenzek
0de2aafdb9 CPU/Interpreter: Memory read failures are unlikely 2025-09-21 19:00:03 +10:00
Stenzek
b106392da0 CPU/PGXP: Implement lwl/lwr/swl/swr
Fixes gaps in sky geometry in Kingsley's Adventure.
2025-09-21 19:00:03 +10:00
Stenzek
e183ec307a CPU/Interpreter: Use aligned address for membps in lwl/lwr 2025-09-21 16:29:39 +10:00
Stenzek
109bbf6289 GameDB: Recompiler ICache for Dotchi Mecha! 2025-09-21 16:26:46 +10:00
Stenzek
49b5ea3d07 DMA: Skip chopping on tiny blocks
My theory is if the DMAC uses burst transfers, then chopping will have
no effect.

Dotchi Mecha! transfers out the CD header then data separately, and if
the first transfer is delayed ends up in a read loop.

I suspect our handling of chopping is wrong anyway, since the calculated
cycle counts for a sector transfer are way too high regardless...
2025-09-21 16:25:10 +10:00
Stenzek
e877ae41b0 Qt: Fix display of uncompressed size
Derp.
2025-09-20 20:07:05 +10:00
Stenzek
85c4e02493 Qt: Remove redundant title update in Game Properties 2025-09-20 18:32:15 +10:00
Stenzek
77bc1ae3ca Qt: Fix incorrect size hint in FolderSettingsWidget 2025-09-20 18:32:15 +10:00
Stenzek
f1047afdac Qt: Make checked menu item visible in Darker Fusion 2025-09-20 18:32:14 +10:00
Stenzek
24bf2bc453 Qt: Default to darker fusion theme 2025-09-20 15:37:26 +10:00
Stenzek
5e32871288 CI: Remove unneeded install on Mac 2025-09-20 15:34:44 +10:00
Stenzek
c4069eed02 CMake: Avoid search path conflicts 2025-09-20 15:34:44 +10:00
Stenzek
81f5b7440f Qt: Add icon for multi-disc games 2025-09-20 14:25:18 +10:00
Stenzek
41a4f07cc5 CI: Remove Flatpak verification steps
Tired of flathub breaking my build.
2025-09-19 21:25:03 +10:00
Stenzek
e6c49f0b33 Qt: Fix uncentered toggle widget thumb 2025-09-19 20:47:14 +10:00
Stenzek
bb63bf92f0 Qt: Remove multiple sources of truth for dark theme 2025-09-19 20:40:16 +10:00
Stenzek
0d3c7751f1 Qt: Fix Cheats menu shortcut 2025-09-19 20:40:16 +10:00
Stenzek
95bcff8c06 Qt: Darker Fusion tweaks 2025-09-19 20:40:15 +10:00
Stenzek
fb318ca4b0 Qt: Fix toggle button not updating 2025-09-19 01:18:31 +10:00
Stenzek
a90184a658 CDROM: Tidy up warnings 2025-09-19 00:54:43 +10:00
Stenzek
5e253d0c2a Qt: Add toggle button class
And use it for patches
2025-09-19 00:54:43 +10:00
Stenzek
f1fe00c1cb Data: Update SDL game controller database 2025-09-19 00:54:43 +10:00
Stenzek
e3c4f77a05 Qt: Fix tab order in settings pages 2025-09-19 00:08:31 +10:00
Stenzek
1a4ca3be11 Qt: Add 'Darker Fusion' theme 2025-09-19 00:08:28 +10:00
Stenzek
749ce48b65 Qt: Theme colours can be constexpr 2025-09-19 00:08:28 +10:00
Stenzek
83d518c707 Qt: Fix about dialog link colour 2025-09-19 00:08:28 +10:00
Stenzek
1ac7fc258a SaveStateSelectorUI: Scale save state selector to LayoutScale
And some minor visual polish.
2025-09-18 22:58:24 +10:00
Stenzek
073335c09b Qt: Don't break size of larger game icons 2025-09-18 22:57:59 +10:00
jorge-607
a13aa8f292 Adicionada uma atualização da tradução para português europeu 2025-09-18 18:13:19 +10:00
Davide Pesavento
4c81a98213 Qt: Fix detection of system language (#3573) 2025-09-18 18:10:43 +10:00
Stenzek
6caf2d567b Qt: Resize fixed columns on theme change
Fixes columns being too small after change on MacOS.
2025-09-17 20:09:48 +10:00
Stenzek
3724a38d38 Qt: Remove MainWindow::updateTheme()
Instead pipe it through themeChanged().
2025-09-17 20:09:48 +10:00
Stenzek
ea3c8a3654 Qt: Add a theme changed event and use it for hotkey rows
Fixes black text when window inactive on MacOS.
2025-09-17 20:09:48 +10:00
Stenzek
05af0c1288 FullscreenUI: Fix title display in game properties 2025-09-17 20:09:48 +10:00
Stenzek
2369b329eb Qt: Partially revert "Remove Q_OBJECT where unnecessary"
This reverts commit 31c75a2b5a.

tr()'s context is defined by Q_OBJECT, so removing Q_OBJECT here
sadly breaks translations.
2025-09-17 20:09:48 +10:00
Stenzek
a39d370c51 Qt: Don't show main window when changing setup wizard options 2025-09-17 20:09:48 +10:00
Stenzek
ceb6757524 Qt: Work around broken dialogs in MacOS 26 2025-09-17 20:09:48 +10:00
Anderson Cardoso
1e41408753 Atualização Português do Brasil (#3571)
Atualizado para a última versão.
2025-09-17 20:09:45 +10:00
zkdpower
4bf2aa5620 Update the Simple-Chinese translation. (#3570) 2025-09-16 23:20:01 +10:00
Daniel Nylander
e138030f8f Updated Swedish translation (#3569) 2025-09-16 23:19:40 +10:00
Connor McLaughlin
eeb1555905 Qt: Fix tooltip typo 2025-09-16 23:19:10 +10:00
Stenzek
9a1a8c226a Qt: Allow transparent padding for covers
Need to use a custom paint delegate instead...
2025-09-16 02:16:04 +10:00
Stenzek
bb50fc9056 CDROM: Improve subchannel file detection
Look in the subchannels directory for serial, file title, game title and
save title.
2025-09-15 20:45:08 +10:00
Stenzek
8a431b7d22 GameDB: Disable PGXP on 2D polygons in Wipeout games
Fixes misaligned text.
2025-09-15 20:45:07 +10:00
Stenzek
ff23462113 dep/rcheevos: Bump to fae1e23 2025-09-15 20:45:07 +10:00
Ariel Nogueira Kovaljski
0088bb0abb Qt: Make titlebar match current UI theme (Light/Dark) (#3568) 2025-09-15 20:44:41 +10:00
Stenzek
66bef3e3ed Achievements: Allow background reads 2025-09-14 19:45:52 +10:00
Stenzek
9e3dda675c Qt: Remove unused variables 2025-09-14 17:56:11 +10:00
Stenzek
31c75a2b5a Qt: Remove Q_OBJECT where unnecessary
Shaves another 20KB off the binary, and more importantly improves
compile time since moc doesn't need to run for as many files.
2025-09-14 17:55:14 +10:00
Stenzek
339f4252ec Qt: Remove named slot declarations
Knocks 70KB or so off the release binary, ~0.8%.
2025-09-14 17:12:41 +10:00
Stenzek
577863077e Qt: Replace named slot usage with functors 2025-09-14 16:56:26 +10:00
Stenzek
328c93b786 FullscreenUI: Fix OOB on start+load state 2025-09-14 16:30:09 +10:00
Stenzek
2346f67c8c dep/fmt: Update to v11.2.0 2025-09-14 16:19:09 +10:00
Stenzek
ae77a82ba3 Common: Add helper for thread-safe localtime()
And use it with fmt instead of fmt::localtime.
2025-09-14 16:19:06 +10:00
Stenzek
aa929370ba Host: Pack locals in struct 2025-09-14 16:19:06 +10:00
Stenzek
640769c2b2 System: Remove unnecessary c_str() 2025-09-14 16:19:06 +10:00
Stenzek
cb7c33cf27 Qt: Synchronize horizontal header with sort actions 2025-09-14 15:17:17 +10:00
Stenzek
7807a6847b Misc: Fix a couple of code analysis warnings 2025-09-14 14:56:41 +10:00
Stenzek
ae570b0aca Qt: Remove multiple source of truth for column titles 2025-09-14 13:59:01 +10:00
Stenzek
08d54487e0 Qt: Disable capture frame option if not running 2025-09-14 13:48:37 +10:00
Stenzek
3554467988 Qt: Set status tip for actions to tooltips 2025-09-14 13:47:53 +10:00
Stenzek
f39a067260 Qt: Add tooltips to menu actions
Sorry translators.
2025-09-14 13:47:40 +10:00
Stenzek
9877cc0c2c Qt: Move list background config logic to GameListWidget 2025-09-14 13:02:40 +10:00
Stenzek
4d5b0473cf Qt: Don't show fractional sizes in game list
Arguably not very useful.
2025-09-14 12:54:50 +10:00
Stenzek
e038a1d355 Qt: Fix some size values truncated in game list 2025-09-14 12:54:50 +10:00
Stenzek
a790f521a0 Qt: Don't try to replace AppImage when running as Flatpak 2025-09-14 12:54:50 +10:00
Daniel Nylander
cdcfbea6d0 Updated Swedish translation (#3566) 2025-09-14 12:54:28 +10:00
ANK-dev
a9c36f39ad Use statusTip instead of toolTip for menus 2025-09-14 12:54:09 +10:00
ANK-dev
17a1b231af Keep Game List/Grid view options enabled if rendering to separate window 2025-09-14 12:54:09 +10:00
ANK-dev
df49eba478 Added icons and mnemonics in View menu
- Icons for Zoom In and Zoom Out
- Adjusted and added missing mnemonics
2025-09-14 12:54:09 +10:00
ANK-dev
1f07bfc9c7 Added "View > Sort By" menu
- Allows sorting by any column even when hidden
- Allows sorting in grid view
2025-09-14 12:54:09 +10:00
ANK-dev
456d341ec2 Enable/Disable View menu items according to state
- Disable all Game List/Grid related options while System Display is active.
  Reenable when switching back to List/Grid.
- Disable Game List/Grid exclusive options when switching to the opposite view;
- Disable "Clear List Background" when a background is not set;
- Enable tooltips for menu items;
2025-09-14 12:54:09 +10:00
Stenzek
ee9f32185e dep/rcheevos: Remove files deleted upstream 2025-09-13 16:52:42 +10:00
Stenzek
6126209a25 CMake: Remove Flatpak specific commands
Also no longer needed.
2025-09-13 16:52:42 +10:00
Stenzek
84c6be74d3 Deps: Simplify Linux build scripts
Optional system libs no longer needed since Flatpak specific build is
gone.
2025-09-13 16:52:42 +10:00
Stenzek
e0a51e117d CI/Flatpak: Replace with a wrapped AppImage
One less thing to maintain, fewer things to go wrong.

Especially since the number of users can apparently be counted
on one hand.

It's this or I remove it completely.
2025-09-13 16:52:30 +10:00
Stenzek
78bc53ff43 Qt: Stop slider tooltip showing on keyboard shortcut 2025-09-13 13:52:01 +10:00
Stenzek
8f247c909a Qt: Move zoom logic entirely to game list widget 2025-09-13 13:51:27 +10:00
Stenzek
56665d64af Achievements: Simplify hash-to-string routine 2025-09-13 13:39:18 +10:00
Stenzek
fe09b5d16f ISOReader: Allow zero-length root directory entries
BIOS can read them, so should we.
2025-09-13 13:39:18 +10:00
Stenzek
d8912cb3c3 System: Allow RVO in GetExecutableNameForImage() 2025-09-13 13:39:18 +10:00
Stenzek
edeaae613a dep/rcheevos: Bump to 4570cb7 2025-09-13 13:39:18 +10:00
Ariel Nogueira Kovaljski
c6666a388f Qt: Show tooltip when adjusting icon/cover scale (#3563)
* Qt: Show tooltip when adjusting icon/cover scale

* Qt: removed tooltip on hover, handle zoom via View menu and more

- Tooltip only shows when changing the scale;
- "View > Zoom In/Out" also works for the list view;
- Grid View scale percentage display value adjusted (10%-200%);
- Added translation support for the scale tooltip;
2025-09-13 13:39:08 +10:00
Anderson Cardoso
b95f2b16f2 Atualização Português do Brasil (#3564)
Atualizado para a última versão
2025-09-13 13:34:43 +10:00
Davide Pesavento
66d6e2827d GameDB: PGXP CPU mode for Tony Hawk's Pro Skater
And add a sort title for the PAL version of the first game so that
it gets sorted before the sequels.
2025-09-13 13:34:28 +10:00
Davide Pesavento
d694bc201b GameDB: Various fixes for Mega Man games 2025-09-13 13:34:28 +10:00
Davide Pesavento
9ae09a7693 GameDB: Disable widescreen and enable PGXPPreserveProjFP for Evil Dead 2025-09-13 13:34:28 +10:00
Davide Pesavento
65f6209010 GameDB: Various fixes for Einhänder 2025-09-13 13:34:28 +10:00
Stenzek
f0ff520a9d GameList: Improve custom title cover handling
Prefer the custom title path over the serial if one is present.

Also use sanitized names.
2025-09-12 23:29:47 +10:00
Stenzek
f45350898b GameList: Don't balk on cover titles that end in dot 2025-09-12 23:29:46 +10:00
Stenzek
1cdde2cab6 Path: Add IsFileNameValid() 2025-09-12 23:29:46 +10:00
Stenzek
a8bbd2c4a9 CrashHandler: Catch exceptions and std::terminate 2025-09-12 23:29:46 +10:00
Connor McLaughlin
2459ac7cc5 Achievements: Fix crash on unknown game 2025-09-12 14:13:10 +10:00
Daniel Nylander
5c7b976367 Updated Swedish translation (#3562) 2025-09-10 21:56:00 +10:00
Stenzek
96c90a4acd Qt: Use colorScheme() for dark mode detection on system themes 2025-09-10 21:52:43 +10:00
Stenzek
7bf3b7931b Qt: Fix hotkey alt row colours on Mac 2025-09-10 21:44:52 +10:00
Stenzek
aca4e6be42 Qt: Use Roboto for cover captions too
And don't do a full refresh when scale changes.
2025-09-09 20:56:51 +10:00
Stenzek
e2142419e1 Qt: Use Roboto for cover placeholder text
Consistency across platforms.
2025-09-09 20:47:58 +10:00
Stenzek
17aa588736 Qt: Add shadow to placeholder cover text 2025-09-09 20:47:58 +10:00
Stenzek
c9156fd7b5 Qt: Pack host local state in struct 2025-09-09 20:47:58 +10:00
Stenzek
c4ac3d195c Qt: Improve padding in hotkey rows
And fix incorrect parent widgets.
2025-09-09 20:47:58 +10:00
Stenzek
022d9f3083 Qt: Pass game list entry to settings window
Simplfies everything, makes restoring custom properties more reliable.
2025-09-09 20:47:58 +10:00
Ariel Nogueira Kovaljski
d367e7e4e0 Qt: Alternating row colors for Hotkeys settings (#3559) 2025-09-09 19:56:15 +10:00
Davide Pesavento
aee897e44a Qt: Disable UI of settings forced via gamedb, part two (#3561)
Missed these in the previous commit.
2025-09-09 19:53:06 +10:00
Stenzek
d0840c0615 GameList: Don't save custom titles to cache
Stops custom titles from being unremovable.
2025-09-09 19:15:04 +10:00
Stenzek
dc7eec7eac Qt: Use hasAlphaChannel() for ARGB32 check 2025-09-09 18:47:32 +10:00
Stenzek
e470269d01 FileSystem: Remove now-unused function 2025-09-09 14:17:20 +10:00
Stenzek
d944966db6 Qt: Use ARGB32_Premultiplied for transparent covers 2025-09-09 13:58:27 +10:00
Stenzek
6e4da72552 System: Remove use of CDImage title metadata
This way memory card filenames are consistent regardless of the
image format.

Also make GetGameMemoryCardPath() and GetMemoryCardForSlot()
behave the same.
2025-09-09 13:57:52 +10:00
Ariel Nogueira Kovaljski
caa865628d Qt: Expand Gamelist background to fill available area (#3560) 2025-09-09 13:53:17 +10:00
Davide Pesavento
0296c84add Qt: Disable UI of settings forced via gamedb traits (#3558) 2025-09-08 22:41:15 +10:00
Stenzek
ad3ad6065e Qt: Update Korean translation by Hack茶ん 2025-09-08 22:40:21 +10:00
Davide Pesavento
0be0500805 GameDB: Disable auto analog for Persona 2 - Innocent Sin (#3556) 2025-09-08 22:13:40 +10:00
Anderson Cardoso
5794746fa0 Atualização Português do Brasil (#3557)
Atualizado para a última versão
2025-09-08 22:13:29 +10:00
Stenzek
627fec4e30 FullscreenUI: Tweak text colours slightly 2025-09-08 22:11:39 +10:00
Stenzek
dfc650410e Qt: Use RGB32 format for covers/background
As per QPainter documentation, ARGB32 etc is not optimal.

https://doc.qt.io/qt-6/qpainter.html#performance
2025-09-08 22:11:39 +10:00
Stenzek
ec6a411bdf Qt: Use Window/AutoFillBackground for game list background
Fixes scrolling glitching out, as well as the background not showing in
the Qt Windows 11 theme.
2025-09-08 22:11:39 +10:00
Stenzek
0136f721c4 SDLInputSource: Fix possible negative input to SDL_GetJoystickButton() 2025-09-07 23:34:18 +10:00
Stenzek
babf4201d8 Settings: Default to notification achievement indicator mode
Makes more sense than an icon in the corner of the screen that you don't
notice half the time, and the other half is arguably annoying.
2025-09-07 15:16:09 +10:00
Davide Pesavento
81dca60aa9 GameDatabase: Use correct titles in compatibility report (#3555) 2025-09-07 15:15:25 +10:00
Stenzek
c3e5075c60 Achievements: Show notification when challenge fails
If mode is set to notifications.
2025-09-07 15:11:34 +10:00
Stenzek
d7ed9a736d Achievements: Show most recent progress update in pause menu 2025-09-07 15:04:31 +10:00
Ariel Nogueira Kovaljski
1275eb1f9b GPU/ShaderGen: Added Hybrid Bilinear scaling (#3554)
Middle ground between Smooth Bilinear and Sharp Bilinear.
Smooth horizontally and sharp vertically like a raster scan.
2025-09-07 11:54:27 +10:00
Stenzek
78d22b8852 Qt: Swap point size for pixel size in a few places
Make sizes consistent between Windows and MacOS.
2025-09-06 14:35:28 +10:00
Stenzek
4c6375adc9 Qt: Fix inconsistent cover caption size at startup 2025-09-06 13:39:07 +10:00
Stenzek
ca504bd0ed CMake: Set -fmacro-prefix-map and -ffile-prefix-map 2025-09-06 13:37:12 +10:00
Stenzek
843234f817 MSBuild: Set /d1trimfile and /PDBALTPATH
More steps to reproducible builds.

/d1trimfile only works on MSVC, so set -fmacro-prefix-map and
-ffile-prefix-map on Clang.
2025-09-06 13:21:11 +10:00
Stenzek
da64db69f2 System: Don't print __DATE__/__TIME__
Inhibits reproducible builds.
2025-09-06 13:11:40 +10:00
Stenzek
26c4eec874 Qt: Fix another compiler warning 2025-09-06 13:11:24 +10:00
Stenzek
0aa8374f73 MSBuild: Don't merge qt_LANG.qm when qtbase_LANG.qm exists
Stops qt_sv.qm being generated which references files that do not exist,
e.g. qtscript_sv.qm.
2025-09-06 12:38:15 +10:00
Stenzek
14b2302e29 Qt: Fix compile warning 2025-09-06 12:38:15 +10:00
Stenzek
5cd8444ad6 Qt: Consider title when sizing icon column 2025-09-06 12:35:44 +10:00
Ariel Nogueira Kovaljski
587e73d71d Sharper icon scaling (#3553)
* take ceiling instead of truncation for icon scaling

* #include <cmath> and change std::ceilf to std::ceil
2025-09-06 12:34:28 +10:00
Stenzek
3ff6287a82 GameList: Use size_t for indexing 2025-09-04 20:47:47 +10:00
Stenzek
7e04671644 GameList: Use fixed size for icon column
Fixes sluggish icon size change and speeds up startup since we
no longer need to load every icon.
2025-09-04 20:23:05 +10:00
Stenzek
393724abdc Qt: Save one lookup when loading covers 2025-09-04 20:22:34 +10:00
Stenzek
b5d5cfd9c2 GameList: Pack state in struct 2025-09-04 19:32:25 +10:00
Stenzek
f7edbdec22 Qt: Remove unused signal 2025-09-04 19:29:30 +10:00
Stenzek
21bede8123 ImGuiManager: Initialize to default text font order 2025-09-04 12:35:34 +10:00
Stenzek
979e850ea5 Qt: Include full binding text in tooltip 2025-09-04 12:29:21 +10:00
Stenzek
78fa54344e SmallString: Make constructors explicit
Catch more errors at compile-time.
2025-09-04 12:25:00 +10:00
Stenzek
d9dc5074df InputManager: Map 'old' key names to new on load
Can't really automigrate settings because of input profiles, but this
will keep the old ones loading.
2025-09-04 12:00:03 +10:00
Stenzek
c33131d153 InputManager: Use scancodes for key mapping 2025-09-04 11:59:28 +10:00
Stenzek
08901c0638 Qt: Fix scroll bar desyncing on icon size change 2025-09-03 22:33:00 +10:00
Stenzek
fb1bd1e283 FullscreenUI: Fix crash when toggling localized titles 2025-09-03 22:33:00 +10:00
Stenzek
76e386c2f6 CrashHandler: Debug break on abort() if debugger attached 2025-09-03 22:33:00 +10:00
Stenzek
8327282143 GameList: Fix covers for disc sets sometimes missing
Path field needs to be unique.
2025-09-03 22:33:00 +10:00
Stenzek
3d73c5cacc Qt: Fix possible cover loss during load 2025-09-03 22:33:00 +10:00
Davide Pesavento
e573f18b01 GameDB: Disable auto analog for Hellnight (#3551) 2025-09-03 20:01:24 +10:00
Stenzek
e02c991924 Deps: Patch Qt fusion style
Stop the checkboxes having such bright outlines, it looks terrible.
2025-09-03 20:00:33 +10:00
Stenzek
7c2585d265 Deps: Make Qt build options more consistent 2025-09-03 19:59:53 +10:00
Stenzek
25b44f4283 Qt: Wire up new key glyphs 2025-09-02 23:42:09 +10:00
Stenzek
a390797213 Data: Add new PromptFont glyphs 2025-09-02 23:42:09 +10:00
Stenzek
59542b0397 Deps: Update Qt, SDL and zlib-ng 2025-09-02 22:28:29 +10:00
Stenzek
2d3ebc867c System: Fix safe mode details not showing 2025-09-02 12:26:22 +10:00
zkdpower
d2a2a78237 Update the Simple-Chinese Translation to latest. (#3547) 2025-09-02 12:19:28 +10:00
Anderson Cardoso
fd9c3cd2fd Update duckstation-qt_pt-BR.ts (#3548) 2025-09-02 12:19:18 +10:00
Davide Pesavento
6d2f3dc6c2 Qt: Fix zooming with mouse wheel in game list (#3549) 2025-09-02 12:19:13 +10:00
Davide Pesavento
2514814bbb GameDB: A few more sort names 2025-09-02 12:18:55 +10:00
Davide Pesavento
2215f413e0 GameDB: Restore "(Soviet)" suffix on disc 2 of some C&C games
Accidentally dropped in 6e421b9d4a.
2025-09-02 12:18:55 +10:00
Stenzek
fc29fbab50 Qt: Don't try to load directory as background image 2025-09-02 12:12:10 +10:00
Stenzek
4b472dd51b GameList: Improve grid size calculations
Can't seem to get the width to compute incorrectly on my machine
anymore.
2025-09-02 12:07:39 +10:00
Stenzek
ddaac7eb4c GameList: Use save title for cover image lookup 2025-09-01 20:22:56 +10:00
Stenzek
0867decc87 Qt: Use widget-local device pixel ratio for game list
Fixes blurry icons in mixed DPI environments.

At least on Windows.
2025-09-01 20:16:13 +10:00
Stenzek
019636b71f Qt: Use DevicePixelRatioChange for DisplayWidget 2025-09-01 19:55:20 +10:00
Stenzek
126171f5de Qt: Fix memory card icons drawing on themselves
Also disable column title highlighting, and fix the width of the icon
column.
2025-09-01 19:39:43 +10:00
Stenzek
6dd78b1593 MediaCapture: Fix default video codec on MacOS 2025-09-01 19:39:43 +10:00
AM_Erizur
91f25b602e Controller: Add Start/Select bindings for the Pop'n Controller (#3546)
The Pop'n Controller has two small white buttons on the top which represent the normal PS Digital Start/Select buttons. These are needed for disc swaps inside Pop'n Music 2/5/6 as the game requests that you press the Start button (not the Red button) to startup the new disc inserted.
2025-09-01 19:39:34 +10:00
Davide Pesavento
6a0249b039 Qt: Hide game list vertical header (#3545)
Got lost in the refactoring in 5f8716a9f0.

Also remove two no-op function calls.
2025-09-01 19:20:30 +10:00
Davide Pesavento
e933716d21 GameDB: Add sort name to several more game series (#3544) 2025-09-01 19:20:24 +10:00
Stenzek
44908fe7f4 Qt: Respond to DPR change in memory card editor 2025-08-31 23:37:58 +10:00
Stenzek
e89590be4f Qt: Avoid QPixmap -> QIcon conversion in getIconForGame() 2025-08-31 23:02:13 +10:00
Stenzek
d69935eef0 Qt: Fix warning 2025-08-31 20:36:42 +10:00
Stenzek
e32e64420e StringUtil: Fix logical errors 2025-08-31 20:36:42 +10:00
Stenzek
faa75991a0 Tests: Add more unit tests for common classes 2025-08-31 20:36:42 +10:00
Stenzek
db2f563db6 dep/googletest: Update to v1.17.0 2025-08-31 18:34:49 +10:00
Stenzek
b8952dafac Qt: Don't use memcard icon cache for window icon when scaled
It'll get scaled up and down again otherwise.
2025-08-31 15:03:34 +10:00
Davide Pesavento
3cb275d878 Qt: Use grid layout in cheat code editor (#3543) 2025-08-31 14:55:22 +10:00
Stenzek
e1c0753d3d Qt: Use path as tie breaker when sort titles equal 2025-08-31 14:54:51 +10:00
Stenzek
f2f06a746b FullscreenUI: Fix game properties title 2025-08-31 14:46:37 +10:00
Stenzek
5f8716a9f0 Qt: Simplify icon scaling
- Merge the two sliders into one.
- Scale the type icons as well as the game icons.
- Remove redundant slots.
2025-08-31 14:46:36 +10:00
Stenzek
48ac353210 Qt: Disable game list toolbar when no games found 2025-08-31 14:45:43 +10:00
Stenzek
abde6e4316 Qt: Move scaling helper to cpp file 2025-08-31 14:45:43 +10:00
Davide Pesavento
d499d8e2d8 Qt: Avoid a full reset when toggling show cover titles / localized titles 2025-08-31 13:05:41 +10:00
Davide Pesavento
6765b2feb0 Qt: Delete some redundant code in GameListModel
The settings are already modified by the caller.
The cover cache is cleared by refreshCovers().
2025-08-31 13:05:41 +10:00
Ariel Nogueira Kovaljski
b0dd909cf8 Qt: Resizable game list icons (#3539)
* Qt: Sharp Bilinear scaling for gamelist icons

* Single function for Sharp Bilinear scaling of icons

* Qt: Resizable game list icons [PoC]

* Fixed dynamic row scaling and size slider

* fix some duplicate lines

* made scaleMemoryCardIconWithSharpBilinear inline and added constant for icon padding

* removed resizeEvent from GameListListView
2025-08-31 12:37:20 +10:00
Stenzek
56e1713e27 GameList: Support scanning and caching relative paths 2025-08-31 12:32:15 +10:00
Stenzek
0a271cd7d5 StringUtil: Fix CompareNoCase for prefixes 2025-08-31 12:05:45 +10:00
Stenzek
7cd0d412eb Settings: Fix portable mode for AppImages 2025-08-31 12:05:45 +10:00
Stenzek
c1bb183caa FullscreenUI: Fix selecting disc set entries in list/grid 2025-08-31 01:40:18 +10:00
zkdpower
92c056107c Update the Simple-Chinese translation to latest. (#3540) 2025-08-31 01:33:10 +10:00
Stenzek
d77c92de33 FullscreenUI: Fix incorrect disc set window title 2025-08-31 01:32:38 +10:00
Stenzek
86333e9977 System: Fix crash on starting non-database game 2025-08-31 01:32:36 +10:00
Stenzek
dec06fa67d GameDatabase: Use once_flag for thread-safe initialization 2025-08-30 23:50:39 +10:00
Stenzek
2b519b1a94 GameDatabase: Check timestamp of discsets.yaml 2025-08-30 23:30:24 +10:00
Stenzek
e35b49d6e5 GameDB: More instances of sort titles 2025-08-30 23:30:22 +10:00
Stenzek
17872fec89 Qt: Fix compile warning 2025-08-30 22:06:11 +10:00
Stenzek
970f2ed9d6 GameDB: Fix lint errors 2025-08-30 22:06:11 +10:00
Stenzek
39fcbf7a19 GameDB: Add sort name to Crash/Final Fantasy games
Now they're shown in chronological order.
2025-08-30 21:52:57 +10:00
Stenzek
2ed8c024a3 Qt: Show English and localized names in tooltip 2025-08-30 21:41:54 +10:00
Stenzek
29327b3e22 GameDB: Add localized names
Sourced from a combination of manual lookups, the Redump database
and the Retool clone list metadata.
2025-08-30 21:33:47 +10:00
Stenzek
8bfc31a59c GameDatabase: Refactor disc sets
Store the sets in a separate file, and use pointers to reference instead
of string matching. This allows us to use the unsuffixed display names.
2025-08-30 21:33:47 +10:00
Stenzek
d00b897257 GameDB: Add sortName for games starting with 'The' 2025-08-30 21:33:47 +10:00
Stenzek
6e421b9d4a GameDB: Add unsuffixed display names
No more '(USA)' and '(Europe)' suffixes.
2025-08-30 21:33:46 +10:00
Stenzek
a8b4bb3fce GameDatabase: Add sort title, localized title, and save title fields 2025-08-30 21:33:46 +10:00
Stenzek
1aa92c7667 GameDB: Normalize multi-line strings 2025-08-30 21:33:46 +10:00
Stenzek
d13d3d89f9 Resources: Relocate PromptFont key glyphs to high range
Stops them clashing with full-width characters used in Japanese titles.
2025-08-30 21:33:45 +10:00
Stenzek
4738fceb43 Updater: Fix pause until mouse move on Mac 2025-08-28 22:23:31 +10:00
zkdpower
2182a0d84d Update the Simple-Chinese Translation to latest. 2025-08-28 22:22:54 +10:00
Anderson Cardoso
f6fd1e9822 Atualização Português do Brasil (#3538)
Atualizado para a última versão
2025-08-28 22:21:01 +10:00
Stenzek
835390fa99 Cheats: Make message OSD key consistent 2025-08-27 22:31:24 +10:00
GregoireLD
2c28e457bc Updater Application Icon Update (#3535)
* Update Updater icons

* Small correction

* Shadow correction

* Box correction
2025-08-27 22:27:44 +10:00
AnthonyRyuki
7f36401145 Update duckstation-qt_it.ts (#3534) 2025-08-27 22:26:57 +10:00
Ariel Nogueira Kovaljski
b0a63f95c9 Qt: Sharp Bilinear scaling for memcard icons (#3536) 2025-08-27 22:18:46 +10:00
Davide Pesavento
f303d57447 GameDB: Disable auto analog mode on several SMT games (#3532) 2025-08-26 17:32:41 +10:00
zkdpower
c76a8911d2 Update the Simple-Chinese Translation to latest. (#3533) 2025-08-26 17:32:05 +10:00
Davide Pesavento
a46e43fb7e GameDB: Enable PGXPPreserveProjFP for Ghost in the Shell (#3531)
And add AnalogController to the NA version, the left stick works just fine.
2025-08-26 17:31:54 +10:00
Stenzek
87f2c54ddd FullscreenUI: Unify Prefer GLES option name 2025-08-26 17:31:22 +10:00
Stenzek
e5fd12acb3 Qt: Disable game widget while system is starting 2025-08-25 21:29:34 +10:00
Stenzek
eedf417f23 CMake: Add possible missing include directory 2025-08-25 21:29:34 +10:00
Stenzek
63350c3d83 GPU/HW: Fix uninitialized pipeline fields 2025-08-25 21:29:33 +10:00
Stenzek
de39ff5e9b GPUDevice: Fix ROV support being disabled
Regression from 6e926041e5
2025-08-25 21:29:33 +10:00
Ariel Nogueira Kovaljski
2bd7fe8786 Qt: Disable column sorting indicator and adjust labels in memcard editor (#3528) 2025-08-25 21:29:11 +10:00
Davide Pesavento
f0c0ca3e09 GameDB: Fix metadata for Nightmare Creatures I & II 2025-08-25 21:28:53 +10:00
Davide Pesavento
7c398c4a99 GameDB: Turn PGXPPreserveProjFP off for Persona 2025-08-25 21:28:53 +10:00
Víctor "IlDucci
dcb6730cd8 Spanish (Spain) translation update 2025/08/25 (#3530)
- Translated latest changes.
2025-08-25 21:28:31 +10:00
Stenzek
1ef1a2d3f4 System: Add XZ save state compression
For when space is really at a premium.

Also use CompressHelpers to reduce duplication.
2025-08-24 15:10:28 +10:00
Stenzek
bbd150823c CompressHelpers: Tidy up and add Deflate 2025-08-24 15:10:28 +10:00
Davide Pesavento
2f39820305 GameDB: PGXP CPU mode for Nightmare Creatures II 2025-08-24 15:10:08 +10:00
Davide Pesavento
fb56c99993 GameDB: Disable widescreen in Fear Effect 2
FMV backgrounds as in the first game.
2025-08-24 15:10:08 +10:00
Davide Pesavento
24e496164e GameDB: Fix metadata for Darkstone
And genre for a couple other games.
2025-08-24 15:10:08 +10:00
Davide Pesavento
4e96fde477 GameDB: Disable disc speedup on MDEC for Diablo
Also add AnalogController, which is technically supported by the game,
but disable auto analog mode because the sticks don't do anything.
2025-08-24 15:10:08 +10:00
Davide Pesavento
b3d6b3708b GameDB: PGXP CPU mode for Azure Dreams 2025-08-24 15:10:08 +10:00
Stenzek
8533ab7f21 Qt: Fix editing second memory card 2025-08-24 01:49:57 +10:00
Stenzek
3b1dcde36f Qt: Force memory card editor icons to 32x32 2025-08-24 01:31:58 +10:00
Stenzek
d4b85ef6f1 InputManager: Increase macros per pad
No overhead to doing so now.
2025-08-23 22:48:06 +10:00
Stenzek
7d8e11d3c0 InputManager: Make macro button storage dynamic 2025-08-23 22:48:06 +10:00
Stenzek
a1f81d99a9 InputManager: Pack state in struct 2025-08-23 22:17:01 +10:00
Stenzek
b67bf20335 Mini: Fix missing format in FormatNumber() 2025-08-23 21:29:27 +10:00
Stenzek
fda28eaea0 DMA: Decrease slice size when MDEC is active/decoding
Prevents the FIFO getting too large, which causes too large chunks of
CPU time to be stolen and leads to games losing interrupts.

Strangely, this doesn't seem to affect performance in most games, except
the one that it fixes which has a 10-15% hit.

Fixes videos locking up in Cinema Eikaiwa Series Dai-1-dan - Tengoku ni
Ikenai Papa.

Also fixes hangs in Simple 1500 Series Vol. 57 - The Meiro.
2025-08-23 21:29:27 +10:00
Stenzek
6bef5a41aa OpenGLDevice: Disable PBOs on Panfrost driver
On RK3588, it's almost twice as fast to not use PBOs with the
software renderer.

Prop driver is still about 20% faster.
2025-08-23 19:14:42 +10:00
Stenzek
e551a96278 Qt: Don't disable debugger code view while running
Gets rid of the flicker.
2025-08-23 15:53:36 +10:00
Stenzek
da18a9508b Qt: Sync debugger breakpoint list with main
Simpler, less error prone.
2025-08-23 15:48:38 +10:00
Stenzek
686c4b81c1 Qt: Add custom code view for debugger
Branch arrows, syntax highlighting.
2025-08-23 15:39:14 +10:00
Stenzek
e907bbf831 Qt: Use a delegate to lazily resize/render icon pixmaps 2025-08-23 14:53:02 +10:00
Ariel Nogueira Kovaljski
645344b8ff Animated icon in memcard editor (#3526) 2025-08-23 14:44:27 +10:00
Stenzek
19f17007ec GameDB: Max speedup cycles for Driver/Driver 2 2025-08-23 13:18:40 +10:00
Stenzek
80fcd14a26 CPU/Recompiler/RISCV64: Replace lwu with lw in a couple of places
Consistency.
2025-08-23 13:09:36 +10:00
Stenzek
7de367fc2b CPU/Recompiler: Remove unused function pointer 2025-08-23 13:00:46 +10:00
Stenzek
34e0eab9f1 CPU/Recompiler: Check downcount in interpret block
Fixes application locking up with CDS=Max in Driver.
2025-08-23 12:59:29 +10:00
Stenzek
6e926041e5 GPUDevice: Move options to create flags
And add prefer-GLES-context as a config setting, instead of
environment variable.
2025-08-20 23:07:56 +10:00
Stenzek
c1d0cf3906 GameDB: Titan Wars overrides
Game's CD code appears to be super dodgy, and relies on ack timing
being varingly significantly higher than the average on console.

If seeks are too fast, the game will crash too.

Underclocking by 5% apparently makes it run consistently.
2025-08-20 23:07:56 +10:00
Stenzek
6e864a36ed GameDatabase: Allow CPU overclock override 2025-08-20 23:07:56 +10:00
Stenzek
86006e3d0c System: Apply setting restrictions before gamedb
Allows overriding of more options.
2025-08-20 23:07:56 +10:00
Davide Pesavento
826eff35e8 GameDB: Set max speedup cycles to 70k for Resident Evil 3 too (#3524)
Same issues as RE2.
2025-08-20 16:45:56 +10:00
Davide Pesavento
c1e71820d7 Qt: Disable UI for fast boot & disc speedup if marked incompatible in the DB (#3525) 2025-08-20 16:45:10 +10:00
bl@ck_m@ge
28db2be7f6 GameDB: Disable auto analog on more games (#3523) 2025-08-20 16:44:22 +10:00
Davide Pesavento
0ff6a5c647 GameDB: Add compatibility rating to a few games 2025-08-20 16:43:59 +10:00
Davide Pesavento
ae99e8d31d GameDB: Disable widescreen on Suikoden 2025-08-20 16:43:59 +10:00
Davide Pesavento
40383f58f7 GameDB: Increase max speedup cycles for Breath of Fire III 2025-08-20 16:43:59 +10:00
Davide Pesavento
d3024019bd GameDB: Increase max speedup cycles for Brave Fencer Musashi 2025-08-20 16:43:59 +10:00
bl@ck_m@ge
e00d6960d2 GameDB: Disable auto analog mode on Backstreet Billiards (#3521) 2025-08-20 16:43:44 +10:00
Stenzek
c7a4505ad8 Qt: Check screen bounds when restoring window positions
Ensure that the geometry is not off-screen.

It won't work on Wankland, and apparently doesn't support multiple monitors on X11.

So I'm just going to disable the whole thing on Linux, not just because my care
levels are practically non-existant, but also because I don't want to deal with
people moaning that their window manager's behavior is causing positions to
revert to the primary monitor. Just yolo it and hope for the best....
2025-08-20 16:43:12 +10:00
Davide Pesavento
4c349ffd44 GameDB: Disable widescreen and speedup on MDEC for Legend of Mana (#3520) 2025-08-19 00:10:12 +10:00
Davide Pesavento
f5d668fea9 GameDB: Disable auto analog mode on Armored Core games (#3519) 2025-08-19 00:09:58 +10:00
bl@ck_m@ge
0fe6928d62 GameDB: disable auto analog for some shoot'em up games (#3518) 2025-08-19 00:09:47 +10:00
Stenzek
4e39c3061f GameDB: Rollcage Stage II
PGXP-CPU to fix gaps in geometry.
2025-08-17 18:02:58 +10:00
Stenzek
bcb6f98cbd Common: Eliminate more static functions in headers 2025-08-17 13:15:56 +10:00
Davide Pesavento
d526818d33 GameDB: Disable auto analog mode on Shadow Tower (#3516) 2025-08-17 12:15:43 +10:00
Anderson Cardoso
921190ae1b Atualização Português do Brasil (#3517)
Atualizado para a última versão.
2025-08-17 12:15:34 +10:00
Stenzek
a8fdeb82d7 GameDB: Tighten DMA for Hot Wheels Turbo Racing
Apparently it helps, but I couldn't reproduce this myself.
2025-08-17 12:15:05 +10:00
Stenzek
1743bfa5fe Qt: Fix double translation in GameListWidget 2025-08-17 12:15:05 +10:00
zkdpower
1bc9f1efe7 update the Simple-Chinese translation to latest. (#3515) 2025-08-17 02:17:43 +10:00
Davide Pesavento
276211b9fc GameDB: Disable auto analog mode on Echo Night (#3514) 2025-08-16 15:56:13 +10:00
Davide Pesavento
f7c334bd46 GameDB: Disable PGXP and widescreen on Lunar games 2025-08-16 15:56:03 +10:00
Davide Pesavento
edf9b53bf7 GameDB: Disable PGXP and widescreen for Chrono Trigger 2025-08-16 15:56:03 +10:00
Stenzek
414ddf78cc Achievements: Display warning for unsupported achievements 2025-08-16 13:32:21 +10:00
Stenzek
95ccd7cea2 FullscreenUI: Update translation strings 2025-08-16 13:28:51 +10:00
Stenzek
7a359e54be GPU: Add separate scaling and FMV scaling options 2025-08-16 13:11:36 +10:00
Stenzek
006de3a6df Qt: Don't manually populate combos for enums 2025-08-16 13:05:53 +10:00
Davide Pesavento
962198f769 GameDB: Adjust crop area for Final Fantasy IV (#3510) 2025-08-15 19:54:13 +10:00
Davide Pesavento
13ce6469f2 GameDB: Disable widescreen on Alone in the Dark - The New Nightmare (#3509) 2025-08-15 19:53:59 +10:00
Davide Pesavento
f340bdb2bc CI: Bump actions/checkout to v5 (#3508) 2025-08-15 19:53:44 +10:00
bl@ck_m@ge
d9d3b6a658 GameDB: disable auto analog mode for Pepsiman (#3511) 2025-08-15 19:53:07 +10:00
Connor McLaughlin
8597873330 SDLInputSource: Fix DirectInput 2025-08-15 01:02:23 +10:00
Stenzek
327e9b5ce0 XInputSource: Set initial state on connection
Instead of after polling.
2025-08-13 16:39:01 +10:00
Stenzek
c0c022591c System: Synchronize input binding state on startup
This means that buttons which are pushed should register as pushed when
the system starts, rather than requiring them to be released and pressed
again.

Hopefully will allow passthrough of controllers that ground/press button
combinations to indicate the type of controller present.
2025-08-13 16:39:01 +10:00
Stenzek
33b3a6efda InputSource: Support querying current values 2025-08-13 16:39:01 +10:00
Stenzek
5bdcde76ab Qt: Expose advanced SDL options 2025-08-13 16:39:01 +10:00
Stenzek
54ab073f1a SDLInputSource: Add options for XBox HIDAPI/rawinput 2025-08-13 16:39:01 +10:00
Stenzek
09a3c99c3b AudioStream: Fix crash with timestretch disabled 2025-08-13 16:39:01 +10:00
Davide Pesavento
0a53bc47c3 Qt: Remove redundant layout from AchievementSettingsWidget 2025-08-12 21:48:24 +10:00
Davide Pesavento
0fc9de781f Qt: Fix crash toggling achievements in per-game settings 2025-08-12 21:48:24 +10:00
Stenzek
47e8d90e25 GPU: Fix screenshot size when showing VRAM 2025-08-12 00:33:59 +10:00
Stenzek
a2c015b907 GameDB: Disable WS/PGXP on 2D Final Fantasy games 2025-08-11 22:39:01 +10:00
Stenzek
fc129a9733 GameDB: Alien Resurrection
Needs PGXP-CPU for gaps in geometry.
2025-08-11 13:20:04 +10:00
Stenzek
cdd0086c54 Qt: Fix toggling read/write breakpoints 2025-08-11 12:10:14 +10:00
Davide Pesavento
9576a3adf1 Achievements: Fix "beaten" condition (#3506)
Apparently there are sets (e.g. Colin McRae Rally) with zero
progression achievements.
2025-08-11 12:10:01 +10:00
Davide Pesavento
de2d6d1aa0 Qt: More accurate game list column width estimation (#3505)
Three main changes:
1. Use the pixel metrics of the style instead of hardcoded values.
2. Account for the potential sort indicator in the column header.
3. In the two "Size" columns, the largest numerical value does not
   necessarily result in the widest text string, so just use the
   value 8888.88 to estimate the width (we assume that 8 is the
   widest digit, which is true for many proportional fonts).
2025-08-11 12:09:52 +10:00
Stenzek
c519d3ca76 GameDB: Add analog joystick to supported games
Data from manual testing and https://docs.google.com/spreadsheets/d/11xMh5utlKDukC3sWWQUUWPj4NSrJH5ouvOsHFRC_egs/edit?usp=sharing
2025-08-10 14:41:00 +10:00
Stenzek
2a2a011854 FullscreenUI: Improve title padding of achievements
Need to redo this whole dialog's layout, but this'll do for now.
2025-08-09 21:19:43 +10:00
Davide Pesavento
d65c8a3073 Achievements: Keep track of the earliest unlocked win condition (#3504)
For sets that have more than one win condition, e.g. RE2.
2025-08-09 18:01:01 +10:00
Stenzek
9b99d997f5 Achievements: Fix display of game completion date 2025-08-09 17:03:50 +10:00
Davide Pesavento
b75be05971 Achievements: Fix counting progression achievements (#3503) 2025-08-09 16:40:31 +10:00
Stenzek
a84d583c42 CI: Missed one workflow 2025-08-09 16:40:10 +10:00
Stenzek
7830a6d236 Deps: Bump to SDL3 3.2.20 2025-08-09 13:53:26 +10:00
Davide Pesavento
a5c61383a8 GameDB: Disable disc speedup on MDEC for Star Ocean - The Second Story 2025-08-09 12:47:36 +10:00
Davide Pesavento
4e662f1fff GameDB: Add compatibility rating to a couple of games 2025-08-09 12:47:36 +10:00
Davide Pesavento
474d5dc9db GameDB: Delete obsolete comment
Works fine for me with fast boot and even with maximum disc speedup.
2025-08-09 12:47:36 +10:00
Davide Pesavento
2f8460b90c GameDB: Disable disc speedup on MDEC for Chrono Cross 2025-08-09 12:47:36 +10:00
Davide Pesavento
1984d8c85b GameDB: Disable widescreen for Arc the Lad II 2025-08-09 12:47:36 +10:00
KamFretoZ
20e9b8d271 Qt: Fix buffer size help text (#3501) 2025-08-09 12:47:16 +10:00
Stenzek
42dc5e416d CI: Fix PR builds failing 2025-08-09 12:46:45 +10:00
Stenzek
09e785555d Qt: Fix updater download size display 2025-08-08 23:54:39 +10:00
Stenzek
45a2257436 CMake: Update version requirements 2025-08-08 23:54:39 +10:00
Stenzek
5fc4fbcf36 Qt: Improve display of version in updater 2025-08-08 23:37:25 +10:00
Stenzek
aa2a0cddb5 Data: Update SDL game controller database 2025-08-08 23:32:33 +10:00
Stenzek
e38039873e Achievements: Infer and display beaten/completed time 2025-08-08 23:32:33 +10:00
Davide Pesavento
5c48f853da GameDB: Fix cropping in Tomb Raider 4 & 5 (#3500) 2025-08-08 23:15:26 +10:00
KamFretoZ
ebbc1e98b6 Qt/Updater: Move Download Size indicator to the top (#3499) 2025-08-08 23:15:08 +10:00
Stenzek
edd63dfd9c Qt: Remove now-unused resize column helpers 2025-08-07 21:26:40 +10:00
Stenzek
670027107e Qt: Use header resize mode for disc windows 2025-08-07 21:26:40 +10:00
Stenzek
93d6fc64da Qt: Use header resize mode for memory card editor 2025-08-07 21:26:40 +10:00
Stenzek
c6c8039211 Qt: Use header resize mode for settings panels 2025-08-07 21:26:40 +10:00
Stenzek
bb7833168e Qt: Use header resize mode for memory scanner 2025-08-07 21:03:06 +10:00
Stenzek
73f326cd75 Qt: Use header resize mode for game list column widths
Simpler code, no need for workarounds in showEvent() either.
2025-08-07 21:00:22 +10:00
Stenzek
76fdbb0b38 Qt: Add tooltips for more fields in game list 2025-08-07 20:49:46 +10:00
Stenzek
a080228ee5 Qt: Don't reset model for every scanned game
Make the UI a little more responsive.
2025-08-07 20:49:46 +10:00
Davide Pesavento
2669b026d7 Qt: Remove obsolete comment
The logic was changed in 281119b812
2025-08-07 20:49:36 +10:00
Davide Pesavento
bc908aa4cc GameDB: Adjust crop area for Silent Hill 2025-08-07 20:49:36 +10:00
Stenzek
d2caabd04a Qt: Fix exit on separate window close with FSUI active 2025-08-03 15:15:47 +10:00
Stenzek
a2222d805b Qt: Fix inability to exit with HC mode active 2025-08-03 15:15:47 +10:00
Stenzek
501380ec7c Achievements: Split up overlay setting
Split into challenge indicator modes, leaderboard trackers, and progress
indicators.
2025-08-03 15:15:47 +10:00
Stenzek
e98871ad47 Settings: Remove middle padding
Why did I do this...
2025-08-03 12:27:14 +10:00
Stenzek
5c682d2325 ImGuiOverlays: Frame time history is aligned 2025-08-02 17:44:53 +10:00
Stenzek
628e41f849 ImGuiManager: Don't render when skipping present
Fixes very slow scrolling in save state selector when fast forwarding,
and generally just giving a "true" DeltaTime is probably a good thing.
2025-08-02 14:41:01 +10:00
Stenzek
fe11c658ee ImGuiOverlays: Fix save state selector out-of-order drawing
Specifically the animated background appearing in front of the
thumbnails.
2025-08-02 14:41:01 +10:00
Stenzek
be48e5c681 dep/imgui: Demo window should not enabled 2025-08-02 14:41:01 +10:00
Stenzek
143ae49f2c AudioStream: Use larger target size only when intentionally running slow
Fixes buffer underruns at fast or slow speed settings.
2025-08-02 14:41:01 +10:00
Stenzek
d3f04dcda9 AudioStream: SIMD averaging window calculation 2025-08-02 14:15:43 +10:00
Stenzek
9b4698d48c AudioStream: Back off resets that don't pass threshold over time
That way a very occasional lag/overflow doesn't cascade into
unnecessary tempo adjustment.
2025-08-02 14:15:41 +10:00
Stenzek
f464d42be5 AudioStream: Fix glitches when disabling fast-forwarding
Usually happened at high frame rates.
2025-08-02 13:33:52 +10:00
Stenzek
6c9d339855 PerformanceCounters: Align to 4 elements
And use minv()/maxv().
2025-08-02 13:33:52 +10:00
Stenzek
b81dfa205c GPU: Simplify screenshot size calculation
And don't miscalculate it for some games.
2025-08-01 19:50:27 +10:00
Stenzek
4644db00ea GPU: Fix screenshot size in uncorrected mode 2025-07-31 23:30:07 +10:00
Stenzek
a27fedae86 Qt: Various fixes to memory scanner UI
Reduce repetition in formatting.
Make formatting consistent between saving/loading watches.
Fix description display.
2025-07-30 22:39:53 +10:00
Stenzek
02a1ccbcdc Qt: Persist memory scanner watch list across instances
i.e. save it to a file.
2025-07-30 22:21:35 +10:00
Stenzek
52d9f73f98 Misc: Replace a bunch of static qualifiers with inline
Allows deduplication, shaves a couple percent off the debug binary size.
Release binary size difference is negligible.
2025-07-30 21:43:12 +10:00
Stenzek
c8dd9995ec GameDatabase: Remove redundant SetRymlCallbacks() 2025-07-30 21:12:38 +10:00
Stenzek
fef553ff12 Qt: Display 'First Value' in memory scanner 2025-07-30 21:08:38 +10:00
Stenzek
a9ce005a20 Qt: Fix maximized state not saving to config
Restores the "old" position when restoring again. Except on Wayland,
where nothing works.
2025-07-30 20:30:55 +10:00
Stenzek
3768940fbb Qt: Fix assertion on shutdown after resize 2025-07-30 20:18:42 +10:00
Stenzek
690f843e2a Qt: Auto switch between any/changed values in memory scanner 2025-07-29 23:10:25 +10:00
Stenzek
5ed7961390 Qt: Refuse to start in known broken environments 2025-07-29 23:10:25 +10:00
Stenzek
30df16cc76 Scripts: Remove PKGBUILD
I originally provided this an alternative to the broken AUR packages.

However, it seems that Arch users would rather use broken packages and
keep complaining to me instead of their packager. I specifically forbid
packages for DuckStation (see README.md), and there's no way to request
removal of these packages without handing my details over to a
distribution I want nothing to do with.

So this is step one. Next step will be removing Linux support entirely,
because I'm sick of the headaches and hacks for an operating system that
only compromises 2% of the userbase, and I don't even use myself. But I'm
hoping the Linux community will be reasonable, because as someone giving
up my free time and not being compensated in any way, I shouldn't have
to deal with this.

Just grep the source for "wayland" and you'll see what I mean.
2025-07-29 23:10:22 +10:00
Stenzek
ce53e29997 Qt: Fix possible crash on shutdown 2025-07-29 20:56:58 +10:00
Stenzek
e5593c973f CI/Flatpak: Hopefully fix build cache
If this doesn't work, just going to remove it completely. So far past
the point of caring.
2025-07-29 17:37:09 +10:00
Stenzek
acf78970c6 Qt: Create main window before starting EmuThread
Stops signals such as achievements active changed being lost.
2025-07-29 17:23:18 +10:00
Stenzek
f569448ea1 System: Centralize pause checks 2025-07-29 17:23:18 +10:00
Davide Pesavento
fbca692629 GameDB: Set max speedup cycles to 70000 for Resident Evil 2 (#3496)
Freezes after (some) door transitions otherwise.
2025-07-29 17:23:05 +10:00
Davide Pesavento
e821b13ba2 GameDB: Tweak compat settings for Parasite Eve 2 (#3492)
We no longer need to disable read speedup all the time thanks to the
new DisableCDROMSpeedupOnMDEC trait. Unfortunately we still have to
increase the max speedup cycles to avoid other issues ranging from
the game simply freezing to audio glitches during area transitions.
2025-07-29 17:22:52 +10:00
Stenzek
188be7de05 Deps: Revert Harfbuzz to 11.2.1
Match Qt bundled version. Might help with crashes I can't reproduce in
text shaping.
2025-07-29 13:50:42 +10:00
Stenzek
042930d735 FullscreenUI: Fix focus loss with grid/list button 2025-07-28 20:42:50 +10:00
zkdpower
fac47b135a Update the Simple-Chinese translation to latest. (#3495) 2025-07-28 20:42:12 +10:00
Davide Pesavento
168b80dd49 Qt: Add tooltips to game list 2025-07-27 21:31:30 +10:00
Davide Pesavento
df65879d06 GPU: Fix typo 2025-07-27 21:31:30 +10:00
Stenzek
300d158320 FullscreenUI: Fix clock position in pause menu 2025-07-27 13:45:46 +10:00
Stenzek
5bfe5cf121 dep/imgui: Remap non-breaking space to space
MacOS likes to use them for formatting.
2025-07-27 13:45:08 +10:00
Stenzek
351f67a227 CMake: Use -g1 for Release builds 2025-07-27 13:03:55 +10:00
Davide Pesavento
70d6a2d1af Achievements: Revert back to long date format for unlock/submit time 2025-07-27 13:03:38 +10:00
Davide Pesavento
71591e8219 Qt: Use localized date/time formatting in a few more places 2025-07-27 13:03:38 +10:00
Stenzek
0de3ffab0c Data: Update SDL game controller database 2025-07-27 02:17:18 +10:00
Stenzek
36718c6e99 CMake: Force debug symbols on Linux
Fixes crash backtraces.
2025-07-27 02:15:49 +10:00
Stenzek
634fac4410 CrashHandler: Fix recursive backtrace on Linux 2025-07-27 02:01:58 +10:00
Stenzek
2b18df0910 MediaCapture: Don't crash if video codec supports 0 formats 2025-07-27 01:36:13 +10:00
Stenzek
44237146ef FullscreenUI: Fix remaining fixed date/time formatting locations 2025-07-27 01:25:08 +10:00
Stenzek
29e92705c4 FullscreenUI: Add option to hide grid view labels
Also handle titles that span multiple lines.
2025-07-26 23:24:02 +10:00
Stenzek
96c224497b Qt: Use selected language locale for formatting
But check the prefix against the system locale, so that e.g. en can use
the system country.
2025-07-26 22:33:10 +10:00
Stenzek
c82351a14a Qt: Implement 'System Language' language option 2025-07-26 22:33:10 +10:00
Stenzek
7f5f90338f Qt: Use application locale in most places 2025-07-26 22:33:10 +10:00
Stenzek
ef320c62a3 Qt: Cache app locale object 2025-07-26 22:33:10 +10:00
Stenzek
f91ee34fa4 Qt: Merge qttranslations.cpp with qthost.cpp
No need to keep it separate anymore since we're not precalculating glyph
ranges.
2025-07-26 22:33:10 +10:00
Stenzek
9b353f841e Misc: Use host locale formatting for dates
Fixes achievement unlocks and lasted played times being shown in US
format.
2025-07-26 22:33:09 +10:00
Stenzek
1c8699b8a0 Host: Add FormatNumber()
Formats the argument according to the system locale, instead of C.
2025-07-26 22:33:09 +10:00
Stenzek
e82218f823 Qt: Fix changing language while game running 2025-07-26 22:33:09 +10:00
Stenzek
47fe487c2e README: Add migration instructions for Flatpak->AppImage 2025-07-26 17:36:50 +10:00
Stenzek
83d521f3d8 CMake: Drop Flatpak workarounds
No longer needed since it is using self-contained.
2025-07-26 17:36:50 +10:00
Stenzek
6c4300c6c7 CI/Flatpak: Simplify deps build
I'll probably drop it in the future since there was only one or two
people who indicated that they're using it. But at least now I don't
have another file I need to keep up to date.

So consider the Flatpak package as deprecated.
2025-07-26 17:36:50 +10:00
Stenzek
3426bcdc71 Deps: Update for July 2025
SDL3 3.2.18
harfbuzz 11.3.2
libjpeg-turbo 3.1.1
libpng 1.6.50
libwebp 1.6.0
libzip 1.11.4
2025-07-26 17:36:50 +10:00
Stenzek
ad4a909aa4 FullscreenUI: Fix incorrect parent directory button 2025-07-26 14:03:43 +10:00
Stenzek
37efd34a99 Qt: Drop renderer option from setup wizard
No need when automatic renderer exists.
2025-07-26 14:03:43 +10:00
Davide Pesavento
d63ae9715f GameDB: Add missing controllers and metadata for The Legend of Dragoon 2025-07-26 14:03:32 +10:00
Davide Pesavento
6e63ceb5a2 GameDB: Add missing metadata for Koudelka
And fix the EU and NA release dates
2025-07-26 14:03:32 +10:00
Víctor "IlDucci
d28c0a00b4 Spanish (Spain) update 2025-07-25 (#3490)
- New strings have been translated.
- Corrected a typo in the "seconds" counter.
- Other minor changes.
2025-07-26 14:03:07 +10:00
Stenzek
d0e00178c3 Qt: Fix fullscreen action enabled on startup 2025-07-24 22:05:24 +10:00
Stenzek
a660c13625 System: Always adjust video size for capture
Fixes auto resolution size with non-multiple-of-4 window sizes.
2025-07-24 21:47:09 +10:00
Stenzek
22fb032f91 GPUThread: Fix very rare or impossible FIFO corruption
If the buffer wraps around once, and the GPU thread does not execute any
commands before the CPU thread reaches the end again, it could lose one
buffer's worth of commands.

Also don't keep incrementing the work count while this is happening.
Super unlikely unless a ton of data is being pushed through the FIFO.
2025-07-24 21:08:53 +10:00
Stenzek
13233cc82e PostProcessing/GLSL: Fix compile error with interface blocks 2025-07-24 12:08:53 +10:00
Stenzek
0522b6ffb5 CDImagePPF: Ignore out-of-range sectors 2025-07-23 22:00:13 +10:00
Stenzek
830b812fc7 GameDB: Set max speedup cycles to 40000 for FF8 2025-07-23 22:00:10 +10:00
Stenzek
fe51439c4b GameDB: Set DisableCDROMSpeedupOnMDEC for a couple of games 2025-07-22 23:04:01 +10:00
Stenzek
b6b1a5e33c CDROM: Add option to disable speedup on MDEC/FMVs 2025-07-22 23:03:22 +10:00
Stenzek
4f1af2f6eb Qt: Increase debugger column size 2025-07-22 22:16:25 +10:00
Stenzek
46cf8e68cd SPU: Display reverb environment in debug window 2025-07-22 22:16:25 +10:00
Stenzek
932104c581 SPU: Fix VU meter display when scrolling 2025-07-22 22:16:25 +10:00
Nahuel Gaitan
56b5b337aa PSFLoader: Fix recursive _lib loading (#3489) 2025-07-22 21:08:45 +10:00
Stenzek
46a071f3e7 Qt: Fix disabling of sprite texture filtering option 2025-07-22 20:30:34 +10:00
Stenzek
2e56f5d3ae Qt: Fix another usage of QObject::disconnect() 2025-07-22 20:28:53 +10:00
Stenzek
a5826ea6ae Qt: Hide apply image patches in game settings
Doesn't makes sense, because game settings are applied after
identification.
2025-07-22 20:18:20 +10:00
Davide Pesavento
a34aee68a7 Declare all namespace-scope constants as inline
This is the idiomatic way since C++17
2025-07-22 19:29:37 +10:00
Davide Pesavento
69da2df8e9 Make all single-argument constructors explicit 2025-07-22 19:29:37 +10:00
Davide Pesavento
9ab4e4d70c Qt: Add game list button to toggle game icons (#3488) 2025-07-21 19:05:04 +10:00
Stenzek
51ce5351d7 CI: Pin AppImageTool version
If it breaks something, I kinda don't care. Not worth it for 2% of
users..
2025-07-21 18:51:34 +10:00
Stenzek
cdd054702c CPU: Log on break exception without PCDrv 2025-07-20 21:10:00 +10:00
Stenzek
a5b46f7676 MediaCapture: Fix use-after-free when starting 2025-07-20 21:09:46 +10:00
Stenzek
161637e3b7 Qt: Disconnect safe mode widget on recreate 2025-07-20 16:58:36 +10:00
Stenzek
7c01bde94e Log: Remove redundant channel 2025-07-20 16:58:24 +10:00
Stenzek
9321a32d39 Qt: Fix startup cancellation on window close 2025-07-20 14:21:42 +10:00
Stenzek
f65ca0dab3 FullscreenUI: Don't round achievements inner progress bars 2025-07-20 14:21:42 +10:00
Stenzek
9e17e38c9d FullscreenUI: Custom draw loading screen 2025-07-20 14:21:42 +10:00
Stenzek
3199617124 FullscreenUI: Use layout scale for loading screen 2025-07-20 14:21:42 +10:00
Stenzek
df9506fbf6 FullscreenUI: Center loading screen logo 2025-07-20 14:21:42 +10:00
Stenzek
311e93fae4 FullscreenUI: Use game path for loading screen image
Makes it work with custom titles.
2025-07-20 14:21:42 +10:00
Stenzek
4440ae3b78 GPUThread: Store copy of game info
Don't save it in FullscreenUI.
2025-07-20 14:21:42 +10:00
Stenzek
5fd61b6e3a Qt: Fix disc icon being used for games without icons 2025-07-20 14:21:42 +10:00
Stenzek
df432c6c64 Qt: Fix crash booting unscanned games 2025-07-20 14:21:42 +10:00
shikulja
47d44701fe Update Russian translation (#3486)
* Update Russian translation

* Update Russian translation

* Update Russian translation

* Update Russian translation
2025-07-20 14:21:24 +10:00
Stenzek
a8506f4708 Qt: Disable more actions while system starting 2025-07-19 18:16:15 +10:00
Stenzek
ad53fc2345 Qt: Fix fullscreen UI shutdown on language change 2025-07-19 18:16:15 +10:00
Stenzek
278614a415 FullscreenUI: Display game cover when loading 2025-07-19 18:16:15 +10:00
Stenzek
75314f79de FullscreenUI: Localize base strings (e.g. dir selector) 2025-07-19 18:16:15 +10:00
Stenzek
63e0acbe9c FullscreenUI: Fix held colour in popup menus 2025-07-19 17:20:37 +10:00
Stenzek
3453c897d1 FullscreenUI: Add native cover download 2025-07-19 17:20:37 +10:00
Stenzek
a9862461f3 FullscreenUI: Add modal progress callback 2025-07-19 17:07:34 +10:00
Stenzek
c922893b6f GameDB: Bump MGS max speedup cycles to 100k
Causes screen flickering at 80k, game crash at 70k, still some
flickering at 90k.
2025-07-19 15:11:04 +10:00
Stenzek
3e232b76b3 Qt: Improve more window close behaviour
- Closing FSUI display window without a game running should not exit the
  application.
- Closing display window with FSUI started should exit the application
  in nogui mode.
2025-07-19 14:34:30 +10:00
Stenzek
8bd493eae0 Qt: Re-update main window geometry on nogui exit
Also fix the game list refresh executing on the incorrect thread.
2025-07-19 13:46:33 +10:00
Davide Pesavento
1b56940ad0 Qt: Update menu and toolbar state when toggling fullscreen via double click
Amends 1289e045b9
2025-07-19 12:14:02 +10:00
Davide Pesavento
f446e24b20 Qt: Don't exit fullscreen when switching to game list with RenderToSeparateWindow
Amends 24a16db437
2025-07-19 12:14:02 +10:00
Davide Pesavento
4c12dc8ab9 Qt: Don't enable window size menu if system isn't running (#3484) 2025-07-19 12:10:34 +10:00
Stenzek
24a16db437 Qt: Handle fullscreen cases on MacOS
If the user exits fullscreen with the window button, restore
render to main.
2025-07-19 01:04:22 +10:00
Stenzek
b545671d67 MetalDevice: Retain references to layer
Apparently the allocate method returns +0 references.
2025-07-19 01:04:19 +10:00
Stenzek
210f492487 MetalDevice: Remove pipeline cache
It seems to be broken when appending using from-source created
libraries.

Similar issues have been described in:
- https://bugreports.qt.io/browse/QTBUG-114338
- https://bugreports.qt.io/browse/QTBUG-108216
2025-07-19 01:04:19 +10:00
Stenzek
05dcb17334 Qt: Fix unused lambda capture warning 2025-07-18 20:29:44 +10:00
Stenzek
6615fc79d6 Qt: Work around autouic bug causing unnecessary recompiles 2025-07-18 20:29:24 +10:00
Stenzek
a002fd2672 Qt: Include moc sources in main source
Saves compiling a bunch of files with MSBuild.
2025-07-18 19:59:13 +10:00
Stenzek
fc613a5267 Qt: Fix incorrect placeholders in translations 2025-07-18 18:04:46 +10:00
Stenzek
9e15fe176c CI: Check placeholders in translation strings 2025-07-18 18:04:22 +10:00
Stenzek
9442ba74af Qt: Remove window state save
Instead, explicitly save the toolbar area. Also adds it to the context
menu.
2025-07-18 17:42:01 +10:00
Stenzek
b2ad193178 Qt: Store window geometry in human-readable form 2025-07-18 17:42:01 +10:00
Stenzek
6b969a0b94 Qt: Refactor and remove multiple sources of truth for render-to-main 2025-07-18 16:14:29 +10:00
Stenzek
0f2ef98747 Qt: Turn cover downloader into a non-modal window
Same as the others.
2025-07-18 13:06:01 +10:00
Stenzek
3f2b6995bc Qt: Fix timestamps in log window if file timestamps on 2025-07-18 12:46:58 +10:00
Davide Pesavento
1289e045b9 Qt: Make "Fullscreen" toolbar button and menu item checkable 2025-07-18 12:44:20 +10:00
Davide Pesavento
2f13538cc0 Qt: Fix game list icons when toggling disc set merging
Also, make sure we call beginFilterChange() in the proxy model
as mentioned in the Qt docs.
2025-07-18 12:44:20 +10:00
Davide Pesavento
4b5be29eb2 Qt: Hide GameListWidget buttons instead of disabling them 2025-07-18 12:44:20 +10:00
Davide Pesavento
21f44b3782 Qt: Refactor GameListWidget tool buttons and corresponding menu actions 2025-07-18 12:44:20 +10:00
Davide Pesavento
01b81c74ef Qt: Fix crash on triggering certain actions before display widget is created (#3482) 2025-07-18 12:43:45 +10:00
Stenzek
67381754fa Qt: Fix game start flicker with hide-main-window checked 2025-07-17 21:46:05 +10:00
Stenzek
c6cb3cdd68 Qt: Update Korean translation by Hack茶ん 2025-07-17 21:46:05 +10:00
Stenzek
6ae334b30c Qt: Avoid wildcard disconnect
See https://bugreports.qt.io/browse/QTBUG-134610
2025-07-17 21:46:05 +10:00
Stenzek
4b62ccf2ff Qt: Redirect Qt messages to logger 2025-07-17 21:46:05 +10:00
Stenzek
6f65a15bb9 CrashHandler: Catch SIGABRT 2025-07-17 21:46:05 +10:00
Stenzek
9c81425043 Qt: Fix format strings in es-ES 2025-07-17 21:46:05 +10:00
Stenzek
2aaeaf6f99 Qt: Add missing event type check 2025-07-17 21:46:05 +10:00
Daniel Nylander
da6ba416c9 Updated Swedish translation (#3481) 2025-07-16 17:11:13 +10:00
Stenzek
a890902d5b Qt: Further eliminate redundant window shows
And remove a couple of hacks.
2025-07-16 17:10:31 +10:00
Anderson Cardoso
40b081c8ff Atualiazação Português do Brasil (#3480)
Atualizado para a última versão
2025-07-16 16:39:16 +10:00
Stenzek
b07998512e Qt: Refactor render window lifecycle
Remove multiple sources of truth, eliminate bugs in handling edge cases
when switching between modes.
2025-07-16 16:38:31 +10:00
Stenzek
a5e3f163a5 Misc: Make bitfield unions trivially copyable 2025-07-13 20:29:00 +10:00
Stenzek
8ca68a052a GPUDevice: Remove unused fields 2025-07-13 20:29:00 +10:00
Stenzek
5c7a599cad Qt: Couple of consistency fixes 2025-07-13 20:29:00 +10:00
Stenzek
cd77ace12a FullscreenUI: Fix going back to root directory on Linux 2025-07-13 20:29:00 +10:00
Stenzek
2dc25a07ac NeGconRumble: Remove unused fields 2025-07-13 19:55:38 +10:00
Stenzek
b93353647f Qt: Clear help text map on reload
Saves keeping messages around for pointers that are no longer valid.
2025-07-13 17:32:56 +10:00
Stenzek
8ef97b9b46 FullscreenUI: Sort unlocked achievements by unlock time 2025-07-13 17:29:52 +10:00
Stenzek
be867c815d FullscreenUI: Minor polish to achievements list 2025-07-13 17:29:37 +10:00
Stenzek
43543ddedc FullscreenUI: Improve icons in file selector 2025-07-13 16:54:54 +10:00
Stenzek
3bb67c785e D3DCommon: Load d3d12.dll dynamically 2025-07-13 16:31:49 +10:00
Stenzek
4ead72747b D3DCommon: Load dxgi.lib dynamically 2025-07-13 16:13:19 +10:00
Stenzek
0195b2886e D3DCommon: Load d3d11.dll dynamically 2025-07-13 16:12:44 +10:00
Stenzek
3928eaff54 D3DCommon: Load D3DCompiler dynamically 2025-07-13 16:11:59 +10:00
Stenzek
5e2e39f642 VulkanDevice: Use driver type enum for auto selection 2025-07-13 15:40:53 +10:00
Stenzek
792b72b955 Qt: Reenable WinPanel style for patches
Partial revert of 7eb2b07.

Looks much worse in Fusion/default style.
2025-07-13 15:33:21 +10:00
Stenzek
97a0f4669f ShaderGen: Fix use of reserved 'packed' keyword 2025-07-13 15:28:46 +10:00
Stenzek
1cad6389aa AnalogController: Fix flipped log message 2025-07-13 15:28:46 +10:00
Davide Pesavento
7eb2b07e39 Qt: Don't draw a frame if there are no patches 2025-07-13 15:27:29 +10:00
Davide Pesavento
d0c3f7d5a2 Qt: Reduce layout margins in postprocessing settings
And remove a redundant VBoxLayout
2025-07-13 15:27:29 +10:00
Davide Pesavento
0e9f116a2e Qt: Turn retroachievements.org into a hyperlink 2025-07-13 15:27:29 +10:00
Stenzek
2fad6478b4 CDImage: Include the WAV file's details when incompatible 2025-07-11 21:25:10 +10:00
Stenzek
2308c5ddc6 Qt: Check cache when getting game icon for window
Apparently forgot this...
2025-07-10 21:33:28 +10:00
Stenzek
9e319ff495 FullscreenUI: Avoid ID duplication in choice dialogs
If two items, e.g. discs happen to have the same display name.
2025-07-10 20:39:14 +10:00
Stenzek
00623ebf8b FullscreenUI: Fix rounding on widget grab rects 2025-07-10 20:37:37 +10:00
Stenzek
f21ab0b70a GPUDevice: Fix ARM GPU detection 2025-07-10 19:36:14 +10:00
Stenzek
13e4515118 GPU: Send read command in SW if stats are enabled
Won't do anything, but it does update the counter.
2025-07-10 19:30:35 +10:00
Stenzek
5d42bbc49f GameDB: Force software for X2 - No Relief
Lots of readbacks.
2025-07-10 19:29:50 +10:00
Stenzek
cd2d0503da System: Fix frame advance+runahead stepping 2 frames 2025-07-10 12:43:23 +10:00
Stenzek
e4e57c674d GPUDevice: Use driver type fields 2025-07-10 12:17:11 +10:00
Stenzek
ef26d5cb74 GPUDevice: Backport driver type detection 2025-07-09 22:17:14 +10:00
Stenzek
1e930c4063 ShaderGen: Drop DRIVER_V3D and DRIVER_POWERVR macros
They're not needed anymore.
2025-07-09 22:12:46 +10:00
Stenzek
cc3bc120a4 OpenGLContext: Prefer GLES over GL<3.2
Ends up having a larger feature set in GLSL.
2025-07-09 21:46:45 +10:00
Stenzek
63adf475d4 VulkanDevice: Avoid defaulting to Vulkan for V3D driver
Image copies are broken.

https://discord.com/channels/695640472202379425/695823554712698962/1392128815689629707
2025-07-09 21:20:43 +10:00
Stenzek
b9a9ea220e PostProcessing/FX: Don't try to compile for GL<3.2
No interface blocks or binding layouts. Get a better driver for gosh
sake.
2025-07-09 21:17:25 +10:00
Stenzek
80a689257c PostProcessing/GLSL: Support OpenGL 3.1 2025-07-09 21:16:43 +10:00
Stenzek
742cfcb12b ShaderGen: Emit location qualifiers for SPV without interface blocks
Required for GLSL post-processing with OpenGL 3.1.
2025-07-09 21:15:56 +10:00
Stenzek
2d29c63708 ShaderGen: Emit fallback functions for GLSL < 4.0 2025-07-09 21:15:10 +10:00
Stenzek
601173b01e ShaderGen: Add UseGLSLInterfaceBlocks() 2025-07-09 21:14:51 +10:00
Stenzek
f273dcff18 GameList: Fix possible bad optional unwrap in ApplyCustomAttributes() 2025-07-09 20:05:50 +10:00
Stenzek
6f3a6d7934 Qt: Remove unused includes 2025-07-09 20:05:50 +10:00
Davide Pesavento
1bf248b299 Qt: Swap order of read/seek speedup cycles in Advanced settings
To match the order in Console settings.
2025-07-09 20:05:31 +10:00
Davide Pesavento
a012d496ea Qt: Fix resetting per-game CDROM speedup and SIO settings
Amends d2c09dfaff and 0098c60ee8
2025-07-09 20:05:31 +10:00
Davide Pesavento
cacd174642 Qt: Rearrange log settings checkboxes 2025-07-09 20:05:31 +10:00
Davide Pesavento
002cb942bb Qt: Fix initial UI state of log timestamps checkboxes 2025-07-09 20:05:31 +10:00
Davide Pesavento
d8a267162d Qt: Set default button in settings and ISO browser (#3475) 2025-07-07 22:14:58 +10:00
zkdpower
9ba3129b67 Update the Simple-Chinese translation to latest. (#3474) 2025-07-07 22:12:44 +10:00
Davide Pesavento
041145d336 GameDB: Increase max read speedup cycles for Dino Crisis 1 & 2 (#3473)
Both games freeze almost immediately otherwise.

Also add AnalogController to the first game, but disable auto analog
mode because vibration is supported but the sticks don't do anything.
2025-07-07 22:12:29 +10:00
Davide Pesavento
3f7e5ca1cb Qt: Always connect the open folder button (#3472)
And make the line edit read-only instead of disabling it.
2025-07-07 22:12:07 +10:00
Stenzek
fb7772871c GameDatabase: Use string_view for disc sets
Avoid the allocations, apparently forgot this one.
2025-07-05 14:12:29 +10:00
Stenzek
0a267ce158 Common: Add more tests 2025-07-05 14:12:29 +10:00
Davide Pesavento
9b3a29fb5c GameDB: Increase max read speedup cycles for Castlevania - SotN (#3471)
Allows the game to progress past the first loading screen.
2025-07-05 13:02:45 +10:00
Davide Pesavento
ffe05c853f Increase max read speedup cycles for Breath of Fire IV (#3470)
* GameDB: Increase max read speedup cycles for Breath of Fire IV

Otherwise the game hangs before reaching the start menu.

* GameDB: Drop seek speedup setting already at its default value
2025-07-05 13:02:32 +10:00
Stenzek
7dcdff35cb Qt: Include 'Refresh Progress' button in achievement settings 2025-07-03 19:13:07 +10:00
Davide Pesavento
b08ca9430e GameDB: Disable read speedup in Spyro 2 & 3 (#3464) 2025-07-03 19:12:57 +10:00
Davide Pesavento
3e61a12b0e GameDB: Consistently use title case in genre 2025-07-03 19:12:40 +10:00
Davide Pesavento
66341a12d4 FullscreenUI: Swap file size and uncompressed size in game details 2025-07-03 19:12:40 +10:00
Stenzek
d4cf7f248c FullscreenUI: Fix default displayed value for FF volume 2025-07-02 20:46:50 +10:00
Stenzek
d852149809 FullscreenUI: Add icons to game list detail lines 2025-07-02 20:44:48 +10:00
Stenzek
38022afa25 FullscreenUI: Fix focus loss on F4 to switch view 2025-07-02 20:01:09 +10:00
zkdpower
8484170ece Update the Simple-Chinese translation to latest. (#3468) 2025-07-01 21:20:32 +10:00
Stenzek
c8087204c4 FullscreenUI: Fix highlighted option with 'None' background 2025-07-01 19:45:44 +10:00
Stenzek
ca322449da FullscreenUI: Add 'Compact Mode' for game list 2025-07-01 19:41:02 +10:00
Stenzek
0098c60ee8 SIO: Add debugging option to redirect to TTY
Until I bother to finish my sio branch...
2025-07-01 19:00:17 +10:00
Stenzek
d0f4f579e1 FullscreenUI: Add missing log timestamp preferences 2025-07-01 18:40:33 +10:00
Stenzek
2a6aa89efb FullscreenUI: Avoid more conflicts between emoji and PromptFont
By moving them to the unused range.
2025-07-01 18:38:18 +10:00
Stenzek
5b3e843b08 Qt: Separate window and file log timestamp options 2025-07-01 18:08:41 +10:00
Stenzek
eb503c4029 Qt: Fix 'Log To File' in Debug menu 2025-07-01 17:57:49 +10:00
Stenzek
f123677df4 Log: Fix file log timestamps always enabled 2025-07-01 17:57:38 +10:00
Stenzek
36518a8df5 Bus: Use log colour abstraction for TTY 2025-07-01 17:40:13 +10:00
Davide Pesavento
9e045755a6 FullscreenUI: Add missing std::move (#3467) 2025-06-30 11:49:55 +10:00
Stenzek
b35beb6f24 Qt: Update Korean translation by Hack茶ん 2025-06-30 11:49:24 +10:00
Stenzek
e4761823ad FullscreenUI: Fix fade on system reset/shutdown 2025-06-30 00:42:42 +10:00
Stenzek
518e0194bc MediaCapture: Fix compiler warning 2025-06-30 00:42:33 +10:00
Stenzek
0978e6ecee MediaCatpure: Ensure there are no gaps in sample time 2025-06-29 16:32:49 +10:00
Stenzek
a59b6357b3 MediaCapture: Don't repeat frame rate calculations 2025-06-29 16:30:26 +10:00
Stenzek
ebf5c9d0c1 MediaCapture: Fix HEVC encoding with Media Foundation 2025-06-29 14:20:06 +10:00
Stenzek
9d686f7baf Qt: Hide fullscreen combo if unsupported 2025-06-29 13:20:32 +10:00
Anderson Cardoso
d603e3bc0c Atualização | Idioma Turco (#3466)
* Atualização Português do Brasil

Atualizado para a última versão.

* Atualização | Idioma Turco

Atualizado para a última versão.
Validado por um nativo.
--
Update to the latest version. 
Validated by native speaker.
2025-06-29 13:20:17 +10:00
Stenzek
355c17bde9 FullscreenUI: Fix fade on system start/stop 2025-06-28 12:46:27 +10:00
Stenzek
376a2e8d4d FullscreenUI: Fix crash when loading/saving state
Also fix fade transition.
2025-06-28 12:43:29 +10:00
Stenzek
33b1e82e34 Achievements: Fix imgui assertion in leaderboard view 2025-06-28 12:31:19 +10:00
Stenzek
71a60f95df Data: Update SDL game controller database 2025-06-27 23:41:39 +10:00
Stenzek
5df28de340 Qt: Fix hotkey category heading size on MacOS 2025-06-27 23:40:38 +10:00
Víctor "IlDucci
866b77e229 Spanish (Spain) 2025-06-27 translation update (#3465)
- Translated all new strings.
2025-06-27 21:48:50 +10:00
Stenzek
1b740efc10 FullscreenUI: Avoid ID clash in controller settings 2025-06-27 21:48:00 +10:00
Stenzek
889df1d8be VulkanDevice: Only reset descriptor pool if used
Save a tiny fraction of overhead.
2025-06-27 19:47:15 +10:00
Stenzek
2bff2098a1 FullscreenUI: Fix returning to wrong window after back 2025-06-27 17:14:07 +10:00
Stenzek
ebf97c26b8 dep/imgui: Sync to 5ee9c2a
And fix a bunch of local bugs, including random large-font-size glyphs.
2025-06-27 17:07:45 +10:00
Davide Pesavento
280c0036eb FullscreenUI: Change a few icons for improved consistency (#3463) 2025-06-27 17:07:24 +10:00
Stenzek
281119b812 Qt: Always perform update check on startup 2025-06-24 15:34:05 +10:00
Daniel Nylander
a7d0a8a485 Updated Swedish translation (#3461) 2025-06-23 12:41:49 +10:00
Anderson Cardoso
c679ffbac0 Atualização Português do Brasil (#3462)
Atualizado para a última versão.
2025-06-23 12:41:35 +10:00
Stenzek
5b18455536 Qt: Eliminate unnecessary includes in settingwidgetbinder.h 2025-06-22 20:28:05 +10:00
zkdpower
96d0851365 Update the Simple-Chinese translation to latest. (#3460) 2025-06-22 20:25:44 +10:00
Davide Pesavento
9347c00d95 Qt: Refine use of ellipsis in game list context menu (#3459) 2025-06-22 15:26:33 +10:00
Stenzek
cdc9206b6a Qt: Fix typo in toolbar icon action 2025-06-22 14:30:01 +10:00
Stenzek
ba799f4f88 Qt: Disable toolbar related actions if hidden 2025-06-22 14:05:01 +10:00
Stenzek
6fcb1194d5 FullscreenUI: Further icon improvements 2025-06-22 14:01:56 +10:00
Davide Pesavento
29ec2fea19 Qt: Fix saving toolbar locked state (#3458) 2025-06-22 13:25:26 +10:00
Davide Pesavento
40c495cd19 Qt: Remove last use of SLOT 2025-06-22 13:07:56 +10:00
Davide Pesavento
b67a8c3127 Common: Don't include deprecated (and unused) codecvt header
<codecvt> was deprecated in C++17 and removed in C++26
2025-06-22 13:07:56 +10:00
Davide Pesavento
976bf834ed Qt: Use QDialog::Accepted/Rejected in more places 2025-06-22 13:07:56 +10:00
Davide Pesavento
842f7414d9 Qt: Simplify connecting to QDialogButtonBox signals 2025-06-22 13:07:56 +10:00
Davide Pesavento
175ed8caf3 Qt: Fix default button in ControllerLEDSettingsDialog 2025-06-22 13:07:56 +10:00
Davide Pesavento
f6d10eb5d2 Qt: Fix default button in InputBindingDialog 2025-06-22 13:07:56 +10:00
Davide Pesavento
74f697eb62 Qt: Add button icons to InputBindingDialog 2025-06-22 13:07:56 +10:00
Davide Pesavento
e469e33aac Qt: Fix default button in AudioStretchSettingsDialog 2025-06-22 13:07:56 +10:00
Stenzek
a7f5105073 Qt: Fix toolbar context menu lock inversion 2025-06-22 03:04:09 +10:00
Stenzek
7b1c8a0407 System: Log init/boot time 2025-06-22 02:43:58 +10:00
Stenzek
ee0cb6076c Qt: Add additional toolbar properties for labels/icons 2025-06-22 02:33:00 +10:00
Stenzek
bf36432432 Qt: Swap console/emulation icons
Better match I think.
2025-06-22 02:32:57 +10:00
Stenzek
aafd72efba FullscreenUI: Add cheats/patches icons 2025-06-22 02:32:57 +10:00
Stenzek
f9fb591dc8 Data: Add missing file 2025-06-22 01:11:04 +10:00
Stenzek
82bb29d186 FullscreenUI: Fix extra padding in resume state popup 2025-06-22 01:02:59 +10:00
Stenzek
11bc1935c8 FullscreenUI: Skip drawing background if transparent
Save that fill rate.
2025-06-22 00:59:08 +10:00
Stenzek
f775a6d066 Qt: Fix achievement login tab order 2025-06-22 00:50:40 +10:00
Stenzek
5dd64c89c0 FullscreenUI: Bump animation time for theme change 2025-06-22 00:42:51 +10:00
Stenzek
68fa33e075 FullscreenUI: Polish achievements page 2025-06-22 00:39:00 +10:00
Stenzek
d18910a619 Achievements: Release lock while waiting for HTTP requests 2025-06-22 00:27:48 +10:00
Stenzek
ac9be0110f FullscreenUI: Snap CenterImage() to integer coordinates 2025-06-22 00:03:44 +10:00
Stenzek
11cb2217e0 FullscreenUI: Polish range dialogs 2025-06-21 22:08:33 +10:00
Stenzek
7b03b54539 FullscreenUI: Eliminate last of layout height constants 2025-06-21 22:08:33 +10:00
Stenzek
88a63f04be FullscreenUI: More hardcoded size removal
In achievements and elsewhere.
2025-06-21 22:08:33 +10:00
Stenzek
5063a49f2a FullscreenUI: Remove hardcoded sizes for menu items
Make it dynamic based on content instead.
2025-06-21 22:08:33 +10:00
Stenzek
9127198be7 ImGuiManager: Move font awesome to last priority
Too many glyph conflicts. Fixes coloured icons.
2025-06-21 22:08:32 +10:00
Davide Pesavento
3b90d18c6a Qt: Fix return code confusion in AchievementLoginDialog
We were passing the wrong code to QDialog::done(). Qt defines 0 as Rejected
and 1 as Accepted. This had no practical impact because callers were also
using the inverted logic. The accepted()/rejected() signals were emitted
incorrectly but nothing is using them at the moment.

Still, to prevent further issues and improve code readability, flip the logic
and prefer accept()/reject() over done().
2025-06-21 13:13:31 +10:00
Stenzek
1026902389 Data: Update SDL game controller database 2025-06-19 22:22:08 +10:00
Stenzek
2ac481d2c1 Qt: Fix setup wizard achievements page title 2025-06-19 22:22:00 +10:00
Stenzek
ff0add2ed0 ImGuiManager: Load PF before FA
Works around code point conflicts, for now.

Probably should just reallocate PF in the future though.
2025-06-19 22:17:11 +10:00
Stenzek
6c6cc910e6 DMA: Invalidate code pages on CD-ROM DMA write
Avoids page faulting by invalidating the pages in advance.

Might help with frame time spikes on super low-spec devices.
2025-06-19 21:15:26 +10:00
KamFretoZ
fa0a926133 Deps: Bump FontAwesome to 6.7.2 (#3456) 2025-06-19 20:38:41 +10:00
Stenzek
49d5d8e9a7 Qt: Fix achievement login dialog sizing on MacOS 2025-06-19 19:59:00 +10:00
Stenzek
1653cf82a2 GPU/HW: Fix GLSL ES compile error 2025-06-18 19:28:24 +10:00
Stenzek
42a9d8c353 Qt: Raise updater window if already shown
Too bad it won't work on Wayland. I'm trying to give a good
user experience on a platform that is so developer hostile.
2025-06-18 19:07:37 +10:00
Stenzek
5f885b83b8 Settings: Add missing case statement 2025-06-18 19:03:29 +10:00
Davide Pesavento
6ef3df5a5c Achievements: Use gethostuuid() as machine key on macOS (#3452) 2025-06-18 18:29:26 +10:00
crashGG
99268f22ec Separate mmpx enhance from mmpx (#3453)
Use conditional weak blending instead of pixel copying to eliminate artifacts on straight lines
Reduce algorithm overhead
use explicitly initialize to fix dx11 fxc uninitialized variable false positive

Update gpu_hw_shadergen.cpp

Update gpu_hw_shadergen.cpp
2025-06-18 18:28:19 +10:00
Stenzek
d83ecb0582 Qt: Fix return to desktop mode with -nogui -bigpicture 2025-06-17 18:44:27 +10:00
Stenzek
ce6924df21 Qt: AutoUpdaterDialog -> AutoUpdaterWindow in translations
Hopefully avoid some manual updates.
2025-06-17 18:44:27 +10:00
Stenzek
fa7b4ae9f1 Qt: Convert auto updater to window
And remove the application modality.

Fixes fights between the auto updater and achievement relogin window.
2025-06-17 18:44:27 +10:00
Davide Pesavento
a2bf5b4f50 GameDatabase: Drop "GPU" prefix from PGXP settings in compatibility report 2025-06-17 14:53:45 +10:00
Davide Pesavento
2edcb20930 GameDatabase: Add three missing settings to compatibility report 2025-06-17 14:53:45 +10:00
Davide Pesavento
69399f3449 GameDatabase: Missing newline in compatibility report
And refactor the Append*Setting() functions to reduce duplication.
2025-06-17 14:53:45 +10:00
Davide Pesavento
0c3ad8a78b GameDB: Fix number of players for Syphon Filter 2 & 3 (#3451) 2025-06-17 14:52:46 +10:00
Stenzek
f5c3280202 ImGuiOverlays: Remove unused code 2025-06-15 13:58:09 +10:00
Stenzek
4616dd3293 Qt: Avoid heap string copy for each context menu action
QString is copy-on-write.
2025-06-15 13:57:06 +10:00
Stenzek
308bc5f356 ImGuiOverlays: Warning fixes 2025-06-15 13:31:46 +10:00
Stenzek
35a8bfa469 FullscreenUI: Warning fixes 2025-06-15 13:31:43 +10:00
Stenzek
0c8cf0a4d7 Qt: Fix incorrect help text 2025-06-15 13:24:15 +10:00
Stenzek
466ccc5d88 CI: Use maximum compression for zip builds 2025-06-15 13:24:15 +10:00
Stenzek
7f066c2864 ImGuiOverlays: Fix display with only GPU/latency stats 2025-06-15 13:24:15 +10:00
bl@ck_m@ge
61f3f86bbc GameDB: exclude analog support for Final Fantasy Origins (#3449) 2025-06-15 13:24:02 +10:00
zkdpower
42bf2b3360 update the Simple-Chinese translation to latest. (#3448) 2025-06-15 13:23:49 +10:00
Stenzek
c32e590808 Qt: Don't hold lock while game list context menu active 2025-06-14 15:08:45 +10:00
Stenzek
20b353535d ImGuiOverlays: Backport condition tidy-up 2025-06-14 15:08:28 +10:00
Stenzek
ba6309c458 FullscreenUI: Keep a one-deep previous window stack
Fixes settings close returning to wrong window if opened from game list.
2025-06-14 14:39:22 +10:00
Stenzek
1a39dece6a FullscreenUI: Don't tint background in landing/game list
But keep it for settings etc, since it needs it for readability.
2025-06-14 14:33:07 +10:00
Stenzek
3a7cbc20d9 FullscreenUI: Use horizotal layout for about dialog 2025-06-14 14:10:29 +10:00
Stenzek
e19817c7f9 README: Fix typo 2025-06-14 13:42:02 +10:00
Stenzek
233c342d68 README: Recommend AppImage over Flatpak
Tired of Flathub's infrastructure randomly failing builds, and portal
paths being invalidated every update.

Does anyone actually use this?
2025-06-14 13:37:27 +10:00
Stenzek
3ba05f182f Qt: Use same size for serial across platforms
And center the field to compensate.
2025-06-14 13:25:52 +10:00
Stenzek
b98d521ff9 ImGuiOverlays: Draw larger status indicator icons
Always bugged me, but couldn't justify the rasterization time before
dynamic fonts.
2025-06-14 13:25:22 +10:00
Stenzek
bf4a89e82e Qt: Use GameList::FormatTimespan()
No point duplicating the logic since the core can handle
plural translations now.
2025-06-14 13:12:21 +10:00
Stenzek
9ffded0e73 SmallString: Fix size bug in assign(SmallStringBase&&) 2025-06-14 13:12:02 +10:00
Stenzek
a31d67921b SmallString: Use L instead of L+1
Keep the stack aligned to power of 2.
2025-06-14 13:11:39 +10:00
Davide Pesavento
70225f8345 Always use CTAD with std::unique_lock 2025-06-14 13:10:57 +10:00
Davide Pesavento
2c7d07b245 Qt: Implement reset play time for disc sets 2025-06-14 13:10:57 +10:00
Anderson Cardoso
74838e9bd8 Atualização Português do Brasil (#3444)
Atualizado para a última versão
2025-06-14 13:09:28 +10:00
KamFretoZ
bb76d7cce8 Update Indonesian Translation (#3445) 2025-06-14 13:09:18 +10:00
Davide Pesavento
873c7c9dc3 Qt: Right align size columns in game list view 2025-06-14 13:08:38 +10:00
Davide Pesavento
00330ca391 Qt: Avoid truncating Serial column in game list view on macOS 2025-06-14 13:08:38 +10:00
Davide Pesavento
5dc55bb4a1 Qt: Avoid showing "0 minutes" of played time (#3447) 2025-06-14 13:00:19 +10:00
Stenzek
9c4e15ef1c Host: Remove now-unused ReadCompressedResourceFile() 2025-06-14 02:30:11 +10:00
Stenzek
9ff3edd317 Qt: Disable unmaintained translations
These haven't been touched in 4+ years, and there are very few strings
still valid.

They'll still be built, so you can use them via the ini, but they will
not appear in the dropdown list.
2025-06-14 02:30:11 +10:00
Stenzek
0cf5618a05 FullscreenUI: Fix crash in JogCon controller settings 2025-06-14 02:30:11 +10:00
Stenzek
65ed9b51ab Data: Fix glyph conflict with vibration icon 2025-06-14 02:30:11 +10:00
Stenzek
0026615eb9 Data: Remove unused base fonts 2025-06-14 02:30:10 +10:00
Stenzek
c06da318d6 FullscreenUI: Fix trophy placement on non-square covers 2025-06-14 02:30:10 +10:00
Stenzek
06da45b3f2 FullscreenUI: Polish dialogs 2025-06-14 02:30:10 +10:00
Stenzek
77457a3b1d ImGuiManager: Switch to dynamic fonts 2025-06-14 02:30:10 +10:00
Stenzek
5945153e67 Data: Add variable weight fonts 2025-06-13 22:37:11 +10:00
Stenzek
9c4aaca7c8 FullscreenUI: Avoid losing game list selection inbetween mouse move and popups 2025-06-13 21:42:40 +10:00
Stenzek
a2d351ca90 FullscreenUI: Improve title truncation in game grid
Use the computed text length, rather than an arbitrary size.
2025-06-13 21:26:54 +10:00
Stenzek
39a5bd6e54 FullscreenUI: Remove padding from CD icon
It wasn't even.
2025-06-13 21:26:34 +10:00
Stenzek
94b88fad23 GPU/HW: Avoid texture filter dual-source output when unnecessary
Because we all know how much mobile drivers crapping themselves
whenever anyone mutters dual-source blending.
2025-06-13 21:02:07 +10:00
Stenzek
d37048e4e4 FullscreenUI: Fix animation glitch on choice select 2025-06-13 20:54:50 +10:00
Stenzek
a8db46a6b8 GPU/HW: Use signed difference in luma_distance()
Fixes the warning, and also underflowing, since both were unsigned
it would overflow if the second was greater the first.
2025-06-13 20:54:48 +10:00
Stenzek
ac0c4544e1 GPU/HW: Work around fxc uninitialized variable false positive 2025-06-13 20:54:48 +10:00
Stenzek
824b91a1f8 GPU/HW: Split MMPX to MMPX and MMPX Enhanced 2025-06-13 16:42:32 +10:00
crashGG
98798fec66 mmpx enhance (#3443)
enhance MMPX algorithm, fix some minor graphics defects.

Update gpu_hw_shadergen.cpp
2025-06-13 16:34:54 +10:00
Stenzek
9112e38f4e GPUDevice: Fix incorrect close call during symbol lookup
Not actually hit since all symbols should be present, but just in
case...
2025-06-13 16:29:06 +10:00
Davide Pesavento
36b869003a Qt: Use standard key sequences for main window shortcuts
Notably, this enables command+R to refresh on macOS, where F5
is not commonly used.
2025-06-11 19:51:12 +10:00
Davide Pesavento
e45c04e0dd Qt: Simplify grid layout in game summary widget 2025-06-11 19:51:12 +10:00
Davide Pesavento
5ea64810dc Qt: Consistently use QToolButton for "restore default" action 2025-06-11 19:51:12 +10:00
Davide Pesavento
7752b2bd2d Qt: Remove redundant nested layouts 2025-06-09 22:18:13 +10:00
Davide Pesavento
c7052a1903 Qt: Use restart-line icon for "restore defaults" buttons 2025-06-09 22:18:13 +10:00
Davide Pesavento
a4977f986c Qt: Add icons to buttons in patch settings widget
Similar to the cheat settings page
2025-06-09 22:18:13 +10:00
Davide Pesavento
ba78714d4f Qt: More consistent icon handling 2025-06-09 22:18:13 +10:00
Stenzek
5eb8578edc System: Save undo state on reset 2025-06-08 17:08:52 +10:00
Stenzek
cb2dfabeeb Qt: Backport undo load state timestamps 2025-06-08 17:08:50 +10:00
Stenzek
29e55a2e5b FullscreenUI: Use system scroll rate and layout scale
Makes scrolling feel much more responsive, and doesn't vary
depending on the size of the window.
2025-06-08 16:50:51 +10:00
Stenzek
38aebd0a3e dep/imgui: Add overridable scroll rate 2025-06-08 16:47:34 +10:00
Stenzek
bd9e206165 FullscreenUI: Fix layout calculations in game grid 2025-06-08 12:04:06 +10:00
Daniel Nylander
8d2dec4632 Updated Swedish translation (#3439) 2025-06-08 12:03:56 +10:00
Anderson Cardoso
595f8d0624 Atualização Português do Brasil (#3438)
Atualizado para a última versão.
2025-06-08 12:03:43 +10:00
Davide Pesavento
2326fc20d1 README: Fix typo (#3437) 2025-06-08 12:03:25 +10:00
Stenzek
6bea16b6eb INISettingsInterface: Only set changed if the value actually changes 2025-06-05 20:39:07 +10:00
Stenzek
5f2355510b Qt: Only write settings ini if it is changed
Save some disk writes.
2025-06-05 20:37:57 +10:00
Stenzek
d0b7d9d027 Host: Get rid of base settings interface indirection 2025-06-05 20:37:14 +10:00
Stenzek
9cd371d5ff SettingsInterface: Drop some unused virtual methods 2025-06-05 20:37:14 +10:00
Stenzek
59f7d0b2ff Cheats: Fix compiler warnings 2025-06-05 19:58:45 +10:00
Stenzek
d54077e345 Achievements: Add 'Refresh Progress' option
Manually refreshes the all progress database if you have completed
unlocks on other devices/machines.
2025-06-05 19:58:45 +10:00
Stenzek
0a0379f31f Qt: Make game list scrollbar only visible as-needed 2025-06-05 19:17:07 +10:00
Stenzek
95e085584c Qt: Move list/grid setup to subclasses 2025-06-05 19:16:46 +10:00
Stenzek
808c51b3ce CMake: Bump version requirements
Can't do it for Qt because of course flatpak....
2025-06-05 18:23:36 +10:00
Stenzek
f518b8492c Deps: Version updates
- HarfBuzz 11.2.0
- SDL3 3.2.16
- libpng 1.6.48
- Qt 6.9.1
2025-06-05 17:42:00 +10:00
Stenzek
22089e9b75 Qt: Improve game grid layout calculations
Use grid size instead of icon size/spacing.

Fixes the number of columns changing when different items are visible.

Also restores the old behaviour of dynamic scroll bar visibility.
2025-06-05 17:23:16 +10:00
Stenzek
cb751b0990 Data: Update SDL controller database 2025-06-05 13:35:04 +10:00
Stenzek
0205f9fa04 Achievements: Update progress database unconditionally on unlock
Doesn't make sense to preserve the greater count, since it can be
reset through the RA webpage, and SC/HC seems to work fine here.
2025-06-05 13:35:04 +10:00
BlueInterlude
2f2dcb43cc GameDB: Fix incorrect controller information + Add PlayStation Mouse for Jingle Cats (#3436) 2025-06-04 03:13:10 +10:00
BlueInterlude
52cf394bb2 GameDB: Add PlayStation Mouse Support for Jingle Cats (#3435) 2025-06-04 02:04:23 +10:00
Stenzek
9ab2608ba0 GPU/TextureCache: Fix replacement background name length 2025-06-03 22:55:21 +10:00
Stenzek
5b40d7902a System: Shut down GPU backend before other components
Prevents a rare crash on shutdown if OSD stats were enabled.
2025-06-03 19:06:17 +10:00
Stenzek
7fde697118 GPU/TextureCache: Add merging of adjacent palette records
So a texture spanning multiple pages can be merged at dump time.

Doing a merge instead of a union on the original palette rect
is safer, because gaps won't dump as larger textures with garbage
in the middle.
2025-06-03 19:05:22 +10:00
Stenzek
eee67a30da GPU/HW: Fix off-by-one in sprite UV rect calculation
CheckForTexPageOverlap() makes it exclusive already.

Fixes replacements for FF8 title screen not applying in the third
texture page, because it thought it was sampling from an unwritten
area of VRAM.
2025-06-03 18:54:29 +10:00
Davide Pesavento
e55dabfaa4 GameDB: Two fixes for Alone in the Dark - The New Nightmare (#3434) 2025-06-03 17:59:09 +10:00
Mark Zhuang
62c0a1e7d4 RISCV: fix flush cache for linux riscv when clang <= 18
for __builtin___clear_cache, clang-18 generates __clear_cache:
https://godbolt.org/z/K5Kx6EEhq, which is an empty function.
clang-19 can generates __riscv_flush_icache:
https://godbolt.org/z/TKe6Kh61a
2025-06-03 17:58:38 +10:00
Stenzek
d9367229e9 Achievements: Avoid duplicate tracker display 2025-06-03 17:57:29 +10:00
Stenzek
42813e8840 GameDatabase: Actually disable auto scale for DisableUpdating 2025-06-01 21:19:07 +10:00
Stenzek
ae3b295d95 FullscreenUI: Disable menu item borders by default
Looks nicer.
2025-06-01 15:10:40 +10:00
Stenzek
47405b081c GameDatabase: Disable MSAA with DisableUpscaling 2025-06-01 14:37:16 +10:00
Stenzek
2cc0851116 GameDatabase: Fix DisableUpscaling trait with auto res 2025-06-01 14:37:16 +10:00
Stenzek
fc7934a2be FullscreenUI: Fix nav focus loss in leaderboards
Stops hotkeys triggering when using mouse navigation.

Also fixes the first leaderboard entry not focusing on page swap.
2025-06-01 14:37:16 +10:00
Stenzek
1ad9ca7e90 FullscreenUI: Cancel pending nav on focus reset 2025-06-01 14:37:16 +10:00
CRASHARKI
9d59763bad GameDB: Disable upscaling and filtering in Constructor (#3432) 2025-05-31 14:27:13 +10:00
Davide Pesavento
02d8e14752 ImGuiManager: Avoid deprecated std::memory_order_consume (#3433) 2025-05-31 14:27:02 +10:00
Stenzek
0a0ad3f9e2 Qt: Improve clarity of unknown dump hashes 2025-05-31 03:00:59 +10:00
Stenzek
f2caec801d GameDB: Force full boot for Lomax games
Crashes after FMVs if fast boot is disabled.
2025-05-30 19:26:50 +10:00
Stenzek
2018eb77fe GPU: Adjust draw timing approximation
Cache seems to be able to go up to 128x8? Constructor draws sprites that
fit exactly in the texture cache, and does so within vblank, so it can't
take too long to draw.
2025-05-30 19:26:49 +10:00
CRASHARKI
6d8e111d72 GameDB: Add ForcePGXPCPUMode to all remaining versions of Aladdin (#3431) 2025-05-28 21:42:25 +10:00
Sheng Jiang 蒋晟
b195f747cf implement ExtConstantBitClear/Set on ExtImprovedSlide (#3430) 2025-05-28 21:42:11 +10:00
CRASHARKI
af803eefc1 GameDB: Various fixes to GTA games (#3429) 2025-05-27 22:24:16 +10:00
CRASHARKI
fff7654bc6 GameDB: Asterix does not support analog mode (#3428) 2025-05-27 18:21:54 +10:00
Stenzek
4164b95cb3 ImGuiManager: Make OSD message animation match notifications 2025-05-27 17:58:22 +10:00
Stenzek
2da46f83bb dep/imgui: Fix smooth scrolling with >60hz 2025-05-27 17:21:31 +10:00
Stenzek
6b811df6d0 CDROM: Add "Switch to Next Disc on Stop" option.
NOTE: THIS WILL NOT WORK FOR ALL GAMES.

Plenty of games don't stop the CD-ROM drive when they're expecting a
disc change, leaving us with no way of knowing when it's needed.
2025-05-27 17:10:11 +10:00
Stenzek
24cd6fa11b Hotkeys: Add switch to previous/next disc hotkeys 2025-05-27 17:03:39 +10:00
Stenzek
d885446672 VulkanDevice: Fix manual device selection 2025-05-27 17:03:39 +10:00
Stenzek
1c54047cd1 Qt: Remove redundant vertical layout in console settings 2025-05-27 17:03:39 +10:00
Davide Pesavento
8fa6336a90 Qt: Further polish the layout of some widgets (#3427) 2025-05-27 17:02:46 +10:00
Anderson Cardoso
09a1bfdde3 Atualização Português do Brasil (#3426)
- Novas linhas adicionadas/movidas traduzidas.
- Confirmação de novas linhas de texto.
2025-05-25 13:00:16 +10:00
Víctor "IlDucci
492ff51f40 Spanish (Spain) translation update 2025/05/24 (#3425)
- Translated all the new strings.
- Minor edits on existing ones.
2025-05-25 12:59:58 +10:00
Davide Pesavento
80c9a8d399 Qt: Remove unused ui file 2025-05-24 15:57:05 +10:00
Davide Pesavento
e30c1b53ad Qt: Use grid layout for audio stretch settings dialog 2025-05-24 15:57:05 +10:00
Stenzek
f6aa3eb5b0 Qt: Update glyph ranges 2025-05-24 12:55:59 +10:00
Stenzek
64dfe003b2 Qt: Update status bar visibility on shutdown
Fixes empty widgets being displayed.
2025-05-24 12:55:44 +10:00
zkdpower
7e37849378 update the Simple-Chinese translation to latest. (#3422) 2025-05-24 12:54:37 +10:00
Davide Pesavento
0f5204b31e CI: Pin action-automatic-releases to latest commit (#3423) 2025-05-24 12:54:15 +10:00
Davide Pesavento
c12e7fcc0b Qt: Fix minor typos in graphics settings help text (#3421) 2025-05-23 17:08:53 +10:00
Stenzek
4d5ba3b4e6 VulkanDevice: Tidy up device/extension initialization
Single pass, avoids enabling extensions that will not be used.
2025-05-23 17:06:59 +10:00
Stenzek
32b3ade56c VulkanDevice: Allocate N semaphores for N swap chains 2025-05-23 15:21:49 +10:00
Stenzek
cdadda85b5 Qt: Fix application exiting on fullscreen+lang change 2025-05-23 15:21:49 +10:00
Stenzek
66934cc5b8 System: Include queued frames in input latency stats 2025-05-23 15:16:15 +10:00
Stenzek
03111befb9 Settings: Correct a couple of default values 2025-05-23 15:15:58 +10:00
Stenzek
461c51ff6a Qt: Fix updater crash while game running
Or while fullscreen.
2025-05-20 00:00:41 +10:00
Stenzek
1667179f78 Qt: Updater shouldn't confirm shutdown
Otherwise if it's cancelled we end up in a funky state.
2025-05-20 00:00:38 +10:00
Stenzek
b27e5ac26a Qt: Fix incorrect lock parent 2025-05-19 23:52:11 +10:00
Stenzek
a422402014 CPU: Fix bgez/blez disassembly with non-standard pattern 2025-05-18 13:43:41 +10:00
Stenzek
c7ed3239b7 Qt: Use grid layout for second audio settings panel 2025-05-18 13:33:38 +10:00
Stenzek
54444475f5 Qt: Fix sizing of patch detail widgets 2025-05-18 13:33:21 +10:00
Stenzek
0ee3f235b6 Qt: Fix swapped parameter order in patch info 2025-05-18 12:47:03 +10:00
Stenzek
5e339c8975 dep/rcheevos: Fix buffer reserve estimate 2025-05-18 12:17:53 +10:00
Anderson Cardoso
4748a93b8a Atualização Português do Brasil (#3420)
Atualizaod para a última versão.
2025-05-18 12:14:47 +10:00
Davide Pesavento
06c950c06a GameDB: Disable disc read speedup for Parasite Eve 2 (#3419) 2025-05-18 12:14:32 +10:00
Stenzek
8ee0daaa17 GameDatabase: Bump cache version
Forgot to do this before.
2025-05-17 23:06:36 +10:00
Stenzek
5eedecd811 System: Swap back gamesettings->safe mode order
Fixes e.g. round texcoords warning being shown on games that need it.

But don't display CD speedup warnings if the gamedb will disable them.
2025-05-17 23:06:36 +10:00
Stenzek
9b17e1485d MediaCapture/FFmpeg: Log when dynlib open fails 2025-05-17 23:06:36 +10:00
Stenzek
0aa789d6c9 MediaCapture/FFmpeg: Default to VP9 2025-05-17 23:06:30 +10:00
Stenzek
6baea54e9d MediaCapture/FFMpeg: Re-introduce v7.0.x support
I hate this... thanks flatpak.
2025-05-17 21:48:32 +10:00
Stenzek
84999e0bc9 FileSystem: Handle BOM in ReadFileToString()
Works with UTF-8 BOM, UTF-16 LE + BE.

Fixes DisplayDepth ReShade shader not loading.
2025-05-17 20:27:01 +10:00
Stenzek
e3c0eed3df StringUtil: Add DecodeUTF16String() and BE variants 2025-05-17 20:25:45 +10:00
Stenzek
17dfb95d6a GPU/HW: Fix MSAA+depth buffer combination
Clear should wipe out all samples, copy should copy all samples.
2025-05-17 19:44:23 +10:00
Stenzek
4a707afae1 System: Show safe mode warning after applying gamesettings
Prevents warning about things that have already been disabled.
2025-05-17 18:44:03 +10:00
Stenzek
a6b59f9efe GameDatabase: Add traits for disabling disc speedup 2025-05-17 18:40:58 +10:00
Stenzek
c729515118 AnalogController: Add option to use right stick as shoulder buttons 2025-05-17 18:40:38 +10:00
Stenzek
db80f6fbc5 CI/Flatpak: Disable ffmpeg support
So sick of dealing with fragmented bullshit because different packaging
systems and operating systems have different library versions.

Freedesktop SDK is stuck at ffmpeg 7.0, so it loses support.
2025-05-17 18:11:20 +10:00
Stenzek
22109fc8e0 MediaCapture/FFmpeg: Tidy up format selection
And remove use of deprecated fields.
2025-05-17 18:11:13 +10:00
Stenzek
e439ebc1c6 Deps: Update bundled ffmpeg headers to v7.1.1 2025-05-17 18:10:03 +10:00
Stenzek
d35cefb02a GPU/HW: Check for depth clears for lines 2025-05-17 15:22:01 +10:00
Stenzek
844869c0c1 GPU/HW: Fix precise lines failing depth test 2025-05-17 15:04:22 +10:00
Stenzek
a375d558f6 GPU/HW: ScaleNx/MMPX do not require blending 2025-05-17 14:05:56 +10:00
Stenzek
3d8f6bf7aa GPU/HW: Fix filtered alpha blending in ROV path 2025-05-17 14:05:55 +10:00
Davide Pesavento
401f2652ca Achievements: Use round instead of ceil for unlocked percentage (#3418) 2025-05-17 14:05:41 +10:00
Stenzek
21aaec99f1 Qt: Note when patches are not allowed for achievements 2025-05-17 01:07:55 +10:00
Stenzek
871323f4e1 Cheats: Fix setting overrides applying for blacklisted patches 2025-05-17 00:59:20 +10:00
Stenzek
1547de2b3c Deps: Build Vulkan-Headers before ffmpeg
CI system headers are too old.
2025-05-17 00:05:33 +10:00
Stenzek
481fba357c dep/rcheevos: Sync with branch 2025-05-16 23:51:44 +10:00
Daniel Nylander
4ec372cd4e Updated Swedish translation (#3417) 2025-05-16 23:51:22 +10:00
Stenzek
a5987878be Deps: Version updates
SDL3, ffmpeg.
2025-05-16 22:27:37 +10:00
Stenzek
93e4913f11 Qt: Fix additional padding in patch list 2025-05-16 19:21:37 +10:00
Stenzek
cfb24f930d Qt: Fix revision-specific patches showing in list
It was already filtered in Big Picture Mode.
2025-05-16 19:20:26 +10:00
Stenzek
7368047b49 ImGuiManager: Upload software cursor textures on GPU thread 2025-05-16 19:13:38 +10:00
Stenzek
4ea90f948d CDROM: Display OSD message on backend read fail 2025-05-16 19:06:55 +10:00
Stenzek
7310aa509a CDROM: Stop reading on backend read fail
Instead of panicing. Game's probably just going to crash anyway.
2025-05-16 18:14:08 +10:00
Stenzek
f8b8963776 CDImageDevice: Fix possible invalid optional access 2025-05-16 17:54:02 +10:00
Stenzek
44729000af Qt: Update Korean translation by Hack茶ん 2025-05-14 23:18:23 +10:00
Stenzek
7932618424 Bus: Enable SIO2 on any unknown BIOS
Not all PS2 BIOSes are in the list.
2025-05-14 23:18:23 +10:00
Stenzek
2ed7aa5536 CPU: Clear pending bus error when interpreting block
It can get set from a failed rec access much earlier.

Also eliminates a redundant store from the main interpreter loop.
2025-05-14 23:18:22 +10:00
JukePlz
8382a1ac7b GameDB: Pop'n Tanks! does not support analog mode (#3416)
Only supports vibration.
2025-05-13 21:44:30 +10:00
Stenzek
4bacbc8958 Qt: Eliminate heap allocations in GameListSortModel
More of an issue since the filter is now checking multiple fields.
2025-05-13 21:43:32 +10:00
Stenzek
b91d219524 Qt: Clarify that XInput should only be used for wrappers 2025-05-13 21:31:00 +10:00
Stenzek
2b280bddd0 GPU/TextureCache: Display replacement info on game start 2025-05-13 21:21:16 +10:00
JukePlz
0483117c70 GameDB: Disable auto analog mode for Gex - Deep Cover Gecko (PAL) (#3415)
Language selector only works in digital mode.
2025-05-12 20:58:54 +10:00
zkdpower
2c67c7d287 Update the Simple-Chinese translation to latest. (#3413) 2025-05-12 20:58:43 +10:00
KamFretoZ
085ef31ee8 Qt: Search more things! (#3414)
Co-authored-by: KrossX <2485237+krossx@users.noreply.github.com>
2025-05-12 20:58:36 +10:00
Stenzek
4530301820 dep/rcheevos: Bump to 8a0178d 2025-05-11 14:08:24 +10:00
Stenzek
6cde51b7b5 Achievements: Tidy up API calls 2025-05-11 14:07:31 +10:00
Stenzek
aee66edd6e Achievements: Unload RAIntegration on UI thread
Fixes crash when toggling it on/off.
2025-05-09 20:58:38 +10:00
Stenzek
303ad7cdce Data: Update SDL Game Controller Database 2025-05-07 21:30:49 +10:00
Stenzek
18c5608f7d Qt: Work around MacOS disc change menu bug
QActionGroup usage here was incorrect.
2025-05-07 21:29:39 +10:00
Stenzek
b2dcf39f8b FullscreenUI: Fix possible crash with RAIntegration 2025-05-06 22:50:32 +10:00
Stenzek
e67ce7b54d GameDB: DisablePGXP => DisablePGXPCulling for Cool Boarders 2025-05-06 22:42:06 +10:00
Stenzek
2aea3e1c3c FullscreenUI: Add vertical padding to several windows
Looks less cluttered.

- Achievement/leaderboard lists.
- Game list/game grid.
- Save state selector.
2025-05-06 22:42:06 +10:00
Stenzek
30fe7f3e4a Achievements: Manually generate badge URLs when using RAIntegration
It doesn't fill in these fields (currently at least).
2025-05-06 22:42:06 +10:00
Stenzek
942316b2d0 Log: Fix inconsistent enum ordering 2025-05-06 22:40:21 +10:00
JukePlz
994dd18739 GameDB: Fixes for Cool Boarders and Welcome House (#3412)
* GameDB: Welcome House hash

* GameDB: Force disable PGXP in Cool Boarders

With PGXP on, it crashes, hangs or otherwise renders incorrectly in stage select menu.
2025-05-06 22:40:08 +10:00
Stenzek
03db7ea8ea GPUThread: Remove unnecessary padding 2025-05-05 02:22:57 +10:00
Stenzek
c8a5712c10 FullscreenUI: Fix possible crash with achievements/leaderboards hotkey 2025-05-05 02:22:57 +10:00
Stenzek
d326d307b4 Achievements: Fix memory writes using CPU addresses 2025-05-05 02:22:57 +10:00
Anderson Cardoso
ea58cd1d57 Atualização Português do Brasil (#3411)
Atualizado para a última versão.
2025-05-05 02:22:40 +10:00
Stenzek
ad13b17bea FullscreenUI: Fix slow fadeout on fast forward toggle 2025-05-03 00:46:18 +10:00
Stenzek
6cafb5cdea FullscreenUI: Fix resume state dialog height at some window sizes 2025-05-03 00:45:45 +10:00
Víctor "IlDucci
af5fb6961c Spanish (Spain) translation update 2025/04/26 (#3410)
- Translated latest strings.
- Minor tweaks related to the Game Settings.
2025-05-03 00:44:51 +10:00
Stenzek
8d80ae123d Controller: Remove 'f' from string float values 2025-04-26 14:41:45 +10:00
KamFretoZ
d049b36387 Log: Allow read-only access to the log file (#3409) 2025-04-26 13:03:39 +10:00
Stenzek
611bb8fb4f VulkanDevice: Remove hardcoded 1.0 API version
Been like this for a couple of months, evidently forgot to remove it
when testing...
2025-04-25 17:40:40 +10:00
Stenzek
f8cd1d3d92 Qt: Warn on cheat enable if gamesettings disabled 2025-04-25 15:54:34 +10:00
Stenzek
674816b6eb GameDB: Recompiler ICache for Crypt Killer
Justifier handlers are timing sensitive.
2025-04-24 21:56:37 +10:00
Stenzek
773ec046b5 Justifier: Fix byteswapped RGB colours 2025-04-24 21:41:38 +10:00
Stenzek
589b8f5139 Justifier: Handle byte 4 IRQ enable flag
Fixes games with two justifiers connected concurrently.
2025-04-24 21:41:31 +10:00
Stenzek
740758fdda CPU/Recompiler: Call RaiseBreakException() on BP
For pcdrv.
2025-04-24 10:51:07 +10:00
Stenzek
559f831c30 Achievements: Defer login/game identify until after RAIntegration load 2025-04-23 22:16:27 +10:00
Stenzek
50e99dd1ff D3D12Device: Fix incorrect state when texture uploaded 2x w/o use 2025-04-23 22:16:27 +10:00
Anderson Cardoso
b0172a0afc Atualização Português do Brasil (#3408)
Atualizado para a última versão.
2025-04-23 22:16:09 +10:00
Stenzek
769e6f2bae GPUThread: Fix command size blow-up 2025-04-21 19:10:18 +10:00
Stenzek
1405004fc0 GameDB: Set tolerance for Spider-Man games
Glitch polygons due to sign flipping because coordinates are up around
the 1024 range (CPU::PGXP::TruncateVertexPosition()).
2025-04-21 19:10:13 +10:00
Stenzek
41ee9d9ff0 FullscreenUI: Use path from game list entry on resume
Fixes clean boot failing when selecting a game with a no-longer-valid
path.
2025-04-21 13:30:03 +10:00
Stenzek
50ba0fa5b3 CI: Use flatpak/flatpak-github-actions 2025-04-21 13:12:45 +10:00
Stenzek
b4019f325c GPU/HW: Fix black dots with some texture filters
JINC2 specifically ended up with NaNs propagating through.
2025-04-21 13:06:09 +10:00
Stenzek
f4df18b7cf Cheats: Make FormatCodeForFile() public
Needed for Android.
2025-04-20 00:23:23 +10:00
Stenzek
1caf45cf62 SmallString: Fix possible non-null-termination in set_size() 2025-04-19 23:56:35 +10:00
Stenzek
437430cbc4 System: Pull screenshot format from path extension 2025-04-19 22:49:16 +10:00
Stenzek
1f10cac42a GPUThread: Align commands to 16 bytes
Apparently some of the types end up 16-byte aligned on Android x86_64.
2025-04-19 22:45:21 +10:00
Stenzek
bd558efaaa CMake: Use upstream-compatible Findzstd 2025-04-19 20:43:27 +10:00
Stenzek
876b80ccd2 ImGuiManager: Fix incorrect backend flag on aux window 2025-04-19 18:07:06 +10:00
Stenzek
df2a5a5e67 ImGuiManager: Move drawing out of GPUDevice 2025-04-19 16:21:29 +10:00
Stenzek
46e11d96da CI: Bump flatpak-github-actions version
Maybe fix the cache failing because it was still on v3?
2025-04-19 11:40:55 +10:00
Stenzek
a86eabc1f0 Win32RawInputSource: Fix handling of absolute positioned devices
Maybe? Works in VMware now, I don't have any actual tablets.
2025-04-18 18:48:31 +10:00
Stenzek
75ae7deadb FullscreenUI: Add padding to game list 2025-04-18 14:44:25 +10:00
Stenzek
d840a825e2 CI: Use kde-6.9 flatpak docker image 2025-04-18 14:44:04 +10:00
Stenzek
0003cf7b11 CI/Flatpak: Bump to KDE 6.9 SDK 2025-04-17 22:20:55 +10:00
Stenzek
1fa77e530b FullscreenUI: Center achievement/leaderboard images
Fixes the placeholder image being stretched.
2025-04-17 21:05:54 +10:00
Stenzek
9a6725367b FullscreenUI: Change default background name 2025-04-17 21:05:44 +10:00
Stenzek
def6b76116 FullscreenUI: Make menu item borders optional 2025-04-17 21:05:44 +10:00
Stenzek
5b5eef61d7 FullscreenUI: Increase spacing between menu items 2025-04-17 21:05:44 +10:00
Stenzek
7aa831c8df FullscreenUI: Improve look of slider popups 2025-04-17 21:05:44 +10:00
Stenzek
ddf906f377 FullscreenUI: Polish achievements login dialog 2025-04-17 21:05:44 +10:00
Stenzek
9c819d9676 ImGuiManager: Fix tab key handling 2025-04-17 21:05:44 +10:00
Stenzek
c9ae4dcd0f SPU: Enable VU meter in debug builds 2025-04-17 21:05:44 +10:00
Stenzek
3d2085f797 GPU: Fix some CPU thread state reads 2025-04-14 22:20:29 +10:00
Stenzek
4c1aba62fc System: Remove unused function
And rename instances of "filename" to "path".
2025-04-14 22:20:29 +10:00
Stenzek
a0de2febad GPUThread: Minor logic corrections 2025-04-14 22:19:17 +10:00
Stenzek
b1ce3bf0b1 Data: Fix link in thirdparty.html 2025-04-14 22:19:17 +10:00
Stenzek
751d81eff0 GPU/TextureCache: Handle FetchTexture() fails 2025-04-14 22:19:17 +10:00
Anderson Cardoso
7583425c56 Atualização Português do Brasil (#3407)
Atualizado para a última versão
2025-04-14 22:18:57 +10:00
bl@ck_m@ge
1a5e852ffa GameDB: disable analog support for some demos and beta versions (#3406) 2025-04-14 22:18:46 +10:00
Stenzek
ebf33f32fa FullscreenUI: Crash fix 2025-04-13 13:58:46 +10:00
Stenzek
89301688db Qt: Use grid layout for forms
Fixes inconsistent widget sizes under KDE theme.
2025-04-13 13:58:44 +10:00
Stenzek
2e6c6dffae Qt: Slightly adjust widget sizes
Fixes cut-off with default KDE theme.
2025-04-13 13:58:44 +10:00
Stenzek
cf7feec9c4 Deps: Swap lunasvg for plutosvg 2025-04-13 13:58:44 +10:00
Stenzek
79cb5779b4 Data: Swap svg classes for inline style
plutosvg can't handle classes.
2025-04-13 13:58:44 +10:00
Stenzek
03d6d12b8a Image: Export RGBA8 conversion functions 2025-04-13 13:58:32 +10:00
bl@ck_m@ge
903a1570f1 GameDB: exclude analog support for some Rockman titles (#3404) 2025-04-13 13:58:21 +10:00
shikulja
57fc5b9d23 Update Russian translation (#3405) 2025-04-13 13:54:19 +10:00
Daniel Nylander
46dd32ad4d Updated Swedish translation (#3403) 2025-04-12 21:21:16 +10:00
Stenzek
ca46c11829 FullscreenUI: More string_view usage 2025-04-12 21:14:51 +10:00
Stenzek
65fd6f9ff3 FullscreenUI: Fix crash in hotkey settings 2025-04-12 21:14:47 +10:00
Stenzek
b78d3b4b79 dep/imgui: Update to v1.91.9b 2025-04-12 21:13:59 +10:00
Stenzek
32963c3f6a Controller: Use string_view() for localised strings 2025-04-12 14:51:58 +10:00
Stenzek
057398b4ab FullscreenUI: Mostly replace C string usage with string_view 2025-04-12 14:13:05 +10:00
Stenzek
8f8f7cd1cb Achievements: Queue RAIntegration writes on CPU thread 2025-04-12 12:35:05 +10:00
Stenzek
faa7ca5121 FullscreenUI: Add confirmation to hardcore mode enable/reset 2025-04-12 12:30:53 +10:00
Stenzek
9573286e3b FullscreenUI: Increase notification rounding 2025-04-12 12:30:31 +10:00
Stenzek
c192bd798b Bus: Stub out 0x1F802080
Used by some homebrew.
2025-04-11 22:18:27 +10:00
Stenzek
fca250257c Achievements: Initialize RAIntegration in two parts 2025-04-11 22:13:07 +10:00
Stenzek
78ff3b97b4 dep/rcheevos: Make RAIntegration loadable in two parts
DLL loaded/version checked on core thread, UI initialized on UI thread.
2025-04-11 22:13:07 +10:00
Stenzek
c1e01af511 Host: Expose RunOnUIThread() to core
I hate this, but sadly needed for RAIntegration...
2025-04-11 22:13:07 +10:00
Stenzek
f0d4816de7 RegTest: Add function queueing for RunOnCPUThread() 2025-04-11 22:13:07 +10:00
Stenzek
5f48adb53a RegTest: Compile fix 2025-04-11 22:13:07 +10:00
Stenzek
3b5d2e96f5 GameDB: PGXP-CPU for Spider-Man games 2025-04-11 22:10:37 +10:00
bl@ck_m@ge
12a50fe7c5 GameDB: exclude analog support for some 2D games (#3402) 2025-04-11 22:10:10 +10:00
Stenzek
2eecf6b79d GPU/HW: Clear depth at vblank time in 480i games
If this is a 480i single buffer game, then rendering should complete within one vblank.
Therefore we should clear the depth buffer, because the drawing area may not change.
2025-04-10 22:02:40 +10:00
Stenzek
e7a3465598 Achievements: Display hardcore disabled subtitle in game summary 2025-04-10 21:45:45 +10:00
Stenzek
284b13cd43 Achievements: Fix starting with RAIntegration-forced HC mode 2025-04-10 21:40:34 +10:00
Stenzek
8e73b1db7e Achievements: Display notification on subset complete 2025-04-10 21:32:26 +10:00
Stenzek
6165b504b8 Achievements: Use new badge_url/badge_locked_url fields 2025-04-10 21:24:08 +10:00
Stenzek
4708a8fda4 Achievements: Fix login while ingame 2025-04-10 21:12:35 +10:00
Stenzek
21560537c2 Achievements: Fix crash starting with no game 2025-04-10 02:29:45 +10:00
Stenzek
15a81e5543 Deps: Remove RAInterface 2025-04-10 02:18:17 +10:00
Stenzek
d286b96c2d Achievements: Swap RAInterface for RAIntegration via rc_client 2025-04-10 02:16:12 +10:00
Stenzek
1bb1354d4e Achievements: Use rc_client as source of truth for HC mode 2025-04-10 01:35:10 +10:00
Stenzek
a0aac8ef17 dep/rcheevos: Bump to latest upstream 2025-04-10 01:35:10 +10:00
Stenzek
e41543c38a Achievements: Cache latest/nearest achievement info
When using RAIntegration through rc_client, the rc_client_achievement_t
pointer does not persist after rc_client_destroy_achievement_list().
2025-04-10 01:35:08 +10:00
Stenzek
a310d3a5e7 FullscreenUI: Fix load-and-resume-state HC popup 2025-04-09 22:47:39 +10:00
Stenzek
8e5531eaa2 FullscreenUI: Fix call of moved-from function 2025-04-09 22:41:13 +10:00
Stenzek
8186e615ab ShaderGen: Don't use __VERSION__ for polyfill
Adreno once again is a broken turd and uses 300 even for GLSL ES 3.20.

And to add insult to injury, it reports the errors at the call site
instead of where the function is actually being overloaded...
2025-04-09 13:24:47 +10:00
Stenzek
97c81edf39 FullscreenUI: Android build fix 2025-04-09 13:24:47 +10:00
Stenzek
82d3b6852d CI/AppImage: Include libcom_err.so.2 in cross appimages 2025-04-09 13:24:46 +10:00
Stenzek
182ba2aa7f SPU: Devel build fix 2025-04-08 22:21:12 +10:00
Stenzek
8706f609dd SPU: Add VU meter display in debug/devel builds 2025-04-08 22:06:03 +10:00
Stenzek
0479500357 CPU: Correctly mask upper 1.5GB of KUSEG
Stops fastmem going into a loop when trying to backpatch accesses
above 512MB.
2025-04-08 21:39:29 +10:00
Stenzek
0a1e8e27f0 ShaderGen: Emit packUnorm4x8() for GLSL ES 3.0 2025-04-08 20:11:01 +10:00
Stenzek
7971bb949b GPU/HW: Add Scale2x/Scale3x texture filters 2025-04-08 20:10:58 +10:00
Stenzek
6e02133452 Qt: Fix game list achievement icon spacing at 100% DPI 2025-04-07 21:21:38 +10:00
Stenzek
83f755055b FullscreenUI: Fix long lists not scrolling to selected item 2025-04-07 21:13:52 +10:00
Stenzek
52f8a347c7 FullscreenUI: Fix Toggle Fast Forward being disabled 2025-04-07 20:48:32 +10:00
Stenzek
3ecaffd427 dep/reshadefx: Don't unconditionally emit point size variable
Metal compiler doesn't like it.
And we're only using triangles at the moment anyway.
2025-04-07 20:47:31 +10:00
Stenzek
2bd9e5fbb1 README: Add link to old releases repository
Apparently I forgot to do this when I created it back in Feb...

I can't be bothered to rearchitecture the automatic updater so it
doesn't have the silly 30 tag limit that GitHub imposes on its API
requests by default.
2025-04-06 23:28:55 +10:00
Stenzek
a3a162f724 Data: Update SDL game controller database 2025-04-06 23:20:47 +10:00
Stenzek
dfa96e080d GPU: Implement MMPX texture filter 2025-04-06 23:16:59 +10:00
Stenzek
054e96f46b BIOS: SCPH-7000W is region-free 2025-04-06 23:16:03 +10:00
Stenzek
b794e841a9 Achievements: Improve HC self-disable 2025-04-06 23:16:03 +10:00
Stenzek
5034fb943c Hotkeys: Rearrange categories for some shortcuts and improve naming 2025-04-06 23:16:03 +10:00
Stenzek
e62f3bd4a8 PostProcessing: Show Reshade ui_text style help text 2025-04-06 23:16:03 +10:00
Stenzek
a9f1dd20c3 D3D12Device: Fix GPU-based validation being unconditionally enabled 2025-04-06 23:16:03 +10:00
Stenzek
f55961593a PostProcessing: Display compile errors in OSD 2025-04-06 23:16:03 +10:00
Stenzek
979ad979b9 PostProcessing/FX: Add support for compute shaders 2025-04-06 23:16:03 +10:00
Stenzek
1aabcf1ba7 PostProcessing/FX: Alternate between two 'backbuffers'
Saves video memory, and also fixes shaders that expect each pass's input
to be the output of the previous path without explicitly referencing the
render target.
2025-04-06 23:16:03 +10:00
Stenzek
80cfe59dbe PostProcessing/FX: Allow use of fixed-size render targets
Also obey the ClearRenderTarget flag.
2025-04-06 23:16:03 +10:00
Stenzek
4e7fdc8dbd PostProcessing/FX: Allow frametime as int
But the value will be bogus.
2025-04-06 23:16:03 +10:00
Stenzek
eca113cd76 GPUDevice: Fix/improve compute shader support
Add multiple texture layout with/without UBO.
2025-04-06 23:16:02 +10:00
Stenzek
2a99529473 Deps: April updates
- Harfbuzz 10.4.0
- libpng 1.6.47
- SDL3 3.2.10
- Zstandard 1.5.7
- Qt 6.9.0
- shaderc 2025.1

Flatpak is still stuck on Qt 6.8 as usual.
2025-04-06 12:05:57 +10:00
bl@ck_m@ge
6e39453b29 GameDB: add Digital Contoller support for The Adventure of Little Ralph (Demo) (#3401) 2025-04-06 11:38:00 +10:00
Stenzek
4ead87d191 README: Mention ARM32/ARM64 AppImage builds 2025-04-05 21:54:40 +10:00
Stenzek
584ed4bb38 FullscreenUI: Fix progress bar line at 0% 2025-04-05 21:54:38 +10:00
Stenzek
0f6e5bb1fe FullscreenUI: Fix pause menu achievements text progress colour 2025-04-05 21:54:38 +10:00
Stenzek
079dae37fd FullscreenUI: Use transition for background/theme changes 2025-04-05 15:02:53 +10:00
Stenzek
162150c509 FullscreenUI: Force key nav on first open 2025-04-05 15:02:50 +10:00
Stenzek
64fac4c9d4 Qt: Fix interacting with pause menu after double-click-fullscreen 2025-04-05 15:02:32 +10:00
Stenzek
47e941cdc2 Qt: Fix shutdown from Big Picture exiting application 2025-04-05 15:02:32 +10:00
Stenzek
46ae1780c5 Qt: Fix double-click-fullscreen with notifications up 2025-04-05 15:02:15 +10:00
Stenzek
f05c627e48 Qt: Update glyph ranges 2025-04-04 21:47:08 +10:00
Stenzek
836a0c7322 Qt: Fix achievements text highlight colour
Was only really an issue in the Classic Windows theme I think.
2025-04-04 21:46:38 +10:00
Stenzek
426cdd1611 Qt: Center icons in grid view 2025-04-04 21:46:38 +10:00
Stenzek
f494cb47c4 Qt: Widen status bar widgets
Linux systems with their thicc fonts...
2025-04-04 21:46:38 +10:00
Stenzek
fe60a2a87e CrashHandler: Replace invalid parameter and purecall handlers 2025-04-04 21:46:38 +10:00
Stenzek
c75d5f71b7 CrashHandler: Include assertion/panic information in dumps 2025-04-04 21:46:38 +10:00
zkdpower
b3087657be Update the Simple-Chinese translation to latest. (#3400) 2025-04-04 21:46:27 +10:00
Víctor "IlDucci
fdfbc7f569 Spanish (Spain) translation update 2025/04/03 (#3399)
- Updated Spanish (Spain) translation with latest changes.
- Minor corrections to unify certain user-facing questions and to abbreviate certain strings that would overflow Big Picture UI on a 4:3 display ratio.
- Cleaned up unused translations.
2025-04-04 10:57:36 +10:00
Daniel Nylander
d9363108d1 Updated Swedish translation (#3398) 2025-04-04 10:57:20 +10:00
Anderson Cardoso
1332f6da72 Atualização Português do Brasil (#3397)
Atualizado para a última versão.
2025-04-03 20:56:03 +10:00
Stenzek
ffd6726a59 Qt: Drop -settings/-portable CLI parameters
This hasn't been tested in years, and doesn't makes sense when you
consider other files are saved in the DataRoot directory (e.g. custom
properties, play time, crash dumps, etc).

-portable is redundant as the presence of settings.ini in the AppRoot
will trigger it anyway, therefore it is only relevant for first-time
installs. In which case it's just as much work to create an empty
settings.ini or portable.txt file as it is to create a shortcut with
-portable on the command line.

It was also broken anyway for a long time, and nobody complained.
2025-04-03 19:58:40 +10:00
Stenzek
bbdc6ab4e0 Misc: Fix a bunch of code analysis warnings
Quite a few of these were legitimate.
2025-04-03 19:29:03 +10:00
Stenzek
c7139b943c GPU/HW: Remove redundant check 2025-03-30 23:42:02 +10:00
Stenzek
acd684bca2 D3D12Device: Fix a couple of errors in ROV handling 2025-03-30 23:41:51 +10:00
Stenzek
b798d8f1aa Settings: Add option for enabling GPU-based validation 2025-03-30 23:20:39 +10:00
Stenzek
049ec4af90 CI/Linux: Bump discord-rpc/lunasvg commits 2025-03-30 22:27:59 +10:00
Stenzek
162d742cc0 CDROM: Remove hack for Fighting Force
Instead properly handle the one-sector-delay that occurs when autopause
detects the start of a new track.
2025-03-30 22:00:21 +10:00
Stenzek
8c1f75ab8c GameDatabase: Add overrides for maximum CD speedup cycles 2025-03-30 22:00:21 +10:00
Stenzek
d2c09dfaff Settings: Split read and seek cycles for maximum CD speedup 2025-03-30 22:00:21 +10:00
Stenzek
3292833fb8 FullscreenUI: Add option to turn off animations 2025-03-30 15:58:48 +10:00
Stenzek
04c5a9f1b2 FullscreenUI: Improve leaderboard text contrast 2025-03-30 15:43:15 +10:00
Stenzek
c5cc94c4b7 FullscreenUI: Fix hotkey categories duplicating 2025-03-30 15:22:46 +10:00
Stenzek
64513395f3 FullscreenUI: Add fade transition to most screen changes 2025-03-30 15:22:46 +10:00
Stenzek
e6e6313219 FullscreenUI: Add offscreen-based screen fade 2025-03-30 15:22:46 +10:00
Stenzek
4e2872f248 FullscreenUI: Fix consecutive choice dialogs 2025-03-30 14:45:26 +10:00
Stenzek
2d31bf5685 FullscreenUI: Convert input binding into a PopupDialog 2025-03-30 14:45:26 +10:00
Stenzek
9bcd738f5c FullscreenUI: Make save state selector a main window
More reliable, saves messing around with popups.
2025-03-30 14:45:26 +10:00
Stenzek
3bf5ded0d2 FullscreenUI: Fix various issues
- Pause menu losing key focus the first time it's opened.
- Pause menu being unopenable after close when paused.
- Key nav not being enabled after closing game via main UI.
2025-03-30 11:47:31 +10:00
Stenzek
a3e840526a FullscreenUI: Fix multi-disc selection with duplicate filenames 2025-03-29 21:46:56 +10:00
Stenzek
54c42f9c27 Achievements: Consider all-hidden-leaderboards as no leaderboards
Stops the menu option being available and showing 0 leaderboards.
2025-03-29 20:06:09 +10:00
Stenzek
b4ae19411b Achievements: Show unconfirmed unlocks in pause menu 2025-03-29 20:06:09 +10:00
Stenzek
37230107f4 FullscreenUI: Run idle while notifications/toasts are onscreen 2025-03-29 20:06:09 +10:00
Stenzek
730fa67952 FullscreenUI: Darken titled toast text 2025-03-29 20:06:09 +10:00
Stenzek
3cf2f41723 FullscreenUI: Fix crash changing renderer 2025-03-29 20:06:09 +10:00
Stenzek
ba3c693717 Qt: Fix double memcard warning on shutdown 2025-03-29 18:01:10 +10:00
Stenzek
0687e59bda FullscreenUI: Rewrite popup dialog handling
Add animations, fix background dimming.
2025-03-29 17:57:37 +10:00
Stenzek
576658b6eb Settings: Max speedup cycles should be at least 1 2025-03-28 21:23:32 +10:00
Stenzek
c7504e7016 dep/fmt: Bump to v11.1.4 2025-03-28 20:54:04 +10:00
Stenzek
e4a028834a FullscreenUI: Fix keynav default in open-in-game-list mode 2025-03-28 20:44:54 +10:00
Stenzek
f36062a94e FullscreenUI: Fix duplicate item in advanced settings 2025-03-28 20:40:52 +10:00
Stenzek
9ef7f54f19 FullscreenUI: Enable all windows to nav-wrap
i.e. when pressing down at the end, it wraps to the top.
2025-03-28 20:38:31 +10:00
Stenzek
003518c234 FullscreenUI: Fix nav wrapping if first item is disabled 2025-03-28 20:12:41 +10:00
Stenzek
6f2225fb61 FullscreenUI: Remove redundant ActiveButton() and friends 2025-03-28 19:45:52 +10:00
Stenzek
f80a77fa27 FullscreenUI: Fix popup item border going outside of window 2025-03-28 19:27:24 +10:00
Stenzek
ea3774cece FullscreenUI: Fix setting BIOS to Auto Detect 2025-03-28 18:54:14 +10:00
Stenzek
58bd87666e Qt: Fix crash when FSUI open and game list activated 2025-03-28 17:25:53 +10:00
Stenzek
fbadacae78 CDROM: Fudge track autopause hold position
Fudge the hold position by 2 sectors to reduce the number of GetlocP's
that will return a MSF in the old track.

Works around the music hang in Fighting Force.
2025-03-28 17:24:39 +10:00
Stenzek
ceef7af1da GameList: Fix crash if cache fails to open 2025-03-28 17:07:13 +10:00
Stenzek
ece18d10c5 PCDrv: Allow opening by absolute path 2025-03-24 18:59:15 +10:00
Stenzek
ae9023ddf3 CI: Build armhf AppImages 2025-03-23 23:41:19 +10:00
Stenzek
3f0abccb59 CI: Don't use zlib-ng on cross-compiled AppImages
Seems to be problematic on armhf, and I can't be arsed debugging it.
2025-03-23 23:41:00 +10:00
Stenzek
104c82c2c3 Mini: Fix right button forwarding 2025-03-23 23:39:26 +10:00
Stenzek
2cb6ce635f Mini: Fix non-first game list refresh 2025-03-23 23:39:15 +10:00
Stenzek
4ce001aef3 GameDatabase: Add DisableFullTrueColor trait 2025-03-23 17:08:25 +10:00
Stenzek
1fca8ae6bf FullscreenUI: Fix start-in-game-list mode using grid 2025-03-23 17:02:52 +10:00
Stenzek
3ffd20b833 FullscreenUI: Display game list attributes in darker colour 2025-03-23 16:59:23 +10:00
Stenzek
9411e40c20 FullscreenUI: Fix assert when booting+loading state 2025-03-23 16:43:57 +10:00
Stenzek
03d7af2efc FullscreenUI: Add border rounding to menu items 2025-03-23 16:42:24 +10:00
Stenzek
9020959511 Qt: Add game list background function 2025-03-23 15:58:56 +10:00
Stenzek
98d1c71981 GameDB: Force full true color for Bust a Move 2
Not strictly accurate, but looks better.
2025-03-22 18:32:31 +10:00
Stenzek
741e971681 GPU/HW: Add 'True Color (Full)' dithering mode
This is equivalent to the old 'True Color' mode.

The new 'True Color' mode truncates flat-shaded sprites/polygons
to 16-bit color before drawing. Doing so fixes:

- Menu background in Breath of Fire IV.
- Loading background in JumpStart Wildlife Safari - Field Trip.
- and other similar games.
2025-03-22 18:32:31 +10:00
Stenzek
2d477f80b0 Qt: Add tooltips to setup wizard graphics settings
Same strings as the main graphics settings page, so translation should
be just a matter of accepting them as-is.
2025-03-22 18:32:31 +10:00
Stenzek
2311c8d287 Settings: Convert dithering/true color options to a dropdown
Half of them are mutually exclusive, so this simplifies things.
Fewer options = better, right?
2025-03-22 18:20:51 +10:00
Stenzek
32b09193d1 Qt: Move force video timing to console settings
Since it's related to the region, it makes sense to be in here.
And it frees up precious vertical space.
2025-03-22 18:20:51 +10:00
Stenzek
4afa41b927 Qt: Move async readahead sectors to advanced settings 2025-03-22 18:20:51 +10:00
Stenzek
3ab3e4be06 ImGuiManager: Tweak OSD message rounding 2025-03-22 18:20:51 +10:00
zkdpower
f4e93df1b1 Update the Simple-Chinese translation to latest. (#3395) 2025-03-22 17:10:12 +10:00
Stenzek
115ba4433c CPU/Interpreter: Emulate lo/hi read stall after mult/div
Still need to do the recompiler.
2025-03-22 01:59:00 +10:00
Stenzek
74064af730 GameDB: Set disable scaled interlacing on various games
Fixes intro fade/transitions in Final Fantasy VIII.
Fixes menu corruption in Destruction Derby Raw.
2025-03-22 01:19:01 +10:00
Stenzek
62d7a73381 GPU/HW: Add 'Scaled Interlacing' option
Disabling this option causes rendering to skip N lines instead of 1
line, where N is the internal resolution multiplier.
2025-03-22 01:19:01 +10:00
Stenzek
d176109d3b GPU/HW: Fix incorrect interlaced VRAM extract offset
Fixes exascerbated combing when upscaling.
2025-03-22 01:11:24 +10:00
Stenzek
6eddc0b982 GPUDevice: Don't allow copy-resize between different formats
That's a spec violation.
2025-03-22 01:11:23 +10:00
Stenzek
346f0f945d GameDatabase: Fix incorrect multitap key parsing 2025-03-21 19:11:50 +10:00
Stenzek
de6a8fba51 BIOS: Set priority of v4.1 E to 10
It doesn't have the additional region check.
2025-03-21 19:11:47 +10:00
Stenzek
5c41a48e39 GPU/HW: Fix crash when changing downsampling factor 2025-03-20 21:19:08 +10:00
zkdpower
19c03aff4d Update the Simple-Chinese translation to latest. (#3394) 2025-03-20 21:17:47 +10:00
Anderson Cardoso
fffa44911c Atualização Português do Brasil (#3393)
Atualizado para a última versão.
2025-03-20 21:17:39 +10:00
JukePlz
10fea83b4a GameDB: Intelligent Qube doesn't support analog controller (#3392)
Same for the demos.
2025-03-20 21:17:20 +10:00
Daniel Nylander
eea4159756 Updated Swedish translation (#3391) 2025-03-20 21:17:08 +10:00
KamFretoZ
e5cec05633 Qt/BPM: Add Green Giant Theme (#3390)
WHAT ARE YE DOING IN MY SWAMP???
2025-03-20 21:16:45 +10:00
Stenzek
a1d69982f3 CI: Update AppStream metainfo 2025-03-15 18:49:58 +10:00
Stenzek
e3cb3d029b FullscreenUI: Fix system not unpausing after HC disable popup 2025-03-15 16:27:43 +10:00
Stenzek
27fc7de07a FullscreenUI: Add translucency/shadow to achievement notifications 2025-03-15 16:27:43 +10:00
Stenzek
a1e5bb7bc0 FullscreenUI: Display legend for achievement status icons 2025-03-15 15:58:39 +10:00
Stenzek
61de096d26 FullscreenUI: Add status text (left side of footer) 2025-03-15 15:58:22 +10:00
Stenzek
4f00a7c7c1 FullscreenUI: Add rounding to achievements progress bars 2025-03-15 15:44:23 +10:00
Stenzek
3420af829c FullscreenUI: Display unlock rarity in achievements view 2025-03-15 15:41:30 +10:00
Stenzek
830842891e GameList: Rename max value enum for consistency 2025-03-15 15:03:42 +10:00
Stenzek
dd885cfe2f GameList: Cache invalid entries
Saves repeatedly scanning them every time the application starts.
2025-03-15 15:02:56 +10:00
Stenzek
8a0400ad2c GameList: Don't try to scan gpudump files 2025-03-15 14:46:19 +10:00
Stenzek
bcd4b918dc FullscreenUI: Fix black screen on renderer change 2025-03-15 14:39:22 +10:00
Stenzek
c82c007a75 FullscreenUI: Add settings reset option to settings 2025-03-15 14:33:51 +10:00
Stenzek
0a470067f5 FullscreenUI: Move appearance up in settings order 2025-03-15 14:07:35 +10:00
Stenzek
9734066514 FullscreenUI: Add StaticGray background 2025-03-15 14:05:09 +10:00
Stenzek
2a86faa51e FullscreenUI: Replace landing icons with colourable icons 2025-03-15 13:56:29 +10:00
Stenzek
4bac7cb79e FullscreenUI: Fix some dialogs not being cancellable
i.e. exitable with right mouse click/B button.
2025-03-15 02:18:20 +10:00
KamFretoZ
db3b689166 FullscreenUI: Add Dark Ruby theme (#3389) 2025-03-15 02:17:54 +10:00
Stenzek
1189f53840 FullscreenUI: Add 'Automatic' theme that syncs with Qt 2025-03-15 00:42:02 +10:00
Stenzek
6e27b8ab91 FullscreenUI: Add option to start/open to game list 2025-03-14 23:57:14 +10:00
Stenzek
3d0f038697 FullscreenUI: Move game list settings to main tab
And add resume to game list/grid.
2025-03-14 23:53:50 +10:00
Stenzek
6c867859bf FullscreenUI: Apply theme to loading screen 2025-03-14 23:07:14 +10:00
Stenzek
f11c31b41c ImGuiOverlays: Apply theme to save state selector 2025-03-14 22:58:02 +10:00
Stenzek
cffafad2ca ImGuiManager: Use fullscreen UI theme for OSD 2025-03-14 22:36:14 +10:00
Stenzek
b6fa2cecd3 FullscreenUI: Fix shadowed text alpha again 2025-03-14 22:36:14 +10:00
Stenzek
9c971825a9 FullscreenUI: Apply theme to ingame achievement overlays 2025-03-14 21:22:17 +10:00
Stenzek
c57689cc90 FullscreenUI: Inherit colour alpha for shadowed text 2025-03-14 21:21:56 +10:00
Stenzek
511663198e Qt: Update glyph ranges 2025-03-14 20:52:43 +10:00
zkdpower
531b3e103a Update the Simple-Chinese translation to latest. (#3388) 2025-03-14 20:52:19 +10:00
Stenzek
e422afdec1 FullscreenUI: Improve achievements pause menu overlays
- Add most recent unlock/nearest completion.
- Make it look nicer and better fit with the rest of the interface.
2025-03-14 20:50:20 +10:00
Stenzek
ba3295930c VulkanDevice: Allow 0x0 window size
Fixes minimizing in render-to-separate-window mode.
2025-03-12 23:54:25 +10:00
KamFretoZ
4fc49ee0ca FullscreenUI: Tweak the highlight background color (#3387) 2025-03-12 23:54:15 +10:00
Stenzek
f6296ceb09 Qt: Increase setup wizard dialog height
Needs it on Linux otherwise graphics combos are shrunk.
2025-03-12 01:46:10 +10:00
Stenzek
9a9ed52b70 Qt: Fix vertical alignment in patches page 2025-03-12 01:46:07 +10:00
Stenzek
44af55a77f FullscreenUI: Differentiate title/subtitle colours
Makes it easier to read.
2025-03-12 01:46:04 +10:00
Stenzek
72a0ba1e8e FullscreenUI: Fix pause menu light theme shadow colour 2025-03-12 00:19:32 +10:00
Stenzek
aeadd4c280 FullscreenUI: Move game info to top of pause menu 2025-03-11 23:19:00 +10:00
Stenzek
d6ab840e4b FullscreenUI: Use RetroAchievements game icon as fallback game image 2025-03-11 22:38:43 +10:00
Stenzek
492a55ee8b FullscreenUI: Add icons to achievement list categories 2025-03-11 22:27:08 +10:00
Stenzek
541af8d5de GDBServer: Stub out thread commands 2025-03-11 22:07:18 +10:00
Stenzek
7bae23d79d GDBServer: Implement memory breakpoints 2025-03-11 21:50:26 +10:00
Stenzek
a0c06f8d9c GDBServer: Implement 's' command (single step) 2025-03-11 21:32:03 +10:00
Stenzek
814263b442 GDBServer: Mostly rewrite handlers and fix undefined behaviour
Remove all heap allocations.
Remove copies.
2025-03-11 21:29:29 +10:00
Stenzek
2f5855a7a4 GDBServer: Get rid of <map> usage 2025-03-11 20:37:37 +10:00
Stenzek
cd694c01d8 GDBServer: Improve ack handling
Treat acks as complete packets, that way it doesn't spam an error
when only an ack is sent.
2025-03-11 20:30:47 +10:00
Stenzek
c717f547cf Deps: Update to SDL3 3.2.8 2025-03-10 21:54:45 +10:00
Stenzek
8bffd9725e Qt: Lock system when automatic updater shows
Prevents messyness when launching in fullscreen+big picture.
2025-03-10 21:54:45 +10:00
Stenzek
e25f287d60 Qt: Avoid stuck in temporary render-to-separate mode 2025-03-10 21:54:45 +10:00
Stenzek
9f0bbccd50 Achievements: Fix progress bar text alignment 2025-03-10 21:54:45 +10:00
Víctor "IlDucci
29f19d0ab6 Spanish (Spain) translation update (#3386)
- Adding new strings.
2025-03-09 16:10:49 +10:00
Stenzek
58dc7562a3 GPU/HW: Add in-pass clear depth pipeline
Instead of clearing the entire buffer, we only need to wipe out the
current drawing area. Saves a decent chunk of memory bandwidth in games
that end up spamming clears.
2025-03-07 21:33:06 +10:00
Stenzek
ee6887b68a GPU/HW: Add stat for depth buffer clears 2025-03-07 21:33:02 +10:00
Stenzek
2bfbec3e9e Settings: Use new key name for depth threshold
Because of the changed range.
2025-03-07 21:32:57 +10:00
Stenzek
705fe11e07 Qt: Fix incorrect file filter for memory card import 2025-03-07 21:32:57 +10:00
Stenzek
e73ca9e052 Qt: Fix new range for depth clear threshold 2025-03-07 18:05:20 +10:00
Stenzek
6437a5db60 GPU/TextureCache: Dump textures asynchronously
Saves lagging the emulation.
2025-03-07 16:05:36 +10:00
Stenzek
95797b05f1 GPU: Force early run on GP0 FIFO overflow
And don't crash if a game spams GP0 writes and it overflows.
2025-03-07 15:49:07 +10:00
Stenzek
9939f1cd05 CPU/Interpreter: Use __builtin_{add,sub}_overflow for exceptions
Recompiler already does this.
2025-03-07 15:48:28 +10:00
Stenzek
7eb7ad684c CPU/Recompiler: Remove load delay flag from lwc2
Shouldn't make any difference since it's not a register write.
2025-03-07 15:08:00 +10:00
Stenzek
826f10239c CPU/Recompiler: Flush GTE completion cycle on load without fastmem 2025-03-06 22:41:10 +10:00
Stenzek
78bb14bd23 CPU: Fix disassembly of GTE instructions in log 2025-03-06 22:41:10 +10:00
Stenzek
b230c9c639 CPU/PGXP: Use GTE MAX_Z for Z normalization
Fixes clipping with depth buffer in some games, e.g. Final Fantasy VII battles.
2025-03-06 22:41:10 +10:00
Stenzek
8cfd843d8f System: Fix depth clear threshold not applying immediately 2025-03-06 22:41:09 +10:00
Stenzek
160f1ea8a0 Qt: Fix vibration motor binding not showing some devices 2025-03-06 22:41:09 +10:00
Anderson Cardoso
c3ce0eece2 Atualização Português do Brasil (#3385)
Melhoria de consistência dos textos e adição de novos conforme última atualização mais recente.
2025-03-06 22:40:54 +10:00
bl@ck_m@ge
b8d86a18da GameDB: Kagero II & III 2025-03-04 17:55:00 +10:00
Stenzek
0bf0b5c22b Qt: Fix typo in setup wizard 2025-03-04 14:07:17 +10:00
Stenzek
4c64e4879f Mini: Log fatal errors to stderr 2025-03-04 14:07:17 +10:00
Daniel Nylander
af4eb68065 Updated Swedish translation (#3383) 2025-03-04 14:06:10 +10:00
JukePlz
c775872a6c GameDB: ASCII and VIP demos don't support analog controllers. (#3384) 2025-03-04 14:05:47 +10:00
Stenzek
859f5090c8 FullscreenUI: Update translation strings 2025-03-02 12:01:55 +10:00
KamFretoZ
38146f2023 FullscreenUI: Fix toast colors and add more themes (#3381) 2025-03-02 12:01:27 +10:00
Stenzek
a0fef2d5ab Qt: Merge gamelistmodel.cpp and gamelistwidget.cpp
They're constantly referring to each other.
2025-03-01 18:13:37 +10:00
Stenzek
4bfb37f8fb Qt: Add graphics and achievements to setup wizard 2025-03-01 18:05:48 +10:00
Stenzek
965da856db FullscreenUI: Add additional rounding to some dialogs 2025-03-01 17:10:09 +10:00
Stenzek
34fdbafe85 FullscreenUI: Add drop shadows to most text
Improves readability with custom backgrounds.
2025-03-01 16:00:05 +10:00
Stenzek
9bfc3e90cc FullscreenUI: Hook up dynamic toast colour 2025-03-01 13:10:50 +10:00
Stenzek
9d9da94b7b FullscreenUI: Default to dark theme on unknown value 2025-03-01 13:10:50 +10:00
Stenzek
5a4e87aba3 FullscreenUI: Reorder interface settings to match Qt 2025-03-01 13:10:44 +10:00
KamFretoZ
5dc0a3630a FullscreenUI: Add Themes (#3380) 2025-03-01 12:41:06 +10:00
Stenzek
15fde6a51b CI: Add ARM64 AppImage builds 2025-03-01 01:34:48 +10:00
Stenzek
ea8f3e5e58 Scripts: Support generating both Qt and Mini AppImages 2025-03-01 01:27:29 +10:00
Stenzek
89d9842c7e FullscreenUI: Fix popup title colours 2025-03-01 01:11:26 +10:00
Stenzek
be970bcfe4 Qt: Handle inverted+negated axes when mapping 2025-02-28 18:06:51 +10:00
Stenzek
ec7c83a58e Settings: Fix race toggling OSD messages 2025-02-28 16:29:18 +10:00
Stenzek
6a86c80445 CPU: Correct wording about cop2 and IRQs 2025-02-28 16:29:18 +10:00
Stenzek
37fa0d135c Mini: Add duckstation-mini interface 2025-02-28 16:29:18 +10:00
Stenzek
df9f15eb68 OpenGLDevice: Support SDL window type 2025-02-28 16:29:18 +10:00
Stenzek
ee1a3b904e VulkanDevice: Support SDL window type 2025-02-28 15:46:53 +10:00
Stenzek
4bddd38d70 WindowInfo: Add SDL window type 2025-02-28 15:46:53 +10:00
Stenzek
0733e173b2 FullscreenUI: Add BackgroundProgressCallback 2025-02-28 15:46:53 +10:00
Stenzek
498e7aac56 X11Tools: Load libxcb and friends dynamically 2025-02-28 15:46:53 +10:00
Stenzek
f7f17a077c Cheats: Add Enable8MBRAM option for patches 2025-02-26 22:43:18 +10:00
Anderson Cardoso
0b167aad52 Atualização Português do Brasil (#3379)
Atualizado para a última versão.
2025-02-26 22:42:50 +10:00
Renzo Pigliacampo
08bbb4a981 Updated Spanish (Latin America) translation (#3378) 2025-02-26 22:42:42 +10:00
Stenzek
fbbc4943f6 FullscreenUI: Fix crash in game properties on non-scanned file 2025-02-24 23:48:23 +10:00
Stenzek
eda32e0695 Qt: Fix image key in overlay export 2025-02-23 18:03:02 +10:00
Stenzek
b764ed4682 DDGoController: Fix incorrect translation context 2025-02-23 18:03:02 +10:00
zkdpower
2011c5511c Update the Simple-Chinese translation to latest. (#3377) 2025-02-23 18:02:52 +10:00
Stenzek
3ea26cc910 GPU: Rewrite automatic resolution scaling
Make it play nice with rewind/runahead.
2025-02-21 23:58:05 +10:00
Stenzek
d812463649 Qt: Ensure SIGCHLD is ignored properly 2025-02-21 23:58:04 +10:00
Stenzek
5fea81c07d Qt: Show only HC achievement count if HC == SC 2025-02-21 23:58:04 +10:00
Stenzek
91370ee5ac Achievements: Update both HC and SC counts on unlock/boot 2025-02-21 23:58:04 +10:00
Stenzek
fa3815d681 Achievements: Fix progress database corruption 2025-02-21 23:58:04 +10:00
Stenzek
90cb92bcc7 CI: Ensure libz.so.1 is packaged in AppImage 2025-02-21 23:58:04 +10:00
JukePlz
f2715b39ec GameDB: Falcata - Astran Pardma no Monshou hash (#3376) 2025-02-21 23:31:38 +10:00
bl@ck_m@ge
d5c83a80a3 GameDB: Sorcerer's Maze (#3375) 2025-02-21 23:31:21 +10:00
Stenzek
f96ab3afda Deps: Switch zlib to zlib-ng
Mac is ommitted because the updater is currently still dynamically
linked, and libz is not part of the bundle (yet).
2025-02-20 16:56:43 +10:00
Stenzek
d1b9473cd2 Deps: Update cpuinfo 2025-02-20 16:56:43 +10:00
Stenzek
373c83c357 GameDB: PGXP-CPU for Twisted Metal 2 2025-02-20 13:47:23 +10:00
KamFretoZ
6a0c73b547 Qt: Add AMOLED theme (#3374) 2025-02-20 13:18:27 +10:00
Stenzek
78bd0fdf3e Qt: Always use ARGB32 for padded cover images
Fixes black background around non-square covers.
2025-02-17 22:53:10 +10:00
Stenzek
31a5d8c481 GameDB: Tama - Adventurous Ball in Giddy Labyrinth hash 2025-02-17 22:53:10 +10:00
Stenzek
72ac4f94db CDROM: Increase delay for pause-when-paused
Fixes lockup in Tama - Adventurous Ball in Giddy Labyrinth.
2025-02-17 22:53:10 +10:00
Stenzek
6f25cf31a7 CDROM: Add randomness to repeated seek times
I hate it, but it fixes lockups in Dino Crisis 2, and probably
other games with dodgy code too.

Also Simple 1500 Series Vol. 57 - The Meiro.
2025-02-17 22:52:56 +10:00
Stenzek
2f5c4d819e Common: Add xorshift-based PRNG class 2025-02-17 21:33:37 +10:00
Stenzek
b57049f1aa CI: Enable Wayland on AppImage/Flatpak builds
Might have to revert this, we'll see how many systems it breaks on.
2025-02-17 00:24:52 +10:00
Stenzek
9a75af2fa9 Qt: Explicitly set desktop file path on startup
Fixes window icon when running under Wayland.

Or, well, as much as it can given the fact that smug GNOME developers
think that windows should not be able to set their own icons.
2025-02-16 23:49:19 +10:00
Stenzek
0c30acb285 Qt: Work around QtWayland bugs
- Render to main no longer screws up the game list/menu bar.
- Toggling render to main no longer breaks the main window.

Positioning still sucks, but the various groups involved would
rather sit around arguing with each other rather than actually
shipping solutions ¯\_(ツ)_/¯.
2025-02-16 22:16:19 +10:00
Stenzek
cb10c6fbf4 Qt: Ensure build warning is themed 2025-02-16 22:16:17 +10:00
Stenzek
4ce1b1afed GameDB: Set PGXPPreserveProjFP for Vagrant Story
Improves jitter on character models.

Haven't seen any other game with this much of an impact.
2025-02-16 19:03:09 +10:00
Stenzek
5bd1a492be GameDatabase: Turn PGXPPreserveProjFP into a boolean setting 2025-02-16 19:02:56 +10:00
Stenzek
e688e24eb9 GTE: Use floating-point math for preserve-proj-fp 2025-02-16 18:04:24 +10:00
Stenzek
9928d01ac4 Common: Fix ARM64 build on clang-cl 19
Also fix Vector4 extract32().
2025-02-16 18:03:33 +10:00
Stenzek
cba9d00019 Qt: Further improve async cover loading
- Fix non-square images not centering.
- Fix possible crash when changing scale quickly.
- Avoid repeatedly resizing placeholder.
2025-02-16 13:18:37 +10:00
Anderson Cardoso
b45f9c39c7 Atualização Português do Brasil (#3373)
Atualizado para a última versão.
2025-02-16 13:18:22 +10:00
Stenzek
1b3ca81efc Qt: Fix hotkey search placeholder localisation 2025-02-15 23:02:19 +10:00
Stenzek
369f62318f Cheats: Only display codes for selected revision 2025-02-15 22:45:17 +10:00
shikulja
4562573711 Update Russian translation (#3372)
* Update ts

* Update Russian translation

* .
2025-02-15 22:44:50 +10:00
Stenzek
ce8b1f0996 GPU: Small optimization to lanczos shader
Apparently the Adreno shader compiler can't do this on its own.

~23% performance improvement.
2025-02-15 17:44:41 +10:00
Stenzek
958fd0049c GPU/HW: Don't use shader for self-overlapping copies
If we use the shader here, we're going to immediately end the
render pass since the area we read and wrote to is going to be
dirty again.

This is problematic on Mali where the render passes are really
expensive. Test case: Dino Crisis 2 - open menu
2025-02-15 17:20:30 +10:00
Stenzek
8772c336ec CPU: Don't stall until GTE completion on write
Apparently this is what the real CPU does, and some very optimized
code can run slower if we stall early.

Obviously if you write to a register being read by the command,
things are going to break.
2025-02-15 12:57:18 +10:00
Stenzek
7d80a74dc3 GameDatabase: Remove now-unused traits 2025-02-15 12:57:02 +10:00
Stenzek
2fcf115d0b GameDB: Drop LUT fastmem overrides
No longer needed with the previous commit.
2025-02-15 12:55:07 +10:00
Stenzek
2bfc408242 Bus: Enable mmap fastmem on uppermost KSEG0 mirror
Instead of mapping all the RAM mirrors, we only map the KSEG0
uppermost mirror. This is where some games place their stack, so
we avoid the backpatching overhead/slowdown, but don't pay the
cost of 4x the mprotect() calls when a page's protection changes,
which can have a non-trivial impact on slow ARM devices.
2025-02-15 12:42:43 +10:00
Stenzek
e9bfca8cca System: Add 'Fast Forward Memory Card Access' option
Does what it says on the tin.
2025-02-15 12:38:32 +10:00
Stenzek
13d58d8ed0 Qt: Move fast boot/fast forward to console settings
Makes more sense there, and matches Android.
2025-02-15 12:32:22 +10:00
Stenzek
f4aa5e1b98 MemoryCard: Filename -> Path 2025-02-15 11:39:31 +10:00
Stenzek
e0620fcd40 System: Fix setting-altering game patch behaviour
e.g. overclock was only half applying
2025-02-14 23:50:34 +10:00
Stenzek
bceadadcb4 Image: Fix possible unaligned movaps 2025-02-14 22:51:29 +10:00
Stenzek
6802f77cb9 CrashHandler: More Wcast-function-type-mismatch fixes 2025-02-14 22:06:44 +10:00
Stenzek
af085d7e5a CI: Bump to LLVM/clang 19 2025-02-14 19:25:05 +10:00
Stenzek
ced9ee4b0b Qt: Update glyph ranges 2025-02-14 19:02:22 +10:00
Stenzek
dc6d6b91d4 PostProcessing: Fix abort on slow compile in big picture 2025-02-14 19:01:40 +10:00
Stenzek
5060e72b96 Qt: Fix missing vibration binding for NegConRumble 2025-02-14 19:01:40 +10:00
Stenzek
5ae32d3c70 System: Fix black screen when changing options while paused 2025-02-14 19:01:40 +10:00
Stenzek
953bd0919b RegTest: Fix flipped images in OpenGL
We're reading the framebuffer, not rendered image.
2025-02-14 19:01:40 +10:00
Stenzek
b68d7c8adb Image: Vectorize RGBA8 conversion and add A1BGR5 2025-02-14 19:01:40 +10:00
Stenzek
9b2cf0abbd InputSource: Fix Wcast-function-type-mismatch 2025-02-14 19:01:40 +10:00
Stenzek
5913de947f VulkanDevice: Fix incorrect texture format for A1BGR5 2025-02-14 19:01:40 +10:00
Stenzek
3a44c3a758 GPU: Fix prerotated presenting with OpenGL 2025-02-14 19:01:39 +10:00
Stenzek
995a34e0e3 CMake: Correctly unset host page size if set via cache
Fixes x86 flatpak builds unnecessarily using dynamic page size.
2025-02-14 19:01:39 +10:00
zkdpower
f90fdf66c8 Update the Simple-Chinese translation to latest. (#3371)
* Update the Simple-Chinese translation to latest.
2025-02-14 19:01:28 +10:00
Stenzek
7bc18c8538 DDGoController: Rewrite to support axis input
And add virtual buttons for each of the possible states.
2025-02-12 21:52:02 +10:00
Stenzek
a25d5dcd2f CI: Apply SDL3 joystick patch 2025-02-12 19:24:24 +10:00
Anderson Cardoso
cd89f62935 Atualização Português do Brasil (#3369)
Atualizado para a última versão.
2025-02-12 19:22:13 +10:00
Stenzek
ce616f1c5c Cheats: Reapply frame end codes immediately on reload
Otherwise you end up with a single frame where the old code is used.
2025-02-10 23:45:24 +10:00
Stenzek
c137c562cd Qt: Fix incorrect recommended value 2025-02-10 23:45:24 +10:00
Stenzek
36d5708391 GPU/HW: Fall back to replacements from first disc
So you only need one copy.
2025-02-10 23:45:24 +10:00
Daniel Nylander
f6e8ebec99 Updating Swedish translation (100%) (#3367) 2025-02-10 23:44:23 +10:00
zkdpower
2876713f0f Update the Simple-Chinese translation to latest. (#3368)
* Update the Simple-Chinese translation to latest.

* Update the Simple-Chinese translation to latest.
2025-02-10 23:44:11 +10:00
Stenzek
ef4c00a896 Qt: Use display name for a couple of recommended values 2025-02-10 02:21:19 +10:00
Stenzek
7a587d927f Qt: Fix overlapping widgets in macro trigger shift-click 2025-02-10 02:15:27 +10:00
Stenzek
3eed0d0613 CI/Flatpak: Don't strip SDL3 libraries 2025-02-10 02:01:50 +10:00
zkdpower
788b9cd3bf Update the Simple-Chinese translation to latest. (#3365) 2025-02-10 02:00:38 +10:00
JukePlz
2dfa164629 GameDB: Dezaemon Plus Select 100 does not support analog mode (#3364) 2025-02-10 02:00:08 +10:00
Víctor "IlDucci
c1f8a525ca Spanish (Spain) translation update 2025-02-09 (#3366)
Adding latest changes and cleaning up unused translations.
2025-02-10 01:59:49 +10:00
Stenzek
5fb5dcdd70 Achievements: Improve summary popup
Put hardcore mode notice on its own line, rather than in
parenthesis in the title.
2025-02-09 18:24:06 +10:00
Stenzek
46ae3e55ea Cheats: Show disabled code count when HC/safe mode is active 2025-02-09 17:45:19 +10:00
Stenzek
4ce48abfc1 GPU/HW: Fix incorrect source rect for page replacements 2025-02-09 17:45:16 +10:00
Stenzek
ac4ef4f853 Gt: Update glyph ranges 2025-02-09 16:50:02 +10:00
zkdpower
07f973076d update the Simple-Chinese Translation to latest. (#3363) 2025-02-09 16:49:38 +10:00
Stenzek
8132c51a12 Cheats: Add 'Ignore' field to file format
Codes with Ignore set to true will not be listed/loaded.
2025-02-09 15:58:23 +10:00
Stenzek
4236beabaf System: Fix setting-altering patches not applying on startup 2025-02-09 15:38:12 +10:00
Stenzek
0428a93315 Qt: Fix possible crash when rescanning game list 2025-02-09 15:04:09 +10:00
Stenzek
3e8ef44a1d Deps: Update to SDL3 3.2.4 2025-02-09 15:04:09 +10:00
Stenzek
901927d7fe CDROM: Don't panic on unknown register read 2025-02-09 13:23:37 +10:00
Stenzek
94b2060979 GPU: Clear display texture on fatal error 2025-02-09 13:22:03 +10:00
Stenzek
06b02183cb GPU/HW: Split transparent draws if dual-source blend unsupported
The ordering is not correct otherwise. Ape Escape has a bunch of
overlapping sprites that have a mix of opaque and transparent texels,
and the transparent texels are repeated multiple times when the
opaque texels should cancel them out.

Only affects old Mali drivers.
2025-02-09 13:07:53 +10:00
Stenzek
2663ac9666 CDImage: Improve PBP load error reporting 2025-02-08 17:33:58 +10:00
Stenzek
160c34ef28 CDROM: Avoid additional stat() call loading subchannel
And use BuildRelativePath() for title-based subchannel files.

Fixes flaky loading on Android, some devices return a zero-sized file
when querying a non-existant file.........
2025-02-08 15:54:38 +10:00
Stenzek
81bca06707 System: Add hash to OnGameChanged 2025-02-08 15:03:17 +10:00
Stenzek
acb355a8c3 CDImage: Make .bin loader track length match .cue
Fixes different hashes for loading single-track .bin games directly.
2025-02-08 15:02:56 +10:00
Stenzek
f2cca01e29 ImGuiManager: Fix achievement unlock icon not showing 2025-02-08 01:46:44 +10:00
Daniel Nylander
084422355a Updated Swedish translation (#3362) 2025-02-08 01:46:34 +10:00
Stenzek
063bb96e5d D3D11Device: Always query timestamp before present start
Fixes high GPU usage reporting in D3D11 with AMD GPUs + Optimal Frame
Pacing.
2025-02-07 15:58:35 +10:00
zkdpower
5ae6d9084a update Chinese translation. (#3361)
just UI.
2025-02-07 12:31:58 +10:00
Anderson Cardoso
51480818cd Atualização Português do Brasil (#3360)
Atualizado para a última versão
2025-02-06 22:04:07 +10:00
Stenzek
f8c39ace1c GPU/HW: Warning fix 2025-02-05 22:40:59 +10:00
Stenzek
bee2dabc77 Misc: Replace stringstream str() with C++20 move str()
No extra heap allocation/copy.
2025-02-05 22:38:48 +10:00
Stenzek
8aa97a8118 Data: Update game controller database 2025-02-05 22:14:00 +10:00
Stenzek
2cfc39e874 System: Move cheat reload to Initialize() 2025-02-05 22:13:51 +10:00
Stenzek
57cb2f846e FullscreenUI: Fix system unpausing on shutdown 2025-02-05 20:03:58 +10:00
Stenzek
ecbb79c4bf GPU: Add Lanczos scaling option 2025-02-05 20:01:26 +10:00
Stenzek
99e81f1559 GPU: Fix incorrect condition in WaitForOneQueuedFrame() 2025-02-05 19:31:01 +10:00
Stenzek
c6563a4656 VulkanDevice: Require Vulkan 1.1 for most extension probing
Too much of a headache to deal with these ancient Mali drivers that
support some extensions but not full Vulkan 1.1, and VMA does not
support this scenario.
2025-02-04 17:15:29 +10:00
Stenzek
4ad2d0ac2d GPU: Fix incorrect PAL overscan range 2025-02-03 19:31:23 +10:00
Stenzek
51bef1b3da CMake: Don't print status messages for deps CMakeLists
fmt is noisy.
2025-02-03 00:31:21 +10:00
Stenzek
455836af89 CMake: Check C++20 features that are missing on some systems 2025-02-03 00:30:59 +10:00
Stenzek
cb205c4c36 Qt: Show icon in settings console region dropdown 2025-02-02 22:57:59 +10:00
Stenzek
af277d4d14 Settings: Default to nearest sprite texture filtering
Instead of whatever the 3D texture filter is.

Less confusing since the UI is not disconnected when upgrading from very
old releases, or Android.
2025-02-02 22:57:31 +10:00
Stenzek
59773509af System: Recreate memory save states when device options change 2025-02-02 22:54:32 +10:00
Stenzek
1f5a10371e GPUThread: Handle rare race condition in frame queueing 2025-02-02 22:18:13 +10:00
Stenzek
1ca5782396 Threading: Handle EINTR on sem_wait() 2025-02-02 22:17:56 +10:00
Stenzek
57883910d6 CI: Add ARM64 flatpak build 2025-02-02 18:51:46 +10:00
Stenzek
4ceeb58dbc GPU: Use display size for calculating internal screenshot size
Fixes detail being lost due to added padding when not cropping.
2025-02-02 17:14:35 +10:00
Stenzek
64d3716cfd GPU: Further simplify draw rect calculation
Remove "Stretch Vertically" option, it was very confusing to users.

Integer scale will prefer whichever direction gets a larger draw
rectangle/preserves as much detail.
2025-02-02 17:02:58 +10:00
Stenzek
0c3d55a1a1 GPU: Fix incorrect PAR with overscan cropping 2025-02-02 16:07:06 +10:00
Stenzek
a5940b2e21 GPU: Use constants for display overscan range 2025-02-02 15:39:20 +10:00
Stenzek
7316b011a4 CI: Dependency library updates
HarfBuzz -> 10.2.0
Qt -> 6.8.2
SDL3 -> 3.2.2
SPIRV-Cross -> 1.4.304.0
libjpeg-turbo -> 3.1.0
libpng -> 1.6.45
libwebp -> 1.5.0
libzip -> 1.13.3
shaderc -> 2024.5
2025-02-02 13:56:23 +10:00
Stenzek
24354cb39f GPU: Fix more GPU thread-reading-CPU-thread-settings locations 2025-02-02 13:08:08 +10:00
Stenzek
804d90d48f System: Fix overriding console region 2025-02-02 13:00:18 +10:00
Stenzek
a681386f28 Qt: Fix some options not being disabled with SW 2025-02-01 23:19:12 +10:00
Stenzek
b01c06b412 GPU/TextureCache: Prevent wrapping for replacement lookup
Fixes replacements for 8 and 16-bit textures placed in the right-most
page of VRAM.
2025-01-31 20:56:11 +10:00
Stenzek
635ae5de31 GPU/HW: Don't use sprites-as-fills for small/offscreen points 2025-01-31 19:50:33 +10:00
Stenzek
d65c4efdd8 GPU/TextureCache: Prefill dumped texture list with replacements
Allows skipping dumping replaced textures without replacements enabled.
2025-01-31 15:47:22 +10:00
Stenzek
b5925ab139 Achievements: Include any codepoints above 0x100 in dynamic range 2025-01-31 13:48:57 +10:00
Stenzek
03181d1179 GPUThread: Fix crash during FSUI language switch 2025-01-31 13:47:29 +10:00
Stenzek
96058f5d7e System: Use recreation logic for toggling GPU threading 2025-01-31 12:56:19 +10:00
Stenzek
f7d7eecb6c GPU/TextureCache: Fix replacements starting in second page 2025-01-30 13:33:00 +10:00
Stenzek
44a75d6586 GPUThread: Fix setting change crash with thread off 2025-01-30 13:32:32 +10:00
Stenzek
369879e685 Settings: Log when creating EmuFolders fails 2025-01-30 02:11:23 +10:00
Stenzek
aae7573e63 Achievements: Fix build with regtest 2025-01-30 02:10:49 +10:00
Stenzek
9b6021b79e FullscreenUI: Fix progress bar padding in loading screen 2025-01-30 01:43:22 +10:00
Stenzek
0d9e6bd482 FullscreenUI: Use effective value for achievement options enable 2025-01-30 01:18:47 +10:00
Stenzek
d314b25f91 System: Fix per-game achievements hardcore mode
By mostly reverting 4dd6365a99, I didn't
think of all the implications. Not just per-game HC mode, but it's also
problematic on Android too.
2025-01-30 01:18:47 +10:00
Stenzek
02234715c5 FullscreenUI: Move UpdateRunIdleState() for system soft-fail to host
That way it's always in the correct state for e.g. memory card shutdown
confirmations.
2025-01-29 20:40:14 +10:00
Stenzek
128bab29f8 Host: Allow button title override in ConfirmMessageAsync() 2025-01-29 19:19:53 +10:00
Stenzek
4dd6365a99 System: Simplify HC disable confirm on startup
Use one path on all platforms, always asynchronous.
2025-01-29 19:19:53 +10:00
Stenzek
28f6358ec5 Qt: Use FSUI to service ConfirmMessageAsync() if active 2025-01-29 19:19:53 +10:00
Stenzek
4da7692a2d System: Adjust initialization order to better fit FullscreenUI
Fixes jankyness of rendering the landing page when trying to resume
a game with achievements active, or when loading state.
2025-01-29 19:19:53 +10:00
Stenzek
1b678d0ebc FullscreenUI: Allow using right mouse button for 'back' 2025-01-29 19:19:53 +10:00
Stenzek
224cb6ac8e FullscreenUI: Fix ClosePauseMenu() running on wrong thread 2025-01-29 19:19:49 +10:00
Stenzek
231ba050a2 GPUThread: Switch to borderless if exclusive fullscreen fails
Better than ending up windowed.
2025-01-29 18:20:41 +10:00
Stenzek
e36dbaf255 Qt: Show current fullscreen resolution in UI even if invalid 2025-01-29 18:20:08 +10:00
Stenzek
70c45f7cf8 GPU/TextureCache: Handle replacements larger than 256x256
I left this unfinished because it was a pain...
2025-01-28 17:36:00 +10:00
Stenzek
f58fa2297e GPU/TextureCache: Only use a single palette record for C16
Stops C16 textures larger than 256x256 being split up.
2025-01-28 17:36:00 +10:00
Stenzek
b0c0d6444c GPU/TextureCache: Fix parsing of C16 replacement names 2025-01-28 17:36:00 +10:00
Stenzek
7188ab863a GPU/HW: Treat fill-like sprites as fills if TC is enabled
Umihara Kawase Shun clears the framebuffer with a single large
sprite, which causes the texture cache to think the pages have
been drawn.
2025-01-28 17:35:52 +10:00
Stenzek
d7c78eedce GPU/HW: Fix box downsampling on OpenGL ES 2025-01-28 15:59:35 +10:00
JukePlz
afd619a7d8 GameDB: Pro-Pinball needs same traits as others in the series (#3359)
otherwise hangs on loading and has inferior performance. Probably missed due to title hyphenation.
2025-01-27 13:35:17 +10:00
Stenzek
0665cb5306 FullscreenUI: Further refine achievements login dialog 2025-01-27 13:34:45 +10:00
Stenzek
5630f3958b Qt: Fix loading webp images on Windows 2025-01-26 14:01:42 +10:00
Stenzek
0e3668a7bb GameList: Show achievement information in game list 2025-01-26 13:49:08 +10:00
Stenzek
6512ed8a8c Achievements: Add offline tracking of progress and hash library 2025-01-26 13:49:08 +10:00
Stenzek
d4b0b7fc29 Achievements: Include rc_client version in user agent 2025-01-26 13:49:08 +10:00
Stenzek
6a09d6ecda Achievements: Don't store hash as a string
This is needed to store achievement metadata in the game list.
2025-01-26 13:30:26 +10:00
Stenzek
1bfc4b6e6c dep/rcheevos: Update to 08999e0 2025-01-26 13:30:23 +10:00
Stenzek
21aa6ead5f Scripts: Add script to download/generate achievement database 2025-01-26 00:09:44 +10:00
Stenzek
ca509a8b97 StringUtil: Add fixed-length DecodeHex() 2025-01-25 22:35:06 +10:00
Stenzek
543704d57c HTTPDownloader: Drop some log messages to debug 2025-01-25 22:35:06 +10:00
Stenzek
2b7a4f8d19 Qt: Avoid game list refresh on shutdown
We only need to invalidate the entries that have had their play times
changed, not the entire list.
2025-01-25 19:45:42 +10:00
Stenzek
4e97420b3b InputManager: Switch to SDL3 2025-01-24 15:54:31 +10:00
Stenzek
573b2eb529 SPU: Move device failure message to OSD 2025-01-24 14:54:57 +10:00
Stenzek
9666abc172 FullscreenUI: Hook up to disc change hotkey 2025-01-24 13:47:55 +10:00
JukePlz
9096402a30 GameDB: Rakugaki Showtime does not support analog mode (#3358)
Only supports vibration.
2025-01-24 13:10:32 +10:00
Stenzek
dc5f85a34e System: Display safe mode warning when toggling on 2025-01-24 12:50:35 +10:00
Anderson Cardoso
807094d627 Atualização Português do Brasil (#3357)
Atualizado para a última versão
2025-01-23 12:38:43 +10:00
Stenzek
13c7b8542d GPUThread: Fix starting big picture mode 2025-01-23 12:37:26 +10:00
Stenzek
4da1f613b6 System: Simplify CD speedup warnings 2025-01-23 12:22:32 +10:00
Stenzek
df8822760a GPU/HW: Further tweaks to replacement alpha handling
We can't simply clear the alpha channel unconditionally here, because that
would result in any black pixels with zero alpha being transparency-culled.

Instead, we set it to a minimum value (2/255 in case of rounding error, I
don't trust drivers here) so that transparent polygons in the source still
set bit 15 to zero in the framebuffer, but are not transparency-culled.

Silent Hill needs it to be zero, I'm not aware of anything that needs
specific values yet. If it did, we'd need a different dumping technique.
2025-01-23 12:12:58 +10:00
Stenzek
9113a6e6a6 Qt: Add 'Multiple Devices' to automatic mapping
Also populate the "current device" label with the device from
the config when running the setup wizard, instead of always setting
the label to Keyboard.
2025-01-22 18:38:37 +10:00
Stenzek
b08ab9f712 Qt: Fix border overlay export button 2025-01-22 18:38:37 +10:00
Stenzek
d395be07ee Qt: Fix global setting showing incorrectly for int-list 2025-01-22 18:38:37 +10:00
Stenzek
89504b0184 GPUThread: Push settings through FIFO
Saves the std::function heap allocation.
2025-01-22 18:38:37 +10:00
Stenzek
f045a1742d GPUThread: Fix order of updating state
Fixes unoverwritten textures not dumping on system shutdown.
2025-01-22 18:38:37 +10:00
Stenzek
8eaa1f312d GPU: Fix overlay destination alpha with postfx
Also don't assume the image has premultiplied alpha.
2025-01-22 18:38:37 +10:00
Stenzek
0129679bb0 GPU: Reduce overdraw when using overlays
Clear the four borders individually instead of a blit over the
entire texture.
2025-01-22 18:38:37 +10:00
Stenzek
0166939609 PostProcessing/GLSL: Clear alpha to 1.0 2025-01-22 18:23:12 +10:00
Stenzek
be75a97efe GPUDevice: Fix swap chain clear colour normalization 2025-01-22 18:23:11 +10:00
Stenzek
af58740f5d System: Always display OSD warning messages
I regretted what I did in f2720b98dd
less than a week after I pushed the change.

As a compromise, only display the unsafe settings warnings on startup.
2025-01-22 18:23:10 +10:00
Stenzek
4e588bb6c1 GPU: Fix incorrect interface for postfx config 2025-01-21 20:55:26 +10:00
Stenzek
78f6e11b91 GPUThread: Skip debug window update on Android 2025-01-21 20:22:10 +10:00
Stenzek
19ca9cb47d GPU/HW: Use texture loads for native resolution
Hopefully work around sampling precision issues in older AMD drivers
and Mali Midgard if we're lucky. But I don't have anything this old
to verify with.
2025-01-21 20:15:07 +10:00
Stenzek
080eccd8fc GPUThread: Shutdown instead of panicing on switch failure 2025-01-21 20:12:38 +10:00
Stenzek
9c4b2112ae GPU: Fix incorrect screen draw rect
Fixes loading screen in Alundra 2, as well as incorrect effective
PAR when using None crop mode.
2025-01-21 19:54:54 +10:00
Stenzek
fb3e290133 GPUDevice: Move exclusive fullscreen to features
Also fixes it not enabling in D3D12 renderer.
2025-01-21 19:12:44 +10:00
Stenzek
389276bb03 GPUDevice: Normalize supports_texture_buffers => texture_buffers 2025-01-21 19:06:59 +10:00
Stenzek
9d4789e082 FullscreenUI: Fix blank screen flicker starting game
Also returns to whichever menu the system boot was initiated from.
2025-01-20 23:17:24 +10:00
Stenzek
17b0da7283 GameList: URL encode custom properties paths with brackets
Fixes custom properties not applying on restart to games with
brackets in their paths.
2025-01-20 21:59:24 +10:00
Stenzek
4b20fc6922 Path: Fix several errors in URLEncode/Decode and add tests 2025-01-20 21:44:44 +10:00
Stenzek
78902d7632 FullscreenUI: Fix several more unsafe reads 2025-01-20 19:00:51 +10:00
Stenzek
cc0ccf2648 Data: Update resources 2025-01-20 17:24:36 +10:00
Stenzek
f219b47e98 FullscreenUI: Use constant width/height scale on Android
Fixes achievement notifications being differently sized
depending on the screen rotation.
2025-01-20 00:01:46 +10:00
Stenzek
7c2488c942 PostProcessing/GLSL: Fix image moved off-screen with alignment 2025-01-19 21:40:38 +10:00
Stenzek
c03b6f3d84 Misc: Replace isspace() usage with StringUtil::IsWhitespace()
Avoids the UB if the character is negative (e.g. reading from a binary
file), as well as locale-specific rubbish.
2025-01-19 21:29:14 +10:00
Stenzek
21b167d382 CDImage: Tidy up Open() method 2025-01-19 21:29:14 +10:00
Stenzek
7905793ae0 GPU: Use screen alignment for overlay instead of display rect 2025-01-19 21:13:16 +10:00
Stenzek
8c5c0e6114 Common: Fix Vector2->Vector4 zero-extend constructor
And add loadl(const GSVector2i&) as an easier-to-read overload.
2025-01-19 21:13:16 +10:00
Stenzek
ade8bf7b3b GPU: Fix overlay+postprocessing combination 2025-01-19 21:13:16 +10:00
Stenzek
9fdeeb3fb6 GPU: Add alpha blending support to overlay 2025-01-19 16:37:51 +10:00
Stenzek
9b8d2a88de System: Required changes for Android 2025-01-19 15:31:58 +10:00
Stenzek
e1cbb50c64 GPU: Fix various capture/screenshot issues
- Simplify functions for rendering display.

- Post-processing should only when the target size matches the window.
  Otherwise the shaders are constantly recompiled.

- Include border overlay in capture/screenshots when above condition
  is satisfied.

- Relax video alignment size when using screen resolution + auto.

- Fix "Internal Resolution (Uncorrected)" capture mode.
2025-01-19 13:42:38 +10:00
Stenzek
725dcea05a GPU: Fix crash toggling border overlays 2025-01-19 12:25:19 +10:00
Stenzek
6131ddbefe GPU: Fill in unused/padded area in overlays 2025-01-18 22:59:49 +10:00
Stenzek
88b43370dc GPUDevice: Replace explicit GL_PUSH/GL_POP with nested GL_SCOPE 2025-01-18 22:59:49 +10:00
Stenzek
d62261e7a4 GPUDevice: Allow nested GL_SCOPE macros 2025-01-18 22:59:49 +10:00
Stenzek
7fcf0a3283 README: Update feature list for 2025 2025-01-18 22:59:48 +10:00
Stenzek
313f653fe0 Data: Add one example overlay 2025-01-18 22:59:48 +10:00
Stenzek
e0a9bbe600 PostProcessing: Move into GPU presenter
Means that the renderer can be changed without reloading shaders,
and speeds up config change detection.
2025-01-18 22:59:48 +10:00
Stenzek
d589696eff PostProcessing: Get rid of GPU-dependent globals 2025-01-18 22:59:48 +10:00
Stenzek
338d29d271 GPUDevice: Move empty/null texture to base class 2025-01-18 22:59:48 +10:00
Stenzek
609fa5c7d7 GPUDevice: Add sampler cache to base class
Removes per-backend bookkeeping in D3D12 and Vulkan.
2025-01-18 22:59:48 +10:00
Stenzek
da13579356 GPU: Align presenter/backends to cache line 2025-01-18 22:59:48 +10:00
Stenzek
dd9788262e GPU: Refactor display presentation workflow
Adds the ability to set overlays, and fixes postfx with prerotation.
2025-01-18 22:59:48 +10:00
Stenzek
6cba825bac System: Add fatal error shutdown path
Switch to a null backend and shut down the system instead of crashing.
2025-01-18 22:59:48 +10:00
Stenzek
d52bf795e4 GPU: Split backend into Backend+Presenter 2025-01-18 22:59:48 +10:00
Stenzek
8f19ac2dee System: Set rapidyaml error handlers on startup
That way it can be used in multiple places.
2025-01-18 22:59:48 +10:00
Stenzek
08d2586a86 System: Allow host to set async worker count
For regtest.
2025-01-18 22:59:48 +10:00
Stenzek
e41f179108 PostProcessing: Fix erroneous reload message 2025-01-18 22:59:48 +10:00
Stenzek
1481c1d231 System: Post-processing is shut down on GPU thread 2025-01-18 22:59:48 +10:00
Stenzek
b9822602b2 FullscreenUI: Show game icons in game list 2025-01-18 22:59:48 +10:00
Stenzek
f98b904c50 FullscreenUI: Add 'Set Cover Image' to game list 2025-01-18 22:59:48 +10:00
Stenzek
7cc47551a4 FullscreenUI: Fix parent scroll resetting on directory change 2025-01-18 22:59:48 +10:00
Stenzek
e34d23c8e7 FullscreenUI: Implicitly close non-multichoice dialogs
Also fixes disc swap using a multichoice instead of single.
2025-01-18 22:59:47 +10:00
Stenzek
a7ab53f02c GPU: Fix GLSL ES compile error with weave deinterlacing 2025-01-18 22:59:47 +10:00
Stenzek
43e7be902c Misc: Add missing error reporting to a couple of WriteBinaryFiles() 2025-01-18 22:59:47 +10:00
Stenzek
227c249d7f FullscreenUI: Skip SVG prefix if image is not a SVG 2025-01-18 22:59:47 +10:00
Stenzek
c34dda39b7 FullscreenUI: Fix invalidating images with size hints 2025-01-18 22:59:11 +10:00
Stenzek
e8a4296fd6 FullscreenUI: Add missing settings lock acquire 2025-01-18 22:59:10 +10:00
Stenzek
e94973cd28 FullscreenUI: Fix disc swap running on GPU thread 2025-01-18 13:48:05 +10:00
Stenzek
d054d76a76 FileSystem: Add Error to CopyFilePath() 2025-01-18 13:48:05 +10:00
Stenzek
feeb8d9e56 CI: Fix Flatpak manifest URL 2025-01-17 20:22:03 +10:00
Stenzek
fbb63a81a8 FullscreenUI: Change default background and add Strobe 2025-01-17 16:05:24 +10:00
Stenzek
7deaaa8b26 FullscreenUI: Use ImGui dialogs for boot failure 2025-01-17 14:30:22 +10:00
Stenzek
e554456a00 System: Fix blank display on pause-on-start 2025-01-17 14:20:37 +10:00
Stenzek
3be4f1983d GPU: Fix playback of VRAM updates during draws 2025-01-17 13:22:40 +10:00
Stenzek
bf7ca1951e Qt: Fix game list search box oversizing 2025-01-17 12:56:06 +10:00
Anderson Cardoso
2957f55450 Atualização Português do Brasil (#3356)
Atualizado para a última versão
2025-01-17 13:56:32 +10:00
Stenzek
092b2803c5 GPU/HW: Flipping the mask bit test should flush 2025-01-16 23:50:40 +10:00
Stenzek
cd8a160d8d GPU/HW: Clear alpha channel in opaque replacements
This is the value for bit15 in the framebuffer. Silent Hill
needs it to be zero, I'm not aware of anything that needs
specific values yet. If it did, we'd need a different dumping
technique.
2025-01-16 23:25:24 +10:00
Stenzek
a0c075e079 CI/Flatpak: Bump to SDL2 2.30.11
Apparently I forgot to do this.
2025-01-16 22:13:04 +10:00
Stenzek
add76c267a Achievements: Fix request spam downloading own badge icon 2025-01-16 22:13:02 +10:00
Stenzek
c4a7456689 GPU/SW: Use no_unique_address for potentially-unused varyings 2025-01-16 22:13:02 +10:00
Stenzek
804b8ff777 CDROM: Remove redundant min() 2025-01-16 21:45:34 +10:00
Stenzek
10de915ae0 System: Remove 'sync_to_host_with_vsync'
Disabling the throttler with threaded rendering just leads to the CPU
thread pushing multiple frames, and getting backpressured from the GPU
thread. In other words, input lag.
2025-01-16 21:45:30 +10:00
Stenzek
074a8a2653 GPUThread: Fix input OSD with threaded rendering off 2025-01-16 21:38:45 +10:00
Stenzek
f6f709bcc5 System: Fix vsync preventing fast forward/turbo 2025-01-16 21:14:21 +10:00
Stenzek
0507054675 Common: Add vector rsize() 2025-01-16 21:01:30 +10:00
Stenzek
93771981a6 FullscreenUI: Add sort alphabetically option to cheat page 2025-01-16 13:47:09 +10:00
Stenzek
79245b6cd6 FullscreenUI: Make footer text background semitransparent 2025-01-16 01:14:22 +10:00
Stenzek
57f3fee28c Common: Further optimize alltrue()/allfalse() on ARM 2025-01-16 00:43:33 +10:00
Stenzek
0189e1ef81 Common: Fix vector allfalse() on ARM32 2025-01-15 23:53:48 +10:00
Stenzek
45b500bc2c GPU/HW: Fix draw call count spiking in some scenarios 2025-01-15 22:50:29 +10:00
Stenzek
3687697d0e CPU/CodeCache: Only reset used portion of buffer
Saves writing 48MB every reset.
2025-01-15 21:02:56 +10:00
Stenzek
1952869cdc Cheats: Author field should be exported 2025-01-15 21:02:56 +10:00
Daniel Nylander
68d9971171 Updated Swedish translation (#3355) 2025-01-15 21:02:40 +10:00
Stenzek
050bda8cd2 FullscreenUI: Fix scroll reset on resume state popup 2025-01-14 21:07:00 +10:00
Stenzek
135d99ac17 FullscreenUI: Fix incorrect help text 2025-01-14 21:07:00 +10:00
Stenzek
7973a91438 FullscreenUI: Make menu item backgrounds slightly transparent
Blends with background.
2025-01-14 21:07:00 +10:00
Stenzek
2e95667ec2 Qt: Fix returning to desktop mode from Big Picture 2025-01-14 20:51:13 +10:00
Stenzek
bbb1befa43 RegTest: Build fix 2025-01-14 20:51:13 +10:00
Stenzek
2fd89403f8 FullscreenUI: Name landing icon files after action 2025-01-14 19:05:18 +10:00
Stenzek
3130e16438 FullscreenUI: Add user-selectable backgrounds 2025-01-14 18:59:42 +10:00
Stenzek
ccb2b61444 FullscreenUI: Fix incorrect back button 2025-01-14 16:33:24 +10:00
Stenzek
1aa1b5a7ec Qt: Make main toolbar editable 2025-01-14 16:33:24 +10:00
Anderson Cardoso
6a6d36267d Atualização Português do Brasil (#3354)
Atualizado para a última versão.
2025-01-14 13:53:37 +10:00
Stenzek
880c76da24 Qt: Fix columns being hidden after editing cheats 2025-01-14 13:53:09 +10:00
Stenzek
3a13806f73 Hotkeys: Fix Toggle OSD hotkey 2025-01-14 13:49:49 +10:00
Stenzek
88e18a8659 Image: Fix crash on loading corrupted JPEG file 2025-01-14 13:29:14 +10:00
Stenzek
da1590ed5f Qt: Fix cheats sort button tooltip 2025-01-13 23:49:59 +10:00
Stenzek
6db1dbbe02 GameList: Don't return nonexistant path on icon extract fail 2025-01-13 23:49:09 +10:00
Stenzek
33c0674a9f Qt: Remove unused struct 2025-01-13 23:18:52 +10:00
Stenzek
5aa23fa6dc CI: Only pin to major version of actions 2025-01-13 22:50:39 +10:00
Stenzek
991405ce06 Qt: Add search and sorting to cheat list 2025-01-13 22:45:59 +10:00
Stenzek
0dc257abe4 System: Set time constraints for GPU thread on MacOS
Fixes erratic frame times.
2025-01-13 19:51:35 +10:00
Stenzek
d3854d095e AnalogController: Use variant vibration icon for large motor 2025-01-13 19:49:56 +10:00
Stenzek
dc58d85b51 Data: PromptFont additions by KamFretoZ 2025-01-13 19:47:43 +10:00
Stenzek
f6c7681ef0 ImGuiOverlays: Double buffer input OSD and add vibration 2025-01-13 16:49:31 +10:00
Stenzek
dd7fd32501 Controller: Add GetVibrationMotorState() 2025-01-13 16:49:14 +10:00
Stenzek
aaf2a4b614 InputManager: Adjust scope of constants 2025-01-13 16:35:40 +10:00
Stenzek
3476140ba2 GPUThread: Add BeginASyncBufferCall() 2025-01-13 16:08:20 +10:00
Stenzek
462a4a3b50 Controller: Refactor so that GetControllerInfo() can't return null 2025-01-13 16:07:43 +10:00
Stenzek
062776c1c7 ImGuiManager: Map left stick to dpad 2025-01-13 14:28:39 +10:00
Stenzek
c45e59fe22 SDLInputSource: Arrays to std::array and forward generic axis 2025-01-13 14:28:28 +10:00
Stenzek
21aef088ed XInputSource: Arrays to std::array and forward generic axis 2025-01-13 14:25:51 +10:00
Stenzek
9d3c56fe6c ImGuiManager: Fix data races in input forwarding 2025-01-13 13:52:07 +10:00
Stenzek
17e8930e94 ImGuiManager: Pack state based on thread access 2025-01-13 13:33:15 +10:00
Stenzek
3621705933 Achievements: Ensure loading old states behave the same as new 2025-01-13 13:13:15 +10:00
Stenzek
8f39dbb464 Achievements: Fix race condition invalidating images 2025-01-13 13:03:41 +10:00
Stenzek
2f854de9d0 Qt: Invalidate FSUI cover cache when cover changed 2025-01-13 12:54:18 +10:00
Stenzek
738c96ffb3 FullscreenUI: Fix slot disappearing after delete in save state menu 2025-01-13 12:44:11 +10:00
Stenzek
ea82dacb0e FullscreenUI: Fix a couple of GPU thread race conditions
State saving/loading, memory card state read on shutdown.
2025-01-13 12:44:06 +10:00
Stenzek
a422e06628 Qt: Fix incorrect InitialSortOrderRole use 2025-01-12 21:44:05 +10:00
Stenzek
d3ee12d358 Achievements: Login error notification should be translatable 2025-01-12 19:16:22 +10:00
Stenzek
19ee37cd10 FullscreenUI: Render notifications on top of OSD 2025-01-12 19:14:59 +10:00
Stenzek
035762af94 System: Fix subimage change OSD message 2025-01-12 19:03:53 +10:00
Stenzek
be7cff5964 CDROM: Fix loading of subimage SBI files 2025-01-12 19:03:48 +10:00
Stenzek
e4dea69713 System: Drop state load OSD duration to quick 2025-01-12 17:50:33 +10:00
Stenzek
e43d7046ba Achievements: Attempt relogin on system boot
And display an error notification if login fails, instead of
invalidating the token.
2025-01-12 17:50:33 +10:00
Stenzek
0f76543685 Achivements: Set rc_client log level from host log level 2025-01-12 16:54:58 +10:00
Stenzek
ce0689687c Qt: Fix editing first controller preset 2025-01-12 02:09:55 +10:00
Stenzek
c43533f8d8 FullscreenUI: Extend achievement overlays to screen margins
Fixes overlays getting caught in rounded corners on Android.
2025-01-12 01:02:58 +10:00
Stenzek
ab790ed54b Common: Fix ARM32 build (again) 2025-01-12 00:25:48 +10:00
Stenzek
ee1da343ab GPU/HW: Use default initialization for BatchConfig
Reduce the risk of below...
2025-01-12 00:03:45 +10:00
Stenzek
9779cee934 GPU/HW: Ensure texture window bits are initialized
Fixes broken rendering after loading state or switching renderer in some
games, e.g. GTA2.
2025-01-12 00:03:18 +10:00
Stenzek
9c35b0e76d FullscreenUI: Get rid of Timer global 2025-01-11 23:32:21 +10:00
Stenzek
36590f3c71 InputManager: Fix crash on controller connect on Windows 2025-01-11 23:29:55 +10:00
Stenzek
6785285f31 Qt: Fix game list toolbar/view menu desync 2025-01-11 23:29:40 +10:00
Stenzek
54780d4fbf Qt: Fix fullscreen state stuck after exit 2025-01-11 21:37:39 +10:00
Stenzek
348e33562e Qt: Fix BP start/stop menu item after first activation 2025-01-11 21:34:20 +10:00
Stenzek
234e1f721f FullscreenUI: Improve controller settings page
- Add 'Clear Bindings' menu item.
- Show icons in controller types.
- Add confirmation to Reset Settings.
2025-01-11 21:29:04 +10:00
Stenzek
d6ce322eba Controller: Use additional icons 2025-01-11 20:51:16 +10:00
Stenzek
9971b9e059 Data: Update PromptFont with KamFretoZ's changes 2025-01-11 20:41:26 +10:00
Stenzek
e6c0725656 InputManager: Hold lock while manipulating devices/sources
Since we're enumerating on the GPU thread now, need to protect it.
2025-01-11 20:28:00 +10:00
Stenzek
d3bee3ce67 Qt: Rename 'Input Profile' to 'Controller Preset'
Hopefully more noob-proof?
2025-01-11 20:25:12 +10:00
Stenzek
e4c11aa905 Qt: Separate controller settings to global and profiles 2025-01-11 20:25:11 +10:00
Stenzek
2d63b34d48 Qt: Add icons/decorations to input devices 2025-01-11 20:25:11 +10:00
Stenzek
2298227054 FullscreenUI: Add binding of vibration motors 2025-01-11 20:25:11 +10:00
Stenzek
6f9caa6b12 InputManager: Add proper binds for vibration motors
Instead of the janky "vibration capabilities" flag.

Fixes the "Clear Mappings" button not applying to vibration motors.
2025-01-11 20:25:11 +10:00
Stenzek
13b85728a0 Qt: Refactor input device/motor tracking
Remove multiple sources of truth.
2025-01-11 20:25:11 +10:00
Stenzek
844287b722 FullscreenUI: Fix scrollbar on choice dialog at some screen sizes
e.g. game list right click
2025-01-11 20:25:11 +10:00
Stenzek
4b0bb9f70d FullscreenUI: Increase input dialog padding
Way too small.
2025-01-11 20:13:53 +10:00
Stenzek
4af5e96ff6 Controller: Remove analog-mode-start OSD message
It's arguably not very useful, and the sticks are mapped to the
dpad in digital mode anyway.
2025-01-11 15:15:01 +10:00
Stenzek
440aaf2644 FullscreenUI: Modernize achievement popup a bit 2025-01-11 15:07:17 +10:00
Stenzek
05b0b03fd6 Cheats: Order special characters before alpha characters 2025-01-11 12:51:33 +10:00
Stenzek
93a7e7cef5 Cheats: Add bounds check to 5107/5147 2025-01-11 12:40:46 +10:00
Anderson Cardoso
c98dbb9d9e Atualização Português do Brasil (#3353)
Atualizado para a última versão.
2025-01-11 12:37:16 +10:00
PugsyMAME
a26cac18e9 Cheats: Added register cheat types 5107 & 5147 (#3352)
This is new cheat type uses the general purpose cheat registers in a relative easy method to allow arrays of arrays cheats to be quickly created and will also cut down massively on cheats. For instance this method allows the following 15 cheats for Vandal Hearts II which would otherwise need 18886 separate cheats to replicate:

#Technique Slot Modifier\[MASTER] Select Slot Number for following cheats to act on (1 - 1349)
518500F1 001CF3C3
514500F2 0000000F
514500F3 0000????
514500F4 0000D0D0
OptionRange = 1:1349
#Technique Slot Modifier\Select Weapon
510700F1 000000??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 1 Learned
510700F1 00020001
#Technique Slot Modifier\Select Technique 1
510700F1 000300??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 2 Learned
510700F1 00040001
#Technique Slot Modifier\Select Technique 2
510700F1 000500??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 3 Learned
510700F1 00060001
#Technique Slot Modifier\Select Technique 3
510700F1 000700??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 4 Learned
510700F1 00080001
#Technique Slot Modifier\Select Technique 4
510700F1 000900??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 5 Learned
510700F1 000A0001
#Technique Slot Modifier\Select Technique 5
510700F1 000B00??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 6 Learned
510700F1 000C0001
#Technique Slot Modifier\Select Technique 6
510700F1 000D00??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\100% (Max) Technique Learned
510700F1 000E0064
2025-01-11 12:37:03 +10:00
Stenzek
ea4e756512 Data: Update SDL Game Controller DB 2025-01-10 20:44:04 +10:00
Stenzek
ee33044f3d InputManager: Fix SDL sub-options not copying to profile 2025-01-10 20:42:17 +10:00
Stenzek
7ac4a85765 InputManager: Fix per-bind sensitivity/deadzone not copying to profile 2025-01-10 20:14:21 +10:00
Stenzek
ccfc60ec94 GPU/HW: Remove extra barrier on VRAM download
Seems to work around download texture corruption on AMD/Vulkan/Windows.
2025-01-10 20:06:56 +10:00
Stenzek
18c90718c6 GPU/SW: Skip pixel load if none preserved
~12% performance improvement on Cortex-A35.
2025-01-10 18:46:05 +10:00
Stenzek
1320d9b456 Common: Use __builtin_shufflevector() for NEON blend() 2025-01-10 17:12:45 +10:00
Stenzek
29934d62c4 System: Improve rewind behaviour
- Fix crash when rewinding before first state is saved.
- Always save a rewind state immediately after normal save state load.
- Don't toss the last rewind state when rewinding, that way there is
  always at least one state to rewind to.
2025-01-09 23:46:06 +10:00
Stenzek
d25cffebd5 GPU/HW: Disable depth testing with semitransparency
But provide an option to enable it.
2025-01-09 21:45:14 +10:00
Stenzek
d9c9b3038d GPU/HW: Fix ROV depth being written with semitransparency 2025-01-09 21:21:12 +10:00
Stenzek
7d2898b94c GPU/HW: Exclude 2D polygons from depth buffer
Fixes UI getting obscured in Kingsley's Adventure.
2025-01-09 21:21:12 +10:00
Stenzek
1c9b9ca37a GPUThread: Restore context after backend creation
Might help with random VRAM loss? I can't seem to reproduce it now..
2025-01-09 21:21:12 +10:00
Stenzek
40589dcd93 Settings: Add advanced option to set delay for max CD speedup
Affects both seeks and reads.
2025-01-09 21:21:12 +10:00
Stenzek
4449ae7904 Settings: Rearrange fields to avoid padding 2025-01-09 21:21:12 +10:00
Stenzek
9b339d4bff PostProcessing: Remove StageCount key for game settings
Potentially removes the ini file if it's otherwise empty.
2025-01-09 21:21:12 +10:00
Stenzek
2b4e60a5bf FullscreenUI: Fix loading screen font 2025-01-09 21:21:12 +10:00
Stenzek
bed3dd6950 FullscreenUI: Use span for DrawIntListSetting() 2025-01-09 17:54:12 +10:00
Stenzek
b76ebd2a7b FullscreenUI: Fix scrollbar rounding in choice dialogs 2025-01-09 17:53:52 +10:00
Stenzek
561397a53c CDROM: Add 'maximum' read speedup option
"Instant" seek is now renamed to Maximum as well, for consistency.
2025-01-09 15:23:47 +10:00
Anderson Cardoso
0ad0859e9d Atualização Português do Brasil (#3351)
Atualizado para a última versão
2025-01-09 15:23:25 +10:00
Stenzek
fc8fbd8f08 Qt: Disable shared memcard settings outside of shared mode 2025-01-08 16:36:05 +10:00
Stenzek
08a3c31bff CMake: Fix scmversion PRE_BUILD warning 2025-01-08 15:34:21 +10:00
Stenzek
87743c776d FullscreenUI: Fix crash reloading postfx shaders 2025-01-08 15:29:56 +10:00
Stenzek
45afc8f7b1 OpenGLDevice: Add map-based stream buffer paths
MapAndSync ends up around 25% faster on ancient Mali drivers without
ARB_buffer_storage support.
2025-01-08 14:14:06 +10:00
Stenzek
1daa60c64d GPU: Use tristrips for presentation as well 2025-01-08 00:14:15 +10:00
Stenzek
670dc461c1 GPU/HW: Slight re-shuffling of field offsets
Free up some bits in the middle.
2025-01-07 23:20:26 +10:00
Stenzek
0030bc2699 GPUDevice: Ensure 16 byte minimum UBO alignment 2025-01-07 23:20:25 +10:00
Stenzek
4c801c3ff3 GPUDevice: Move size-matches check into ResizeTexture() 2025-01-07 23:20:25 +10:00
Stenzek
b9186139d0 GPU/HW: Use sized tristrips instead of fullscreen quads 2025-01-07 23:20:25 +10:00
Stenzek
9bc5ffe091 Common: Add Vector4i xyxy(Vector2i) 2025-01-07 23:20:25 +10:00
Stenzek
1063c3da7f Qt: Add 'Enable Touchpad' to Controller Settings
Have to shuffle a few other things around to fit in 768p.
2025-01-07 13:42:45 +10:00
Stenzek
0a124ee839 SDLInputSource: Support forwarding touchpad to pointer 2025-01-07 13:40:42 +10:00
Stenzek
2b7b3d8729 SDLInputSource: Allow inverting pad axes
Not really sure where this would happen, but whatever.
2025-01-07 13:01:37 +10:00
Stenzek
dacbb7c718 Qt: Behaviour -> Behavior
US English is used everywhere else, consistency > *.
2025-01-07 12:50:48 +10:00
Stenzek
6318223f58 Qt: Remove Apperance/Update settings from Game Properties 2025-01-07 12:48:27 +10:00
Stenzek
092e819a07 ImGuiFullscreen: Move texture loading to async tasks
Two threads instead of one, speeds things up a bit.
2025-01-07 12:40:08 +10:00
Stenzek
cae1ddc971 GPU: Ensure batches are flushed before presenting frame
Fixes occasional assertion failing when using the debugger.
2025-01-07 12:28:15 +10:00
Stenzek
dc9cdddd4c Qt: Add zst/xz GPU dumps to file filter 2025-01-06 21:18:13 +10:00
Stenzek
0960160589 System: Don't check for subchannel with GPU dump 2025-01-06 21:17:27 +10:00
Stenzek
1765590a6f Qt: Add 'Disable Window Rounded Corners' option 2025-01-05 16:39:57 +10:00
Stenzek
9f41ef9eac Scripts: Add release commit generation script 2025-01-05 16:00:15 +10:00
Stenzek
5ee069fc63 FullscreenUI: Add option to display PS buttons instead of Xbox 2025-01-05 16:00:15 +10:00
Stenzek
4d6124d41b Platform: Fix AppImage dbus library mismatch 2025-01-05 14:08:22 +10:00
Stenzek
a5d90c0b22 Deps: Bump to SDL2 2.30.11 2025-01-04 21:18:34 +10:00
Stenzek
6043b2331f Platform: Fix incorrect dbus shared library name
Fixes screensaver inhibit on Linux.
2025-01-04 21:14:46 +10:00
Stenzek
886040b257 Qt: Display 'No Image' instead of 0x0 in status 2025-01-04 19:21:47 +10:00
Stenzek
8353a33e89 X11Tools: Fix refresh rate query failing with XLib handle 2025-01-04 18:35:15 +10:00
Stenzek
076f4a6293 Qt: Fix delay in progress dialog opening
Applies to updater, verify, etc.
2025-01-04 16:59:33 +10:00
Stenzek
920f25427e Qt: Simplify Fullscreen UI state tracking
Fixes application closing if the system was shut down while fullscreen.
2025-01-04 16:09:35 +10:00
Stenzek
78ccbc710c Cheats: Fix error while exporting 2025-01-04 12:52:26 +10:00
Anderson Cardoso
548f1da5af Atualização Português do Brasil (#3350) 2025-01-04 12:51:08 +10:00
Stenzek
9054801341 ImGuiManager: Update viewport and display size
Fixes the single frame of incorrect draw size when resizing
the window with the Big Picture UI.
2025-01-03 20:16:38 +10:00
Stenzek
80855090d5 Qt: Rewrite cover loading/generation
This was always wrong, QPixmaps shouldn't be manipulated outside of
the UI thread, and it used to crash in debug builds.

Also uses a placeholder image instead of a black image while covers
are loading/generating.
2025-01-03 20:16:38 +10:00
Stenzek
db14824d61 System: Use task queue for saving states/screenshots/gpudumps
System shutdown no longer needs to block. Gets rid of the slight
hitch when shutting down and saving state with the Big Picture UI.
2025-01-03 20:16:38 +10:00
Stenzek
547601559c Common: Add TaskQueue class 2025-01-03 20:16:37 +10:00
Stenzek
52e6e8ff1e PostProcessing: Compile warning fix 2025-01-03 18:19:12 +10:00
Stenzek
f9bb413a40 Qt: Enable clear button on hotkey search 2025-01-03 15:28:43 +10:00
Stenzek
dda10d3576 Qt: Add search box to hotkey settings 2025-01-03 14:58:50 +10:00
Stenzek
b2c8d25638 GPUBackend: Only display CPU thread blocked messages if queueing 2025-01-03 14:49:53 +10:00
Stenzek
88cd086633 Cheats: Eliminate extra newlines during code editing 2025-01-03 13:36:58 +10:00
Daniel Nylander
e096827df8 Updated Swedish translation (#3349) 2025-01-03 13:36:40 +10:00
Stenzek
e08dda0a0a CPU: Declare state with constinit 2025-01-02 21:42:41 +10:00
Stenzek
87e367076d PostProcessing: Get rid of Timer global 2025-01-02 21:40:01 +10:00
Stenzek
ba15a76d7b ImGuiManager: Pack state in struct 2025-01-02 21:33:53 +10:00
Stenzek
d3fe1dfc2c ImGuiManager: Separate debug and OSD fonts
Don't need to rasterize the former if it's not used, and saves blowing
up the debug window font size if the OSD scale is not 100%.
2025-01-02 21:25:25 +10:00
Stenzek
fc5553a8c7 GTE: Improve reverse transform freecam
Transform the move direction, that way it behaves more FPS-camera like.
2025-01-02 20:56:22 +10:00
Stenzek
90cb266886 Common: Small tidy-up and constexpr-ify GSMatrix4x4 2025-01-02 20:52:19 +10:00
Stenzek
83b4757788 Qt: Controller Test should be disabled while running 2025-01-02 02:11:50 +10:00
Stenzek
08cd649187 InputManager: Fix pointer-bound bind movement
i.e. psmouse

Regression from c4e0e7fade
2025-01-02 02:10:31 +10:00
Stenzek
cd873eb6c1 GTE: Add 'Reverse Transform Order' option to freecam 2025-01-02 02:09:02 +10:00
Stenzek
3a64c5e4b3 FullscreenUI: Improve field alignment in achievements login 2025-01-02 01:07:18 +10:00
Stenzek
b21312867b FullscreenUI: Fix popup sizes for postfx settings 2025-01-02 01:07:11 +10:00
Stenzek
179e2f1999 FullscrenUI: Fix field spacing scaling in game list view 2025-01-02 00:52:40 +10:00
Stenzek
0fdf984b71 GTE: Disable freecam on Android
Freecam is disabled on Android because there's no windowed UI for it.
And because users can't be trusted to not crash games and complain.
2025-01-02 00:38:29 +10:00
Stenzek
e036318559 Qt: Add 'Controller Test' to tools menu 2025-01-02 00:31:15 +10:00
Stenzek
c11468b9f1 Qt: Drop log messages if rate is too high
Prevents the application locking up and memory usage going bananas
if log messages do end up spammed at crazy rates.
2025-01-02 00:14:11 +10:00
Stenzek
37e5e64ddc System: Move state display updates to call sites
Fixes black frames when changing settings with runahead/rewind enabled.
2025-01-01 23:05:08 +10:00
Stenzek
f3b7686457 System: Fix crash with memory save states + renderer switch 2025-01-01 22:55:31 +10:00
Stenzek
5ac5a1d246 Hotkeys: Fix resolution scale with memory save states 2025-01-01 22:02:55 +10:00
Stenzek
1d63648d68 Qt: Forward text input to aux render windows
Fixes text input in freecam window.
2025-01-01 22:02:55 +10:00
Stenzek
dcd439e7d8 GTE: Add 'Free Camera' feature 2025-01-01 22:02:55 +10:00
Stenzek
22202f1607 Common: Fix vector blend32() and dot() on SSE2 2025-01-01 22:02:55 +10:00
Stenzek
d0e1efb1fd Common: Add more GSMatrix ops 2025-01-01 21:28:16 +10:00
Stenzek
f51dda3e66 GPUDevice: Allow this-frame pooled textures when not uploading data
It won't break the render pass.
2025-01-01 19:38:48 +10:00
Stenzek
a08acdb93a System: Improve texture recycling when changing rewind/runahead settings
Fix suprious failures when changing rewind settings when low on VRAM.
2025-01-01 19:33:01 +10:00
Stenzek
8605722cdf GameDB: GTA does not support analog mode 2025-01-01 17:15:19 +10:00
Stenzek
57be62ffd1 FullscreenUI: Remove a couple of untranslated titles 2025-01-01 14:28:05 +10:00
Stenzek
884459d1cf FullscreenUI: Fade alpha change when switching to postfx settings 2025-01-01 14:25:56 +10:00
Stenzek
ffef0c2e38 CPU/CodeCache: Don't compile invalid jumps via block links 2025-01-01 14:10:55 +10:00
Stenzek
d69d25431e VulkanDevice: Hopefully fix init under Vulkan 1.0 drivers 2024-12-31 23:43:38 +10:00
Stenzek
f25302c847 CPU/Recompiler: Actually use fetch ticks for uncached EXP1 2024-12-31 17:29:40 +10:00
Stenzek
34f2600f99 CPU/Recompiler: Fix ICache update codegen on RISCV64 2024-12-31 16:12:19 +10:00
Stenzek
4c08c716c4 CPU/Recompiler: Fix dispatcher crash on RISCV64 2024-12-31 15:33:34 +10:00
Stenzek
a4b359672c Common: Switch fastjmp.cpp asm to tabs
Consistency.
2024-12-31 15:33:17 +10:00
Stenzek
79b0533df2 Common: Fix RISC-V/64 fastjmp buffer size 2024-12-31 15:30:26 +10:00
Stenzek
b76618fdf4 System: Should call PGXP Reset not Initialize() in InternalReset() 2024-12-31 15:24:36 +10:00
Stenzek
1bf076c74f VulkanDevice: Fix crash on shutdown if swapchain creation fails 2024-12-31 15:10:55 +10:00
Stenzek
e0877c1922 System: Add IsUsingPS2BIOS() 2024-12-31 14:58:31 +10:00
Stenzek
69826f2101 FullscreenUI: Fix incorrect section for Deinterlacing Mode 2024-12-31 14:15:42 +10:00
Stenzek
a3645f3173 GameDB: Gokujou Parodius Da! Deluxe Pack 2024-12-31 14:13:49 +10:00
Stenzek
7228f6f1cf System: Don't fail startup if cpuinfo init fails 2024-12-30 18:11:56 +10:00
Stenzek
3c5db39ee4 GPU/SW: Remove polygon size checks from backend
It's already checked before the draw is handed off.
2024-12-30 18:11:52 +10:00
Stenzek
4d4523dc04 GPU: Use same early culling rules for lines as polygons 2024-12-30 18:11:52 +10:00
Stenzek
c5bd4101b3 GPU: Refactor and simplify deinterlacing
Both HW and SW deal with half-height buffers coming in now.
2024-12-30 14:36:17 +10:00
Stenzek
9cd9042563 CMake: Fix RISC-V building with LLVM 2024-12-30 02:58:16 +10:00
Stenzek
4e928d7ce1 Common: Work around LLVM LTO inline asm issue
LLVM bug 61991.
2024-12-30 02:57:22 +10:00
Stenzek
d65ae6ce00 Scripts: Add cross-compiled AppImage generator 2024-12-30 02:09:32 +10:00
Stenzek
401582bb2b PlatformMisc: Load libdbus at runtime
The static library can't link to the ARM binary when cross-compiling.
2024-12-30 01:57:08 +10:00
Stenzek
a08bd43000 CMake: Fix incorrect message for cache line size 2024-12-30 01:57:08 +10:00
Stenzek
156b3f989b Scripts: Add Linux cross-compile deps script 2024-12-30 01:57:07 +10:00
Stenzek
9cba1decad GPU/HW: Compiler warning fix 2024-12-29 22:34:39 +10:00
Stenzek
468c907fd6 Cheats: Compiler warning fix 2024-12-29 22:34:31 +10:00
Stenzek
d4e393f1a8 Common: Fix write overflow with nosimd vector 2024-12-29 22:34:14 +10:00
Stenzek
ab107722f7 Scripts: Add -only-download option to Linux deps 2024-12-29 20:21:34 +10:00
Stenzek
242561debf CPU/Recompiler: Align dispatchers and JIT blocks
A couple of percent difference if we're lucky. Practically probably <1%.
2024-12-29 18:11:58 +10:00
Stenzek
82a843c121 RegTest: Log state and RAM hashes on exit
Useful for checking determinism.
2024-12-29 17:25:55 +10:00
Stenzek
1ed9e609a5 RegTest: Support replaying GPU dumps 2024-12-29 17:25:55 +10:00
Stenzek
b7832e609f GPU/HW: Vectorize flipped sprite handling 2024-12-29 17:25:55 +10:00
Stenzek
1a211e0a21 GPU/HW: Fix mask bit regression from FF8 fix
Fixes overbright polygons appearing in Silent Hill.
2024-12-29 17:25:54 +10:00
Stenzek
0e6ade067c FileSystem: Add error reporting to DeleteDirectory() 2024-12-29 17:25:54 +10:00
Stenzek
5c3abb490d Common: Fix vector sse2_max_u16()
Fixes UV clamping in SSE2 build, e.g. Jumping Flash.
2024-12-29 13:56:10 +10:00
Stenzek
799f5bdf97 GPU: Assume vertex commands are 8-byte aligned 2024-12-28 20:24:22 +10:00
Stenzek
8c807118c0 GPUDevice: End timer on command flush
Fixes incorrect GPU usage readings in OpenGL, D3D11 is still
problematic, at least on AMD.
2024-12-28 20:24:21 +10:00
Stenzek
7bb0c7d1fb InputManager: Fix pointer scale loading 2024-12-28 20:24:21 +10:00
Stenzek
c2589461e9 GPU/HW: Remove extra debug group pop 2024-12-28 20:24:21 +10:00
Stenzek
74fd217afb GPU/HW: Always update/load/save CLUT
We have the headroom with multithreading now, and it prevents issues
saving/loading state in loading screens in some games.
2024-12-28 20:24:21 +10:00
Stenzek
25b0bb752a GPU/HW: Try truncating culled vertices
What is this monstrosity? Final Fantasy VIII relies on X coordinates
being truncated during scanline drawing, with negative coordinates
becoming positive and vice versa. Fortunately the bits that we need
are consistent across the entire polygon, so we can get away with
truncating the vertices. However, we can't do this to all vertices,
because other game's vertices break in various ways. For example,
+1024 becomes -1024, which is a valid vertex position as the ending
coordinate is exclusive. Therefore, 1024 is never truncated, only
1023. Luckily, FF8's vertices get culled as they do not intersect
with the clip rectangle, so we can do this fixup only when culled,
and everything seems happy.
2024-12-28 20:24:21 +10:00
Stenzek
c99625e4c3 GPU: Move vertex culling to GPU thread
i.e. push all primitives through unless they are oversized, which the
GPU will definitely skip.

Needed because of coordinate truncation in Final Fantasy VIII, these
scenes will now render correctly with the software renderer again.
2024-12-28 20:24:09 +10:00
Stenzek
58b0ccf3fc Common: Add 2D vector formatters 2024-12-28 19:59:25 +10:00
Stenzek
69ed6e5e58 Hotkeys: Screenshot should not be present on Android
Since it saves to app-private, users would complain that the app is
using too much data.
2024-12-27 19:39:23 +10:00
Stenzek
2da692b341 CPU/Recompiler: Swap bl{x,r} for b{x,r} on ARM
Not a subroutine call.
2024-12-27 15:02:40 +10:00
Stenzek
2a8cfc7922 CPU/CodeCache: Simplify code LUT addressing
One more instruction on x86/ARM32, no additional instructions on ARM64.

Worth it so that the application doesn't crash if the game jumps to an
invalid PC. Note that the lower 2 bits are truncated, so an unaligned
jump will round down to the closest instruction. Obviously not correct,
but if a game ends up doing this, it's a lost cause anyway.
2024-12-27 15:02:40 +10:00
Stenzek
4e5b4ba071 CPU: Fix AdEL/IBE on instruction fetch
CAUSE and EPC were swapped for the latter.
2024-12-27 15:02:40 +10:00
Stenzek
4b34825afd CPU/CodeCache: Remove InstructionInfo pc field
No longer needed since oldrecs are gone.
2024-12-27 15:02:40 +10:00
Stenzek
ce71b168c3 CPU/CodeCache: Add static to a couple of missing functions 2024-12-27 15:02:40 +10:00
Stenzek
a44dd1882f RegTest: Update CLI help 2024-12-27 15:02:40 +10:00
Anderson Cardoso
7b9664d6f2 Atualização Português do Brasil (#3348)
Atualizado para a última versão.
2024-12-27 15:02:31 +10:00
Stenzek
9921d2074c Achievements: Fix serialization on Linux 2024-12-26 18:00:29 +10:00
Stenzek
5c83bbe5c5 FullscreenUI: Slight tidy-up to achievements login dialog 2024-12-26 18:00:29 +10:00
Stenzek
272aa4f933 ImGuiManager: Add Begin/EndTextInput() 2024-12-26 18:00:29 +10:00
Stenzek
55c5e17fdc GameDB: Driver 2 settings 2024-12-26 18:00:29 +10:00
Stenzek
750dd1cb87 dep/rcheevos: Bump to 3a91a58 2024-12-26 15:00:55 +10:00
Stenzek
fa993849f7 Qt: Update English/Plural strings 2024-12-26 01:58:24 +10:00
Stenzek
6903abba55 CDROM: Adjust missed INT1 sector behaviour
Max Power Racing and C3 Racing are slow with their DMAs out,
and get confused when an additional INT1 comes inbetween reading
the sector header and data.

Fixes these games crashing during loading. 5000 cycles is more in
line with what the real mech would do anyway, it's pretty slow.
2024-12-26 01:55:55 +10:00
Stenzek
0528ce567c Achievement: Fix glitchy fade indicator animation 2024-12-25 23:01:58 +10:00
Stenzek
00eb54cd15 Achievements: Refactor state serialization
Fix load failures, and eliminate the buffer copy.
2024-12-25 22:23:09 +10:00
Stenzek
d360564cef GameList: Fix lock not re-acquired on failure 2024-12-25 21:55:19 +10:00
Stenzek
8c2fe430d8 GPU/TextureCache: Apply 'Dump Replaced Textures' option to backgrounds too 2024-12-25 15:53:53 +10:00
Stenzek
b03127b206 GPU: Move background dumping to HW+GPU thread
And only dump when the mask bit check is not enabled.

The replacements are gated by the mask bit check anyway, so there's
no point dumping anything that can't be replaced.
2024-12-25 15:53:53 +10:00
Stenzek
6f3e9913f5 GPU/HW: Fix VRAM write dumping only first row
Still has race conditions.
2024-12-25 15:53:53 +10:00
Stenzek
dd180f2fd6 System: Fix dump VRAM writes not updating on GPU thread 2024-12-25 15:53:53 +10:00
Stenzek
b33aa31db8 FullscreenUI: Update translation strings
I always forget to do this...
2024-12-25 15:53:46 +10:00
Stenzek
8f6db2c8fa Qt: Add missing icon to System Display 2024-12-25 15:13:50 +10:00
Stenzek
b81c87958f Qt: Fix F3 getting intercepted when game/FSUI active 2024-12-25 15:11:40 +10:00
Stenzek
d010f768c4 FullscreenUI: Fix smooth scrolling in game/state/etc lists 2024-12-25 15:02:09 +10:00
Stenzek
ad7318f5f9 FullscreenUI: Fix spacing in game list 2024-12-25 14:37:26 +10:00
Stenzek
e7ff547f1b GameDB: Street Fighter games
Disable upscaling because they use a stupidly large UV range and
relies on junk texels not being sampled, which happens at 1x.

That and they're 2D anyway.
2024-12-25 14:25:55 +10:00
Stenzek
0565320036 ImGuiFullscreen: Enable smooth scrolling for file/choice selectors 2024-12-24 13:54:23 +10:00
Stenzek
c4e0e7fade InputManager: Fix mouse-mapped axes getting stuck
Regression from f0deab2.
2024-12-24 13:52:04 +10:00
Stenzek
dc18ce2c2a System: Warn if fastmem mode is not optimal 2024-12-24 13:16:37 +10:00
Stenzek
f4265edb2d SmallString: Add append_vformat() 2024-12-24 13:16:12 +10:00
Stenzek
86d78e5eca GPU/TextureCache: Only use shader bilinear for initial pagefill
Make bilinear replacements behave the same as nearest.
2024-12-24 13:05:38 +10:00
Stenzek
33083cfae1 Settings: Add missing bitfield width 2024-12-24 01:21:07 +10:00
Stenzek
00278fa905 PIO: Fix failure to load state with different cart type 2024-12-24 00:24:37 +10:00
Stenzek
b8fa97e1a7 GPU: Fix sprite texture filtering with TC enabled 2024-12-24 00:24:37 +10:00
Stenzek
89f11095bc CPU: GTE completion cycle should be reset/serialized
Yay more determinism breakage...
2024-12-24 00:24:37 +10:00
Stenzek
9f73e690ad CPU: Debug mode flag should be updated on state load 2024-12-24 00:24:36 +10:00
Stenzek
ac05c35292 CPU: Fix DCIC not being cleared on reset
Stops interpreter mode being unintentionally forced after
restarting some games.
2024-12-24 00:24:36 +10:00
Stenzek
18c509a679 CPU/Recompiler: Exit block early on DCIC/BPCM change
Fixes booting Xplorer cartridge with recompiler.
2024-12-24 00:24:36 +10:00
Stenzek
307bd86b72 SPU: Fix determinism loss when loading state where IRQs differ 2024-12-24 00:24:36 +10:00
Anderson Cardoso
2aa466d1c6 Atualização Português do Brasil (#3347)
Atualizado para a última versão.
2024-12-24 00:24:23 +10:00
Stenzek
9a22ac3c70 GPU/HW: Download VRAM when enabling sw-for-readbacks 2024-12-23 17:55:47 +10:00
Stenzek
8e254c4baf GPUBackend: Fix VRAM loss with runahead/rewind 2024-12-23 17:55:33 +10:00
Stenzek
f3f99f7eac FullscreenUI: Support renderer swapping without restart 2024-12-23 14:37:38 +10:00
Stenzek
406cd1b6a1 Qt: Shuffle a couple of graphics options
Save a tiny bit of vertical space.
2024-12-23 14:24:17 +10:00
Stenzek
9e04b0bf55 GPU/TextureCache: Add 'Always Track Uploads' option 2024-12-23 13:52:23 +10:00
Stenzek
a8361f985e GPU: CLUT should not be saved on CPU thread memory state 2024-12-22 16:48:45 +10:00
Stenzek
7f1ebd3767 PageFaultHandler: Warning fix 2024-12-22 16:48:45 +10:00
Stenzek
448009f4ef CPU/CodeCache: Fastmem RAM faults are always writes 2024-12-22 16:48:45 +10:00
Stenzek
515a4d07fb System: Fix pre-frame sleep getting stuck 2024-12-22 16:48:45 +10:00
Stenzek
0b4e302c22 GPU: Implement PGXP for lines 2024-12-22 16:48:45 +10:00
Stenzek
b81287efd2 GPUBackend: Remove duplicate num_vertices 2024-12-22 16:48:45 +10:00
Stenzek
9b62632951 Achievements: Re-add NeedsIdleUpdate()
Forgot I needed this on Android..
2024-12-22 16:48:24 +10:00
Anderson Cardoso
556a53e564 Fix Typo in Russian tr (#3346) 2024-12-22 16:48:00 +10:00
Stenzek
a919fa71aa GameDB: PGXP-CPU for Wipeout games
Improves sprite jitter.
2024-12-21 23:08:09 +10:00
Stenzek
080d30bf0c GPU: Slightly adjust PAL active range
Gets the PAR closer to the expected value of 59/94 with a divider of 4.
2024-12-21 23:05:30 +10:00
Stenzek
ad980a7004 GPU: Fix 480i resolution display in OSD 2024-12-21 22:20:41 +10:00
Stenzek
0aa89ec7b0 System: Fix some GPU settings not updating 2024-12-21 18:29:56 +10:00
Stenzek
9b97bd5924 Packaging: Add scripts to include libc/libstdc++ in AppImage 2024-12-21 18:29:56 +10:00
Stenzek
e1bd5690ac Misc: Slightly reduce include pollution from settings.h 2024-12-21 15:28:27 +10:00
Stenzek
01dfc9ae51 GameDB: PGXP-CPU for Muppet Monster Adventure 2024-12-21 14:54:37 +10:00
Stenzek
62285dcf33 Settings: Split into GPU and main settings
That way the GPU thread copy doesn't need fields it never touches.
2024-12-21 14:53:15 +10:00
Stenzek
6b754e6759 FullscreenUI: Fix CPU/GPU thread race on achievements toggle 2024-12-21 14:40:24 +10:00
Stenzek
26db661a05 GPU: Remove global indirection 2024-12-21 14:35:12 +10:00
Stenzek
c4b0430d5e System: Remove unused SetExpansionROM() 2024-12-19 23:32:15 +10:00
Stenzek
7826c258b0 System: Frame step after runahead
Makes it behave as expected.
2024-12-19 23:32:15 +10:00
Stenzek
2d659fc3eb GPU: Move backend work off CPU thread 2024-12-19 23:32:15 +10:00
Stenzek
831c982f3b System: Rewrite memory save state handling
Makes it more friendly to GPU thread.
2024-12-19 22:42:28 +10:00
Stenzek
6993e6c31f GPU/SW: Fix double draws of polyline vertices 2024-12-19 22:42:02 +10:00
Stenzek
10e2079ee4 CPU/Recompiler: Don't use far code for mtc0 cache check
Redundant for a few instructions.
2024-12-19 18:44:08 +10:00
Stenzek
fe1fa765f7 CPU/Recompiler: Don't back up value to stack in mtc0
Fixes misaligned stack that could crash in log messages.
2024-12-19 18:44:08 +10:00
Stenzek
568667753d CPU/CodeCache: Avoid log calls in faults outside of JIT code
Could be in other functions that are unsafe to call log functions from.
2024-12-19 18:44:08 +10:00
Stenzek
7116a80435 Common: Add RESTRICT macro
Gotta coerce the compiler into generating better code.
2024-12-19 16:50:03 +10:00
Stenzek
31c1cfa650 Achievements: Remove unused NeedsIdleUpdate() 2024-12-19 12:46:59 +10:00
Stenzek
2f5bdc9651 GameDB: Crash Team Racing supports JogCon 2024-12-19 12:43:02 +10:00
Stenzek
7442ec2f19 JogCon: Implement command 0x44 2024-12-19 12:42:01 +10:00
Daniel Nylander
fa2442deaf Updating Swedish translation (#3345)
* Updated Swedish translation
2024-12-19 12:06:06 +10:00
Anderson Cardoso
8df2a2c446 Atualização Português do Brasil (#3344)
Atualizado para última versão
2024-12-17 14:28:15 +10:00
Stenzek
f010d81652 ISOReader: Add XA and raw extraction modes 2024-12-17 14:19:41 +10:00
Stenzek
b68370dff7 Mouse: Move s8 clamp to after subtraction
Stops the mouse from accumulating long distances which are applied
over several frames. Seems to "feel" slightly better.
2024-12-16 01:53:03 +10:00
Stenzek
cc52320dfe FullscreenUI: Update translation string list 2024-12-16 01:30:20 +10:00
Daniel Nylander
4216eef420 Updated Swedish translation (#3343) 2024-12-16 01:29:24 +10:00
Stenzek
585b13fbd9 GameDB: Remove AnalogController from Point Blank 2
Apparently it does not support it. Not that you'd be using anything
other than a lightgun ;)
2024-12-16 01:28:04 +10:00
Stenzek
b634eecd21 System: Allow separate configuration for multi-disc games 2024-12-16 01:22:48 +10:00
Stenzek
23c221be01 GameDB: Fix serial for Dino Crisis (Japan) 2024-12-16 01:20:22 +10:00
Stenzek
edfeffd820 GameDB: Hash for Aquanaut's Holiday 2024-12-16 01:20:10 +10:00
Stenzek
fda10a6978 FullscreenUI: Remove legacy 'Enable Cheats' option
It did nothing.
2024-12-16 01:02:04 +10:00
Stenzek
43af57d735 System: Fix UpdateGTEAspectRatio() during initialization 2024-12-15 22:12:43 +10:00
Stenzek
1f1a664908 InputManager: Add missing call to UpdateHostMouseMode() 2024-12-15 22:12:43 +10:00
Stenzek
6e2223b517 OpenGLDevice: Fix surfaceless context switch 2024-12-15 22:09:21 +10:00
Stenzek
fbb411a946 OpenGLDevice: Blacklist fbfetch on PowerVR as well
Apparently it's broken, and I don't have any devices with this chip
so I can't find a potential workaround anyway.
2024-12-15 22:07:47 +10:00
Stenzek
4e1e07a93c Qt: Shrink BIOS settings page height
Move open/refresh buttons.
2024-12-15 16:09:02 +10:00
Stenzek
9d52e27e16 CPU/Recompiler: Use condition select for ICache updates
Tidy ~4% perf boost.
2024-12-15 16:00:25 +10:00
Stenzek
666fee2df7 GameDB: Enable ICache for Crash 3
Sound effects during the intro can be lost if the CPU runs too fast.
2024-12-15 15:16:53 +10:00
Stenzek
2603ce5976 GameDB: Merge all 8 discs of Tokimeki Memorial 2 2024-12-15 15:09:48 +10:00
Stenzek
03e24637af Qt: Simplify Host::CommitBaseSettingChanges() 2024-12-15 13:00:08 +10:00
Stenzek
d00627b44b GameDB: Alnam no Kiba - Juuzoku Juuni Shinto Densetsu 2024-12-15 12:59:51 +10:00
Stenzek
5e21234966 Qt: Fix deadlock in Game Properties -> Post-Processing 2024-12-15 12:59:30 +10:00
Stenzek
90e9634c19 FullscreenUI: Enable DrawStringListSetting() 2024-12-14 18:07:33 +10:00
Stenzek
c0c2e69b59 CPU/Recompiler: Document ARM32 code size
Yikes, it's huge..
2024-12-14 16:43:29 +10:00
Stenzek
5cbb6b6163 Qt: Purge unused {start,stop}dumpingAudio 2024-12-14 16:00:13 +10:00
Stenzek
e91ae5f1b9 GPU/HW: Only compile page texture shaders if TC is enabled
Knocks about 1/4 off the total pipelines with the default config.
2024-12-14 15:56:46 +10:00
Stenzek
dcaee9b87e Qt: Add ISO Browser to Tools menu 2024-12-14 14:10:07 +10:00
Stenzek
726aa67d1b CPU/CodeCache: Only cache EXP1 blocks up to 0x1F060000
Neither cart type has code mapped above this address.

Saves ~91MB of memory.
2024-12-14 14:10:06 +10:00
Anderson Cardoso
b99fb22522 Atualização Português do Brasil (#3342)
atualizado para a última versão
2024-12-14 13:47:46 +10:00
Stenzek
b832dfbb3a CDROM: Zero out seek start/end after read 2024-12-14 13:47:20 +10:00
Stenzek
c25c0067af CDROM: Handle repeated SeekL to same target
Fixes more lockups in Resident Evil 3.
2024-12-14 13:36:20 +10:00
Stenzek
e683c89770 CPU/Recompiler: Fix ICache updates on ARM32 2024-12-14 01:05:42 +10:00
Stenzek
5687dd22bd PIO: Add basic flash cartridge support 2024-12-13 23:22:57 +10:00
Stenzek
2f6eaa1d43 CPU/Interpreter: Address ICache lines in words
Might help on ARM32, because no unaligned access.

Otherwise, ~23% perf boost in debug builds. But this is pretty
meaningless.
2024-12-13 23:22:57 +10:00
Stenzek
0dbab167a8 GameDB: Disable widescreen in Fear Effect
FMV backgrounds.
2024-12-13 23:22:57 +10:00
Stenzek
ceef778891 GameDB: Disable multitap for Fear Effect games 2024-12-13 18:41:00 +10:00
Stenzek
25ffc5a248 GameDatabase: Warn if multitap enabled on unsupported game
Fear Effect sends a multitap read command, but doesn't know how to
handle it. There's probably others.

Also add a DisableMultitap trait for these games to force it off.
2024-12-13 18:41:00 +10:00
Stenzek
50fbaf90e6 Qt: Add debug menu options for log sinks/timestamps 2024-12-13 18:08:44 +10:00
Stenzek
8f19912c64 GPU/ShaderGen: Use sample instead of load at 1x as well
Consistency. Mali ends up ever-so-slightly faster with sample versus
texel loads, apparently.

Also fixes compile errors when using texture filtering on GLSL ES.
2024-12-13 14:36:21 +10:00
Stenzek
db848d1381 System: Remove redundant GameDB lookup 2024-12-12 17:43:00 +10:00
Stenzek
5577328f35 Controller: Allow !compatsettings to always start in analog mode 2024-12-12 17:42:37 +10:00
Stenzek
99f133223c CPU/Recompiler: Create block links for self-looping blocks
This way invalidation will rewrite the jump back to the compiler.
Otherwise a SMC block can end up looping itself indefinitely.

Might help with Spyro 2/3. I can't seem to make them crash anymore.
2024-12-12 16:28:51 +10:00
Stenzek
2e805d56dd CPU/CodeCache: Always backpatch KSEG2 writes 2024-12-12 16:24:54 +10:00
Stenzek
c3a2156c79 CPU/CodeCache: Fix event kicking for Cached Interpreter 2024-12-12 16:24:19 +10:00
Stenzek
cdcf05a878 CPU/Recompiler: Only truncate block for future writes
If we overwrite an instruction that has already executed, it
should invalidate the block next time.
2024-12-12 16:23:32 +10:00
Stenzek
e507fdcb1f System: Load state before calling OnSystemStarted()
Needed for transitent state cleanup on Android.
2024-12-11 22:04:21 +10:00
Stenzek
d8af8e4a60 GPU/HW: Fix possibly-stale display with MSAA+Show VRAM 2024-12-11 22:04:21 +10:00
Stenzek
9743ce01a0 OpenGLDevice: Support GLES 3.0
Android emulator still doesn't have GLES 3.1...
2024-12-11 22:04:21 +10:00
Stenzek
69947fb907 GPU/TextureCache: Look for replacements outside of subdirectory
i.e. old setups that do not have the `replacements` subdirectory.
2024-12-11 15:02:55 +10:00
Stenzek
d871c17f3f Settings: Set sprite texture filter on reset 2024-12-11 14:54:26 +10:00
Stenzek
5eac1e4800 VulkanDevice: Blacklist FSI on AMD Windows
Yay for random GPU resets, it's fine on NVIDIA.
2024-12-11 12:46:25 +10:00
Stenzek
1edcc8c0ac System: Merge system taints with state taints on load 2024-12-10 20:19:27 +10:00
Stenzek
cc567d9498 Cheats: Fix hash-suffixed files incorrectly loading 2024-12-10 20:19:26 +10:00
Stenzek
e137d3b5c7 Common: Fix rectangle rempty() on ARM32 2024-12-10 16:49:45 +10:00
Stenzek
5767397231 Qt: Remove 'Enable Cheats' from Console Settings
This was moved to Game Properties ages ago.
2024-12-10 13:19:08 +10:00
Stenzek
0bb83f6fd7 OpenGLDevice: Fix inverted cache file lock 2024-12-10 13:17:06 +10:00
Stenzek
1e839224e8 CDROM: Fix physical disc reading without SubQ on Linux 2024-12-10 02:28:02 +10:00
Stenzek
2e6deca76f FileSystem: Don't use POSIX locks on Android
Requires SDK 24, and it's pointless anyway.
2024-12-10 02:26:54 +10:00
Stenzek
b814666134 CPU/Recompiler: Fix ARM32 build (again) 2024-12-10 02:26:45 +10:00
Stenzek
1bea8817f1 Host: Add ConfirmMessageAsync() 2024-12-10 02:26:45 +10:00
Stenzek
42535591bc HTTPDownloader: Log errors on request failure 2024-12-10 02:26:45 +10:00
Stenzek
a1928de4d0 ImGuiOverlays: Pack SaveStateSelectorUI state 2024-12-09 15:35:07 +10:00
Stenzek
8bb013540d GameDB: Remove redundant codes sections 2024-12-09 15:32:31 +10:00
Stenzek
09ba2ed181 GameDB: Remove duplicate code entries 2024-12-09 15:25:48 +10:00
Stenzek
765a46fc88 FullscreenUI: Pack state in struct 2024-12-09 15:02:05 +10:00
Stenzek
53c08c52ed ImGuiFullscreen: Pack state in struct 2024-12-09 15:01:57 +10:00
Stenzek
5d7cb6c5dc System: Move state compression/writing to worker thread
Reduce hitches when saving.
2024-12-09 14:16:55 +10:00
Stenzek
a4af88bc52 GameDB: More PSX.EXE hashes 2024-12-09 13:50:47 +10:00
Stenzek
31d953dac2 System: Prevent memcard blocking resume state save
Because otherwise you end up with a stale/old resume state, which is
arguably worse.
2024-12-09 13:42:41 +10:00
Stenzek
9b0a906297 GameDB: Add more missing hash entries 2024-12-08 19:45:28 +10:00
Stenzek
5bf7227790 CPU/CodeCache: Use code buffer section on Android 2024-12-08 19:44:27 +10:00
Stenzek
1adf36ccb2 Build: Fix out-of-tree CMake scmversion extraction on Windows 2024-12-08 19:44:27 +10:00
Stenzek
b6eb41e2cf Qt: Improve binding widget tooltip 2024-12-08 19:44:27 +10:00
Stenzek
2999f15d7a StringUtil: Add UTF-16 encoding/decoding functions 2024-12-08 19:44:27 +10:00
Stenzek
7f3687de81 Common: Report assertion failure/panic message for Android 2024-12-08 14:19:25 +10:00
Stenzek
3a661a1c3d Cheats: Move file clearing into core
Needed for Android.
2024-12-08 02:58:50 +10:00
Stenzek
d5432da082 Settings: Disable runahead/rewind in Safe Mode 2024-12-08 02:58:50 +10:00
Stenzek
f9155e5ce7 Settings: Fix incorrect data type for rewind slots 2024-12-08 02:58:50 +10:00
Stenzek
5725a0360b GPU: Use A1BGR5 format for SW/HashCache if available 2024-12-06 18:28:09 +10:00
Stenzek
8c5fadafba GPUTexture: Add A1BGR5 format
Needed for GLES, since RGB5A1 + BGRA + REV isn't listed as
a valid format.
2024-12-06 18:28:09 +10:00
Stenzek
dbba8deb4b Packaging: Fix path in pkgbuild/spec 2024-12-06 18:28:09 +10:00
Anderson Cardoso
c3a9ab3cc8 Atualização Português do Brasil (#3341)
Atualizado para a última versão
2024-12-06 18:27:58 +10:00
Stenzek
f0c456893c GPUDevice: Support pre-rotating swap chains 2024-12-06 15:38:51 +10:00
Stenzek
acf04ed67a GPUDevice: Use row-major matrix packing
With column vectors. mul() turns into dot products instead of madds.
2024-12-06 15:10:15 +10:00
Stenzek
e22d67f4aa GSVector: Add 4x4 matrix class 2024-12-06 15:10:15 +10:00
Stenzek
9c327af280 GPUDevice: Typedef auto-recycled texture 2024-12-06 15:10:15 +10:00
Stenzek
52feb1a37d PostProcessing: Improve compile error reporting 2024-12-06 15:10:15 +10:00
Stenzek
c9c4307871 FileSystem: Android build fix 2024-12-06 15:10:15 +10:00
Stenzek
042a2d72f7 Threading: Add IsCallingThread() to ThreadHandle 2024-12-06 15:10:15 +10:00
Stenzek
5c4d95fd51 Settings: Add missing GPU feature disables 2024-12-06 15:07:56 +10:00
Stenzek
6d080c1a3f GPU: Fix additional GL_POP() causing validation errors 2024-12-06 14:51:57 +10:00
Stenzek
3670c131e3 Qt: Hook up extract button in ISO browser 2024-12-05 18:59:32 +10:00
Stenzek
ea632665c1 Qt: Fix possible game settings save error with sliders 2024-12-05 18:57:35 +10:00
Stenzek
0c7636b3c3 System: Add missing safe mode disable messages 2024-12-05 17:04:09 +10:00
Stenzek
541985fb70 Qt: Add ISO Browser 2024-12-05 16:30:21 +10:00
Stenzek
58f5d7e1ba Qt: Fix missing status message on delayed progress show 2024-12-05 16:30:21 +10:00
Stenzek
e9644c7eeb ISOReader: Add file extraction helpers 2024-12-05 16:30:21 +10:00
Víctor "IlDucci
20df4ec14e Spanish (Spain) update 2024/12/03 (#3340)
Translation of latest changes.
2024-12-05 16:30:09 +10:00
Stenzek
fe3b4154b7 PostProcessing: Fix crash on UI open with OpenGL 2024-12-03 22:35:49 +10:00
Stenzek
3ca2579882 Qt: Add additional early SSE4.1 check on Windows
reshadefx uses roundss in std::unordered_map initializers, no other way
to stop this. If it's not reshade, it'll probably be something else.
2024-12-03 19:13:35 +10:00
Stenzek
84a1e209ea OpenGLDevice: Lock pipeline cache on Linux
Prevents multiple processes from trampling on one another.
2024-12-03 17:35:07 +10:00
Stenzek
04e472d088 FileSystem: Add non-blocking option to POSIXLock 2024-12-03 17:29:47 +10:00
Stenzek
d93c713fb7 FileSystem: Make POSIXLock moveable 2024-12-03 17:29:47 +10:00
Stenzek
5b6e3a952c System: Reset code cache on fastmem mode change
Fixes excess backpatching and potential crashes when changing mode.
2024-12-03 17:29:47 +10:00
Stenzek
0a2facfaeb Settings: Don't enable fastmem without recompiler
Don't need to bother allocating memory otherwise.
2024-12-03 16:54:42 +10:00
Stenzek
d3ceda0c5b CPU/CodeCache: Improve block host size heuristics
Codegen is much better these days, especially with NewRec.
2024-12-03 16:54:28 +10:00
Stenzek
9a5ee3aae6 Qt: Fix horizontal scrollbar showing in summary track list 2024-12-03 16:16:38 +10:00
Anderson Cardoso
03eb4a6bf9 Atualização Português do Brasil (#3339) 2024-12-03 14:45:36 +10:00
Stenzek
25063d4018 Achievements: Fix overlay stacking 2024-12-03 14:13:04 +10:00
Stenzek
14ff89d0c0 MetalDevice: Fix incorrect pixel format for RGB5A1 2024-12-03 13:28:19 +10:00
Stenzek
297165d1ee Deps: Fix MacOS build 2024-12-03 13:21:01 +10:00
Stenzek
cbc22a89f7 GPU/HW: Fix TC + SW-For-Readbacks combo 2024-12-02 20:45:02 +10:00
Stenzek
ac79e43cc0 Deps: Bump versions
- Qt to 6.8.1.
- Harfbuzz to 10.1.0.
- libzip to 11.11.2.
2024-12-02 20:45:02 +10:00
Stenzek
3959c83bd4 GPU/TextureCache: Fix split writes not dumping 2024-12-02 20:12:40 +10:00
Stenzek
22edf23269 GPU: Fix parameter logging of some commands 2024-12-02 17:24:18 +10:00
Stenzek
6756c96fa2 CDROM: Improve SeekL -> ReadN timing
See comments - Mech stops at target Data - 2, or SubQ target.
2024-12-02 17:24:16 +10:00
Stenzek
71e1032605 GameDB: Army Men: Sarge's Heroes 2024-12-02 17:24:15 +10:00
Stenzek
2f70d1bd9c CPU: Write trace log to data directory 2024-12-01 23:21:33 +10:00
Stenzek
e9848a6182 Misc: Collapse more niche log channels 2024-12-01 23:21:33 +10:00
Stenzek
9df59713da GPUDevice: Put debug messages/scopes behind conditions
And completely compile them out in Release builds.

Gets Devel close to Release in terms of performance.
2024-12-01 23:21:33 +10:00
Stenzek
0faa9cf650 Build: Add Devel configuration
Gets you debug assertions and logging, while still producing an
optimized executable.
2024-12-01 23:21:33 +10:00
Stenzek
2a7625e67c CI: Add workflow dispatch triggers for all jobs
Useful for running just one platform on a branch.
2024-12-01 23:21:13 +10:00
Stenzek
4aa9857c53 Qt: Fix fallback binding layout not including motors 2024-12-01 21:17:54 +10:00
Stenzek
aff623b772 GameDB: JogCon games 2024-12-01 21:17:54 +10:00
Stenzek
7c627a8c83 Controller: Add JogCon
This is probably wrong, but I have no way of testing it with an actual
force feedback wheel.

PRs welcome to improve it further.
2024-12-01 21:17:54 +10:00
Stenzek
f9c125c1a1 InputManager: Add ForceFeedbackDevice interface 2024-12-01 21:08:52 +10:00
Stenzek
d7d028ac5c GameDB: Recompiler ICache for Resident Evil 3
CD code gets super screwed up and sends multiple commands without
waiting for them to finish.
2024-12-01 18:16:59 +10:00
Stenzek
b87c6dde6c CDROM: More logging tidy-up 2024-12-01 18:15:42 +10:00
Stenzek
4fe3e1147d Controller: Add GetPortDisplayName() that takes pad index 2024-12-01 17:47:55 +10:00
Stenzek
9fc9f4b9e9 Settings: Fix hash cache fields not being compared 2024-12-01 16:53:29 +10:00
Stenzek
00132c6070 AnalogController: Fix more log spam 2024-12-01 14:49:38 +10:00
Stenzek
9c2244f40e Qt: CustomizeWindowHint should be set for no-close-button 2024-12-01 14:39:26 +10:00
Stenzek
42c5f9169f CI: Merge all packaging scripts to one directory 2024-12-01 14:39:26 +10:00
Stenzek
c6746e76f1 CPU/Intepreter: Raise #RI on invalid COP0 move 2024-12-01 14:27:24 +10:00
Stenzek
62414b0c4c CPU/Interpreter: IBE should not set BD/BT
Apparently. Nothing relies on this. :P
2024-12-01 14:27:24 +10:00
Stenzek
67041d217b Qt: Improve shortcuts
- CTRL/+, CTRL/- no longer show in menu for zooming, but still activate.
- CTRL+O will open a new disc/game from file.
- F5 will refresh the game list (i.e. scan for new games).
- F3/CTRL+F will send focus to the game list search box.
- Pressing Enter in the search box will send focus to the first game
  list row.
- ALT+ENTER in the game list will open Game Properties.
2024-12-01 14:27:24 +10:00
Stenzek
145ad2db27 GameList: Fix scanning of ELF files 2024-12-01 13:10:20 +10:00
Stenzek
9dec34c8c0 Settings: Disable texture replacements if TC disabled
Stops replacements being enumerated in the software renderer as well.
2024-11-30 14:42:51 +10:00
Stenzek
f1435dcf67 Settings: Bump maximum hash cache size
Hopefully mobile will be okay with it.. I know Adreno GL
craps out around 8,000 texture objects.
2024-11-30 14:36:07 +10:00
Stenzek
53008eb34a GPU/HW: Allow use of RGB5A1 for texture cache
Reduces bandwidth and storage requirements by 50%.
2024-11-30 14:36:07 +10:00
Stenzek
c6e2235ee2 GPU/HW: Vectorize texture conversion routines
~100% speed up for RGBA8, ~50% for RGB5A1.
2024-11-30 14:36:07 +10:00
Stenzek
fa4dc381ed GPUDevice: Rename RGBA5551 to RGB5A1
And fix the incorrect format for Vulkan.
2024-11-30 14:36:07 +10:00
Stenzek
dfacf9e8db VulkanDevice: Only create swap chain framebuffer without dynamic rendering 2024-11-30 01:09:41 +10:00
Stenzek
ee750b44e3 Settings: Normalize texture replacment option titles 2024-11-30 01:09:41 +10:00
Stenzek
0f51472d64 Misc: Android build fix 2024-11-30 01:09:41 +10:00
Stenzek
b7fff840c8 System: Move thread name init to host
Prevents funky thread names for regtest on Linux.
2024-11-29 21:21:27 +10:00
Stenzek
cbc16bee9e GPU: Display scanout resolution regardless of crop mode 2024-11-29 21:05:01 +10:00
Stenzek
b059cda8d5 Achievements: Pack state in struct 2024-11-29 20:13:37 +10:00
Stenzek
aafc029682 Misc: Un-namespace Timer 2024-11-29 20:13:37 +10:00
Stenzek
ae18db9271 RegTest: Use filename instead of database title 2024-11-29 19:10:21 +10:00
Stenzek
682ba71319 GPU: Fix aspect ratio with Show VRAM enabled 2024-11-29 18:36:32 +10:00
Stenzek
d5b9b54a69 GPU/SW: Vectorize VRAM writes/copies 2024-11-29 18:05:52 +10:00
Stenzek
19eee76aec AnalogController: Reduce log spam 2024-11-29 17:30:53 +10:00
Stenzek
6cbfab6eca MetalDevice: Warning fix 2024-11-29 17:13:21 +10:00
Stenzek
9970944da2 Achievements: Add encryption of login tokens in ini
Super simple key derived from the machine's UUID.

The idea isn't to provide a ton of security, but prevent users from
accidentially exposing their tokens when sharing their ini for debugging
purposes.

The use of the machine UUID is disabled in portable mode for those who
actually move it between computers. Instead, the key is derived from the
username alone, which is trivially computable.
2024-11-29 17:13:21 +10:00
Stenzek
5401dc8d52 Settings: Add EmuFolders::IsRunningInPortableMode() 2024-11-29 17:06:40 +10:00
Stenzek
ff3214b8f7 SmallString: Add span helpers 2024-11-29 17:06:20 +10:00
Stenzek
d3246deb77 ThirdParty: Add aes.cpp 2024-11-29 17:06:06 +10:00
Stenzek
83274c7e3b ThirdParty/SmallVector: Compile fixes 2024-11-29 17:05:18 +10:00
Stenzek
b39f1558ec StringUtil: Add Base64 decode/encode functions 2024-11-29 17:05:02 +10:00
Stenzek
c0b4627c11 StringUtil: Drop old MacOS workaround 2024-11-29 15:25:36 +10:00
Stenzek
bbe6612b25 Common: Add SHA256Digest 2024-11-29 15:20:33 +10:00
Stenzek
da501b9294 StringUtil: Add ParseFixedHexString() 2024-11-29 15:04:25 +10:00
Stenzek
2e31a40dda Qt: Zero spacer size hints in Graphics Settings
Fixes the window size changing depending on which tab is selected.
2024-11-29 14:06:22 +10:00
Stenzek
dac5dd562b HTTPDownloader: Improve error reporting
Give something human-readable when an error occurs.
2024-11-29 14:00:55 +10:00
Stenzek
6d72a48708 Qt: Disable All Enhancements -> Safe Mode in Debug menu 2024-11-29 13:20:50 +10:00
Stenzek
3ed6cc2ba8 GameList: Fix crash loading custom language options 2024-11-29 13:17:07 +10:00
Stenzek
6be242449b AnalogController: Simplify rumble config
And fix some variables not being saved to state, yay determinism issues.
2024-11-29 13:11:25 +10:00
Stenzek
eeee1e691a Cheats: Support importing native format
Compared to only replacing the .cht file.
2024-11-29 13:10:59 +10:00
Stenzek
208e6c4b35 Cheats: Strip whitespace from code names 2024-11-29 12:49:51 +10:00
Anderson Cardoso
c4d4a7a774 Fix Missing Flag (#3338)
* Atualização Português do Brasil

Atualizado para a última versão.

* Flag fix

Added reference for the missing flag Spanish Latin America

* Update Flag

As discussed in discord with @Hipnosis183 told us that is better change to Mexico flag instead for his lang option.
2024-11-29 12:49:33 +10:00
Daniel Nylander
73dc52ac98 Adding Swedish flags to UI (#3337)
* Updated Swedish translation

* Updating Swedish translation

Now I feel happy with it for some time.

* Adding Swedish flags

* Adding Swedish flags from Wikipedia 

Source https://sv.wikipedia.org/wiki/Fil:Sweden_flag_orb_icon.svg

* Final update for Swedish translation
2024-11-29 12:49:16 +10:00
Stenzek
cd216d91db Qt: Re-enable download button on update failure 2024-11-28 01:07:40 +10:00
Anderson Cardoso
2e0825a363 Atualização Português do Brasil (#3336)
Atualizado para a última versão.
2024-11-28 01:05:37 +10:00
Daniel Nylander
b81d6718f4 Updated Swedish translation (#3335)
* Updated Swedish translation

* Updating Swedish translation

Now I feel happy with it for some time.
2024-11-28 01:05:30 +10:00
dreamsyntax
4e43b1ec8c Debugger/MemoryScanner: Add 'Freeze Selected' (#3334) 2024-11-27 18:30:02 +10:00
Stenzek
a879c11c34 Qt: Prevent multiple update download button clicks 2024-11-27 18:28:29 +10:00
Stenzek
97700b85de GPU/HW: Clear ROV depth on fill/copy/write
It wasn't being specified before, whoops.
2024-11-27 17:52:31 +10:00
Stenzek
eb390a9b5d GPU/TextureCache: Specify max hash cache size/memory in config 2024-11-27 17:52:31 +10:00
Stenzek
b28ca2b78a Qt: Improve updater error reporting
And swap from Qt file functions to our own.
2024-11-27 17:52:31 +10:00
Stenzek
57d3aa4850 FileSystem: Add Error parameter to StatFile() 2024-11-27 17:50:43 +10:00
Stenzek
1434507b41 FileSystem: Add span overload for WriteBinaryFile()
And normalize filename -> path parameter names.
2024-11-27 17:50:43 +10:00
Stenzek
b97788a35a PostProcessing/FX: Force native paths for includes 2024-11-27 13:18:11 +10:00
Stenzek
4edae3cdd0 GPU/HW: Depth buffer needs to be a RT in ROV mode 2024-11-27 12:56:01 +10:00
Stenzek
d1b904a1da Qt: Fix game properties crash opening non-DB game 2024-11-27 12:43:15 +10:00
Stenzek
0befbf8021 GPU: Add Uncorrected Borders crop mode
Should behave the same as the old "All Borders" mode.
The pixel aspect ratio WILL BE WRONG.

Also fixes the size of screenshots in internal resolution mode.
2024-11-26 18:00:19 +10:00
Stenzek
be7a20fef2 GPU/TextureCache: Map replacement non-255 alpha to fully transparent
That way if during the scaling process you end up with interpolated
colours, the cutout alpha is preserved.

Ideally we'd blend it, but that tends to create more problems than it
solves on PSX.
2024-11-26 13:08:32 +10:00
Stenzek
5fd79254bd GPU: Fix crash when toggling software renderer 2024-11-26 12:58:12 +10:00
Stenzek
57595c47af GPU/TextureCache: Move replacement cache onto the GPU
And enforce a maximum. Should sort out the upload spam.
2024-11-25 19:37:28 +10:00
Stenzek
4a650fcce2 GPUDevice: Fix VRAM usage calculation for compressed textures 2024-11-25 18:44:35 +10:00
Stenzek
982dccb990 D3D12Device: Clang warning fixes 2024-11-25 16:30:23 +10:00
Stenzek
b180b26728 GPU: Rework "All Borders" cropping to be aspect correct
The "All Borders" crop mode was previously creating an aspect ratio that
was completely incorrect when using modes outside of Auto/4:3. We now
scale the aspect ratio relative to the PAL/NTSC aspect ratio to account
for this, regardless of how much of a border the game configures.

Overscan cropping also produced an incorrect aspect ratio outside of 4:3
mode, resulting in minor horizontal stretching. It is now correct,
however, this results in black borders being added in 16:9 for most
games.

To remove these borders, you have two options:

 - Use the "Stretch to Fill" aspect ratio. This will scale the GTE
   aspect ratio to fill the screen.

 - Use the "Only Overscan Area (Aspect Uncorrected)" crop mode. This
   mode retains the "old" behaviour, resulting in a stretched image.
2024-11-25 16:26:16 +10:00
Stenzek
dec468966c GPU/HW: Fix sprite mode triggering on screen-aligned UVs
Some polygons just end up being perfect. For example, Croc 2
minecart level.
2024-11-25 15:39:45 +10:00
Stenzek
a804801a1b GPU/HW: Support filtering with texture cache 2024-11-25 13:23:39 +10:00
Stenzek
0ae8fcced3 GPU/HW: Fix incorrect sampling at 1x with TC 2024-11-25 13:15:07 +10:00
Stenzek
0076af6974 SPU: Zero out upper ADPCM filters
Also in CD-ROM.
2024-11-25 01:33:11 +10:00
Stenzek
40a1bee9ea CDROM: Fix incorrect clmap in XA-ADPCM decoding
Fixes crunchy audio in GT2: A-Spec.
2024-11-25 01:05:10 +10:00
Stenzek
9fa8fee193 Achievements: Use rc_client for pause throttling 2024-11-24 23:56:16 +10:00
Stenzek
852239ec8a Qt: Add game list language override option 2024-11-24 23:29:29 +10:00
Stenzek
70a4b5c9f2 GameDatabase: Add missing flags 2024-11-24 23:29:29 +10:00
Stenzek
7b230dc4c1 GPU/HW: MSAA samples change needs to recreate pipelines
Otherwise Metal/Vulkan go boom boom.
2024-11-24 23:29:29 +10:00
Stenzek
ae14c8715d Image: Support decompressing BC1-7 2024-11-24 23:29:29 +10:00
Stenzek
8567293103 Util: Add TextureDecompress 2024-11-24 23:29:29 +10:00
Stenzek
7eb1d4e092 GPUDevice: Support compressed textures 2024-11-24 23:29:29 +10:00
Stenzek
24dfd30839 Image: Refactor to a more generic class 2024-11-24 23:29:29 +10:00
Stenzek
3ff1b04576 GPUDevice: Support generating mipmaps 2024-11-24 23:29:28 +10:00
Stenzek
e647192437 GPUDevice: Add compute shader support 2024-11-24 23:29:28 +10:00
Stenzek
affbdfc350 Timer: Fix >1 second sleeps on MacOS 2024-11-24 23:29:28 +10:00
Daniel Nylander
ff010686f8 Updated Swedish translation (#3333) 2024-11-24 21:55:06 +10:00
Stenzek
c970740d12 InputManager: Workaround macro chord trigger issue 2024-11-24 21:54:43 +10:00
Stenzek
e987b56aae Log: Remove unused ISOReader channel 2024-11-23 18:59:10 +10:00
Stenzek
88836c431e GameDB: King's Field I/II (Japan) 2024-11-23 18:59:01 +10:00
Stenzek
5bcf99fc11 CDImage: Merge bin/ecm handling into one class
Means that cuesheets with ECM tracks will now load as expected.
2024-11-23 18:52:46 +10:00
Stenzek
5261cfe8e4 CPU/Recompiler: Tidy up type names
And reduce global namespace pollution.
2024-11-23 18:52:46 +10:00
Stenzek
f67eacc071 CPU: Default to new recompiler/remove old recompiler 2024-11-23 18:52:46 +10:00
Stenzek
d2d06adeeb CPU/NewRec/ARM32: Shifts need to be explicitly masked 2024-11-23 18:52:45 +10:00
Stenzek
5c03e1d940 Misc: Fix alignment errors on ARM32 2024-11-23 18:52:45 +10:00
Stenzek
bb24d406f2 Pad: GCC compile fix 2024-11-23 18:52:45 +10:00
Stenzek
d26fc89aac dep/imgui: RISC-V compile fix 2024-11-23 18:52:45 +10:00
Stenzek
5d8519897d Image: Fix uninitialized read without SIMD 2024-11-23 18:52:45 +10:00
Stenzek
b984f343ae System: Fix audio CD images not showing title 2024-11-23 18:52:45 +10:00
Stenzek
0079f7a285 CDImageCue: Support reading .wav files (WAVE cuesheet files) 2024-11-23 18:52:43 +10:00
Stenzek
e6892e0a54 Common: Fix incorrect condition in PreviousPow2/NextPow2 2024-11-21 12:31:00 +10:00
Stenzek
378fd80e3d CDROM: Defer subq read until needed
Should help with hitches on real disc reads until I refactor
in a proper sector cache...
2024-11-20 14:24:48 +10:00
Stenzek
ca9af62f92 FullscreenUI: Add a BP achievements login dialog 2024-11-20 13:44:39 +10:00
Stenzek
2da7859143 Qt: Fix incorrect parent window for locks
e.g. achievements token expired
2024-11-20 13:44:08 +10:00
Stenzek
b59f9a1270 ImGuiManager: Plumb through clipboard access 2024-11-20 13:38:52 +10:00
Stenzek
b726fa8918 Scripts: Fix SyntaxWarning in glyph range updater 2024-11-19 20:40:08 +10:00
Stenzek
2791a9a890 Scripts: Move l10n glyph range script to scripts 2024-11-19 20:40:03 +10:00
Stenzek
81e2619e91 FullscreenUI: Add missing icon 2024-11-19 20:35:07 +10:00
Stenzek
5a948800b7 Achievements: Purge first-disc-from-playlist option
Unnecessary since all disc's hashes are registered.
2024-11-19 20:13:22 +10:00
Stenzek
4b71428846 GPU/TextureCache: Fix tracking getting enabled without TC 2024-11-18 23:34:24 +10:00
Stenzek
cf0c2ea1e6 GameDB: PGXP-CPU for Tenchu 2 2024-11-18 23:34:08 +10:00
Nicolette Verlinden
869b159601 DiscDB: Fix Cardcaptor Sakura names 2024-11-18 14:50:08 +10:00
Nicolette Verlinden
988a7c8c6d GameDB: Fix Cardcaptor Sakura names 2024-11-18 14:19:47 +10:00
Stenzek
1451e968d5 GPU/TextureCache: Pack state in struct 2024-11-18 14:19:47 +10:00
Stenzek
9838dd9df2 GPU/TextureCache: Purge copy-target sources from hash cache
Saves some VRAM/hash cache usage by disacarding hash cache entries that
are discarded by a copy, but unfortunately cannot stop the uploads.
2024-11-18 14:19:47 +10:00
Stenzek
6c1b98e46a GPU/SW: Fix 256-bit AVX2 path 2024-11-18 14:19:47 +10:00
Daniel Nylander
122fe3d52f Updated Swedish translation (#3331)
* Update Swedish translation

* Update duckstation-qt_sv.ts
2024-11-17 13:24:00 +10:00
Stenzek
ed78a20ea7 FullscreenUI: More icon replacements 2024-11-17 13:23:03 +10:00
Stenzek
574f12759c FullscreenUI: Hide advanced settings by default 2024-11-17 13:12:45 +10:00
Stenzek
97d8a35108 GameDatabase: Fix compatibility rating localization 2024-11-17 13:04:20 +10:00
Stenzek
7a11b95490 Qt: Update Korean translation by Hack茶ん 2024-11-17 13:03:33 +10:00
Stenzek
725530984c FullscreenUI: Move remaining OSD settings to main page 2024-11-16 22:03:58 +10:00
Stenzek
8747101648 FullscreenUI: Fix enable state of skip dupe frames 2024-11-16 22:01:09 +10:00
Stenzek
49a6ef7aca FullscreenUI: Add icons to remaining options 2024-11-16 21:56:32 +10:00
Stenzek
bb450d5e5f FullscreenUI: Fix nav focus loss on input bind 2024-11-16 20:00:39 +10:00
Stenzek
d56bcfa4c8 FullscreenUI: Fix activate button stuck on input bind 2024-11-16 20:00:20 +10:00
Stenzek
854319441c ImGuiFullscreen: Fix position resetting to top of list on popup close 2024-11-16 19:36:12 +10:00
Stenzek
5cfb76e3f5 GameDB: PGXP-CPU for Sheep Raider 2024-11-16 14:45:35 +10:00
Stenzek
9fbb760b18 CI/AppImage: Bump to LLVM 18 2024-11-16 14:06:14 +10:00
Stenzek
d5e2db0dee Misc: Fix new clang-cl warnings 2024-11-16 14:06:14 +10:00
Stenzek
854a8eb1bb Qt: Fix non-cancellable progress dialog height 2024-11-16 14:01:44 +10:00
Stenzek
61dae0ed6f Qt: Disable close for non-cancellable progress dialog 2024-11-16 14:01:44 +10:00
Stenzek
49b669c8be Qt: Make image verification cancellable 2024-11-16 14:01:44 +10:00
Víctor "IlDucci
194e9bbbe5 Spanish (Spain) translation update (#3330)
Updated the Spanish (Spain) translation with the latest changes.
2024-11-16 00:22:08 +10:00
Stenzek
41a89123c9 VulkanDevice: Work around older NVIDIA driver present bug 2024-11-16 00:19:03 +10:00
Stenzek
3cf7a94d1e GunCon: Allow empty/disabled crosshair 2024-11-14 00:35:45 +10:00
Stenzek
8ec9c90c82 Qt: Fix settings not applying immediately when editing profile 2024-11-14 00:35:25 +10:00
Stenzek
2da32d8e57 Qt: Allow saving empty string to config 2024-11-14 00:19:41 +10:00
Stenzek
c2316dfdc8 InputManager: Fix relative mode engaging for gun controllers
It still needs to activate when using raw input.
2024-11-14 00:17:28 +10:00
Stenzek
350429466a FileSystem: Move separator macro to path.h 2024-11-14 00:17:27 +10:00
Stenzek
babaffcce9 GPU/HW: Don't enable no-color-perspective when unsupported
i.e. GLES
2024-11-13 21:07:02 +10:00
Stenzek
b8f397c353 GameDB: Aces of the Air 2024-11-13 12:34:07 +10:00
Stenzek
801ddf7b36 GameDB: Remove DMA override for RE2
No longer needed.
2024-11-12 16:03:36 +10:00
Stenzek
5219e4f987 CDROM: Simulate real pause timing 2024-11-12 16:03:36 +10:00
Stenzek
a2af51b856 CDROM: Simulate backwards track jump after seek/pause 2024-11-12 16:03:36 +10:00
Stenzek
5f607d8c7a CDROM: Avoid double seek on repeated Setloc+ReadS 2024-11-12 16:03:36 +10:00
Stenzek
97938a8b8c CDROM: Improve command logging clarity 2024-11-12 16:03:36 +10:00
Stenzek
5cf2c86874 CDROM: More accurate approximation of sectors per track 2024-11-12 16:03:35 +10:00
Stenzek
4763b6754c GameDB: PGXP-CPU for Vandal Hearts II 2024-11-12 16:03:30 +10:00
Stenzek
482f99c323 CI: Add icons to main sub-jobs 2024-11-12 14:09:04 +10:00
Stenzek
5bc38ffd63 CI: Split and add dedicated Flathub publish 2024-11-12 13:53:17 +10:00
Stenzek
e69f0d3cce OpenGLDevice: Support both XCB and Xlib
Required for NVIDIA+XWayland.
2024-11-11 20:12:26 +10:00
Stenzek
816ef45199 OpenGLDevice: Fix possible missing eglMakeCurrent() after FS 2024-11-11 20:12:23 +10:00
Stenzek
365e129792 CPU: Fix puts() hook incorrect arg 2024-11-11 16:27:11 +10:00
Stenzek
6ffa5bffab CPU: Handle mirrors of BIOS syscalls 2024-11-11 16:26:51 +10:00
Stenzek
3f41dcc97d Log: Add option coloured variants 2024-11-11 14:04:48 +10:00
Stenzek
596cca9be2 RegTest: Improve -maxframes option
Grab the last N frames instead of first N. Better for showing crashes.
2024-11-11 14:04:48 +10:00
PugsyMAME
5caadec34d Cheat bugfix and new A8 cheat type (#3328)
* Bugfix for import and entering new cheats

Added needed g_emu_thread->reloadCheats calls after the reloadList() calls on entering a new code or importing new codes.

Without it I had to import new codes and then manually edit one of them for it to show up in the cheat counts and possibly even work

* Added Cheat Type A8

Added cheat type A8 which is the byte equivalent of the A7 cheat type as there will be a need of this type.

* Changed boolean parameters in last PR

Changed boolean parameters in last PR as per discord
2024-11-11 14:01:50 +10:00
Daniel Nylander
439e05bbf2 Update duckstation-qt_sv.ts (#3329) 2024-11-10 17:53:34 +10:00
Stenzek
92bcf64fe8 VulkanDevice: Refactor present failure handling
Shouldn't deadlock anymore...
2024-11-10 17:52:12 +10:00
Stenzek
0234137be4 VulkanDevice: Use VK_EXT_surface_maintenance1
NVIDIA drivers return a minImageCount of 3 with the base surface query
capability, but require 4 images for XWayland in immediate present mode.
2024-11-10 17:52:12 +10:00
Stenzek
b70a8482bd OpenGLDevice: More verbose logging of surface creation failure 2024-11-10 17:52:12 +10:00
Stenzek
8611f4f438 System: Handle GPU device loss in BP-only mode 2024-11-10 15:48:41 +10:00
Stenzek
5b600789d6 GPU: Page align VRAM storage on Apple Silicon 2024-11-10 14:02:09 +10:00
Stenzek
2bf0838634 MetalDevice: Fix import of non-page-aligned buffers 2024-11-10 14:01:54 +10:00
Stenzek
e3e0fe6445 Log: Prepend timestamp to multi-line messages 2024-11-10 13:23:25 +10:00
Stenzek
3874df6888 Qt: Enforce minimum progress dialog height 2024-11-10 13:10:20 +10:00
Stenzek
3a271ffe9b Qt: Enable Swedish translation 2024-11-10 13:06:05 +10:00
Daniel Nylander
160c27e106 Adding Swedish translation (#3327) 2024-11-10 13:03:03 +10:00
Stenzek
e8bb6bab10 Qt: Don't allow doubleclick-to-fullscreen in relative mode 2024-11-08 21:01:21 +10:00
Stenzek
7ac7175da5 Qt: Right clicking while binding should not clear input 2024-11-08 20:38:37 +10:00
Stenzek
dec40e234f Deps: Bump to SDL2 2.30.9 2024-11-08 18:15:58 +10:00
Stenzek
5f6daf8a2a CI: Bump flatpak-github-actions version 2024-11-08 18:05:36 +10:00
Stenzek
a6c19cc90b OpenGLContext: Compile fix on MacOS 2024-11-08 18:05:26 +10:00
Stenzek
2d22409d2e dep/libchdr: Fix handling of duplicate codecs 2024-11-07 22:48:05 +10:00
Stenzek
c461ad7b44 D3D11Device: Ensure we don't drop to feature level 10 on query failure 2024-11-07 22:24:33 +10:00
Stenzek
886ef4cc59 WAVWriter: Add matching reader class 2024-11-06 13:46:48 +10:00
Stenzek
ead9e56c4d System: Support loading ELF files 2024-11-05 17:54:12 +10:00
Stenzek
65f3dcbe9b HeapArray: Fix assignment/move with aligned variant 2024-11-05 17:53:42 +10:00
Stenzek
2044e35377 GPUDump: Fix unknown compression type reported with Zstandard 2024-11-05 16:21:40 +10:00
Stenzek
3952661978 GPU: Write initial rendering attributes to GPU dump 2024-11-05 16:17:49 +10:00
Stenzek
7b7dd2bef1 AnalogController: Reset state on analog->digital switch
But only when the game does not support analog mode.

Tomb Raider's game selector menu puts the controller into
configuration mode, and we're supposed to respond with a
0x00 header byte if the user switches the pad to digital
mode.

Problem is, the game itself doesn't understand this mode
switch nor configuration mode. So the status byte gets
stuck at 0x00 if the user toggles analog mode, and the
game thinks no pad is connected.

Work around this by resetting the whole state if the game
does not support analog mode.
2024-11-05 16:07:31 +10:00
Stenzek
57ca5dd2c2 ImGuiFullscreen: Default input source to keyboard if none 2024-11-05 14:12:43 +10:00
Stenzek
88e14dd3ff RegTest: Support using global data directory 2024-11-05 13:58:20 +10:00
Stenzek
a854ed2da1 Qt: Use game start fullscreen flag for BP too 2024-11-05 13:29:58 +10:00
Stenzek
f889136227 PostProcessing: Don't try other types after first failure 2024-11-05 13:26:32 +10:00
Stenzek
2cd3f209e2 dep/rcheevos: Bump to 3106e6d 2024-11-05 13:18:05 +10:00
Stenzek
bcd5cd0027 GPU/ShaderGen: Fix debug assert tripping with fbfetch 2024-11-05 13:13:29 +10:00
Stenzek
8bd0e6c3f7 CPU/CodeCache: Clear blocks on system shutdown
Means we release all allocated memory on system shutdown, rather
than waiting until the next VM/system start.
2024-11-05 13:06:46 +10:00
Stenzek
d0ad4e7264 dep/libchdr: Fix mismatched function pointer type 2024-11-05 13:03:47 +10:00
Stenzek
b5c83e671f Qt: Drop Qt 6.7.0 workarounds
Fedora 41 is out with Qt 6.8.0.
2024-11-05 12:09:50 +10:00
Stenzek
ca2ed61dba Timers: Work around possible MSVC codegen bug
Fixes very strange behaviour in games in MSVC LTCG build.
2024-11-04 23:03:51 +10:00
Stenzek
4c1377774d CI: Remove Flathub push 2024-11-04 13:07:41 +10:00
Stenzek
bb740499a5 CDImageCHD: Show precaching in MB 2024-11-04 12:34:49 +10:00
Anderson Cardoso
be271e3bfb Atualização Português do Brasil (#3326)
Confirmado linhas movidas;
Atualizado para última versão;
Adicionado textos sobre ativação de trapaças.
2024-11-04 12:18:45 +10:00
Stenzek
dae5973121 Data: Remove non-functioning shader
Depends on includes which are no longer present.
2024-11-04 12:14:45 +10:00
Stenzek
88147d8f69 Qt: Fix legacy cht file clearing 2024-11-03 22:32:35 +10:00
Stenzek
ac19768247 Qt: Make multitap mode non-inheritable as well 2024-11-03 20:26:52 +10:00
Stenzek
98cce645a9 Qt: Fix empty device list when editing profile 2024-11-03 20:20:36 +10:00
Stenzek
8c4d595a89 Qt: Make input source selection non-inheritable
Makes sense to set this in the profile specifically,
given it is tied to devices.
2024-11-03 20:17:56 +10:00
Stenzek
a8b588371a SettingsInterface: Add missing const qualifiers 2024-11-03 20:06:32 +10:00
Stenzek
8f087ab594 Qt: Add prompt to enable cheats when list is checked 2024-11-03 18:08:28 +10:00
Stenzek
d416ecb324 Qt: Add 'Clear Cheats' option to cheats page 2024-11-03 17:57:58 +10:00
Stenzek
0fc719c4cf Cheats: Simplify code merging on import
The save file already does replacement.
2024-11-03 17:38:50 +10:00
Stenzek
a8bc364a2b Cheats: Fix importing hash-formatted codes 2024-11-03 17:38:27 +10:00
Stenzek
95be381a9f Qt: Fix cheat code delete message 2024-11-03 17:26:54 +10:00
Stenzek
2c3d1d9e60 dep/libchdr: Check that metadata seek succeeds 2024-11-02 22:27:14 +10:00
Stenzek
12acecbf36 FullscreenUI: Allow editing option range cheat values 2024-11-02 22:19:33 +10:00
Stenzek
775496af8a FullscreenUI: Ensure each cheat option has a unique name 2024-11-02 22:19:33 +10:00
Stenzek
09a825720d dep/imgui: Fix smooth scrolling on scrollbar drag 2024-11-02 22:19:33 +10:00
Stenzek
b4e509d090 Qt: Fix FF/turbo speed resetting in game properties 2024-11-02 21:25:47 +10:00
Stenzek
9733d8a0d1 Flatpak: Swap to KDE 6.8 SDK 2024-10-31 22:43:09 +10:00
Stenzek
b646f1453d GameDB: DMA override for RE2
Stops disk read lockups during transitions with icache on.
Requires CPU to be faster than DMA.
2024-10-31 22:05:06 +10:00
Stenzek
145fbff79b Qt: Add log level/channels to debug menu 2024-10-31 20:13:43 +10:00
Stenzek
6551358212 Log: Replace channel string search with bitset
Knocks off around ~20KB of code.
2024-10-31 14:41:33 +10:00
Stenzek
afb9ab7d11 DMA: Show MADR in debug window 2024-10-31 14:28:20 +10:00
shikulja
ad73093ab2 Update Russian translation (#3325)
* upd ts

* Update Russian translation
2024-10-31 14:28:02 +10:00
Stenzek
9cb2cabd8b FullscreenUI: Fix footer text in save state submenu 2024-10-30 20:10:40 +10:00
PugsyMAME
dfc4e0833e GameDB: Finished off the database DEMO genre entries 2024-10-30 15:28:45 +10:00
Stenzek
65d7f3bf2d dep/libchdr: Correctness fixes for 9e5deb8 2024-10-30 15:28:45 +10:00
Stenzek
5518199206 GPU/SW: Fix polyline culling 2024-10-30 15:28:45 +10:00
Stenzek
5bca12a840 GameDatabase: Add ForceFullBoot trait
And set it for Nightmare Creatures. Game's disc code is a nightmare.
2024-10-30 15:19:11 +10:00
Stenzek
814f22f58b Cheats: Only apply overclock when it is not already enabled 2024-10-30 15:19:10 +10:00
Stenzek
2043128f98 System: Fix per-game fast boot applying too late 2024-10-30 15:19:10 +10:00
Stenzek
d24e8fda83 GPU/HW: Only enable fbfetch/DSB when needed
Thanks Adreno...
2024-10-30 15:19:10 +10:00
Stenzek
dadc994ba8 GPU/HW: GLSL ES compile fix 2024-10-30 15:19:10 +10:00
Stenzek
a3d55c6e30 Misc: Android build fixes 2024-10-30 15:19:10 +10:00
Stenzek
bfadd608fb System: Add 'Task Threads'
Used for saving screenshots/GPU dumps.
2024-10-30 15:19:10 +10:00
Stenzek
0dc78e4c23 Timer: Fix sleep timer handle leak 2024-10-30 15:19:10 +10:00
Stenzek
b86fdc1cc1 Threading: Add error checking to semaphore 2024-10-30 15:19:06 +10:00
Stenzek
53fb5cd9e1 GTE: Remove dependency on GPUDevice 2024-10-28 14:31:22 +10:00
Stenzek
d34707a377 System: Pack state in struct
Don't trust the linker...
2024-10-28 14:31:22 +10:00
Stenzek
166c930738 System: Move private functions to separate header 2024-10-28 14:31:22 +10:00
Stenzek
21d19a6297 System: Move perf counters to separate namespace 2024-10-28 14:31:22 +10:00
Stenzek
875ccecb90 System: Use frame rate for speed calculation
Instead of cycles. Makes it invariant to OC changes, and can
be managed on the (future) GPU thread.
2024-10-27 22:01:00 +10:00
Stenzek
99e65282f6 GPU/HW: Prefer shader over image copy if not dirty 2024-10-27 15:35:19 +10:00
Stenzek
2c57817803 System: Invalidate display on debug window change
Fixes these windows displaying black if the VM is paused.
2024-10-27 15:15:20 +10:00
Stenzek
c6b74684de GPU/HW: Split shaders into resolution independent/dependent
Avoids recompiling everything on resolution change.
2024-10-27 15:15:20 +10:00
Stenzek
6cf8ac340b GPU/HW: Make copy/write shaders resolution independent 2024-10-27 15:15:20 +10:00
Stenzek
aa0c0068ce GPU/HW: Move shadergen parameters to functions 2024-10-27 13:50:47 +10:00
Stenzek
1d21ca61e7 Cheats: Allow hex literal in option ranges 2024-10-27 12:32:41 +10:00
Stenzek
218df625df Cheats: Fix crash on parsing invalid cheat 2024-10-27 12:32:41 +10:00
KamFretoZ
24f15acf6c BPM: Adjust Hotkey And Button Legends (#3323) 2024-10-26 20:34:32 +10:00
Stenzek
8def5b5d0a GameDB: Allow user to choose different mode for ForceDeinterlacing 2024-10-26 16:15:58 +10:00
Stenzek
82e9bcc55f Qt: Compatibility with Qt 6.7
Dunno why updating packages is taking so long...
2024-10-26 16:15:58 +10:00
Stenzek
62de181e97 Flatpak: Build libzip 2024-10-26 16:10:13 +10:00
Stenzek
7782bb9845 CDROM: Fix lockup when loading state with precaching 2024-10-26 02:14:59 +10:00
Anderson Cardoso
7f5a4a065b Atualização Português do Brasil (#3322)
Atualizado:
Confirmação de linhas movidas;
Adição de linhas referente a macro de controle.
2024-10-26 01:44:23 +10:00
Stenzek
1ae2dcf192 GPU: Propagate initialization error to caller
Avoids double error popup.
2024-10-26 01:41:29 +10:00
Stenzek
6af71beed5 GPU: Work around nearest sampling issues on AMD
Fixes one-line flickering display in some games.
2024-10-26 01:40:44 +10:00
Stenzek
d8cd32d964 GameDB: SLED-01340 requires subchannel 2024-10-25 20:52:47 +10:00
Stenzek
b92eeec962 System: Warning fix 2024-10-25 20:45:11 +10:00
Stenzek
9e5deb8e35 dep/libchdr: Update and fix numerous vulnerabilities 2024-10-25 20:37:52 +10:00
Bobby Smith
19ae3be0b0 Settings: Re-enable "Start Fullscreen" per-game (#3321) 2024-10-25 20:37:29 +10:00
Stenzek
080807e557 CDROM: Move subchannel replacement from CDImage
This will allow you to use SBI/LSD files with real discs, if your
drive does not support reading subchannels, or has an incorrect
skew.
2024-10-25 15:35:12 +10:00
Stenzek
cdd230c040 ImGuiOverlays: Fix input overlay glyph clipping 2024-10-25 12:45:50 +10:00
Stenzek
903213c818 Hotkeys: Add hotkey to open cheat settings 2024-10-25 12:45:29 +10:00
Stenzek
7d2216c289 GameList: Avoid double fopen/read of EXEs 2024-10-23 21:20:28 +10:00
Stenzek
2d04f2eff9 System: Support loading .CPE files 2024-10-23 21:08:17 +10:00
Stenzek
a8d846ac8f Cheats: Use libzip for reading archive 2024-10-22 21:25:27 +10:00
Stenzek
761c8bdf7f Deps: Build libzip 2024-10-22 21:16:56 +10:00
Stenzek
631f32a4c9 Common: Add ZipHelpers 2024-10-22 20:46:35 +10:00
Stenzek
4963dc1759 Host: Make resource routines fill error object 2024-10-22 20:41:33 +10:00
Stenzek
485f81a02f GPUDump: Support XZ compression 2024-10-22 19:40:03 +10:00
Stenzek
3a76485e4b CompressHelpers: Support XZ compression/decompression 2024-10-22 19:40:02 +10:00
Stenzek
19a0854528 Deps: Update LZMA SDK to 24.08
And include XZ routines.
2024-10-22 19:40:00 +10:00
Stenzek
164c043e1b InputManager: Add pressure/deadzone to macros
Arguably less useful than on the PS2, but is still applicable
to the left/right analog sticks.
2024-10-22 19:39:56 +10:00
Stenzek
396e7d994a System: Make global safe mode always take precedence 2024-10-22 01:11:31 +10:00
Stenzek
bd5a97feca Qt: Fix global safe mode checkbox 2024-10-22 01:08:50 +10:00
Stenzek
c11b250efe Cheats: Search archives with disc set serials
That way the list is auto-populated for all discs.
2024-10-21 20:25:07 +10:00
Anderson Cardoso
63685ce5f8 Atualização Português do Brasil (#3320)
- Confirmado linhas movidas;
- Adicionado linhas referente aos novos controles;
2024-10-21 20:24:49 +10:00
Stenzek
32e62725dd Pad: Implement RX/TX IRQs 2024-10-21 00:38:05 +10:00
Stenzek
6e1d8c5213 Qt: Fix settings clear not resetting input profile 2024-10-21 00:29:54 +10:00
Stenzek
a9bfe2642f System: Simplify error path in BootSystem() 2024-10-21 00:18:12 +10:00
Stenzek
b62e58776e System: Fix GPU usage disappearing on renderer change 2024-10-21 00:12:20 +10:00
Stenzek
be268d8bf1 Qt: Fix safe mode not resetting on gamesettings clear 2024-10-21 00:09:11 +10:00
Stenzek
05c285f760 Settings: Fix cheats/patches not being removed on clear 2024-10-21 00:08:56 +10:00
Stenzek
c250209336 System: Fix input profiles inheriting base settings 2024-10-21 00:05:32 +10:00
Stenzek
0d3501d435 Misc: Pass SettingsInterface by const reference 2024-10-20 23:59:47 +10:00
Stenzek
60f6ee3055 RegTest: Build fix 2024-10-20 23:21:49 +10:00
Stenzek
825dd13c6b GameDatabase: Fix crash with deinterlacing mode 2024-10-20 23:21:39 +10:00
Stenzek
4ab22921c4 GPUDump: Add GPU dump recording and playback
Implements the specification from:

https://github.com/ps1dev/standards/blob/main/GPUDUMP.md
2024-10-20 22:02:24 +10:00
Stenzek
428c3e3426 Host: Fix error when switching to surfaceless 2024-10-20 22:02:22 +10:00
Stenzek
4666057158 SettingWidgetBinder: Add enum overload that populates dropdowns 2024-10-20 21:56:15 +10:00
Stenzek
b277035734 Qt: Use Qt 6.8 thread helpers 2024-10-20 13:41:15 +10:00
Stenzek
45f782962e CI: Temporarily disable Flatpak builds
Until the KDE 6.8 SDK has been released.

It's been almost 2 weeks, the branch is live in their repo, but nothing
on flathub. No clue what's going on.
2024-10-20 13:30:56 +10:00
Stenzek
056b629837 ImGuiManager: Add 'Screen Margins' (i.e. safe zone) 2024-10-20 13:17:22 +10:00
PugsyMAME
dbb2274d2d GameDB: Fixing some codes for Lightspan games +more (#3318)
* Fixing some codes for Lightspan games +more

Added codes for some more lightspan games
Added Magic Castle to end of file
Fixed a few wrongly identified demos

* Add files via upload
2024-10-20 12:56:00 +10:00
Stenzek
e0bc03b525 Controller: Fix localization with new types 2024-10-20 12:55:10 +10:00
Stenzek
6cc350a459 Cheats: Serialize access to zips
Prevents the UI thread from trashing the zip struct while the
emulation thread is also reading.
2024-10-20 12:43:11 +10:00
Stenzek
5c4a9f9f1c MinizipHelpers: Close file after reading 2024-10-20 12:43:11 +10:00
Anderson Cardoso
ecc0356fb9 Atualização Português do Brasil (#3319)
Confirmado linhas movidas;
Adicionado linhas referente aos 2 novos controles.
2024-10-20 12:42:54 +10:00
PugsyMAME
aacd62b29b GameDB: Some more genre fixes (#3316)
* Some more genre fixes

The last few genre changes, so there is a no longer a simple genre of "Sports".
Also picked up a few DEMOs that I missed.

* Add files via upload
2024-10-19 22:55:09 +10:00
Víctor "IlDucci
8cd4982c62 Spanish (Spain) translation update 2024/10/19 (#3317) 2024-10-19 22:54:56 +10:00
Stenzek
864d6928d3 MSBuild: Fix default startup project 2024-10-19 22:53:46 +10:00
Stenzek
163cb2f653 MemoryScanner: Fix default operator value 2024-10-19 22:51:52 +10:00
Stenzek
c279376cff Qt: Fix menu creation from incorrect thread 2024-10-19 17:05:17 +10:00
Stenzek
43ed92415d GPU/HW: Fix assert triggering in debug mode 2024-10-19 17:05:06 +10:00
Stenzek
9050098e3e GameDatabase: Rework deinterlace mode selection
The mode can either be preferred (if the user has not chosen
progressive), or force (ignore user's choice).

Also remove it from a bunch of games which apparently no longer
need it? Very strange...
2024-10-19 17:02:22 +10:00
Stenzek
e4a358cacb Controller: Add Pop'n and Densha De Go Controllers
Variants of digital controller with different buttons grounded.
2024-10-19 16:23:01 +10:00
Stenzek
41c709ef6f CMake: Reference shaderc/spirv-cross unconditionally
Should fix build with Vulkan disabled.
2024-10-19 13:15:00 +10:00
PugsyMAME
d3234a29c8 GameDB: Updating genres (#3315)
* Updating genres

Changed "Sports / " to "Sports -"  , as / should indicate multiple genres and - subgenres (there's still more to do).
Also added a ** DEMO ** genre as it's nice to be able sort them out.
Done a bit of work on the Lightspan educational games - but haven't completed as I've lsot the will to live with them.
Also done other clean ups on genres like cases and trailing dots.

* Tab Error in last update

Quick Fix for Tabs

* Fixing GameDB Lint errors

Oops

* Again Oops

oops

* Changed "Sports / " to "Sports -" , as / should indicate multiple genres and - subgenres (there's still more to do).
Also added a ** DEMO ** genre as it's nice to be able sort them out.
Done a bit of work on the Lightspan educational games - but haven't completed as I've lsot the will to live with them.

Also done other clean ups on genres like cases and trailing dots.
2024-10-19 13:03:09 +10:00
Anderson Cardoso
cc275b6ff8 Atualização Português do Brasil (#3313)
Atualizado para a última versão [again] ;p
2024-10-19 13:02:13 +10:00
Stenzek
49134efe4e Settings: Fix PGXP suboptions getting disabled
Regression from 005d48a387
2024-10-19 13:01:05 +10:00
Stenzek
f83cbbda12 Qt: Work around a couple of Linux issues 2024-10-19 12:44:07 +10:00
Stenzek
76208f5f2d System: Display localized trait names 2024-10-19 01:16:05 +10:00
Stenzek
57cf0f2643 System: Reload cheats/patches on safe mode toggle 2024-10-19 01:13:32 +10:00
Stenzek
baa9065d2e System: Add taints to save states
This informs the user they are loading a save state that at some point
had potentially-game-breaking options enabled, and a reset is necessary
to clear them.
2024-10-19 01:13:32 +10:00
Stenzek
2aea06526c README: Mention chtdb 2024-10-19 01:13:32 +10:00
Anderson Cardoso
f0be61b819 Atualização Português do Brasil (#3312)
Atualizado para a última versão.
2024-10-19 01:13:15 +10:00
Stenzek
b99ee59224 Qt: Add 'Rename File' to memory card editor
And context menu for ease of use.
2024-10-19 00:03:07 +10:00
Stenzek
50d8bb091f MemoryCard: Add RenameFile() and localize errors 2024-10-19 00:03:07 +10:00
Stenzek
854a109a0f Qt: Qt 6.8 deprecation fixes 2024-10-18 22:25:31 +10:00
Stenzek
86a28d5dc0 ImGuiOverlays: Move debug state to auxiliary windows 2024-10-18 20:48:30 +10:00
Stenzek
6dc2f0a60b Host: Add 'Auxiliary Render Windows'
i.e. debugging windows
2024-10-18 20:48:30 +10:00
Stenzek
eb46142ee7 GPUDevice: Extract swap chain to separate class 2024-10-18 20:48:29 +10:00
Stenzek
c6055affbf OpenGLDevice: Fix invalidating pipeline cache on Windows 2024-10-18 20:48:29 +10:00
Stenzek
005d48a387 System: Don't display setting warnings without game 2024-10-18 20:48:29 +10:00
Stenzek
e2cb54d233 Settings: Use uint getter/setter for more fields 2024-10-18 20:48:29 +10:00
Stenzek
d4f3e004cf Host: Add missing SetBaseUIntSettingValue() 2024-10-18 20:48:29 +10:00
Stenzek
972a0693b2 Memmap: Compatibility with old libc without MAP_FIXED_NOREPLACE 2024-10-18 20:48:29 +10:00
PowerDuckSamurai
7ad48c9309 GameDB: Various fixes (#3311) 2024-10-18 20:48:07 +10:00
Stenzek
219e890da5 GPU/HW: Write through VRAM transfers
Reduces the chances of rendering nothing after device loss.
2024-10-14 18:20:48 +10:00
Anderson Cardoso
afd36560c1 Atualização Português do Brasil (#3310)
* Atualização Português do Brasil

Confirmação de textos movidos;
Correções de consistência.

* Update 2

Adicionado e corrigido erro de digitação.

* Update 3

* Update 4
2024-10-14 12:47:46 +10:00
Stenzek
2604df5917 Qt: Fix crash when players column is visible 2024-10-14 12:47:09 +10:00
Stenzek
11c212260c System: Only check controller changes when valid 2024-10-14 12:46:54 +10:00
Stenzek
4a57ccc3e8 Cheats: Strip leading * when importing old files 2024-10-14 12:44:23 +10:00
Stenzek
a11ed649bf Qt: Add keyboard navigation to memory view 2024-10-13 17:34:07 +10:00
Stenzek
b3ae9cbe4a Qt: Swap compatibility star image to SVG
Images originally provided by KamFretoZ, adjusted to better fit the
column width.
2024-10-13 17:08:56 +10:00
Stenzek
469485974c CI: Download chtdb at build time 2024-10-13 16:43:23 +10:00
Stenzek
e0b6f6f1b2 Cheats: Rewrite cheat management system 2024-10-13 16:43:22 +10:00
Stenzek
2079bac40b StringUtil: Add FromCharsWithOptionalBase() 2024-10-13 16:43:22 +10:00
Stenzek
0d05548459 MinizipHelpers: Add ReadZipFileToString() 2024-10-13 16:43:22 +10:00
Stenzek
d8fef6f22e GameDatabase: Store strings as views
Saves duplicating everything in memory, and a ton of heap allocations.
2024-10-13 16:43:22 +10:00
Stenzek
86d66ddf82 StringUtil: Don't call data() on empty string_view 2024-10-13 15:33:38 +10:00
Stenzek
21ec3c1152 Qt: Fix automatic binding button in per-game controller settings 2024-10-13 11:56:20 +10:00
PugsyMAME
1e119c8e2d Added the rest of the flag svgs (#3309)
* Added the rest of the flag svgs

As listed in:-     duckstation/src/core/game_database.h
Used the UK Flag for English as it's the standard on the packaging

* Update and rename Portugese.svg to Portuguese.svg

Damn typo

* Portuguese.svg not Portugese.svg

typo
2024-10-13 11:56:00 +10:00
PugsyMAME
07cb8d9c86 Referenced svgs not in project
Grabbed referenced flag svgs missing
2024-10-13 02:28:21 +10:00
PugsyMAME
412c8f0187 Replaced any : in #Cheat Descriptions
Replaced any ':' characters in #Cheat Descriptions that are not the start of a comment.
2024-10-13 02:28:21 +10:00
Stenzek
5ab65ff484 Qt: Remove now-duplicate flag icons 2024-10-12 16:51:17 +10:00
Stenzek
6e26ba3e9e Qt: Display language flags instead of region 2024-10-12 16:49:07 +10:00
Stenzek
ba0708a4ff GameDatabase: Add parsing of Language field
Also speed up lookups through binary search.
2024-10-12 16:23:47 +10:00
Stenzek
2fc5856c44 StringUtil: Add CompareNoCase() 2024-10-12 16:21:34 +10:00
Stenzek
dedc177300 GameDB: Normalize language fields 2024-10-11 23:11:49 +10:00
Stenzek
38a331fde4 ImGuiFullscreen: Support loading SVGs 2024-10-11 22:52:11 +10:00
Stenzek
3e26b7ab73 Image: Support rendering SVGs 2024-10-11 22:52:11 +10:00
Stenzek
3d5503612b Image: Span and Error-ify 2024-10-11 22:52:11 +10:00
Stenzek
8680900788 ImGuiFullscreen: Fix horizontal menu items getting clipped 2024-10-11 22:52:11 +10:00
Stenzek
83a1386d0b FullscreenUI: Collapse macro button settings by default 2024-10-11 21:40:35 +10:00
Stenzek
407dccb1db Qt: Move GDB server enable to advanced options
And expose the port as a setting.
2024-10-11 21:26:06 +10:00
Stenzek
7ce4c34936 VulkanDevice: Scissor rect should never be negative 2024-10-11 21:19:16 +10:00
Stenzek
dde7ebbb67 Deps: Update to Qt 6.8.0 and SDL2 2.30.8 2024-10-08 20:59:13 +10:00
Stenzek
26b6c704f0 MemMap: Support dynamic page size selection
i.e. 4K to 16K on ARM64.
2024-10-05 19:25:23 +10:00
Stenzek
0c2ab82252 System: Fix no-disc startup in later versions 2024-10-11 16:54:46 +10:00
Stenzek
449cd7cbc8 Data: Update SDL Game Controller DB 2024-10-08 19:54:59 +10:00
Stenzek
1778507995 Atualização Português do Brasil (#3306)
Atualizado para a última versão.
2024-10-08 19:41:03 +10:00
Stenzek
bfbea97776 OCT 2024 Update to cheat file (#3307)
Cheat Submissions:
Pugsy: Drive Through Other Cars & Drive Anywhere cheats for Newman Haas Racing (USA) {SLUS-00602}
Pugsy: Drive Through Other Cars cheat for Rage Racer (USA) {SLUS-00403}
Pugsy: Infinite Time, No Damage,Schlesser Never Wins, Drive through other Vehicles & Drive Safely pass Tanks cheats for Taxi 2 {SLES-03597}
Pugsy: Drive Anywhere cheat for TOCA {SLES-00376 & SLUS-00611} TOCA 2 {SLUS-00996 & SLES-01542}
Pugsy: Roll Over cheats for Roll Away {SLUS-00724}
Pugsy: Walk Anywhere cheat for Hokuto no Ken {SLPS-02993}
Pugsy: Can't tackle/save ball and combined cheats for english language versions of FIFA 2000 {SLUS-00994, SLES-03345 & SLES-02315}
Pugsy: WTW, Invincibility & Infinite Bombs cheats for Bomberman - Party Edition {SLUS-01189} & Bomberman {SLES-01893}
Pugsy: Quickly converted the Hercules Action Game SLUS-00529 cheats for the re-release SLUS-01029
Pugsy: Walk through Walls, Walk through Water & No Biting Fish cheats for Herc's Adventures (USA) {SLUS-00298}
Pugsy: Collect from Anywhere/Easy Hit Boxes cheats for the three region versions of Crash 2
Pugsy: Walk Faster cheat for Parasite Eve (USA) {SLUS-00662/SLUS-00668}
Unicorngoulash: Some new cheats for Hellnight {SLES-01562}
Unicorngoulash: Fixed widescreen cheats for MediEvil {SCUS-94227}
Unicorngoulash: Character model Ammo & moon chump cheats for Ganbare Goemon - Ooedo Daikaiten {SLPM-86774}
Unicorngoulash: In-Battle widescreen cheats for Final Fantasy VIII (USA)
Unicorngoulash: Widescreen cheats for Deuce (Prototype)
Teh69thSpartan: 1 Hit/Invincibility & frozen enemies cheats for Hokuto no Ken {SLPS-02993}
Teh69thSpartan: Various new cheats and updated some cheat addresses and fixed other cheats for various Toy Story 2 games
Teh69thSpartan: Invincibility & Moon Jump cheats for MediEvil II {SCUS-94564}
Teh69thSpartan: Various cheats & fixes for the various Crash Bandicoot 1-3 games

Other Stuff
Updated lots of 16-9 Widescreen cheats to have 20-9 & Eye-Infinity selections (mileage WILL vary)
Fixed game id typo for the Kaette Kita Cyborg Kuro-chan (Japan) cheats - so the cheats will now appear (you may need to hit the RESET button on the cheats menu)
Fixed Andretti Racing {SLUS-00264} 60 FPS cheat
2024-10-08 19:40:53 +10:00
Stenzek
f4b88edc49 GameDB: Disable WS for Breath of Fire IV
While it fares better than III, at wider ARs the sprite scaling
completely breaks.

Also fix the name for the Japanese release.
2024-10-08 19:39:35 +10:00
Stenzek
ff194844de GameDB: Disable WS for Breath of Fire III 2024-10-08 19:39:16 +10:00
Stenzek
f1dd161504 GameDB: Chaos Control supports mouse 2024-10-08 19:27:13 +10:00
Stenzek
32e96b02ca FullscreenUI: Various fixes
- Fix mismatched X/Y in landing page.
- Fix mismatched X/Y submenus.
- Fix window padding on save state submenu.
- Fix pressing back/close on save state submenu closing list.
2024-10-07 12:51:27 +10:00
Stenzek
9ff4fbd21c StringUtil: Fix incorrect end_ptr computation 2024-10-07 01:42:19 +10:00
Stenzek
3fb5fb4c72 System: Fix saving of subimage index 2024-10-06 18:06:51 +10:00
Stenzek
c9f7ef5f9a System: Fix reset when booting EXE 2024-10-06 13:36:46 +10:00
Stenzek
80971dac5a AnalogController: Allow negative vibration bias 2024-10-05 16:07:33 +10:00
Stenzek
08bdffac64 GPU/HW: Fix toggling texture replacement settings 2024-10-05 13:50:36 +10:00
Stenzek
71bb953253 GPU/HW: Handle redundant texture window updates
Significantly reduces draw count in THPS2.

~150 draw calls per frame to ~70.
2024-10-05 13:06:45 +10:00
Stenzek
52389f48a6 GPU/HW: Fix force-round-coords with texture cache 2024-10-05 13:06:43 +10:00
Stenzek
0ae4461fc3 README: Mention SSE2 builds and texture replacement 2024-10-05 13:06:22 +10:00
Stenzek
2f331540b1 BIOS: Fix OpenBIOS initializer 2024-10-05 12:18:46 +10:00
Stenzek
a83b642a2d Settings: Disable texture cache in safe mode 2024-10-04 14:49:42 +10:00
Stenzek
c740fd9e11 GPU/TextureCache: Disable bilinear page upscaling by default
And fix it.
2024-10-04 14:48:10 +10:00
Stenzek
887d588029 System: Further improve fastboot behaviour
Use fastboot when slowboot will fail.
2024-10-04 14:48:05 +10:00
Stenzek
4d5e0b6c54 Settings: Don't create dumps/audio in userdir
Was replaced by media capture.
2024-10-01 23:06:34 +10:00
Anderson Cardoso
785692dbe1 Atualização Português do Brasil (#3304)
Atualizado para a última versão.
2024-10-01 23:04:11 +10:00
Stenzek
7e72b9fb7b GPU/TextureCache: Fix palette reduction in C4 mode
It was only looking at the first row...
2024-10-01 23:01:19 +10:00
Stenzek
51fefb36a0 System: Fix crash when toggling SW with interpreter 2024-10-01 22:41:01 +10:00
Stenzek
bd050ebb63 OpenGLDevice: Fix 16-bit texture uploads without PBOs 2024-10-01 22:02:27 +10:00
Stenzek
0730a361a3 GPU/HW: Fix batch shader compiling with GLSL ES 2024-10-01 21:14:58 +10:00
Stenzek
45c8f6ea56 BIOS: Make GetInfoForHash() public
And it should take a const span.
2024-10-01 21:14:43 +10:00
Stenzek
08fe20ad76 CMake: Add spirv-cross include path to util 2024-10-01 21:13:12 +10:00
Stenzek
ccc3b114d4 FileSystem: Slight ifdef tidy-ups 2024-10-01 21:11:19 +10:00
Stenzek
75babc74cb Data: Update SDL game controller db 2024-09-29 23:07:25 +10:00
Stenzek
07f410bc6a Achievements: Mirror whacky rcheevos header handling 2024-09-29 20:38:46 +10:00
Stenzek
6dc4fa5c75 CDROM: Physical => SubQ in variables
Better describes what it actually is.
2024-09-29 18:01:44 +10:00
Stenzek
9de5794afe Data: Add replacement scanlines shader 2024-09-29 17:11:56 +10:00
Stenzek
060146a37a CDROM: Add SubQ Skew option
Fixes corrupted boss sprites in Captain Commando.

One day I'll refactor things to fix this properly.
2024-09-29 17:11:52 +10:00
Stenzek
3081c4f5cd Qt: Fix disabling of some texture dumping options 2024-09-29 16:19:20 +10:00
Stenzek
73fd97e770 GPUTextureCache: Fix reload replacements hotkey/menu action 2024-09-29 16:13:31 +10:00
Stenzek
d32143b319 ImGuiOverlays: Make escape close save state selector 2024-09-29 15:29:40 +10:00
Stenzek
e06f1f1002 GPU: Add hardware texture cache 2024-09-29 13:37:47 +10:00
Stenzek
4132b5ef3d Settings: Remove 'Increase Timer Resolution' option
It's no longer needed since I switched to high-resolution waitable
timers, which are supported on Win10 1803+.
2024-09-28 23:50:44 +10:00
Stenzek
fee5f760ad Qt: Put RAIntegration in root menu bar 2024-09-28 22:34:57 +10:00
Stenzek
b51def8a99 Qt: Support update checking without installing
i.e. what I'm going to do with packages, just open the
download page and let the user install it.
2024-09-28 22:25:42 +10:00
Stenzek
7d8ae9aa11 Packaging: Add SPEC and PKGBUILD 2024-09-28 22:07:14 +10:00
Stenzek
ca6b99401b Common: Build fix when compiling with AVX2 march 2024-09-28 19:43:23 +10:00
Stenzek
036e11f7a8 Qt: Remove unused variable 2024-09-27 22:48:43 +10:00
Stenzek
615781be39 GPUBackend: Don't rely on g_settings 2024-09-27 20:59:04 +10:00
Stenzek
4e880280bd Qt: Fix inconsistent multitap addressing
And remove multiple copies of the same variables while we're at it.
2024-09-27 20:59:04 +10:00
Stenzek
a76b48bc7b CI: Update dependency versions 2024-09-27 20:59:04 +10:00
Anderson Cardoso
82ed6bb1f3 Atualização Português do Brasil (#3303)
Atualizado para a última versão.
2024-09-27 20:58:51 +10:00
Stenzek
5995471de6 FullscreenUI: Disable rewind options unless enabled 2024-09-26 21:54:51 +10:00
Stenzek
df8e950e6e Qt: Rename 'Disable All Enhancements' to 'Safe Mode'
And move it to the bottom of the dialog.
2024-09-26 21:54:51 +10:00
Stenzek
29da7f7211 System: Add 'Fast Forward Boot' option 2024-09-26 21:40:48 +10:00
Stenzek
b36e2ce6be CPU/CodeCache: Don't create a branch block with no delay slot
Can't compile that.
2024-09-26 20:55:13 +10:00
Stenzek
2e4eaeafdc GameDB: PGXP-CPU for Hogs of War
Fixes wobble in minimap.
2024-09-26 20:55:10 +10:00
Stenzek
e3a84af1aa GameDB: PGXP-CPU for Firebugs
Fixes gaps in geometry.
2024-09-26 20:49:04 +10:00
Stenzek
c46ec398dc GPU: Move software fill/write/copy into rasterizer namespace 2024-09-26 18:30:46 +10:00
Stenzek
495a0da8d4 Pad: Pack state in struct 2024-09-26 17:54:46 +10:00
Stenzek
58dc24cb0d CDROM: Pack state in struct
Ensures locality, as with other subsystems.
2024-09-26 17:49:35 +10:00
Stenzek
a26c3e5620 System: Add new 'Type 1B' fast boot
This saves approximately 2 seconds of boot time, as it no longer copies
the shell from ROM to RAM. The actual byte reads only take in the order
of 75ms, but because the BIOS executes the memcpy() out of uncached ROM,
the repeated instruction fetches take it up to almost 2 seconds...

It would be faster to read it from the CD-ROM...
2024-09-26 16:28:47 +10:00
Stenzek
d1eed89292 GameDB: PGXP-CPU for Roswell Conspiracies 2024-09-26 14:05:43 +10:00
Stenzek
0e4ca9cd93 CDROM: Fix CDDA playback in some obscure edge cases
e.g. Roswell Conspiracies
2024-09-26 14:05:34 +10:00
Stenzek
4d74b203af System: Don't try to read SYSTEM.CNF from Audio CD 2024-09-26 13:39:01 +10:00
Stenzek
991927151c ImGuiOverlays: Fix scrolling offscreen with no-serial 2024-09-26 13:38:57 +10:00
Stenzek
fd8f97f4d3 GPU/HW: Fix adaptive downsampling
Also rewrite shaders to improve blurring around edges of 3D objects
(e.g. FF7).

As a trade-off, the background does blur slightly less, but (imo)
it looks better overall, since you'll notice the foreground being
blurred much more than the background.
2024-09-26 13:25:53 +10:00
Stenzek
5ed96fcfe4 GameDB: ICache for Nightmare Creatures
Janky ass disc code...
2024-09-25 01:37:07 +10:00
Stenzek
50cfbf1629 GameDB: PGXP-CPU for Valkyrie Profile
Fixes wobble during screen transitions and battle stages.

Hopefully nothing else breaks, if it does, please let me know.
2024-09-25 01:37:07 +10:00
Stenzek
114effd9a1 CDROM: Simulate backwards 1T jump on short seeks
Fixes hangs in LMA Manager, Nightmare Creatures PAL with Interpreter.
2024-09-25 01:37:07 +10:00
Stenzek
3808217298 SPU: Handle ignore loop address with IRQs on
This was actually the issue with World Cup 98, not anything to do with
disc timing. Which makes more sense.

Game has IRQs enabled, but because it wasn't keyed on, the condition
never held true, therefore the new repeat address was immediately
overwritten.
2024-09-25 01:37:07 +10:00
Stenzek
2cfad2126d Common: Missed another SSE4 instruction 2024-09-25 01:37:07 +10:00
Anderson Cardoso
c0ada65336 Atualização Português do Brasil (#3302)
Atualizado para a última versão.
2024-09-23 23:23:14 +10:00
Mrlinkwii
9a1d92a9c5 gitignore: Add /.cache/ folder (#3301) 2024-09-23 22:08:40 +10:00
Stenzek
71cf206dc8 CI: Add Windows SSE2 builds 2024-09-23 21:42:48 +10:00
Stenzek
b971125469 MSBuild: Support creating legacy SSE2 builds 2024-09-23 21:19:28 +10:00
Stenzek
ed7a9e2f8c CI: Refactoring and add Linux SSE2 builds
Windows will follow at some point.
2024-09-23 20:27:58 +10:00
Stenzek
bfc914aaa9 CMake: Add DISABLE_SSE4 option
NOT recommended. Only if you ABSOLUTELY need it.

The SSE2/legacy build will be a separate download option, and
warn you if you try to run it on a CPU that supports SSE4.
2024-09-23 20:27:58 +10:00
Stenzek
d67b826033 CI/Flatpak: Improve install behaviour
Use "standard" install path.
2024-09-23 19:21:14 +10:00
Stenzek
dae38cb309 Qt: Fix gap in advanced graphics settings on Linux 2024-09-23 19:18:29 +10:00
Stenzek
bb3d27f153 GPU/SW: Drop dithering function specialization
Reduces the code size by roughly half, which may be beneficial on
icache-starved processors.

Also fixes too-bright values being fed into the blending equation.
2024-09-23 01:01:07 +10:00
Stenzek
2768d27c05 Qt: Make log window legible in light theme 2024-09-23 00:50:51 +10:00
Stenzek
23ec40d032 Settings: Set log level to none if no sinks enabled 2024-09-23 00:26:48 +10:00
Stenzek
cf32774b24 RegTest: Check size before hash 2024-09-22 21:06:05 +10:00
Stenzek
206f32e511 Qt: Fix early console debug output 2024-09-22 21:06:05 +10:00
Stenzek
c439de6364 Common: SSE2 backsupport for vector classes
shuffle8() sucks, the rest aren't _too_ bad.
2024-09-22 21:06:05 +10:00
Stenzek
e1c876671a Misc: More iNN => sNN 2024-09-22 21:06:05 +10:00
Stenzek
986e207cff GPU/HW: Make batch shaders independent on resolution
Almost a 6x reduction in *compressed* shader cache size.
2024-09-22 21:06:05 +10:00
Stenzek
f9941c3f68 GPU/HW: Reduce shader dependence on global constants
Step 1 of making resolution-independent shaders.
2024-09-22 21:06:05 +10:00
Stenzek
f169b892c1 GPU: Defer frame done if not running events
Prevents interruption/execution exiting if the frame was ticked over
by a MMIO access, e.g. reading GPUSTAT.
2024-09-22 21:06:05 +10:00
PugsyMAME
88bc3a2278 Fixed typo in F4 Cheat Type code (#3300)
Typo in my code, this fix will make it work properly on multiple find & replaces.
2024-09-22 21:05:44 +10:00
Stenzek
3dca598063 Log: Switch to enum class
Need to change the channel to a bitset too.. the string lookups are
horribly slow, and conflict when one is a prefix of another.
2024-09-21 22:26:06 +10:00
Stenzek
88381209b3 System: Fix crash when disabling runahead 2024-09-21 22:26:06 +10:00
Stenzek
1754ecf4f9 SPU: Get rid of second output stream 2024-09-21 22:26:05 +10:00
Stenzek
df17528b18 Qt: Move threaded rendering toggle to Debug tab
Frees up some space.
2024-09-21 22:26:05 +10:00
Stenzek
54e5d93165 GPU/SW: Enable SIMD path and make default 2024-09-21 22:26:05 +10:00
Stenzek
19698559c3 System: Drop IPC server
The one group using it switched to shared memory exports anyway.
2024-09-21 22:26:05 +10:00
Stenzek
ac8461a28b System: Fix bogus SW thread CPU in OSD 2024-09-21 22:26:05 +10:00
Stenzek
e617f17294 System: Set GPU timing enable on init/destroy
It's really unrelated to the guest GPU.
2024-09-21 22:26:05 +10:00
Stenzek
e7aa0495ab System: Not all setting changes need to interrupt 2024-09-21 22:26:05 +10:00
Stenzek
40670726b4 GPU/SW: Fix SSE4 path and add 256-bit AVX2 path 2024-09-21 22:26:05 +10:00
Stenzek
a7747c5be3 Common: Add 256-bit integer vector wrapper 2024-09-21 22:26:05 +10:00
Stenzek
d07c7e4b68 Qt: Fix 100% CPU usage while downloading files
The wonders of having fast internet, you never realize when this happens
because it completes too quickly...
2024-09-21 22:26:05 +10:00
Stenzek
5f80cb1188 GPU/HW: Fix inaccurate shader progress counter 2024-09-21 22:26:05 +10:00
Stenzek
b5df06a54a GPU/HW: Rewrite automatic internal resolution selection
Make it aspect ratio aware, as well as updating when/if the game changes
resolution. Also include the padding area in the OSD/status resolution.
2024-09-21 22:26:05 +10:00
Stenzek
e056bcb5ff AudioStream: Fix incorrect padding 2024-09-21 22:26:05 +10:00
Stenzek
96ece5de1c SmallString: MSVC warning fix 2024-09-19 22:25:35 +10:00
Stenzek
0538b95d9b GPU/HW: Reduce number of shaders/pipelines in default config
~3x speedup in shader compile time on a cold cache.
2024-09-19 22:18:58 +10:00
Mrlinkwii
a5cd3ee7a8 UI : remove issue tracker button 2024-09-19 21:35:21 +10:00
Marcin Mitura
64655818ed feat: Polish localization updates 2024-09-18 22:35:54 +10:00
Stenzek
292c1e0f06 Misc: Normalize OSD message keys 2024-09-18 22:35:50 +10:00
Stenzek
369599202c StringUtil: Speed up EncodeHex()/append_hex() 2024-09-18 21:42:46 +10:00
Stenzek
401295ebdb Common: Allow PRINTFLIKE to work on Clang
And thus clang-cl.
2024-09-18 21:31:06 +10:00
Stenzek
8ba85d62dc Pad: Fix stuck inputs after loading mismatched state pad type 2024-09-18 21:21:57 +10:00
Stenzek
8b67ed8536 CPU: Display loadstore offsets in hex
Also add 0x prefix to logical immediate operands, since it is printed
in hex, and normalize arithmetic operands.
2024-09-15 17:29:33 +10:00
Stenzek
b96e6d1425 Qt/Debugger: Connect breakpoint checkbox 2024-09-15 17:15:47 +10:00
Stenzek
8fa406061a CPU: Add SetBreakpointEnabled() 2024-09-15 17:15:38 +10:00
Bobby Smith
a259178d1b GameDB: South Park - Chef's Luv Shack controller update (#3298) 2024-09-15 08:17:47 +02:00
PugsyMAME
b5768266bb Quality of Life changes to breakpoints (#3297)
1. Made it so that breakpoints are checked for a match on 28 bits rather than the full 32 bits. It's much simpler to use 12345 rather than 80012345 and risk getting the number of zeros wrong and also handles the mirror code/memory accesses using 00??????, 80?????? & A0??????.
2. Added bp.hit_count update to execution breakpoints.
3. Changed the Hit breakpoint message at the bottom of the debugger screen to include the hit count [see notes later].
4. Added bp.enabled check to the execution breakpoint (it uses it in the r/w breakpoints code already) [see notes later].

Notes:
3. I've added the hit count to the message as it's quicker to spot but it's also a partial workaround as the Hit Count in the Breakpoints tab doesn't seem to get refreshed.
       4. I thought the checkbox in the Breakpoints tab would set the bp.enabled but it seems it has no affect on any type of breakpoint. The only way to stop a breakpoint is to delete it.
2024-09-15 07:17:08 +01:00
Stenzek
1ffd2f4149 Qt/Debugger: Improve row scrolling
Don't center the current PC unless we're going off screen, or requested
a specific address.
2024-09-14 02:07:08 +10:00
Anderson Cardoso
fbb92e9225 Atualização Português do Brasil
Atualizado para a última versão.

PS: Refente a recente mudança na licença do emulador
Comentado aqui #3295 da minha parte fica liberado a alteração por parte do desenvolvedor de coisas que faço e/ou fiz: ícones, temas, traduções alguns ajustes antigos e afins para que fique de acordo com a modificação da licença atual.

PS: Regarding the recent change in the emulator license
Commented here #3295 on my part, the developer is allowed to change things that I do and/or have done:

Icons, themes, translations, some old adjustments and the like so that they are in accordance with the change in the current license.
2024-09-13 10:39:01 -03:00
Stenzek
6d637127f2 Qt: Fix memory view colours in light themes 2024-09-14 00:44:44 +10:00
Stenzek
350cf7ee32 GPUDevice: Use suffixed shaderc libname
Avoids conflicts with other installations of shaderc, e.g. the Vulkan
SDK, which might be in the user's LD_LIBRARY_PATH.
2024-09-13 23:05:01 +10:00
Stenzek
d28f0fa4e6 Qt: Enable word wrap in Settings window list 2024-09-13 21:22:48 +10:00
Stenzek
e17eaf77dd ImGuiFullscreen: Disable border animation when smooth scrolling is off 2024-09-13 21:14:07 +10:00
Stenzek
e03deb4928 System: Set realtime constraints on MacOS
Significantly improves frame timing/pacing, now it is a
flat line on my 2023 MBP like other platforms.
2024-09-13 20:23:57 +10:00
Stenzek
d330dca38a MetalDevice: Use CocoaTools methods 2024-09-13 19:52:09 +10:00
Stenzek
d981dc7471 MetalDevice: Implement pipeline cache 2024-09-13 19:26:44 +10:00
Stenzek
ad67ab7ec3 MetalDevice: Use TranspileAndCreateShaderFromSource() 2024-09-13 17:31:59 +10:00
Stenzek
6f31e562a0 MetalDevice: Implement timed present 2024-09-13 15:19:29 +10:00
Stenzek
f2720b98dd System: Reduce force-displayed-warning scope
Please don't make me regret this.
2024-09-10 23:53:39 +10:00
Stenzek
ddcb0cb541 Misc: Warning fixes 2024-09-10 23:53:27 +10:00
KamFretoZ
d7ce028a42 Qt: Make Virtual Controller List Word Wrapped 2024-09-10 20:13:01 +07:00
KamFretoZ
66b4391ab9 Qt: Tweak Grey Matter Theme 2024-09-10 20:12:29 +07:00
KamFretoZ
b6414756e5 Qt: Expand Controller List Width 2024-09-10 20:02:35 +07:00
KamFretoZ
065beff2da Qt: Rename NeGcon Rumble controller name 2024-09-10 19:59:41 +07:00
KamFretoZ
0abd7c0524 Qt: Expand Controller Profile Dropdown Width 2024-09-10 19:56:38 +07:00
Stenzek
20b4581bbe Settings: Remove second source of truth for OSD notifications
And split it into warnings/messages. Warnings are always displayed
regardless of the "Show OSD Messages" setting, because they're critical
and users forget they disable messages.
2024-09-10 22:10:42 +10:00
Stenzek
2813b4bece Achievements: Open profile on leaderboard selection 2024-09-09 22:10:06 +10:00
Stenzek
6c3f33804f ImGuiFullscreen: Fix whole menu being unscrollable
If the first/last menu items were not enabled, e.g. settings pages
2024-09-09 21:37:52 +10:00
Stenzek
891d5cefbe ImGuiFullscreen: Allow smooth scrolling 2024-09-09 21:57:08 +10:00
Stenzek
e93dea5ad8 SPU: Connect 0x1F801DB8/0x1F801DBA writes
But I'm not aware of any games that actually use this, and if there is a
sweep active, it will be soon overwritten anyway.
2024-09-09 21:04:47 +10:00
Stenzek
d1770b616f Settings: Default console logging to running from TTY 2024-09-09 20:55:15 +10:00
Stenzek
fe9d06a194 Qt/Debugger: Snap code view to center on goto address 2024-09-09 20:41:10 +10:00
Stenzek
936c945e73 Qt/Debugger: Highlight selection on dump address 2024-09-09 20:37:04 +10:00
Stenzek
c633a6bacc Qt/Debugger: Invalidate blocks on manual memory edit
Ensures recompiler isn't executing stale code.
2024-09-09 20:19:26 +10:00
Stenzek
128d5254ca MSBuild: Disable RTTI on Windows builds
It's not used.
2024-09-09 19:22:41 +10:00
Stenzek
e2a3fe14f0 Cheats: Prevent inlining of memory functions
Clang is way too eager here and inlines the whole thing hundreds of
times within CheatList::Apply().
2024-09-09 18:53:51 +10:00
Stenzek
7bcdf11240 MediaCapture: Fix audio timestamp drift
Fixes capture lag after approximately 10 minutes.
2024-09-09 17:27:22 +10:00
Stenzek
de551c1836 D3D12Device: Fix crash when using media capture 2024-09-09 17:27:10 +10:00
Stenzek
559aff0ad5 D3D12Device: Use DXC and 12.0 feature level 2024-09-09 00:23:30 +10:00
Stenzek
a22acfc8a7 Deps: Include DXC and DirectX Agility SDK 2024-09-09 00:00:35 +10:00
Stenzek
4c31218d2b GPUDevice: Add API version field
Also tie shader caches to API version and device LUID. That way we don't
have tons of cache files, and they're regenerated if the GPU/driver
changes.
2024-09-08 23:33:05 +10:00
Stenzek
c42fb7c16e GPUDevice: Support ingesting SPIR-V
Will be transpiled to HLSL -> DXBC for DirectX backends.
2024-09-08 22:11:58 +10:00
Stenzek
6a5f16d89a VulkanDevice: Handle rare case of unaligned SPIR-V 2024-09-08 21:55:51 +10:00
Stenzek
432fd80f3d PostProcessing/FX: Use SPIR-V instead of GLSL for Vulkan 2024-09-08 19:43:18 +10:00
Stenzek
86bff869bc dep/reshadefx: Update to 7bdfb03 2024-09-08 19:19:58 +10:00
Stenzek
3078339f64 Common: Extract out ryml helpers 2024-09-09 00:35:31 +10:00
Stenzek
b10f043350 StringUtil: Fix typo 2024-09-09 00:35:12 +10:00
Stenzek
1d83e72887 Achievements: Fix incorrect plural string 2024-09-08 11:51:31 +10:00
Anderson Cardoso
b6c4d6dda9 Atualização Português do Brasil (#3293)
Atualizado para última versão.
2024-09-07 22:53:49 -03:00
shikulja
d29444e948 Update Russian translation (#3292)
* upd ts

* Update Russian translation

* Update Russian translation
2024-09-08 04:53:42 +03:00
Stenzek
1956575710 Cheats: Fix detection of ungrouped cheat import 2024-09-08 11:49:59 +10:00
Stenzek
32a3311208 System: Add option to automatically resize window 2024-09-07 22:05:54 +10:00
Stenzek
9d6ec23dc4 Common: Fix GSVector natvis 2024-09-07 21:53:32 +10:00
Stenzek
940cc636d6 GPU: Fix internal res screenshot AR with None cropping 2024-09-07 20:19:28 +10:00
Stenzek
af777c16ff MediaCapture: Log video size 2024-09-07 20:19:07 +10:00
Stenzek
47a3cd44f3 CDROM: Support reading MODE1 sectors 2024-09-07 16:05:53 +10:00
Stenzek
1b2ff7e0e8 CDImage: Support reading MODE1 sectors 2024-09-07 16:05:43 +10:00
Stenzek
6ea2bb1810 Qt/Debugger: Auto refresh memory every 100ms 2024-09-07 13:39:14 +10:00
Stenzek
71ec59be06 Qt/Debugger: Highlight changed bytes in memory view 2024-09-07 13:19:01 +10:00
Stenzek
ac5a2a153a GPUDevice: Remove BeginPresent() skip parameter
It wasn't used - System does its own present skipping.
2024-09-07 12:53:55 +10:00
Stenzek
4b0c1fdbf2 GPUDevice: Add recovery from lost device 2024-09-07 12:48:44 +10:00
Stenzek
1c1b82ed66 GPUDevice: Purge threaded presentation
Worse frame pacing, and GPU thread (when I finish it) will give
significantly faster performance on mobile anyway.
2024-09-07 12:15:42 +10:00
Stenzek
c5dd48474f CI/MacOS: Don't use ninja for lunasvg 2024-09-06 22:59:21 +10:00
Mrlinkwii
95185b7308 FSUI : some misc fixes (#3291)
FullscreenUI: Some misc fixes
2024-09-06 13:55:17 +01:00
Stenzek
2e080d4998 Qt: Add edit function to debugger memory view 2024-09-06 22:48:50 +10:00
Stenzek
153d95982b RegTest: Compile fix 2024-09-06 22:14:29 +10:00
Stenzek
929b049bd8 Qt: Save/restore additional window positions
Cheat Manager, Memory Scanner, CPU Debugger.
2024-09-06 20:43:43 +10:00
Stenzek
ab1c85790c CPU: Refactor execution mode switching
Fixes single step breaking in branch delay slots with recompiler.
Simplifies initialization.
Removes multiple sources of truth for fastmem.
2024-09-06 20:00:30 +10:00
Stenzek
4c59513c79 GPUDevice: Fix pipeline cache loading
(again)
2024-09-06 18:00:00 +10:00
Stenzek
a074699dab Qt: Fix 'Boot and Debug' menu option 2024-09-06 17:45:59 +10:00
Bobby Smith
2d3c6ace31 GameDB: Fix MGS Premium Package (#3289) 2024-09-06 09:39:28 +02:00
spacepaw
5b4d625d23 Add *.psx as a supported PS-X EXE file type (#3290) 2024-09-06 09:33:19 +02:00
Anderson Cardoso
4a2714150e Atualização Português do Brasil (#3288)
Atualizado para a última versão.
2024-09-03 10:36:21 -03:00
Stenzek
129df8410e PostProcessing/FX: Log pipeline creation error description 2024-09-03 23:28:27 +10:00
Stenzek
a53dc85035 GPUDevice: Fix initial pipeline cache not being created 2024-09-03 22:45:42 +10:00
Stenzek
0458dfe8be MemoryCard: Don't display message for empty card 2024-09-03 21:49:51 +10:00
Stenzek
a7d8e6d018 Host: Add disambiguation variants for translations 2024-09-03 21:39:00 +10:00
Stenzek
060c5553c0 INISettingsInterface: Use FileSystem atomic update routines 2024-09-03 20:43:42 +10:00
Stenzek
87eded4bce FileSystem: Fix FD leak with atomic updated file on Linux
Also add the ability to explicitly commit and check for errors.
2024-09-03 20:43:10 +10:00
Stenzek
1eb1b03141 MemoryCard: Defer creation of card until first save
Also do not overwrite the card if it failed to load.
2024-09-03 20:13:03 +10:00
Stenzek
1446e3035f Settings: Make Disable Interlacing a Deinterlacing mode
Saving that precious vertical space.
2024-09-03 20:02:01 +10:00
Stenzek
94911abdca System: Display disabled enhancements in safe mode 2024-09-03 19:29:59 +10:00
Stenzek
503004f17c Data: Note third-party codecs in AppImage FFmpeg 2024-09-03 19:17:19 +10:00
Stenzek
f9a594058f Settings: Force Frame Timings => Force Video Timing
Also drop from GameDB, an override doesn't make sense here anyway,
due to the low success rate with the enhancement.
2024-09-03 19:06:26 +10:00
Stenzek
8274042bb1 CI/AppImage: Build shrunk ffmpeg for media capture 2024-09-02 21:55:27 +10:00
Stenzek
6d0f92d4fb dep/fmt: Bump to v11.0.2 2024-09-03 17:54:43 +10:00
Stenzek
56dac5f52a Deps: Bump SDL2 to 2.30.7 2024-09-03 17:47:20 +10:00
Stenzek
6a3b1a2725 MDEC: Vectorize 16 and 24-bit copy-out
Speedup of 15% and 6% in FMV playback respectively.
2024-09-02 17:57:26 +10:00
spacepaw
63abdb7afd Reworked the "Force NTSC Timings" feature to support both NTSC and PAL frame timings (#3287) 2024-09-03 10:50:45 +02:00
Stenzek
4c51337edd ImGuiManager: Don't rasterize full glyph range for debug font 2024-09-02 12:37:58 +10:00
Stenzek
164a353352 System: Fix possible race condition in presence update 2024-09-02 12:12:41 +10:00
KamFretoZ
b564f928bd DiscordRPC: Add Rcheevos Icon Support (#3286) 2024-09-01 22:02:28 +07:00
Stenzek
51cfea49fe ImGuiManager: Split OSD and debug window fonts
Fixes the latter not fitting on screen anymore.
2024-09-02 00:27:48 +10:00
Stenzek
0ba068e843 GameDB: Disable PGXP culling in Spyro 1
Otherwise it corrupts memory when looking through portals.
2024-09-02 00:26:12 +10:00
Stenzek
5ed8af4236 Achievements: Shrink URL buffer sizes
They never end up being 512 bytes.
2024-09-01 23:51:16 +10:00
Stenzek
4322799201 dep/rcheevos: Don't silently truncate buffers in rc_api_init_fetch_image_request() 2024-09-01 23:50:06 +10:00
Anderson Cardoso
0945a9a27f Atualização Idioma Turco
Update Turkish to latest.
Validated by a native speaker.
2024-08-29 22:19:14 -03:00
Anderson Cardoso
7b178594a0 Atualização Português do Brasil
Atualizado para última versão.
2024-08-26 18:30:00 -03:00
zkdpower
7f9a69b977 Update the Simple-Chinese translation to latest. (#3282) 2024-09-01 21:27:57 +08:00
Víctor "IlDucci
bee80b0fea Spanish (Spain) translation update 2024/08/30 (#3285)
- Adding translations for the latest changes.
2024-09-01 13:27:46 +00:00
Stenzek
88ee70ef8a Misc: Remove unused files 2024-09-01 23:17:17 +10:00
Stenzek
7f4e5d55db Misc: Update copyright headers 2024-09-01 22:08:31 +10:00
Stenzek
aa955b8ae2 GPU/SW: Split out rasterizer, add dynamic selection 2023-12-23 20:38:41 +10:00
Stenzek
3fbdcdb4ff AudioStream: Rewrite and integrate expander 2024-09-01 13:16:10 +10:00
Stenzek
14ab642ff3 Common: Add aligned_unique_ptr 2024-09-01 13:02:58 +10:00
Stenzek
81c9bdeeef GSVector: Add a bunch of fp64 operations 2024-09-01 12:00:09 +10:00
Stenzek
b84d3f14fc SPU: Vectorize reverb resampling 2024-08-31 17:30:25 +10:00
Stenzek
cdba1fe25a Common: Rename iNN -> sNN 2024-08-31 14:38:20 +10:00
Stenzek
ac139d96f1 CDImage/ECM: Use EDC/ECC functions from libchdr 2024-09-01 19:43:39 +10:00
Stenzek
fe8dada392 dep/libchdr: Add EDC computation functions 2024-09-01 19:43:16 +10:00
Stenzek
7df5764835 Data: Remove license-incompatible shaders 2024-09-01 20:01:34 +10:00
Stenzek
486f410f43 GameDB: Disable WS in Athena - Awakening from the Ordinary Life 2024-08-31 14:37:46 +10:00
Stenzek
63c7f4a893 GPU/HW: Fix assert with accurate blending + true colour on 2024-08-27 23:46:34 +10:00
Stenzek
d651c9f477 GameList: Support excluding disc sets 2024-08-26 21:42:35 +10:00
Stenzek
542ef3a6c0 GPUDevice: Warning fix 2024-08-26 21:37:29 +10:00
Stenzek
667d1bf7c8 GPUDevice: Use CompressHelpers
And compress the pipeline cache. Saves a fair bit of disk space.
2024-08-26 21:33:28 +10:00
Stenzek
f243dc075d Host: Use CompressHelpers for ReadCompressedResourceFile() 2024-08-26 21:33:00 +10:00
Stenzek
c7a6e7e483 SHA1Digest: Span-ify 2024-08-26 21:27:51 +10:00
Stenzek
ae2e79f401 Util: Add CompressHelpers 2024-08-26 21:27:30 +10:00
Stenzek
2c27b20090 ImGuiManager: Remove unused function 2024-08-26 18:53:30 +10:00
Stenzek
63bf64b05d ImGuiOverlays: Use actual recording icon 2024-08-26 18:55:15 +10:00
Stenzek
05c7e6009c InputManager: Don't set key down for binds when ImGui has focus
Fixes unpausing etc when alt-tabbing.
2024-08-26 17:57:28 +10:00
Stenzek
940200f7f3 FullscreenUI: More animation fixes 2024-08-26 17:56:47 +10:00
Stenzek
46a6681159 CDROM: Fix incorrect clamp with seek speedup
And bump the minimum time up around 0.29ms or so, hopefully improve
stability in FF7.
2024-08-26 16:45:23 +10:00
Stenzek
344a4a6215 FullscreenUI: Navigation improvements
Improve default item focus, eliminate some animation glitches.
2024-08-26 15:47:50 +10:00
Stenzek
e54c4c8101 ImGuiManager: Tweak OSD message size 2024-08-26 14:41:58 +10:00
Stenzek
7a05d5aca5 Achievements: Reset focus when opening windows 2024-08-26 14:21:09 +10:00
Stenzek
b04f721d55 Achievements: Use plural form for points 2024-08-26 14:07:07 +10:00
Stenzek
c9f5cfc1bc Host: Add TranslatePluralToSmallString() 2024-08-26 14:06:57 +10:00
Stenzek
88e4bf6aad SmallString: Tidy-up and add wide string helpers 2024-08-26 14:06:18 +10:00
Stenzek
a49be5db7c Data: Update SDL Game Controller DB 2024-08-26 00:35:56 +10:00
Stenzek
48c2760daa dep/rcheevos: rc_validate does not need to be built 2024-08-26 00:35:42 +10:00
Stenzek
0f29cd8d63 Data: Update third-party notices 2024-08-26 00:26:27 +10:00
Stenzek
44471a66f6 dep/imgui: Don't copy the font data on building
For the CJK and SVG fonts, this is a **considerable** memory allocation
and copy, up to 20MB+. We really don't want to be doing this
unnecessarily, since we keep the buffer around anyway.
2024-08-26 00:25:35 +10:00
Stenzek
6deb2eb390 Achievements: Fix badge download bug
Where it would download the incorrect icon if the locked badge was the
first image seen.
2024-08-26 00:15:32 +10:00
Stenzek
5c2fc68755 dep/imgui: Use stb_sprintf 2024-08-26 00:01:18 +10:00
Stenzek
b8026a038c CMake: Remove unused file 2024-08-25 23:39:57 +10:00
Stenzek
a7f3d7b02d ImGuiManager: Add CompactFontRange() 2024-08-25 23:39:14 +10:00
Stenzek
e8b787fb57 Misc: Change various icons 2024-08-25 23:17:05 +10:00
Stenzek
f30844cc40 ImGuiManager: Move glyph ranges to separate file 2024-08-25 22:52:21 +10:00
Stenzek
f37a97bf18 Host: Add ReadCompressedResourceFile() 2024-08-25 17:48:12 +10:00
Stenzek
707453b596 FileSystem: Swap vector for DynamicHeapArray
No point zeroing it out.
2024-08-25 22:13:18 +10:00
Stenzek
a2aa040987 deps/rc_client: Add rc_client_get_rich_presence_strings() 2024-08-25 14:40:54 +10:00
Stenzek
b378ffb975 ImGui: Enable lunasvg 2024-08-25 14:39:59 +10:00
Stenzek
25d8f1be67 Deps: Build lunasvg 2024-08-25 14:39:40 +10:00
Stenzek
f2c0303875 Misc: Use lightgun controller icon 2024-08-25 13:57:05 +10:00
Stenzek
599800dfa1 Deps: Version bumps 2024-08-25 20:53:25 +10:00
Stenzek
c8e61307b2 StringUtil: Use unicode replacement character in DecodeUTF8() 2024-08-25 13:56:01 +10:00
Stenzek
096a0811bf dep/imgui: Bump to v1.91.0 2024-08-25 18:17:45 +10:00
Stenzek
a8cac70ee6 Qt: Ensure window is raised after recreation
Should hopefully help with raw input issues.
2024-08-24 21:28:21 +10:00
Stenzek
41fb5d3d9a CMake: Enable PIC on Linux
Otherwise ASLR does not work. Also stops LTO builds crashing in the
middle of Qt on Fedora.
2024-08-24 18:32:28 +10:00
Stenzek
72fc81a705 CMake: Add install target
Do **not** use this with /usr or /usr/local. It creates subdirectories
for resources/translations in the install prefix.

It's intended for creating a relocatable, self-contained bundle, which
can be packaged.
2024-08-12 18:49:28 +10:00
Stenzek
7745c9ef43 Deps: Make some libraries optional for Linux 2024-08-12 17:29:36 +10:00
Stenzek
873b540b82 Deps: Switch to libjpeg-turbo 2024-08-24 18:08:15 +10:00
Stenzek
96b8e53fbf Deps: Bump shaderc 2024-08-24 18:08:53 +10:00
Anderson Cardoso
1425b2fb40 Atualização Português do Brasil (#3281)
Atualizado para a última versão.
2024-08-24 01:26:20 -03:00
Stenzek
9dd83c4f9f InputManager: Remove unused pointer type 2024-08-24 14:23:32 +10:00
Stenzek
f0deab2131 InputManager: Fix wheel scrolling in Big Picture 2024-08-24 14:15:27 +10:00
Stenzek
bda6869084 Qt: Implement per-game controller configuration 2024-08-24 14:10:25 +10:00
Stenzek
9e3507e0f4 InputManager: Support multiple mice via raw input
Only on Windows for now.
2024-08-23 22:31:59 +10:00
Stenzek
8b3fd538ea System: Fix HW/SW rendering swap 2024-08-23 15:59:31 +10:00
Stenzek
5433b30fec Qt: Always display version info in settings 2024-08-23 15:50:17 +10:00
Stenzek
417c1e43dd MediaCapture: Load media foundation on-demand
Saves loading a few megabytes worth of DLLs for a feature most users are
not going to use.
2024-08-23 15:41:54 +10:00
Stenzek
9a0d5db74f GameDB: Use disable sprite texture filtering for FF7/LoD 2024-08-23 15:20:24 +10:00
Stenzek
1aa9c2d564 GameDatabase: Add DisableSpriteTextureFiltering trait 2024-08-23 15:18:55 +10:00
Stenzek
3578572aa1 CPU/NewRec/x64: Fix data corruption on lwl/lwr with PGXP 2024-08-23 14:33:37 +10:00
Stenzek
ccd7ba9acf Qt: Move language/theme setting to window 2024-08-20 23:27:42 +10:00
Stenzek
5c14ac2fd1 GameDB: Allow clipping correction for Spyro 1
Can't remember why I enabled this in 2020.. maybe NCLIP related? Should
be fine now if so.
2024-08-20 21:56:35 +10:00
Stenzek
2971b2f34c CPU/PGXP: Inline valid flag updates 2024-08-20 21:18:07 +10:00
Stenzek
d4d813f043 CPU/PGXP: Identifier name consistency 2024-08-20 20:43:21 +10:00
Stenzek
dadf388657 CPU/PGXP: Make validate a member function 2024-08-20 21:09:12 +10:00
Stenzek
491179a447 CPU/PGXP: Remove remaining C-isms 2024-08-20 19:12:51 +10:00
Stenzek
a764954977 CPU/PGXP: Eliminate extra copy in SLT/SLTU 2024-08-20 18:35:49 +10:00
Stenzek
8629efc39c CPU/PGXP: Purge macros 2024-08-20 18:33:18 +10:00
Stenzek
514116e6c3 CPU/PGXP: Rewrite SLL handler
Shift flags as well as the values.
2024-08-20 17:24:04 +10:00
Stenzek
bcd2424db3 CPU/PGXP: Combine logical/arithmetic shift functions 2024-08-20 17:23:36 +10:00
Stenzek
3548bbcf90 CPU/PGXP: Combine static/variable shift instructions 2024-08-20 17:18:33 +10:00
Stenzek
2662694c04 CPU/PGXP: Purge psx_value completely 2024-08-20 16:55:24 +10:00
Stenzek
fc375d76b5 CPU/PGXP: Purge psx_value from shifts 2024-08-20 16:42:51 +10:00
Stenzek
302652df22 CPU/PGXP: Purge psx_value from first half of instructions 2024-08-20 16:27:39 +10:00
Stenzek
9a6de196a3 CPU/PGXP: Use Instruction type 2024-08-19 22:22:18 +10:00
Stenzek
7dc78dbcd5 CPU/PGXP: Make MTC2/LWC2 behave the same 2024-08-20 20:06:04 +10:00
Stenzek
64a28aac53 CPU/PGXP: Fix typo in SLTU() 2024-08-20 19:27:26 +10:00
Anderson Cardoso
b656e1d4ca Atualização Português do Brasil (#3280)
Atualizado para a última versão.
2024-08-19 23:09:26 -03:00
Stenzek
b9679dfb0b System: Remove contradictory statement 2024-08-20 12:08:59 +10:00
Stenzek
6dd29eb88f VulkanDevice: Fix incorrect log 2024-08-20 11:54:16 +10:00
Stenzek
b089eaf084 Qt: Reduce dialog height 2024-08-20 11:54:09 +10:00
Stenzek
3455a0d151 System: Fix lockup with runahead enabled 2024-08-20 11:50:52 +10:00
Stenzek
ef59a0da12 CPU: Fix assertion tripping in debug builds 2024-08-19 22:03:07 +10:00
Stenzek
41c8607782 TimingEvents: Don't defer frame done callback 2024-08-19 19:41:14 +10:00
Stenzek
86d4d92753 TimingEvents: Switch to 64-bit counters 2024-08-13 23:52:25 +10:00
Stenzek
1e8ca51f44 Update README.md 2024-08-19 01:46:01 +10:00
Stenzek
a0fcbba45c SPU: Refactor volume envelopes
Properly handle phase inversion. Fixes left channel audio in Wipeout 3.
2024-08-19 01:38:28 +10:00
Stenzek
aa1596fdab GameDB: Set DisableAutoAnalogMode on various games 2024-08-18 20:34:10 +10:00
Stenzek
fda6140088 GameDatabase: Add DisableAutoAnalogMode trait
For games that can handle analog controllers, but the sticks do not do
anything.
2024-08-18 20:33:15 +10:00
Stenzek
aa9a5e383d ImGuiOverlays: Change icon colour depending on controller mode 2024-08-18 20:30:45 +10:00
Stenzek
b2577ef8bd Qt: Work around theme switching bug 2024-08-19 15:11:39 +10:00
Stenzek
304f69e350 CDROM: Fix rare interrupt race when cancelling commands
Fixes hang during loading in Street Fighter Alpha 3.
2024-08-19 15:11:37 +10:00
Stenzek
ee98912a42 SPU: Fix SPU_DUMP_ALL_VOICES option 2024-08-18 15:58:48 +10:00
Stenzek
3175214c92 MediaCapture: Fix MP3 audio encoding 2024-08-18 15:52:54 +10:00
Stenzek
3772706603 System: Look up media capture settings on-demand
No need to store them, save some memory.
2024-08-18 15:52:54 +10:00
Stenzek
e2ea0bfec2 Qt: Fix link colouring in setup wizard 2024-08-18 15:52:54 +10:00
Stenzek
6f9e8efee5 Qt: Fix a couple of theme switching glitches 2024-08-18 15:52:53 +10:00
Stenzek
9d7a3b10c2 Settings: Fix incorrect videos directory 2024-08-18 13:05:47 +10:00
Stenzek
7ac3e2fe50 Settings: Don't create deprecated achievement cache directories 2024-08-18 13:04:14 +10:00
Stenzek
c6d14febd2 System: Log information on startup 2024-08-18 12:50:16 +10:00
Stenzek
b274bf4d57 System: Switch to new capture file on video FPS change 2024-08-18 12:34:25 +10:00
Stenzek
44a12db931 Log: Flush on every write
Slower, but if we crash, need the whole thing.
2024-08-18 12:18:10 +10:00
xujibbs
ce7bbb47d5 FullscreenUI: Make "version" in Big picture translatable (#3279) 2024-08-18 12:16:18 +10:00
Stenzek
052930a8d8 System: Fix reset with Type 2 fastboot 2024-08-18 12:13:57 +10:00
Stenzek
681fab5da3 Qt: Update glyph ranges 2024-08-17 22:18:41 +10:00
zkdpower
823ce581d9 update Simple-Chinese translation to latest. (#3278) 2024-08-17 22:18:10 +10:00
Anderson Cardoso
7810c95962 Atualização Português do Brasil (#3277)
Atualizado para a última versão
2024-08-17 22:17:59 +10:00
Stenzek
add46248a3 Qt: Fix list focus restoration after system shutdown 2024-08-17 22:13:33 +10:00
Stenzek
2f5aa45e1f SPU: Fix incorrect envelope rate 2024-08-16 21:39:33 +10:00
Stenzek
2e2451998c Misc: Fix ARM32 build (again) 2024-08-14 21:39:29 +10:00
Stenzek
460acce561 MDEC: Ensure alignment of inputs 2024-08-14 21:39:04 +10:00
Stenzek
f2896d55b8 RegTest: Report performance stats on exit 2024-08-14 21:39:04 +10:00
Stenzek
159254c37a RegTest: Fix OOB array read 2024-08-14 21:39:04 +10:00
Bobby Smith
0f03aa3e30 GameDB: Fix Starblade Alpha JPN hash (#3276) 2024-08-14 21:38:34 +10:00
Stenzek
f5815f3183 ImGuiFullscreen: Display checkmark on right of choice dialog 2024-08-13 18:09:30 +10:00
Stenzek
05f9f33ec6 ImGuiFullscreen: Fix choice popup selected drawing over border 2024-08-13 18:09:30 +10:00
Stenzek
7756c5a5e9 Qt: Fix log window mouse interaction 2024-08-13 18:09:30 +10:00
Stenzek
13a37418e6 FullscreenUI: Fix popup close resetting window scroll 2024-08-13 18:09:30 +10:00
Stenzek
f99d5ff39d FullscreenUI: Fix saving of list options (e.g. controller settings) 2024-08-13 18:09:30 +10:00
Renzo Pigliacampo
0af2c01a18 Updated Spanish (Latin America) translation (#3275) 2024-08-13 15:11:10 +10:00
Stenzek
09cdd986b9 Qt: Clarify BIOS support in setup wizard 2024-08-13 15:10:24 +10:00
Stenzek
a6ba2b5e20 BIOS: Prioritize image enumeration
Launch console BIOS is de-prioritized due to bugs.
Late PAL is de-prioritized due to additional regional checks that break import booting without fast boot.
PS2 is de-prioritized due to requiring a dynamic fast boot patch.
PS2 PAL is further de-prioritized due to additonal region checks.
2024-08-13 15:09:13 +10:00
Stenzek
34e0752b65 GameDB: Add hash for Starblade Alpha (Japan) 2024-08-13 14:49:41 +10:00
Stenzek
421bd23dc8 Bus: Add stub for SIO2 accesses
But only enable it when using a PS2 BIOS. I could put the check in the
handler registration, but realistically this is basically never going to
be called, so better to keep things simple.
2024-08-13 14:48:18 +10:00
Stenzek
e96320daf0 BIOS: Add Type 2 fastboot patch (PS2) 2024-08-13 14:47:40 +10:00
Stenzek
cbbfc2f11a StringUtil: Add BytePatternSearch() 2024-08-13 14:47:11 +10:00
Stenzek
9e09f53566 Core: Add constexpr MIPS Encoder
From https://raw.githubusercontent.com/grumpycoders/pcsx-redux/main/src/mips/common/util/encoder.hh
2024-08-13 14:46:42 +10:00
Stenzek
71738d12e0 GPU: Clear RT before sending to media capture
Fixes junk in inactive areas on Mac.
2024-08-12 22:17:45 +10:00
Stenzek
f48d3b4636 CMake: Copy FFmpeg dylibs into Mac bundle 2024-08-12 22:17:45 +10:00
Stenzek
5786f3a8c9 System: Fix loading state without media 2024-08-12 21:22:32 +10:00
Anderson Cardoso
3e708d066c Atualização Português do Brasil (#3274)
Atualizado:

-Diretório de Pastas
-Janela principal
-Sitema/BIOS
-Atalhos

Novo:
-Opções de gravação
-Media e captura

Corrigido:
-Textto e consistência
2024-08-12 21:22:23 +10:00
Stenzek
e8693ed10f README: Various corrections/updates 2024-08-12 17:09:56 +10:00
Stenzek
da1fb4c09e Data: Update SDL game controller database 2024-08-12 17:07:26 +10:00
Stenzek
da4b5df656 MediaCapture: Add FFmpeg backend 2024-08-12 16:29:03 +10:00
Stenzek
d5b6d35d3e dep: Add FFmpeg v7.0.2 headers 2024-08-12 16:29:03 +10:00
Stenzek
ee07e9e0f1 Hotkeys: Move Toggle Media Capture to General 2024-08-12 16:29:03 +10:00
Stenzek
8ad912c340 MediaCapture: Handle BGRA for MediaFoundation 2024-08-12 15:20:32 +10:00
Stenzek
422a0a0ead MediaCapture: Fix OpenGL capture 2024-08-12 14:48:21 +10:00
Stenzek
c30c4a5d0a GPU: Fix possible race in screenshot 2024-08-12 14:48:21 +10:00
Stenzek
9a58327cf2 GPU: Vectorize VRAM fills 2024-08-12 00:20:53 +10:00
Stenzek
5d84185240 GameDB: Slightly bump up DMA rate for Chrono Cross
Don't want to run it too slow, and the recent changes seem to allow us
to go to ~33 or so before it breaks.
2024-08-11 23:50:37 +10:00
Stenzek
78398f82fd GameDB: Battle Athletess - Daiundoukai GTO
Requires accurate DMA timing, otherwise the GPU backpressure does not
slow down the frame rate enough, and cutscenes run at twice speed.
2024-08-11 23:50:37 +10:00
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
5f8082734e VulkanDevice: Fix download inside render pass 2024-08-11 20:44:16 +10:00
Stenzek
290c44f4c0 Error: Add TakeDescription() 2024-08-11 20:43:13 +10:00
Stenzek
8295fd9c3a GPUDevice: Fix debug assertion tripping in Vulkan 2024-08-10 14:05:30 +10:00
Stenzek
b72e622ae0 CubebAudioStream: Remove leftover field 2024-08-10 13:15:55 +10:00
Stenzek
34df233a95 VulkanDevice: Enable VK_KHR_maintenance4 and 5 2024-08-10 12:33:01 +10:00
Stenzek
010c7dea33 dep: Bump vk_mem_alloc to 871913d 2024-08-10 12:21:51 +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
76f6eafdbc Qt: Fix folder selection title bar 2024-08-10 00:14:01 +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
5368a1dcba CI/AppImage: Work around broken AppImageLauncher 2024-08-09 18:19:17 +10:00
Anderson Cardoso
624ab4d377 Atualização Português do Brasil (#3273)
Atualização Português do Brasil 

	Atualizado:

- Opções de compressão
- Configurações avançadas
- Modo tela cheia e Interface de usuário

	Correção:
- Erros de digitação
2024-08-09 12:36:24 +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
8ad133dbc0 FileSystem: Fix crash on file open fail in WriteAtomicRenamedFile() 2024-08-09 12:36:21 +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
81295c8a7d FileSystem: Correctly use lstat() on Linux 2024-08-06 15:52:26 +10:00
Stenzek
3a08ad1840 Qt: Purge some unused debug menu options 2024-08-06 15:32:40 +10:00
Stenzek
efc821bc84 VulkanDevice: Fix incorrect condition in UnbindTexture() 2024-08-06 15:32:40 +10:00
Stenzek
cabba81a76 CI/Flatpak: Switch from JSON -> YAML
Actually lets me have comments...
2024-08-06 15:32:40 +10:00
Stenzek
0517aef5bd CDROM: Don't allow deferred INT1 after Pause ACK 2024-08-06 13:34:11 +10:00
Stenzek
e499f9052a MemMap: Fix inverted condition 2024-08-05 13:08:42 +10:00
Anderson Cardoso
2fb5e4495d Atualização Português do Brasil (#3272)
Atualizado para a última versão.
2024-08-05 12:55:52 +10:00
Stenzek
6c5ffba18e MemMap: Fix object leak on fallocate() failure 2024-08-05 12:39:17 +10:00
Stenzek
79bb5f079c GPUDevice: Fix SPIRV-Cross load error on Mac 2024-08-05 01:12:17 +10:00
Stenzek
d862043f1d CMake: Fill version in bundle info plist 2024-08-05 00:59:31 +10:00
Stenzek
6e795c8977 CMake: Fix duplicate SPIRV-Cross library on MacOS 2024-08-05 00:05:03 +10:00
Stenzek
c23ea4b2ad CI/AppImage: Pin versions 2024-08-04 23:13:57 +10:00
Stenzek
35dd4fde36 Qt: Fix incorrect list access for async cover load 2024-08-04 22:48:10 +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
59a1cca858 dep/rcheevos: Bump to v11.5.0 + local changes
https://github.com/stenzek/rcheevos
2024-08-04 17:08:29 +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
1646 changed files with 469594 additions and 434111 deletions

View File

@@ -1,94 +0,0 @@
name: Bug report
description: Report a bug in DuckStation
body:
- type: markdown
attributes:
value: |
**Please read before creating a new bug report:**
1. Make sure there is not already an issue for this bug by [searching in **both** open and closed issues](https://github.com/stenzek/duckstation/issues?q=is%3Aissue+sort%3Aupdated-desc+).
2. All enhancements **must** be off. To quickly disable all enhancements with affecting your normal configuration, you can check **Disable All Enhancements** in Advanced Options.
3. All advanced options **must** be at their default values.
4. No cheats may be active. If you were using cheats, they should be disabled, and the game must be rebooted before reporting the bug.
5. Do not share save state files. (Sharing memory card files is OK.)
6. Verify your BIOS and game dumps, as we can not assist with issues resulting from bad dumps.
7. If playing PAL region software, please check whether or not the game has LibCrypt protection. If it does, make sure you have a [correct SBI file](https://github.com/stenzek/duckstation#libcrypt-protection-and-sbi-files).
8. Please post your bug report in English, as this is the only language spoken by the developers. The [Discord server](https://discord.gg/Buktv3t) has many helpful people if you need help translating.
9. Issues about the libretro core will be deleted (you will be blocked from the repository if you create such an issue). That core is not DuckStation, it is a broken fork, and has nothing to do with us.
- type: input
attributes:
label: Game details
description: |
Specify the game's serial code, full name and region (USA, Europe, Japan).
placeholder: SLUS-00404 Ace Combat 2 (USA)
validations:
required: true
- type: textarea
attributes:
label: Description of the issue/bug
description: |
Describe what you are seeing and/or hearing during gameplay. What doesn't work, and how do you expect it to work instead?
You can include images or videos with drag and drop, and format code blocks or logs with <code>```</code> tags.
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: |
Try to provide as much detail as possible to reproduce the issue.
Having reproducible issues is a *prerequisite* for contributors to be able to solve them.
validations:
required: true
- type: input
attributes:
label: Software and hardware information
description: |
For desktops and laptops, specify your OS version, CPU and graphics card information (model and driver version).
For mobile devices, specify your OS version and device model name.
placeholder: Windows 10, Intel Core i7-7500U, Intel HD Graphics 620 (27.20.100.9616)
validations:
required: true
- type: input
attributes:
label: DuckStation version
description: |
Specify your DuckStation version and how you installed it (GitHub Releases, GitHub Actions, compiled from source, …).
validations:
required: true
- type: dropdown
attributes:
label: DuckStation rendering backend
description: |
Specify the DuckStation rendering backend you were using when reporting this issue.
If you can reproduce this issue using more than one rendering backend, mention it in the **Description of the issue/bug** section above.
When reporting a graphics-related issue, please test all the rendering backends you can before submitting the issue.
options:
- Software
- Direct3D 11
- Direct3D 12
- OpenGL
- Vulkan
validations:
required: true
- type: input
attributes:
label: DuckStation controller backend, drivers and wrappers
description: |
Which controller backend are you using in DuckStation's General Settings?
Have you installed any drivers or wrappers on your system, or do you have any programs like Steam open?
If so, specify which drivers/wrappers you are using.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: |
Add any other context about the problem here.

View File

@@ -1,10 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Game compatibility list
url: https://docs.google.com/spreadsheets/d/1H66MxViRjjE5f8hOl5RQmF5woS1murio2dsLn14kEqo/edit
about: Please refer to the game compatibility list before opening an issue.
- name: Discord server
- url: https://discord.gg/Buktv3t
- about: Please ask support questions on the Discord server, not here.

View File

@@ -1,43 +0,0 @@
name: Feature request
description: Request a feature to be added or improved in DuckStation
body:
- type: markdown
attributes:
value: |
**Please read before creating a new feature request:**
1. Make sure there is not already an issue for this feature request by [searching in **both** open and closed issues](https://github.com/stenzek/duckstation/issues?q=is%3Aissue+sort%3Aupdated-desc+).
2. Please open **one issue per requested feature**. Do not cram several unrelated feature requests in a single issue, as this makes it harder for contributors to track what's being worked on.
3. Please post your feature request in English, as this is the only language spoken by the developers. The [Discord server](https://discord.gg/Buktv3t) has many helpful people if you need help translating.
4. Issues about the libretro core will be deleted (you will be blocked from the repository if you create such an issue). That core is not DuckStation, it is a broken fork, and has nothing to do with us.
- type: textarea
attributes:
label: Problem statement
description: |
Is your feature request related to a problem? Please describe.
placeholder: Example - "I'm always frustrated when […]"
validations:
required: true
- type: textarea
attributes:
label: Proposed solution
description: |
A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Alternatives considered
description: |
Describe alternatives you've considered.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: |
Add any other context about the problem or proposed feature here.

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- 'data/resources/gamedb.yaml'
- 'data/resources/discsets.yaml'
- 'data/resources/discdb.yaml'
push:
branches:
@@ -11,17 +12,19 @@ on:
- dev
paths:
- 'data/resources/gamedb.yaml'
- 'data/resources/discsets.yaml'
- 'data/resources/discdb.yaml'
workflow_dispatch:
permissions:
contents: read
jobs:
gamedb-lint:
runs-on: ubuntu-22.04
runs-on: ubuntu-slim
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- uses: actions/checkout@v6
- name: Install Packages
shell: bash
@@ -33,6 +36,10 @@ jobs:
shell: bash
run: yamllint -c extras/yamllint-config.yaml -s -f github data/resources/gamedb.yaml
- name: Check Disc Sets
shell: bash
run: yamllint -c extras/yamllint-config.yaml -s -f github data/resources/discsets.yaml
- name: Check DiscDB
shell: bash
run: yamllint -c extras/yamllint-config.yaml -s -f github data/resources/discdb.yaml

View File

@@ -0,0 +1,84 @@
name: 🐧 Linux AppImage
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
linux-appimage-build:
name: "${{ matrix.name }}"
runs-on: ubuntu-22.04
timeout-minutes: 240
strategy:
matrix:
include:
- name: "x64"
asset: "DuckStation-x64.AppImage"
artifact: "linux-x64-appimage"
cmakeoptions: ""
- name: "x64 SSE2"
asset: "DuckStation-x64-SSE2.AppImage"
artifact: "linux-x64-sse2-appimage"
cmakeoptions: "-DDISABLE_SSE4=ON"
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install Packages
run: scripts/packaging/appimage/install-packages.sh
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v5
with:
path: ~/deps
key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-ffmpeg-linux.sh', 'scripts/deps/versions') }}
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
- name: Build FFmpeg
if: steps.cache-deps.outputs.cache-hit != 'true'
run: scripts/deps/build-ffmpeg-linux.sh "$HOME/deps"
- name: Tag as Preview Release
if: github.ref == 'refs/heads/master'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "preview"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Tag as Stable Release
if: github.ref == 'refs/heads/dev'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "latest"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Download Patch Archives
shell: bash
run: |
cd data/resources
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"
- name: Compile Build
shell: bash
run: |
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmakeoptions }} -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
cmake --build . --parallel
cd ..
scripts/packaging/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps "${{ matrix.asset }}"
- name: Upload AppImage
uses: actions/upload-artifact@v6
with:
name: "${{ matrix.artifact }}"
path: "${{ matrix.asset }}"

View File

@@ -0,0 +1,100 @@
name: 🐧 Linux Cross-Compiled AppImage
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: "${{ matrix.arch }}"
strategy:
fail-fast: true
matrix:
arch: ["arm64", "armhf"]
runs-on: ubuntu-22.04
container:
image: ghcr.io/duckstation/cross-build-${{ matrix.arch }}:latest
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v5
with:
path: ~/deps
key: deps-cross ${{ matrix.arch }} ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-dependencies-linux-cross.sh', 'scripts/deps/versions') }}
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: |
scripts/deps/build-dependencies-linux.sh -skip-cleanup "$HOME/deps/host"
scripts/deps/build-dependencies-linux-cross.sh -skip-download "$HOME/deps/host" "${{ matrix.arch }}" "/${{ matrix.arch }}-chroot" "$HOME/deps/cross"
# Work around container ownership issue
- name: Set Safe Directory
shell: bash
run: git config --global --add safe.directory "*"
- name: Create Binary Aliases
run: |
ln -s llvm-strip-19 /usr/bin/llvm-strip
- name: Set Up Toolchain File
run: |
cp "$HOME/deps/cross/toolchain.cmake" "$HOME/toolchain.cmake"
echo 'set(CMAKE_C_COMPILER clang-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_C_COMPILER_AR llvm-ar-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_C_COMPILER_RANLIB llvm-ranlib-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_CXX_COMPILER clang++-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_CXX_COMPILER_AR llvm-ar-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_CXX_COMPILER_RANLIB llvm-ranlib-19)' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld")' >> "$HOME/toolchain.cmake"
echo 'set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")' >> "$HOME/toolchain.cmake"
- name: Tag as Preview Release
if: github.ref == 'refs/heads/master'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "preview"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Tag as Stable Release
if: github.ref == 'refs/heads/dev'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "latest"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Download Patch Archives
shell: bash
run: |
cd data/resources
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"
- name: Generate CMake
shell: bash
run: |
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_TOOLCHAIN_FILE="$HOME/toolchain.cmake" -DCMAKE_PREFIX_PATH="$HOME/deps/cross" -DLCONVERT_EXE="$HOME/deps/host/bin/lconvert" -DHOST_MIN_PAGE_SIZE=4096 -DHOST_MAX_PAGE_SIZE=16384 -DHOST_CACHE_LINE_SIZE=64 -DBUILD_QT_FRONTEND=ON -DBUILD_MINI_FRONTEND=ON
- name: Compile Build
shell: bash
run: |
cmake --build build --parallel
scripts/packaging/appimage/make-cross-appimage.sh duckstation-qt ${{ matrix.arch }} "$(realpath build)" "$HOME/deps/cross" "/${{ matrix.arch }}-chroot"
scripts/packaging/appimage/make-cross-appimage.sh -inject-libc duckstation-mini ${{ matrix.arch }} "$(realpath build)" "$HOME/deps/cross" "/${{ matrix.arch }}-chroot"
- name: Upload AppImages
uses: actions/upload-artifact@v6
with:
name: "linux-${{ matrix.arch }}-appimage"
path: "DuckStation-*.AppImage"

74
.github/workflows/macos-build.yml vendored Normal file
View File

@@ -0,0 +1,74 @@
name: 🍎 MacOS
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
macos-build:
name: "Universal"
runs-on: macos-15
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Use Xcode 26
run: sudo xcode-select -s /Applications/Xcode_26.0.app
- name: Download Metal Toolchain
run: xcodebuild -downloadComponent MetalToolchain
- name: Cache Dependencies
id: cache-deps-mac
uses: actions/cache@v5
with:
path: ~/deps
key: deps-mac ${{ hashFiles('scripts/deps/build-dependencies-mac.sh', 'scripts/deps/versions') }}
- name: Build Dependencies
if: steps.cache-deps-mac.outputs.cache-hit != 'true'
run: scripts/deps/build-dependencies-mac.sh "$HOME/deps"
- name: Tag as Preview Release
if: github.ref == 'refs/heads/master'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "preview"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Tag as Stable Release
if: github.ref == 'refs/heads/dev'
run: |
echo '#pragma once' > src/scmversion/tag.h
echo '#define UPDATER_RELEASE_CHANNEL "latest"' >> src/scmversion/tag.h
echo '#define UPDATER_RELEASE_IS_OFFICIAL 1' >> src/scmversion/tag.h
- name: Download Patch Archives
shell: bash
run: |
cd data/resources
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"
- name: Compile and Zip .app
shell: bash
run: |
mkdir build
cd build
export MACOSX_DEPLOYMENT_TARGET=13.3
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENGL=OFF -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -G Ninja ..
cmake --build . --parallel
mv bin/DuckStation.app .
codesign -s - --deep -f -v DuckStation.app
zip -9 -r duckstation-mac-release.zip DuckStation.app/
- name: Upload MacOS .app
uses: actions/upload-artifact@v6
with:
name: "macos"
path: "build/duckstation-mac-release.zip"

97
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Automated Builds
on:
workflow_dispatch:
pull_request:
paths-ignore:
- '**.md'
- 'appveyor.yml'
- 'extras/yamllint-config.yaml'
- 'scripts/*'
push:
branches:
- master
- dev
paths-ignore:
- '**.md'
- 'appveyor.yml'
- 'extras/yamllint-config.yaml'
- 'scripts/*'
permissions:
contents: write
jobs:
windows:
name: 💻 Windows
uses: "./.github/workflows/windows-build.yml"
linux-appimage:
name: 🐧 Linux AppImage
uses: "./.github/workflows/linux-appimage-build.yml"
linux-cross-appimage:
name: 🐧 Linux Cross-Compiled AppImage
uses: "./.github/workflows/linux-cross-appimage-build.yml"
macos:
name: 🍎 MacOS
uses: "./.github/workflows/macos-build.yml"
create-release:
name: 📤 Create Release
needs: [windows, linux-appimage, linux-cross-appimage, macos]
runs-on: ubuntu-22.04
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
steps:
- name: Download Artifacts
uses: actions/download-artifact@v7
with:
path: ./artifacts/
merge-multiple: true
- name: Display Downloaded Artifacts
run: find ./artifacts/ -type f | sort
- name: Create Preview Release
if: github.ref == 'refs/heads/master'
uses: marvinpinto/action-automatic-releases@d68defdd11f9dcc7f52f35c1b7c236ee7513bcc1
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "preview"
prerelease: true
title: "Latest Preview Build"
files: |
./artifacts/duckstation-windows-x64-release.zip
./artifacts/duckstation-windows-x64-release-symbols.zip
./artifacts/duckstation-windows-x64-sse2-release.zip
./artifacts/duckstation-windows-x64-sse2-release-symbols.zip
./artifacts/duckstation-windows-arm64-release.zip
./artifacts/duckstation-windows-arm64-release-symbols.zip
./artifacts/DuckStation-x64.AppImage
./artifacts/DuckStation-x64-SSE2.AppImage
./artifacts/DuckStation-arm64.AppImage
./artifacts/DuckStation-Mini-arm64.AppImage
./artifacts/DuckStation-armhf.AppImage
./artifacts/DuckStation-Mini-armhf.AppImage
./artifacts/duckstation-mac-release.zip
- name: Create Rolling Release
if: github.ref == 'refs/heads/dev'
uses: marvinpinto/action-automatic-releases@d68defdd11f9dcc7f52f35c1b7c236ee7513bcc1
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
prerelease: false
title: "Latest Rolling Release"
files: |
./artifacts/duckstation-windows-x64-release.zip
./artifacts/duckstation-windows-x64-release-symbols.zip
./artifacts/duckstation-windows-x64-sse2-release.zip
./artifacts/duckstation-windows-x64-sse2-release-symbols.zip
./artifacts/duckstation-windows-arm64-release.zip
./artifacts/duckstation-windows-arm64-release-symbols.zip
./artifacts/DuckStation-x64.AppImage
./artifacts/DuckStation-x64-SSE2.AppImage
./artifacts/DuckStation-arm64.AppImage
./artifacts/DuckStation-Mini-arm64.AppImage
./artifacts/DuckStation-armhf.AppImage
./artifacts/DuckStation-Mini-armhf.AppImage
./artifacts/duckstation-mac-release.zip

View File

@@ -1,445 +0,0 @@
name: Create rolling release
on:
pull_request:
paths-ignore:
- '**.md'
- 'appveyor.yml'
- 'scripts/*'
- '.github/ISSUE_TEMPLATE/*'
push:
branches:
- master
- dev
paths-ignore:
- '**.md'
- 'appveyor.yml'
- 'scripts/*'
- '.github/ISSUE_TEMPLATE/*'
workflow_dispatch:
jobs:
windows-build:
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v4.0.2
with:
path: |
dep/msvc/deps-arm64
dep/msvc/deps-x64
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
- name: Build X64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-x64.bat
- name: Build ARM64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-arm64.bat
- name: Initialize build tag
shell: cmd
run: |
echo #pragma once > src/scmversion/tag.h
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
shell: cmd
run: |
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-release.zip" >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h
- name: Tag as dev build
if: github.ref == 'refs/heads/dev'
shell: cmd
run: |
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-release.zip" >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h
- name: Update RC version fields
shell: cmd
run: |
cd src\scmversion
call update_rc_version.bat
cd ..\..
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
- name: Compile x64 release build
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
msbuild duckstation.sln -t:Build -p:Platform=x64;Configuration=ReleaseLTCG-Clang
- name: Create x64 symbols archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-release-symbols.zip ./bin/x64/*.pdb
- name: Remove extra bloat before archiving
shell: cmd
run: |
del /Q bin\x64\*.pdb bin\x64\*.exp bin\x64\*.lib bin\x64\*.iobj bin\x64\*.ipdb bin\x64\common-tests*
rename bin\x64\updater-x64-ReleaseLTCG.exe updater.exe
- name: Create x64 release archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-release.zip ./bin/x64/*
- name: Upload x64 release artifact
uses: actions/upload-artifact@v4.3.3
with:
name: "windows"
path: "duckstation-windows-x64-release*.zip"
windows-arm64-build:
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
submodules: true
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v4.0.2
with:
path: |
dep/msvc/deps-arm64
dep/msvc/deps-x64
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
- name: Build X64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-x64.bat
- name: Build ARM64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-arm64.bat
- name: Initialize build tag
shell: cmd
run: |
echo #pragma once > src/scmversion/tag.h
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
shell: cmd
run: |
echo #define SCM_RELEASE_ASSET "duckstation-windows-arm64-release.zip" >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h
- name: Tag as dev build
if: github.ref == 'refs/heads/dev'
shell: cmd
run: |
echo #define SCM_RELEASE_ASSET "duckstation-windows-arm64-release.zip" >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h
- name: Update RC version fields
shell: cmd
run: |
cd src\scmversion
call update_rc_version.bat
cd ..\..
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
- name: Compile arm64 release build
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64
msbuild duckstation.sln -t:Build -p:Platform=ARM64;Configuration=ReleaseLTCG-Clang
- name: Create arm64 symbols archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-arm64-release-symbols.zip ./bin/ARM64/*.pdb
- name: Remove extra bloat before archiving
shell: cmd
run: |
del /Q bin\ARM64\*.pdb bin\ARM64\*.exp bin\ARM64\*.lib bin\ARM64\*.iobj bin\ARM64\*.ipdb bin\ARM64\common-tests*
rename bin\ARM64\updater-ARM64-ReleaseLTCG.exe updater.exe
- name: Create arm64 release archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-arm64-release.zip ./bin/ARM64/*
- name: Upload arm64 release artifact
uses: actions/upload-artifact@v4.3.3
with:
name: "windows-arm64"
path: "duckstation-windows-arm64-release*.zip"
linux-build:
runs-on: ubuntu-22.04
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
- name: Install packages
shell: bash
run: |
# Workaround for https://github.com/actions/runner-images/issues/675
scripts/retry.sh wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo scripts/retry.sh apt-add-repository -n 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main'
sudo scripts/retry.sh apt-get update &&
sudo scripts/retry.sh apt-get -y install \
build-essential clang-17 cmake curl extra-cmake-modules git libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdecor-0-dev libegl-dev libevdev-dev \
libfontconfig-dev libfreetype-dev libfuse2 libgtk-3-dev libgudev-1.0-dev libharfbuzz-dev libinput-dev libopengl-dev libpipewire-0.3-dev libpulse-dev \
libssl-dev libudev-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor-dev libxcb-damage0-dev libxcb-glx0-dev \
libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev \
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinput-dev libxcb-xkb-dev libxext-dev libxkbcommon-x11-dev libxrandr-dev lld-17 \
llvm-17 ninja-build patchelf pkg-config zlib1g-dev
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v4.0.2
with:
path: ~/deps
key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh') }}
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
- name: Initialize build tag
run: |
echo '#pragma once' > src/scmversion/tag.h
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
run: |
echo '#define SCM_RELEASE_ASSET "DuckStation-x64.AppImage"' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
- name: Tag as dev build
if: github.ref == 'refs/heads/dev'
run: |
echo '#define SCM_RELEASE_ASSET "DuckStation-x64.AppImage"' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
- name: Compile build
shell: bash
run: |
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
cmake --build . --parallel
cd ..
scripts/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps DuckStation-x64
- name: Upload Qt AppImage
uses: actions/upload-artifact@v4.3.3
with:
name: "linux-x64-appimage-qt"
path: "DuckStation-x64.AppImage"
linux-flatpak-build:
runs-on: ubuntu-22.04
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.7
options: --privileged
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
set-safe-directory: ${{ env.GITHUB_WORKSPACE }}
# Work around container ownership issue
- name: Set Safe Directory
shell: bash
run: git config --global --add safe.directory "*"
- name: Initialize build tag
run: |
echo '#pragma once' > src/scmversion/tag.h
- name: Generate AppStream XML
run: |
scripts/generate-metainfo.sh scripts/flatpak
cat scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
- name: Validate AppStream XML
run: flatpak-builder-lint appstream scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
- name: Validate manifest
run: flatpak-builder-lint manifest scripts/flatpak/org.duckstation.DuckStation.json
- name: Build Flatpak
uses: flathub-infra/flatpak-github-actions/flatpak-builder@23796715b3dfa4c86ddf50cf29c3cc8b3c82dca8
with:
bundle: duckstation-x64.flatpak
upload-artifact: false
manifest-path: scripts/flatpak/org.duckstation.DuckStation.json
arch: x86_64
build-bundle: true
verbose: true
mirror-screenshots-url: https://dl.flathub.org/media
branch: stable
cache: true
restore-cache: true
cache-key: flatpak-x64-${{ hashFiles('scripts/flatpak/**/*.json') }}
- name: Push to Flathub stable
if: github.ref == 'refs/heads/dev'
uses: flathub-infra/flatpak-github-actions/flat-manager@b6c92176b7f578aedd80cac74cd8f0336f618e89
with:
flat-manager-url: https://hub.flathub.org/
repository: stable
token: ${{ secrets.FLATHUB_STABLE_TOKEN }}
build-log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
- name: Validate build
run: |
flatpak-builder-lint repo repo
- name: Upload Flatpak
uses: actions/upload-artifact@v4.3.3
with:
name: "linux-flatpak"
path: "duckstation-x64.flatpak"
macos-build:
runs-on: macos-14
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
- name: Use Xcode 15.4
run: sudo xcode-select -s /Applications/Xcode_15.4.app
- name: Install packages
shell: bash
run: |
brew install curl ninja
- name: Cache Dependencies
id: cache-deps-mac
uses: actions/cache@v4.0.2
with:
path: ~/deps
key: deps-mac ${{ hashFiles('scripts/deps/build-dependencies-mac.sh') }}
- name: Build Dependencies
if: steps.cache-deps-mac.outputs.cache-hit != 'true'
run: scripts/deps/build-dependencies-mac.sh "$HOME/deps"
- name: Initialize build tag
run: |
echo '#pragma once' > src/scmversion/tag.h
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
run: |
echo '#define SCM_RELEASE_ASSET "duckstation-mac-release.zip"' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
- name: Tag as dev build
if: github.ref == 'refs/heads/dev'
run: |
echo '#define SCM_RELEASE_ASSET "duckstation-mac-release.zip"' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
- name: Compile and zip .app
shell: bash
run: |
mkdir build
cd build
export MACOSX_DEPLOYMENT_TARGET=11.0
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENGL=OFF -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -G Ninja ..
cmake --build . --parallel
mv bin/DuckStation.app .
codesign -s - --deep -f -v DuckStation.app
zip -r duckstation-mac-release.zip DuckStation.app/
- name: Upload macOS .app
uses: actions/upload-artifact@v4.3.3
with:
name: "macos"
path: "build/duckstation-mac-release.zip"
create-release:
needs: [windows-build, windows-arm64-build, linux-build, linux-flatpak-build, macos-build]
runs-on: ubuntu-22.04
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4.1.7
with:
path: ./artifacts/
- name: Display Downloaded Artifacts
run: find ./artifacts/
- name: Create preview release
if: github.ref == 'refs/heads/master'
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "preview"
prerelease: true
title: "Latest Preview Build"
files: |
./artifacts/windows/duckstation-windows-x64-release.zip
./artifacts/windows/duckstation-windows-x64-release-symbols.zip
./artifacts/windows-arm64/duckstation-windows-arm64-release.zip
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
./artifacts/linux-x64-appimage-qt/DuckStation-x64.AppImage
./artifacts/linux-flatpak/duckstation-x64.flatpak
./artifacts/macos/duckstation-mac-release.zip
- name: Create dev release
if: github.ref == 'refs/heads/dev'
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
prerelease: false
title: "Latest Rolling Release"
files: |
./artifacts/windows/duckstation-windows-x64-release.zip
./artifacts/windows/duckstation-windows-x64-release-symbols.zip
./artifacts/windows-arm64/duckstation-windows-arm64-release.zip
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
./artifacts/linux-x64-appimage-qt/DuckStation-x64.AppImage
./artifacts/linux-flatpak/duckstation-x64.flatpak
./artifacts/macos/duckstation-mac-release.zip

31
.github/workflows/translation-lint.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Translation Lint
on:
pull_request:
paths:
- 'src/duckstation-qt/translations/*.ts'
push:
branches:
- master
- dev
paths:
- 'src/duckstation-qt/translations/*.ts'
workflow_dispatch:
permissions:
contents: read
jobs:
translation-lint:
runs-on: ubuntu-slim
timeout-minutes: 120
steps:
- uses: actions/checkout@v6
# Meh, can't be bothered to work out exactly which one was modified, just check them all.
- name: Check Translation Placeholders
shell: bash
run: |
for i in src/duckstation-qt/translations/*.ts; do
python scripts/verify_translation_placeholders.py "$i"
done

View File

@@ -3,23 +3,26 @@ name: Upload Caches
on:
workflow_dispatch:
permissions:
contents: read
jobs:
upload-windows-cache:
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.6
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v4.0.2
uses: actions/cache@v5
with:
path: |
dep/msvc/deps-arm64
dep/msvc/deps-x64
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat', 'scripts/deps/versions') }}
- name: Zip Cache Files
if: steps.cache-deps.outputs.cache-hit == 'true'
@@ -30,7 +33,7 @@ jobs:
- name: Upload Cache Files
if: steps.cache-deps.outputs.cache-hit == 'true'
uses: actions/upload-artifact@v4.3.3
uses: actions/upload-artifact@v6
with:
name: "windows"
path: "deps-*.zip"

125
.github/workflows/windows-build.yml vendored Normal file
View File

@@ -0,0 +1,125 @@
name: 💻 Windows
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
windows-build:
name: "${{ matrix.name }}"
runs-on: windows-2022
timeout-minutes: 240
strategy:
matrix:
include:
- name: "x64"
arch: "x64"
vcvars: "x64"
config: "ReleaseLTCG-Clang"
platform: "x64"
bindir: "x64"
assetname: "duckstation-windows-x64-release.zip"
updatername: "updater-x64-ReleaseLTCG.exe"
- name: "x64 SSE2"
arch: "x64-sse2"
vcvars: "x64"
config: "ReleaseLTCG-Clang-SSE2"
platform: "x64"
bindir: "x64"
assetname: "duckstation-windows-x64-sse2-release.zip"
updatername: "updater-x64-ReleaseLTCG-SSE2.exe"
- name: "ARM64"
arch: "arm64"
vcvars: "amd64_arm64"
config: "ReleaseLTCG-Clang"
platform: "ARM64"
bindir: "ARM64"
assetname: "duckstation-windows-arm64-release.zip"
updatername: "updater-ARM64-ReleaseLTCG.exe"
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v5
with:
path: |
dep/msvc/deps-arm64
dep/msvc/deps-x64
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat', 'scripts/deps/versions') }}
- name: Build x64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-x64.bat
- name: Build ARM64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/deps/build-dependencies-windows-arm64.bat
- name: Tag as Preview Release
if: github.ref == 'refs/heads/master'
shell: cmd
run: |
echo #pragma once > src/scmversion/tag.h
echo #define UPDATER_RELEASE_CHANNEL "preview" >> src/scmversion/tag.h
echo #define UPDATER_RELEASE_IS_OFFICIAL 1 >> src/scmversion/tag.h
- name: Tag as Stable Build
if: github.ref == 'refs/heads/dev'
shell: cmd
run: |
echo #pragma once > src/scmversion/tag.h
echo #define UPDATER_RELEASE_CHANNEL "latest" >> src/scmversion/tag.h
echo #define UPDATER_RELEASE_IS_OFFICIAL 1 >> src/scmversion/tag.h
- name: Update RC Version Fields
shell: cmd
run: |
cd src\scmversion
call update_rc_version.bat
cd ..\..
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
- name: Download Patch Archives
shell: cmd
run: |
cd data/resources
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
curl --retry 5 --retry-all-errors -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"
- name: Compile ${{ matrix.name }} Release Build
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars }}
msbuild duckstation.sln -t:Build -p:Platform=${{ matrix.platform }};Configuration=${{ matrix.config }}
- name: Create ${{ matrix.name }} Symbols Archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -mx9 -r duckstation-windows-${{ matrix.arch }}-release-symbols.zip ./bin/${{ matrix.bindir }}/*.pdb
- name: Remove Extra Bloat Before Archiving
shell: cmd
run: |
del /Q bin\${{ matrix.bindir }}\*.pdb bin\${{ matrix.bindir }}\*.exp bin\${{ matrix.bindir }}\*.lib bin\${{ matrix.bindir }}\*.iobj bin\${{ matrix.bindir }}\*.ipdb bin\${{ matrix.bindir }}\common-tests*
rename bin\${{ matrix.bindir }}\${{ matrix.updatername }} updater.exe
- name: Create ${{ matrix.name }} Release Archive
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -mx9 -r ${{ matrix.assetname }} ./bin/${{ matrix.bindir }}/*
- name: Upload ${{ matrix.name }} Release Artifact
uses: actions/upload-artifact@v6
with:
name: "windows-${{ matrix.arch }}"
path: "duckstation-windows-${{ matrix.arch }}-*.zip"

1
.gitignore vendored
View File

@@ -28,6 +28,7 @@ CMakeFiles
Makefile
cmake_install.cmake
install_manifest.txt
/.cache/
# unix intermediate files
config.h

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.19)
project(duckstation C CXX)
# Policy settings.
@@ -12,14 +12,9 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
endif()
if(NOT CMAKE_BUILD_TYPE MATCHES "Debug|Devel|MinSizeRel|RelWithDebInfo|Release")
message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to Release.")
set(CMAKE_BUILD_TYPE "Release")
message(FATAL_ERROR "CMAKE_BUILD_TYPE not set. Please set it first.")
endif()
message(STATUS "CMake Version: ${CMAKE_VERSION}")
message(STATUS "CMake System Name: ${CMAKE_SYSTEM_NAME}")
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
# Pull in modules.
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules/")
include(DuckStationUtils)
@@ -33,14 +28,19 @@ detect_cache_line_size()
# Build options. Depends on system attributes.
include(DuckStationBuildOptions)
include(DuckStationDependencies)
include(DuckStationCompilerRequirement)
# Set _DEBUG macro for Debug builds.
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
# Enable PIC on Linux, otherwise the builds do not support ASLR.
if(LINUX OR BSD)
include(CheckPIESupported)
check_pie_supported()
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif()
# Release build optimizations for MSVC.
if(MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS")
add_compile_definitions("_UNICODE" "UNICODE" "_CRT_NONSTDC_NO_DEPRECATE" "_CRT_SECURE_NO_WARNINGS")
foreach(config CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
# Set warning level 3 instead of 4.
string(REPLACE "/W3" "/W4" ${config} "${${config}}")
@@ -51,14 +51,22 @@ if(MSVC)
# RelWithDebInfo is set to Ob1 instead of Ob2.
string(REPLACE "/Ob1" "/Ob2" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Ob1" "/Ob2" CMAKE_C_FLAGS_DEVEL "${CMAKE_C_FLAGS_DEVEL}")
string(REPLACE "/Ob1" "/Ob2" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Ob1" "/Ob2" CMAKE_CXX_FLAGS_DEVEL "${CMAKE_CXX_FLAGS_DEVEL}")
# Disable incremental linking in RelWithDebInfo.
string(REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_DEVEL "${CMAKE_EXE_LINKER_FLAGS_DEVEL}")
# COMDAT folding/remove unused functions.
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /OPT:REF /OPT:ICF")
set(CMAKE_EXE_LINKER_FLAGS_DEVEL "${CMAKE_EXE_LINKER_FLAGS_DEVEL} /OPT:REF /OPT:ICF")
else()
# Force debug symbols for Linux builds.
add_debug_symbol_flag(CMAKE_C_FLAGS_RELEASE)
add_debug_symbol_flag(CMAKE_CXX_FLAGS_RELEASE)
endif()
# Warning disables.
@@ -77,10 +85,24 @@ if(MSVC)
string(REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_HAS_EXCEPTIONS=0 /permissive-")
if(COMPILER_CLANG_CL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /clang:-fno-rtti")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif()
# Rewrite paths in macros to be relative to the source directory.
# Helpful for reproducible builds.
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND NOT CMAKE_GENERATOR MATCHES "Xcode" AND
(COMPILER_CLANG OR COMPILER_CLANG_CL OR COMPILER_GCC))
file(RELATIVE_PATH source_dir_remap "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}")
string(REGEX REPLACE "\/+$" "" source_dir_remap "${source_dir_remap}")
set(source_dir_remap_str "\"${CMAKE_SOURCE_DIR}\"=\"${source_dir_remap}\"")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffile-prefix-map=${source_dir_remap_str}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffile-prefix-map=${source_dir_remap_str}")
endif()
# Write binaries to a seperate directory.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
@@ -94,15 +116,7 @@ if(BUILD_TESTS)
enable_testing()
endif()
# Prevent fmt from being built with exceptions, or being thrown at call sites.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_EXCEPTIONS=0")
# Use C++20.
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Recursively include the source tree.
include(DuckStationDependencies)
add_subdirectory(dep)
add_subdirectory(src)

View File

@@ -1,10 +1,11 @@
# Renderer options.
option(ENABLE_OPENGL "Build with OpenGL renderer" ON)
option(ENABLE_VULKAN "Build with Vulkan renderer" ON)
option(BUILD_NOGUI_FRONTEND "Build the NoGUI frontend" OFF)
option(BUILD_QT_FRONTEND "Build the Qt frontend" ON)
option(BUILD_MINI_FRONTEND "Build the Mini frontend" OFF)
option(BUILD_REGTEST "Build regression test runner" OFF)
option(BUILD_TESTS "Build unit tests" OFF)
option(DISABLE_SSE4 "Build with SSE4 instructions disabled, reduces performance" OFF)
if(LINUX OR BSD)
option(ENABLE_X11 "Support X11 window system" ON)
@@ -13,3 +14,17 @@ endif()
if(APPLE)
option(SKIP_POSTPROCESS_BUNDLE "Disable bundle post-processing, including Qt additions" OFF)
endif()
# Set _DEBUG macro for Debug builds.
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
# Create the Devel build type based on RelWithDebInfo.
set(CMAKE_C_FLAGS_DEVEL "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_DEVEL" CACHE STRING "Flags used by the C compiler during DEVEL builds." FORCE)
set(CMAKE_CXX_FLAGS_DEVEL "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_DEVEL" CACHE STRING "Flags used by the CXX compiler during DEVEL builds." FORCE)
set(CMAKE_EXE_LINKER_FLAGS_DEVEL "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Flags used for the linker during DEVEL builds." FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_DEVEL "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Flags used by the linker during the creation of modules during DEVEL builds." FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_DEVEL "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Flags used by the linker during the creation of shared libraries during DEVEL builds." FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_DEVEL "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Flags used by the linker during the creation of static libraries during DEVEL builds." FORCE)
list(APPEND CMAKE_CONFIGURATION_TYPES "Devel")
mark_as_advanced(CMAKE_C_FLAGS_DEVEL CMAKE_CXX_FLAGS_DEVEL CMAKE_EXE_LINKER_FLAGS_DEVEL CMAKE_MODULE_LINKER_FLAGS_DEVEL CMAKE_SHARED_LINKER_FLAGS_DEVEL CMAKE_STATIC_LINKER_FLAGS_DEVEL)

View File

@@ -1,3 +1,5 @@
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
if(ENABLE_OPENGL)
message(STATUS "Building with OpenGL support.")
endif()
@@ -24,9 +26,25 @@ if(BUILD_TESTS)
message(STATUS "Building unit tests.")
endif()
# Refuse to build in Arch package environments. My license does not allow for packages, and I'm sick of
# dealing with people complaining about things broken by packagers. This is why we can't have nice things.
if(DEFINED ENV{DEBUGINFOD_URLS})
if($ENV{DEBUGINFOD_URLS} MATCHES ".*archlinux.*")
message(FATAL_ERROR "Unsupported environment.")
endif()
endif()
if(DEFINED HOST_MIN_PAGE_SIZE AND DEFINED HOST_MAX_PAGE_SIZE)
message(STATUS "Building with a dynamic page size of ${HOST_MIN_PAGE_SIZE} - ${HOST_MAX_PAGE_SIZE} bytes.")
elseif(DEFINED HOST_PAGE_SIZE)
message(STATUS "Building with detected page size of ${HOST_PAGE_SIZE}")
endif()
if(DEFINED HOST_CACHE_LINE_SIZE)
message(STATUS "Building with detected cache line size of ${HOST_CACHE_LINE_SIZE}")
endif()
if(NOT IS_SUPPORTED_COMPILER)
message(WARNING "
*************** UNSUPPORTED CONFIGURATION ***************
message(WARNING "*************** UNSUPPORTED CONFIGURATION ***************
You are not compiling DuckStation with a supported compiler.
It may not even build successfully.
DuckStation only supports the Clang and MSVC compilers.
@@ -35,11 +53,18 @@ No support will be provided, continue at your own risk.
endif()
if(WIN32)
message(WARNING "
*************** UNSUPPORTED CONFIGURATION ***************
message(WARNING "*************** UNSUPPORTED CONFIGURATION ***************
You are compiling DuckStation with CMake on Windows.
It may not even build successfully.
DuckStation only supports MSBuild on Windows.
No support will be provided, continue at your own risk.
*********************************************************")
endif()
if(CPU_ARCH_X64 AND DISABLE_SSE4)
message(WARNING "*********************** WARNING ***********************
SSE4 instructions are disabled. This will result in
reduced performance. You should not enable this option
unless you have a pre-2008 CPU.
*******************************************************")
endif()

View File

@@ -0,0 +1,16 @@
# Use C++20.
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# C++20 feature checks. Some Linux environments are incomplete.
check_cpp20_feature("__cpp_structured_bindings" 201606)
check_cpp20_feature("__cpp_constinit" 201907)
check_cpp20_feature("__cpp_designated_initializers" 201707)
check_cpp20_feature("__cpp_using_enum" 201907)
check_cpp20_feature("__cpp_lib_bit_cast" 201806)
check_cpp20_feature("__cpp_lib_bitops" 201907)
check_cpp20_feature("__cpp_lib_int_pow2" 202002)
check_cpp20_feature("__cpp_lib_starts_ends_with" 201711)
check_cpp20_attribute("likely" 201803)
check_cpp20_attribute("unlikely" 201803)
check_cpp20_attribute("no_unique_address" 201803)

View File

@@ -1,64 +1,122 @@
# From PCSX2: On macOS, Mono.framework contains an ancient version of libpng. We don't want that.
# Avoid it by telling cmake to avoid finding frameworks while we search for libpng.
if(APPLE)
set(FIND_FRAMEWORK_BACKUP ${CMAKE_FIND_FRAMEWORK})
set(CMAKE_FIND_FRAMEWORK NEVER)
# Set prefix path to look for our bundled dependencies first on Windows.
if(WIN32 AND CPU_ARCH_X64)
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dep/msvc/deps-x64")
elseif(WIN32 AND CPU_ARCH_ARM64)
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dep/msvc/deps-arm64")
endif()
# Enable threads everywhere.
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(SDL2 2.30.6 REQUIRED)
find_package(Zstd 1.5.6 REQUIRED)
# pkg-config gets pulled transitively on some platforms.
if(NOT WIN32 AND NOT APPLE)
find_package(PkgConfig REQUIRED)
endif()
# libpng relies on zlib, which we need the system version for on Mac.
if(APPLE OR CPU_ARCH_ARM32 OR CPU_ARCH_ARM64)
find_package(ZLIB REQUIRED)
endif()
# Enforce use of bundled dependencies to avoid conflicts with system libraries.
set(FIND_ROOT_PATH_BACKUP ${CMAKE_FIND_ROOT_PATH})
set(FIND_ROOT_PATH_MODE_INCLUDE_BACKUP ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE})
set(FIND_ROOT_PATH_MODE_LIBRARY_BACKUP ${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY})
set(FIND_ROOT_PATH_MODE_PACKAGE_BACKUP ${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE})
set(FIND_ROOT_PATH_MODE_PROGRAM_BACKUP ${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM})
set(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
# Search for local zlib version outside of Mac.
if(NOT APPLE AND NOT CPU_ARCH_ARM32 AND NOT CPU_ARCH_ARM64)
find_package(ZLIB 1.3.1 REQUIRED)
endif()
# Bundled dependencies.
find_package(zstd 1.5.7 REQUIRED)
find_package(WebP REQUIRED) # v1.4.0, spews an error on Linux because no pkg-config.
find_package(ZLIB REQUIRED) # 1.3, but Mac currently doesn't use it.
find_package(PNG 1.6.40 REQUIRED)
find_package(JPEG REQUIRED) # No version because flatpak uses libjpeg-turbo.
find_package(Freetype 2.11.1 REQUIRED)
find_package(PNG 1.6.53 REQUIRED)
find_package(JPEG REQUIRED)
find_package(SDL3 3.4.0 REQUIRED)
find_package(Freetype 2.14.1 REQUIRED)
find_package(harfbuzz REQUIRED)
find_package(plutosvg 0.0.6 REQUIRED)
find_package(cpuinfo REQUIRED)
find_package(DiscordRPC 3.4.0 REQUIRED)
find_package(SoundTouch 2.3.3 REQUIRED)
if(NOT WIN32)
find_package(CURL REQUIRED)
endif()
if(ENABLE_X11)
find_package(X11 REQUIRED)
if (NOT X11_Xrandr_FOUND)
message(FATAL_ERROR "XRandR extension is required")
endif()
endif()
if(ENABLE_WAYLAND)
find_package(ECM REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}")
find_package(Wayland REQUIRED Egl)
endif()
if(ENABLE_VULKAN)
find_package(Shaderc REQUIRED)
find_package(spirv_cross_c_shared REQUIRED)
if(LINUX)
# We need to add the rpath for shaderc to the executable.
get_filename_component(SHADERC_LIBRARY_DIRECTORY ${SHADERC_LIBRARY} DIRECTORY)
list(APPEND CMAKE_BUILD_RPATH ${SHADERC_LIBRARY_DIRECTORY})
get_target_property(SPIRV_CROSS_LIBRARY spirv-cross-c-shared IMPORTED_LOCATION)
get_filename_component(SPIRV_CROSS_LIBRARY_DIRECTORY ${SPIRV_CROSS_LIBRARY} DIRECTORY)
list(APPEND CMAKE_BUILD_RPATH ${SPIRV_CROSS_LIBRARY_DIRECTORY})
endif()
endif()
if(LINUX)
find_package(UDEV REQUIRED)
endif()
find_package(libzip 1.11.4 REQUIRED)
find_package(Shaderc REQUIRED)
find_package(spirv_cross_c_shared REQUIRED)
if(NOT WIN32 AND NOT APPLE)
find_package(Libbacktrace REQUIRED)
# We need to add the rpath for shaderc to the executable.
get_target_property(SHADERC_LIBRARY Shaderc::shaderc_shared IMPORTED_LOCATION)
get_filename_component(SHADERC_LIBRARY_DIRECTORY ${SHADERC_LIBRARY} DIRECTORY)
list(APPEND CMAKE_BUILD_RPATH ${SHADERC_LIBRARY_DIRECTORY})
get_target_property(SPIRV_CROSS_LIBRARY spirv-cross-c-shared IMPORTED_LOCATION)
get_filename_component(SPIRV_CROSS_LIBRARY_DIRECTORY ${SPIRV_CROSS_LIBRARY} DIRECTORY)
list(APPEND CMAKE_BUILD_RPATH ${SPIRV_CROSS_LIBRARY_DIRECTORY})
endif()
if(APPLE)
set(CMAKE_FIND_FRAMEWORK ${FIND_FRAMEWORK_BACKUP})
# Restore system package search path.
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ${FIND_ROOT_PATH_MODE_INCLUDE_BACKUP})
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${FIND_ROOT_PATH_MODE_LIBRARY_BACKUP})
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${FIND_ROOT_PATH_MODE_PACKAGE_BACKUP})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${FIND_ROOT_PATH_MODE_PROGRAM_BACKUP})
set(CMAKE_FIND_ROOT_PATH ${FIND_ROOT_PATH_BACKUP})
# Qt has transitive dependencies on system libs, so do it afterwards.
if(BUILD_QT_FRONTEND)
# All our builds include Qt, so this is not a problem.
set(QT_NO_PRIVATE_MODULE_WARNING ON)
if(LINUX)
find_package(Qt6 6.10.1 COMPONENTS Core Gui GuiPrivate Widgets LinguistTools DBus REQUIRED)
else()
find_package(Qt6 6.10.1 COMPONENTS Core Gui GuiPrivate Widgets LinguistTools REQUIRED)
endif()
# Have to verify it down here, don't want users using unpatched Qt.
if(NOT Qt6_DIR MATCHES "^${CMAKE_PREFIX_PATH}")
message(FATAL_ERROR "Using incorrect Qt library. Check your dependencies.")
endif()
endif()
# Libraries that are pulled in from host.
if(NOT WIN32)
find_package(CURL REQUIRED)
if(LINUX)
find_package(UDEV REQUIRED)
endif()
if(NOT APPLE)
if(ENABLE_X11)
find_package(X11 REQUIRED)
if (NOT X11_xcb_FOUND OR NOT X11_xcb_randr_FOUND OR NOT X11_X11_xcb_FOUND)
message(FATAL_ERROR "XCB, XCB-randr and X11-xcb are required")
endif()
endif()
if(ENABLE_WAYLAND)
find_package(ECM REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}")
find_package(Wayland REQUIRED Egl)
endif()
endif()
endif()
if(NOT WIN32)
find_package(FFMPEG 8.0.0 COMPONENTS avcodec avformat avutil swresample swscale)
if(NOT FFMPEG_FOUND)
message(WARNING "FFmpeg not found, using bundled headers.")
endif()
endif()
if(NOT FFMPEG_FOUND)
set(FFMPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/dep/ffmpeg/include")
endif()

View File

@@ -1,3 +1,5 @@
include(CheckSourceCompiles)
function(disable_compiler_warnings_for_target target)
if(MSVC)
target_compile_options(${target} PRIVATE "/W0")
@@ -69,9 +71,13 @@ function(detect_architecture)
CMAKE_SIZEOF_VOID_P EQUAL 8)
message(STATUS "Building x86_64 binaries.")
set(CPU_ARCH_X64 TRUE PARENT_SCOPE)
if(NOT MSVC OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(NOT MSVC OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT DISABLE_SSE4)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1" PARENT_SCOPE)
elseif(MSVC AND NOT DISABLE_SSE4)
# Clang defines these macros, MSVC does not.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D__SSE3__ /D__SSE4_1__" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D__SSE3__ /D__SSE4_1__" PARENT_SCOPE)
endif()
elseif(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64") AND
CMAKE_SIZEOF_VOID_P EQUAL 8) # Might have an A64 kernel, e.g. Raspbian.
@@ -83,22 +89,27 @@ function(detect_architecture)
AND CMAKE_SIZEOF_VOID_P EQUAL 4))
message(STATUS "Building ARM32 binaries.")
set(CPU_ARCH_ARM32 TRUE PARENT_SCOPE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a" PARENT_SCOPE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a -mfpu=neon-vfpv4" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a -mfpu=neon-vfpv4" PARENT_SCOPE)
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "riscv64")
message(STATUS "Building RISC-V 64 binaries.")
set(CPU_ARCH_RISCV64 TRUE PARENT_SCOPE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -finline-atomics" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-atomics" PARENT_SCOPE)
# Still need this, apparently.
link_libraries("-latomic")
# Don't want function calls for atomics.
if(COMPILER_GCC)
set(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finline-atomics")
# Still need this, apparently.
link_libraries("-latomic")
endif()
if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
# Frame pointers generate an annoying amount of code on leaf functions.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer" PARENT_SCOPE)
set(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fomit-frame-pointer")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}" PARENT_SCOPE)
else()
message(FATAL_ERROR "Unknown system processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
@@ -106,13 +117,24 @@ endfunction()
function(detect_page_size)
# This is only needed for ARM64, or if the user hasn't overridden it explicitly.
if(NOT CPU_ARCH_ARM64 OR HOST_PAGE_SIZE)
# For universal Apple builds, we use preprocessor macros to determine page size.
# Similar for Windows, except it's always 4KB.
if(NOT CPU_ARCH_ARM64 OR NOT LINUX)
unset(HOST_PAGE_SIZE CACHE)
unset(HOST_PAGE_SIZE PARENT_SCOPE)
unset(HOST_MIN_PAGE_SIZE CACHE)
unset(HOST_MIN_PAGE_SIZE PARENT_SCOPE)
unset(HOST_MAX_PAGE_SIZE CACHE)
unset(HOST_MAX_PAGE_SIZE PARENT_SCOPE)
return()
elseif(DEFINED HOST_PAGE_SIZE)
return()
endif()
if(NOT LINUX)
# For universal Apple builds, we use preprocessor macros to determine page size.
# Similar for Windows, except it's always 4KB.
if(DEFINED HOST_MIN_PAGE_SIZE OR DEFINED HOST_MAX_PAGE_SIZE)
if(NOT DEFINED HOST_MIN_PAGE_SIZE OR NOT DEFINED HOST_MAX_PAGE_SIZE)
message(FATAL_ERROR "Both HOST_MIN_PAGE_SIZE and HOST_MAX_PAGE_SIZE must be defined.")
endif()
return()
endif()
@@ -149,6 +171,8 @@ endfunction()
function(detect_cache_line_size)
# This is only needed for ARM64, or if the user hasn't overridden it explicitly.
if(NOT CPU_ARCH_ARM64 OR HOST_CACHE_LINE_SIZE)
unset(HOST_CACHE_LINE_SIZE CACHE)
unset(HOST_CACHE_LINE_SIZE PARENT_SCOPE)
return()
endif()
@@ -159,7 +183,7 @@ function(detect_cache_line_size)
endif()
if(CMAKE_CROSSCOMPILING)
message(WARNING "Cross-compiling and can't determine page size, assuming default.")
message(WARNING "Cross-compiling and can't determine cache line size, assuming default.")
return()
endif()
@@ -200,3 +224,78 @@ int main() {
set(HOST_CACHE_LINE_SIZE ${detect_cache_line_size_output} CACHE STRING "Reported host cache line size")
endif()
endfunction()
function(get_scm_version)
if(SCM_VERSION)
return()
endif()
find_package(Git)
if(EXISTS "${PROJECT_SOURCE_DIR}/.git" AND GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --dirty
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE LOCAL_SCM_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
if(NOT LOCAL_SCM_VERSION)
set(SCM_VERSION "unknown" PARENT_SCOPE)
else()
set(SCM_VERSION ${LOCAL_SCM_VERSION} PARENT_SCOPE)
endif()
endfunction()
function(add_debug_symbol_flag var)
# CMake's regex engine is missing so many features...
set(value "${${var}}")
if (NOT " ${value} " MATCHES " -g[1-3]? ")
message(STATUS "Adding -g1 to ${var}.")
set(${var} "${value} -g1" PARENT_SCOPE)
endif()
endfunction()
function(check_cpp20_feature MACRO MINIMUM_VALUE)
set(CACHE_VAR "CHECK_CPP20_FEATURE_${MACRO}")
if(NOT DEFINED ${CACHE_VAR})
# Create a small source code snippet that fails to compile if the feature is not available.
set(TEMP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cpp")
file(WRITE "${TEMP_FILE}" "#include <version>
#if !defined(${MACRO}) || ${MACRO} < ${MINIMUM_VALUE}L
#error Missing feature
#endif
")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
try_compile(HAS_FEATURE
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY} "${TEMP_FILE}"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED TRUE
)
set(${CACHE_VAR} ${HAS_FEATURE} CACHE INTERNAL "Cached feature test result for ${MACRO}")
endif()
if(NOT HAS_FEATURE)
message(FATAL_ERROR "${MACRO} is not supported by your compiler, at least ${MINIMUM_VALUE} is required.")
endif()
endfunction()
function(check_cpp20_attribute ATTRIBUTE MINIMUM_VALUE)
set(CACHE_VAR "CHECK_CPP20_ATTRIBUTE_${MACRO}")
if(NOT DEFINED ${CACHE_VAR})
set(TEMP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cpp")
file(WRITE "${TEMP_FILE}" "#include <version>
#if !defined(__has_cpp_attribute) || __has_cpp_attribute(${ATTRIBUTE}) < ${MINIMUM_VALUE}L
#error Missing feature
#endif
")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
try_compile(HAS_FEATURE
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY} "${TEMP_FILE}"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED TRUE
)
set(${CACHE_VAR} ${HAS_FEATURE} CACHE INTERNAL "Cached attribute test result for ${MACRO}")
endif()
if(NOT HAS_FEATURE)
message(FATAL_ERROR "${ATTRIBUTE} is not supported by your compiler, at least ${MINIMUM_VALUE} is required.")
endif()
endfunction()

View File

@@ -0,0 +1,215 @@
#[==[
Provides the following variables:
* `FFMPEG_INCLUDE_DIRS`: Include directories necessary to use FFMPEG.
* `FFMPEG_LIBRARIES`: Libraries necessary to use FFMPEG. Note that this only
includes libraries for the components requested.
* `FFMPEG_VERSION`: The version of FFMPEG found.
The following components are supported:
* `avcodec`
* `avdevice`
* `avfilter`
* `avformat`
* `avresample`
* `avutil`
* `swresample`
* `swscale`
For each component, the following are provided:
* `FFMPEG_<component>_FOUND`: Libraries for the component.
* `FFMPEG_<component>_INCLUDE_DIRS`: Include directories for
the component.
* `FFMPEG_<component>_LIBRARIES`: Libraries for the component.
* `FFMPEG::<component>`: A target to use with `target_link_libraries`.
Note that only components requested with `COMPONENTS` or `OPTIONAL_COMPONENTS`
are guaranteed to set these variables or provide targets.
#]==]
function (_ffmpeg_find component headername)
find_path("FFMPEG_${component}_INCLUDE_DIR"
NAMES
"lib${component}/${headername}"
PATHS
"${FFMPEG_ROOT}/include"
"${CMAKE_PREFIX_PATH}/include"
~/Library/Frameworks
/Library/Frameworks
/usr/local/include
/usr/include
/sw/include # Fink
/opt/local/include # DarwinPorts
/opt/csw/include # Blastwave
/opt/include
/usr/freeware/include
PATH_SUFFIXES
ffmpeg
DOC "FFMPEG's ${component} include directory")
mark_as_advanced("FFMPEG_${component}_INCLUDE_DIR")
# On Windows, static FFMPEG is sometimes built as `lib<name>.a`.
if (WIN32)
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib")
list(APPEND CMAKE_FIND_LIBRARY_PREFIXES "" "lib")
endif ()
find_library("FFMPEG_${component}_LIBRARY"
NAMES
"${component}"
PATHS
"${FFMPEG_ROOT}/lib"
"${CMAKE_PREFIX_PATH}/lib"
"${CMAKE_PREFIX_PATH}/lib64"
~/Library/Frameworks
/Library/Frameworks
/usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
/sw/lib
/opt/local/lib
/opt/csw/lib
/opt/lib
/usr/freeware/lib64
"${FFMPEG_ROOT}/bin"
DOC "FFMPEG's ${component} library")
mark_as_advanced("FFMPEG_${component}_LIBRARY")
if (FFMPEG_${component}_LIBRARY AND FFMPEG_${component}_INCLUDE_DIR)
set(_deps_found TRUE)
set(_deps_link)
foreach (_ffmpeg_dep IN LISTS ARGN)
if (TARGET "FFMPEG::${_ffmpeg_dep}")
list(APPEND _deps_link "FFMPEG::${_ffmpeg_dep}")
else ()
set(_deps_found FALSE)
endif ()
endforeach ()
if (_deps_found)
if (NOT TARGET "FFMPEG::${component}")
add_library("FFMPEG::${component}" UNKNOWN IMPORTED)
set_target_properties("FFMPEG::${component}" PROPERTIES
IMPORTED_LOCATION "${FFMPEG_${component}_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_${component}_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${_deps_link}")
endif ()
set("FFMPEG_${component}_FOUND" 1
PARENT_SCOPE)
set(version_header_path "${FFMPEG_${component}_INCLUDE_DIR}/lib${component}/version.h")
set(major_version_header_path "${FFMPEG_${component}_INCLUDE_DIR}/lib${component}/version_major.h")
if (EXISTS "${major_version_header_path}")
string(TOUPPER "${component}" component_upper)
file(STRINGS "${major_version_header_path}" major_version
REGEX "#define *LIB${component_upper}_VERSION_MAJOR ")
file(STRINGS "${version_header_path}" version
REGEX "#define *LIB${component_upper}_VERSION_(MINOR|MICRO) ")
string(REGEX REPLACE ".*_MAJOR *\([0-9]*\).*" "\\1" major "${major_version}")
string(REGEX REPLACE ".*_MINOR *\([0-9]*\).*" "\\1" minor "${version}")
string(REGEX REPLACE ".*_MICRO *\([0-9]*\).*" "\\1" micro "${version}")
if (NOT major STREQUAL "" AND
NOT minor STREQUAL "" AND
NOT micro STREQUAL "")
set("FFMPEG_${component}_VERSION" "${major}.${minor}.${micro}"
PARENT_SCOPE)
endif ()
elseif (EXISTS "${version_header_path}")
string(TOUPPER "${component}" component_upper)
file(STRINGS "${version_header_path}" version
REGEX "#define *LIB${component_upper}_VERSION_(MAJOR|MINOR|MICRO) ")
string(REGEX REPLACE ".*_MAJOR *\([0-9]*\).*" "\\1" major "${version}")
string(REGEX REPLACE ".*_MINOR *\([0-9]*\).*" "\\1" minor "${version}")
string(REGEX REPLACE ".*_MICRO *\([0-9]*\).*" "\\1" micro "${version}")
if (NOT major STREQUAL "" AND
NOT minor STREQUAL "" AND
NOT micro STREQUAL "")
set("FFMPEG_${component}_VERSION" "${major}.${minor}.${micro}"
PARENT_SCOPE)
endif ()
endif ()
else ()
set("FFMPEG_${component}_FOUND" 0
PARENT_SCOPE)
set(what)
if (NOT FFMPEG_${component}_LIBRARY)
set(what "library")
endif ()
if (NOT FFMPEG_${component}_INCLUDE_DIR)
if (what)
string(APPEND what " or headers")
else ()
set(what "headers")
endif ()
endif ()
set("FFMPEG_${component}_NOT_FOUND_MESSAGE"
"Could not find the ${what} for ${component}."
PARENT_SCOPE)
endif ()
endif ()
endfunction ()
_ffmpeg_find(avutil avutil.h)
_ffmpeg_find(avresample avresample.h
avutil)
_ffmpeg_find(swresample swresample.h
avutil)
_ffmpeg_find(swscale swscale.h
avutil)
_ffmpeg_find(avcodec avcodec.h
avutil)
_ffmpeg_find(avformat avformat.h
avcodec avutil)
_ffmpeg_find(avfilter avfilter.h
avutil)
_ffmpeg_find(avdevice avdevice.h
avformat avutil)
if (TARGET FFMPEG::avutil)
set(_ffmpeg_version_header_path "${FFMPEG_avutil_INCLUDE_DIR}/libavutil/ffversion.h")
if (EXISTS "${_ffmpeg_version_header_path}")
file(STRINGS "${_ffmpeg_version_header_path}" _ffmpeg_version
REGEX "FFMPEG_VERSION")
string(REGEX REPLACE ".*\"n?\(.*\)\"" "\\1" FFMPEG_VERSION "${_ffmpeg_version}")
unset(_ffmpeg_version)
else ()
set(FFMPEG_VERSION FFMPEG_VERSION-NOTFOUND)
endif ()
unset(_ffmpeg_version_header_path)
endif ()
set(FFMPEG_INCLUDE_DIRS)
set(FFMPEG_LIBRARIES)
set(_ffmpeg_required_vars)
foreach (_ffmpeg_component IN LISTS FFMPEG_FIND_COMPONENTS)
if (TARGET "FFMPEG::${_ffmpeg_component}")
set(FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS
"${FFMPEG_${_ffmpeg_component}_INCLUDE_DIR}")
set(FFMPEG_${_ffmpeg_component}_LIBRARIES
"${FFMPEG_${_ffmpeg_component}_LIBRARY}")
list(APPEND FFMPEG_INCLUDE_DIRS
"${FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS}")
list(APPEND FFMPEG_LIBRARIES
"${FFMPEG_${_ffmpeg_component}_LIBRARIES}")
if (FFMEG_FIND_REQUIRED_${_ffmpeg_component})
list(APPEND _ffmpeg_required_vars
"FFMPEG_${_ffmpeg_required_vars}_INCLUDE_DIRS"
"FFMPEG_${_ffmpeg_required_vars}_LIBRARIES")
endif ()
endif ()
endforeach ()
unset(_ffmpeg_component)
if (FFMPEG_INCLUDE_DIRS)
list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS)
endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FFMPEG
REQUIRED_VARS FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES ${_ffmpeg_required_vars}
VERSION_VAR FFMPEG_VERSION
HANDLE_COMPONENTS)
unset(_ffmpeg_required_vars)

View File

@@ -6,14 +6,14 @@
FIND_PATH(
LIBBACKTRACE_INCLUDE_DIR backtrace.h
HINTS /usr/include /usr/local/include
HINTS "${CMAKE_PREFIX_PATH}/include" /usr/include /usr/local/include
${LIBBACKTRACE_PATH_INCLUDES}
)
FIND_LIBRARY(
LIBBACKTRACE_LIBRARY
NAMES backtrace
PATHS ${ADDITIONAL_LIBRARY_PATHS} ${LIBBACKTRACE_PATH_LIB}
PATHS "${CMAKE_PREFIX_PATH}/lib" "${CMAKE_PREFIX_PATH}/lib64" ${ADDITIONAL_LIBRARY_PATHS} ${LIBBACKTRACE_PATH_LIB}
)
include(FindPackageHandleStandardArgs)

View File

@@ -1,30 +0,0 @@
# - Try to find OpenSLES
# Once done this will define
# OPENSLES_FOUND - System has OpenSLES
# OPENSLES_INCLUDE_DIR - The OpenSLES include directory
# OPENSLES_LIBRARY - The library needed to use OpenSLES
# An imported target OpenSLES::OpenSLES is also created, prefer this
find_path(OPENSLES_INCLUDE_DIR
NAMES SLES/OpenSLES.h
)
find_library(OPENSLES_LIBRARY
NAMES OpenSLES
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenSLES DEFAULT_MSG
OPENSLES_LIBRARY OPENSLES_INCLUDE_DIR)
if(OpenSLES_FOUND)
if(NOT TARGET OpenSLES::OpenSLES)
add_library(OpenSLES::OpenSLES UNKNOWN IMPORTED)
set_target_properties(OpenSLES::OpenSLES PROPERTIES
IMPORTED_LOCATION ${OPENSLES_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${OPENSLES_INCLUDE_DIR}
)
endif()
endif()
mark_as_advanced(OPENSLES_INCLUDE_DIR OPENSLES_LIBRARY )

View File

@@ -1,31 +0,0 @@
# - Try to find SHADERC
# Once done this will define
# SHADERC_FOUND - System has SHADERC
# SHADERC_INCLUDE_DIRS - The SHADERC include directories
# SHADERC_LIBRARIES - The libraries needed to use SHADERC
find_path(
SHADERC_INCLUDE_DIR shaderc/shaderc.h
${SHADERC_PATH_INCLUDES}
)
find_library(
SHADERC_LIBRARY
NAMES shaderc_shared.1 shaderc_shared
PATHS ${ADDITIONAL_LIBRARY_PATHS} ${SHADERC_PATH_LIB}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Shaderc DEFAULT_MSG
SHADERC_LIBRARY SHADERC_INCLUDE_DIR)
if(SHADERC_FOUND)
add_library(Shaderc::shaderc_shared UNKNOWN IMPORTED)
set_target_properties(Shaderc::shaderc_shared PROPERTIES
IMPORTED_LOCATION ${SHADERC_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${SHADERC_INCLUDE_DIR}
INTERFACE_COMPILE_DEFINITIONS "SHADERC_SHAREDLIB"
)
endif()
mark_as_advanced(SHADERC_INCLUDE_DIR SHADERC_LIBRARY)

View File

@@ -1,45 +0,0 @@
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# - Try to find Facebook zstd library
# This will define
# Zstd_FOUND
# Zstd_INCLUDE_DIR
# Zstd_LIBRARY
#
find_path(Zstd_INCLUDE_DIR NAMES zstd.h)
find_library(Zstd_LIBRARY_DEBUG NAMES zstdd zstd_staticd)
find_library(Zstd_LIBRARY_RELEASE NAMES zstd zstd_static)
include(SelectLibraryConfigurations)
SELECT_LIBRARY_CONFIGURATIONS(Zstd)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
Zstd DEFAULT_MSG
Zstd_LIBRARY Zstd_INCLUDE_DIR
)
mark_as_advanced(Zstd_INCLUDE_DIR Zstd_LIBRARY)
if(Zstd_FOUND AND NOT (TARGET Zstd::Zstd))
add_library (Zstd::Zstd UNKNOWN IMPORTED)
set_target_properties(Zstd::Zstd
PROPERTIES
IMPORTED_LOCATION ${Zstd_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${Zstd_INCLUDE_DIR})
endif()

186
CMakeModules/Findzstd.cmake Normal file
View File

@@ -0,0 +1,186 @@
# Copyright (C) 2020 Dieter Baron and Thomas Klausner
#
# The authors can be contacted at <info@libzip.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. The names of the authors may not be used to endorse or promote
# products derived from this software without specific prior
# written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
Findzstd
-------
Finds the Zstandard (zstd) library.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``zstd::libzstd_shared``
The shared Zstandard library
``zstd::libzstd_static``
The shared Zstandard library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``zstd_FOUND``
True if the system has the Zstandard library.
``zstd_VERSION``
The version of the Zstandard library which was found.
Cache Variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``zstd_INCLUDE_DIR``
The directory containing ``zstd.h``.
``zstd_STATIC_LIBRARY``
The path to the Zstandard static library.
``zstd_SHARED_LIBRARY``
The path to the Zstandard shared library.
``zstd_DLL``
The path to the Zstandard DLL.
#]=======================================================================]
find_package(PkgConfig)
pkg_check_modules(PC_zstd QUIET libzstd)
find_path(zstd_INCLUDE_DIR
NAMES zstd.h
HINTS ${PC_zstd_INCLUDE_DIRS}
)
find_file(zstd_DLL
NAMES libzstd.dll zstd.dll
PATH_SUFFIXES bin
HINTS ${PC_zstd_PREFIX}
)
# On Windows, we manually define the library names to avoid mistaking the
# implib for the static library
if(zstd_DLL)
set(_zstd_win_static_name zstd-static)
set(_zstd_win_shared_name zstd)
else()
# vcpkg removes the -static suffix in static builds
set(_zstd_win_static_name zstd zstd_static)
set(_zstd_win_shared_name)
endif()
set(_previous_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".dylib" ".dll.a" ".lib")
find_library(zstd_SHARED_LIBRARY
NAMES zstd ${_zstd_win_shared_name}
HINTS ${PC_zstd_LIBDIR}
)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib")
find_library(zstd_STATIC_LIBRARY
NAMES zstd ${_zstd_win_static_name}
HINTS ${PC_zstd_LIBDIR}
)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_previous_suffixes})
# Set zstd_LIBRARY to the shared library or fall back to the static library
if(zstd_SHARED_LIBRARY)
set(_zstd_LIBRARY ${zstd_SHARED_LIBRARY})
else()
set(_zstd_LIBRARY ${zstd_STATIC_LIBRARY})
endif()
# Extract version information from the header file
if(zstd_INCLUDE_DIR)
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_major_line
REGEX "^#define ZSTD_VERSION_MAJOR *[0-9]+"
LIMIT_COUNT 1)
string(REGEX MATCH "[0-9]+"
zstd_MAJOR_VERSION "${_ver_major_line}")
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_minor_line
REGEX "^#define ZSTD_VERSION_MINOR *[0-9]+"
LIMIT_COUNT 1)
string(REGEX MATCH "[0-9]+"
zstd_MINOR_VERSION "${_ver_minor_line}")
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_release_line
REGEX "^#define ZSTD_VERSION_RELEASE *[0-9]+"
LIMIT_COUNT 1)
string(REGEX MATCH "[0-9]+"
zstd_RELEASE_VERSION "${_ver_release_line}")
set(Zstd_VERSION "${zstd_MAJOR_VERSION}.${zstd_MINOR_VERSION}.${zstd_RELEASE_VERSION}")
unset(_ver_major_line)
unset(_ver_minor_line)
unset(_ver_release_line)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(zstd
FOUND_VAR zstd_FOUND
REQUIRED_VARS
_zstd_LIBRARY
zstd_INCLUDE_DIR
VERSION_VAR zstd_VERSION
)
if(zstd_FOUND AND zstd_SHARED_LIBRARY AND NOT TARGET zstd::libzstd_shared)
add_library(zstd::libzstd_shared SHARED IMPORTED)
if(WIN32)
set_target_properties(zstd::libzstd_shared PROPERTIES
IMPORTED_LOCATION "${zstd_DLL}"
IMPORTED_IMPLIB "${zstd_SHARED_LIBRARY}"
)
else()
set_target_properties(zstd::libzstd_shared PROPERTIES
IMPORTED_LOCATION "${zstd_SHARED_LIBRARY}"
)
endif()
set_target_properties(zstd::libzstd_shared PROPERTIES
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
)
endif()
if(zstd_FOUND AND zstd_STATIC_LIBRARY AND NOT TARGET zstd::libzstd_static)
add_library(zstd::libzstd_static STATIC IMPORTED)
set_target_properties(zstd::libzstd_static PROPERTIES
IMPORTED_LOCATION "${zstd_STATIC_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
)
endif()
mark_as_advanced(
zstd_INCLUDE_DIR
zstd_DLL
zstd_SHARED_LIBRARY
zstd_STATIC_LIBRARY
)

View File

@@ -16,7 +16,7 @@ The following people have contributed to the project in some way, and are credit
- posix - @Richard-L, blexx - German
- @phoe-nix, @zkdpower - Chinese (Simplified)
- Sorer - @MojoJojoDojo - Hebrew
- Hipnosis - @Hipnosis183, MrHomunculus, @falsepopsky - Spanish, Spanish (Latin America)
- @Hipnosis183, @falsepopsky - Spanish (Latin America)
- @IlDucci - Spanish (Spain)
- @RaydenX93 - Italian
- @r57zone - Russian

1077
LICENSE

File diff suppressed because it is too large Load Diff

157
README.md
View File

@@ -1,15 +1,14 @@
# DuckStation - PlayStation 1, aka. PSX Emulator
[Features](#features) | [Downloading and Running](#downloading-and-running) | [Building](#building) | [Disclaimers](#disclaimers)
**Latest Builds for Windows 10/11 (x64/ARM64), Linux (AppImage/Flatpak), and macOS (11.0+ Universal):** https://github.com/stenzek/duckstation/releases/tag/latest
**Game Compatibility List:** https://docs.google.com/spreadsheets/d/e/2PACX-1vRE0jjiK_aldpICoy5kVQlpk2f81Vo6P4p9vfg4d7YoTOoDlH4PQHoXjTD2F7SdN8SSBLoEAItaIqQo/pubhtml
**Latest Builds for Windows 10/11 (x64/ARM64), Linux (AppImage x64/ARM32/ARM64), and macOS (13.3+ Universal):** https://github.com/stenzek/duckstation/releases/tag/latest
**Discord Server:** https://www.duckstation.org/discord.html
DuckStation is an simulator/emulator of the Sony PlayStation(TM) console, focusing on playability, speed, and long-term maintainability. The goal is to be as accurate as possible while maintaining performance suitable for low-end devices. "Hack" options are discouraged, the default configuration should support all playable games with only some of the enhancements having compatibility issues.
A "BIOS" ROM image is required to to start the emulator and to play games. You can use an image from any hardware version or region, although mismatching game regions and BIOS regions may have compatibility issues. A ROM image is not provided with the emulator for legal reasons, you should dump this from your own console using Caetla or other means.
A PS1 or PS2 "BIOS" ROM image is required to to start the emulator and to play games. You can use an image from any hardware version or region, although mismatching game regions and BIOS regions may have compatibility issues. A ROM image is not provided with the emulator for legal reasons, you should dump this from your own console using Caetla or other means.
## Features
@@ -23,20 +22,31 @@ DuckStation features a fully-featured frontend built using Qt, as well as a full
Other features include:
- CPU Recompiler/JIT (x86-64, armv7/AArch32, AArch64, RISC-V/RV64).
- Hardware (D3D11, D3D12, OpenGL, Vulkan, Metal) and software rendering.
- Hardware renderer supporting D3D11, D3D12, OpenGL, Vulkan and Metal APIs.
- Upscaling, texture filtering, and true colour (24-bit) in hardware renderers.
- PGXP for geometry precision, texture correction, and depth buffer emulation.
- Accurate blending via Rasterizer Order Views/Fragment Shader Interlock.
- Texture replacement system in hardware renderers.
- Vectorized and multi-threaded software renderer.
- Motion adaptive deinterlacing.
- Adaptive downsampling filter.
- Post processing shader chains (GLSL and experimental Reshade FX).
- Screen rotation for vertical or "TATE" shmup games.
- Post processing shader chains (GLSL, Reshade FX and Slang Presets).
- Border overlays/bezels displayed around game content.
- "Fast boot" for skipping BIOS splash/intro.
- Save state support.
- Save state support, with runahead and rewind.
- Windows, Linux, macOS support.
- Supports bin/cue images, raw bin/img files, MAME CHD, single-track ECM, MDS/MDF, and unencrypted PBP formats.
- Supports reading directly from CD, bin/cue images, raw bin/img files, MAME CHD, single-track ECM, MDS/MDF, and unencrypted PBP formats.
- Preloading of disc images to RAM to avoid disk sleeping hitches.
- Merging of multi-disc games in game list/grid with memory cards shared between discs.
- Automatic loading/applying of PPF patches.
- Direct booting of homebrew executables.
- Direct loading of Portable Sound Format (psf) files.
- Time stretched audio when running outside of 100% speed.
- Digital and analog controllers for input (rumble is forwarded to host).
- Namco GunCon lightgun support (simulated with mouse).
- GunCon and Justifier lightgun support (simulated with mouse).
- NeGcon support.
- Controller presets and per-game configuration.
- Qt and "Big Picture" UI.
- Automatic updates with preview and latest channels.
- Automatic content scanning - game titles/hashes are provided by redump.org.
@@ -47,27 +57,35 @@ Other features include:
- Integrated and remote debugging.
- Multitap controllers (up to 8 devices).
- RetroAchievements.
- Automatic loading/applying of PPF patches.
- Discord Rich Presence.
- Video capture with Media Foundation (Windows) and [FFmpeg](https://www.ffmpeg.org/) (All Platforms) backends.
- Free camera function.
- Parallel port cartridge emulation.
## System Requirements
- A CPU faster than a potato. But it needs to be x86_64 (SSE4.1), AArch32/armv7, AArch64/ARMv8, or RISC-V/RV64.
- For the hardware renderers, a GPU capable of OpenGL 3.1/OpenGL ES 3.1/Direct3D 11 Feature Level 10.0 (or Vulkan 1.0) and above. So, basically anything made in the last 10 years or so.
- A CPU faster than a potato. But it needs to be x86_64, AArch32/armv7, AArch64/ARMv8, or RISC-V/RV64.
- A GPU capable of OpenGL 3.1/OpenGL ES 3.1/Direct3D 11 Feature Level 10.0/Vulkan 1.0. So, basically anything made in the last 10 years or so.
- SDL, XInput or DInput compatible game controller (e.g. XB360/XBOne/XBSeries). DualShock 3 users on Windows will need to install the official DualShock 3 drivers included as part of PlayStation Now.
## Downloading and running
Binaries of DuckStation for Windows x64/ARM64, Linux x86_64 (in AppImage/Flatpak formats), and macOS Universal Binaries are available via GitHub Releases and are automatically built with every commit/push. Binaries or packages distributed through other sources may be out of date and are not supported by the developer, please speak to them for support, not us.
Binaries of DuckStation for Windows x64/ARM64, Linux x86_64/ARM32/ARM64 (in AppImage format), and macOS Universal Binaries are available via GitHub Releases and are automatically built with every commit/push.
For x86 machines (most systems), you will need a CPU that supports the SSE4.1 instruction set. This includes all CPUs manufactured after 2007. If you want to use DuckStation with a CPU that is older, [v0.1-6995](https://github.com/stenzek/duckstation/releases/tag/v0.1-6995) is the last version that does not require SSE4.1.
As per the terms of CC-BY-NC-ND, redistribution of **unmodified releases and code** is permitted. However, we would prefer if you linked to https://www.duckstation.org/ instead. Please note that pre-configured settings and packages are considered modifications.
For x86 machines (most systems), you will need a CPU that supports the SSE4.1 instruction set for the "normal" build. This includes all Intel CPUs manufactured after 2007, and AMD CPUs manufactured after 2011. If you have a CPU that is older, you will need to download the "SSE2" build from the releases page, which has lower performance but still supports these CPUs.
The main releases page is limited to the last 30 releases due to automatic updater limitations. Older releases can be downloaded from https://github.com/duckstation/old-releases/releases.
### Windows
DuckStation **requires** Windows 10/11, specifically version 1809 or newer. If you are still using Windows 7/8/8.1, DuckStation **will not run** on your operating system. Running these operating systems in 2023 should be considered a security risk, and I would recommend updating to something which receives vendor support.
If you must use an older operating system, [v0.1-5624](https://github.com/stenzek/duckstation/releases/tag/v0.1-5624) is the last version which will run. But do not expect to recieve any assistance, these builds are no longer supported.
If you must use an older operating system, [v0.1-5624](https://github.com/duckstation/old-releases/releases/tag/v0.1-5624) is the last version which will run. But do not expect to recieve any assistance, these builds are no longer supported.
To download:
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download the Windows x64 build. This is a zip archive containing the prebuilt binary.
- Alternatively, direct download link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-windows-x64-release.zip
- Extract the archive **to a subdirectory**. The archive has no root subdirectory, so extracting to the current directory will drop a bunch of files in your download directory if you do not extract to a subdirectory.
1. Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download the Windows x64 build. This is a zip archive containing the prebuilt binary. If you have an ARM64 Windows machine such as Snapdragon, download the Windows ARM64 build.
2. Alternatively, direct download link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-windows-x64-release.zip
3. Extract the archive **to a subdirectory**. The archive has no root subdirectory, so extracting to the current directory will drop a bunch of files in your download directory if you do not extract to a subdirectory.
Once downloaded and extracted, you can launch the emulator with `duckstation-qt-x64-ReleaseLTCG.exe`. Follow the Setup Wizard to get started.
@@ -75,47 +93,46 @@ Once downloaded and extracted, you can launch the emulator with `duckstation-qt-
### Linux
The only supported version of DuckStation for Linux are the AppImage and Flatpak in the releases page. If you installed DuckStation from another source or distribution (e.g. EmuDeck), you should contact the packager for support, we have no control over it.
The release on [Flathub](https://flathub.org/apps/org.duckstation.DuckStation) is official, and synchronized with the latest rolling/stable release on GitHub.
You **should not** install DuckStation from unofficial repositories such as the AUR, they are **known to be broken**.
DuckStation is provided for x86_64/ARM32/ARM64 Linux in AppImage formats.
#### AppImage
The AppImages require a distribution equivalent to Ubuntu 22.04 or newer to run.
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-x64.AppImage`.
- Run `chmod a+x` on the downloaded AppImage -- following this step, the AppImage can be run like a typical executable.
1. Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-x64.AppImage`.
2. Run `chmod a+x` on the downloaded AppImage -- following this step, the AppImage can be run like a typical executable.
#### Flatpak
If you were previously using the Flatpak package, to migrate your data from the Flatpak to the AppImage, you can run the following command:
```bash
mv ~/.var/app/org.duckstation.DuckStation/config/duckstation ~/.local/share
```
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-x64.flatpak`.
- Run `flatpak install ./duckstation-x64.flatpak`.
You will need to re-add your game directories after switching to the AppImage.
or, if you have FlatHub set up:
- Run `flatpak install org.duckstation.DuckStation`.
Use `flatpak run org.duckstation.DuckStation` to start, or select `DuckStation` in the launcher of your desktop environment. Follow the Setup Wizard to get started.
### macOS
Universal MacOS builds are provided for both x64 and ARM64 (Apple Silicon).
Universal macOS builds are provided for both x86_64 (Intel) and ARM64 (Apple Silicon).
MacOS Big Sir (11.0) is required, as this is also the minimum requirement for Qt.
macOS Ventura (13.3) is required, as this is also the minimum requirement for Qt.
To download:
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-mac-release.zip`.
- Extract the zip by double-clicking it.
- Open DuckStation.app, optionally moving it to your desired location first.
- Depending on GateKeeper configuration, you may need to right click -> Open the first time you run it, as code signing certificates are out of the question for a project which brings in zero revenue.
1. Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-mac-release.zip`.
2. Extract the zip by double-clicking it.
3. Open `DuckStation.app`, optionally moving it to your desired location first.
If you receive a message about the app being from an unidentified developer:
1. Open System Settings -> Privacy & Security, or enter "Gatekeeper" in the search bar.
2. Under the "Security" section, there should be a message about DuckStation being blocked. Click "Open Anyway".
Unfortunately this is required as Apple requires code signing for apps to be run without warnings, and I do not have a code signing certificate since a yearly cost is out of the question for a project which brings in zero revenue.
### Android
You will need a device with armv7 (32-bit ARM), AArch64 (64-bit ARM), or x86_64 (64-bit x86). 64-bit is preferred, the requirements are higher for 32-bit, you'll probably want at least a 1.5GHz CPU.
Download from Google Play: https://play.google.com/store/apps/details?id=com.github.stenzek.duckstation
APK and Beta Downloads: https://www.duckstation.org/android/
**No support is provided for the Android app**, it is free and your expectations should be in line with that. Please **do not** email me about issues about it, or ask for help, you will be ignored.
@@ -135,12 +152,19 @@ For example, if your disc image was named `Spyro3.cue`, you would place the SBI
CHD images with built-in subchannel information are also supported.
If you are playing directly from a disc and your CD/DVD drive does not support subchannel reading, or has a skew with the returned SubQ, you can place the SBI file in the `subchannels` directory under the user directory, with the serial or title of the game.
### Cheats and patch database
DuckStation ships with a built-in cheat and patch database, both provided by the community. Contributions to these are welcome at https://github.com/duckstation/chtdb.
Each release includes the latest version of the database, however you are free to manually update to the latest version as well.
## Building
### Windows
Requirements:
- Visual Studio 2022
- Visual Studio 2026 or newer with the "Desktop development with C++" workload installed.
1. Clone the respository: `git clone https://github.com/stenzek/duckstation.git`.
2. Download the dependencies pack from https://github.com/stenzek/duckstation-ext-qt-minimal/releases/download/latest/deps-x64.7z, and extract it to `dep\msvc`.
@@ -155,12 +179,12 @@ Requirements:
Ubuntu/Debian package names:
```
build-essential clang cmake curl extra-cmake-modules git libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdecor-0-dev libegl-dev libevdev-dev libfontconfig-dev libfreetype-dev libgtk-3-dev libgudev-1.0-dev libharfbuzz-dev libinput-dev libopengl-dev libpipewire-0.3-dev libpulse-dev libssl-dev libudev-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor-dev libxcb-damage0-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinput-dev libxcb-xkb-dev libxext-dev libxkbcommon-x11-dev libxrandr-dev lld llvm ninja-build pkg-config zlib1g-dev
autoconf automake build-essential clang cmake curl extra-cmake-modules git libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdecor-0-dev libegl-dev libevdev-dev libfontconfig-dev libfreetype-dev libgtk-3-dev libgudev-1.0-dev libharfbuzz-dev libinput-dev libopengl-dev libpipewire-0.3-dev libpulse-dev libssl-dev libudev-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor-dev libxcb-damage0-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinput-dev libxcb-xkb-dev libxext-dev libxkbcommon-x11-dev libxrandr-dev libxss-dev libtool lld llvm nasm ninja-build pkg-config zlib1g-dev
```
Fedora package names:
```
alsa-lib-devel brotli-devel clang cmake dbus-devel egl-wayland-devel extra-cmake-modules fontconfig-devel gcc-c++ gtk3-devel libcurl-devel libdecor-devel libevdev-devel libICE-devel libinput-devel libSM-devel libX11-devel libXau-devel libxcb-devel libXcomposite-devel libXcursor-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libxkbcommon-devel libxkbcommon-x11-devel libXpresent-devel libXrandr-devel libXrender-devel lld llvm make mesa-libEGL-devel mesa-libGL-devel ninja-build openssl-devel patch pcre2-devel perl-Digest-SHA pipewire-devel pulseaudio-libs-devel systemd-devel wayland-devel xcb-util-cursor-devel xcb-util-devel xcb-util-errors-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel xcb-util-xrm-devel zlib-devel
alsa-lib-devel autoconf automake brotli-devel clang cmake dbus-devel egl-wayland-devel extra-cmake-modules fontconfig-devel gcc-c++ gtk3-devel libavcodec-free-devel libavformat-free-devel libavutil-free-devel libcurl-devel libdecor-devel libevdev-devel libICE-devel libinput-devel libSM-devel libswresample-free-devel libswscale-free-devel libX11-devel libXau-devel libxcb-devel libXcomposite-devel libXcursor-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libxkbcommon-devel libxkbcommon-x11-devel libXpresent-devel libXrandr-devel libXrender-devel libXScrnSaver-devel libtool lld llvm make mesa-libEGL-devel mesa-libGL-devel nasm ninja-build openssl-devel patch pcre2-devel perl-Digest-SHA pipewire-devel pulseaudio-libs-devel systemd-devel wayland-devel xcb-util-cursor-devel xcb-util-devel xcb-util-errors-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel xcb-util-xrm-devel zlib-devel
```
#### Building
@@ -177,7 +201,6 @@ Requirements:
- CMake
- Xcode
1. Clone the repository: `git clone https://github.com/stenzek/duckstation.git`.
2. Build the dependencies. This will take a while. `scripts/deps/build-dependencies-mac.sh deps`.
2. Run CMake to configure the build system: `cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$PWD/deps"`.
@@ -190,27 +213,46 @@ An optional [SDL game controller database file](#sdl-game-controller-database) c
This is located in the following places depending on the platform you're using:
- Windows: My Documents\DuckStation
- Windows: `AppData\Local\DuckStation`
- Linux: `$XDG_DATA_HOME/duckstation`, or `~/.local/share/duckstation`.
- macOS: `~/Library/Application Support/DuckStation`.
So, if you were using Linux, you would place your BIOS images in `~/.local/share/duckstation/bios`. This directory will be created upon running DuckStation
for the first time.
So, if you were using Linux, you would place your BIOS images in `~/.local/share/duckstation/bios`. This directory will be created upon running DuckStation for the first time.
If you wish to use a "portable" build, where the user directory is the same as where the executable is located, create an empty file named `portable.txt`
in the same directory as the DuckStation executable.
If you wish to use a "portable" build, where the user directory is the same as where the executable is located, create an empty file named `portable.txt` in the same directory as the DuckStation executable.
A shortcut to open the user directory is available by selecting `Open Data Directory` from the `Tools` menu.
## Resource Overrides
DuckStation allows you to override certain resources by placing files in the `resources` subdirectory of the user directory. This includes images and sound effects (e.g. menu navigation/achievement unlock).
Sound effects must be in WAV format with a sample rate of 44100Hz, 16-bit, and stereo.
The directory structure for the overrides should follow the same structure as the `resources` directory in the program directory. For example, to override the achievement unlock sound:
1. Select `Open Data Directory` from the `Tools` menu.
2. Open the `resources` directory, then the `sounds` directory. You will likely have to create the `sounds` directory as the application does not create resource override subdirectories automatically.
3. Name your replacement file `unlock.wav`.
4. Relaunch the game (and Big Picture Mode) if it is running, as sound effects are cached.
**Do not place resource override files in the program directory**, as these will be overwritten when updating DuckStation.
Please note that not all resources are overridable for reliability reasons. This feature also will not work if DuckStation is configured in portable mode, as the user and program resources directory overlaps.
## Bindings for Qt frontend
Your keyboard or game controller can be used to simulate a variety of PlayStation controllers. Controller input is supported through DInput, XInput, and SDL backends and can be changed through `Settings -> General Settings`.
Your keyboard or game controller can be used to simulate a variety of PlayStation controllers. Controller input is supported through DInput, XInput, and SDL backends and can be changed through `Settings -> Controllers`.
To bind your input device, go to `Settings -> Controllers`. Each of the buttons/axes for the simulated controller will be listed, alongside the corresponding key/button on your device that it is currently bound to. To rebind, click the box next to the button/axis name, and press the key or button on your input device that you wish to bind to. When binding rumble, simply press any button on the controller you wish to send rumble to.
To bind your input device, go to `Settings -> Controllers`, and select the virtual controller you want to map. Automatic mapping handles the majority of controllers. However, if you need to manually bind a controller, click the box below the button/axis name, and press the key or button on your input device that you wish to bind to.
## SDL Game Controller Database
DuckStation releases ship with a database of game controller mappings for the SDL controller backend, courtesy of https://github.com/gabomdq/SDL_GameControllerDB. The included `gamecontrollerdb.txt` file can be found in the `database` subdirectory of the DuckStation program directory.
DuckStation releases ship with a database of game controller mappings for the SDL controller backend, courtesy of https://github.com/mdqinc/SDL_GameControllerDB. The included `gamecontrollerdb.txt` file can be found in the `resources` subdirectory of the DuckStation program directory.
If you are experiencing issues binding your controller with the SDL controller backend, you may need to add a custom mapping to the database file. Make a copy of `gamecontrollerdb.txt` and place it in your [user directory](#user-directories) (or directly in the program directory, if running in portable mode) and then follow the instructions in the [SDL_GameControllerDB repository](https://github.com/gabomdq/SDL_GameControllerDB) for creating a new mapping. Add this mapping to the new copy of `gamecontrollerdb.txt` and your controller should then be recognized properly.
If you are experiencing issues binding your controller with the SDL controller backend, you may need to add a custom mapping to the database file. Make a copy of `gamecontrollerdb.txt` and place it in your [user directory](#user-directories) (or directly in the program directory, if running in portable mode) and then follow the instructions in the [SDL_GameControllerDB repository](https://github.com/mdqinc/SDL_GameControllerDB) for creating a new mapping. Add this mapping to the new copy of `gamecontrollerdb.txt` and your controller should then be recognized properly.
## Default bindings
Bindings for controllers and hotkeys can be changed in `Settings -> Controllers`.
Controller 1:
- **Left Stick:** W/A/S/D
- **Right Stick:** T/F/G/H
@@ -224,6 +266,11 @@ Controller 1:
Hotkeys:
- **Escape:** Open Pause Menu
- **F1:** Load State
- **F2:** Save State
- **F3:** Select Previous Save State
- **F4:** Select Next Save State
- **F10:** Save Screenshot
- **F11:** Toggle Fullscreen
- **Tab:** Temporarily Disable Speed Limiter
- **Space:** Pause/Resume Emulation

View File

@@ -1,6 +1,7 @@
Tradução:
# DuckStation - Emulador de PlayStation 1, também conhecido como PSX
[Últimas Notícias](#latest-news) | [Recursos](#features) | [Download e Execução](#downloading-and-running) | [Compilação](#building) | [Avisos Legais](#disclaimers)
**Últimas Versões para Windows 10/11, Linux (AppImage/Flatpak) e macOS:** https://github.com/stenzek/duckstation/releases/tag/latest
@@ -93,19 +94,19 @@ ou, se você tiver o FlatHub configurado:
- Execute `flatpak install org.duckstation.DuckStation`.
Use `flatpak run org.duckstation.DuckStation` para iniciar, ou selecione `DuckStation` no lançador do seu ambiente de desktop. Siga o Assistente de Configuração para começar.
### macOS
São fornecidas compilações universais do MacOS para x64 e ARM64 (Apple Silicon).
São fornecidas compilações universais do macOS para x86_64 (Intel) e ARM64 (Apple Silicon).
MacOS Big Sir (11.0) é necessário, pois também é o requisito mínimo para o Qt.
macOS Ventura (13.3) é necessário, pois também é o requisito mínimo para o Qt.
Para baixar:
- Acesse https://github.com/stenzek/duckstation/releases/tag/latest e baixe `duckstation-mac-release.zip`.
- Extraia o arquivo ZIP dando um duplo clique nele.
- Abra o DuckStation.app, opcionalmente movendo-o para a localização desejada antes.
- Abra o `DuckStation.app`, opcionalmente movendo-o para a localização desejada antes.
- Dependendo da configuração do GateKeeper, você pode precisar clicar com o botão direito -> Abrir na primeira vez que executá-lo, já que certificados de assinatura de código estão fora de questão para um projeto que não gera receita alguma.
### Android
Você precisará de um dispositivo com armv7 (32 bits ARM), AArch64 (64 bits ARM) ou x86_64 (64 bits x86). 64 bits são preferíveis, os requisitos são mais altos para 32 bits, você provavelmente vai querer pelo menos um CPU de 1,5 GHz.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4750,13 +4750,13 @@ SLUS-00784:
- size: 204887424
md5: "0ce86b034427b7c79a85bec2f88c6e0e"
SLPS-01830:
name: "Animetic Story Game 1 - Card Captor Sakura (Japan) (Disc 1)"
name: "Animetic Story Game 1 - Cardcaptor Sakura (Japan) (Disc 1)"
trackData:
- tracks:
- size: 477145536
md5: "93653eb589658a67899394ad52acc3cb"
SLPS-01831:
name: "Animetic Story Game 1 - Card Captor Sakura (Japan) (Disc 2)"
name: "Animetic Story Game 1 - Cardcaptor Sakura (Japan) (Disc 2)"
trackData:
- tracks:
- size: 455318976
@@ -14685,13 +14685,13 @@ SLUS-00494:
- size: 32332944
md5: "cda4ae739eeceb0541886c6ebaa7b57a"
SLPS-02561:
name: "Card Captor Sakura - Clowcard Magic (Japan)"
name: "Cardcaptor Sakura - Clow Card Magic (Japan)"
trackData:
- tracks:
- size: 617938608
md5: "259802e85fb1fe3b5f39c78033c7efd0"
SLPS-02560:
name: "Card Captor Sakura - Clowcard Magic (Japan) (Genteiban)"
name: "Cardcaptor Sakura - Clow Card Magic (Japan) (Genteiban)"
trackData:
- tracks:
- size: 617940960
@@ -67487,13 +67487,13 @@ PAPX-90044:
- size: 331662576
md5: "de973cbfc9516106adac69984041f7be"
SCPS-45317:
name: "Metal Gear Solid (Asia) (Disc 1)"
name: "Metal Gear Solid (Japan, Asia) (Disc 1) (Ichi) (Premium Package)"
trackData:
- tracks:
- size: 710005296
md5: "d3b48095ed5d2a81a51d2b8ccd2ef766"
SCPS-45318:
name: "Metal Gear Solid (Asia) (Disc 2)"
name: "Metal Gear Solid (Japan, Asia) (Disc 2) (Ni) (Premium Package)"
trackData:
- tracks:
- size: 735526848
@@ -67658,18 +67658,6 @@ SLUS-90062:
- tracks:
- size: 123924528
md5: "794c18d04a31d1e7c5b39bbe4d088afa"
SLPM-86111:
name: "Metal Gear Solid [Premium Package Sai Hakkou Kinen]"
trackData:
- tracks:
- size: 710005296
md5: "d3b48095ed5d2a81a51d2b8ccd2ef766"
- tracks:
- size: 735526848
md5: "7c43ca912cdbde3f0e23d90f2a799ffa"
- tracks:
- size: 225474480
md5: "c55b7888dee7b6c471d25a0000c4dc32"
SLPS-00008:
name: "Metal Jacket (Japan)"
trackData:
@@ -80446,6 +80434,13 @@ LSP-180210:
- tracks:
- size: 142627632
md5: "92389d0f95fd92337a3a53831a5dbfd7"
LSP-90535200:
name: "P.K.'s Place 2 - Hoopo at Sea! (USA) (Rev 1)"
trackData:
- version: Rev 1
tracks:
- size: 123830448
md5: "1b8a72c9b778392ab55b5cb91afd9ce3"
LSP-180310:
name: "P.K.'s Place 3 - Carlos at the Races! (USA)"
trackData:
@@ -117489,7 +117484,7 @@ SLPS-00321:
- size: 4377072
md5: "00d4f2b9eba8200785726e7b4d427348"
SLPS-02886:
name: "Tetris with Card Captor Sakura - Eternal Heart (Japan)"
name: "Tetris with Cardcaptor Sakura - Eternal Heart (Japan)"
trackData:
- tracks:
- size: 382611600

3291
data/resources/discsets.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,202 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#ffffff" d="M12 2C17.52 2 22 6.48 22 12C22 17.52 17.52 22 12 22C6.48 22 2 17.52 2 12C2 6.48 6.48 2 12 2ZM12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20ZM12 11H16V13H12V16L8 12L12 8V11Z"></path></svg>

After

Width:  |  Height:  |  Size: 316 B

View File

@@ -0,0 +1,9 @@
void main()
{
// Radial gradient at (0.6, 0.4), moving horizontally slowly
float r1 = length(v_tex0 - vec2(0.6, 0.4));
float r2 = length(v_tex0 - vec2(0.61, 0.41));
float r = mix(r1, r2, sin(u_time / 5.0));
vec3 bg_color = vec3(0.1, 0.1, 0.6) * (1.0f - r);
o_col0 = vec4(bg_color, 1.0);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -0,0 +1,10 @@
void main()
{
vec2 uv = v_tex0 * 2.0 - 1.0;
uv.x *= u_display_size.x / u_display_size.y;
vec2 center = vec2(cos(u_time * 0.2) * 1.5, (sin(u_time * 0.2) * 0.2) * 0.5 + 1.2);
float dist = length(uv - center);
float gradient = smoothstep(0.0, 1.0, dist);
o_col0 = vec4(mix(vec3(0.5, 0.5, 0.9), vec3(0.05, 0.05, 0.2), gradient), 1.0);
}

View File

@@ -0,0 +1,30 @@
const float PI = 3.14159265359;
const float SCALE = 150.0;
const float LENGTH = 7.5;
// https://www.shadertoy.com/view/Xt23Ry
float rand(float co) {
return fract(sin(co * 91.3458) * 47453.5453);
}
vec3 background(vec2 pos) {
// Radial gradient at (0.6, 0.4).
float r = length(pos - vec2(0.6, 0.4));
return vec3(r * 0.1);
}
// Inspired by https://www.shadertoy.com/view/Wtl3D7
vec3 trails(vec2 pos, vec3 bg_color, vec3 fg_color) {
float cdist = length(pos) * SCALE;
float rv = rand(ceil(cdist));
float rotation = u_time * rv * 0.005;
float nangle = atan(pos.y, pos.x) / PI;
float intensity = smoothstep(rv, rv - 1.5, fract(nangle + rotation + rv * 0.1) * LENGTH) * step(0.1, cdist / SCALE);
return mix(bg_color, fg_color * rv, intensity);
}
void main() {
vec3 bg_color = background(v_tex0);
vec3 fg_color = vec3(0.7, 0.7, 1.5);
o_col0 = vec4(trails(v_tex0, bg_color, fg_color), 1.0);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#ffffff" d="M21 3C21.5523 3 22 3.44772 22 4V11H20V5H4V19H10V21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H21ZM21 13C21.5523 13 22 13.4477 22 14V20C22 20.5523 21.5523 21 21 21H13C12.4477 21 12 20.5523 12 20V14C12 13.4477 12.4477 13 13 13H21ZM11.5 7L9.45711 9.04311L11.7071 11.2929L10.2929 12.7071L8.04311 10.4571L6 12.5V7H11.5Z"></path></svg>

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 512 512"
version="1.1"
id="svg1"
sodipodi:docname="exit.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.640625"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-width="2856"
inkscape:window-height="1651"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
fill="#ffffff"
d="m 363.3838,123.77433 108.17663,108.17663 c 6.3426,6.3426 9.95436,15.06368 9.95436,24.04904 0,8.98535 -3.61176,17.70643 -9.95436,24.04904 L 363.3838,388.22566 c -5.63787,5.63787 -13.21376,8.72108 -21.14202,8.72108 -16.47315,0 -29.86309,-13.38994 -29.86309,-29.86309 V 312.37869 H 199.6213 c -15.59223,0 -28.18935,-12.59711 -28.18935,-28.18935 v -56.37869 c 0,-15.59223 12.59712,-28.18935 28.18935,-28.18935 h 112.75739 v -54.70496 c 0,-16.47315 13.38994,-29.86309 29.86309,-29.86309 7.92826,0 15.50415,3.1713 21.14202,8.72108 z m -191.95185,-8.72108 h -56.3787 c -15.59222,0 -28.189349,12.59712 -28.189349,28.18935 v 225.51479 c 0,15.59223 12.597119,28.18935 28.189349,28.18935 h 56.3787 c 15.59223,0 28.18935,12.59712 28.18935,28.18935 0,15.59223 -12.59712,28.18935 -28.18935,28.18935 h -56.3787 c -46.688603,0 -84.56804,-37.87944 -84.56804,-84.56805 V 143.2426 c 0,-46.688607 37.879437,-84.568041 84.56804,-84.568041 h 56.3787 c 15.59223,0 28.18935,12.597115 28.18935,28.189347 0,15.592224 -12.59712,28.189344 -28.18935,28.189344 z"
id="path1"
style="stroke-width:0.880917" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 640 640"
version="1.1"
id="svg1"
sodipodi:docname="game-list.svg"
width="640"
height="640"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#000001"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.93429246"
inkscape:cx="436.69409"
inkscape:cy="330.73156"
inkscape:window-width="2844"
inkscape:window-height="1651"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
fill="#ffffff"
d="m 264.14016,286.21023 c -46.25894,0 -83.78977,37.53084 -83.78977,83.78977 0,46.25893 37.53083,83.78978 83.78977,83.78978 h 111.71968 c 46.25894,0 83.78977,-37.53085 83.78977,-83.78978 0,-46.25894 -37.53083,-83.78977 -83.78977,-83.78977 z m 132.66713,45.38613 a 17.456203,17.456203 0 1 1 0,34.91239 17.456203,17.456203 0 1 1 0,-34.91239 z m -45.38612,59.35108 a 17.456203,17.456203 0 1 1 34.91239,0 17.456203,17.456203 0 1 1 -34.91239,0 z m -97.75473,-45.38612 c 0,-5.80419 4.66954,-10.47373 10.47372,-10.47373 5.80418,0 10.47371,4.66954 10.47371,10.47373 v 13.96496 h 13.96497 c 5.80417,0 10.47373,4.66953 10.47373,10.47372 0,5.80419 -4.66954,10.47372 -10.47373,10.47372 h -13.96497 v 13.96496 c 0,5.80419 -4.66953,10.47373 -10.47371,10.47373 -5.80419,0 -10.47372,-4.66954 -10.47372,-10.47373 v -13.96496 h -13.96496 c -5.8042,0 -10.47373,-4.66953 -10.47373,-10.47372 0,-5.8042 4.66953,-10.47373 10.47373,-10.47373 h 13.96496 z"
id="path1"
style="stroke-width:0.436405" />
<path
fill="#ffffff"
d="m 89.226718,138.67812 c -9.066093,0 -16.483806,7.41772 -16.483806,16.48381 v 329.67613 c 0,9.06609 7.417713,16.4838 16.483806,16.4838 H 550.77329 c 9.06608,0 16.4838,-7.41771 16.4838,-16.4838 V 155.16193 c 0,-9.06609 -7.41772,-16.48381 -16.4838,-16.48381 z m -65.935226,16.48381 c 0,-36.36739 29.567828,-65.935223 65.935226,-65.935223 H 550.77329 c 36.36739,0 65.93522,29.567833 65.93522,65.935223 v 329.67613 c 0,36.36739 -29.56783,65.93523 -65.93522,65.93523 H 89.226718 c -36.367398,0 -65.935226,-29.56784 -65.935226,-65.93523 z m 98.902838,65.93523 c 0,-18.20753 14.76011,-32.96759 32.96761,-32.96759 18.20751,0 32.96761,14.76006 32.96761,32.96759 0,18.20752 -14.7601,32.96759 -32.96761,32.96759 -18.2075,0 -32.96761,-14.76007 -32.96761,-32.96759 z m 107.14475,0 c 0,-13.70217 11.02352,-24.72572 24.72569,-24.72572 h 230.77329 c 13.70216,0 24.72571,11.02355 24.72571,24.72572 0,13.70217 -11.02355,24.72572 -24.72571,24.72572 H 254.06477 c -13.70217,0 -24.72569,-11.02355 -24.72569,-24.72572 z"
id="path1-5"
style="stroke-width:1.03024"
sodipodi:nodetypes="ssssssssssssssssssssssssssssss" />
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#ffffff" d="M2.13127 13.6308C1.9492 12.5349 1.95521 11.434 2.13216 10.3695C3.23337 10.3963 4.22374 9.86798 4.60865 8.93871C4.99357 8.00944 4.66685 6.93557 3.86926 6.17581C4.49685 5.29798 5.27105 4.51528 6.17471 3.86911C6.9345 4.66716 8.0087 4.99416 8.93822 4.60914C9.86774 4.22412 10.3961 3.23332 10.369 2.13176C11.4649 1.94969 12.5658 1.9557 13.6303 2.13265C13.6036 3.23385 14.1319 4.22422 15.0612 4.60914C15.9904 4.99406 17.0643 4.66733 17.8241 3.86975C18.7019 4.49734 19.4846 5.27153 20.1308 6.1752C19.3327 6.93499 19.0057 8.00919 19.3907 8.93871C19.7757 9.86823 20.7665 10.3966 21.8681 10.3695C22.0502 11.4654 22.0442 12.5663 21.8672 13.6308C20.766 13.6041 19.7756 14.1324 19.3907 15.0616C19.0058 15.9909 19.3325 17.0648 20.1301 17.8245C19.5025 18.7024 18.7283 19.4851 17.8247 20.1312C17.0649 19.3332 15.9907 19.0062 15.0612 19.3912C14.1316 19.7762 13.6033 20.767 13.6303 21.8686C12.5344 22.0507 11.4335 22.0447 10.3691 21.8677C10.3958 20.7665 9.86749 19.7761 8.93822 19.3912C8.00895 19.0063 6.93508 19.333 6.17532 20.1306C5.29749 19.503 4.51479 18.7288 3.86862 17.8252C4.66667 17.0654 4.99367 15.9912 4.60865 15.0616C4.22363 14.1321 3.23284 13.6038 2.13127 13.6308ZM11.9997 15.0002C13.6565 15.0002 14.9997 13.657 14.9997 12.0002C14.9997 10.3433 13.6565 9.00018 11.9997 9.00018C10.3428 9.00018 8.99969 10.3433 8.99969 12.0002C8.99969 13.657 10.3428 15.0002 11.9997 15.0002Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 512 512"
version="1.1"
id="svg1"
sodipodi:docname="start-bios.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.640625"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-width="2852"
inkscape:window-height="1651"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
fill="#ffffff"
d="m 186.11835,53.343194 c 0,-11.617826 -9.34668,-20.964498 -20.9645,-20.964498 -11.61782,0 -20.9645,9.346672 -20.9645,20.964498 v 34.940832 c -30.83528,0 -55.905324,25.070044 -55.905324,55.905324 H 53.343194 c -11.617826,0 -20.964498,9.34668 -20.964498,20.9645 0,11.61782 9.346672,20.9645 20.964498,20.9645 H 88.284026 V 235.0355 H 53.343194 c -11.617826,0 -20.964498,9.34668 -20.964498,20.96449 0,11.61783 9.346672,20.96451 20.964498,20.96451 h 34.940832 v 48.91716 H 53.343194 c -11.617826,0 -20.964498,9.34666 -20.964498,20.96449 0,11.61783 9.346672,20.9645 20.964498,20.9645 h 34.940832 c 0,30.83528 25.070044,55.90533 55.905324,55.90533 v 34.94082 c 0,11.61783 9.34668,20.9645 20.9645,20.9645 11.61782,0 20.9645,-9.34667 20.9645,-20.9645 v -34.94082 h 48.91715 v 34.94082 c 0,11.61783 9.34668,20.9645 20.96449,20.9645 11.61783,0 20.96451,-9.34667 20.96451,-20.9645 v -34.94082 h 48.91716 v 34.94082 c 0,11.61783 9.34666,20.9645 20.96449,20.9645 11.61783,0 20.9645,-9.34667 20.9645,-20.9645 v -34.94082 c 30.83528,0 55.90533,-25.07005 55.90533,-55.90533 h 34.94082 c 11.61783,0 20.9645,-9.34667 20.9645,-20.9645 0,-11.61783 -9.34667,-20.96449 -20.9645,-20.96449 H 423.71598 V 276.9645 h 34.94082 c 11.61783,0 20.9645,-9.34668 20.9645,-20.96451 0,-11.61781 -9.34667,-20.96449 -20.9645,-20.96449 h -34.94082 v -48.91715 h 34.94082 c 11.61783,0 20.9645,-9.34668 20.9645,-20.9645 0,-11.61782 -9.34667,-20.9645 -20.9645,-20.9645 h -34.94082 c 0,-30.83528 -25.07005,-55.905324 -55.90533,-55.905324 V 53.343194 c 0,-11.617826 -9.34667,-20.964498 -20.9645,-20.964498 -11.61783,0 -20.96449,9.346672 -20.96449,20.964498 V 88.284026 H 276.9645 V 53.343194 c 0,-11.617826 -9.34668,-20.964498 -20.96451,-20.964498 -11.61781,0 -20.96449,9.346672 -20.96449,20.964498 v 34.940832 h -48.91715 z m -13.97634,90.846156 h 167.71598 c 15.46131,0 27.95266,12.49134 27.95266,27.95266 v 167.71598 c 0,15.46131 -12.49135,27.95266 -27.95266,27.95266 H 172.14201 c -15.46132,0 -27.95266,-12.49135 -27.95266,-27.95266 V 172.14201 c 0,-15.46132 12.49134,-27.95266 27.95266,-27.95266 z m 167.71598,27.95266 H 172.14201 v 167.71598 h 167.71598 z"
id="path1"
style="stroke-width:0.87352" />
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 512 512"
version="1.1"
id="svg1"
sodipodi:docname="start-disc.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.8685849"
inkscape:cx="269.72282"
inkscape:cy="294.60797"
inkscape:window-width="2856"
inkscape:window-height="1652"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
fill="#ffffff"
d="m 49.005172,256 a 206.99483,206.99483 0 1 1 413.989658,0 206.99483,206.99483 0 1 1 -413.989658,0 z M 256,281.87436 a 25.874355,25.874355 0 1 1 0,-51.74871 25.874355,25.874355 0 1 1 0,51.74871 z M 178.37694,256 a 77.62306,77.62306 0 1 0 155.24612,0 77.62306,77.62306 0 1 0 -155.24612,0 z m -51.7487,-12.93717 c 0,-28.30008 14.15003,-57.48958 36.54752,-79.88707 22.39749,-22.39749 51.58699,-36.54752 79.88707,-36.54752 7.11544,0 12.93717,-5.82173 12.93717,-12.93718 0,-7.11545 -5.82173,-12.93718 -12.93717,-12.93718 -36.70924,0 -72.12476,18.03119 -98.24169,44.06726 -26.11692,26.03607 -44.06726,61.53245 -44.06726,98.24169 0,7.11544 5.82173,12.93717 12.93718,12.93717 7.11545,0 12.93718,-5.82173 12.93718,-12.93717 z"
id="path1"
style="stroke-width:0.808574" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 576"
version="1.1"
id="svg1"
sodipodi:docname="start-file.svg"
width="576"
height="576"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.640625"
inkscape:cx="287.81065"
inkscape:cy="225.70414"
inkscape:window-width="2852"
inkscape:window-height="1651"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
fill="#ffffff"
d="m 375.58614,492.32782 h 43.78453 c 10.39883,0 19.97669,-5.47306 25.17611,-14.50363 L 546.71069,302.68606 c 5.29063,-9.03055 5.29063,-20.15913 0.0912,-29.2809 -5.19941,-9.12179 -14.77728,-14.59484 -25.26731,-14.59484 H 156.66347 c -10.39883,0 -19.9767,5.47306 -25.17611,14.50363 L 69.0944,380.22117 V 142.05155 c 0,-8.02715 6.567679,-14.59484 14.594844,-14.59484 H 190.87013 c 3.83116,0 7.57108,1.55071 10.30762,4.28724 l 24.17271,24.17271 c 19.15573,19.15573 45.15279,29.91943 72.24447,29.91943 h 107.1809 c 8.02716,0 14.59484,6.56767 14.59484,14.59484 v 29.1897 h 43.78454 v -29.1897 c 0,-32.19988 -26.17951,-58.37938 -58.37938,-58.37938 h -107.1809 c -15.50702,0 -30.37551,-6.11158 -41.32164,-17.05772 L 232.10058,100.72991 C 221.15444,89.783772 206.28594,83.672181 190.77892,83.672181 H 83.689244 c -32.199876,0 -58.379378,26.179509 -58.379378,58.379369 v 291.89689 c 0,32.19988 26.179502,58.37938 58.379378,58.37938 h 21.618616 z"
id="path1"
style="stroke-width:0.912178" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="810" height="540">
<rect width="810" height="540" fill="#FCDD09"/>
<path stroke="#DA121A" stroke-width="60" d="M0,90H810m0,120H0m0,120H810m0,120H0"/>
</svg>

After

Width:  |  Height:  |  Size: 242 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600"><path fill="#EE1C25" d="M0 0h900v600H0"/><g transform="translate(150,150) scale(3)"><path id="s" d="M0,-30 17.63355,24.27051 -28.53171,-9.27051H28.53171L-17.63355,24.27051" fill="#FF0"/></g><use xlink:href="#s" transform="translate(300,60) rotate(23.036243)"/><use xlink:href="#s" transform="translate(360,120) rotate(45.869898)"/><use xlink:href="#s" transform="translate(360,210) rotate(69.945396)"/><use xlink:href="#s" transform="translate(300,270) rotate(20.659808)"/></svg>

After

Width:  |  Height:  |  Size: 587 B

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="900" height="600">
<rect width="900" height="600" fill="#d7141a"/>
<rect width="900" height="300" fill="#fff"/>
<path d="M 450,300 0,0 V 600 z" fill="#11457e"/>
</svg>

After

Width:  |  Height:  |  Size: 275 B

View File

@@ -0,0 +1 @@
<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37 28"><path fill="#c8102e" d="M0,0H37V28H0Z"/><path stroke="#fff" stroke-width="4" d="M0,14h37M14,0v28"/></svg>

After

Width:  |  Height:  |  Size: 186 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600" viewBox="0 0 9 6">
<rect fill="#21468B" width="9" height="6"/>
<rect fill="#FFF" width="9" height="4"/>
<rect fill="#AE1C28" width="9" height="2"/>
</svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="1200" height="600">
<clipPath id="s">
<path d="M0,0 v30 h60 v-30 z"/>
</clipPath>
<clipPath id="t">
<path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/>
</clipPath>
<g clip-path="url(#s)">
<path d="M0,0 v30 h60 v-30 z" fill="#012169"/>
<path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/>
<path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#C8102E" stroke-width="4"/>
<path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/>
<path d="M30,0 v30 M0,15 h60" stroke="#C8102E" stroke-width="6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 641 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1100" viewBox="0 0 18 11">
<rect width="18" height="11" fill="#fff"/>
<path d="M0,5.5h18M6.5,0v11" stroke="#002F6C" stroke-width="3"/>
</svg>

After

Width:  |  Height:  |  Size: 241 B

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"><rect width="900" height="600" fill="#ED2939"/><rect width="600" height="600" fill="#fff"/><rect width="300" height="600" fill="#002395"/></svg>

After

Width:  |  Height:  |  Size: 249 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="600" viewBox="0 0 5 3">
<desc>Flag of Germany</desc>
<rect id="black_stripe" width="5" height="3" y="0" x="0" fill="#000"/>
<rect id="red_stripe" width="5" height="2" y="1" x="0" fill="#D00"/>
<rect id="gold_stripe" width="5" height="1" y="2" x="0" fill="#FFCE00"/>
</svg>

After

Width:  |  Height:  |  Size: 491 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400" viewBox="0 0 27 18">
<rect fill="#0D5EAF" width="27" height="18"/>
<path fill="none" stroke-width="2" stroke="#FFF" d="M5,0V11 M0,5H10 M10,3H27 M10,7H27 M0,11H27 M0,15H27"/>
</svg>

After

Width:  |  Height:  |  Size: 284 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="800"><path d="M 0,0 H 1100 V 800 H 0 Z" fill="#fff"/><path d="M 0,75 H 1100 V 200 H 0 Z" fill="#0038b8"/><path d="M 0,600 H 1100 V 725 H 0 Z" fill="#0038b8"/><path d="M 423.81566,472.85253 H 676.18435 L 550.00001,254.29492 Z m 126.18435,72.85255 126.1843,-218.55765 H 423.81566 Z" fill="none" stroke="#0038b8" stroke-width="27.5"/></svg>

After

Width:  |  Height:  |  Size: 398 B

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="630" height="360">
<rect width="630" height="360" fill="#da0000"/>
<rect width="630" height="240" fill="#fff"/>
<rect width="630" height="120" fill="#239f40"/>
<g transform="translate(8.4,100.4)">
<g id="tb4">
<g id="tb1" fill="none" stroke="#fff" stroke-width="2">
<path id="tbp1" d="M0,1H26M1,10V5H9V9H17V5H12M4,9H6M26,9H21V5H29M29,0V9H37V0M33,0V9" transform="scale(1.4)"/>
<path id="tbp2" d="M0,7H9M10,7H19" transform="scale(2.8)"/>
<use xlink:href="#tbp2" y="120"/>
<use xlink:href="#tbp1" y="145.2"/>
</g>
<g id="tb3">
<use xlink:href="#tb1" x="56"/>
<use xlink:href="#tb1" x="112"/>
<use xlink:href="#tb1" x="168"/>
</g>
</g>
<use xlink:href="#tb3" x="168"/>
<use xlink:href="#tb4" x="392"/>
</g>
<g fill="#da0000" transform="matrix(45,0,0,45,315,180)">
<g id="emblem_half">
<path d="M-0.54815,0.83638A0.912046,0.912046 0 0,0 0.328544,-0.722384A1,1 0 0,1 -0.54815,0.83638"/>
<path d="M0.618339,0.661409A0.763932,0.763932 0 0,0 0.421644,-0.741049A1,1 0 0,1 0.618339,0.661409"/>
<path d="M0,1 -0.05,0 0,-0.787278A0.309995,0.309995 0 0,0 0.118034,-0.688191V-0.100406L0.077809,0.892905z"/>
<path d="M-0.02,-0.85 0,-0.831217A0.14431,0.14431 0 0,0 0.252075,-0.967708A0.136408,0.136408 0 0,1 0,-0.924634"/>
</g>
<use xlink:href="#emblem_half" transform="scale(-1,1)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1500" height="1000" viewBox="0 0 3 2">
<rect width="3" height="2" fill="#009246"/>
<rect width="2" height="2" x="1" fill="#fff"/>
<rect width="1" height="2" x="2" fill="#ce2b37"/>
</svg>

After

Width:  |  Height:  |  Size: 273 B

View File

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 234 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600" viewBox="-72 -48 144 96"><path fill="#fff" d="M-72-48v96H72v-96z"/><g stroke="#000" stroke-width="4"><path transform="rotate(33.69006752598)" d="M-50-12v24m6 0v-24m6 0v24m76 0V1m0-2v-11m6 0v11m0 2v11m6 0V1m0-2v-11"/><path transform="rotate(-33.69006752598)" d="M-50-12v24m6 0V1m0-2v-11m6 0v24m76 0V1m0-2v-11m6 0v24m6 0V1m0-2v-11"/></g><g transform="rotate(33.69006752598)"><path fill="#cd2e3a" d="M12 0a18 18 0 11-36 0 24 24 0 1148 0"/><path fill="#0047a0" d="M0 0a12 12 0 1124 0 24 24 0 11-48 0 12 12 0 1024 0"/></g></svg>

After

Width:  |  Height:  |  Size: 588 B

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600">
<desc>Japanese flag</desc>
<rect fill="#fff" height="600" width="900"/>
<circle fill="#bc002d" cx="450" cy="300" r="180"/>
</svg>

After

Width:  |  Height:  |  Size: 234 B

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Creator: CorelDRAW -->
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<rect fill="#969594" width="600" height="400"/>
<rect fill="#c2c1c1" width="400" height="400"/>
<rect fill="#72706f" width="200" height="400"/>
</svg>

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 22 16">
<title>Flag of Norway</title>
<rect width="22" height="16" fill="#ba0c2f"/>
<path d="M0,8h22M8,0v16" stroke="#fff" stroke-width="4"/>
<path d="M0,8h22M8,0v16" stroke="#00205b" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 319 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Creator: CorelDRAW -->
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<rect fill="#969594" width="600" height="400"/>
<rect fill="#c2c1c1" width="400" height="400"/>
<rect fill="#72706f" width="200" height="400"/>
<path fill="#fff" stroke="#000" stroke-width="0.1524" d="M348.367 270.386h-93.7054v-9.3454c0-15.9122 1.768-28.8778 5.3882-38.8124 3.6202-10.0188 9.0086-19.0274 16.1648-27.2782 7.1564-8.2508 23.237-22.7318 48.242-43.443 13.3024-10.8608 19.9534-20.7954 19.9534-29.8038 0-9.0928-2.694-16.0808-7.9982-21.1322-5.3882-4.9674-13.4706-7.4932-24.3314-7.4932-11.7026 0-21.3006 3.873-28.962 11.6186-7.6614 7.6614-12.5446 21.2164-14.6494 40.412l-95.7262-11.871c3.2836-35.1922 16.0808-63.4806 38.3074-84.9496 22.3108-21.469 56.4928-32.1612 102.546-32.1612 35.8658 0 64.7436 7.493 86.8018 22.395 29.8882 20.2902 44.8744 47.2316 44.8744 80.9084 0 13.9758-3.8728 27.5306-11.6186 40.4962-7.6614 12.9656-23.4894 28.8778-47.3158 47.5684-16.5858 13.2182-27.1098 23.7422-31.4878 31.7404-4.2938 7.914-6.4828 18.3538-6.4828 31.151zm-96.989 24.9208h100.441v88.5698H251.378v-88.5698z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More