Compare commits

3762 Commits

Author SHA1 Message Date
Stenzek
5f7037f347 Feature: Add scripting interface 2024-06-24 17:16:13 +10:00
Stenzek
8c1228a7aa Qt: Tidy up theme change workaround 2024-06-24 13:25:16 +10:00
Stenzek
db305660c1 Achievements: Implement disc change without state reset 2024-06-24 13:16:50 +10:00
Stenzek
b9ff358ab3 Achievements: Support scratchpad memory 2024-06-24 13:16:50 +10:00
Stenzek
e7e09023e2 Achievements: Avoid malloc on state save/load 2024-06-24 13:16:50 +10:00
Stenzek
17d459511a dep/rcheevos: Hash functions are not needed 2024-06-24 13:16:49 +10:00
Stenzek
1a2ad89a17 dep/rcheevos: Bump to d54cf8f 2024-06-24 13:16:49 +10:00
Anderson Cardoso
dd4b282ec5 Atualização Português do Brasil (#3233)
- Feito ajustes de consistência no texto;
- Novas linhas movidas adicionadas;
- Atualizado para versão atual.
2024-06-24 10:17:14 +10:00
Hyllian
9189588554 Shaders: Add new pack of shaders (reshade) (#3232)
- Add crt-geom, super-xbr, geom, multi-LUT, deblur-luma, bicubic and lanczos3. All .fx shaders;
- Added some LUTs.
2024-06-24 10:16:51 +10:00
Stenzek
6021e435ba Qt: Work around QList<QPair> marshalling issue 2024-06-24 00:55:00 +10:00
Stenzek
6bfd862cb3 GPUDevice: Fix transpiled interface linking with OpenGL 2024-06-23 23:39:56 +10:00
Stenzek
b8ed013ec3 dep/reshadefx: Fix UBO reference with OpenGL 2024-06-23 23:39:39 +10:00
Stenzek
1797050f97 VulkanDevice: Release swap chain images on resize 2024-06-23 16:17:31 +10:00
Stenzek
6892c3d095 Qt: Work around theme swap bug with Classic Windows 2024-06-23 13:43:50 +10:00
Stenzek
e8541648ce Deps: Bump versions 2024-06-23 13:20:48 +10:00
Stenzek
966cce1581 Postprocessing: Sort shader list lexiographically 2024-06-23 13:20:47 +10:00
Stenzek
ea3fa7fe3d Postprocessing/FX: Fix locating shaders in subdirectories 2024-06-23 13:20:47 +10:00
Stenzek
63055f1e7f FullscreenUI: Add sprite texture filtering option 2024-06-23 13:10:10 +10:00
Stenzek
3d00957248 Resources: Update gamecontrollerdb.txt 2024-06-23 11:15:17 +10:00
Anderson Cardoso
d8b7e25994 Atualização Português do Brasil (#3227)
Atualizado para a última versão.
2024-06-23 11:12:58 +10:00
Jordan
59c3c33bc8 Deps: Update to SDL 2.30.4 (#3228) 2024-06-23 11:12:47 +10:00
Víctor "IlDucci
7491ba656e Spanish (Spain) Translation update 2024/06/19 (#3229)
- Translated all new strings.
- Backported a number of strings from PCSX2's Spanish (Spain) translation.
2024-06-23 11:12:29 +10:00
TheUbMunster
4827e548be BinarySpanReaderWriter: Fix off-by-one error (#3230)
fix off-by-one error
2024-06-23 11:12:04 +10:00
Stenzek
ccb76d1451 GameList: Add custom title/regions
Largely inspired by https://github.com/PCSX2/pcsx2/pull/9330, but almost
entirely rewritten.
2024-06-17 23:45:02 +10:00
Stenzek
01fc3258a3 CPU/Recompiler: Warning fix for ARM64/Clang 2024-06-17 17:13:23 +10:00
Stenzek
70d7d4ab67 MSBuild: Enable Vulkan on Windows ARM64
Apparently there are drivers now/in the works.
2024-06-17 17:13:23 +10:00
PowerDuckSamurai
da51827e47 GameDB: Over Drivin' DX - Rally Edition (Japan) (#3226)
Co-authored-by: unknown <anrams777@gmail.com>
2024-06-17 17:04:12 +10:00
Stenzek
1ae79c89e3 System: Refactor unsafe settings warning
And warn about round upscaled texture coordinates option.
2024-06-17 17:02:55 +10:00
Stenzek
a5f8684bcd BIOS: Add further detail to missing BIOS message 2024-06-17 16:47:21 +10:00
Stenzek
7b1ec5dab2 GameDB: Force round texcoords on Digimon World 3 2024-06-17 16:46:55 +10:00
Stenzek
34f20798a1 GPU/HW: Add separate 3D/2D (sprite) texture filtering 2024-06-17 15:56:56 +10:00
Stenzek
be4abb016f GPU/HW: Reduce multiple setting source of truth 2024-06-17 15:49:12 +10:00
Stenzek
6870010351 GPU/HW: Remove log spam 2024-06-16 21:15:37 +10:00
Stenzek
e9a47233f7 GPUDevice: Compile warning fix 2024-06-16 20:49:30 +10:00
Stenzek
3d6b9e18c5 Settings: Include cheats in disable-all-enhancements 2024-06-16 19:22:09 +10:00
Stenzek
0563350d04 GameDB: Set force round texcoords on Crash games 2024-06-16 19:09:46 +10:00
Stenzek
8455c9c3c6 GPU/HW: Add 'Force Round Upscaled Texture Coordinates' 2024-06-16 19:09:46 +10:00
Stenzek
1582b2ae5d GPU/HW: Make texture filtering a fragment shadergen parameter 2024-06-16 19:09:46 +10:00
Stenzek
5be2e68ab9 Qt: Update glyph ranges 2024-06-16 17:15:46 +10:00
Anderson Cardoso
451d15a812 Atualização Português do Brasil (#3224)
Atualizado para a última versão.
2024-06-16 17:14:22 +10:00
nishinji
d16470d761 Update Japanese translation (#3225) 2024-06-16 17:14:10 +10:00
Stenzek
c1792108f4 GPU/HW: Eliminate raw texture pipeline permutations 2024-06-16 17:09:24 +10:00
Stenzek
51648b0714 CI/AppImage: Explicitly remove libwayland-* 2024-06-16 17:09:23 +10:00
Hyllian
2a90a88055 Add crt-consumer and crt-cyclon. Update others. (#3223)
- Add crt-consumer.glsl;
- Add crt-cyclon.fx and its bezel.png texture;
- Fix crt-newpixie.fx Frame adjust to game's aspect ratio;
- Update others shaders to the new functions to get uniform values.
2024-06-16 00:02:30 +10:00
Stenzek
54097fc14e Postprocessing/FX: Expose 'viewportoffset' uniform 2024-06-16 00:00:01 +10:00
Stenzek
eb80a82ce5 GameDB: Disable widescreen on Final Fantasy Tactics 2024-06-15 23:58:15 +10:00
Stenzek
964b94960e Postprocessing/FX: Ensure RT isn't bound as sampler
Prevents possible Vulkan spec violation in some shaders.
2024-06-15 23:55:33 +10:00
Stenzek
ef69c31e9f GPUDevice: Support transpiling shaders at compile time
And use it for GLSL postprocessing shaders.
2024-06-14 21:21:34 +10:00
Stenzek
f0c2832d03 Dep: Update vixl to 662828c 2024-06-14 17:42:24 +10:00
Stenzek
d45e218da7 CI: Re-enable Flathub pushes
The job can just take longer.. can't be arsed to write a separate
workflow at the moment.
2024-06-14 15:59:32 +10:00
Stenzek
d51b880052 Postprocessing/FX: Fix incorrect pixel size uniforms 2024-06-14 00:38:08 +10:00
Stenzek
277147199e Qt: Fix checked state on startup for disc merging 2024-06-13 22:15:53 +10:00
Stenzek
8124fb2ef5 CDROM: Fix incorrect sector dropped log message 2024-06-13 18:35:02 +10:00
Stenzek
9a88cbce09 Pad: Fix incorrect card mismatch OSD message 2024-06-13 18:35:02 +10:00
Stenzek
c86f6eb639 Achievements: Fix incorrect data source for mastery points 2024-06-13 18:35:02 +10:00
Stenzek
ac1bb905fe GPU: Set idle bit during VRAM upload
Tenga Seiha does a bunch of completely-invalid VRAM writes on boot, then
expects GPU idle to be set. It's unclear what actually happens, I need to
write another test, but for now, just skip these uploads. Not setting GPU
idle during the write command breaks Doom, so that's not an option.
2024-06-13 18:35:02 +10:00
Hyllian
edea81d151 Update CRT-HYLLIAN.glsl
- Small update to cut scanlines when height resolution is above threshold.
2024-06-13 18:34:48 +10:00
Hyllian
7cf7a0a11f Add some shaders to dolphinfx folder
This is a first pack of shaders ported to dolphinfx specs.

It includes: crt-hyllian, crt-easymode, zfast-crt, ddt, xbr, jinc2 and pixellate.
2024-06-13 18:34:48 +10:00
Stenzek
e6a11abedc Shaders: Fix upscaling moire in CRT-Lottes 2024-06-11 23:32:19 +10:00
Stenzek
facce0d8cb PostProcessing: Expose aspect-correct pixel sizes
That consider the display aspect ratio/padding when sampling pixels in
the input (window size).
2024-06-11 23:32:19 +10:00
Ilham Nurjaman
c2eed018c1 Indonesian Translation (#3221) 2024-06-11 14:06:37 +10:00
Stenzek
354b250642 PostProcessing: Add native width/height inputs
Available in GLSL as GetNativeSize(), GetUpscaleMultiplier(), and in
reshade as native_width/native_height/upscale_multiplier.

GetPaddedOriginalSize() is now deprecated, as it does not make since
since the postfx shader runs with a window-sized off-screen target as an
input, not the internal render texture.
2024-06-11 14:04:45 +10:00
Stenzek
bac2ac0151 FullscreenUI: Fix incorrect padding calculation in pause menu
Fixes scrollbars appearing in menu.
2024-06-11 13:12:37 +10:00
Stenzek
b464b6d668 FullscreenUI: Fix loading undo state from menu 2024-06-11 13:07:47 +10:00
Stenzek
f41c238c53 VulkanDevice: Disable VK_KHR_dynamic_rendering_local_read on AMD
Like everything else on RDNA3, it appears to be broken and causes GPU
hangs/resets.
2024-06-10 17:44:10 +10:00
Stenzek
0879dff93a Updater: Add icon/rc file 2024-06-10 13:10:11 +10:00
Stenzek
e11f73ede2 Updater: Add VC runtime check 2024-06-10 13:02:20 +10:00
Stenzek
484c1dccd4 Qt: Use 64-bit comparison for VC runtime check 2024-06-10 13:01:32 +10:00
Stenzek
a2e6a48d2e Qt: Add very-early VC++ runtime version check
Yay for ABI breaks.
2024-06-09 20:55:47 +10:00
Stenzek
8595175267 CDROM: Improve accuracy of sector redelivery on DMA complete
Fixes hang in loading in Syphon Filter 2/3.
2024-06-09 19:47:51 +10:00
Stenzek
34861074c1 CDROM: Ensure complete IRQs for Init go through
Fixes booting games with OpenBIOS and its Init spam.
2024-06-08 16:58:08 +10:00
Stenzek
5a185654ba CI: Disable Qt's PCRE2 JIT on Windows 2024-06-07 15:55:55 +10:00
Stenzek
892319de86 CI/Flatpak: Disable Flathub pushes
Going to set this up manually instead, sick of the API timeouts.
2024-06-07 12:23:34 +10:00
Stenzek
0675716162 D3D11Device: Fix redundant SRV set on RT change 2024-06-07 12:07:58 +10:00
Marcin Mitura
05395c8c1a Polish localization updates (#3220)
## Comply to the latest changes:
- Translate new strings,
- Remove obsolete,
- Correct some machine translations.
2024-06-07 12:07:43 +10:00
Stenzek
e25bb4801c GameDB: Add PGXP-CPU to Lego Racers 2024-06-01 00:02:19 +10:00
Stenzek
7222c21cd9 CDROM: Further refine interrupt delay 2024-05-31 23:59:44 +10:00
Stenzek
3e3572c410 DMA: Fix range check in mode0 when decrementing
Fixes lag on startup in Clone (Euro Demo 42).
2024-05-31 23:08:07 +10:00
Stenzek
c637e2b337 System: Fix title after loading state for EXE-boot 2024-05-31 21:08:45 +10:00
Stenzek
e70f155054 MemoryCard: Implement GetID command 2024-05-31 21:08:21 +10:00
Stenzek
8ef73203b2 Bus: Ignore SPU byte writes to unaligned addresses 2024-05-31 21:00:55 +10:00
Stenzek
a7543ab365 GPU/HW: Fix crash on VRAM write/copy with mask test 2024-05-31 20:39:31 +10:00
Stenzek
627c12bebe GPU: Fix IRQ request 2024-05-31 20:39:18 +10:00
Stenzek
73136d7dc4 GPU: Tie idle bit to FIFO emptyness on VRAM write
Fixes Tenga Seiha lockup on boot.
2024-05-31 20:12:59 +10:00
Stenzek
53600746c7 GPU: Cancel VRAM writes on Reset 2024-05-31 19:49:40 +10:00
Stenzek
d013438810 CDROM: Rewrite BFRD handling
Fixes hang on startup in Unirom.
2024-05-31 19:45:42 +10:00
Stenzek
723af4de3a Misc: Loading old save state versions is unlikely 2024-05-31 18:48:26 +10:00
Stenzek
c4bf5b4f2c RegTest: Write file log as well as frames 2024-05-31 18:28:26 +10:00
Stenzek
c3bf89b278 GameDB: Disable texture filtering in Legend of Dragoon 2024-05-31 14:58:15 +10:00
Stenzek
3063101274 CDROM: Implement 0x60 test command
Apparently needed for unirom.
2024-05-30 22:34:06 +10:00
Stenzek
7bc42495fa CI/AppImage: QtNetwork is no longer needed 2024-05-30 22:25:41 +10:00
Stenzek
7682cd2c10 System: Generate hash serials when running PS-EXE
Allows for per-game settings.
2024-05-30 22:21:52 +10:00
Stenzek
25bf2b3adc CDROM: Clear async interrupt on read/seek start
Fixes broken audio in Road Rash.
2024-05-30 20:49:58 +10:00
Stenzek
f1465ddf43 Memmap: Use Mach VM routines for memory mapping 2024-05-29 22:49:32 +10:00
Anderson Cardoso
f1ff15f9c6 Atualização Português do Brasil (#3218)
Atualizado para a última versão.
2024-05-29 22:23:28 +10:00
Stenzek
619688a135 Qt: Add per-bind sensitivity/deadzone controls (shift-click) 2024-05-28 18:17:46 +10:00
Stenzek
039796690c GPU/HW: Fix a couple of out-of-order UBO pushes 2024-05-28 17:38:28 +10:00
Stenzek
2eb0085539 System: Fix inverted volume selection 2024-05-27 11:58:42 +10:00
Anderson Cardoso
110fa28c25 Atualização Português do Brasil (#3217)
Atualizado para a última versão.
2024-05-27 11:47:18 +10:00
Benjamin Mugnier
46ceb999fb Fix README.md Linux build instructions (#3214)
Fix wrong build-dependencies-linux.sh path.
Change ninja build folder to reflect cmake folder.
2024-05-27 11:47:07 +10:00
Stenzek
015804c434 System: Move GDB server into core 2024-05-27 00:18:05 +10:00
Stenzek
55d96f86f0 System: Add "Disable Mailbox Presentation" option
Partial backport of https://github.com/PCSX2/pcsx2/pull/11296
2024-05-26 22:38:35 +10:00
Stenzek
83df785558 Settings: Default threaded presentation to off 2024-05-26 22:38:35 +10:00
Stenzek
4311e08726 System: Implement PINE server 2024-05-26 22:38:35 +10:00
Stenzek
4e905a63ec Util: Add socket helper classes 2024-05-26 22:20:29 +10:00
Stenzek
9eb18449a7 Deps: Fix Linux build script to take relative paths 2024-05-26 21:55:27 +10:00
Stenzek
ac3affe472 GameDB: Chrono Cross 2024-05-26 21:55:27 +10:00
Stenzek
15e633bf2c Qt: Adjust advanced setting ranges 2024-05-26 21:55:27 +10:00
Anderson Cardoso
3382248f40 Atualização Português do Brasil (#3213)
Atualizado para a última versão.
2024-05-26 21:55:12 +10:00
Stenzek
328a3cd7af System: Prevent save states while memory cards are being saved 2024-05-25 17:42:12 +10:00
Stenzek
8e5781266a CrashHandler: Fix call stack on manual dump 2024-05-25 17:42:12 +10:00
Stenzek
cca7b46114 Assertions: Write crash dump on assertion fail 2024-05-25 17:42:12 +10:00
Stenzek
0240ea8b49 PageFaultHandler: Simplifications 2024-05-25 17:42:12 +10:00
Stenzek
b4b579d2b1 GameDB: More traits 2024-05-25 16:29:38 +10:00
Stenzek
547587af11 D3D11Device: Don't spin on CPU when GPU results aren't available 2024-05-25 16:13:05 +10:00
Stenzek
2ff1f398a3 CDROM: Handle INT1 with pending command
Fixes lockup during track playback in Gokujou Parodius Da! Deluxe Pack.
2024-05-25 16:10:09 +10:00
Stenzek
60ee17e713 System: Fix regtest dumping 2024-05-25 15:58:41 +10:00
Stenzek
1565a2667d Misc: More format string fixes 2024-05-25 15:48:31 +10:00
Stenzek
a75e61e1d6 GameDB: Disable texture filtering on FF7 2024-05-25 13:40:31 +10:00
Stenzek
0f536b8680 VulkanSwapChain: Always allocate cmdbuffers+1 semaphores 2024-05-25 13:32:57 +10:00
Stenzek
e6d8f0d4a0 GPUDevice: Use FIFO for D3D exclusive fullscreen 2024-05-25 13:15:40 +10:00
Stenzek
22c76d43c3 CPU/PGXP: Reduce vertex cache memory 2024-05-25 02:06:40 +10:00
Stenzek
b4df9d3876 GameDB: Syphon Filter 3 2024-05-25 02:02:47 +10:00
Stenzek
1adc29aeb0 Qt: Fall back to screen for refresh rate
Wayland, always a pain in the arse.
2024-05-24 23:24:06 +10:00
Stenzek
a7f2ad37de InputManager: Fix exit menu button forwarding to game 2024-05-24 22:52:13 +10:00
Stenzek
0f9a255093 System: Fallback to FIFO on AMD (no mailbox support) 2024-05-24 22:48:26 +10:00
Stenzek
98520978a8 System: OSD message corrections 2024-05-24 22:13:35 +10:00
Stenzek
49e3663dfe Settings: Purge max display FPS option
No longer needed since we pull it from the surface instead.
2024-05-24 02:33:33 +10:00
Stenzek
42a5fe0a6e GPU: Further improve vsync handling 2024-05-24 02:33:33 +10:00
Stenzek
4e922a34a7 Log: Simplify macros 2024-05-24 02:08:14 +10:00
Stenzek
792717e03e Misc: Get rid of format string for result logging 2024-05-24 00:30:06 +10:00
Stenzek
9f90f14c48 CPU/CodeCache: Only print code size stats on request 2024-05-24 00:30:06 +10:00
Stenzek
b6d019db66 Misc: Replace log printf calls with fmt 2024-05-24 00:29:49 +10:00
Stenzek
49b2e76dea GPU/HW: Warning fix 2024-05-23 20:08:14 +10:00
Stenzek
d2f28b6926 GPU: Explicit RemovePathLimits() is no longer needed 2024-05-23 19:52:56 +10:00
Stenzek
10df7ba319 GPU/HW: Ensure CLUT cache is synced when using SW-for-readbacks 2024-05-23 14:30:18 +10:00
Stenzek
6cad97b404 GPUDevice: Make vsync actually tear-free
Apparently users prefer stutter over tearing...
2024-05-23 13:52:26 +10:00
Stenzek
dd98b630ea GameList: Treat disc sets and discs equally when sorting 2024-05-23 12:45:57 +10:00
Stenzek
8709624751 GameList: Fix disc set last played time 2024-05-22 22:46:09 +10:00
Stenzek
14ba3b7312 System: Fix sync to host refresh audio stretching 2024-05-22 22:32:51 +10:00
Stenzek
e01efaa681 Log: Channel is [[maybe_unused]] 2024-05-22 22:16:58 +10:00
Stenzek
d9cc80c7f9 WindowInfo: Get refresh rate from monitor config
DwmGetCompositionTimingInfo() returns a noisy refresh rate, at least on
Win11 22H2.
2024-05-22 22:16:31 +10:00
Stenzek
f9b58c4077 Qt: Add Set Cover Image/Edit Memory Cards for merged disc sets 2024-05-21 13:55:37 +10:00
Stenzek
08125262bb System: Fix Edit Memory Cards action for disc sets 2024-05-21 13:55:37 +10:00
Stenzek
2dd991156a Qt: Update glyph ranges 2024-05-21 13:55:37 +10:00
zkdpower
2b39d509a1 Update the Simple-Chinese translation to latest. (#3211) 2024-05-21 13:54:45 +10:00
Anderson Cardoso
0bdedbf2ae Atualização Português do Brasil (#3210)
Atualizado para a última versão
2024-05-21 13:54:34 +10:00
Stenzek
1a4679def8 System: Use different conditions for frame dupe-skip 2024-05-20 01:32:33 +10:00
Stenzek
be0b86cef2 CDImageDevice: Implement disc reading for MacOS 2024-05-20 01:12:33 +10:00
Stenzek
ab4c6f2dde CPU/NewRec: Enable delay slot swapping in more situations
Load delay is always updated, so don't need to swap when it's reading
from a delayed register. Branching on a delayed register will also be
fine, since it won't be flushed by the the branch executes.
2024-05-20 01:12:32 +10:00
Stenzek
09b43f962a CPU/NewRec: Clear needed on swapped delay slot
Fixes panic in BIOS on x86_64 Linux with PGXP enabled.
2024-05-20 01:12:32 +10:00
Stenzek
5b4f74122c System: Add "Skip Duplicate Frame Display" option
Skips the presentation/display of frames that are not unique.
Can be combined with driver-level frame generation to increase
perceptible frame rate. Can result in worse frame pacing, and is
not compatible with syncing to host refresh.
2024-05-20 01:12:32 +10:00
Stenzek
7b8f9506c9 GameDB: Disc set corrections 2024-05-19 13:19:52 +10:00
Stenzek
bd0cf6582c Revert "CI/AppImage: Don't bundle libssl/libcrypto"
This reverts commit a2abcc9bb3.
2024-05-19 13:19:52 +10:00
Stenzek
14c30dfa80 FullscreenUI: Update string list 2024-05-19 13:19:51 +10:00
Stenzek
1205b75c51 GameList: Reduce logging verbosity 2024-05-19 13:19:51 +10:00
GreyXor
515e44f1fd Data: Update SDL Game Controller DB (#3209)
Signed-off-by: GreyXor <greyxor@protonmail.com>
2024-05-19 13:18:03 +10:00
Juan Pablo Romero Mendoza
bc67994654 Bump GitHub Actions and Ubuntu (#3208) 2024-05-19 13:17:39 +10:00
Stenzek
1adaea9005 GameList: Merge multi-disc games 2024-05-18 15:21:44 +10:00
Stenzek
9bdf23cba7 System: Load game settings from first disc of multi-disc games 2024-05-18 15:21:44 +10:00
Stenzek
073ac87be2 GameList: Use string_view for GetEntryForPath() 2024-05-18 15:21:43 +10:00
PowerDuckSamurai
23598e6a42 GameDB: Various fixes (#3207) 2024-05-18 15:21:32 +10:00
Anderson Cardoso
2dcf267142 Atualização Português do Brasil (#3206)
Atualizado para a última versão
2024-05-18 01:09:18 +10:00
Stenzek
e1625d61f6 GameDB: PGXP-CPU for Lifeforce Tenka 2024-05-18 01:09:18 +10:00
Stenzek
9b086b7807 CPU: Fix disassembly of rtps/nclip 2024-05-18 00:33:22 +10:00
Stenzek
7476baced6 CPU/PGXP: Track valid Z for lower/upper halves of 32-bit values
Dragon Valor writes both lower and upper halfwords separately from
non-valid-Z values. The Z needs to be cleared out.
2024-05-18 00:33:22 +10:00
Stenzek
ea4efb4e52 CPU/PGXP: Prefer fresh over tainted Z values
Fixes terrain polygon's Z in Wild Arms 2 after battles.
2024-05-18 00:33:22 +10:00
Stenzek
5672b0da95 CPU/PGXP: sub rd, rs, 0 => move rd, rs 2024-05-18 00:33:22 +10:00
Stenzek
bbac7a60a0 CPU/PGXP: Don't set high bits of flags 2024-05-18 00:33:22 +10:00
Stenzek
37b1aa45dd CPU/PGXP: Minor optimization to shift instructions 2024-05-18 00:33:22 +10:00
Stenzek
3fd86a69a4 CPU/PGXP: Use component enum 2024-05-18 00:33:22 +10:00
Stenzek
e4bedbbbfa CPU/PGXP: Readability improvements 2024-05-17 23:46:18 +10:00
Stenzek
29d4e04e3b CPU/PGXP: Use bit math for flags instead of union 2024-05-17 23:46:18 +10:00
Stenzek
82f3e17b78 CPU: Value logging/tracing for PGXP 2024-05-17 23:46:18 +10:00
Stenzek
c057e91825 CDImage: Open all image types as shared files 2024-05-17 14:42:37 +10:00
Stenzek
c03f1cfeb8 Qt: Fix ugly popup message on Mac in setup wizard 2024-05-17 14:23:41 +10:00
Stenzek
1c098f625e GameDB: Disable true colour for Dragon Valor 2024-05-17 14:23:41 +10:00
Stenzek
a59a42f35b Qt: Fix translation of %n hours 2024-05-17 14:23:41 +10:00
Stenzek
e444eb713a CI/MacOS: Switch to Xcode 15.4
Fixes crash on open in MacOS 11.
2024-05-17 14:23:41 +10:00
shikulja
4c531d2372 Update Russian translation (#3204)
* Update ts

* Update Russian translation

* Update
2024-05-17 14:23:32 +10:00
Stenzek
35bdbf2a55 System: Check host page size on startup 2024-05-16 17:37:23 +10:00
Stenzek
a5b1ee4f04 Qt: Rename Load Profile to Apply Profile
And make it copy hotkeys.
2024-05-16 16:53:13 +10:00
Stenzek
c53717bbe4 System: Rewrite input profile hotkey priority logic 2024-05-16 16:53:13 +10:00
Anderson Cardoso
284b10f8eb Atualização Português do Brasil (#3203)
Atualizado para a última versão.
2024-05-16 16:53:07 +10:00
Stenzek
0a38c0889e AudioStream: Improve >100% volume output quality 2024-05-15 22:11:47 +10:00
Stenzek
f0a4ceb909 InputManager: Add push to toggle for macros 2024-05-15 21:17:26 +10:00
Stenzek
446750fb66 FullscreenUI: Correct heading sizes 2024-05-15 20:31:12 +10:00
Stenzek
7abcdf2b59 VulkanDevice: Fix double unload 2024-05-15 20:31:04 +10:00
Stenzek
d9b83d69eb Qt: Fix auto updater getting stuck after failed request 2024-05-15 14:54:33 +10:00
Stenzek
232d1c930c CI: Bump actions versions 2024-05-15 14:54:20 +10:00
Stenzek
6d3f01c82b CI: Fix Windows build upload 2024-05-15 14:43:52 +10:00
Stenzek
c116e5a1d5 Qt: Consider per-game overrides for Edit Memory Cards menu 2024-05-15 01:50:43 +10:00
shinra-electric
cea061f73f Update upload-artifact & download-artifact actions to v4 (#3202)
- upload-artifact@v1 --> v4
- download-artifact@v1 --> v4
2024-05-15 01:50:24 +10:00
Stenzek
8e3284d8c6 Vulkan: Simplify loader using DynamicLibrary 2024-05-15 00:50:25 +10:00
Stenzek
88ace6e4ae CMake: Detect cache line size dynamically on AArch64 Linux 2024-05-15 00:50:24 +10:00
Stenzek
d9003b10c3 SettingsInterface: Fix TinyString helper 2024-05-15 00:50:24 +10:00
Stenzek
0ebc239003 CI: Remove ninja dependency for Mac deps 2024-05-15 00:50:24 +10:00
zkdpower
4208d41183 Update the Simple-Chinese Translation to latest. (#3201) 2024-05-14 21:00:45 +10:00
Stenzek
7066eea7c4 Scripts: Remove now-unused file 2024-05-14 20:08:53 +10:00
Stenzek
b204fd6860 Qt: Fix Mac dylib not being included 2024-05-14 20:08:53 +10:00
Stenzek
18160a8e06 Qt: Add option to pause when controller is disconnected 2024-05-14 16:00:09 +10:00
Stenzek
2b31c08083 gitignore: Add deps-build 2024-05-14 16:00:09 +10:00
Stenzek
d056584173 Deps: Update shaderc to 2024.1 2024-05-14 16:00:09 +10:00
Stenzek
0e2204e928 README: Add link to Flathub 2024-05-14 15:56:18 +10:00
Stenzek
8f415a44e6 CPU/NewRec: Fix register allocation crash on Linux 2024-05-14 15:13:18 +10:00
Stenzek
e517581041 System: Tidy up some unused code 2024-05-14 15:13:18 +10:00
Anderson Cardoso
278c3ab2a5 Atualização Português do Brasil (#3200)
Atualizado para a última versão.
2024-05-14 15:12:54 +10:00
Stenzek
f3aec0c965 Host: Re-introduce plural translation support 2024-05-13 01:46:45 +10:00
Stenzek
a2abcc9bb3 CI/AppImage: Don't bundle libssl/libcrypto 2024-05-13 00:23:34 +10:00
Stenzek
318fd0b0fd System: Fix triple popup on missing BIOS 2024-05-13 00:07:47 +10:00
Stenzek
be920acf38 System: Get rid of double popup on renderer create error 2024-05-13 00:06:56 +10:00
Stenzek
5808e14b7e GameDatabase: Warning fix 2024-05-13 00:06:56 +10:00
Stenzek
03f9708911 GPUDevice: Move SPIR-V compilation to base class 2024-05-13 00:06:56 +10:00
Stenzek
117e6be1dc HeapArray: Add span returners 2024-05-12 22:56:54 +10:00
Stenzek
522c2e3458 FullscreenUI: Use native file selector on Flatpak 2024-05-12 20:28:20 +10:00
Stenzek
37a76a020a FullscreenUI: Add horizontal padding to menu windows 2024-05-12 18:14:51 +10:00
Stenzek
69e0c1681c FullscreenUI: Correct pixel alignment of some UI elements
Fixes scrollbars showing up at some window sizes.
2024-05-12 17:57:18 +10:00
Stenzek
864b0ad5fe Qt: Save audio output latency value separately to minimal flag 2024-05-12 17:36:15 +10:00
Stenzek
e7765d26fb System: Fix double popup on missing SBI file 2024-05-12 17:20:37 +10:00
Stenzek
eab4271bf7 dep/cubeb: Only include connected devices when enumerating wasapi
Otherwise you just get a ton of unusable outputs.
2024-05-12 17:14:53 +10:00
Stenzek
872cee908c dep/cubeb: Sync to 19fcbef
And apply PR #740 (Re-enable and polish IAudioClient3 to achieve lower
latencies).

`*latency_frames = min_period;` in wasapi_get_min_latency was changed to
`*latency_frames = hns_to_frames(params.rate, min_period_rt);`, as
otherwise it reports in mixer frames, not stream frames.
2024-05-12 17:10:03 +10:00
Stenzek
c803c4fbef Qt: Fix incorrect minimum latency display 2024-05-12 17:09:03 +10:00
Stenzek
a4a35b7e58 GPU: Add Bilinear (Integer) scaling option 2024-05-12 15:32:21 +10:00
Stenzek
313496e843 GameDB: PGXP-CPU for Dragon Valor 2024-05-12 15:28:44 +10:00
Stenzek
7bb8cbcbaa D3D12Device: Fix pipeline cache load error after device change 2024-05-12 15:24:01 +10:00
Stenzek
c85e743573 Error: Strip trailing whitespace from Windows errors 2024-05-12 15:20:39 +10:00
Stenzek
0a63bec65c CI/Flatpak: Push to Flathub 2024-05-09 16:39:17 +10:00
Anderson Cardoso
c015039a3c Atualização Português do Brasil (#3198)
Atualizado para a última versão.
2024-05-09 13:54:30 +10:00
Stenzek
72607ecdf6 ShaderGen: Fix compile error with Metal+Barriers 2024-05-09 13:52:18 +10:00
Stenzek
7626a9bf9c Qt: Add label next to audio buffer size 2024-05-06 00:46:34 +10:00
Stenzek
aed2863d73 GameDB: Add notes about Shadow Master/Castrol Honda Superbike Racing 2024-05-06 00:04:21 +10:00
Stenzek
d3546d18a1 Qt: Add compatibility report in game summary 2024-05-06 00:00:41 +10:00
Stenzek
76b2c24442 Qt: Simplify game directory list 2024-05-05 22:29:26 +10:00
Stenzek
ffb5682b43 Qt: Add game list excluded folders as well as files
Backport of https://github.com/PCSX2/pcsx2/pull/9730
2024-05-05 22:29:26 +10:00
Stenzek
4ca7753720 CrashHandler: Use SetUnhandledExceptionFilter() and terminate on crash
Fixes zombie processes sticking around.
2024-05-05 22:29:26 +10:00
Stenzek
fa104acdd1 Misc: Purge unused code and report startup error to host 2024-05-05 22:29:26 +10:00
Stenzek
ca3cfbaa99 Misc: Pass string_view by value 2024-05-05 22:28:29 +10:00
Stenzek
e4d940a476 Deps: Update SDL2 to 2.30.3 2024-05-05 13:26:33 +10:00
Stenzek
6b03943d75 Qt: Compute Hashes -> Verify 2024-05-05 12:58:35 +10:00
Stenzek
d6e80de3bf Qt: Add default option for cubeb driver 2024-05-05 12:51:31 +10:00
xujibbs
fea00d0149 FullscreenUI: Mark %d ms for translation (#3196) 2024-05-05 12:41:46 +10:00
Stenzek
e3b0050ca1 GPU/HW: Fix shader sampling with MSAA on 2024-05-03 13:24:32 +10:00
Stenzek
1185f8f6aa GPU: Implement CLUT cache (SW renderer only)
Fixes copyright screen in Shadow Master.
Fixes title splash in Castrol Honda Superbike Racing.
2024-05-02 01:03:58 +10:00
Stenzek
d1483d8077 GPU: Rework pre-draw clipping 2024-05-02 01:03:58 +10:00
Stenzek
7e22fb08d2 GPU: Add #define'able PSX GPU stats 2024-05-01 23:00:10 +10:00
Stenzek
fec210b1e1 GPU: Ensure coordinates are masked/clamped 2024-05-01 20:58:21 +10:00
Anderson Cardoso
325cf577a2 Atualização Português do Brasil (#3194)
- Atualizado para a última versão.
- Confirmação de textos movidos
- Novos textos de widgets traduzidos
2024-04-30 21:45:13 +10:00
Stenzek
645adad932 Qt: Add Classic Windows as theme option
But it'll bug out when switching between windows11/windowsvista.

Restart to fix.
2024-04-30 21:44:18 +10:00
Stenzek
6a02f9c67b VulkanDevice: Fix possible null descriptor set with feedback loop 2024-04-30 21:34:08 +10:00
Stenzek
cbe95b281a VulkanDevice: Backport buggy NVIDIA driver workarounds from PCSX2 2024-04-30 21:34:02 +10:00
Stenzek
25f725c263 GPU: Fix mask for drawing area coordinates 2024-04-28 15:44:41 +10:00
Stenzek
d094978214 Justifier: Add controller implementation 2024-04-28 15:25:24 +10:00
Stenzek
3be02c53c1 GPU: Improve CRTC hblank accuracy
And implement Timer0 gating, it was missing previously.
2024-04-28 15:25:24 +10:00
Stenzek
5d20f4514d PostProcessing: Use ShaderGen GLSL version string 2024-04-28 15:25:24 +10:00
Stenzek
295081fe62 Misc: Replace offsetof with constexpr-friendly OFFSETOF
Fixes build with clang-18.
2024-04-28 15:25:24 +10:00
Stenzek
dc84c58c7c D3D11Device: Fix GPU usage without vsync 2024-04-28 15:25:24 +10:00
Stenzek
7478f69c58 RegTest: Fix build again 2024-04-28 15:25:24 +10:00
PowerDuckSamurai
a9aaac12fc GameDB: Various fixes (#3192) 2024-04-28 15:25:10 +10:00
Valtekken
5c48218866 Italian translation - Small consistency fixes (#3191)
Missed a few inconsistencies in the translation when I reworked it, they're now fixed.
2024-04-28 15:24:59 +10:00
Stenzek
c9a0f7d6f2 Qt: Fix empty box on no-controller type 2024-04-27 14:12:11 +10:00
Stenzek
3e99084770 Settings: Fix double source of truth for controller names 2024-04-27 13:21:11 +10:00
Stenzek
5477f2eae2 HeapArray: Fix swap() not swapping size
Even though it's not used.
2024-04-27 13:18:36 +10:00
Stenzek
f1f4bac8a8 Qt: Fix input profile ctype change not saving 2024-04-27 13:15:35 +10:00
Stenzek
d80aa91d49 ImGuiOverlays: Fix >1 controller display 2024-04-27 12:41:47 +10:00
Stenzek
1fbb848c52 Misc: Add gstreamer fallback to PlaySoundAsync() 2024-04-26 20:49:45 +10:00
Stenzek
2fc9a6d834 CPU/NewRec: Work around clang <16 structured binding capture bug 2024-04-26 19:23:46 +10:00
Stenzek
26917f14c5 CI/Flatpak: Disable SDK CFLAGS
It's setting _GLIBCXX_ASSERTIONS in release builds, which has a
performance hit.
2024-04-26 12:47:02 +10:00
Anderson Cardoso
f7238a85b5 Atualização Português do Brasil (#3190)
Atualizado para a última versão.
2024-04-26 12:45:14 +10:00
Stenzek
7ea7d3b92a README: Add Ubuntu/Debian package list 2024-04-25 17:32:48 +10:00
Stenzek
808e832c9a CI: Slim down Linux package install list 2024-04-25 17:32:48 +10:00
Stenzek
4df6f3bc4d Scripts: Drop freetype/zlib from Linux deps build
Qt pulls in fontconfig, which needs the system version.
2024-04-25 15:57:55 +10:00
Stenzek
d2b9195c66 MemorySettingsInterface: Warning fix 2024-04-25 15:06:41 +10:00
Stenzek
1cdfca155d Qt: Clean and remove empty game settings 2024-04-25 14:02:16 +10:00
Stenzek
d6ffdb0242 RegTest: Build fix 2024-04-25 13:31:44 +10:00
Stenzek
5e9a47f82b Qt: Add volume reset button 2024-04-25 13:24:04 +10:00
Stenzek
7548113afd System: Move COM init to common code 2024-04-25 12:56:02 +10:00
Stenzek
425235fd31 INISettingsInterface: Fix file leak on Linux 2024-04-25 02:17:33 +10:00
Michael Prince Sharpe
9d3f328404 Adding crt-guest-advanced-HD shader (#3189)
* Add CRT-Guest-Advanced-HD

* Update CRT-Guest info

* Update CRT-Guest info

* Update CRT-Guest info

* Update CRT-Guest info

* reversion for correction

* Update thirdparty.html

* Update thirdparty.html

* Update thirdparty.html

* Update thirdparty.html

* Add files via upload

* Update source.txt
2024-04-25 01:18:49 +10:00
Stenzek
4139bf63d8 AudioStream: Backport changes 2024-04-25 01:13:51 +10:00
Stenzek
921f5119b2 Qt: Handle sliders in per-game settings 2024-04-25 01:13:43 +10:00
Anderson Cardoso
6e78db3872 Atualização Português do Brasil (#3186)
Atualizado para a última versão
2024-04-23 16:27:04 +10:00
Marcin Mitura
bfe3cf48b1 Polish localization updates (#3188)
Comply to latest changes:
- Translate new strings,
- Remove obsolete.
2024-04-23 16:26:58 +10:00
RSDuck
89c0d4900b Fix post processing menu in the fullscreen UI (#3187) 2024-04-23 16:26:46 +10:00
Stenzek
52bdbf35db Qt: Fix rare crash during update download
Thanks to Silent for debugging.
2024-04-23 16:26:04 +10:00
Stenzek
b4999975db System: Fix pause-on-start running unthrottled 2024-04-23 14:44:08 +10:00
Stenzek
106f2c10ba Qt: Add tooltip for stretch/expansion advanced settings 2024-04-22 01:55:33 +10:00
Stenzek
eb91fe31e2 Hotkeys: Add OSD toggle hotkey 2024-04-22 01:52:02 +10:00
Stenzek
3b8afb39f6 System: Don't try to fast boot non-PS1 discs 2024-04-22 01:44:04 +10:00
Stenzek
3fa2bd1d3a System: Confirm shutdown if memory card is being written 2024-04-22 01:41:42 +10:00
Stenzek
a5613fc815 System: Add OSD message when all enhancements are disabled 2024-04-22 00:38:46 +10:00
Stenzek
b26a9556f7 System: Improve reset determinism 2024-04-22 00:19:44 +10:00
Stenzek
35f0d7f623 CPU: Update debug dispatcher flag on init 2024-04-22 00:08:16 +10:00
Stenzek
0fbc1a3a8a AudioStream: Add surround expansion via FreeSurround 2024-04-21 23:30:46 +10:00
Stenzek
7932d284f1 Deps: Add freesurround 2024-04-21 23:27:31 +10:00
Stenzek
35056c2c52 Deps: Add kissfft 2024-04-21 23:27:31 +10:00
Stenzek
d3c12fecb3 Qt: Move dump audio on startup out of settings 2024-04-21 20:28:20 +10:00
Stenzek
2871a26f54 GameDB: Motor Toon Grand Prix (again) 2024-04-21 14:51:05 +10:00
Stenzek
7d80cabf9f BIOS: Remove questionable hashes
And add PS2 hashes.
2024-04-21 14:03:55 +10:00
Stenzek
8867bb129a CMake: Tidy up build system
And fix Windows CMake... who knows how long for.
2024-04-20 21:19:31 +10:00
Stenzek
a88ee93b4d GameDB: Motor Toon Grand Prix (again) 2024-04-20 19:59:58 +10:00
Stenzek
04f9731ee0 README: Update Linux build instructions 2024-04-20 19:09:48 +10:00
Stenzek
d712fcc371 Scripts: Rename build-dependencies.sh to build-dependencies-linux.sh 2024-04-20 19:09:27 +10:00
Stenzek
d612ea0f93 CI: Swap to KDE 6.7 Flatpak actions 2024-04-20 18:35:12 +10:00
Stenzek
61301733d8 Qt: Purplerain -> Purple Rain 2024-04-20 18:34:50 +10:00
Valtekken
a2d81bb9af Final third of the translation (#3185) 2024-04-20 18:33:23 +10:00
Anderson Cardoso
b478fd93b4 New Theme Added (#3184)
Added new theme : Purple Rain
2024-04-20 18:33:12 +10:00
Stenzek
1a0f6f62e5 Qt: Clarify controller settings labels 2024-04-20 18:32:36 +10:00
Stenzek
17b9736899 Misc: Use a 128b cache line size on Apple Silicon
Turns out it's not 64 bytes like I assumed. The things you learn.
2024-04-18 20:38:36 +10:00
Stenzek
fd21dd9729 Qt: Shrink text box size in memory scanner 2024-04-18 20:38:36 +10:00
Stenzek
7135a641e9 Qt: Allow opening cheat manager while shutdown 2024-04-18 20:38:35 +10:00
Stenzek
60f12e77fa Achievements: Fix fullscreen window height 2024-04-18 20:38:35 +10:00
Stenzek
8e9e855747 CDImageM3u: Fix forward slash entries on Windows 2024-04-18 20:38:35 +10:00
Valtekken
d918705233 Massive Italian translation rework, part 2 (#3183)
* Massive Italian translation rework, part 2

At this point this is more of a complete retranslation than anything else, but it's almost done. Stops at line 9140, missing the final third.

* Small fixes

* Missing semicolon

Got distracted on typing out "&apos;", missing the semicolon and fucking up the whole build

* Another missing semicolon

Ditto.

* Wrong keystroke

Typed "&" instead of "%"
2024-04-18 00:42:35 +10:00
Stenzek
3bb36f95e2 FullscreenUI: Get rid of extra scrollbar in save state selector 2024-04-18 00:41:37 +10:00
Stenzek
f666816943 ImGuiOverlays: Fix possible crash in save state selector 2024-04-18 00:40:31 +10:00
Stenzek
84b24c6228 Achievements: Fix HC mode activating on reset of non-cheevo game 2024-04-18 00:40:06 +10:00
Marcin Mitura
ef05a80fd2 Polish localization updates (#3182)
Comply to latest changes:
- Translate new strings
2024-04-17 16:35:02 +10:00
zkdpower
79a7a8c444 Update the Simple-Chinese translation to latest. (#3181) 2024-04-17 16:34:51 +10:00
Anderson Cardoso
f9b194477f Atualização Português do Brasil (#3180)
Atualizado para a última versão.
2024-04-17 16:34:32 +10:00
Stenzek
2534e6f5d4 CI: Fix Windows build 2024-04-17 16:34:06 +10:00
Stenzek
a5a72cd7ec AudioStream: Fix a couple of errors in ReadFrames() resampler 2024-04-17 00:49:44 +10:00
Stenzek
e40c022a0f CI: Fix Flathub update script 2024-04-16 15:40:31 +10:00
Stenzek
c1bf1e5369 Qt: Add binding layout for NegConRumble 2024-04-16 15:40:31 +10:00
Stenzek
147f48cc64 Qt: Simplify controller binding layout construction
And make it generate widgets when there's no template.
2024-04-16 15:40:31 +10:00
Víctor "IlDucci
1c392444a7 Spanish (Spain) translation update 2024/01/25 (#3102)
Updating the Spanish (Spain) translation with the latest strings. I should point out that between my last update and this one, the Spanish flag was removed from the Language menu selection.
2024-04-16 15:40:31 +10:00
Matheus Fraguas
07c012aee5 Negcon rumble (#3177)
* Implemented NeGcon with rumble. Code is a mix of the existing NeGcon AnalogController modes.

* Fix negcon id reply and analog/digital toggle.

* Implemented NeGcon with rumble. Code is a mix of the existing NeGcon AnalogController modes.

* Fix negcon id reply and analog/digital toggle.

* Update macros

* Code cleanup
2024-04-16 15:40:31 +10:00
Stenzek
4d8ed49b24 FullscreenUI: Fix gaps between some UI elements
By rounding sizes up to the nearest pixel.
2024-04-16 15:40:31 +10:00
Stenzek
d2d6e397e6 NoGUI: Purge unused code 2024-04-16 15:40:30 +10:00
Stenzek
4e0c417add FullscreenUI: Add "Open Containing Directory" 2024-04-16 12:49:54 +10:00
Stenzek
6e7a4c3909 FullscreenUI: Exit fullscreen for open-in-file-browser 2024-04-16 12:49:54 +10:00
Anderson Cardoso
bc4b7f2af9 Atualização Português do Brasil (#3175)
Confirmadas 2 linhas de texto no modo big duck mode.
2024-04-16 12:49:54 +10:00
Deozaan
5060c0fc31 Add cheats for all characters in Beyond the Beyond (USA) (#3176) 2024-04-16 12:49:54 +10:00
KamFretoZ
79ccd5f3c3 FullscreenUI: Wire up Open in File Browser functionality (#3178) 2024-04-16 12:49:54 +10:00
Valtekken
5ed362bd84 Massive Italian translation rework, part 1 (#3179) 2024-04-16 12:49:54 +10:00
Stenzek
797b82dcfa Updater: Ensure forward slashes are converted to backslashes
Old versions may run the updater with forward slashes.
2024-04-16 12:28:37 +10:00
Stenzek
9eb9fc9dce Qt: Fix drag/drop on Windows 2024-04-16 12:28:22 +10:00
Stenzek
be1d558be1 GPU/HW: Fix black screen in Metal after vertex ID wraparound 2024-04-15 23:30:58 +10:00
Stenzek
9fd2994b73 Log: Fix crash with >1 instance + file log 2024-04-14 21:18:47 +10:00
Stenzek
4bcc5a312a System: Remove log spam 2024-04-14 17:25:23 +10:00
Stenzek
fbe54f454f Deps: Purge SPIRV-Cross from tree 2024-04-14 17:25:23 +10:00
Stenzek
5f915e1cbe MetalDevice: Use shared SPIRV-Cross 2024-04-14 17:25:23 +10:00
Stenzek
3dedf5fdd5 FullscreenUI: Add missing latency stats option 2024-04-14 17:25:23 +10:00
Stenzek
e9107bd140 VulkanDevice: Add env var for non-semantic debug info
Backport of 070068366f
2024-04-14 17:25:23 +10:00
Stenzek
8a3ba53204 CI: Build SPIRV-Cross 2024-04-14 17:25:23 +10:00
Stenzek
59eeb89243 CI: Backport shaderc changes from PCSX2 2024-04-14 16:26:22 +10:00
Anderson Cardoso
06a29f6d95 Atualização Português do Brasil (#3174)
Atualizado para a última versão.
2024-04-14 16:26:08 +10:00
Marcin Mitura
6d167f1ffb Polish localization updates (#3173)
Comply to latest changes:
- Translate new strings,
- Remove obsolete.
2024-04-14 16:25:59 +10:00
Stenzek
c149d66d4d System: Add 'Reduce Input Latency' option
i.e. pre-frame sleep.
2024-04-13 19:57:25 +10:00
Stenzek
6258cb9e0e FullscreenUI: Various minor bug fixes 2024-04-13 19:57:25 +10:00
Stenzek
8ab1623276 CI/Flatpak: Remove unused file 2024-04-13 19:57:25 +10:00
PugsyMAME
7adbedd341 Renamed Mem Scanner Op Text&added Virtual Address (#3172)
* Renamed Mem Scanner Op Text&added Virtual Address

Renamed the Memory Scanner Operator Text for clarity. Replaced '...' with 'Value' and 'Previous' with 'Previous Result'.
Also changed "Any Value" to "Any Value ('New Search' or 'Reset Result Value')", Any Valur should really be at the top of the index and the Previous Results should come before the other Value operators. But that's a job for another time.
The Virtual Address extra will display the virtual address of DuckStation's PSX RAM so it can be easily edited with the likes of HXD or another tool where the location of the virtual memory needs to be known.

* Replaced Mem Scanner Op Text with latest English text

Not touched the translations, just added the updated english text for the Memory Scanner "Operator:" text

* Rearranged  Memory Scanner Operator class

Re-arranged Memory Scanner Operator class into a more logical order - with likely frequency of use moving item up the list.

New Order:-
Better Order:-
Any Value ('New Search' or 'Reset Result Value')         x    Any.
Less Than Previous Result                                x    LessThanLast,
Less or Equal to Previous Result                         x    LessEqualLast,
Greater Than Previous Result                             x    GreaterThanLast,
Greater or Equal to Previous Result                      x    GreaterEqualLast,
Not Equal to Previous Result (Changed Value)             x    NotEqualLast,
Equal to Previous Result (Unchanged Value)               x    EqualLast,
Decreased By Value                                       x    DecreasedBy,
Increased By Value                                       x    IncreasedBy,
Changed By Value                                         x    ChangedBy,
Equal to Value                                           x    Equal,
Not Equal to Value                                       x    NotEqual,
Less Than Value                                          x    LessThan,
Less or Equal to Value	                                 x    LessEqual,
Greater Than Value                                       x    GreaterThan,
Greater or Equal to Value                                x    GreaterEqual

* Rearranged  Memory Scanner Operator class

Changes operator order to:-
Any Value ('New Search' or 'Reset Result Value')        
Less Than Previous Result                               
Less or Equal to Previous Result                        
Greater Than Previous Result                            
Greater or Equal to Previous Result                     
Not Equal to Previous Result (Changed Value)            
Equal to Previous Result (Unchanged Value)              
Decreased By Value                                      
Increased By Value                                      
Changed By Value                                        
Equal to Value                                          
Not Equal to Value                                      
Less Than Value                                         
Less or Equal to Value	                                
Greater Than Value                                      
Greater or Equal to Value

* Memory Scanner line references updates

Updated <location filename="../memoryscannerwindow.ui" line="???"/> line numbers for the Memory Scanner operation re-ordering.
These are currently the only 4 translation files that make reference to memoryscannerwindow.ui, the other 12 still reference cheatmanagerdialog.ui so not replicated for them as this would only partially fix them - so I left them alone as I hope there's some automated tools to handle it.

* Update src/duckstation-qt/memoryscannerwindow.cpp
2024-04-13 19:57:12 +10:00
zkdpower
01e06b338d Update the Simple-Chinese translation to latest. 2024-04-12 21:07:16 +10:00
Stenzek
f4fef36eba MetalDevice: Use shader to clear current depth target 2024-04-12 21:07:16 +10:00
Stenzek
e5a024ba85 MetalDevice: Add support for framebuffer fetch 2024-04-12 21:07:16 +10:00
shikulja
42ac79d42a Update Russian translation (#3169) 2024-04-12 19:56:32 +10:00
Marcin Mitura
349ff42ce2 Polish localization updates (#3168)
Comply to latest changes:
- Translate VSync string,
- Remove obsolete.
Silent is based :3
2024-04-11 23:42:56 +10:00
Anderson Cardoso
4591fe8f84 Atualização Português do Brasil (#3167)
Atualizado para a última versão.
2024-04-11 23:42:43 +10:00
Stenzek
bbdc31cad6 Qt: String fix 2024-04-11 23:21:50 +10:00
Anderson Cardoso
5a2215d305 Atualização Português do Brasil (#3165)
Atualizado para a última versão.
2024-04-11 22:54:57 +10:00
Marcin Mitura
7d85284626 Polish localization updates (#3166)
Comply to latest changes:
- Translate new strings,
- Remove obsolete strings.
2024-04-11 22:54:40 +10:00
Stenzek
c017d04423 Qt: "Display Vertical Sync" => "Vertical Sync" 2024-04-11 22:53:02 +10:00
Stenzek
e646096180 VulkanDevice: Fix validation errors 2024-04-11 22:53:02 +10:00
Stenzek
7344661801 GPUDevice: Split submission and presentation 2024-04-11 22:53:02 +10:00
Stenzek
3e9ac99d54 Qt: Fix 6.7 deprecation warnings 2024-04-11 21:55:50 +10:00
Stenzek
efcfcd8e11 Build: Migrate Flatpak to Qt 6.7 2024-04-11 21:55:50 +10:00
Marcin Mitura
9bee24e083 Polish localization updates (#3164)
Comply to latest changes:
- Correct not fitting string,
- Translate new strings,
- Remove obsolete.
2024-04-11 21:38:28 +10:00
Stenzek
509a8a074c GPUDevice: Remove unused file 2024-04-11 21:33:40 +10:00
Stenzek
88270771da System: Combine VRR and Optimal Frame Pacing
GSync/FreeSync display users should:
 - DISABLE VSync.
 - ENABLE Optimal Frame Pacing.
2024-04-11 21:33:40 +10:00
Stenzek
2ad67ad3ee OpenGLContext: Add SupportsNegativeSwapInterval() 2024-04-11 20:31:57 +10:00
Stenzek
7b93edada1 Qt: Purge controller bind migration
About a year and a half is long enough.
2024-04-11 20:09:52 +10:00
Stenzek
fec36471b8 Settings: Use RealPath() for directories 2024-04-11 14:44:43 +10:00
Stenzek
e2d87f554b FileSystem: Canonicalize() after RealPath() 2024-04-11 14:44:29 +10:00
Stenzek
57f6bda59b ImGuiFullscreen: Use popup background for all popups 2024-04-11 13:50:04 +10:00
Stenzek
164062f80d Build: Use C++20 for everything except reshadefx 2024-04-11 13:46:25 +10:00
Stenzek
1b1e42d003 System: Add Error to boot/load/save state 2024-04-11 13:42:10 +10:00
Stenzek
f75a5605eb SmallString: Add vformat overloads 2024-04-11 13:42:00 +10:00
Stenzek
1809885927 FullscreenUI: Fix crash with language select on Linux 2024-04-11 12:52:56 +10:00
Stenzek
44a4f2703a ImGuiFullscreen: Add popup background colour 2024-04-11 12:44:33 +10:00
Bobby Smith
ae223403bb Qt: fix "Deinterlacing" description 2024-04-11 12:20:51 +10:00
Bobby Smith
b58862a64a Disable cheats by default 2024-04-11 12:20:51 +10:00
Stenzek
8c741d2d48 Qt: Update glyph range for zh-CN and purge old obsolete strings 2024-04-10 20:28:00 +10:00
zkdpower
05d2ad5800 Update the Simple-Chinese translation to latest. 2024-04-10 20:20:52 +10:00
Stenzek
440a1700c0 System: Interrupt execution when loading state and reset 2024-04-10 20:18:30 +10:00
Stenzek
417bf0c3bc DMA: Better enforce CPU runtime during linked list
and get rid of the hack for Newman Haas.
2024-04-10 20:11:23 +10:00
Stenzek
f63f5d829d GameDB: Add controller types 2024-04-10 20:11:23 +10:00
KamFretoZ
bbd7c9e2a9 BPM: Light Mode color scheme update (#3161) 2024-04-10 18:20:25 +10:00
Marcin Mitura
b209e6b0a8 Polish localization updates (#3160)
* Polish localization updates

- Match latest changes,
- Correct typos,
- Remove vanished strings.

* Polish localization updates

- Match latest changes:
* Correct typos,
* Remove obsolete strings.
2024-04-10 17:37:36 +10:00
Stenzek
3c4ad9eceb GameDB: More compatibility fixes 2024-04-10 17:37:05 +10:00
Stenzek
2b7de1f8ef GameDB: Compatibility fixes 2024-04-10 17:06:45 +10:00
Stenzek
a57ed3c91c Qt: Add correct Cheat Manager UI file 2024-04-10 17:06:36 +10:00
Stenzek
4598bc789b Qt: Split Cheat Manager and Memory Scanner
And make them persistent across system invocations.
2024-04-10 14:05:46 +10:00
Stenzek
e936e7498a VulkanDevice: Fix incorrect null texture bind condition 2024-04-10 12:14:29 +10:00
Marcin Mitura
6965bc54f4 Polish localization updates (#3158)
- Comply new FullscreenUI,
- Remove vanished strings.
2024-04-10 12:13:50 +10:00
Bobby Smith
ad45ace97d Qt: fix "Show Controller Input" and "Show Settings" descriptions (#3159) 2024-04-10 12:13:39 +10:00
Anderson Cardoso
5fb81753dd Autalização Português do Brasil (#3157)
Atualizado para a última versão.
2024-04-10 12:13:25 +10:00
Stenzek
26c1d4b787 Qt: Icon fix 2024-04-10 00:07:25 +10:00
Stenzek
e9ae49b3c4 FullscreenUI: Regenerate strings 2024-04-10 00:07:13 +10:00
Stenzek
bf4e8feb25 FullscreenUI: Redo landing page and add help bar 2024-04-09 23:49:24 +10:00
Stenzek
d4d7a13fed GameDB: Dino Crisis PAL 2024-04-09 19:54:25 +10:00
Stenzek
de1a1af908 FullscreenUI: Avoid per-frame memory allocations with SmallString 2024-04-09 19:54:25 +10:00
Stenzek
631fca3042 SettingsInterface: Add SmallString overloads 2024-04-09 19:54:25 +10:00
Stenzek
6b7cf6a432 SmallString: Add missing methods 2024-04-09 19:54:25 +10:00
Marcin Mitura
daab121a14 misc: translation file cleanup (#3155) 2024-04-09 19:53:11 +10:00
KamFretoZ
8e68faa38b BPM: Fixes swapped arrow key glyphs (#3156) 2024-04-09 19:53:01 +10:00
Stenzek
be342ff592 CI: Fix incorrect flatpak cache key 2024-04-07 19:25:27 +10:00
PugsyMAME
7dbe021a75 New cheats and cheat cleanups (#3154)
Cheat Submissions:
diego-rbb-93 : spanish cheat codes for Digimon World (Spain) {SLES-03436}
Pugsy: WTW & Kill All Enemies cheats for Epidemic (Europe) {SCES-00393} &  Epidemic (USA) {SCUS-94152} 
Teh69thSpartan: alt. Moon Jump & speed cheats for Crash Bandicoot (USA) {SCUS-94900}
Pugsy: Invincibility against Buildings & Ground for Ace Combat 3: Electrosphere (Japan) {SLPS-02020 | SLPS-02021}
Teh69thSpartan: updated Rapid Laser cheats for Toy Story 2 USA & EURO {SLUS_00893 & SLES_02067}
Teh69thSpartan: various cheats addded for Crash Bandicoot Carnival (Japan) {SCPS-10140}

Clean-ups:
Removed duplicated cheats and commented out old cheats in Ace Combat 3: Electrosphere (Japan) {SLPS-02020 | SLPS-02021}
Combined multiple double 80xxxxxx xxxx cheats into 90xxxxxx yyyyxxxx cheats
2024-04-07 19:10:57 +10:00
Marcin Mitura
841a6e1f17 lupdate translation file. (#3153) 2024-04-07 19:10:46 +10:00
Stenzek
71f50566f3 System: Consider pending ticks when using global ticks 2024-04-07 19:01:48 +10:00
Stenzek
1782151a7a GameDB: PGXP-CPU for Newman Haas Racing 2024-04-07 19:01:09 +10:00
Stenzek
8a1b4d8bee DMA: Halt linked list transfers during pad transfer
Plenty of games seem to suffer from this issue where they have a linked list
DMA going while polling the controller. Having a large slice size causes the
serial transfer to complete before the silly busy wait in the BIOS poll routine
returns, resulting in it thinking that the controller is disconnected. Some
games are very sensitive to this (e.g. Newman Haas Racing), to the point that
even using a slice size of 1 is insufficient for avoiding the race, probably
due to the linked list layout.

Therefore, without major refactoring to ensure the CPU runs every DMA block,
and the associated performance penalty, we just halt the DMA until the serial
transfers have completed. To reduce the chances of this significantly affecting
timing, we add accumulate the ticks that have been "lost", and allow them to be
"used up" when the transfer does happen.
2024-04-07 18:55:03 +10:00
Stenzek
8bdeb8bdac MemoryCardImage: Handle 128KB GME files 2024-04-07 17:06:42 +10:00
Stenzek
1ee5f737ed MemoryCardImage: Report errors to caller 2024-04-07 13:23:00 +10:00
Stenzek
9dd686a994 ByteStream: Add error feedback 2024-04-07 13:10:34 +10:00
Stenzek
f4584f48f9 dep/imgui: Disable windowing key 2024-04-06 21:51:52 +10:00
Stenzek
99b0fb5911 GPU/HW: Move pipelines to end of struct
Helps keep the rest in range for ARM32's 4K displacement.
2024-04-06 21:51:52 +10:00
Marcin Mitura
79e96ff5e6 Polish localization updates (#3152) 2024-04-06 21:51:32 +10:00
PugsyMAME
ca118982f2 Added submitted cheats and more clean ups c/o (#3151)
Brings chtdb.txt upto date with my own version
New cheats added for various games (cheats from unicorngoulash, Teh69thSpartan, hugopocked and others - inc myself).
Fixed various cheat names, and placed others in list selects to make them more user friendly
2024-04-06 21:51:17 +10:00
Stenzek
69f79c3a4f Deps: Speed up shaderc build
Mainly for flatpak...
2024-04-06 00:12:16 +10:00
Stenzek
d9b1d39638 Updater: Add missing CoInitializeEx() call 2024-04-05 20:02:39 +10:00
Stenzek
d8bf0c81a7 Updater: Use IFileOperation 2024-04-05 19:26:12 +10:00
Stenzek
26c76d184f Qt: Fix toolbar position not saving 2024-04-05 19:21:56 +10:00
Connor McLaughlin
26979f5569 Docs: Add Fedora package names to README.md 2024-04-05 17:57:31 +10:00
shikulja
d3b552e759 Update Russian translation (#3149)
* Update ts

* Update Russian translation
2024-04-05 17:54:27 +10:00
Stenzek
52f1686520 Deps: Remove glslang 2024-04-05 17:53:24 +10:00
Stenzek
98241cb6ba GPUDevice: Swap out glslang for shaderc 2024-04-05 17:53:24 +10:00
Stenzek
e245884d16 Deps: Build shaderc 2024-04-05 17:53:24 +10:00
Stenzek
69c9133cd4 Common: Fix double free on opening invalid zip file 2024-04-05 17:23:29 +10:00
Stenzek
bdafbe0b28 Qt: Fix crash on shutdown settings save 2024-04-05 17:23:29 +10:00
Stenzek
3d84da0ddd Docs: Update README.md 2024-04-05 17:23:28 +10:00
Stenzek
ffbb14f508 dep/imgui: Use FreeType rasterizer 2024-04-05 17:23:28 +10:00
Stenzek
69588bf7a6 Deps: Include freetype/harfbuzz shared libraries 2024-04-05 17:23:28 +10:00
Stenzek
5c56d4e869 Deps: Update to Qt 6.7.0 and SDL 2.30.2 2024-04-05 17:23:28 +10:00
Stenzek
0a17cf7db8 Qt: More missing toNativeSeparators() calls 2024-04-04 16:59:52 +10:00
Stenzek
4270dd0804 GameDB: More hashes 2024-04-04 16:19:58 +10:00
Stenzek
44322a14f0 dep/imgui: Update to v1.90.4 2024-04-04 16:17:01 +10:00
Stenzek
1097eab600 GPU/HW: Don't create shader blend pipelines if disallowed 2024-04-04 13:25:33 +10:00
Stenzek
c2a08bdb1d CPU/NewRec: Fix ARM32 (again) 2024-04-04 13:25:33 +10:00
Stenzek
a432308908 GPU: Fix GLES compile error 2024-04-04 13:25:33 +10:00
Stenzek
5e05328dea GameDB: Motor Toon Grand Prix (again) 2024-04-04 13:25:33 +10:00
Anderson Cardoso
5e1c5277b3 Atualização Português do Brasil (#3148)
* Atualização Português do Brasil

Atualizado para a última versão.

* Atualização Português do Brasil

Atualizado para a última versão.
- Novo tema
- OSD sobre PGXP atualizada
2024-04-04 11:27:04 +10:00
Stenzek
e197cce832 GameDB: More PSX.EXE games 2024-04-04 11:26:29 +10:00
Stenzek
59a13d91ea Image: Don't use libjpeg stdio functions
Fixes I/O in debug builds.
2024-04-03 23:01:53 +10:00
Stenzek
cb6be52404 GameDatabase: Warn if CPU mode is enabled and unnecessary 2024-04-03 22:58:20 +10:00
Stenzek
bd19276cf5 Qt: Fix loading/saving state to file on Windows 2024-04-03 22:58:20 +10:00
Stenzek
59a7c3d9a8 GameDB: Various updates 2024-04-03 22:58:20 +10:00
Blackbird
19b55f8db8 GameDB: Rayman Brain Games (#3143) 2024-04-03 22:57:36 +10:00
Anderson Cardoso
38249a3357 Atualização Português do Brasil (#3144)
Atualizado para a última versão.
2024-04-03 22:57:23 +10:00
zkdpower
fa644a05b3 Update the Simple-Chinese translation to latest. (#3147) 2024-04-03 22:57:12 +10:00
KamFretoZ
cb26acbc6c Qt: Port over Cobalt Sky theme from PCSX2 (#3145) 2024-04-03 22:56:59 +10:00
Stenzek
41cc60e87e VulkanDevice: Use vkCmdClearAttachments() to avoid render pass restart 2024-04-01 18:12:53 +10:00
Stenzek
5ec1331831 Qt: Update glyph ranges 2024-04-01 18:12:53 +10:00
zkdpower
3a0bc36f9f Update the Simple-Chinese Translation to latest. (#3142) 2024-04-01 18:12:52 +10:00
Stenzek
a89c514d3f Qt: Minor typo corrections 2024-04-01 18:12:52 +10:00
Stenzek
74f3c8d1aa GPU/HW: Enable feedback loops for rendering 2024-04-01 18:12:52 +10:00
Stenzek
72ab669e70 GPUDevice: Add support for feedback loops 2024-04-01 13:55:19 +10:00
Stenzek
cc5f9a12b1 dep: Update Vulkan-Headers to v1.3.279 2024-04-01 13:55:00 +10:00
Stenzek
71a07a5a8e CPU/NewRec: Fix lwl/lwr on ARM 2024-03-31 23:49:40 +10:00
Stenzek
86927ea3eb Qt: Use window modality for message boxes
Stops them opening in the middle of the screen on MacOS.
2024-03-31 23:37:49 +10:00
Stenzek
f0f1473b6e Qt: Fix native message boxes on MacOS 2024-03-31 23:12:14 +10:00
Anderson Cardoso
578490648b Atualização Português do Brasil (#3141)
- Confirmação de mensagens OSD
2024-03-31 15:53:24 +10:00
Stenzek
0b99db6730 Qt: Ensure settings are writable before running setup wizard 2024-03-31 15:51:30 +10:00
Stenzek
693982d755 SettingsInterface: Add Error to Save() 2024-03-31 15:50:29 +10:00
Stenzek
eb504143c1 FileSystem: Add Error to CreateDirectory()/RenamePath() 2024-03-31 15:50:13 +10:00
Stenzek
3ecc19c43f GPU: Fix HW readback counter 2024-03-31 14:02:44 +10:00
Stenzek
8ebda3cdc8 CPU/NewRec: Fix register corruption in swl/swr 2024-03-31 13:55:19 +10:00
Stenzek
a3013efbca CPU/NewRec: Fix PGXP desync
Wobbly geometry in Threads of Fate.
2024-03-30 00:46:38 +10:00
Stenzek
979b7bd36f FileSystem: Use PathCchCanonicalizeEx() for GetWin32Path() 2024-03-30 00:46:38 +10:00
Stenzek
ab445ec69d FileSystem: Handle paths longer than MAX_PATH on Windows 2024-03-29 16:23:03 +10:00
Stenzek
e5adb5452b GameDB: Motor Toon Grand Prix 2024-03-29 15:13:42 +10:00
Stenzek
f9f9447013 SPU: Ignore End+Mute flag for noise channels
Fixes the noise effects cutting out too early in Motor Toon Grand Prix.
2024-03-29 15:08:14 +10:00
Stenzek
d4d3518e68 CI: Enable DBus for Linux deps build 2024-03-29 13:25:30 +10:00
Stenzek
2b7008bd93 GPU/HW: Fix box downsampling with FMVs 2024-03-29 12:37:10 +10:00
Stenzek
c41563c7dc Pad: Fix unconditional memory card replug on load state 2024-03-29 12:34:42 +10:00
Stenzek
e54ad1956a GPU/HW: Fix height incorrect doubling in interleaved 480i mode 2024-03-29 12:17:13 +10:00
Anderson Cardoso
c09e9edc4a Atualização Português do Brasil (#3139)
Resumo:
- Extensão Webp para capturas de tela
- OSD atualizada PGXP
- Subq CD-Rom

Detalhado:
Nova opção para captura de tela em formato webp, por padrão, Duckstation usa o formato .png caso queira mudar
siga em:
Configurações > Gráficos > (aba) Captura e por fim escolha a opção webp.

Mensagem referente ao uso do PGXP desativado pelas configurações de compatibilidade atualizado, alguns jogos
como Crash team racing e Sheep rider quando utilizado o PGXP sofrem com quebras de polignos no chão. esta mensagem
faz referência a estes jogos (já testados) que têm este problema com a tecnologia pgxp ativado.

Foi detectado em testes recentes que a funcionalidade de leitura de CD-rom no emulador estava tendo problemas de travamentos
engasgos, telas pretas, tanto durante o gameplay quanto na leitura de CDs de música (tela do BIO), no caso de jogos. ocorria
por conta do segundo canal de código, que alguns leitores de CD têm, foi adidionado uma opção para ignorar esse segundo canal de código para que os jogos/CDs possam ser lidos de forma correta. porém pode não funcionar com jogos com criptografia (PAL/Europeus).
2024-03-28 14:16:09 +10:00
Stenzek
fe35542c76 D3D11Device: Add MAP_DISCARD fallback path for uniform streaming 2024-03-28 13:59:09 +10:00
Stenzek
de1e5b24fb CDROM: Don't send reports when subq isn't valid 2024-03-26 01:20:33 +10:00
Stenzek
28fd6c0ea4 Qt: Expose "Ignore Drive Subcode" option 2024-03-26 01:20:33 +10:00
Stenzek
98d2d866d6 CI: Use OS zlib for MacOS
Because the updater doesn't get fixup'd, so the dylib doesn't get added
to its bundle.
2024-03-26 01:20:33 +10:00
Stenzek
3e8dd2c374 CDImageDevice: Fix reading of pure audio CDs 2024-03-25 23:24:41 +10:00
Stenzek
83ebad1129 System: Leave title empty when booting physical audio CDs 2024-03-25 23:24:41 +10:00
Stenzek
7b8704aba1 System: Fix incorrect sanitization of memcard filenames 2024-03-25 23:24:41 +10:00
Stenzek
315524a89c VulkanDevice: Fix render pass fallback path with MRT 2024-03-24 22:32:44 +10:00
Stenzek
f1847462a9 VulkanDevice: Fix rendering to multiple targets 2024-03-24 22:32:44 +10:00
Stenzek
3206054fab OpenGLDevice: Fix rendering to multiple RTs 2024-03-24 22:32:44 +10:00
Stenzek
101ebe3ac3 PostProcessing/FX: Fix GLSL compile error with discard 2024-03-24 22:32:44 +10:00
Stenzek
9cdff4781f OpenGLDevice: Fix depth clears not going through 2024-03-24 22:32:44 +10:00
Stenzek
480c78502f System: Fix crash toggling debug GPU device
When postfx is enabled.
2024-03-24 22:32:44 +10:00
Stenzek
c0e6750ad3 Updater: Link zlib statically
Old builds don't know that the DLL is needed when extracting...
2024-03-24 18:46:26 +10:00
Stenzek
057c0c65a6 CI: Drop setup-python for Mac
No longer needed?
2024-03-24 16:12:34 +10:00
Stenzek
b1c00cfd95 CI: Don't bother building SDL2 debug
Nobody's actually running debug DS builds except me...
2024-03-24 16:03:00 +10:00
Stenzek
43fc9f1ef2 Settings: Support saving WebP screenshots 2024-03-24 16:03:00 +10:00
Stenzek
f3c0c14b2a Image: Support loading/saving WebP 2024-03-24 16:03:00 +10:00
Stenzek
cd3c88ad7e deps: Remove now-unused vendored libs 2024-03-24 16:03:00 +10:00
Stenzek
b143d96476 Build: Use deps DLLs on Windows 2024-03-24 16:02:59 +10:00
Stenzek
68ff16e187 CI: Build zlib/zstd/libjpeg/libpng as part of deps 2024-03-24 15:17:09 +10:00
Stenzek
8c09e9389d GameDB: Add DisablePGXPPreserveProjFP trait
And add it to Crash Team Racing.
2024-03-23 14:11:28 +10:00
Stenzek
17e3e96789 CI: Build libwebp on Windows as part of deps 2024-03-23 13:47:10 +10:00
Anderson Cardoso
f2a7810e70 Atualização Português do Brasil (#3137)
Atualizado para a última versão.
2024-03-23 13:46:45 +10:00
Stenzek
084a76afa0 CDImageDevice: Verify MSF of SUBQ before use 2024-03-23 13:46:18 +10:00
Stenzek
4d5c8cb134 Qt: Fix main window stuck open after update 2024-03-23 02:26:56 +10:00
Stenzek
d96062b690 AudioStream: Fix infinite loop 2024-03-21 03:50:46 +10:00
Stenzek
2be8287edf Qt: Fix closing log window via taskbar 2024-03-21 02:01:48 +10:00
Stenzek
bcc7ab71cb NoGUI: Add SDL platform 2024-03-21 01:53:44 +10:00
Stenzek
604dd5df40 Qt: Add copy/clear game settings 2024-03-21 00:50:57 +10:00
Stenzek
3085172ffd FullscreenUI: Update translation strings 2024-03-20 22:48:23 +10:00
Stenzek
9703542775 AudioStream: Re-add SDL backend 2024-03-20 22:46:20 +10:00
Stenzek
e70f0e1bc1 GPU/HW: Use texelFetch() instead of sampler 2024-03-20 21:56:20 +10:00
Stenzek
a4a58c6ba2 SPU: Implement volume sweep phase inversion 2024-03-20 21:55:55 +10:00
Stenzek
8db0fcee99 GameDB: More PGXP CPU traits 2024-03-18 02:07:42 +10:00
Stenzek
2003c9452b DMA: Properly handle bus errors and DICR transitions 2024-03-18 02:07:42 +10:00
Stenzek
fa6850902a CPU: Make interrupts actually edge-triggered 2024-03-18 01:46:19 +10:00
Anderson Cardoso
3702a533f2 Update duckstation-qt_pt-BR.ts (#3135) 2024-03-17 00:10:36 +10:00
Stenzek
e755e15c69 GPU: Fix GLSL compile error 2024-03-17 00:07:18 +10:00
Stenzek
1ab7850ed0 GPU: Rewrite deinterlacing and add adaptive/blend modes 2024-03-16 14:14:15 +10:00
Stenzek
8b2b4ce8d9 Image: Fix reading of JPEG files 2024-03-16 14:14:15 +10:00
Stenzek
43eb6e20fa System: Improve screenshot naming 2024-03-16 14:14:15 +10:00
Stenzek
6aa491f863 GPU: Ensure screenshots are saved before shutdown 2024-03-16 14:14:15 +10:00
Anderson Cardoso
5054d46075 Add Theme - Ruby
This PR adds the Ruby Dark theme from PCSX2 to Duckstation

Thanks @KamFretoZ for the heads up,
Credits custom palette @Daisouji
2024-03-16 14:13:55 +10:00
Stenzek
9211d9f2e3 Path: Add CreateFileURL() 2024-03-16 14:10:35 +10:00
Stenzek
b9c9b05878 Qt: Remove duplicate menu action 2024-03-13 14:14:40 +10:00
Stenzek
51b3fabd31 OpenGLContext: Try libEGL.so.1 as well as libEGL.so 2024-03-13 14:14:40 +10:00
Stenzek
d1a1cab9a9 Bus: Direct KUSEG+KSEG0 isolated cache reads to ICache 2024-03-13 14:14:40 +10:00
Stenzek
3395853ba2 CDROM: Fix overflow in UpdatePositionWhileSeeking() 2024-03-13 14:14:40 +10:00
shikulja
b76af42acc Update Russian translation (#3132)
* Update Russian translation

* Update Russian translation
2024-03-13 14:14:30 +10:00
Anderson Cardoso
9950fdb07a Memory Card Icon (#3133)
Update of position for the Memory Card icons in flyout menus tested in both White and Dark themes.
2024-03-13 14:14:11 +10:00
Mrlinkwii
78854f433a Deps: update simpleini to 4.22 (#3131) 2024-03-13 14:12:36 +10:00
Stenzek
604b47c7b7 Deps: Update to SDL2 2.30.1 and Qt 6.6.2 2024-03-08 23:41:14 +10:00
Stenzek
9b784b1777 OpenGLDevice: Fix incorrect streamed counter 2024-03-08 21:20:44 +10:00
Stenzek
8fe86ff690 GPU/HW: Fix another buffer unmapping case 2024-03-08 21:16:00 +10:00
Stenzek
de1338cbbc VulkanDevice: Add additional semaphore on swap chain
We don't actually need +1 semaphores, or, more than one really.
But, the validation layer gets cranky if we don't fence wait before the next image acquire.
So, add an additional semaphore to ensure that we're never acquiring before fence waiting.
2024-03-08 14:16:56 +10:00
Stenzek
7159330f63 GPU/HW: Ensure buffers are unmapped before present
Darn DX11...
2024-03-08 13:43:22 +10:00
Stenzek
25db163347 System: Fix incorrect save state screenshot size 2024-03-08 04:12:50 +10:00
Anderson Cardoso
9ac97f40fd Atualização Português do Brasil (#3129)
Confirmação de textos movidos.
2024-03-07 00:03:54 +10:00
Stenzek
c854b8f85e Image: Swap stb for libpng/libjpeg 2024-03-07 00:02:35 +10:00
Stenzek
e9c4416272 dep: Add libjpeg v9f 2024-03-06 23:55:18 +10:00
Stenzek
b749c483da dep: Add libpng 1.6.43 2024-03-06 23:55:18 +10:00
Stenzek
250b1bea8f GPU: Use Image class for screenshot saving 2024-03-06 23:55:18 +10:00
Stenzek
620d08f72d Build: Move Image from common to util 2024-03-06 16:09:21 +10:00
Stenzek
faa64ec4ff Qt: Improve log window behavior on MacOS 2024-03-05 00:02:22 +10:00
Stenzek
3d2a091c46 Qt: Improve upscale label text 2024-03-05 00:02:22 +10:00
Stenzek
a3f6930072 Qt: Fix default arrow key binding on MacOS 2024-03-05 00:02:22 +10:00
Stenzek
f80ead6a21 GameDB: More settings 2024-03-05 00:02:22 +10:00
Anderson Cardoso
adb2d6c316 Atualização Português do Brasil (#3128)
Atualizado para a última versão
2024-03-04 23:58:30 +10:00
Anderson Cardoso
403ee01a33 Atualização Português do Brasil (#3126)
* Atualização Português do Brasil

- Novo modo de deteção de linhas pela GPU
- Novas opções do modo Big duck mode adicioadas
- Várias outras opções antes movidas ou realocadas confirmadas para a última versão.

* Update do update

Melhoria de contexto
2024-03-03 14:03:39 +10:00
Stenzek
ae0dde8b18 Qt: Make some extra space in memcard settings
Settings should fit on 720p now.
2024-03-03 14:03:07 +10:00
Stenzek
e2024f6175 System: Change "Auto Load Cheats" to "Enable Cheats" 2024-03-03 14:03:07 +10:00
Stenzek
f4ffaa1e3c Data: Fix crt-lottes.glsl for D3D renders 2024-03-03 14:03:07 +10:00
Stenzek
a1d7d214cf GPUDevice: Add support for VRR and relaxed vsync 2024-03-03 14:03:07 +10:00
Anderson Cardoso
d9e496284f Atualização Português do Brasil (#3125)
Atualizado para a última versão
2024-03-02 21:28:38 +10:00
Stenzek
a5de489d6f CI/Flatpak: Use flatpak-github-actions 2024-03-02 21:28:15 +10:00
Stenzek
96f29d9b99 System: Warn if compatibility settings are disabled 2024-03-02 21:21:20 +10:00
Stenzek
04b837a418 Qt: Redesign graphics settings panel
Add screenshot format/type.
2024-03-02 21:21:20 +10:00
Stenzek
b8127facdc GPUDevice: Memoize preferred renderer for auto 2024-03-02 17:45:39 +10:00
Stenzek
713d396a7e GPU/HW: Add quad line detection (Wild Arms 2) 2024-03-02 17:13:19 +10:00
Stenzek
250fb56838 GPU/HW: Switch to indexed draws 2024-03-01 15:33:00 +10:00
Stenzek
b34742cdd2 GPU/HW: Slightly reduce struct size 2024-03-01 13:51:16 +10:00
Stenzek
d50ba989ae Settings: Use bitfields for bool
Slightly more compact, memory-wise.
2024-03-01 13:42:29 +10:00
Stenzek
9e26622a12 CDImageDevice: Implement disc reading for Linux
And fix it for Windows. SubQ reading should now work.
2024-03-01 00:50:31 +10:00
Stenzek
b060edc61b VulkanDevice: Actually use all the swap chain semaphores 2024-03-01 00:50:27 +10:00
Stenzek
edeaaebc7d OpenGLContextEGL: Fix X11+platform base combination 2024-02-29 20:07:05 +10:00
Stenzek
f936a36c85 GPUDevice: Add GPUDownloadTexture
Which can also be based in host/client memory.
Use it for screenshots and VRAM downloads.
2024-02-29 18:56:50 +10:00
Wunkolo
4309d8ebf3 VulkanDevice: Add TryImportHostMemory
Utilizing `VK_EXT_external_memory_host`, attempt to import the host-pointer into a `VkBuffer`, `VkDeviceMemory`, and an offset to the start of the data. When the page size matches the import alignment, then it is possible to import an entire range of memory from the host directly into a vulkan-side buffer to read and write into.
2024-02-29 17:00:51 +10:00
Wunkolo
0ce1149e41 VulkanDevice: Optional VK_EXT_external_memory_host enablement
Allows usage of this extension only when the import-pointer-alignment
matches that of the hosts' page size.
2024-02-29 17:00:51 +10:00
Stenzek
411213d6a0 GPU: Make VRAM a global object 2024-02-29 17:00:51 +10:00
Stenzek
7340324ed9 CDROM: Accuracy improvements 2024-02-29 17:00:51 +10:00
Stenzek
120f5bb434 GameDB: Various additions 2024-02-29 16:15:05 +10:00
Stenzek
71094a0e44 CPU: Implement memory breakpoints/watchpoints 2024-02-28 00:02:02 +10:00
Stenzek
ef4389cea8 Qt: Cache CPU register values
That way they don't update while running.
2024-02-27 22:38:43 +10:00
Stenzek
4599109854 CPU/CodeCache: Clear backpatch info for blocks when recompiled 2024-02-27 22:16:59 +10:00
Stenzek
454cceab80 CPU/CodeCache: Move backpatch lookup after RAM check
Saves a map lookup if we're just invalidating code.
2024-02-27 21:04:26 +10:00
Stenzek
eb7b6d217d System: Ensure GPU is flushed before invalidating on pause 2024-02-27 21:04:26 +10:00
Stenzek
a63e78d83c Qt: Mutate breakpoints on CPU thread 2024-02-27 21:04:25 +10:00
Stenzek
eeef0a92bb CPU: Make single step go through the "normal" execution path
That way it exits and re-enters the dynarec as expected.
2024-02-27 21:04:25 +10:00
Stenzek
e3a287de44 Qt: Keep debugger open outside of game 2024-02-27 20:15:12 +10:00
Stenzek
4a70164dac CMake: Determine host page size at build time
Needed for running on Asahi Linux.
2024-02-25 20:30:41 +10:00
Stenzek
ab83247de3 GLContext: Rename to OpenGLContext 2024-02-25 20:30:41 +10:00
Stenzek
c1381cfda6 System: Gracefully handle memory allocaion failure 2024-02-25 20:30:41 +10:00
Stenzek
9ac9fc0a1e Host: Add ReportFatalError() 2024-02-25 20:30:41 +10:00
Stenzek
18ba2032ad Error: Add AddPrefix()/AddSuffix() 2024-02-25 20:30:41 +10:00
Stenzek
df3517f19b GLContext: Use EGL 1.5 platform selection 2024-02-25 20:30:41 +10:00
Stenzek
143fb0876d dep/glad: Update to v2.0.5 2024-02-25 20:30:41 +10:00
Stenzek
fcb8ce1ebc Common: Add DynamicLibrary 2024-02-25 20:30:40 +10:00
Anderson Cardoso
b5b5f6bc67 Atualização Português do Brasil (#3123)
Confirmado textos movidos do depurador.
2024-02-25 20:30:29 +10:00
Stenzek
ea649bdb1b Common: Fix duplicate fastjmp on Windows/CMake 2024-02-25 01:53:23 +10:00
Stenzek
ff9dc11a38 CPU/CodeCache: Increase frame delta for manual protected blocks
Reduces stutter in Wild Arms 2.
2024-02-24 15:06:24 +10:00
Stenzek
35cdfc5ef7 CPU: Move PGXP registers earlier in struct 2024-02-24 14:57:31 +10:00
Stenzek
53c0dc8bbc CPU/NewRec: Speculative execution for mult/div 2024-02-24 14:57:30 +10:00
Stenzek
175d2a17f7 CPU/NewRec: Don't panic on unused opcodes 2024-02-24 14:57:29 +10:00
zkdpower
75cd2dac0d Update the Simple-Chinese translation to latest. (#3122) 2024-02-24 14:57:10 +10:00
Stenzek
94657ae4ab dep/rcheevos: Update to 3d01191 2024-02-24 14:52:57 +10:00
zkdpower
272c43d139 Update the Simple-Chinese translation to latest. (#3121) 2024-02-19 22:54:15 +09:00
Stenzek
2dc801e513 Qt: Fix mismatched debugger accelerators 2024-02-19 22:53:54 +09:00
Stenzek
8756672e12 ImGuiManager: Defer scale updates 2024-02-19 22:47:47 +09:00
Anderson Cardoso
330397b900 Atualização Português do Brasil (#3119)
* Atualização Português do Brasil

- Adicionado novo tema

* Atualização - Turco

Atualizado idioma Turco para a última versão, revisado por um nativo.

* Atualização Português do Brasil

Atualizado para a última versão
2024-02-18 15:44:47 +09:00
shikulja
ad2c8dbaa4 Update Russian translation 2024-02-18 15:44:33 +09:00
KamFretoZ
1f6636f62b Qt: Icon updates 2024-02-18 15:44:12 +09:00
Stenzek
0e6a9f637b dep/libchdr: Rebase to upstream 2a1119c 2024-02-18 15:34:06 +09:00
Anderson Cardoso
a1da72202b Atualização - Turco
Atualizado idioma Turco para a última versão, revisado por um nativo.
2024-02-15 23:17:18 +10:00
Anderson Cardoso
5da535c663 Atualização Português do Brasil
- Adicionado novo tema
2024-02-15 23:17:18 +10:00
zkdpower
a1f735353f Update the Simple-Chinese translation to latest. 2024-02-15 23:16:57 +10:00
Stenzek
01876ec4aa Qt: Fix a couple of game summary translation issues 2024-02-15 22:14:46 +09:00
Stenzek
1faecd8853 Qt: Fix labels when changing multi-tap controller type 2024-02-15 22:06:01 +09:00
KamFretoZ
d9846093c3 Qt: Add new theme "Grey Matter" 2024-02-06 23:49:05 +10:00
Tobias Jakobi
10616162f0 Qt: Add Missing QtCore includes 2024-02-06 23:48:45 +10:00
Tobias Jakobi
739729516e Core: Add missing standard library includes 2024-02-06 23:48:45 +10:00
Tobias Jakobi
317a7ce8a7 Util: Add missing standard library includes 2024-02-06 23:48:45 +10:00
Stenzek
8e7b212b03 System: Clear cheat list on reset 2024-02-06 22:24:33 +09:00
Anderson Cardoso
eafa5d41bb Atualização Português do Brasil
Atualizado para a última versão
2024-02-05 14:40:10 +10:00
Stenzek
d5fb5645fc ByteStream: Move zstd wrapper to util project
Removes zstd dependency from common, fixes updater running on Mac.
2024-02-05 14:28:26 +10:00
Stenzek
ac1fd7f0cf Qt: Remove update.zip after updating 2024-02-04 17:40:19 +10:00
Stenzek
885addcfce Qt: Fix update cleanup on Windows 2024-02-04 17:33:34 +10:00
Stenzek
3f0aa6b559 Data: Include crt-royale
From https://github.com/akgunter/crt-royale-reshade
2024-02-04 17:33:25 +10:00
Stenzek
3bd9cbdfec Qt: Update elevator for non-writable paths
i.e. support installation in Program Files.
2024-02-04 17:15:48 +10:00
Stenzek
058fe13c52 Data: Add RapidJSON to third-party notices 2024-02-04 16:55:32 +10:00
Stenzek
f6dc80cefa GameDatabase: Use TitleCase for traits 2024-02-04 16:47:26 +10:00
Stenzek
05cbf86be0 dep/rapidyaml: Add missing files 2024-02-04 16:47:26 +10:00
Anderson Cardoso
0955e5fb30 Atualização Português do Brasil
Novas opções de drivers adicionadas.
2024-02-04 16:19:07 +10:00
Stenzek
8ffc50a2a5 Data: Remove JSON GameDB 2024-02-04 16:14:05 +10:00
Stenzek
d7a1c447c6 GameDatabase: Switch to YAML 2024-02-04 16:14:05 +10:00
Stenzek
5c08fa9d00 dep: Add rapidyaml 2024-02-04 16:14:05 +10:00
Stenzek
f7bed69e7c Data: Add YAML GameDB/DiscDB 2024-02-04 16:14:05 +10:00
Stenzek
a957fb669d StringUtil: Fix inequal-length EqualNoCase 2024-02-04 15:22:38 +10:00
Stenzek
8170475c6b GameDB: More incompatible enhancement flags
And purge duplicates.
2024-02-04 14:07:16 +10:00
Stenzek
6cca468e65 MetalDevice: Add family check for 16-bit formats 2024-02-03 20:44:34 +10:00
Stenzek
06b11590fe MetalDevice: Textures should be private 2024-02-03 19:53:35 +10:00
Stenzek
73bb2e77af SDLInputSource: Expose IOKit/MFI toggles 2024-02-03 19:41:56 +10:00
Stenzek
29b5afecae MetalDevice: Fix creation error on non-RGBA8 layers 2024-02-03 19:41:56 +10:00
Stenzek
c2c3eac749 Build: Use shared webp/zstd/zlib 2024-02-03 19:41:56 +10:00
Stenzek
d793dbf8b9 Data: Update SDL Game Controller DB 2024-02-03 16:17:18 +10:00
Stenzek
607ee54ab7 deps: Bump to SDL2 2.30.0 2024-02-03 16:16:43 +10:00
Stenzek
cdb614a51f GPU/HW: Fix possible crash (again) 2024-02-03 16:00:24 +10:00
Stenzek
cdea4eb68b GPU/HW: Fix possible crash on setting change 2024-01-31 20:02:34 +10:00
Stenzek
a5825b642e GameDB: Disable PGXP culling for Kingsley's Adventure 2024-01-31 02:18:09 +10:00
Stenzek
ad41c81fa8 ImGuiOverlays: Fix incorrect animation when opening state selector 2024-01-31 00:53:30 +10:00
Stenzek
af2042e713 GPU/HW: Fix toggling PGXP depth buffer causing black screen 2024-01-31 00:53:30 +10:00
Stenzek
6184b671c5 ImGuiFullscreen: Slightly improve hover/animation behavior 2024-01-31 00:53:30 +10:00
Stenzek
ebaef81aae ImGuiFullscreen: Don't clamp scale to 1.0 2024-01-31 00:16:06 +10:00
bl@ck_m@ge
e9a21c4514 GameDB: compatibility fixes 2024-01-27 02:40:03 +10:00
zkdpower
a9d834cd8b Update the Simple-Chinese translation to latest. 2024-01-27 02:20:19 +10:00
Anderson Cardoso
5eefbcddc5 Atualização Português do Brasil (#3106) 2024-01-27 02:19:30 +10:00
Connor McLaughlin
65fefb05b4 Merge pull request #3082 from kamfretoz/indog
Indonesian Translation
2024-01-26 16:46:23 +10:00
KamFretoZ
3fd0ab3be0 Indonesian Translation 2024-01-26 13:21:02 +07:00
zkdpower
7d3d063583 Update the Simple-Chinese translation to latest. (#3104)
* Update the Simple-Chinese translation to latest.

* Update the Simple-Chinese translation to latest.

* Add files via upload

* Update the Simple-Chinese translation to latest.
2024-01-26 14:35:43 +10:00
Stenzek
05d969881f Qt: Fix setting typos 2024-01-26 14:35:05 +10:00
Stenzek
14e3969736 Misc: Warning fixes 2024-01-26 14:31:03 +10:00
zkdpower
08eec2e66e Update the Simple-Chinese translation to latest. 2024-01-25 13:43:19 +10:00
Anderson Cardoso
8b656d7db5 Atualização Português do Brasil
Atualizado para a última versão.
2024-01-25 13:42:54 +10:00
Stenzek
5e2bd6e0c2 CI: Add lint of GameDB 2024-01-25 13:42:52 +10:00
Stenzek
4f2e60af2a GameDB: Fix duplicated key 2024-01-25 13:42:41 +10:00
Stenzek
b545234152 CPU/NewRec/AArch32: Fix double condition 2024-01-25 13:42:41 +10:00
zkdpower
ef9edb8f40 Update the Simple-Chinese translation to latest. 2024-01-25 13:42:41 +10:00
Stenzek
f3ff003bbd GameDB: Disable WS in Resident Evil games 2024-01-24 14:07:18 +10:00
Stenzek
4f347bf626 Qt: Add missing display setting help text 2024-01-24 13:56:22 +10:00
Stenzek
9607b6d3d8 Qt: Make controller settings page scrollable
Backport of 21d3ad86d4
2024-01-24 13:53:07 +10:00
Stenzek
bcf7f55b93 VulkanDevice: Fix potential race between submit and main thread 2024-01-22 22:57:42 +10:00
Anderson Cardoso
56b452d58b Atualização Português do Brasil
Update to latest.
2024-01-22 14:41:19 +10:00
zkdpower
b7b2a500dc Update the Simple-Chinese translation to latest. 2024-01-22 14:41:19 +10:00
Hugo Locurcio
1b8e75e90b Take widescreen hack into account when determining automatic resolution scale
At widescreen aspect ratios, a greater resolution scale factor is required
to maintain crisp visuals. For instance, a 16:9 output requires ~1.333×
the resolution scale of a 4:3 output (as 16:9 is ~1.333× wider than 4:3).

This improves visuals at widescreen aspect ratios when the widescreen hack
is enabled, especially for ultrawide.
2024-01-22 14:41:19 +10:00
athenavr
5e2c6d24b9 Add independent settings for NeGcon axes (#3094)
* Add independent settings for NeGcon axes

* TOSQUASH coverage of the full NeGcon twisting range
2024-01-22 14:41:19 +10:00
Anderson Cardoso
daa8445331 Atualização Português do Brasil 2024-01-22 14:41:19 +10:00
Stenzek
37e8d1ab86 GPU/HW: Fix VRAM write replacements 2024-01-22 14:41:19 +10:00
Stenzek
a7b7ce2720 System: Fix crash with replacement precaching 2024-01-22 14:41:19 +10:00
Stenzek
a231fd4f22 Settings: Fix Match Window on Android 2024-01-22 14:41:19 +10:00
Stenzek
b9f7900e8c Qt: Update glyph ranges 2024-01-22 14:41:19 +10:00
zkdpower
543c28b240 Update the Simple-Chinese Translation to latest. 2024-01-22 14:41:19 +10:00
Stenzek
150ab8f4af GPU: Add host/hardware stats 2024-01-22 14:41:19 +10:00
Stenzek
884c851079 CPU: Fix GTE control register disassembly 2024-01-21 02:45:09 +10:00
Stenzek
0065800f05 Qt: Fix a couple of error log formats 2024-01-21 00:18:48 +10:00
Stenzek
f66866ed73 GPUDevice: Use Error class for initialization errors 2024-01-21 00:18:33 +10:00
Stenzek
24cb489a32 Qt: Update Korean translation by Hackjjang 2024-01-21 00:07:32 +10:00
Stenzek
429cb4f351 Qt: Allow toggling fullscreen when VM is paused 2024-01-21 00:07:32 +10:00
Stenzek
ecd8d97f72 FileSystem: Handle infinite symlink loops in FindFiles() 2024-01-21 00:07:32 +10:00
Stenzek
a0370c7fb7 Qt: Delete settings windows on close 2024-01-21 00:07:32 +10:00
Stenzek
b98ac8722a FullscreenUI: Move functionality to Host 2024-01-20 20:29:33 +10:00
Stenzek
bc04854ed3 GPU/HW: Bump shader cache version 2024-01-20 02:14:56 +10:00
Stenzek
687e212dfe GPU/HW: Shader compile fix 2024-01-20 02:14:36 +10:00
Connor McLaughlin
7c340609ed Merge pull request #3090 from Mrlinkwii/linuxqw
CI : Use wildcard for  libc downgrade
2024-01-19 23:01:19 +10:00
Stenzek
8970909400 Qt: Make Shift+Wheel scroll settings description 2024-01-19 22:13:29 +10:00
Mrlinkwii
836e59c615 CI : Use wildcard for libc downgrade 2024-01-19 12:01:08 +00:00
Stenzek
37276472eb Qt: Tidy up Enhancement settings 2024-01-19 21:40:44 +10:00
Stenzek
f369724b7c dep/imgui: Update to v1.90.1 2024-01-19 21:22:26 +10:00
Connor McLaughlin
352114dc91 Merge pull request #3089 from Calinou/add-debanding
Add debanding option to improve gradient smoothness with truecolor
2024-01-19 21:21:38 +10:00
Hugo Locurcio
cc94b76037 Add debanding option to improve gradient smoothness with truecolor
This option only has an effect if true color is also enabled.
2024-01-19 01:05:21 +01:00
bl@ck_m@ge
572ea80e50 GameDB: Remove DualShock support for Chessmaster II 2024-01-14 01:44:22 +10:00
Anderson Cardoso
4d1d830b30 Atualização Português do Brasil
- Incluido mensagens novas sobre fontes do modo Big duck mode
2024-01-14 01:44:22 +10:00
Stenzek
03d6500250 Log: Skip argument packing when below filter level 2024-01-14 01:44:21 +10:00
Stenzek
5f9eef585f Achievements: Wrap long achievement descriptions 2024-01-14 01:44:21 +10:00
Stenzek
5042460264 ImGuiFullscreen: Add LayoutUnscale() 2024-01-14 01:44:21 +10:00
Stenzek
eae4f73f94 Achievements: Open cheevo details in browser when selected 2024-01-14 01:44:21 +10:00
Stenzek
da9e3064c2 Achievements: Display missable/progression/win icons 2024-01-14 01:44:21 +10:00
Stenzek
e2e85a06cd dep/rcheevos: Bump to 74860c9 2024-01-14 01:44:21 +10:00
Stenzek
ecbd693d22 Qt: Fix warning 2024-01-13 13:55:48 +10:00
Stenzek
e86cf51a48 GPU/HW: Handle palette VRAM wrapping
Fixes block colours in The Next Tetris.
2024-01-13 13:54:51 +10:00
Stenzek
5d3cf93aa3 GPUDevice: Fix race on resize in GL/Vulkan 2024-01-10 22:46:57 +10:00
Stenzek
573dfd2a26 Qt: Add runtime downloading of OSD fonts 2024-01-10 22:46:57 +10:00
Stenzek
55a76892ae Qt: Add runtime resource downloading 2024-01-10 22:46:57 +10:00
Stenzek
73cee9f705 Settings: Add UserResources to EmuFolders
Allowing some resources, such as fonts/sounds to be overridden by the
user.
2024-01-10 22:46:57 +10:00
Connor McLaughlin
e4e7080f98 Merge pull request #3085 from 6lackmag3/patch-73
GameDB: add PS Mouse support for Discword
2024-01-10 22:24:14 +10:00
KamFretoZ
34160a8c1b Qt/FSUI: Backport PromptFont from PCSX2 for better readibility 2024-01-10 22:23:56 +10:00
bl@ck_m@ge
f84e6e3e67 GameDB: add PS Mouse support for Discword 2024-01-10 01:04:17 +03:00
Stenzek
c5c023af5f SDLInputSource: Log axes/buttons when controller is opened 2024-01-08 15:49:05 +10:00
Stenzek
fb3f0f04ed Resources: Add SDL to thirdparty.html 2024-01-08 15:49:05 +10:00
Stenzek
fcbae6cef3 GPU/HW: Fix off-by-one in dirty rect checks
Fixes transitions in Crash 3.
2024-01-08 15:49:05 +10:00
Anderson Cardoso
95486f7972 House cleaning (#3083)
* Clean Up

As discussed in discord this PR purges some empty forms and it's unused properties from the following files below.

achievementsettingswidget.ui:   <string>Form</string>
advancedsettingswidget.ui:   <string>Form</string>
audiosettingswidget.ui:   <string>Form</string>
biossettingswidget.ui:   <string>Form</string>
consolesettingswidget.ui:   <string>Form</string>
controllerbindingwidget.ui:   <string>Form</string>
controllerbindingwidget_analog_controller.ui:   <string>Form</string>
controllerbindingwidget_analog_joystick.ui:   <string>Form</string>
controllerbindingwidget_digital_controller.ui:   <string>Form</string>
controllerbindingwidget_guncon.ui:   <string>Form</string>
controllerbindingwidget_mouse.ui:   <string>Form</string>
controllerbindingwidget_negcon.ui:   <string>Form</string>
controllerglobalsettingswidget.ui:   <string>Form</string>
controllermacroeditwidget.ui:   <string>Form</string>
displaysettingswidget.ui:   <string>Form</string>
emptygamelistwidget.ui:   <string>Form</string>
emulationsettingswidget.ui:   <string>Form</string>
enhancementsettingswidget.ui:   <string>Form</string>
foldersettingswidget.ui:   <string>Form</string>
gamelistsettingswidget.ui:   <string>Form</string>
gamelistwidget.ui:   <string>Form</string>
generalsettingswidget.ui:   <string>Form</string>
postprocessingsettingswidget.ui:   <string>Form</string>
2024-01-05 02:57:33 +10:00
Stenzek
32f5482ad2 CPU: Inhibit debug dispatcher when COP0 BP is invalid 2024-01-01 15:25:48 +10:00
Stenzek
cf760bbe42 CDSubChannelReplacement: Clear map on reload
Fixes one PBP disc's SBI from leaking into others.
2024-01-01 14:46:58 +10:00
Stenzek
cc84952fdc AnalogController: Minimum deadzone/activation threshold should be 1% 2023-12-31 19:42:52 +10:00
Stenzek
12b9cf1898 GPU: Fix crash when trying to postprocess surfaceless 2023-12-31 19:40:45 +10:00
Connor McLaughlin
c57bd3c430 Merge pull request #3081 from andercard0/master
Autalização Português do Brasil
2023-12-28 22:07:38 +10:00
Anderson Cardoso
2bddafb1fc Autalização Português do Brasil
- Atualizado para versão mais recente.
2023-12-28 08:57:43 -03:00
Stenzek
a22eef63b9 Resources: Fix crt-lottes under Direct3D
And add additional builtin shaders.
2023-12-28 21:01:17 +10:00
Stenzek
344d2ccd5d OpenGLDevice: Work around lack of base_vertex in GLES3.1 2023-12-28 18:57:45 +10:00
Connor McLaughlin
e60654de38 Merge pull request #3080 from tobiasjakobi/different-types-fix
CPU/Recompiler: Fix build error
2023-12-28 18:54:36 +10:00
Stenzek
b75528272e Qt: Fix activation of existing game properties windows 2023-12-28 15:50:01 +10:00
Stenzek
6d3e3f78da System: Shorten libcrypt error on Android 2023-12-28 15:37:22 +10:00
Stenzek
958b033a66 PostProcessing: Fix assertion on some shader/texture formats 2023-12-28 15:31:03 +10:00
Anderson Cardoso
63bc3883ea Atualização Português do Brasil (#3079)
* Atualização Português do Brasil 

- Opções avançadas de cópia de textura (adicionada)
- Opções avançadas de armazenamento de texturas (adicionada)

* Update duckstation-qt_pt-BR.ts
2023-12-28 14:27:10 +10:00
Stenzek
6d07d70946 GPUDevice: Fix erratic texture pool recycling 2023-12-27 02:28:12 +10:00
Stenzek
98d5b98ab1 GPU/HW: Fix incorrect pipeline layout with texture buffers disabled 2023-12-27 02:03:50 +10:00
Anderson Cardoso
489235f48a Update ts files
Remove obsolete strings for all available languages files.
2023-12-27 01:45:16 +10:00
Stenzek
044eb589f9 Settings: Expose disable texture buffers/copy to self options 2023-12-27 01:44:08 +10:00
Tobias Jakobi
dbe29bd5ca CPU/Recompiler: Fix build error
Build currently fails on a GCC 13.2.x with:

/var/tmp/portage/games-emulation/duckstation-9999/work/duckstation/src/core/cpu_recompiler_code_generator.cpp: In member function ‘bool CPU::Recompiler::CodeGenerator::Compile_Bitwise(CPU::Instruction, const CPU::CodeCache::InstructionInfo&)’:
/var/tmp/portage/games-emulation/duckstation-9999/work/duckstation/src/core/cpu_recompiler_code_generator.cpp:1330:81: error: operands to ‘?:’ have different types ‘BitField<unsigned int, CPU::Reg, 16, 5>’ and ‘BitField<unsigned int, CPU::Reg, 21, 5>’
 1330 |                                PGXP::PackMoveArgs(dest, lhs.HasConstantValue(0) ? instruction.r.rt : instruction.r.rs)),
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/games-emulation/duckstation-9999/work/duckstation/src/core/cpu_recompiler_code_generator.cpp:1362:81: error: operands to ‘?:’ have different types ‘BitField<unsigned int, CPU::Reg, 16, 5>’ and ‘BitField<unsigned int, CPU::Reg, 21, 5>’
 1362 |                                PGXP::PackMoveArgs(dest, lhs.HasConstantValue(0) ? instruction.r.rt : instruction.r.rs)),
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2023-12-26 13:07:28 +01:00
Anderson Cardoso
abbcd65563 Atualização Português do Brasil (#3077)
* Atualização Português do Brasil

- Configurações (adicionado)
- Configurações avançadas modo exclusivo (adicionado)
2023-12-26 16:13:37 +10:00
Connor McLaughlin
dd5e4e5924 Update README.md 2023-12-26 16:12:58 +10:00
Stenzek
118c6c1269 VulkanDevice: Don't assume presence of vkGetPhysicalDeviceFeatures2 2023-12-26 13:00:58 +10:00
Stenzek
62d2f12236 Settings: Expose exclusive fullscreen control 2023-12-25 23:44:15 +10:00
Stenzek
46e0afd2d4 VulkanDevice: Actually allow enumeration of 1.0 device 2023-12-25 23:02:13 +10:00
Stenzek
c233eb53ab VulkanDevice: Potentially re-enable Vulkan 1.0 support 2023-12-25 21:59:52 +10:00
Anderson Cardoso
c33f415e72 Atualização Português do Brasil (#3075)
* Atualização Português do Brasil

- Novos textos no modo big duck mode (adicionado)
- Informação sobre tamanho de jogos (adicionado)
2023-12-25 19:50:21 +10:00
Stenzek
e81e3edb23 SDLInputSource: Optionally load game_controller_db.txt from data dir 2023-12-25 19:47:57 +10:00
Stenzek
55b5ec7321 Qt: Patch macdeployqt to always deploy Qt SVG imageformat plugin 2023-12-25 19:43:06 +10:00
Connor McLaughlin
00d6faac83 Merge pull request #3076 from CookiePLMonster/discord-rpc
DiscordRPC: Show session time in Discord Rich Presence
2023-12-25 19:42:59 +10:00
Silent
8d491d3faa System: Mark the VM as Stopping in ShutdownSystem unconditionally
Fixes an issue where Discord RPC didn't revert to "No Game Running"
on shutdown.
2023-12-23 15:27:10 +01:00
Silent
d08a40bcd8 DiscordRPC: Show session time in Discord Rich Presence 2023-12-23 15:19:22 +01:00
Stenzek
9ec3266f02 GPUDevice: Fix crash when using recycled targets 2023-12-21 23:40:03 +10:00
Stenzek
8fe6ef1fa8 CPU/NewRec: Allocate callee-saved registers before caller-saved 2023-12-21 02:00:19 +10:00
Stenzek
b7c3c76014 CPU/NewRec/RISCV64: Implement PGXP 2023-12-21 02:00:19 +10:00
Stenzek
8206b2b74a CMake: RISC-V build fixes 2023-12-21 01:01:04 +10:00
Stenzek
36643fe78b GameList: Add "File Size" field 2023-12-20 23:40:28 +10:00
Stenzek
fd341f6a9d dep/libchdr: Add chd_get_compressed_size() 2023-12-20 23:40:11 +10:00
Stenzek
bbd021bd5f DMA: Memory wraparound is unlikely 2023-12-20 22:44:50 +10:00
Stenzek
48a1282a08 GPU/HW: Fix incorrect layout for non-buffer VRAM write 2023-12-20 22:42:32 +10:00
Stenzek
dc5e4120cd GPUDevice: Improve texture pooling 2023-12-20 22:42:32 +10:00
Anderson Cardoso
efaee4ab50 Atualização Português do Brasil
- Atalhos (atualizado)
- Big duck mode UI (atualizado)
2023-12-19 22:44:17 +10:00
zkdpower
4a4e33ed72 Update the Simple-Chinese Translation to latest. 2023-12-19 22:43:13 +10:00
Stenzek
5ef2ba0eb2 GPU/HW: Add fallback path for no-texture-buffers
Yay, old Mali drivers without SSBOs...
2023-12-19 22:38:36 +10:00
Stenzek
4942964e2f OpenGLDevice: Fix texture creation issues w/o texture storage 2023-12-19 22:38:36 +10:00
Stenzek
717e0665ae GPUDevice: Support R16I/R16U textures 2023-12-19 22:38:36 +10:00
Stenzek
f5ddd7ba32 DMA: Template transfer functions
~20% speedup in FMV playback on a Ryzen 9 7950X3D. CPUs hate branches.
2023-12-19 22:38:36 +10:00
Stenzek
e736998f1e CI: Bump actions versions 2023-12-19 22:38:35 +10:00
Stenzek
b9665e83a3 MSBuild: Only link with Zydis in Debug builds 2023-12-19 22:38:35 +10:00
Stenzek
7fbf40a9fc MSBuild: Purge 32-bit targets
This has never been supported.
2023-12-19 22:38:35 +10:00
Stenzek
cf45047463 CI/Windows: Use Clang-CL instead of MSVC 2023-12-19 22:38:35 +10:00
Stenzek
21bbe5c76c CPU/CodeCache: Fix page error when rewinding 2023-12-19 22:38:27 +10:00
Stenzek
05b42f34eb JitCodeBuffer: Use MAP_FIXED on MacOS/MAP_FIXED_NOREPLACE on Linux 2023-12-19 22:20:00 +10:00
Stenzek
6a7dea6908 CPU/CodeCache: Fix rewinding on Apple Silicon 2023-12-18 21:01:57 +10:00
Stenzek
7829abc014 MSBuild: We don't need WinPixEventRuntime in Release builds 2023-12-18 20:50:36 +10:00
Stenzek
df08e122c3 System: Fix rewind throttling at half speed 2023-12-18 20:50:36 +10:00
Stenzek
87d24d3259 System: Fix crash on emptying rewind buffer 2023-12-18 20:50:36 +10:00
Stenzek
e6be0532cb System: Fix incorrect rewind VRAM estimation 2023-12-18 20:50:35 +10:00
Stenzek
9e82c18559 MetalDevice: Defer release of layer drawables 2023-12-18 20:50:35 +10:00
Stenzek
f4fb069216 MetalDevice: Explicitly bind fragment resources
Fixes adaptive downsampling with Metal renderer.
2023-12-18 20:50:35 +10:00
Stenzek
6fe2177ee7 MetalDevice: Fix incorrect mipmap texture creation 2023-12-18 20:50:35 +10:00
Stenzek
2d4191f8ce Qt: Fix game properties dialogs keeping app open 2023-12-18 13:34:12 +10:00
Stenzek
8842a46a90 CPU: Fix namespacing in disassembler 2023-12-17 13:40:38 +10:00
Connor McLaughlin
95a9edaa65 Merge pull request #3070 from andercard0/master
Atualização Português do Brasil
2023-12-17 13:35:01 +10:00
Stenzek
73968ac526 SaveStateSelectorUI: Decouple current slot from list 2023-12-17 13:33:51 +10:00
Anderson Cardoso
737915821d Atualização Português do Brasil
Atualizado OSD para conquista em modo hardcore.
2023-12-16 18:57:21 -03:00
Stenzek
cffb383c10 CPU: Add disassembly of GTE instructions 2023-12-17 00:38:11 +10:00
Stenzek
e08f888e72 OpenGLDevice: Fix incorrect scissor rect 2023-12-17 00:09:23 +10:00
Stenzek
6328d08c14 System: Don't unconditionally refresh save state UI 2023-12-17 00:09:15 +10:00
Stenzek
38777439c5 ShaderGen: Don't emit index qualifier when not using DSB
Fixes shader compile errors on Panfrost.
2023-12-16 22:40:30 +10:00
Stenzek
e93fec49bb Achievements: Reload settings after hardcode disabled 2023-12-16 21:12:05 +10:00
Stenzek
0632c3356c OpenGLDevice: More Mali driver workarounds 2023-12-16 21:04:40 +10:00
Stenzek
fb0ad26de8 Achievements: Fix incorrect fallback message 2023-12-15 23:54:31 +10:00
Connor McLaughlin
f84f19664b Merge pull request #3069 from andercard0/master
Atualização Português do Brasil
2023-12-15 22:09:00 +10:00
Stenzek
aa658047f6 CPU/Recompiler: Fix jal/jalr to load delayed register
NewRec already handled this correctly.
2023-12-15 21:46:30 +10:00
Stenzek
87a7c09466 GPU/HW: Improve heuristics for draw/write when copying 2023-12-15 16:05:44 +10:00
Stenzek
a499e21453 CPU/CodeCache: Don't try to compile direct double branches
Invalidation nightmare.
2023-12-15 13:46:48 +10:00
Stenzek
b04578afee ImGuiFullscreen: Fix menu background obscuring text 2023-12-15 13:45:19 +10:00
Anderson Cardoso
2eed013371 Atualização Português do Brasil
- Textos de sistema (incluidos)
2023-12-14 11:23:18 -03:00
Stenzek
b79703d14e GameDB: PGXP-CPU for Formula 1 2023-12-14 20:23:49 +10:00
Stenzek
98a96db1bd GPU: Remove redundant fields 2023-12-14 20:23:49 +10:00
Stenzek
23d5b20da6 GPU/HW: Split dirty rect into draw/write
Significant performance improvement in Persona 2.
2023-12-14 20:23:49 +10:00
Stenzek
5218ac6944 GPU/HW: Fix incorrect mask in VRAM offset calc 2023-12-14 20:23:48 +10:00
Stenzek
adfde45dc1 System: Add unsafe settings summary 2023-12-14 20:23:48 +10:00
Stenzek
2cd747983a SmallString: Pass string_view by value 2023-12-14 20:23:48 +10:00
Stenzek
57aa138808 PostProcessing: Add compile progress indicator 2023-12-14 20:23:48 +10:00
Stenzek
7e2afe82b5 FullscreenUI: Fix opening while paused 2023-12-14 20:23:48 +10:00
Stenzek
7e1276fbac GPUDevice: Fix binding deferred cleared textures
i.e. briefly flashing previous state after reset.
2023-12-14 20:23:48 +10:00
Connor McLaughlin
371c58dc72 Merge pull request #3068 from andercard0/master
Atualização Português do Brasil
2023-12-13 23:01:56 +10:00
Stenzek
c20805f2be VulkanDevice: Work around some mobile driver issues 2023-12-13 23:01:10 +10:00
Anderson Cardoso
82b71e8169 Atualização Português do Brasil
- Seleção de salvamento rápido (adicionado)
- Confirmação de textos movidos
- Correção de texto
2023-12-13 08:30:55 -03:00
Stenzek
4f84a98864 StringUtil: Pass string_views by value 2023-12-13 21:20:31 +10:00
Stenzek
710698f7e1 Misc: Remove StringUtil::{Starts,Ends}With, use C++20 2023-12-13 21:18:19 +10:00
Stenzek
79c226efff SmallString: fmt -> format, format -> sprintf 2023-12-13 21:06:15 +10:00
Stenzek
ad6e49998f RegTest: Add PGXP/upscale/recompiler options 2023-12-13 20:56:43 +10:00
Stenzek
bc2c334370 Misc: Combine some redundant functions 2023-12-13 20:56:40 +10:00
Stenzek
68d3cb5b4a CI/AppImage: Bump libc6 downgrade version 2023-12-13 12:36:28 +10:00
Stenzek
e14bf95043 Misc: Linux build fix 2023-12-13 12:35:56 +10:00
Connor McLaughlin
60e27a105c Merge pull request #3067 from Mrlinkwii/update
Qt/WinUpdater: Remove "Update Complete" dialog
2023-12-13 01:20:47 +10:00
Stenzek
ad96b1ec75 FullscreenUI: Improve menu button borders 2023-12-13 01:12:55 +10:00
Stenzek
c467825791 SaveStateSelectorUI: Make less ugly 2023-12-13 01:00:13 +10:00
Mrlinkwii
53241b740b Qt/WinUpdater: Remove "Update Complete" dialog
Co-Authored-By: KamFretoZ <14798312+kamfretoz@users.noreply.github.com>
2023-12-12 14:50:46 +00:00
Stenzek
dbaf49e4d4 VulkanDevice: Fix ARM32 build (again) 2023-12-10 23:31:01 +10:00
Stenzek
39913b2a39 GPUDevice: Fix incorrect positioning with PostFX and GL 2023-12-10 23:26:43 +10:00
Stenzek
27162e34a0 PostProcessing: Add Config::GetShaderOptions() 2023-12-10 22:22:02 +10:00
Stenzek
c90de025bf MetalDevice: Fix depth not storing 2023-12-09 22:08:14 +10:00
Stenzek
1a5865bf95 D3D12Device: Fix crash on SW renderer switch 2023-12-09 22:08:14 +10:00
Stenzek
1f4a37f8eb VulkanDevice: Fix crash on SW renderer switch 2023-12-09 22:08:14 +10:00
Stenzek
d068799515 VulkanDevice: Fix incomplete swap chain clear with dynamic rendering 2023-12-09 22:08:14 +10:00
Stenzek
f1604db4a3 GPU/HW: Dynamically size downsampling textures 2023-12-09 22:08:14 +10:00
Stenzek
ff37afef55 PostProcessing/FX: Support multiple render targets 2023-12-09 22:08:14 +10:00
Stenzek
fdd3edf73a Common: Add LLVM SmallVector 2023-12-09 22:08:14 +10:00
Stenzek
6b00bf016d GPU/HW: Dynamically size display texture 2023-12-09 22:08:14 +10:00
Stenzek
a907e1f550 GPUDevice: Pool textures 2023-12-09 22:08:13 +10:00
Stenzek
3b2c70cda5 GPUDevice: Get rid of framebuffer abstraction 2023-12-09 22:08:13 +10:00
Stenzek
a9ee2a34d8 SmallString: Add missing constructors/move operators 2023-12-09 22:06:59 +10:00
Stenzek
61783d4a34 GPU/HW: Remove unused variable 2023-12-08 20:24:59 +10:00
Stenzek
5c42d3906a Qt: Fix incorrect value of combo postfx options 2023-12-08 20:12:23 +10:00
Stenzek
b65d2748b4 GPUDevice: Implement MirrorRepeat address mode 2023-12-08 20:12:13 +10:00
Stenzek
6deb9d3072 D3D12Device: Fix incorrect RP end in CommitClear() 2023-12-08 14:33:05 +10:00
Connor McLaughlin
203e711d67 Merge pull request #3066 from IlDucci/es_ES_20231208
Spanish (Spain) translation update
2023-12-08 13:19:20 +10:00
IlDucci
3f36b26ed9 Spanish (Spain) translation update
Adding translations for the latest string changes.
2023-12-08 00:52:47 +01:00
Stenzek
b7c53102c6 GameDB: P2 2023-12-07 20:16:22 +10:00
Stenzek
10473f1cfb PostProcessing: Add categories/combos/tooltips 2023-12-07 15:19:10 +10:00
Stenzek
5e45d365c2 PostProcessing: Sort shader lists before showing 2023-12-07 14:17:33 +10:00
Stenzek
96d377a396 Qt: Fix performance counters showing up without VM 2023-12-07 14:14:06 +10:00
Stenzek
ba5d1a109e dep/reshadefx: Support generating GLSL ES 2023-12-07 14:13:56 +10:00
Stenzek
bcc2042154 OpenGLDevice: GLES fixes 2023-12-06 23:49:34 +10:00
Connor McLaughlin
14c7c70b0c Merge pull request #3065 from zkdpower/master
Update Simple-Chinese Translation.
2023-12-06 20:26:19 +10:00
Stenzek
6557033b98 FullscreenUI: Replace some std::string instances with TinyString 2023-12-06 20:12:20 +10:00
Stenzek
e835f118b7 Hotkeys: Fix toggle CPU PGXP with Interpreter 2023-12-06 20:12:20 +10:00
Stenzek
591a2228d6 GTE: Add register names for debugging 2023-12-06 20:12:20 +10:00
Stenzek
185af2b039 CPU/NewRec: Fix lui/mfc0 not getting called in CPU PGXP mode 2023-12-06 20:12:20 +10:00
zkdpower
4b02ce1926 update simple-chinese translation. 2023-12-05 22:56:11 +08:00
Stenzek
407049cd91 Qt: Resolve any symbolic links in AppRoot/DataRoot
Should fix incorrect relative path generation on FreeBSD, where /home is
a symlink to /usr/home.
2023-12-05 16:05:27 +10:00
Stenzek
524625269f Path: Add RealPath() 2023-12-05 16:05:27 +10:00
Stenzek
b166ec3403 CPU/NewRec: Allocate callee-saved before flush in lwx/swx
It might move a callee-saved -> caller-saved reg, in which case it's
going to get clobbered when the loadstore function is called.

SaGa Frontier 2 with PGXP on x64.
2023-12-05 00:27:55 +10:00
Stenzek
601d8ff629 MetalDevice: Anisotropy should be minimum 1 2023-12-05 00:27:55 +10:00
Stenzek
2071addce0 CPU/NewRec: Fix OOB reads on InstructionInfo 2023-12-05 00:27:55 +10:00
Connor McLaughlin
4f9cdb37d9 Merge pull request #3064 from andercard0/master
Atualização Português do Brasil
2023-12-05 00:27:43 +10:00
Anderson Cardoso
fad4c4804c Atualização Português do Brasil
- Alguns textos movidos confirmados novamente
- Menus de controle (atualizados)
- Menus de conquistas (adicionados)
- Menus de cartão de memória (atualizados)
2023-12-04 08:33:53 -03:00
Stenzek
158773b585 GameDB: More widescreen disables 2023-12-04 14:49:29 +10:00
Connor McLaughlin
1e0dbe3404 Merge pull request #3063 from zkdpower/master
update simple-chinese translation.
2023-12-04 14:15:49 +10:00
Stenzek
dc6bb357d4 Achievements: Handle dynamically-sized leaderboard trackers 2023-12-04 14:12:32 +10:00
Stenzek
07fac1fb19 Qt: Prompt user to enable HC mode on achievement login 2023-12-04 14:07:04 +10:00
Stenzek
41f821513b Qt: Fix translation context in MemoryCardEditorWindow 2023-12-04 13:44:58 +10:00
zkdpower
abf079b9d4 update simple-chinese translation. 2023-12-04 00:47:14 +08:00
Stenzek
86a8c4c6ae IsoReader: Fix ARM32 build 2023-12-03 22:13:17 +10:00
Connor McLaughlin
33db3b044c Merge pull request #3062 from andercard0/master
Atualização Português do Brasil
2023-12-03 22:08:26 +10:00
shikulja
7c7a45d68f Update Russian translation (#3061)
* upd ts

* Update Russian translation

* typo
2023-12-03 22:08:14 +10:00
Stenzek
6d57cb9d80 Qt: Fix links in first page of Setup Wizard 2023-12-03 22:07:52 +10:00
Stenzek
81e8abdc1e GL/Context: Disable fbfetch on Adreno GLES <502 2023-12-03 21:43:57 +10:00
Stenzek
90b14d6237 GPU/HW: Skip per-primitive flush for BG-FB with fbfetch 2023-12-03 21:37:26 +10:00
Stenzek
60b91a1cdb OpenGLDevice: Set glColorMask() on clear
Adreno doesn't appear to clear all channels otherwise.
2023-12-03 21:36:13 +10:00
Stenzek
2bdc691111 Qt: Fix window icon on Controller Settings 2023-12-03 17:05:22 +10:00
Stenzek
7ef3578630 ByteStream: Fix incorrect computation in Zstd SeekRelative() 2023-12-03 17:03:38 +10:00
Anderson Cardoso
041e3a1d71 Atualização Português do Brasil
- Adicionado mensagens OSD
2023-12-02 22:36:01 -03:00
Connor McLaughlin
d0d5b79b61 Merge pull request #3060 from martymac/FreeBSD-fixes
Free bsd fixes
2023-12-02 16:53:28 +10:00
Connor McLaughlin
e5af7fefde Merge pull request #3059 from CookiePLMonster/fix-total-unofficial-achievements
Achievements: Fix the percentage counter when only unofficial achievements exist
2023-12-02 16:17:26 +10:00
Connor McLaughlin
27a1b25105 Merge pull request #3058 from CookiePLMonster/move-game-info
FullscreenUI: Properly account for multiline Rich Presence in Title Info
2023-12-02 16:17:18 +10:00
Connor McLaughlin
16044b48f0 Merge pull request #3057 from andercard0/master
Atualização Português do Brasil
2023-12-02 16:17:01 +10:00
Stenzek
ea878533b8 Qt: Revert to 6.6.0 for Mac
Regressions...
2023-12-02 16:16:02 +10:00
Silent
888582713b Achievements: Fix the percentage counter when only unofficial achievements exist
Now correctly shows "This game has no achievements" and no percentage bar,
as per the RetroAchievements integration guide.
2023-12-01 22:24:59 +01:00
Silent
4854031a1c FullscreenUI: Properly account for multiline Rich Presence in Title Info 2023-12-01 18:08:19 +01:00
Anderson Cardoso
8e89d1eb86 Atualização Português do Brasil
Inclusão de mensagens OSD faltantes.
2023-12-01 12:16:26 -03:00
Connor McLaughlin
7a03d8cbc4 Merge pull request #3056 from andercard0/master
Atualização Português do Brasil
2023-12-01 19:38:55 +10:00
Connor McLaughlin
ddbb4136b1 Merge pull request #3055 from zkdpower/master
Update Simple-Chinese Translation.
2023-12-01 19:38:46 +10:00
Stenzek
2ca503639d GPU/HW: Avoid extra texture copy in Vulkan/GL 2023-12-01 19:08:50 +10:00
Stenzek
3469b83a58 VulkanDevice: Add barrier inbetween self image copies 2023-12-01 19:08:46 +10:00
Stenzek
d43efebcc5 GameDB: Add DisableTextureFiltering option 2023-12-01 17:36:37 +10:00
Stenzek
dc72f7a7af GPU/HW: Fix texturing-and-drawing overlap
Worms Pinball.
2023-12-01 17:36:23 +10:00
Anderson Cardoso
6772514bb3 Atualização Português do Brasil
- Adicionado textos faltantes
- Confirmado textos movidos e novos
- Consertado erros de digitação e consistência.
2023-11-30 13:39:32 -03:00
zkdpower
d23d466693 Update Simple-Chinese Translation. 2023-12-01 00:28:42 +08:00
Stenzek
310e3c0900 deps/qt: Update to Qt 6.6.1 2023-11-30 20:32:14 +10:00
Stenzek
df91c63b31 CDROM: Add PVD/directory entries to file map 2023-11-30 14:38:38 +10:00
Stenzek
8cfa4637a2 GameDB: Add more missing traits 2023-11-30 14:35:09 +10:00
Stenzek
7d5e2bf50c FullscreenUI: More localization fixes 2023-11-30 14:21:44 +10:00
Connor McLaughlin
80a7c4b82a Merge pull request #3053 from zkdpower/master
Update Simple-Chinese Translation.
2023-11-30 14:15:49 +10:00
Stenzek
28556ee3e9 Achievements: Fix multiple leaderboard trackers 2023-11-30 14:10:28 +10:00
Stenzek
8431d3be0c dep/rcheevos: Bump to 8afec6c 2023-11-30 14:06:00 +10:00
Stenzek
78ef9e1105 Qt: Fix opening memcard editor more than once 2023-11-30 13:29:26 +10:00
Ganael Laplanche
5486a7a467 Fix get_thread_time() declaration on FreeBSD 2023-11-29 21:05:21 +01:00
Ganael Laplanche
af046c8987 Fix build on FreeBSD
FreeBSD's alloca(3) only needs <stdlib.h>
2023-11-29 20:54:12 +01:00
Ganael Laplanche
b6d67560e3 Fix data directory handling on FreeBSD 2023-11-29 20:38:56 +01:00
zkdpower
ab28fb8673 Update Simple-Chinese Translation. 2023-11-30 03:34:33 +08:00
Connor McLaughlin
369f8b1239 Merge pull request #3051 from zkdpower/master
Update Simple-Chinese Translation.
2023-11-29 23:12:18 +10:00
Connor McLaughlin
09abd8c42d Merge pull request #3052 from andercard0/master
Atualização Português do Brasil
2023-11-29 23:12:00 +10:00
Stenzek
dfb27c14be FullscreenUI: More localization fixes 2023-11-29 23:11:28 +10:00
Stenzek
4ac4388b08 GameDatabase: Fix identification of misnamed-exe games 2023-11-29 23:05:27 +10:00
Stenzek
35799aba47 CDROM: Add current file to debug window 2023-11-29 22:01:45 +10:00
Stenzek
5442242c64 IsoReader: Add GetEntriesInDirectory() 2023-11-29 21:56:40 +10:00
Stenzek
325dcc81ca FullscreenUI: Allow changing UI language 2023-11-29 20:26:36 +10:00
Stenzek
e806d939ae Qt: Fix crash on language change with system active 2023-11-29 19:48:39 +10:00
Stenzek
8ce2be57c5 CPU/CodeCache: Call Block constructor/destructor
Fixes crash in MSVC Debug build.
2023-11-29 19:16:33 +10:00
Stenzek
03592e8de8 Qt: De-dialogify memory card editor 2023-11-29 18:47:38 +10:00
Stenzek
eab9f57a5d GameDB: Widescreen rendering disables 2023-11-29 16:08:05 +10:00
Stenzek
0b6cd330e5 System: Add missing controller poll while rewinding 2023-11-29 15:41:29 +10:00
Anderson Cardoso
39032d3ffe Atualização Português do Brasil
- Textos do modo big duck mode adicionados.
2023-11-28 15:17:24 -03:00
zkdpower
7bf1be7de6 Update Simple-Chinese Translation. 2023-11-29 01:59:31 +08:00
Stenzek
26f3d5ba56 FullscreenUI: Add missing translation strings 2023-11-29 02:18:20 +10:00
Connor McLaughlin
1acffa6a3c Merge pull request #3050 from andercard0/master
Atualização Português do Brasil
2023-11-29 02:02:22 +10:00
Stenzek
5ff44ebcf5 CPU: Panic process on memory alloc fail 2023-11-29 02:01:24 +10:00
Stenzek
667b11121c Qt: Update glyph ranges 2023-11-29 02:00:31 +10:00
zkdpower
23356fad45 update simple-chinese translation. 2023-11-29 01:59:52 +10:00
Anderson Cardoso
96fc9fba6b Atualização Português do Brasil
Atualizado para última versão.
2023-11-28 08:26:21 -03:00
Stenzek
08fcee2f56 CPU: Flush load delays before PCDrv calls 2023-11-28 18:25:12 +10:00
Stenzek
c482dfd27a Qt: Fix 'Edit Memory Cards' using disc-specific cards 2023-11-28 15:06:12 +10:00
Stenzek
e382f2b64a Settings: Add option to disable DSB/fbfetch 2023-11-28 14:38:38 +10:00
Stenzek
7fe3bfece0 fmt: Bump to version v10.1.1 2023-11-28 14:38:38 +10:00
Stenzek
333c9fdf6f Misc: Fix a couple of fmt errors 2023-11-28 14:38:38 +10:00
Connor McLaughlin
0af059aae2 Merge pull request #3047 from andercard0/master
Atualização Português do Brasil
2023-11-27 21:50:02 +10:00
Stenzek
2b46a9b040 ShaderGen: Fix GL_ARM_shader_framebuffer_fetch enable 2023-11-27 17:55:04 +10:00
Anderson Cardoso
2b746fa938 Atualização Português do Brasil
Atualizado e confirmados textos para a versão mais recente dos seguintes itens:

- Big duck mode UI
- Conquistas
- Atalhos
2023-11-26 20:55:32 -03:00
Stenzek
afe8384b6d System: Use Async HC mode disable for resuming 2023-11-27 00:45:00 +10:00
Stenzek
bbf7d9d769 ImGui: Add missing file 2023-11-27 00:24:06 +10:00
Connor McLaughlin
51351511b8 Merge pull request #3046 from shinra-electric/mac-game-mode
Add Game category type to Info.plist
2023-11-27 00:16:34 +10:00
Stenzek
5a0a6ebe06 Qt: Drop Qt 6.1 workaround in Host::GetTopLevelWindowInfo() 2023-11-27 00:15:55 +10:00
Stenzek
c40cc4ef43 Hotkeys: Throttle pause requests 2023-11-27 00:15:52 +10:00
Stenzek
72716719b3 Achievements: Use big picture for confirm hardcore disable 2023-11-26 23:57:49 +10:00
Stenzek
c1d0419361 FullscreenUI: Use icon font for bindings 2023-11-26 23:57:49 +10:00
Stenzek
43c0ce0b3e FullscreenUI: Put bindings on one line 2023-11-26 23:57:49 +10:00
shinra-electric
006b2ea35b Add Game category type to Info.plist
This should activate game mode when in full screen on macOS
2023-11-26 12:42:12 +01:00
Stenzek
fc6359457b ImGuiManager: Use PromptFont icons for input OSD 2023-11-26 21:35:29 +10:00
Stenzek
8446856ecf GPU/HW: Trace min/max UVs for hazards 2023-11-26 17:35:48 +10:00
Stenzek
eeebfce79b Update README.md 2023-11-25 22:14:26 +10:00
Stenzek
dc75afeb3d RegTest: Fix directory creation always failing 2023-11-25 22:04:05 +10:00
Stenzek
ff17444074 GPU/HW: Add framebuffer fetch blending path 2023-11-25 21:22:35 +10:00
Stenzek
a456741ae6 GPU/HW: Don't blend binary alpha texture filters 2023-11-25 19:49:05 +10:00
Stenzek
1b948aab62 dep/cubeb: Minimize and update to 54217bc 2023-11-25 00:50:12 +10:00
Stenzek
7cc52bba23 CMake: Support multiple CMAKE_OSX_ARCHITECTURES 2023-11-25 00:50:12 +10:00
Stenzek
af86e5d058 Qt: Use HTTPDownloader instead of QtNetwork for updates 2023-11-25 00:50:12 +10:00
Stenzek
365e3fb965 Qt: Fix progress dialog cancelling 2023-11-25 00:50:12 +10:00
Stenzek
cc6f22163c HTTPDownloader: Add support for progress updates/cancelling 2023-11-25 00:50:12 +10:00
Stenzek
cca901c4c6 Qt: Make ALT+F4 while fullscreen exit DuckStation 2023-11-25 00:50:12 +10:00
Stenzek
a705884342 Qt: Fix possible race when showing confirm dialog 2023-11-25 00:50:12 +10:00
Stenzek
3e27c399f4 GameDB: MGS1 2023-11-25 00:50:12 +10:00
Stenzek
7bbf04ab99 PostProcessing/FX: Support reading shaders from resources 2023-11-25 00:50:12 +10:00
Stenzek
1a79a2f196 dep/reshadefx: Add manual include callbacks 2023-11-25 00:50:11 +10:00
Stenzek
273979405d OpenGLDevice: Disable scissor for buffer clears 2023-11-25 00:49:52 +10:00
Stenzek
e75c1a3b0a OpenGLDevice: Use glClearBuffer() instead of glClear() 2023-11-24 21:45:45 +10:00
Stenzek
603531f916 PageFaultHandler: Fix for Intel on MacOS 2023-11-24 20:35:52 +10:00
Stenzek
5cf41a41f3 JitCodeBuffer: Allocate within 32-bit range 2023-11-24 20:35:19 +10:00
Stenzek
ca1dd27d4a CPU/NewRec: Fix SR interrupts on non-x64 2023-11-24 20:35:12 +10:00
Stenzek
b8d4669997 Qt: Allow post-processing to be set per-game 2023-11-24 20:34:54 +10:00
Stenzek
9d06fde276 Qt: Enable unifiedTitleAndToolBarOnMac in main window 2023-11-22 01:21:02 +10:00
Stenzek
a80ffc9c7d GL/Context: Fix surfaceless context creation 2023-11-22 01:21:02 +10:00
Stenzek
bbeae07478 MemorySettingsInterface: Fix bool and SetValue() 2023-11-21 22:31:18 +10:00
Stenzek
e10ff550d5 CPU/NewRec: Handle inside-block SMC
i.e. Spyro 2/3 PAL.
2023-11-21 22:31:18 +10:00
Stenzek
20de40a597 RegTest: Fix build on Mac 2023-11-21 22:31:18 +10:00
Stenzek
e6d29a0028 Qt: Update Italian translation by Vecna 2023-11-21 21:42:21 +10:00
Stenzek
b93e9ef61c Flatpak: Bump SDL2 to v2.28.5 2023-11-18 17:35:45 +10:00
Stenzek
1d0c870494 CMake: Bump dep version requirement 2023-11-18 17:17:29 +10:00
Stenzek
dbd052528e CPU/NewRec: Fix build for AArch32 2023-11-18 17:16:51 +10:00
Connor McLaughlin
04870d4d38 Merge pull request #3044 from andercard0/master
Atualização Português do Brasil
2023-11-18 16:54:04 +10:00
Stenzek
cce7be4723 Misc: Make struct member functions file-local 2023-11-18 16:46:11 +10:00
Stenzek
bee1f986a9 CMake: Fix incorrect library for HTTPDownloaderCurl 2023-11-18 14:58:45 +10:00
Anderson Cardoso
d6e6bc65f8 Atualização Português do Brasil
Atualizado textos para versão mais atual.
2023-11-17 13:53:10 -03:00
Stenzek
ad1716e376 GPU/HW: Correct OSD message 2023-11-15 19:26:02 +10:00
Stenzek
5fff97c9e1 GPU/HW: Clear instead of invalidating adaptive downsample RTs 2023-11-15 19:14:27 +10:00
Stenzek
bc485ee55b CDImage: Support loading subchannel from LSD files 2023-11-15 19:14:27 +10:00
Víctor "IlDucci
7aa4180e17 Spanish (Spain) translation update (#3041)
Added new strings, cleaned unused ones.

Warning: the new Log Window has the "Log" option in the menu untranslatable at this moment.
2023-11-15 19:14:08 +10:00
Stenzek
d141692df3 CI: Force Python 3.11 on Mac runner 2023-11-11 14:25:45 +10:00
Stenzek
ac10d311da Deps: Update to Qt 6.5.3 and SDL2 2.28.5
Also sort out the lack-of-PDBs for Qt+SDL2.
2023-11-11 13:35:26 +10:00
Stenzek
3093d40869 Qt: Update link 2023-11-11 13:35:26 +10:00
Stenzek
6d35d5983b SDLInputSource: Use hint for loading GC Database 2023-11-10 21:19:45 +10:00
Stenzek
1e5cf017bd SDLInputSource: Update Game Controller Database 2023-11-10 21:19:45 +10:00
Stenzek
312790c9a6 CPU/NewRec: Handle mtc0 rt, sr 2023-11-10 21:19:45 +10:00
shikulja
0ba50243ec Update Russian translation (#3039)
* update ts

* Update Russian translation

* Purge Russian translation
2023-11-10 21:19:34 +10:00
Connor McLaughlin
c50a4a98a9 Merge pull request #3037 from andercard0/master
Atualização Português do Brasil
2023-11-07 21:19:48 +10:00
Connor McLaughlin
b175f49f33 Merge pull request #3038 from mattysweeps/fix/advancedsettingsui
Remove vertical spacer preventing Tweaks/Hacks from expanding
2023-11-07 21:19:29 +10:00
Anderson Cardoso
9516a45c81 Atualização Português do Brasil
- Adição de créditos de terceiros
- Confirmação para textos movidos/atualizados
2023-11-06 12:26:26 -03:00
Stenzek
ac825855f7 Qt: Change settings dialogs to widgets/windows
Stops them breaking in Qt 6.6.
2023-11-06 23:17:58 +10:00
Stenzek
3ab27e7220 FullscreenUI: Remove Pause on Menu open
And always pause. The option never really worked correctly.
2023-11-06 23:17:58 +10:00
Stenzek
0d5ffda3d3 DInputSource: Backport button/hat max from PCSX2 2023-11-06 23:17:58 +10:00
Stenzek
fa5496652e Qt: Add third-party license notices 2023-11-06 23:17:58 +10:00
Stenzek
6f66460ec0 Common: Remove ThreadPool class
No longer needed.
2023-11-06 23:17:58 +10:00
Stenzek
5b00ffb6cb HTTPDownloaderCurl: Switch to multi/async API 2023-11-06 23:17:58 +10:00
Stenzek
b459a42fb7 Achievements: Use a 60 second timeout for server calls 2023-11-06 23:17:58 +10:00
Stenzek
0fe6e9170b HTTPDownloader: Move to util project 2023-11-06 23:17:57 +10:00
Stenzek
3c6b6c5770 Achievements: Use retryable client error status code 2023-11-06 23:17:57 +10:00
Stenzek
f62a3ffbfa dep/rcheevos: Update to 8a717b1 2023-11-06 23:17:57 +10:00
Stenzek
a4127aa2ea SDLInputSource: Add log callback 2023-11-06 23:17:57 +10:00
Anderson Cardoso
536f1511c2 Atualização Português do Brasil
- Opções avançadas
Mecânismo mechacon do leitor de CDs

- Mensagens OSD atualizadas/incluídas
Áudio/CD-rom/Renderizador de GPU
2023-11-06 23:17:57 +10:00
Stenzek
3dfc3bd2ba CPU: Fix incorrect scratchpad masking 2023-11-06 18:09:27 +10:00
Stenzek
c5cd55ffb1 CDImage: clang warning fix 2023-11-06 17:56:45 +10:00
Stenzek
928d137111 System: Add missing icons to some OSD messages 2023-11-05 22:38:25 +10:00
Stenzek
f27a28b58c CDImage: Use ByteSwap() 2023-11-05 22:38:25 +10:00
Stenzek
4a906fd0a0 VulkanDevice: Fix incorrect render pass end 2023-11-05 21:18:39 +10:00
Stenzek
e739c114a4 CDImageCHD: Support reading subchannel from CHD 2023-11-05 21:18:39 +10:00
Stenzek
ee3c770082 CDImage: Fix incorrect CRC-16 computation 2023-11-05 21:14:19 +10:00
Stenzek
82b3907804 dep/libchdr: Add subtype parsing functions 2023-11-05 21:14:19 +10:00
Stenzek
738ede0c39 Qt: Raise settings window if already open 2023-11-05 20:35:42 +10:00
Stenzek
ea51d2a213 SPIRVCompiler: Pad fragment output components for MSL
Fixes some Reshade shaders not compiling.
2023-11-05 15:03:49 +10:00
Stenzek
38bc2bd057 CDROM: Add option to choose emulated mechacon version 2023-11-05 14:43:38 +10:00
Stenzek
8f1d724f4c Postprocesing/FX: Add BUFFER_COLOR_BIT_DEPTH and random source 2023-11-05 14:10:44 +10:00
Stenzek
4ef465cea4 PostProcessing/FX: Fix loading of resource textures 2023-11-05 13:52:56 +10:00
Stenzek
edae13d9e4 CDROM: Log command parameters 2023-11-05 13:32:25 +10:00
Stenzek
b9bd875c13 Qt: Update Korean translation by Hackjjang 2023-11-05 13:30:44 +10:00
Stenzek
dde54fbba9 Settings: Fix incorrect type for Display/Scaling 2023-11-05 02:33:42 +10:00
Stenzek
ca5b07acff PostProcessing: Fix for Metal renderer 2023-11-04 20:28:45 +10:00
Stenzek
9d88a373bd GPU: Fix Guncon positioning with window padding 2023-11-04 20:11:51 +10:00
Stenzek
1831a291b4 GL/ContextEGL: Fix surface_format left uninitialized 2023-11-04 20:11:51 +10:00
Stenzek
17171101cf OpenGLDevice: Don't force-disable dual source blending 2023-11-04 20:11:51 +10:00
Stenzek
0e2c6676a3 Build: Compiling x64 builds on Apple Silicon host 2023-11-04 20:11:51 +10:00
Stenzek
f05ff4103e Misc: Build fixes for Android 2023-11-04 20:11:51 +10:00
Stenzek
538266aacd System: Fix Discord Rich Presence 2023-10-29 22:46:02 +10:00
Stenzek
6ca098db97 CI/Flatpak: Disable Wayland by default 2023-10-29 21:16:58 +10:00
Stenzek
33f945f1e8 CI/AppImage: Disable Wayland by default
Set I_WANT_A_BROKEN_WAYLAND_UI=1 if you must use it.
But there's gonna be broken stuff.
2023-10-29 21:16:23 +10:00
Stenzek
bd49e0df63 System: Fix playlist memory card handling
But you really don't need to use them these days.
2023-10-29 20:37:42 +10:00
Matthew Broomfield
10877c25e8 Remove vertical spacer preventing Tweaks/Hacks from expanding
The Advanced Settings UI had a vertical spacer at the bottom.
This space would expand when the window expanded.
Instead, it's more useful to expand the Tweaks/Hacks table,
since this table is larger than the default window size.
2023-10-28 21:12:05 -07:00
Stenzek
3ee8159d8d CI/AppImage: Work around GH runner issue 8659 2023-10-28 21:24:12 +10:00
Stenzek
117cbeecaa CPU/CodeCache: Fix NewRec on Apple Silicon 2023-10-28 14:41:29 +10:00
Stenzek
f786138175 CPU/CodeCache: Fix crash on Apple Silicon 2023-10-24 18:30:34 +10:00
Stenzek
06c4dc5e1b GPU/OpenGL: Fix incorrect 1/4 blend on Mali 2023-10-22 00:07:46 +10:00
Stenzek
6592cafadc CPU/NewRec: Add speculative constants 2023-10-22 00:07:46 +10:00
Stenzek
b3cbe5a7ee CPU/NewRec: Add AArch32 backend 2023-10-21 20:22:51 +10:00
Stenzek
8ddb0c4b23 Common/HeapArray: Fix mismatched delete/free 2023-10-21 13:49:35 +10:00
Stenzek
41bb9fddfc CMake: Fix Debug x64 builds on Linux 2023-10-21 13:49:35 +10:00
Stenzek
d00ed000f9 CPU/NewRec/AArch64: Don't recreate assembler every time 2023-10-21 13:49:35 +10:00
Stenzek
9d14ba0541 dep/vixl: Add Reset-to-new-buffer overload 2023-10-21 13:49:35 +10:00
Stenzek
52e0d8d473 CPU/Recompiler/AArch32: Load membase on demand 2023-10-21 13:49:35 +10:00
Stenzek
cce1ec598c CPU/Recompiler/AArch32: Reduce register usage of Mul 2023-10-21 13:49:35 +10:00
Stenzek
23dff0a9b6 Bus: Properly set unmapped pages to NULL for LUT fastmem 2023-10-21 13:49:35 +10:00
Stenzek
e36130158c CPU/Recompiler: Fix incorrect shift in LUT fastmem 2023-10-21 13:49:35 +10:00
Stenzek
c727ac33c7 CPU/CodeCache: Include hi/lo in state logging 2023-10-21 13:49:35 +10:00
Connor McLaughlin
07acd6b690 Merge pull request #3034 from kamfretoz/ikon-baru-pt3
Qt: Add new controller image and icon refinement
2023-10-21 13:49:18 +10:00
Connor McLaughlin
9482120b07 Merge pull request #3033 from andercard0/master
Atualização Português do Brasil
2023-10-21 13:48:41 +10:00
kamfretoz
709b3b2f55 Add to contributors list 2023-10-20 10:16:24 +07:00
kamfretoz
2ca332295d Qt: Add new controller image and icon refinement 2023-10-19 22:50:01 +07:00
Anderson Cardoso
03ccc07ed2 Atualização Português do Brasil
- Novo recompilador.
2023-10-18 14:15:03 -03:00
Connor McLaughlin
2df88e79fe Update README.md 2023-10-18 12:26:46 +10:00
Stenzek
a4c7d03ed2 VulkanDevice: Ignore GPUs which don't support Vulkan 1.1 2023-10-18 00:49:01 +10:00
Stenzek
db675cf5d0 Build: Reduce library scope 2023-10-18 00:49:01 +10:00
Stenzek
9501439d6b CPU: Add new experimental recompiler 2023-10-18 00:49:01 +10:00
Stenzek
c179473c2b Bus: Allow LUT fastmem on mirrors 2023-10-18 00:49:01 +10:00
Stenzek
9d40164f84 CPU/Recompiler: Offset LUT fastmem pointers 2023-10-18 00:49:01 +10:00
Stenzek
a062b00c1a Bus: Protect main RAM buffer
Get rid of write-time checks.
2023-10-18 00:49:01 +10:00
Stenzek
79e1ae3e54 CPU/CodeCache: Rewrite using new-rec's block management 2023-10-18 00:49:01 +10:00
Stenzek
f82d08e223 TimingEvents: Reset downcount when head is resorted 2023-10-17 13:14:05 +10:00
Stenzek
78959f6339 MemoryCardImage: Swap over to fmt 2023-10-17 13:08:44 +10:00
Connor McLaughlin
cecae91b0c Merge pull request #3032 from kamfretoz/ikon-pt2
Qt: More icon overhaul and cleanup
2023-10-16 22:57:57 +10:00
kamfretoz
22e9f008f6 Qt: More icon overhaul and cleanup 2023-10-16 19:39:27 +07:00
Stenzek
624b118211 Qt: Fix incorrect font path for zh-CN 2023-10-16 19:31:54 +10:00
Stenzek
baa5472cc2 Qt: Fix postfx option pane not loading 2023-10-16 01:00:43 +10:00
zkdpower
ef377fbd12 Update Simple-Chinese Translation to latest. (#3030)
* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.
2023-10-15 20:12:13 +10:00
Connor McLaughlin
ae773e8c05 Merge pull request #3031 from kamfretoz/ikon
Qt: Port over some custom icon from PCSX2
2023-10-15 20:12:00 +10:00
kamfretoz
3468afc5ec Qt: Port over some custom icon from PCSX2 2023-10-15 16:20:52 +07:00
Stenzek
ad04f79e57 FullscreenUI: Fix controller strings not translating 2023-10-12 19:30:23 +10:00
Stenzek
f9d8a49324 CPU: Fix incorrect writing of unaligned words via cheats 2023-10-11 01:10:31 +10:00
Stenzek
1d2cf727e4 Drop NEWS.md file
Hasn't been updated in years.
2023-10-11 01:10:11 +10:00
Connor McLaughlin
b572a0bc16 Merge pull request #3028 from zkdpower/master
update Simple-Chinese Translation.
2023-10-11 01:09:04 +10:00
Connor McLaughlin
b7044d3e02 Merge pull request #3027 from Hipnosis183/master
Updated Spanish (Latin America) translation
2023-10-11 01:08:56 +10:00
Connor McLaughlin
bfc4444f26 Merge pull request #3026 from andercard0/master
Conserto de textos, inclusões e atualizações de Idiomas
2023-10-11 01:08:35 +10:00
zkdpower
0be16dda24 update Simple-Chinese Translation. 2023-10-10 14:13:24 +08:00
Renzo Pigliacampo
dc1969e8c6 Updated Spanish (Latin America) translation 2023-10-09 21:31:10 -03:00
Anderson Cardoso
22141bb498 Update duckstation-qt_tr.ts
Atualização de Idioma para o Turko
Turkish language localization update
2023-10-08 16:40:10 -03:00
Anderson Cardoso
885786cef7 Arquivo Leia-me atualizado
Atualização das informações do arquivo leia-me em Português do Brasil.
2023-10-08 15:26:35 -03:00
Anderson Cardoso
b8a165b79d Adicionado arquivo NEWS
Adicionado arquivo de novidades em Português do Brasil
2023-10-08 14:19:51 -03:00
Anderson Cardoso
60d97a99c5 Update duckstation-qt_pt-BR.ts 2023-10-08 13:13:50 -03:00
Stenzek
dcfc48d84b CI: Fix Flatpak version generation 2023-10-08 23:20:34 +10:00
Stenzek
5c0dab4fe8 FullscreenUI: Fix button behaviour in Load/Save State 2023-10-08 13:58:59 +10:00
Stenzek
1f8dda5ffa Qt: Fix UI duplicating on language switch 2023-10-08 13:04:37 +10:00
Stenzek
ce7f6128e9 OpenGLDevice: Cache intermediate state 2023-10-08 01:47:29 +10:00
Stenzek
eb080834ad OpenGLDevice: Actually check max texture buffer size 2023-10-08 01:10:52 +10:00
Stenzek
5ff5891336 Update README.md 2023-10-07 14:03:52 +10:00
Stenzek
706dc86a94 scmversion: Use annotated tag as base 2023-10-07 13:41:47 +10:00
Connor McLaughlin
61a5efe62b Merge pull request #3025 from andercard0/master
Atualização Português do Brasil
2023-10-07 13:20:37 +10:00
Anderson Cardoso
17631ab2c2 Atualização Português do Brasil
- Novas opções de aúdio UI
- Confirmado textos movidos
2023-10-06 10:29:46 -03:00
Stenzek
b9c4a79e2e Qt: Fix duplicated translation file 2023-10-06 23:05:13 +10:00
Connor McLaughlin
ec6d53abd8 Merge pull request #3024 from zkdpower/master
update Simple-Chinese Translation.
2023-10-06 23:00:05 +10:00
Stenzek
7625d4769c Bus: Keep old behavior of memory being readable when Isc
Some games (e.g. Parasite Eve) write to cache control with Isc on.
Need some hardware tests here.
2023-10-06 22:57:54 +10:00
zkdpower
ec9f0319ca update Simple-Chinese Translation. 2023-10-02 23:48:47 +08:00
Stenzek
da1c28bd16 Misc: Fix arm32 build 2023-10-02 23:59:01 +10:00
Stenzek
fb659d817e NoGUI: Build fix 2023-10-02 23:59:01 +10:00
Stenzek
6fd7eda68f Misc: Fix build on Debian Bullseye 2023-10-02 23:50:56 +10:00
Stenzek
a96111eaeb Misc: Swap make_array() for size deduction 2023-10-02 13:33:33 +10:00
Stenzek
e33082778e Qt: Drop branch from title bar
Doesn't show up if a commit is checked out, and arguably not very useful
anyway.
2023-10-02 13:06:10 +10:00
Connor McLaughlin
dc74075ba2 Merge pull request #3023 from andercard0/master
Atualização Português do Brasil
2023-10-02 13:05:18 +10:00
Stenzek
e097f720bb dep/simpleini: Replace sprintf() with snprintf() 2023-10-02 12:44:56 +10:00
Stenzek
709e107db7 dep/WinPixEventRuntime: Fix incorrect ARM64 DLL 2023-10-01 23:00:48 +10:00
Stenzek
56fc207af6 CPU: Use lookup tables for memory access 2023-10-01 20:48:02 +10:00
Stenzek
05fe925409 CPU: Make namespacing explicit 2023-10-01 20:48:02 +10:00
Stenzek
68da62ec29 Common: Fix build with ARM64 clang-cl 2023-10-01 20:48:02 +10:00
Stenzek
9fc736eaa0 dep/vixl: Fix build with clang-cl 2023-10-01 20:48:02 +10:00
Stenzek
60cd1d540c dep/vixl: Fix unrepresentable constants 2023-10-01 20:48:02 +10:00
Stenzek
5da65c237d dep/cubeb: Disable winmm on Windows/ARM64
Needs ksuser.lib, which is incompatible with clang-cl..
2023-10-01 20:48:02 +10:00
Stenzek
0ee6712499 Common: Add MemsetPtrs() 2023-10-01 17:24:34 +10:00
Stenzek
e2efec12b7 CDImageCHD: Add SSE/NEON implementation of CopyAndSwap() 2023-10-01 17:24:34 +10:00
Stenzek
ecb082b672 CDROM: Add NEON implementation of GetPeakVolume() 2023-10-01 17:24:34 +10:00
Stenzek
01e505ec8b Common: Add intrin.h 2023-10-01 17:24:34 +10:00
Stenzek
b1bb33a566 Common: Move CPU macros to types.h 2023-10-01 13:57:25 +10:00
Stenzek
dd204d116e CPU: Warning fix 2023-10-01 13:20:14 +10:00
Anderson Cardoso
cbc306f10e Atualização Português do Brasil
- Adicionado janela de registros
- Algumas linhas movidas confirmadas
2023-09-30 10:46:53 -03:00
Stenzek
34ce59eb46 RegTest: Fix double renderer parameter 2023-09-30 23:42:58 +10:00
Stenzek
d5608bf12d GPU: Fix crash with Box Downsampling/Auto Resolution Scale 2023-09-30 23:20:09 +10:00
Stenzek
2171fd9a6f Bus: Fix RAM mirrors with LUT fastmem 2023-09-30 23:14:06 +10:00
Stenzek
31052581d3 CMake: Fix Mac build 2023-09-30 21:54:12 +10:00
Stenzek
8822698eaf Bus: Fix running multiple DuckStation instances 2023-09-30 21:49:30 +10:00
Stenzek
8f267c87c0 System: Only update played time when game list is loaded 2023-09-30 21:42:15 +10:00
Stenzek
15b29b4caa Settings: TTY logging is no longer an enhancement 2023-09-30 21:36:43 +10:00
Stenzek
fa6ef1d04e Log: Fix system console 2023-09-30 17:08:38 +10:00
Stenzek
c1e6616e5f Misc: Warning fixes 2023-09-30 15:44:14 +10:00
Stenzek
e6bfcf22d9 CMake: Disable warnings on third-party projects 2023-09-30 15:41:38 +10:00
Stenzek
34aa419e92 Qt: Crash fix 2023-09-30 15:35:15 +10:00
Stenzek
9f122ac0f0 Data: Update SDL Game Controller DB 2023-09-30 15:19:26 +10:00
Stenzek
7c102ec29d CI: Build fix 2023-09-30 15:17:31 +10:00
Connor McLaughlin
1611885c12 Merge pull request #3022 from shikulja/master
Update Russian translation
2023-09-30 15:10:00 +10:00
Connor McLaughlin
817401530c Merge pull request #3021 from andercard0/master
Atualização Português do Brasil
2023-09-30 15:09:54 +10:00
Stenzek
4ad777f54f Qt: Add log window 2023-09-30 15:09:07 +10:00
Stenzek
8afccdd590 Update README.md 2023-09-30 14:12:09 +10:00
Stenzek
90d0029c34 Build: Unify Flatpak manifests 2023-09-30 13:34:08 +10:00
Stenzek
28c13c0ac4 Common: Fix incorrect sign extension in sjis2ascii() 2023-09-30 12:20:46 +10:00
Stenzek
a45b50c3e9 Build: Add additional Flatpak build scripts 2023-09-29 02:30:54 +10:00
shikulja
818c0580bb Update Russian translation 2023-09-28 11:47:16 +03:00
Connor McLaughlin
d7014e78d5 Update README.md 2023-09-27 23:04:54 +10:00
Anderson Cardoso
6d32511c56 Atualização Português do Brasil
- Confirmação de texto OSD para conquistas.
2023-09-27 09:58:19 -03:00
Connor McLaughlin
6faa3087fe Merge pull request #3019 from Mrlinkwii/UI
Achievements: Different choice of words in achievement popup
2023-09-27 22:22:15 +10:00
Connor McLaughlin
8421fdb57d Merge pull request #3018 from andercard0/master
Atualização Português do Brasil
2023-09-27 22:22:08 +10:00
Connor McLaughlin
235e865a83 Merge pull request #3017 from IlDucci/es_ES_20230924
Spanish (Spain) translation update
2023-09-27 22:21:57 +10:00
Stenzek
1a5c2596ab Qt: Update path in create-update-and-edit-language.bat 2023-09-27 22:21:21 +10:00
Stenzek
fa93c02e45 CI: Make Mac Updater a universal binary too 2023-09-27 22:00:46 +10:00
Stenzek
9112b6a850 CDImageCHD: Cache parent hashes 2023-09-27 21:01:09 +10:00
Mrlinkwii
062af59a8c Achievements: Different choice of words in achievement popup 2023-09-24 15:28:13 +01:00
Anderson Cardoso
fab54c394a Atualização Português do Brasil
- Mensagens OSD atualizadas
- Texto do renderizador
- Textos de sistema
2023-09-24 10:56:14 -03:00
IlDucci
db4a1df197 Spanish (Spain) translation update
- Translated new strings.
 - Updated some achievement-related strings after checking them in PCSX2.
2023-09-24 12:38:59 +02:00
Stenzek
4266f42257 Achievements: Don't turn HC off on login fail if we reauth 2023-09-24 12:21:19 +10:00
Stenzek
30fdffae03 Updater: Mac support 2023-09-24 12:21:19 +10:00
Stenzek
a115b40ef7 Common: Split some routines into CocoaTools 2023-09-24 12:21:19 +10:00
Stenzek
c8dc8849ea Build: Ensure exceptions are off for fmt 2023-09-23 22:21:50 +10:00
Stenzek
4d2c544ca9 FileSystem: Fix DeleteDirectory() on Unix 2023-09-23 22:21:50 +10:00
Stenzek
5c099d55da SmallString: Fix new buffer size not getting set 2023-09-23 22:21:50 +10:00
Connor McLaughlin
610a40490a Merge pull request #3016 from andercard0/master
Atualização Português do Brasil
2023-09-23 14:18:30 +10:00
Connor McLaughlin
d23b3ed37d Merge pull request #3015 from IlDucci/es-ES_update_20230922
Spanish (Spain) texts update - 2023/09/22
2023-09-23 14:18:21 +10:00
Stenzek
2b89c11f5b CDImageCHD: printf -> fmt 2023-09-23 14:16:45 +10:00
Stenzek
1b08ea4254 Flatpak: Drop filesystem permission
Not needed, portals work fine.
2023-09-23 14:14:52 +10:00
Stenzek
9517638bcb GPUDevice: Don't recreate device on SW switch in GLES: 2023-09-23 14:14:52 +10:00
Stenzek
2a5b3aa695 OpenGLDevice: Fix reused pipeline creation failing without cache 2023-09-23 14:14:52 +10:00
Stenzek
7edb57ca15 Settings: Add Default renderer option 2023-09-23 14:14:52 +10:00
Stenzek
c986d0ea78 OpenGLDevice: Persist GL_SCISSOR_TEST enabled 2023-09-23 14:14:52 +10:00
Stenzek
8dc9c225d7 OpenGLDevice: Keep scissor active on present clear
And disable depth test if set to always (match DX11).
2023-09-23 14:14:52 +10:00
Stenzek
aa1e59c9f1 Achievements: Don't disable HC while login pending 2023-09-23 14:14:52 +10:00
Stenzek
6d18863d65 OpenGLDevice: Set unpack row length on create 2023-09-23 14:14:52 +10:00
Stenzek
2067b660f6 dep/rcheevos: Bump to a34895b 2023-09-23 14:14:52 +10:00
Stenzek
b678fcd874 GPUDevice: Move debug messages over to fmt 2023-09-23 14:14:52 +10:00
Stenzek
184b0a1a52 Misc: Swap most C format strings for fmt 2023-09-23 14:14:52 +10:00
Stenzek
92440bdfcf Log: Add fmt overloads 2023-09-23 14:14:52 +10:00
Stenzek
ac0601f408 Common: Drop String, add SmallString 2023-09-23 14:14:52 +10:00
Stenzek
3c68543491 Bus: 16KB page compatibility for mmap fastmem 2023-09-23 14:14:52 +10:00
Anderson Cardoso
1913ad3a02 Atualização Português do Brasil
Confirmação de strings atualizada.
2023-09-22 15:44:45 -03:00
IlDucci
99cfaee36a Spanish (Spain) texts update - 2023/09/22
Spanish (Spain) texts update - 2023/09/22
2023-09-22 20:32:23 +02:00
Stenzek
5bbb7cf906 OpenGLDevice: Fix crash when driver doesn't support binaries 2023-09-21 01:04:26 +10:00
Stenzek
7d76643c02 GunCon: Fix incorrect translation context 2023-09-20 21:38:49 +10:00
Stenzek
45265c474c OpenGLDevice: Fix framebuffer clear getting delayed 2023-09-20 21:38:39 +10:00
Stenzek
c25c7070b6 Bus: Make variable prefixes consistent 2023-09-20 21:38:38 +10:00
Connor McLaughlin
83272eb626 Merge pull request #3014 from andercard0/master
Atualização Português do Brasil
2023-09-20 21:37:43 +10:00
Connor McLaughlin
a050e0a165 Merge pull request #3013 from shikulja/master
Update Russian translation
2023-09-20 21:36:44 +10:00
shikulja
5e21bf020a Update Russian translation 2023-09-20 14:31:38 +03:00
Anderson Cardoso
201e80ba16 Atualização Português do Brasil
Atualizado/Confirmado

- Outras opções de controles
- Opções de controle
- Opções de USB
2023-09-20 08:27:55 -03:00
shikulja
9048ba75ed Update Russian translation 2023-09-20 13:59:27 +03:00
Stenzek
0e0beec1f4 OpenGLDevice: Fix PBO and non-PBO path for SW renderer 2023-09-20 19:35:46 +10:00
Stenzek
3c47f9b1b1 Host: Report error on GPU device creation fail 2023-09-20 19:12:49 +10:00
Stenzek
18ae01bedb GPU/HW: Tidying up 2023-09-20 18:54:26 +10:00
Stenzek
3cd28f433b Controller: Use std::span 2023-09-20 17:11:29 +10:00
Stenzek
539b406c95 Qt: Fix macro button display 2023-09-20 17:11:29 +10:00
Stenzek
7e07d2feb8 GunCon: Add relative pointer binding 2023-09-20 17:11:29 +10:00
Stenzek
e63b2eec38 LayeredSettingsInterface: Fix reversed section/key 2023-09-20 16:55:44 +10:00
Stenzek
b0d685ede5 Qt: Fix debug menu typo 2023-09-20 00:11:58 +10:00
Stenzek
3a47c1eb52 Fullscreen: Light mode corrections 2023-09-20 00:10:08 +10:00
Connor McLaughlin
745448f5a6 Merge pull request #3012 from andercard0/master
Atualização Português do Brasil
2023-09-19 23:46:55 +10:00
Stenzek
b6e5b0bd69 Qt: Add automatic updates for AppImage 2023-09-19 23:26:23 +10:00
Anderson Cardoso
912b7e2c6f Atualização Português do Brasil
Adicionadas:
-Textos de Achievements
-Textos para o modo Big duck mode
2023-09-18 10:10:59 -03:00
Stenzek
4ee71eb40f FullscreenUI: Update translation strings 2023-09-18 22:42:28 +10:00
Stenzek
2818eb2199 GPU/HW: Fix copy pipeline not getting destroyed 2023-09-18 22:38:15 +10:00
Stenzek
846f74c86d Achievements: Backports from PCSX2 2023-09-18 22:38:11 +10:00
Stenzek
4b24bf74f4 StringUtil: Add Ellipsise() 2023-09-18 22:38:11 +10:00
Stenzek
76772ec39e PostProcessing/FX: Fix incorrect RCP_BUFFER{WIDTH,HEIGHT} 2023-09-18 22:38:11 +10:00
Stenzek
7fc4b89719 dep/glad: Fix Linux build 2023-09-17 12:51:00 +10:00
Connor McLaughlin
db9d70d727 Merge pull request #3011 from andercard0/master
Atualização Português do Brasil
2023-09-17 12:37:53 +10:00
Stenzek
68b59ee748 CMake: Swap USE_ and WITH_ for ENABLE_
Consistency.
2023-09-17 12:36:52 +10:00
Anderson Cardoso
f98c9f8e79 Update duckstation-qt_pt-BR.ts
Fix for duplicated string
2023-09-16 18:33:50 -03:00
Anderson Cardoso
64d5f44b8c Atualização Português do Brasil
Adicionado/Atualizado
- Opções de conquistas
- Janelas de atribuição
- Opções de sistema e OSD
- Mais opções faltantes do Big Duck Mode
- Opções de pluralização não antes confirmadas
2023-09-16 18:15:53 -03:00
Stenzek
57cdb180c6 Hotkeys: Fix crash when toggling PGXP 2023-09-17 00:55:30 +10:00
Stenzek
d7bccfe9a4 ImGuiManager: Easing for OSD messages 2023-09-17 00:55:11 +10:00
Stenzek
6b34c2a66d System: Swap to fmt for media errors 2023-09-17 00:51:28 +10:00
Stenzek
6bfd498e31 Error: Fix errno resolving on Win32 2023-09-17 00:51:07 +10:00
Stenzek
dd1a00674d Qt: PCSX2 UI fix backports 2023-09-17 00:22:39 +10:00
Stenzek
546f73e36a Qt: Fix returning from fullscreen on MacOS 2023-09-16 22:30:20 +10:00
Stenzek
fffde62e3e Qt: Capitalize region names
Fixes base translation loading.
2023-09-16 22:26:16 +10:00
Stenzek
7120b19ab7 MSBuild: Generate combined .qm files 2023-09-16 22:26:16 +10:00
Stenzek
99c30b1e80 FullscreenUI: Mark some missing strings for localization 2023-09-16 19:06:59 +10:00
Stenzek
a37e89b52f CMake: Remove unsupported options 2023-09-16 19:00:29 +10:00
Stenzek
c773c763ef Achievements: Switch to rc_client 2023-09-16 19:00:29 +10:00
Stenzek
f8c5e4982c dep/rcheevos: Functionality changes 2023-09-16 19:00:29 +10:00
Stenzek
58d62e1ab4 dep/rcheevos: Update to ffddcdb 2023-09-16 19:00:29 +10:00
Stenzek
7d178c04d3 Qt: Fix popup messages when fullscreen (again) 2023-09-16 19:00:29 +10:00
Stenzek
1ba32585df Common: Add Timer::ResetIfNPassed() 2023-09-16 19:00:29 +10:00
Stenzek
9855a222e0 Common: Add String::ToStdString() 2023-09-16 19:00:29 +10:00
Stenzek
631d1e7433 ImGuiFullscreen: Less jarring notifications 2023-09-16 19:00:29 +10:00
Stenzek
a4911946ec FullscreenUI: Fix incorrect achievement points display 2023-09-16 19:00:28 +10:00
Stenzek
b8a372bb6e CMake: Generate/copy base translations for Mac/Linux 2023-09-16 19:00:28 +10:00
Stenzek
a2f19143da MetalDevice: Support multisampling 2023-09-16 19:00:28 +10:00
Stenzek
6fbea12ed3 MetalDevice: Implement GPU timing 2023-09-16 19:00:28 +10:00
Stenzek
b30c86ed75 Build: Improve MacOS support 2023-09-16 19:00:28 +10:00
Connor McLaughlin
abb39e8a00 Merge pull request #3009 from andercard0/master
Atualização Português do Brasil
2023-09-16 18:59:55 +10:00
Stenzek
e6d5fa43af D3D11Device: Fix crash when switching renderers 2023-09-06 11:22:18 +10:00
Anderson Cardoso
05cc431435 Atualização Português do Brasil
-Opções do modo big duck mode. adicionadas

Missing Strings or not translateable:
- Rewind is not enable. Please note that enabling rewind may significantly increase system requriments. (in configuration settings)

- Rendering (in video options)

Text title
- PGXP (Precision Geometry Transform Pipeline)

- Input sources (in controller options tab)
- Not inverted

- Shorcut configuration options
- Settings and operations (Text title)
- Settings (Text title)
- Account
- Current game
2023-09-05 12:24:11 -03:00
Connor McLaughlin
cfd1d41ced Update README.md 2023-09-05 23:28:12 +10:00
Stenzek
fc96c2f656 Common: unused-result warning fix 2023-09-05 22:59:39 +10:00
Stenzek
56d95c3331 Build: Fix double-linking when creating Flatpak 2023-09-05 22:59:39 +10:00
Stenzek
eb07d698cd CI: Update AppImage to 22.04 + use LinuxDeploy 2023-09-05 22:59:39 +10:00
Stenzek
519367555b Misc: Replace deprecated std::is_pod 2023-09-05 22:10:50 +10:00
Stenzek
a66fec4266 dep/xbyak: Unreachable code warning fix 2023-09-05 22:10:50 +10:00
Stenzek
1398d789ec dep: Update rapidjson to 476ffa2 2023-09-05 22:10:50 +10:00
Stenzek
2efda31694 Misc: More enum cast warning fixes 2023-09-05 22:10:50 +10:00
Stenzek
60aca2fc4d Misc: Swap LIKELY/UNLIKELY macros for attributes 2023-09-05 22:10:50 +10:00
Stenzek
adc124c759 Misc: Unreachable code warning fixes 2023-09-05 22:10:50 +10:00
Stenzek
be71fb6000 dep/cubeb: C++20 warning fixes 2023-09-05 22:10:50 +10:00
Stenzek
0b0abc426b dep: Remove gsl 2023-09-05 22:10:50 +10:00
Stenzek
605aa3c53a Misc: Swap gsl::span for std::span 2023-09-05 22:10:50 +10:00
Stenzek
391307efaa Common: Drop fallback path for HeterogeneousContainers 2023-09-05 21:37:04 +10:00
Stenzek
58b4946fb9 Build: Switch to C++20 2023-09-05 21:37:04 +10:00
Stenzek
9b47561c89 Misc: C++20 fixes 2023-09-05 21:37:03 +10:00
Stenzek
1ea0854c71 CMake: Enable EGL even if Wayland is disabled 2023-09-05 21:37:03 +10:00
Stenzek
7b068b976b CrashHandler: Use libbacktrace 2023-09-05 21:37:03 +10:00
Stenzek
d366697141 Qt: Fix theme selection 2023-09-05 20:20:46 +10:00
Stenzek
d6cf88c14f VulkanDevice: Fix persistent descriptor allocation error 2023-09-05 20:17:32 +10:00
Stenzek
6a53929e31 Qt: Add option to exit Big Picture UI 2023-09-05 20:12:54 +10:00
Connor McLaughlin
37f830d8b9 Merge pull request #3008 from andercard0/master
Atualização Português do Brasil
2023-09-05 20:01:04 +10:00
Stenzek
9d37332111 VulkanDevice: Prefer 8-bit formats for swap chain 2023-09-05 20:00:23 +10:00
Anderson Cardoso
1cf1b6053f Atualização Português do Brasil
- Adicionado textos faltantes Big Duck Mode
- Confirmação de textos movidos. Big duck Mode
2023-09-04 11:17:06 -03:00
Connor McLaughlin
5f79cf7342 Merge pull request #3005 from andercard0/master
Atualização Português do Brasil
2023-09-04 22:50:40 +10:00
Connor McLaughlin
2d0d357398 Merge pull request #3007 from IlDucci/es_ES_update_20230903
Spanish (Spain) translation update
2023-09-04 22:50:21 +10:00
Stenzek
4c5b650d11 FullscreenUI: Tag some missing translation strings 2023-09-04 22:45:44 +10:00
Stenzek
0d09726dd3 Qt: Update Korean translation by Hackjjang 2023-09-04 22:44:42 +10:00
Stenzek
d8309b7ee9 dep/reshadefx: Hopefully fix build on some Linux systems 2023-09-04 22:44:01 +10:00
IlDucci
ce3f4aa46f Spanish (Spain) translation update
- Adding translations for the new strings (Big Picture, wireframe options, Setup Wizard...). WARNING!!! Big Picture mode was not tested in DuckStation because the strings are still being displayed in English, so I am unable to test them for the time being.
 - Some strings were copied from PCSX2 Spanish (Spain) translation, also worked on by myself.
 - Unification pass for certain terms.
 - Cleanup of unused strings. WARNING! A number of strings in the Settings menu have reverted back to English.
2023-09-04 14:41:21 +02:00
Anderson Cardoso
a46e17234d Atualização Português do Brasil
Atualização Português do Brasil

- Mensagens OSD
- Configurações de aprimoramento atualizadas
- Tags de HTML faltantes consertados
2023-09-03 11:05:37 -03:00
Stenzek
a4c7293d28 CPU: Fix breakpoints/single stepping 2023-09-03 19:49:34 +10:00
Stenzek
4974a8015f GPU/HW: Fix texture filtering making everything transparent 2023-09-03 18:06:27 +10:00
Stenzek
585cf25ac4 GPU: Add downsample scale option 2023-09-03 17:10:40 +10:00
Stenzek
c0af478dfd Common: Add ASSUME() and use for UnreachableCode() 2023-09-03 14:42:37 +10:00
Stenzek
80e3d29ab8 Misc: clang-cl warning clean-up 2023-09-03 14:30:26 +10:00
Stenzek
7f446526d1 FullscreenUI: Fix some option values not being translated 2023-09-03 13:20:45 +10:00
Connor McLaughlin
76dd33626e Merge pull request #3004 from Mrlinkwii/master
Dependencies : add libxcb-cursor.so.0
2023-09-03 13:15:11 +10:00
Connor McLaughlin
3874c13ae6 Merge pull request #3003 from andercard0/patch-1
Atualização Português do Brasil
2023-09-03 13:15:04 +10:00
Stenzek
0076ab5cc4 System: Restore context after pumping messages 2023-09-03 13:14:22 +10:00
Mrlinkwii
e07c694e50 Update make-appimage.sh 2023-09-02 15:46:29 +01:00
Anderson Cardoso
8386a70791 Atualização Português do Brasil
- Novas opções de sobreposição e esboço. adicionadas
- Mensagens de OSD atualizadas
- Novas opções de assistente de configuração. adicionadas
- Opções de configurações avançadas. adicionadas.
2023-09-02 11:26:12 -03:00
Stenzek
25fb69564b GameDatabase: Fix stale database cache check 2023-09-02 23:17:56 +10:00
Stenzek
7ad1b8d093 GPU: Add wireframe rendering/overlay 2023-09-02 22:26:03 +10:00
Stenzek
e804b5e701 GPUDevice: Support geometry shaders 2023-09-02 22:09:22 +10:00
Stenzek
4fc984e082 Qt: Add setup wizard 2023-09-02 21:44:15 +10:00
Stenzek
5480e42cd1 ImGuiManager: Fix changing global scale through FSUI 2023-09-02 21:44:08 +10:00
Stenzek
bcda86d782 GPU: Fix non-internal resolution screenshots 2023-09-02 21:44:08 +10:00
Stenzek
9e8ff3969e GPU: Clamp UVs to active rect when presenting 2023-09-02 21:44:08 +10:00
Stenzek
4588f9ee9f CI: Build Flatpak 2023-09-02 21:44:08 +10:00
Stenzek
59b70b6adb Build: Add Flatpak manifest and scripts 2023-09-02 21:44:08 +10:00
Stenzek
d6577b7279 Resources: Update SDL GameControllerDB 2023-09-02 21:44:08 +10:00
Stenzek
ea68c5b4b5 Build: Use dependency package on Windows 2023-09-02 21:44:08 +10:00
Stenzek
3d8e63da9e Scripts: Add Windows dependency build scripts 2023-09-02 21:44:08 +10:00
Stenzek
cee4f93097 Build: Use precompiled headers 2023-09-02 21:44:08 +10:00
Stenzek
817129328b dep: Move WinPixEventRuntime to root 2023-09-02 21:44:07 +10:00
shikulja
203e71f9fe Update Russian translation (#3002)
* Update Russian translation

* Update Russian translation

* Update Russian translation
2023-09-02 21:43:52 +10:00
Connor McLaughlin
d690732c7d Merge pull request #3001 from andercard0/master
Atualização Português do Brasil
2023-09-01 21:30:53 +10:00
Stenzek
0da14a5442 GPU/Vulkan: Fix MSAA
And disable sample rate shading ("SSAA") on AMD, Intel, and broken
mobile drivers, because it doesn't work.
2023-09-01 21:25:12 +10:00
Anderson Cardoso
998ce379ab Atualização Português do Brasil
- Novas opções de Dimensionamento
- Opções de cartão de memória
- Confirmação de mensagens movidas
2023-08-31 16:15:24 -03:00
Stenzek
0e6efb2241 Qt: Canonicalize memory card paths in settings 2023-08-31 23:44:08 +10:00
Stenzek
09e7a5843f GPU: Add scaling shader support
Currently only Bilinear (Sharp).
2023-08-31 23:38:11 +10:00
Stenzek
9439cf65a3 AnalogController: Always use analog mode from save state 2023-08-31 22:09:17 +10:00
Stenzek
afed8297c9 Common: Bump _WIN32_WINNT 2023-08-31 19:49:32 +10:00
Connor McLaughlin
f6c8a850ae Merge pull request #2999 from andercard0/master
Atualização Português do Brasil
2023-08-31 00:20:07 +10:00
Stenzek
a11c9faba9 OpenGLDevice: Lazily compile shaders 2023-08-30 22:20:39 +10:00
Stenzek
5421900bb2 System: Add InterruptExecution() 2023-08-30 22:20:36 +10:00
Stenzek
2915d4ce01 System: Remove memory card warnings on config change 2023-08-30 22:20:36 +10:00
Stenzek
b483931444 System: Allow overriding BIOS in boot parameters 2023-08-30 22:20:36 +10:00
Stenzek
15af10e82a System: Expose memory save states 2023-08-30 22:20:36 +10:00
Stenzek
ae9cf5b889 BIOS: Add FindBIOSPathWithHash() 2023-08-30 22:20:36 +10:00
Stenzek
7b196d5c3c Common: Undef GetMessage for Windows headers 2023-08-30 22:20:36 +10:00
Stenzek
afaf5ddafd System: Centralize frame presentation 2023-08-30 22:20:36 +10:00
Anderson Cardoso
37d6754590 Atualização Português do Brasil
- Opções de pós-processamento
- Shader/Reshade etc.
- Mensagens OSD
- Mensagens de cartão de memória.
2023-08-29 16:06:57 -03:00
Stenzek
358f87a74d PostProcessing/ReShade: Fix up for GL/Vulkan 2023-08-30 02:04:07 +10:00
Stenzek
22eecc2b0a VulkanDevice: Fix multi-texture+UBO push descriptors 2023-08-30 02:03:22 +10:00
Stenzek
9e7d48cf85 Settings: Ensure Reshade directory gets created 2023-08-30 02:02:53 +10:00
Stenzek
df4d441b4b OpenGLDevice: Fix pipeline cache leaving fields uninitialized 2023-08-30 02:02:09 +10:00
Stenzek
f993f0923d Qt: Update Korean translation by Hackjjang 2023-08-30 00:44:01 +10:00
Stenzek
199c53f3af BIOS: Replace TTY patch with syscall hook 2023-08-30 00:44:01 +10:00
Stenzek
34e4bfdfcd Log: Don't colourize timestamps 2023-08-30 00:44:01 +10:00
Stenzek
92b1c21b8a CPU: Fix crash on breakpoint add/trace enable 2023-08-30 00:44:01 +10:00
Stenzek
720b5c1e9d Data: Add reshade-shaders (mainly headers) 2023-08-30 00:44:01 +10:00
Stenzek
8a40c7bf94 PostProcessing: Add ReShade .fx shader support 2023-08-30 00:44:01 +10:00
Stenzek
288757ca9a dep/reshadefx: Temporarily combine textures+samplers in HLSL 2023-08-30 00:44:01 +10:00
Stenzek
b217f64bcf PostProcessing: Refactor config to use separate sections 2023-08-30 00:44:01 +10:00
Stenzek
8db8baf33f GPUDevice: Move display logic to GPU 2023-08-30 00:44:00 +10:00
Stenzek
6c185ca17b GPUDevice: Remove mouse pointer position 2023-08-30 00:44:00 +10:00
Stenzek
674f9a5b1c Resources: Remove embedded crosshair image 2023-08-30 00:44:00 +10:00
Stenzek
259193a8e5 GPUDevice: Move software cursor to ImGuiManager 2023-08-30 00:44:00 +10:00
Stenzek
dd01c75f26 Resources: Add crosshair.png 2023-08-30 00:44:00 +10:00
Stenzek
39b8dcda6e GPU/HW: Fix wrapped image writes 2023-08-30 00:44:00 +10:00
Stenzek
e23c9875d5 Misc: Split core and util Host 2023-08-30 00:44:00 +10:00
Stenzek
779e78ae61 MetalDevice: Forgot a mutability parameter 2023-08-26 21:51:53 +10:00
Stenzek
106c13635b MetalDevice: Fix initial depth state not being bound 2023-08-26 21:33:30 +10:00
Stenzek
3e82409c10 GPU/HW: Fix base settings not updating on change 2023-08-25 21:53:33 +10:00
Stenzek
edc61b0095 GPUDevice: Fix crash when saving state with display off 2023-08-25 21:04:36 +10:00
Stenzek
112ccd7f38 Qt: Remove extra item in language list 2023-08-24 19:48:49 +10:00
Stenzek
9a0afd66fa README: Recommend Metal renderer for MacOS 2023-08-24 19:04:06 +10:00
Stenzek
8a0033dfb3 MetalDevice: Avoid inline texture uploads when unnecessary 2023-08-24 19:00:01 +10:00
Stenzek
1b9e72e3a6 MetalDevice: Fix render command encoder leak
and subsequent crash on shutdown.
2023-08-24 18:04:52 +10:00
Stenzek
08acc3144c Host: Avoid leaving GPU state unbound after represent 2023-08-24 18:04:52 +10:00
Stenzek
d750e4d417 VulkanDevice: Fix for MacOS 2023-08-24 18:04:48 +10:00
Stenzek
64998b49dc Util: Make Shift-JIS table static 2023-08-24 18:01:32 +10:00
Stenzek
dc9c99438b Misc: Post-refactor cleanups 2023-08-24 18:01:32 +10:00
Stenzek
82cdef45b3 System: Fix crash on non-database game 2023-08-23 19:39:22 +10:00
Stenzek
c7f987bfb7 System: Share memory cards in multi-disc games
Even without playlists.
2023-08-23 18:41:14 +10:00
Stenzek
7d914a9384 Qt: Use disc sets for changing discs 2023-08-23 18:41:14 +10:00
Stenzek
381bd92f87 GameDB: Add multi-disc serials 2023-08-23 18:41:14 +10:00
Stenzek
2419008242 GameDatabase: Parse discSetName/discSetSerials 2023-08-23 18:41:14 +10:00
Stenzek
7a1af36e8d GPUDevice: Fix incorrect suffix on D3D shader cache 2023-08-23 17:31:41 +10:00
Stenzek
520e94226d Build: Don't link with glad if GL is disabled 2023-08-22 18:36:16 +10:00
Stenzek
e108ca16ce Build: Use Qt 6.5.2 for macOS, drop libcurl
Also add qtimageformats.
2023-08-22 18:35:50 +10:00
Connor McLaughlin
f75bf8517a Merge pull request #2998 from andercard0/master
Atualização Português do Brasil
2023-08-21 22:55:24 +10:00
Stenzek
76b5b8ad06 MSBuild: Support building with clang-cl 2023-08-21 22:38:55 +10:00
Stenzek
bf15d13eb7 dep/xbyak: Update to v6.73 2023-08-21 22:38:31 +10:00
Anderson Cardoso
60e6e043ad Update UI
Added
- Korean Flag for the main window UI
2023-08-20 18:13:43 -03:00
Anderson Cardoso
0dab55e07b Update duckstation-qt_pt-br.ts 2023-08-20 17:17:34 -03:00
Anderson Cardoso
982dd6e1b9 Atualização Português do Brasil
Atualização Português do Brasil

- Novas mensagens de erro
- Adição de strings dos controles faltantes
- Opções de audio antes não disponíveis para tradução adicionadas

Big Duck Mode UI
- Interface de tela cheia ou como eu gosto de chamar, big duck mode
totalmente traduzida.

Bat/Scripts:
Atualizado o script de despejo das strings
2023-08-20 14:18:13 -03:00
Stenzek
e3d9ba4c99 Rewrite host GPU abstraction
- Don't have to repeat the same thing for 4 renderers.
 - Add native Metal renderer.
2023-08-20 21:55:38 +10:00
Stenzek
bfa792ddbf Qt: Translate default value for latency 2023-08-20 20:49:00 +10:00
Stenzek
d09e5051ca Settings: Translate display names in core
Enables the values to show in the Big Picture UI.
2023-08-20 13:25:45 +10:00
Connor McLaughlin
8ba04a80af Merge pull request #2996 from andercard0/master
Atualização Português do Brasil
2023-08-20 12:42:26 +10:00
Stenzek
496cf01369 FullscreenUI: Make translatable 2023-08-20 12:40:47 +10:00
Stenzek
c88a558ae0 Misc: Make controller bindings translatable 2023-08-20 12:40:47 +10:00
Stenzek
e57ad0b6aa Host: Backport translations cache
Note: You'll need a new command line for lupdate.

..\..\..\dep\msvc\qt\6.5.0\msvc2022_64\bin\lupdate.exe ../ ../../core/ ../../util/ -tr-function-alias QT_TRANSLATE_NOOP+=TRANSLATE,QT_TRANSLATE_NOOP+=TRANSLATE_SV,QT_TRANSLATE_NOOP+=TRANSLATE_STR,QT_TRANSLATE_NOOP+=TRANSLATE_FS,QT_TRANSLATE_N_NOOP3+=TRANSLATE_FMT,QT_TRANSLATE_NOOP+=TRANSLATE_NOOP -ts duckstation-qt_LANGUAGE.ts
2023-08-20 12:40:47 +10:00
Stenzek
1ec6aee5bf Host: Split translation macros dependent on return type 2023-08-20 12:40:47 +10:00
Stenzek
39f64a03ee Common: Error/FileSystem backports 2023-08-20 12:40:47 +10:00
Anderson Cardoso
0631a5e619 Atualização Português do Brasil
Atualizado:
- MAC app menu
- Texto OSD
- Confirmação de outras strings movidas

Refeito ou removido:
- Textos do depurador corrigidos.
2023-08-19 13:49:02 -03:00
Connor McLaughlin
7890051165 Merge pull request #2994 from zkdpower/master
update Simple-Chinese translation to latest.
2023-08-19 23:13:39 +10:00
Stenzek
4fbc9abe8a GameDatabase: Linux build fix 2023-08-19 23:06:27 +10:00
Stenzek
149f9d24bd Qt: Backport glyph range improvements from PCSX2 2023-08-19 23:05:04 +10:00
Stenzek
1a70c2b4de dep: Remove tinyxml2
No longer needed.
2023-08-19 22:54:20 +10:00
Stenzek
d0cddc2a23 Qt: Add translation by Hackjjang 2023-08-19 22:53:22 +10:00
Stenzek
a2e31c3052 GameDB: Append new entries from Redump DAT file 2023-08-19 22:24:46 +10:00
Stenzek
cee5decec4 GameDB: Merge traits/compatibility into single file 2023-08-19 22:00:20 +10:00
Stenzek
e501012a68 GameDB: Fix some incorrect serials 2023-08-19 21:18:37 +10:00
Stenzek
910abd1eac RegTest: Drop HostDisplay and add HW support 2023-08-19 21:18:32 +10:00
Stenzek
a00a4391ca Common: DynamicHeapArray/FixedHeapArray 2023-08-19 21:18:28 +10:00
Stenzek
7b4cbe3007 MSBuild: Fix TLS plugin not getting included 2023-08-19 12:04:02 +10:00
Stenzek
bb60170d9a Move frontend-common to util/core 2023-08-16 01:13:00 +10:00
Stenzek
5b980dafa5 System: Refactor main loop
Reduces JIT exits.
Improves runahead performance.
2023-08-16 01:13:00 +10:00
Stenzek
4ebd34fcb3 MSBuild: Use project referencing instead of .lib linking 2023-08-16 01:12:59 +10:00
Stenzek
827446b27f Build: Switch to Qt 6.5.0 on Windows 2023-08-16 01:12:59 +10:00
Stenzek
68eb32f963 dep/reshadefx: Fix building on MacOS/Linux 2023-08-16 01:12:59 +10:00
Stenzek
8c638b4c78 dep: Add reshadefx 2023-08-16 01:12:58 +10:00
zkdpower
94f0e62503 update Simple-Chinese translation to latest. 2023-08-15 22:05:42 +08:00
Stenzek
c01f249e0f dep: Update Vulkan headers 2023-08-15 23:51:39 +10:00
Stenzek
590baba2ef dep: Add D3D12MA 2023-08-15 23:51:32 +10:00
Stenzek
1b486d3f42 dep: Add WinPixEventRuntime 2023-08-15 23:51:09 +10:00
Stenzek
b42f4a3b85 dep: Add SPIRV-Cross 2023-08-15 23:50:58 +10:00
Stenzek
49a4901c78 dep: Add biscuit and riscv-disas 2023-08-15 14:06:00 +10:00
Stenzek
c561400a47 dep: Add Zydis 2023-08-15 14:03:59 +10:00
Stenzek
39e62ae948 Achievements: Don't call frame update when paused
But we still want to poll for requests.
2023-08-12 14:46:09 +10:00
Stenzek
165b277421 CDImageCHD: Support loading parent/delta CHDs 2023-08-12 14:46:09 +10:00
Stenzek
f41384c6c8 dep/libchdr: Add chd_is_matching_parent() 2023-08-12 14:46:09 +10:00
Stenzek
bd1cf91030 dep/libchdr: Add option to transfer file ownership 2023-08-12 14:46:09 +10:00
Stenzek
62c5e3af2f dep/libchdr: Add read_header variants for user-provided file 2023-08-12 14:46:09 +10:00
Stenzek
06a8349162 dep/libchdr: Re-add progress precaching 2023-08-12 14:46:09 +10:00
Stenzek
4b70853daa dep: Bump libchdr to 54bfb87 2023-08-12 14:46:09 +10:00
Connor McLaughlin
0798292ee5 Merge pull request #2991 from andercard0/master
Atualização Português do Brasil
2023-08-09 22:35:10 +10:00
Connor McLaughlin
f8f395c7d8 Merge pull request #2992 from IlDucci/es_ES_update_20230806
Spanish (Spain) translation update 2023-08-06
2023-08-09 22:34:52 +10:00
Stenzek
5d750a8803 dep: Bump rcheevos to 3af1e2fc5188d6e932ee379942f4049ea877e648 2023-08-09 19:42:52 +10:00
IlDucci
657d4f3ad9 Spanish (Spain) translation update 2023-08-06
Spanish (Spain) translation update 2023-08-06 +
Unifying the translation for the "Display" setting section.
2023-08-06 21:21:57 +02:00
Stenzek
56ac3d6c32 HostDisplay: Fix incorrectly positioned screenshots 2023-08-04 21:39:52 +10:00
Anderson Cardoso
de505c9012 Atualização Português do Brasil
Atualizado para a última versão

- Opções relacionadas ao modo controle

OSD:
- Correção de quebra de linha;
- Correção de pluralização;

Qt UI:
- Conforme pedido, removido termo mais objetivo no modo dificílimo para hardcore.
(Se é que alguém realmente se importa com estrangeirismos bobos) enfim, deixado para trás.


Nota mental (para mim mesmo): 
Remover os obsoletos assim que mudado para PNT. como sou eu quem mantenho essa parte ficará assim e fim de papo!
2023-07-30 12:30:09 -03:00
Connor McLaughlin
0575588e20 Merge pull request #2986 from charlesthobe/screensaver-fix
Linux: fix potentially unsafe screensaver inhibitor
2023-07-30 19:29:02 +10:00
Connor McLaughlin
0dee77a3ac Merge pull request #2990 from CookiePLMonster/multiple-leaderboards-fix
Achievements: Fix Leaderboard submission UI when multiple leaderboards update at once
2023-07-30 19:28:20 +10:00
Silent
bbf0346efd Achievements: Fix Leaderboard submission UI when multiple leaderboards update at once 2023-07-29 18:56:38 +02:00
charlesthobe
1026be24d0 Linux: fix potentially unsafe screensaver inhibitor 2023-07-27 19:07:46 +03:00
Stenzek
2e8b6370cf scmversion: Exclude previous-latest 2023-07-24 19:27:31 +10:00
Stenzek
944bf5dc30 RegTest: Fix build 2023-07-24 19:24:27 +10:00
Stenzek
6fbdb6d7db GPU: Enable GPUSTAT.28 in read mode
Fixes Celeste Classic.
2023-07-24 19:24:08 +10:00
Stenzek
72f7225ec2 Qt: Fix ClearBindStateFromSource() executing on wrong thread 2023-07-24 18:37:31 +10:00
Connor McLaughlin
af5f1c711c Merge pull request #2984 from Mateos81/french_translation
Update French translation
2023-06-30 23:07:28 +10:00
Christophe Mateos
3ea0715a48 Update French translation 2023-06-22 11:41:54 +02:00
Connor McLaughlin
2d78b3f26a Merge pull request #2983 from Mateos81/french_translation
Update French translation
2023-06-09 01:20:26 +10:00
Christophe Mateos
8c6850aa42 Update French translation 2023-06-07 18:48:00 +02:00
Connor McLaughlin
671f856d8d Merge pull request #2981 from HeatXD/patch-1
core / system: Disc-Region Fix For Netplay
2023-05-24 20:34:13 +10:00
Jamie Meyer
36c4345019 core / system: Disc-Region Fix For Netplay
Fixes an issue which is only really valid for netplay since can start from an non-auto region sinc eit pulls it from the host.
2023-05-24 12:33:24 +02:00
Connor McLaughlin
ffb832eed3 Merge pull request #2972 from andercard0/master
Atualização Português do Brasil
2023-05-24 20:27:16 +10:00
Connor McLaughlin
fd6184be7e Merge pull request #2977 from zkdpower/master
update Simple-Chinese translation to latest.
2023-05-24 20:27:04 +10:00
Connor McLaughlin
49848c8fb5 Merge pull request #2980 from Hipnosis183/master
Updated Spanish (Latin America) translation
2023-05-24 20:26:48 +10:00
Renzo Pigliacampo
7dca70b733 Updated Spanish (Latin America) translation 2023-05-19 23:42:44 -03:00
Stenzek
d8e980887f GameList: Add GetEntryBySerialAndHash() 2023-05-15 23:47:22 +10:00
Stenzek
1b29212d6c Qt: Fix geometry not saving on shutdown 2023-05-15 23:39:08 +10:00
Stenzek
905934651a GameDB: Remove some unused/duplicate entries 2023-05-15 23:39:07 +10:00
Stenzek
9aa6c24620 System: Store game hash as well as serial 2023-05-15 23:39:07 +10:00
zkdpower
488920a320 update Simple-Chinese translation to latest. 2023-05-13 17:34:08 +08:00
Stenzek
7681551544 System: Don't auto enable analog on unknown games 2023-05-08 13:07:19 +10:00
Connor McLaughlin
eb77894315 Update README.md 2023-05-05 18:40:04 +10:00
Anderson Cardoso
dfc0494d89 Atualização Português do Brasil
Confirmação de novos textos
Tipos de controle:
Não conectado
2023-05-03 16:36:05 -03:00
Connor McLaughlin
481174255e Merge pull request #2965 from stenzek/resize
HostDisplay: Treat internal res screenshots as a screenshot
2023-05-04 01:00:46 +10:00
Connor McLaughlin
c6dc217762 Merge pull request #2970 from CharlesThobe/patch-1
CMake: display warning when building without Wayland on systems that support Wayland
2023-05-04 01:00:22 +10:00
Connor McLaughlin
b790592003 Merge pull request #2971 from HeatXD/fix-comment
core: fix-comment
2023-05-04 00:59:49 +10:00
Jamie Meyer
6afb267bb9 core: fix-comment 2023-05-03 16:44:48 +02:00
Charles the Thobe
4ea57daf39 CMake: display warning when building without Wayland on systems that support Wayland 2023-05-03 10:43:09 +03:00
Connor McLaughlin
4cbb6e2247 Merge pull request #2964 from andercard0/master
Atualização Português do Brasil
2023-05-02 21:46:32 +10:00
Dolphin
9526e15ec2 Update japanese translation (#2969)
* update base duckstation-qt_ja.ts

* update Japanese translation

* translate controller name on controllersettingsdialog
2023-05-02 21:46:06 +10:00
Connor McLaughlin
d4769e18cc Merge pull request #2967 from CharlesThobe/pr
Linux: implement DBus screensaver inhibitor
2023-05-02 21:45:48 +10:00
Connor McLaughlin
4f6712e1e8 Merge pull request #2966 from IlDucci/Spanish_update_20230501
Spanish (Spain) translation update - 2023/05/01
2023-05-02 21:45:05 +10:00
Stenzek
6b366afb05 HostDisplay: Treat internal res screenshots as a screenshot 2023-05-02 21:44:03 +10:00
CharlesThobe
53de37eaa8 Linux: implement DBus screensaver inhibitor 2023-05-02 05:59:45 +03:00
CharlesThobe
b65f189601 Add vscode preferences folder to .gitignore 2023-05-01 17:15:45 +03:00
CharlesThobe
8483738bf0 Fix order of macros 2023-05-01 17:14:23 +03:00
IlDucci
4143742c76 Spanish (Spain) translation update - 2023/05/01
Updating Spanish (Spain) translation with the latest changes.
2023-05-01 11:34:28 +02:00
Anderson Cardoso
17f2711e76 Atualização Português do Brasil
Configurações avançadas
Confirmação de strings:
-Diretório de pastas
-Diretório PCDrv
-Ativação PCDrv
2023-04-29 20:24:23 -03:00
Stenzek
a003832e33 Update duckstation-qt_pt-br.ts 2023-04-29 20:56:18 +10:00
Connor McLaughlin
1b2741f8b4 Merge pull request #2960 from elektronicznypank/master
Polish language update
2023-04-29 20:54:51 +10:00
Stenzek
135ace30cb Qt: Add PCDrv options 2023-04-29 20:54:05 +10:00
Stenzek
84e5fbe0c6 CPU: HLE implementation of PCDrv (host file access) 2023-04-29 20:45:39 +10:00
Stenzek
5439718ec3 GL/Context: Add missing include 2023-04-29 20:45:19 +10:00
Stenzek
991f7312b2 SPU: Fix building with SPU_DUMP_ALL_VOICES 2023-04-23 13:19:43 +10:00
Connor McLaughlin
823892ab51 Merge pull request #2961 from CharlesThobe/pr1
README: Update Linux dependencies
2023-04-22 00:05:22 +10:00
Connor McLaughlin
62765d7034 Common: Add missing include 2023-04-21 03:46:16 +10:00
CharlesThobe
fe6913105d README: Update Linux dependencies 2023-04-20 16:08:56 +02:00
elektronicznypank
9023887e3e Added new lines 2023-04-14 22:15:39 +02:00
Stenzek
5fee6f5abe InputManager: Warning fix 2023-04-14 18:14:49 +10:00
Stenzek
2e3d924bc6 System: Fix crash when using unknown BIOS 2023-04-14 18:14:39 +10:00
Stenzek
fe41e92579 CDROM: Improve handling of command spam
Fixes booting games with OpenBIOS.
2023-04-14 18:14:21 +10:00
Connor McLaughlin
27a100af11 Merge pull request #2957 from zkdpower/master
Update Simple-Chinese Translation to latest.
2023-04-10 23:50:55 +10:00
Stenzek
fd0d12a4f4 GL: Fix shader/memory leak 2023-04-10 23:50:09 +10:00
zkdpower
961eabc9e6 Update Simple-Chinese Translation to latest. 2023-03-30 12:45:55 +08:00
Stenzek
3bbce19df2 Pad: Don't backup card state unconditionally 2023-03-16 21:48:58 +10:00
Stenzek
d7372d2442 Qt: Clear all keyboard bind states when focus is lost 2023-03-16 21:25:47 +10:00
Stenzek
3673827363 PAD: Intelligently skip saving memcard state for runahead 2023-03-16 21:22:08 +10:00
Stenzek
595abd27dd Settings: Disable block linking when runahead is active 2023-03-16 20:08:09 +10:00
Stenzek
33f5d9cb9c System: Remove BIOS from save state
Makes the states smaller, as well as not creating potential piracy
issues when sending across the wire.
2023-03-16 19:34:01 +10:00
Stenzek
1fcf16fc81 System: Store BIOS image info/hash after loading 2023-03-16 19:22:54 +10:00
Stenzek
70695d3a4d CPU: Don't leave fault_count uninitialized 2023-03-16 18:58:43 +10:00
shikulja
51e4c4bfb0 Update Russian translation (#2956)
* Update Russian translation

* Update Russian translation

* Purge Russian translation
2023-03-13 23:38:39 +10:00
Connor McLaughlin
6f06dcfde4 Merge pull request #2955 from andercard0/master
Atualização Português do Brasil
2023-03-13 22:51:46 +10:00
Anderson Cardoso
88b776dc4f Atualização Português do Brasil
- Adicionada descrição sobre server GDB
2023-03-13 09:39:34 -03:00
Connor McLaughlin
771a60c736 Merge pull request #2952 from boricj/bugfix/GDBServer
GDBServer: Fix emulator deadlock on client connection
2023-03-13 20:32:11 +10:00
Connor McLaughlin
e87b008e57 Merge pull request #2953 from CookiePLMonster/move-per-game-settings
Make Game Properties accessible from the toolbar
2023-03-13 20:29:54 +10:00
Silent
6f0280afc2 Qt: Add a context menu to the toolbar's Settings button when the game is running
A new small context menu that allows to select between global settings
and game settings.
2023-02-28 19:53:31 +01:00
Silent
f34b17446c Qt: Move "Game Properties" from View to Settings 2023-02-28 19:45:56 +01:00
Jean-Baptiste Boric
d65fb0e86a Qt: Add toggle to enable GDB server 2023-02-26 12:06:31 +01:00
Jean-Baptiste Boric
7810e68a58 Qt: Run GDB server on emulation thread 2023-02-26 12:06:31 +01:00
Stenzek
4494a2c73c Qt: Fix possible crash when closing debugger 2023-02-23 01:23:55 +10:00
shikulja
ccf9ca3df8 Update Russian translation (#2951)
* Update Russian translation

* Update Russian translation
2023-02-23 01:23:35 +10:00
Connor McLaughlin
55e0e7ffbe Merge pull request #2950 from andercard0/master
Atualização Português do Brasil
2023-02-07 20:14:48 +10:00
Connor McLaughlin
5e9f233e22 Merge pull request #2949 from zkdpower/master
Update Simple-Chinese Translation to latest.
2023-02-07 20:14:33 +10:00
Stenzek
c7ae0d9b68 Qt: Make fullscreen open on same display as main window 2023-02-07 20:13:50 +10:00
Stenzek
dd7dfe348f HostDisplay: Clamp scissor rect for cursor
Scissor with x/y < 0 is invalid.

To you know who you are, stop copying these changes and putting your
name on it, or respect the copyright declared in the files. You're
violating both copyright as well as the license by not attributing.
2023-02-07 20:08:49 +10:00
Stenzek
befbc7bc2e HostDisplay: Fix cursor texture leak 2023-02-07 20:06:29 +10:00
Anderson Cardoso
8f76d712bc Atualização Português do Brasil
Atualizado para versão mais recente.
2023-02-05 19:11:14 -03:00
zkdpower
6b0e67f99d Update Simple-Chinese Translation to latest. 2023-02-05 17:25:42 +08:00
Stenzek
9e9b0e223f Update SDL Game Controller DB
https://github.com/gabomdq/SDL_GameControllerDB
2023-02-05 15:27:26 +10:00
Stenzek
d941df983e Qt: Ensure svg image format plugin gets included
For some reason, it doesn't on the CI universal builds..
2023-02-05 15:22:40 +10:00
Stenzek
a365fdd252 Qt: Don't strip Mac bundles 2023-02-05 15:19:47 +10:00
Stenzek
f8d5379f8e Qt: Default to native/dynamic theme on Mac 2023-02-05 15:12:43 +10:00
Stenzek
27a0495c0e Qt: Fix crash when right clicking with no game selected 2023-02-05 15:12:43 +10:00
Stenzek
bd1df7b25b Settings: Default to Vulkan/Metal renderer on Mac 2023-02-05 15:12:43 +10:00
Stenzek
e005b283b3 Build: Update Mac dependencies
Fix game controller crash on startup with SDL.
2023-02-05 13:43:19 +10:00
Stenzek
0ef24398f8 Qt: Ensure system is shut down before closing
Fixes crash on shutdown on Mac.
2023-02-05 13:43:15 +10:00
Stenzek
1371dcfa4a Vulkan/Texture: Fix incorrect upload image layout 2023-02-05 13:12:45 +10:00
Stenzek
2dd374d2a7 Vulkan/Context: Fix query pool leak 2023-02-05 13:12:45 +10:00
Stenzek
d84a02a2c3 CMake: Build tweaks 2023-02-05 13:12:45 +10:00
Stenzek
178a659a98 GPU: Move graphics API reset state to System
Stops us trying to reset state on objects which don't exist if
initialization failed (apparently some Android devices.. of course).
2023-02-05 13:12:45 +10:00
Stenzek
c8e7922c1a AnalogController: Fix incorrect locked message format 2023-02-05 13:12:45 +10:00
Connor McLaughlin
c66ae535ca Merge pull request #2947 from andercard0/master
Atualização Português do Brasil
2023-02-05 13:12:21 +10:00
Anderson Cardoso
7bfb61d98c Atualização Português do Brasil
OSD
- Ajustes em mensagens pluralizadas OSD
- Inclusão de mensagem sobre renderização

Configurações Avançadas
- Extensão da imagem verticalmente
2023-01-31 23:04:03 -03:00
Stenzek
29bc13a124 GameDatabase: Disable true colour for Mega Man 8 2023-01-30 19:26:48 +10:00
Stenzek
d954e6e9bf GameDatabase: Set ForceSoftwareRendererForReadbacks for Chrono Trigger 2023-01-30 19:26:48 +10:00
Stenzek
e8f4bd5c5e GameDatabase: Fix ForceSoftwareRendererForReadbacks 2023-01-30 19:26:48 +10:00
Stenzek
a3c7449749 FileSystem: Fix POSIXLock positioning 2023-01-30 19:26:48 +10:00
Stenzek
39d1e899eb CommonHost: Notify RAIntegration when we pause 2023-01-30 19:17:11 +10:00
Stenzek
58a5985f1a Achievements: Fix crash loading state with RAIntegration 2023-01-30 19:17:11 +10:00
Stenzek
e88214966f Settings: Default to digital controller on Android 2023-01-30 19:17:11 +10:00
Stenzek
9859850925 Achievements: Make sound effects not contingent on notifications 2023-01-30 19:17:11 +10:00
Stenzek
14cf865905 Misc: Correctness fixes for OpenGL
GLES2 fallback should be functional again.
2023-01-30 19:17:11 +10:00
Connor McLaughlin
a30bc94437 Merge pull request #2943 from Superstarxalien/master
Improve Integer Scaling and Native Resolution Screenshot behavior
2023-01-30 19:16:42 +10:00
Connor McLaughlin
0f4835e154 Merge pull request #2945 from CookiePLMonster/new-en-translation
Update English plural texts
2023-01-30 18:06:56 +10:00
Connor McLaughlin
22d4d71e0c Merge pull request #2944 from CookiePLMonster/new-pl-translation
Updated Polish translation
2023-01-30 18:06:46 +10:00
Silent
693e396b44 Update Polish translation 2023-01-23 20:07:32 +01:00
electronic_punk
ca813625cd Expanding Polish translation 2023-01-23 20:06:43 +01:00
Superstarxalien
afaedfedc9 Revert "Improve Integer Scaling behavior" and instead offer as a setting 2023-01-23 13:44:44 -04:00
Silent
2d2cc25fb6 Update English plural texts 2023-01-22 14:47:34 +01:00
Superstarxalien
51d1587b21 Improve Integer Scaling behavior
...so it always upscales the display from the framebuffer to fit the aspect ratio by stretching either horizontally or vertically instead of always stretching horizontally, which sometimes (actually most of the time) downscales the image
2023-01-21 14:51:55 -04:00
Connor McLaughlin
9c6c3892e2 Merge pull request #2942 from NicknineTheEagle/nn/cdrom
CD-ROM fixes
2023-01-20 13:11:40 +10:00
NicknineTheEagle
bd7517b0c9 CDROM: Try to reject non-PS1 discs 2023-01-20 05:46:22 +03:00
NicknineTheEagle
7270531c3d CDROM: Fix region check 2023-01-20 05:46:20 +03:00
Connor McLaughlin
53fffb1de2 Merge pull request #2941 from bslenul/adv-settings-reset
"Set Dumped VRAM Write Alpha Channel" should be true when resetting advanced settings
2023-01-17 18:49:35 +10:00
Stenzek
55f716e69e Settings: Fix default value of depth clear threshold 2023-01-17 18:47:54 +10:00
Stenzek
e50390553d Regtest: Use analog controller 2023-01-17 18:41:15 +10:00
Stenzek
95306d3362 CDROM: Slightly adjust seek timing when on target
Fixes Resident Evil 3 booting.
2023-01-17 18:38:19 +10:00
Bobby Smith
4e4245182b "Set Dumped VRAM Write Alpha Channel" should be true when clicking "Reset To Default" 2023-01-16 15:52:32 +01:00
Connor McLaughlin
591e8b5b7a Merge pull request #2940 from andercard0/master
Atualização Português do Brasil
2023-01-16 12:47:27 +10:00
Stenzek
e0ed76745e Qt: Fix cancel in LED colour selection 2023-01-16 12:46:55 +10:00
Anderson Cardoso
5c9db3eeea Atualização Português do Brasil
Novas opções de cor de LED do controle:
- Controle > Configurações Globais

Opções de Depuração 'adaptadas'
2023-01-15 10:55:40 -03:00
Stenzek
c393db419e Qt: Add Controller LED options (where supported) 2023-01-15 16:40:35 +10:00
Connor McLaughlin
722771fff6 Qt: Fix Linux build 2023-01-15 15:26:24 +10:00
Connor McLaughlin
ae529a6195 Qt: Add actions to debugger context menu 2023-01-15 15:13:54 +10:00
Connor McLaughlin
fe08d34e52 Qt: Add COP0/GTE registers to debugger list 2023-01-15 15:13:54 +10:00
Connor McLaughlin
395e9a934b InputManager: Support inverted full axis
i.e. pedals
2023-01-15 15:13:54 +10:00
Connor McLaughlin
01270bac35 StringUtil: Add ToChars/fast_float FromChars 2023-01-15 15:13:54 +10:00
Connor McLaughlin
81383afc50 dep: Add fast_float 2023-01-15 15:13:54 +10:00
Connor McLaughlin
591ac15612 Merge pull request #2939 from andercard0/master
Atualização Português do Brasil
2023-01-15 01:37:26 +10:00
Anderson Cardoso
feaf7f3b17 Atualização Português do Brasil
Atualizado tradução para última versão
- Opções de MDEC
- Ajuste de anglicismo corrigido.
2023-01-13 09:34:30 -03:00
Connor McLaughlin
b5f806a830 CI: Work around Azure Ubuntu mirror issue 2023-01-13 22:10:49 +10:00
Connor McLaughlin
5b600602c2 Settings: Make disable-all-enhancements use new MDEC routines 2023-01-13 21:03:35 +10:00
Connor McLaughlin
1aa3be70c7 SPU: Bypass FIFO for direct memory writes
Aconcagua writes a single halfword with transfers halted, but never enables
DMA.. so when it eventually does later on, there's an extra halfword
written out to memory, which corrupted part of a sound effect.
2023-01-13 21:03:10 +10:00
Connor McLaughlin
2c2304b5b7 System: Fix inverted ifdef 2023-01-12 18:12:58 +10:00
Connor McLaughlin
157a2b7183 Merge pull request #2938 from andercard0/master
Atualização Português do Brasil
2023-01-12 18:07:54 +10:00
Connor McLaughlin
3b038fd27d System: Further improve frame timing consistency 2023-01-12 18:02:12 +10:00
Connor McLaughlin
559f14d27d ImGuiOverlays: Fix incorrect frame time order 2023-01-12 17:41:30 +10:00
Connor McLaughlin
af5d49649c MDEC: Add option to use old conversion routines
That way texture packs for games which use MDEC for decoding
backgrounds will still be compatible.
2023-01-12 17:01:04 +10:00
Connor McLaughlin
3e0be0a577 MDEC: Tweak block timing further
Improves frame rate during animated backgrounds in Final Fantasy VII.
2023-01-12 16:48:34 +10:00
Anderson Cardoso
36ff61cc54 Atualização Português do Brasil
- Opções para redefinição do registro de tempo de jogo (acessado via menu suspenso > clique direito sobre o jogo)

- Correção de erro de digitação na janela principal.
2023-01-11 08:35:15 -03:00
Connor McLaughlin
a56ce290d4 Qt: Work around theme switching issue in 6.4.0 2023-01-11 20:23:21 +10:00
Connor McLaughlin
7c6071dfe1 Qt: Add option to reset played time 2023-01-11 20:21:27 +10:00
Connor McLaughlin
50a616421f System: Add -exe parameter for overriding boot executable
Lets you re-use a disc image, but boot a different file.
2023-01-11 19:49:11 +10:00
Connor McLaughlin
daf1080397 Qt: Fix -portable CLI parameter 2023-01-11 19:31:29 +10:00
shikulja
f14d3c6538 Update Russian translation (#2937)
* Update Russian translation

* Update Russian translation

* Update duckstation-qt_ru.ts
2023-01-11 19:16:43 +10:00
Connor McLaughlin
ba7517fccc Timers: Fix debug window rendering in hidpi 2023-01-11 19:15:59 +10:00
Connor McLaughlin
3e16746e85 Pad: Convert to namespace 2023-01-11 19:15:59 +10:00
Connor McLaughlin
835834f8f4 SIO: Convert to namespace 2023-01-11 19:15:59 +10:00
Connor McLaughlin
0683b9fa0e InterruptController: Convert to namespace 2023-01-11 19:15:59 +10:00
Connor McLaughlin
db364d0e95 Timers: Convert to namespace 2023-01-11 19:15:59 +10:00
Connor McLaughlin
3acf569d67 DMA: Convert to namespace 2023-01-11 19:15:59 +10:00
Connor McLaughlin
d096a09ed8 ImGuiManager: Fix debug window interaction with frame limit off 2023-01-11 19:15:59 +10:00
Connor McLaughlin
8d3250667f Scripts: Show first 3 diff frames in regression test 2023-01-11 19:15:59 +10:00
Connor McLaughlin
90fe071dda CDROM: Adjust Init timing 2023-01-11 19:15:59 +10:00
Connor McLaughlin
05eea3cd2b CPU/CodeCache: Always compute uncached fetch ticks
Running code out of uncached ROM is slowwww.
2023-01-11 19:15:59 +10:00
Connor McLaughlin
6a7407565a Merge pull request #2936 from andercard0/master
Atualização Português do Brasil
2023-01-09 22:20:53 +10:00
Connor McLaughlin
b74eb37996 ImGuiOverlays: Display PAL/NTSC in resolution 2023-01-09 22:20:27 +10:00
Connor McLaughlin
2c125bde8c CDROM: Fix size of debug window 2023-01-09 22:20:27 +10:00
Connor McLaughlin
9de849aa66 CDROM: Delay async interrupts immediately after ACKs
Fixes music playback stopping in Ogre Battle.

Closes #2596.
Closes #575.
2023-01-09 22:20:27 +10:00
Connor McLaughlin
dd73811628 CDROM: Convert to namespace 2023-01-09 22:20:27 +10:00
Anderson Cardoso
56e658b9be Atualização Português do Brasil
Atualizado para última versão.
2023-01-07 18:15:37 -03:00
Connor McLaughlin
1552ff82a7 CMake: Fix Linux build 2023-01-07 17:40:50 +10:00
Connor McLaughlin
19b4f4e921 System: Add frame time graph 2023-01-07 13:10:43 +10:00
Connor McLaughlin
fa2fd8f84f Build: Reference GSL 2023-01-07 13:10:43 +10:00
Connor McLaughlin
9c41126298 dep: Add GSL 4.0.0 2023-01-07 13:10:43 +10:00
Connor McLaughlin
e87f64faed Merge pull request #2934 from Guwange/update_Japanese_translation
Update Japanese translation
2023-01-07 13:07:37 +10:00
Dolphin
ec92ada0fd update Japanese translation 2023-01-07 10:41:22 +09:00
Dolphin
10ccf3ae5b update base duckstation-qt_ja.ts 2023-01-07 10:38:18 +09:00
Dolphin
fbbb5a1eee fix compatibility rating to be translated 2023-01-07 10:35:18 +09:00
Dolphin
91a6608118 mark some analog controller/joystick messages as translatable 2023-01-07 10:35:17 +09:00
Connor McLaughlin
06d6447e59 Qt: Add -raintegration command line parameter 2022-12-31 16:14:23 +10:00
Connor McLaughlin
f08f124eaa Qt: Move RAIntegration menu to Tools
That way it's not hidden by default.
2022-12-31 16:14:23 +10:00
Connor McLaughlin
f9bf997c34 Achievements: Fix crash on game change when using RAIntegration 2022-12-31 16:12:03 +10:00
Connor McLaughlin
af73d8ac24 D3D12HostDisplay: Fix software cursor rendering 2022-12-27 22:17:58 +10:00
Connor McLaughlin
1bb321c41f MDEC: Don't round when texture replacements are enabled
This changes texture hashes, and people got annoyed :/
2022-12-27 22:17:58 +10:00
Connor McLaughlin
928dd0e665 MDEC: Fix Linux compiling 2022-12-21 17:30:22 +10:00
Connor McLaughlin
5fa5957156 Qt: Fix per-game custom aspect ratio 2022-12-21 13:35:12 +10:00
Connor McLaughlin
b530b08bc4 Qt: Fix exiting game in big picture returning to list 2022-12-20 21:45:01 +10:00
Connor McLaughlin
fb9608a9cf FullscreenUI: Fix folder changes not applying immediately 2022-12-20 21:37:28 +10:00
Connor McLaughlin
c2e15b0078 System: Fix toggling Show GPU Usage at runtime 2022-12-20 21:32:51 +10:00
Connor McLaughlin
fd050334c0 FullscreenUI: Warning fixes 2022-12-20 21:26:19 +10:00
Connor McLaughlin
4eb6b90825 AudioStream: Fix building without SSE on Linux 2022-12-20 21:25:15 +10:00
Connor McLaughlin
d65cbe42ae GPU: Truncate instead of rounding 24bpp->16bpp
Thanks to axetion for writing a test to confirm this is what the console
GPU indeed does.
2022-12-20 21:19:58 +10:00
Connor McLaughlin
1c8ef86f12 MDEC: Convert to namespace 2022-12-20 21:18:30 +10:00
Connor McLaughlin
81823562fa Qt: Fix a possible crash on shutdown
If the game list is being refreshed due to play time update.
2022-12-20 20:45:23 +10:00
Connor McLaughlin
52817d967b Qt: Fix -fullscreen command line parameter 2022-12-19 23:30:27 +10:00
Connor McLaughlin
11ecf2bb46 Merge pull request #2931 from andercard0/master
Atualização Português do Brasil
2022-12-19 17:17:30 +10:00
Connor McLaughlin
e73098873b Merge pull request #2932 from zkdpower/master
update Simple-Chinese translaton to latest.
2022-12-19 17:17:21 +10:00
Connor McLaughlin
f85464805a Merge pull request #2933 from bslenul/shutdown-hk-state
Prevent shutdown hotkey from bypassing the state on shutdown setting
2022-12-19 17:17:10 +10:00
bslenul
266a50f7bd Prevent shutdown hotkey from bypassing the state on shutdown setting 2022-12-18 15:23:03 +01:00
zkdpower
0059976884 update Simple-Chinese translaton to latest. 2022-12-15 09:37:36 +08:00
Anderson Cardoso
c549b682e5 Atualização Português do Brasil
Atualizado para a versão mais recente.
2022-12-14 08:34:40 -03:00
Connor McLaughlin
3f5552d6ac Merge pull request #2930 from IlDucci/es_ES_update_20221211
Spanish (Spain) proofread and fixes
2022-12-14 17:59:06 +10:00
shikulja
c938d1fd98 Update Russian translation (#2929)
* Update Russian translation

* Update Russian translation
2022-12-14 17:58:55 +10:00
Connor McLaughlin
3082fd55d7 Qt: Add output audio device selection 2022-12-14 17:58:14 +10:00
Connor McLaughlin
8ab46d0713 MDEC: Redo IDCT and conversion
RE2 backgrounds look better now (mainly due to the 24bpp->16bpp
conversion). Also implements signed output (untested).
2022-12-14 17:28:34 +10:00
IlDucci
b4af23f657 Spanish (Spain) proofread and fixes
- Restoring consistency to terms, both from Sony and for the emulator (tarjeta de memoria is now Memory Card, for example).
 - Correcting a few typos in variables that were {}.
 - Proofread/Spellcheck pass.
2022-12-11 19:51:15 +01:00
Connor McLaughlin
1905ce3e01 CDROM: Don't prevent GetlocL after Init
Console apparently just returns whatever was in memory, even though it
seeked to the start. Fixes Meremanoid booting.
2022-12-08 19:56:00 +10:00
Connor McLaughlin
dfdbc9a8ce OpenGLHostDisplay: Update sync interval on MakeCurrent() 2022-12-08 13:21:21 +10:00
Connor McLaughlin
9d23df3aba OpenGLHostDisplay: Set swap interval on emu thread
Fixes vsync being locked on in Linux.
2022-12-07 12:37:57 +10:00
Connor McLaughlin
84c966502d CI: Better title for latest release
.. and remove references to the nogui appimage, it hasn't been a thing
in some time now.
2022-12-06 20:29:30 +10:00
Connor McLaughlin
e27f259bf8 System: Fix broken missing-SBI detection 2022-12-06 18:09:40 +10:00
Connor McLaughlin
7101b86d2f System: Don't unconditionally apply TTY enable patch
Fixes Intelligent Qube hang.
2022-12-06 13:31:35 +10:00
Connor McLaughlin
7a362bf8f6 Qt: Remove dead code from ControllerBindingWidget_Base
This was moved to the settings tab a while back.
2022-12-04 21:06:02 +10:00
Connor McLaughlin
8c7a192128 Misc: Add copyright/license statement to applicable files
Should've did this in the beginning.
2022-12-04 21:03:49 +10:00
Connor McLaughlin
1ba877409f HostDisplay: Remove sleep logging
Accidentially left this in...
2022-12-04 18:34:02 +10:00
Connor McLaughlin
f8cb480779 Timer: Improve SleepUntil() 2022-12-04 15:40:46 +10:00
Connor McLaughlin
13f7672a78 FullscreenUI: Allow using input button to clear bindings 2022-12-04 14:09:33 +10:00
Connor McLaughlin
7d3ac98cc6 HostDisplay: Manually throttle fullscreen UI presentation
Fixes flickering screen in fullscreen with Vulkan.
2022-12-04 14:06:56 +10:00
Connor McLaughlin
eafa4fb1a3 HostDisplay: Simplify method naming
Match PCSX2.
2022-12-04 13:22:13 +10:00
Connor McLaughlin
6f868e8d2a InputManager: Ensure Android source is always enabled 2022-12-04 13:20:08 +10:00
Connor McLaughlin
b99bf90596 Merge pull request #2928 from RSDuck/fullscreengui-fixes2
Various fixes for the postprocessing controls in the fullscreen GUI
2022-12-04 13:19:21 +10:00
RSDuck
527a1e6d5e Various fixes for the postprocessing controls in the fullscreen GUI 2022-12-03 20:26:24 +01:00
Connor McLaughlin
01fdcf2dde Merge pull request #2927 from RSDuck/fullscreengui-fix
Correct "Read Speedup" to "Seek Speedup"
2022-12-03 20:59:48 +10:00
RSDuck
da963d4e37 Correct "Read Speedup" to "Seek Speedup" 2022-12-03 11:55:28 +01:00
Connor McLaughlin
b881c7e7c4 Qt: Fix macro frequency not saving 2022-11-29 20:42:15 +10:00
Connor McLaughlin
71c558625e GPU/SW: Fix incorrect min/max in polylines
Thanks to FPGAzumSpass for catching.
2022-11-28 18:04:58 +10:00
Connor McLaughlin
a6f5ac264e CDROM: Handle some edge cases
- Reel Fishing: Reads while an implicit seek is still going.
 - Transformers - Beast Wars: Needs a longer delay when it issues a
   ReadN after a SeekL and simulated position hits exactly.
2022-11-28 18:04:28 +10:00
Connor McLaughlin
11559c18e3 Merge pull request #2926 from zkdpower/master
update simple-chinese translation.
2022-11-23 20:21:19 +10:00
Connor McLaughlin
e7e292da2d Merge pull request #2925 from IlDucci/es-ES_update20221121
Spanish (Spain) translation update
2022-11-23 20:21:08 +10:00
Connor McLaughlin
b0e9208950 Qt: Try loading base translation without suffix 2022-11-23 20:20:37 +10:00
Connor McLaughlin
2610bb11cd Qt: Work around popups opened behind window in Wayland 2022-11-23 20:14:31 +10:00
Connor McLaughlin
373297f35b Qt: Work around game-list-disappear issue in Wayland 2022-11-23 20:04:26 +10:00
Connor McLaughlin
7a30c9ea43 GL/Context: USe glXMakeContextCurrent() for GLX 2022-11-23 19:18:17 +10:00
Connor McLaughlin
0d178a2a9e GL/Context: Prefer EGL over GLX on all platforms 2022-11-23 19:14:28 +10:00
Connor McLaughlin
27b0847ee7 WindowInfo: Don't clear display when going surfaceless
Fixes panic when a popup occurs when using GLX.
2022-11-23 19:13:29 +10:00
Connor McLaughlin
add2b5fbae Qt: Fix initial/default value of fullscreen cursor hide 2022-11-23 19:13:13 +10:00
Connor McLaughlin
cf05037428 GPU: Fix GL shaders on Mesa with PGXP + uncorrected colours 2022-11-22 23:14:54 +10:00
zkdpower
5d1f3f74ef update simple-chinese translation. 2022-11-22 16:20:16 +08:00
IlDucci
4006f4d1f5 Spanish (Spain) translation update.
Updating the Spanish (Spain) translation with the latest changes. Please remember that the shared "qtbase_es.qm" is still not being duplicated as "qtbase_es-es.qm", and thus, the generic translations (for buttons like Close/OK/Cancel) are still not being applied. Thank you.
2022-11-21 19:44:44 +01:00
Connor McLaughlin
201a671709 System: Fix dumping audio on boot 2022-11-21 12:55:24 +10:00
Connor McLaughlin
899efb2bdc MSBuild: Use MultiToolTask mode 2022-11-19 14:49:08 +10:00
Connor McLaughlin
520bc5ce58 MSBuild: Purge remaining UWP configurations 2022-11-19 14:48:53 +10:00
Connor McLaughlin
8d7aea5e19 Host: Add GetTopLevelWindowInfo()
And use it for screensaver inhibiting on Linux.
2022-11-18 18:44:00 +10:00
Connor McLaughlin
3d4d2336a9 scmversion: Filter legacy tag 2022-11-18 17:48:43 +10:00
Connor McLaughlin
63a7c50e33 Build: Core depends on tinyxml2 2022-11-18 17:16:21 +10:00
Connor McLaughlin
ce16195455 Data: Remove bundled input profiles
No need for these since automatic mapping takes care of it.
2022-11-18 17:16:21 +10:00
Connor McLaughlin
ae4366498e Qt: Add migration of old controller binds to new 2022-11-18 17:16:21 +10:00
Connor McLaughlin
4b1e54d74f Qt: Hide toolbar by default 2022-11-18 17:16:21 +10:00
Connor McLaughlin
4c17868f91 Qt: Fix crash on language change if system running 2022-11-18 17:16:21 +10:00
Connor McLaughlin
78e1d6e523 Qt: Hide developer column by default 2022-11-18 17:16:21 +10:00
Connor McLaughlin
0ef111f7d1 Merge pull request #2924 from zkdpower/master
update simple-chinese language to latest.
2022-11-18 17:16:13 +10:00
zkdpower
0655e86049 update simple-chinese language to latest. 2022-11-16 17:56:36 +08:00
Connor McLaughlin
b2dcb417c1 Data: Update SDL GameController DB 2022-11-15 21:35:59 +10:00
Connor McLaughlin
30556cb40a GL/Context: Prefer EGL over GLX on ARM 2022-11-15 21:33:06 +10:00
Connor McLaughlin
6db90e8116 BIOS: Add detection of OpenBIOS 2022-11-15 21:22:42 +10:00
Connor McLaughlin
a883652616 Merge pull request #2922 from impiaaa/nonachievement
Achievements: Fix building Qt frontend with achievements disabled
2022-11-15 18:54:57 +10:00
Spencer Alves
ffa120d4e2 Achievements: Fix building Qt frontend with achievements disabled 2022-11-15 18:32:40 +10:00
Connor McLaughlin
396c43a0f9 Merge pull request #2923 from PugsyMAME/master
chtdb.txt housekeeping
2022-11-15 18:21:59 +10:00
PugsyMAME
34bb512a4b chtdb.txt housekeeping
Brings chtdb.txt upto date with my own version (merged last updates in),
New cheats added for various games, including a batch of widescreen cheats.
Fixed various cheat names, and placed others in list selects to make them more user friendly
Fixed various issues with last few updates, where cheats were added twice and/or in the wrong place (so they wouldn't get pulled in by the correct game)
2022-11-13 16:14:52 +00:00
Connor McLaughlin
dec28501ed Merge pull request #2921 from zkdpower/master
Update Simple-Chinese translation to latest.
2022-11-10 18:56:28 +10:00
Connor McLaughlin
08c866ae11 Merge pull request #2920 from andercard0/master
Atualização Português do Brasil
2022-11-10 18:56:18 +10:00
Connor McLaughlin
fd807b14aa dep: Update SDL2 to 2.24.2 2022-11-10 18:55:32 +10:00
zkdpower
bfa5d3e8e9 Update Simple-Chinese translation to latest. 2022-11-07 20:16:04 +08:00
Anderson Cardoso
965ca0851d Atualização Português do Brasil
- Mensagem de alerta para conquistas da guia de configurações globais e conquistas.
2022-11-05 14:16:59 -03:00
Connor McLaughlin
a6a52b31ad Achievements: Add option to disable notifications 2022-11-05 15:01:48 +10:00
Connor McLaughlin
601e3586b2 CPU/CodeCache: Impove overflow handling 2022-11-05 14:43:52 +10:00
Connor McLaughlin
bdde3ce07b XAudio2Stream: Remove redundant check 2022-11-03 13:17:23 +10:00
Connor McLaughlin
fad7d68ec5 Merge pull request #2919 from andercard0/master
Atualização Português do Brasil
2022-11-03 13:13:39 +10:00
Connor McLaughlin
5614887678 XInputSource: Reload devices on initialize 2022-11-03 13:13:10 +10:00
Connor McLaughlin
97ff2bf000 Misc: Remove last remnants of UWP 2022-11-03 13:13:10 +10:00
Anderson Cardoso
48f84a7433 Atualização Português do Brasil 2022-10-31 09:13:49 -03:00
Connor McLaughlin
438f085cfe Merge pull request #2917 from andercard0/master
Atualização Português do Brasil
2022-10-31 18:11:47 +10:00
Connor McLaughlin
99e64e6593 Merge pull request #2918 from xujibbs/patch-1
Update mainwindow.cpp
2022-10-31 18:11:19 +10:00
Connor McLaughlin
94ff7a3f13 EvdevInputSource: Add missing override 2022-10-31 18:09:26 +10:00
Connor McLaughlin
c096752791 FullscreenUI: Minor fixes 2022-10-31 18:08:26 +10:00
xujibbs
90573986dd Update mainwindow.cpp 2022-10-29 18:50:33 +08:00
Anderson Cardoso
4599d201bc Atualização Português do Brasil
Descrição do tempo de jogo atualizada.
2022-10-24 16:14:33 -03:00
Connor McLaughlin
6f70946860 ImGuiManager: Update FA glyph range 2022-10-23 14:51:52 +10:00
Connor McLaughlin
f1aba930b2 Merge pull request #2916 from zkdpower/master
Update Simple-Chinese translation to latest.
2022-10-23 14:50:30 +10:00
Connor McLaughlin
2f027b04b6 Merge pull request #2915 from shikulja/master
Update Russian translation
2022-10-23 14:50:23 +10:00
Connor McLaughlin
58c3c44ae9 Merge pull request #2913 from andercard0/patch-7
Atualização Português do Brasil
2022-10-23 14:50:17 +10:00
Connor McLaughlin
72dfbaf6cc Misc: Backports from PCSX2 UI 2022-10-23 14:49:44 +10:00
zkdpower
c262866e0e Update Simple-Chinese translation to latest. 2022-10-22 11:42:14 +08:00
shikulja
32c15c42cc Update Russian translation 2022-10-21 17:05:55 +03:00
Connor McLaughlin
8438506206 Qt: Crash fix 2022-10-21 23:32:52 +10:00
Anderson Cardoso
42e347c1f7 Atualização Português do Brasil 2022-10-21 09:55:08 -03:00
Connor McLaughlin
3ff5012f50 Merge pull request #2912 from andercard0/patch-6
Atualização Português do Brasil
2022-10-21 21:29:25 +10:00
Connor McLaughlin
812338a5bd Merge pull request #2911 from zkdpower/master
Update Simple-Chinese language file to latest.
2022-10-21 21:29:11 +10:00
Connor McLaughlin
f5b7311a45 Controllers: Make deadzone circular 2022-10-21 21:20:21 +10:00
Connor McLaughlin
ca571f8a78 GameList: Add played time tracker 2022-10-21 21:20:21 +10:00
Connor McLaughlin
6def728888 Qt: Display deadzone/sensitivity/etc as whole number instead of decimal 2022-10-21 21:01:30 +10:00
Anderson Cardoso
553011b592 Atualização Português do Brasil
Mensagem OSD.
2022-10-20 22:05:00 -03:00
Connor McLaughlin
b154579c0d RegTest: Fix incorrect config keys 2022-10-21 00:30:42 +10:00
Connor McLaughlin
ac3b3e89f4 Qt: Make automap failure message more friendly 2022-10-21 00:30:42 +10:00
Connor McLaughlin
b6686b8239 System: Preserve controller type on core settings reset 2022-10-21 00:30:42 +10:00
Connor McLaughlin
8e95248ef3 GL/Context: Always prefer GLES on Android 2022-10-21 00:30:42 +10:00
Connor McLaughlin
0b0e910892 DInputSource: Use W variants of APIs 2022-10-21 00:30:42 +10:00
zkdpower
c442c62682 Update Simple-Chinese language file to latest. 2022-10-16 16:43:32 +08:00
shikulja
107bff0e7f Update Russian translation (#2910)
* Update Russian translation

* Purge Russian translation
2022-10-14 20:35:25 +10:00
Connor McLaughlin
c2f4192f5f FullscreenUI: Remove temporary force-settings-open 2022-10-14 20:35:01 +10:00
Connor McLaughlin
5b14796654 Merge pull request #2909 from andercard0/master
Atualização Português do Brasil
2022-10-14 00:18:59 +10:00
Connor McLaughlin
037f43f7d0 FullscreenUI: Add post processing settings 2022-10-14 00:14:35 +10:00
Connor McLaughlin
11ba87059e HostDisplay: Remove parameters which get pulled from config
No point duplicating them.
2022-10-14 00:14:34 +10:00
Anderson 0 Cardoso
b3300fcd24 Atualização Português do Brasil 2022-10-13 10:29:55 -03:00
Connor McLaughlin
43e959bdc9 Merge pull request #2908 from andercard0/master
Autalização Português do Brasil
2022-10-13 22:55:56 +10:00
Connor McLaughlin
ccfe3925fc HostDisplay: Use border sampling for post processing shaders 2022-10-13 22:53:16 +10:00
Connor McLaughlin
c528a96215 RegTest: Disable fast boot and game settings 2022-10-13 22:53:16 +10:00
Connor McLaughlin
c9d13c028e CDROM: Debugger names for some commands 2022-10-13 22:53:16 +10:00
Connor McLaughlin
2c867bc3df HostDisplay: Blit before post processing, not after
Should be a tiny performance boost on tilers.
2022-10-13 22:13:09 +10:00
Connor McLaughlin
adf41b9bbd D3D12HostDisplay: Implement post processing 2022-10-13 22:13:09 +10:00
Anderson 0 Cardoso
bc20054278 Autalização Português do Brasil 2022-10-13 08:39:27 -03:00
Connor McLaughlin
cc3fadba14 Qt: Move downsampling to enhancement settings 2022-10-13 17:55:25 +10:00
Connor McLaughlin
98ef639c0a Qt: Change post settings style to sunken 2022-10-13 17:43:09 +10:00
Connor McLaughlin
69efa0f46f Shaders: Add crt-lottes.glsl 2022-10-13 17:42:31 +10:00
Connor McLaughlin
8afea2fef8 HostDisplay: Fix post-processing time, add original source size 2022-10-13 17:42:15 +10:00
Connor McLaughlin
7acba0b141 GameDB: Fix some entries with missing system.cnf 2022-10-13 17:41:26 +10:00
Connor McLaughlin
bcd04e5f51 Qt: Expose display position/alignment in UI 2022-10-13 17:40:58 +10:00
Connor McLaughlin
0709f92ac1 Misc: Cleanup/deduplicate from c9cba5e 2022-10-13 17:37:39 +10:00
Connor McLaughlin
1538f26013 Qt: Move some settings around, add OSD options 2022-10-13 17:27:09 +10:00
Connor McLaughlin
5498ddfab7 RegTest: Port to new host abstractions 2022-10-13 17:27:09 +10:00
Connor McLaughlin
c9cba5e220 Merge pull request #2907 from CeruleanSky/DisAlignSet
Expose Display Host Alignment as a setting in ini
2022-10-13 17:26:51 +10:00
nobody
553d58052b Expose Display Host Aligment as a Setting in Ini 2022-10-09 00:55:56 -04:00
Connor McLaughlin
0cd331629b Merge pull request #2906 from zkdpower/master
Update Simple-Chinese translation to latest.
2022-10-09 14:21:29 +10:00
Connor McLaughlin
e395a74832 Settings: Fix default values for achievements 2022-10-09 14:21:01 +10:00
zkdpower
320b646076 Update Simple-Chinese translation to latest. 2022-10-09 12:19:24 +08:00
Connor McLaughlin
4feb5ad548 Controller: Make InAnalogMode() virtual 2022-10-09 14:10:54 +10:00
Connor McLaughlin
21da5036c0 Merge pull request #2904 from andercard0/master
Atualização Português do Brasil
2022-10-09 12:43:12 +10:00
Connor McLaughlin
11e7e79c16 FullscreenUI: Fix description string 2022-10-09 12:42:34 +10:00
Anderson 0 Cardoso
3fa2f62775 Atualização Português do Brasil
- OSD de  conquistas
- OSD referente a versão Android
2022-10-08 12:00:01 -03:00
shikulja
3f68ef39ae Update Russian translation (#2903)
* Update Russian translation

* Purge Russian translation
2022-10-08 23:37:12 +10:00
Connor McLaughlin
3a3f571ecc Settings: Persist OSD options when resetting 2022-10-08 23:36:39 +10:00
Connor McLaughlin
1745d3e803 Settings: Don't allow both runahead and rewind 2022-10-08 23:36:24 +10:00
Connor McLaughlin
5fa7960c31 CI: Fix/re-enable Mac builds
Credit to TellowKrinkle for debugging the QtNetwork build issue.
2022-10-08 21:34:35 +10:00
Connor McLaughlin
42768c3101 Achievements: Fix a few minor issues 2022-10-08 21:21:33 +10:00
Connor McLaughlin
8d53eb5df8 Merge pull request #2902 from zkdpower/master
Update Simple-Chinese translation to latest.
2022-10-08 20:26:20 +10:00
Connor McLaughlin
550b4928c2 Achievements: Backports from PCSX2 2022-10-08 20:25:42 +10:00
zkdpower
426f624669 Update Simple-Chinese translation to latest. 2022-10-07 11:02:07 +08:00
Connor McLaughlin
6d32e9bc10 Merge pull request #2901 from andercard0/master
Atualização Português do Brasil
2022-10-06 23:27:33 +10:00
Connor McLaughlin
59d3151323 CI: Temporarily disable Mac builds
Qt fails building due to:

Undefined symbols for architecture x86_64:
  "___gss_c_nt_hostbased_service_oid_desc", referenced from:
      qGSsapiGetServiceName(QStringView) in qauthenticator.cpp.o

and I don't have the energy to set up a VM to figure out why at the
moment.
2022-10-06 23:26:44 +10:00
Connor McLaughlin
5dcf242d62 CI: Remove UWP completely
Code's been gone for a while, no need to keep it in here either.

Shame the platform is so full of leeches who want nothing but to knock
others off work off for profit.
2022-10-06 23:25:24 +10:00
Connor McLaughlin
bb4a65f1dd Achievements: Save submitted time from API in leaderboards 2022-10-06 22:50:59 +10:00
Anderson 0 Cardoso
4a70740b2b Atualização Português do Brasil
- Acrescentado opções faltantes
- Opções OSD de PGXP
2022-10-05 21:07:24 -03:00
Connor McLaughlin
10f98106dd Misc: Normalize code vs serial usage 2022-10-05 18:29:44 +10:00
Connor McLaughlin
4c3a5dd4d7 CI: ARM64 Mac builds for CURL should also disable brotili 2022-10-05 18:29:43 +10:00
Connor McLaughlin
5f6490f68b GPU/Vulkan: Fix downloads messing up later commands 2022-10-05 18:29:43 +10:00
Connor McLaughlin
564a9bdeb4 GL/Context: Use GL_OES_draw_elements_base_vertex if GLES3.2 is missing 2022-10-05 18:29:43 +10:00
Connor McLaughlin
2231af2dfc Merge pull request #2899 from zkdpower/master
Update Simple-Chinese translation to latest.
2022-10-05 18:29:32 +10:00
zkdpower
4e8535c349 Update Simple-Chinese translation to latest. 2022-10-04 14:58:30 +08:00
Connor McLaughlin
ab1422b690 Merge pull request #2898 from andercard0/patch-4
Atualização Português do Brasil
2022-10-04 00:46:06 +10:00
Connor McLaughlin
c486f6619f Achievements: Avoid potential crash when parsing malformed responses 2022-10-04 00:45:25 +10:00
Anderson Cardoso
6b239d2f4e Atualização Português do Brasil
PGXP strings updated to latest.
2022-10-03 11:27:01 -03:00
Connor McLaughlin
587fbf6ca7 System: Disable auto analog mode when starting shell 2022-10-04 00:20:37 +10:00
Connor McLaughlin
df06931e36 Achievements: Make login progress indeterminate 2022-10-04 00:00:57 +10:00
Connor McLaughlin
c3eccf51d1 OpenGLHostDisplay: Fix post-processing with GLES 2022-10-04 00:00:56 +10:00
Connor McLaughlin
8f39ad3555 GPU/OpenGL: Don't recreate context on sw switch when using GLES 2022-10-04 00:00:56 +10:00
Connor McLaughlin
106addf5a8 Qt: Fix shutdown and save state in fullscreen UI 2022-10-04 00:00:56 +10:00
Connor McLaughlin
74452eede3 ImGui: Don't show overlays when system paused 2022-10-04 00:00:56 +10:00
Connor McLaughlin
f25d7f6e09 Misc: Fix various warnings 2022-10-04 00:00:56 +10:00
Connor McLaughlin
a9038133c8 HostDisplay: Common texture base class for all APIs 2022-10-04 00:00:56 +10:00
Connor McLaughlin
12d400b76a OpenGLHostDisplay: Replace GL ID handle with texture class 2022-10-03 21:08:42 +10:00
Connor McLaughlin
971bba07d6 GPU: Make perspective-correct color interpolation toggleable 2022-10-03 21:08:41 +10:00
Connor McLaughlin
6af5a2486c VulkanHostDisplay: Use coherent memory type for downloads on Adreno
Otherwise it spends a ton of CPU time invalidating the buffer.
2022-10-03 13:13:37 +10:00
Connor McLaughlin
4dc3014fcd Vulkan: Hook up VK_KHR_driver_properties 2022-10-03 13:11:38 +10:00
Connor McLaughlin
dc008d3cdc Merge pull request #2896 from andercard0/patch-3
Atualização Português do Brasil
2022-10-03 12:57:41 +10:00
Connor McLaughlin
26eda7561d Merge pull request #2897 from zkdpower/master
update simple-chinese translation to latest.
2022-10-03 12:57:16 +10:00
zkdpower
04cc1fdb7b update simple-chinese translation to latest. 2022-10-02 16:22:41 +08:00
Anderson Cardoso
62dfded7d6 Atualização Português do Brasil
Updated challenge mode description.
2022-10-01 22:45:45 -03:00
Connor McLaughlin
22b41bd153 Achievements: Hardcore mode no longer gives twice the points 2022-10-01 13:39:26 +10:00
Connor McLaughlin
410b384c76 Vulkan/Context: Request API v1.1 2022-10-01 13:31:03 +10:00
shikulja
7ae1509d88 Update Russian translation (#2895)
* Update Russian translation

* Update Russian translation
2022-10-01 13:29:49 +10:00
Connor McLaughlin
8aa1c8827c GPU/D3D11: Purge D3D11::StagingTexture 2022-09-26 22:15:51 +10:00
Connor McLaughlin
6bafcea94f HostDisplay: Remove DestroyRenderDevice() 2022-09-26 22:15:51 +10:00
Connor McLaughlin
84917ec6aa Common/Image: Add resize methods 2022-09-26 22:15:51 +10:00
Connor McLaughlin
e3a327f7a2 Vulkan/Texture: Fix updating array textures 2022-09-26 22:15:50 +10:00
Connor McLaughlin
f7aa7c659c D3D11/Texture: Add layers/texture arrays 2022-09-26 22:15:50 +10:00
Connor McLaughlin
e7fb42347f GL/Texture: Add multi-layer/level support 2022-09-26 22:15:50 +10:00
Connor McLaughlin
5ef0ad1ec6 GPU/Vulkan: Get rid of additional stream buffer 2022-09-26 22:15:50 +10:00
Connor McLaughlin
8d32547ec9 Vulkan/Texture: Allow uploading non-zero layers/levels 2022-09-26 22:15:50 +10:00
Connor McLaughlin
aff9f1c25f D3D12: Add helper for offsetting descriptors 2022-09-26 22:15:50 +10:00
Connor McLaughlin
cb1e15da58 GPU/D3D12: Fix incorrect stream buffer upload size 2022-09-26 22:15:50 +10:00
Connor McLaughlin
4668334516 GameDatabase: Make unknown controller types non-fatal 2022-09-26 22:15:50 +10:00
Connor McLaughlin
9d27f7095f Vulkan: Use Vulkan Memory Allocator 2022-09-26 22:15:50 +10:00
Connor McLaughlin
56293e4d8f 3rdparty: Add vk_mem_alloc 2022-09-26 20:42:49 +10:00
Connor McLaughlin
37d579c652 BIOS: Compile fix 2022-09-26 20:42:35 +10:00
Connor McLaughlin
187b01f908 Merge pull request #2892 from zkdpower/master
update simple-chinese language file to latest.
2022-09-25 13:07:52 +10:00
Anderson Cardoso
146c99f668 Atualização Português do Brasil (#2893)
* Atualização Português do Brasil

Update strings to latest.

* Update chtDb to the latest

Following games were updated in the Database:

- Spyro 2 - Ripto's Rage
- Medal Of Honor
- Digimon World 3
- Megaman Legends 2
- Star Ocean - The Second Story
- Disney Presents Tigger's Honey Hunt
- Spyro X Sparx - Tondemo Tours
- Resident Evil 1
- Grand Theft Auto
- Castlevania Symphony Of The Night
- Megaman X
- Dino Crisis
- Valkyrie Profile
- MediEvil 2
- Crash Bandicoot - Warped

* Update chtdb.txt

* Update chtdb.txt

* Atualização Português do Brasil

Update file to latest.
2022-09-25 13:07:31 +10:00
Connor McLaughlin
864dffc789 Merge pull request #2894 from lukahn/patch-1
Update bios.cpp
2022-09-25 13:07:04 +10:00
zkdpower
c793f5d098 update simple-chinese language file to latest.
update simple-chinese language file to latest.
2022-09-24 17:50:15 +08:00
Connor McLaughlin
78b4fbb515 Achievements: Display points in list window 2022-09-24 14:21:53 +10:00
Connor McLaughlin
e54dc9872b Achievements: Display mastered notifications 2022-09-24 13:27:59 +10:00
Connor McLaughlin
5bf1f062b9 Qt: Re-add active/line offset to game properties (advanced) 2022-09-24 13:19:56 +10:00
Connor McLaughlin
583b8cd955 InputManager: Export a few functions 2022-09-24 13:14:28 +10:00
Connor McLaughlin
d25a9a22e3 System: Fix per-game bindings being used when disabled 2022-09-24 13:14:24 +10:00
Connor McLaughlin
6fa8c3962e Build: Fixes for Android 2022-09-24 13:14:18 +10:00
Connor McLaughlin
736996ab38 Controller: Add invert and button deadzone options 2022-09-24 13:14:13 +10:00
Anderson Cardoso
1a6bc86136 Atualização Português do Brasil (localization) | Update ChtDb to latest (#2886)
* Atualização Português do Brasil

Update strings to latest.

* Update chtDb to the latest

Following games were updated in the Database:

- Spyro 2 - Ripto's Rage
- Medal Of Honor
- Digimon World 3
- Megaman Legends 2
- Star Ocean - The Second Story
- Disney Presents Tigger's Honey Hunt
- Spyro X Sparx - Tondemo Tours
- Resident Evil 1
- Grand Theft Auto
- Castlevania Symphony Of The Night
- Megaman X
- Dino Crisis
- Valkyrie Profile
- MediEvil 2
- Crash Bandicoot - Warped

* Update chtdb.txt

* Update chtdb.txt
2022-09-24 13:12:02 +10:00
Connor McLaughlin
7af2f252ac Merge pull request #2887 from zkdpower/master
update simple-chinese language file to latest.
2022-09-24 13:11:41 +10:00
Connor McLaughlin
2186debcd2 Merge pull request #2888 from Calinou/enhancements-overlay-fix-swapped-msaa-ssaa
Fix "MSAA" and "SSAA" texts being swapped in enhancements overlay
2022-09-24 13:11:27 +10:00
Connor McLaughlin
7ef600aaa0 Merge pull request #2889 from Calinou/texture-filtering-warn-performance-cost
Warn about the high performance cost of JINC2 and xBR filtering
2022-09-24 13:11:11 +10:00
Connor McLaughlin
271c820c0a Merge pull request #2890 from Calinou/show-cpu-usage-add-description
Add usage description for Show CPU Usage
2022-09-24 13:10:45 +10:00
Luke Wakefield
2cfbd43bb6 Update bios.cpp
Adding PS1 BIOS files from PS2 consoles.
2022-09-23 16:08:07 +10:00
Hugo Locurcio
086b0d390a Add usage description for Show CPU Usage
Unlike other display options, this one was missing a description.

This clarifies the option's purpose and the fact that it displays
the host's CPU usage, not the emulated system's CPU usage.
2022-09-22 15:06:36 +02:00
Hugo Locurcio
8152b99ea4 Warn about the high performance cost of JINC2 and xBR filtering
These options (especially xBR) have a very high cost. In my experience,
xBR has a greater impact on the framerate than enabling 4× SSAA or PGXP
in CPU mode (whose quality increase is much more obvious).

These options are also essentially unusable on mobile, regardless of
how powerful your device is. As a result, this adds warnings both
in the option names and the description.

Bilinear filtering is not affected by this performance cost, as GPUs
can perform this in hardware without having to emulate filtering
through a shader.
2022-09-22 14:23:31 +02:00
Hugo Locurcio
dcd11d8371 Fix "MSAA" and "SSAA" texts being swapped in enhancements overlay
Previously, when you selected MSAA in the advanced options, you
got MSAA but the enhancements display showed "SSAA".
The opposite happened when you selected SSAA.
2022-09-22 14:08:29 +02:00
zkdpower
76c367e92f update simple-chinese language file to latest. 2022-09-22 18:43:03 +08:00
Connor McLaughlin
d26fef3e4e Achievements: Add leaderboard toggle (+ some minor fixes) 2022-09-21 23:47:58 +10:00
Connor McLaughlin
3760849ac4 Merge pull request #2884 from zkdpower/master
update simple-chinese language file to latest.
2022-09-21 23:19:11 +10:00
Connor McLaughlin
065472ddda Achievements: Fix crash when toggling off with list open 2022-09-21 23:06:23 +10:00
Connor McLaughlin
5568de1e03 Achievements: Add sound effects 2022-09-21 23:06:23 +10:00
Connor McLaughlin
a4eb5f1d5d FrontendCommon: Add PlaySoundAsync() 2022-09-21 23:06:23 +10:00
Connor McLaughlin
cba4bb4ab2 Achievements: Show primed/challenge-in-progress achievements 2022-09-21 23:06:23 +10:00
zkdpower
db27468506 update simple-chinese language file to latest. 2022-09-21 19:32:48 +08:00
Víctor "IlDucci
a55ca69b87 Spanish (Spain) translation update (#2882)
* Spanish (Spain) translation update

 - Updated the .ts file itself (seems that es-es was forgotten at the last code update pass).
 - Translated new strings.
 - Fine-tuned others.
 - Cleaned up now-unneeded strings.

* Spanish (Spain) translation update

 - Updated the .ts file itself (seems that es-es was forgotten at the last code update pass).
 - Translated new strings.
 - Fine-tuned others.
 - Cleaned up now-unneeded strings.
2022-09-19 15:42:55 +10:00
Connor McLaughlin
bf1af8995a Merge pull request #2883 from Guwange/update_Japanese_translation
update Japanese translation
2022-09-19 15:42:39 +10:00
Connor McLaughlin
c817030263 CMake: Add missing find_package(ECM) for NoGUI/Wayland 2022-09-19 15:41:37 +10:00
Dolphin
d8d521e292 update Japanese translation 2022-09-19 13:13:15 +09:00
Connor McLaughlin
3dcd901885 MemoryCardImage: Support importing mem/psx and a few other formats
Untested.
2022-09-18 19:39:57 +10:00
Connor McLaughlin
aee8163317 Achievements: Drain outstanding requests when switching games
Stops data being lost when loading state due to data not being
downloaded yet.
2022-09-18 13:24:55 +10:00
Connor McLaughlin
d9722516c3 GameList: Handle non-extension-suffixed urls based on content type 2022-09-18 13:24:55 +10:00
Connor McLaughlin
cc0127d5ed Merge pull request #2881 from andercard0/patch-2
Atualização Português do Brasil
2022-09-18 12:12:48 +10:00
Connor McLaughlin
a062cc4706 VulkanHostDisplay: Fix uploading of strided textures 2022-09-18 12:10:36 +10:00
Connor McLaughlin
1e6abc1d64 OpenGLHostDisplay: Don't assert when reading back last query 2022-09-18 12:02:38 +10:00
Connor McLaughlin
239b585d8c AudioStream: Fix several-second-looping bug on underrun 2022-09-18 11:56:22 +10:00
Anderson Cardoso
0a27fb1489 Atualização Português do Brasil
Update strings to latest.
2022-09-17 17:51:33 -03:00
Connor McLaughlin
ef3ad91ad0 FullscreenUI: Various improvements 2022-09-17 15:56:05 +10:00
Connor McLaughlin
91c8681bed dep/imgui: Round when DPI scaling instead of flooring 2022-09-17 15:56:05 +10:00
Connor McLaughlin
14af29d398 ImGuiManager: Show additional CPU settings 2022-09-17 15:56:05 +10:00
Connor McLaughlin
016eb7c548 Qt: Fix switching CPU execution mode in debug menu 2022-09-17 15:56:05 +10:00
Connor McLaughlin
3e16dbfc37 System: Fix crash when toggling memory exceptions off 2022-09-17 15:56:05 +10:00
Connor McLaughlin
05eecf9944 System: Fix very low underclocks locking up 2022-09-17 15:56:05 +10:00
Connor McLaughlin
436ed10f44 Qt: Fix resetting per-game advanced settings 2022-09-17 15:56:05 +10:00
Connor McLaughlin
6bc4963017 Merge pull request #2880 from zkdpower/master
update simple-chinese language file to latest.
2022-09-17 15:55:48 +10:00
Connor McLaughlin
e682af8141 Merge pull request #2879 from andercard0/master
Atualização Português do Brasil
2022-09-17 15:55:16 +10:00
zkdpower
5d95937b5d update simple-chinese language file to latest. 2022-09-15 10:20:17 +08:00
Anderson 0 Cardoso
df7e5300d1 Atualização Português do Brasil
Update new strings to latest.
2022-09-13 10:10:12 -03:00
Connor McLaughlin
b3d074a480 CI: Disable brotili in Mac curl build 2022-09-13 20:44:47 +10:00
Connor McLaughlin
389143db64 Qt: Add cover downloader 2022-09-13 20:44:45 +10:00
Connor McLaughlin
21b7261dc9 System: Fix turbo getting dropped on renderer switch 2022-09-13 17:50:42 +10:00
Connor McLaughlin
0b3461338c HostDisplay: Use streaming for sw renderer display 2022-09-13 17:50:42 +10:00
Connor McLaughlin
c27026aed5 dep: Add cpuinfo 2022-09-13 17:50:42 +10:00
Connor McLaughlin
bf76780f11 GameList: Add cover downloader 2022-09-13 17:50:42 +10:00
Connor McLaughlin
dde2f6cd68 dep/imgui: Reapply 89eda96cef 2022-09-13 17:50:42 +10:00
Connor McLaughlin
dcce9a4979 Merge pull request #2878 from stuken/db_fix_front_mission
Fix Front Mission db entries.
2022-09-11 21:22:32 +10:00
Stuart Kenny
79a54bc924 Fix Front Mission db entries. 2022-09-11 10:09:57 +01:00
Connor McLaughlin
023900dc77 System: Fix inverted save screenshot colour channels 2022-09-09 13:31:13 +10:00
Connor McLaughlin
aeb3d00002 NoGUI/Win32: Fix text input 2022-09-09 13:31:13 +10:00
zkdpower
b4f2e297e9 Update postprocessingsettingswidget.ui
Fixed an issue where the window of post-processing suddenly jumped to the center after switching filters. (special thanks to user 2048 from ppxclub.com)
2022-09-09 13:31:13 +10:00
Anderson Cardoso
eaa99f6f50 Atualizçaão Português do Brasil (#2876) 2022-09-09 13:27:22 +10:00
shikulja
740b60d833 Update Russian translation (#2875)
* Update Russian translation

* Purge Russian translation
2022-09-09 13:27:02 +10:00
Connor McLaughlin
f2ba596164 Qt: Fix theme change resetting cover scale 2022-09-03 14:20:37 +10:00
Connor McLaughlin
bec0d6e7df HostDisplay: Add GPU usage statistics 2022-09-03 14:17:51 +10:00
Connor McLaughlin
baf9f641ce Qt: Sync translation sources 2022-09-03 13:56:48 +10:00
Ronnie Sahlberg
81cf59bc21 PBP: The PBP extension needs to be upper-case.
EBOOT.PBP is an archive format used for PS1 Classics games on PSP and PS3
(and PS4 and probably also PS5)
On PSP case does not matter since the file will be stored in a FAT
filesystem but on PS3 it does matter as it will be stored in a UFS2
filesystem which is case sensitive.

EBOOT.PBP files from the official PS Store comes wrapped in a PKG container
and installes as EBOOT.PBP uppercase. Thus other tools that create
EBOOT.PBP files also create them in uppercase such as POP-FE and PSX2PSP.

Change the *.pbp file selector filter to *.PBP so that the file selector
will find these files on platforms with case-sensitive filesystems.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2022-09-03 13:56:30 +10:00
Connor McLaughlin
26159981ce FullscreenUI: Add more missing options 2022-09-03 13:39:59 +10:00
Connor McLaughlin
35f272b336 Settings: Set default controller type to AnalogController 2022-08-29 20:34:12 +10:00
Connor McLaughlin
837495d90f Qt: Fix window close in nogui mode 2022-08-29 20:31:29 +10:00
Connor McLaughlin
28363af3ff FullscreenUI: Add more missing options 2022-08-29 19:19:50 +10:00
Connor McLaughlin
c1df77c5f7 Qt: Don't double-click-to-fullscreen when paused 2022-08-29 19:05:41 +10:00
Connor McLaughlin
c90e2f19fc NoGUI: Add ConfirmMessage() to platform 2022-08-29 19:05:09 +10:00
Connor McLaughlin
d2d2e3ae6e FullscreenUI: Add load/save input profile 2022-08-27 16:52:36 +10:00
Connor McLaughlin
8990ade721 ImguiManager: Fix some missed FA glyphs 2022-08-27 16:52:30 +10:00
Connor McLaughlin
3a5bf6d29b System: Move overlay checking to common 2022-08-27 16:52:24 +10:00
Connor McLaughlin
ea8d779962 ImguiManager: Only rasterize font awesome glyphs which we need 2022-08-26 23:30:45 +10:00
Connor McLaughlin
f9bd2db2dc Common/Image: Fix saving 2022-08-26 23:30:45 +10:00
Connor McLaughlin
1aa7facda8 Frontends: Pick best render API based on renderer
Stops unnecessary display recreation in big picture UI.
2022-08-26 23:30:45 +10:00
Connor McLaughlin
215cfd3daf NoGui: Fix renderer switching on Win32 2022-08-26 23:30:45 +10:00
Connor McLaughlin
73185bfb22 CMake: Fix Mac build (#2874) 2022-08-26 13:30:30 +10:00
Connor McLaughlin
cab51c6764 FullscreenUI: Re-enable most previously-missing settings 2022-08-26 01:26:55 +10:00
Connor McLaughlin
cac2714555 GPU/OpenGL: Also disable texture buffer for ANGLE
Hopefully resolves issues with Exynos S22+.
2022-08-26 01:26:13 +10:00
Connor McLaughlin
bfafa95f65 EvdevInputSource: Migrate to new abstractions 2022-08-25 00:55:58 +10:00
Connor McLaughlin
6df7d9acda NoGUI: Migrate to new host abstraction 2022-08-25 00:55:58 +10:00
Connor McLaughlin
7277d29ff9 Host: Move CreateDisplayForAPI() into common code 2022-08-25 00:55:58 +10:00
Connor McLaughlin
4f2da4213d Merge pull request #2873 from zkdpower/master
update simple-chinese translation to latest.
2022-08-22 20:20:01 +10:00
Dolphin
a6bb444713 Update Japanese translation (#2872)
* update base duckstation-qt_ja.ts

* update Japanese translation

* clean up vanished entries in duckstation-qt_ja.ts
2022-08-22 20:19:52 +10:00
Connor McLaughlin
9704b8effd Merge pull request #2871 from andercard0/master
Atualização Português do Brasil
2022-08-22 20:18:57 +10:00
Connor McLaughlin
c320e8cf57 Achievements: Misc fixes 2022-08-22 20:01:04 +10:00
Connor McLaughlin
ccaad874a9 dep/rcheevos: Update to 31f8788 2022-08-22 19:57:05 +10:00
Connor McLaughlin
7bbacd2392 Misc: Remove unused code 2022-08-22 19:55:38 +10:00
Connor McLaughlin
43869bf74c dep: Update RAInterface 2022-08-22 19:33:00 +10:00
Connor McLaughlin
ce5ff4186c Build: Log build type when running cmake 2022-08-22 19:32:15 +10:00
Connor McLaughlin
4c2906fb72 dep/soundtouch: Export main class on Android 2022-08-22 19:31:46 +10:00
zkdpower
e303660dc2 update simple-chinese translation to latest. 2022-08-19 17:30:49 +08:00
Anderson Cardoso
5712ac6795 Atualização Português do Brasil
Updated OSD strings to the latest.
2022-08-18 15:55:43 -03:00
Connor McLaughlin
c7e8233b7b System: Move present skip check to core 2022-08-19 00:07:14 +10:00
Connor McLaughlin
de21ff250c CommonHost: Default fullscreen hotkey to F11 2022-08-19 00:07:10 +10:00
Connor McLaughlin
3019aa320d Scripts: Update cpp path in generate_update_glyph_ranges.py 2022-08-18 23:36:31 +10:00
Connor McLaughlin
7842abfe6e Extras: Remove unused files 2022-08-18 23:35:58 +10:00
Connor McLaughlin
2de402b2db Build: Add missing sln dependency 2022-08-18 23:24:57 +10:00
Connor McLaughlin
9bb73dea04 Qt: Move translation-related functions to their own file 2022-08-18 23:20:03 +10:00
Connor McLaughlin
0f82dc9161 System: Use streaming for compressed save 2022-08-18 23:10:15 +10:00
Connor McLaughlin
0572d0cd4b Common: Add ByteStream implementations for zstd 2022-08-18 23:10:15 +10:00
Connor McLaughlin
759938a5cf System: Support compressing save states 2022-08-18 23:10:15 +10:00
Connor McLaughlin
0154a594c9 ByteStream: Devirtualize where unnecessary 2022-08-18 23:10:15 +10:00
Connor McLaughlin
c66a9f117d System: Don't empty buffers on state load 2022-08-18 23:10:15 +10:00
Connor McLaughlin
fc770c83e8 dep: Add zstd 2022-08-18 23:10:15 +10:00
Connor McLaughlin
60b95830cd Merge pull request #2867 from Guwange/fix_notification_font_issue
fix AchievementSummary/Notification font issue for ja/zh-cn
2022-08-18 23:09:48 +10:00
Dolphin
0d03aa2b45 generate GlyphRanges for ja/zh-cn based on *.ts files 2022-08-18 14:25:44 +09:00
Dolphin
01f0c1ff3d fix OSD message about ChallengeMode to be translatable 2022-08-18 00:54:08 +09:00
Dolphin
ff09edf3d7 fix AchievementSummary/Notification font issue for ja/zh-cn 2022-08-18 00:54:08 +09:00
Connor McLaughlin
fe67bea19a Scripts: Remove now-unused scripts 2022-08-17 17:35:19 +10:00
Connor McLaughlin
5e73242d66 Merge pull request #2868 from andercard0/master
Update Brazilian Portugese localization
2022-08-16 21:24:23 +10:00
Connor McLaughlin
86cba1e04d System: Fix present skip getting activated on unpause
When using vsync+sync to host refresh+optimal frame pacing.
2022-08-16 21:23:16 +10:00
Connor McLaughlin
2703880d69 GameList: Fix building on 32-bit ARM 2022-08-16 21:22:59 +10:00
Anderson 0 Cardoso
626c1353a0 Update Portugese Locales
Fix missing cheevos description.
2022-08-15 16:24:47 -03:00
Connor McLaughlin
16d15f5c65 InputManager: Don't load bindings for inactive multitap ports 2022-08-16 00:05:46 +10:00
Connor McLaughlin
c656f5cbd7 InputManager: Fix parsing sensor/accelerometer binding 2022-08-16 00:05:46 +10:00
Connor McLaughlin
e9126aeeb8 Common: Add SHA1Digest 2022-08-16 00:05:46 +10:00
Connor McLaughlin
3abf1df362 System: Fix volume after toggling fast forward 2022-08-15 17:23:34 +10:00
Connor McLaughlin
5b2c18e27c SPU: Convert to namespace 2022-08-15 17:22:23 +10:00
Connor McLaughlin
6c69cf33c2 System: Fix loading states with different media path 2022-08-15 17:14:34 +10:00
Anderson Cardoso
8de3e65b92 Atualização Português do Brasil (#2865)
* Update Pt-br

Updated missing strings to latest.

* Update duckstation-qt_pt-br.ts

* Portuguese translation Update

Updated more missing strings to latest.

* Atualização Português do Brasil

Tradução atualizada para última versão.

* Update Turkish language

Update Turkish language to its latest version, validated by native speaker!
2022-08-15 17:14:18 +10:00
Connor McLaughlin
df1affe341 Merge pull request #2866 from zkdpower/master
update the simple-chinese language file to latest.
2022-08-15 17:14:03 +10:00
zkdpower
a0f346596d update the simple-chinese language file to latest. 2022-08-11 11:09:42 +08:00
Connor McLaughlin
4652c5faf1 Update README.md 2022-08-10 19:02:46 +10:00
Connor McLaughlin
68866f3174 CMake: Disable nogui by default
Not interested in moving it over to the new interface, and Qt can run
the big picture UI anyway.
2022-08-10 18:16:30 +10:00
Connor McLaughlin
4025350457 dep/cubeb: Fix building without doxygen installed 2022-08-10 18:14:59 +10:00
Connor McLaughlin
2842167184 scmversion: Fix generation on Linux 2022-08-10 17:59:13 +10:00
Connor McLaughlin
a5585f047c AppImage: Fix launching relative paths 2022-08-10 17:54:34 +10:00
Connor McLaughlin
819b27a1a1 Merge pull request #2864 from zkdpower/master
update simple-chinese language file to latest.
2022-08-10 17:50:32 +10:00
Connor McLaughlin
e2ecfa64e9 IniSettingsInterface: Make writes atomic
Fixes potential settings corruption if we crash while saving.
2022-08-10 17:48:35 +10:00
Connor McLaughlin
1db24e8014 IniSettingsInterface: Prevent multiple threads loading/saving at once 2022-08-10 17:26:52 +10:00
Connor McLaughlin
7134af509c Qt: Redraw window after setting changes when paused 2022-08-10 17:08:59 +10:00
Connor McLaughlin
4688277987 SwapChain: Reduce buffer count from 3 to 2 2022-08-10 17:08:59 +10:00
Connor McLaughlin
a5f18ae325 InputManager: Fix macros not being copied in profile 2022-08-10 17:08:59 +10:00
Connor McLaughlin
795ddee79c Qt: Fix relative mode for PSMouse 2022-08-10 17:08:59 +10:00
Connor McLaughlin
ddbe28830e Qt: Fix incorrect mouse button event being fired
Fixes left click bindings.
2022-08-10 17:08:59 +10:00
Connor McLaughlin
f3ec05f1ba Qt: Add missing binding UI for PS Mouse 2022-08-10 17:08:59 +10:00
zkdpower
bdd42c7855 update simple-chinese language file to latest. 2022-08-10 14:14:34 +08:00
Connor McLaughlin
ed3344c4ef Build: Add dependency on cubeb for frontend-common 2022-08-10 15:54:13 +10:00
Connor McLaughlin
f5495adb7d Qt: Don't set working directory on startup
Not needed now we have relative paths for cards etc.
2022-08-10 15:23:23 +10:00
Connor McLaughlin
4faa49d42c System: Fix framerate spike after pausing in debugger 2022-08-10 15:19:15 +10:00
Connor McLaughlin
916900be5d Misc: More warning fixes 2022-08-10 14:33:31 +10:00
shikulja
0f198cbe3a Update Russian translation (#2861)
* Update Russian translation

* Purge Russian translation
2022-08-10 13:44:52 +10:00
Connor McLaughlin
fedff65700 Merge pull request #2862 from zkdpower/master
update the simple-chinese language file to latest.
2022-08-10 13:44:42 +10:00
Anderson Cardoso
c199918bc9 Portuguese translation Update (#2863)
* Update Pt-br

Updated missing strings to latest.

* Update duckstation-qt_pt-br.ts

* Portuguese translation Update

Updated more missing strings to latest.
2022-08-10 13:44:25 +10:00
Connor McLaughlin
1fb075adf9 dep/soundtouch: Disable exceptions 2022-08-10 13:41:13 +10:00
Connor McLaughlin
58cc3efa7f vsprops: Simplify conditions 2022-08-10 13:41:13 +10:00
Connor McLaughlin
99bd02a2c5 CI: Enable GL renderer on Mac builds
Work around a possible bug in MoltenVK until I get time to investigate
it.
2022-08-10 13:41:13 +10:00
Connor McLaughlin
477bb3d554 Misc: Clean up a few warnings 2022-08-10 13:41:13 +10:00
Connor McLaughlin
c3da236f92 System: Preparations for per-game controller settings 2022-08-10 13:09:48 +10:00
Connor McLaughlin
54c2447ff3 System: Rework some throttler/vsync logic 2022-08-10 13:09:32 +10:00
Connor McLaughlin
b698ff1fff Common: Add build_timestamp.h 2022-08-10 13:05:52 +10:00
Connor McLaughlin
7be1ad0289 FullscreenUI: Move resources and add lightweight Android version 2022-08-10 13:05:28 +10:00
Connor McLaughlin
a35e1b7a25 Achievements: Fix requests being sent when not logged in 2022-08-10 13:04:20 +10:00
Connor McLaughlin
6aa2e9017b GameDatabase: Fix cache not invalidating when out-of-date 2022-08-10 13:03:53 +10:00
Connor McLaughlin
a017806c6e GameList: Fix title of files not in database 2022-08-10 13:03:40 +10:00
Connor McLaughlin
5ac9c3f022 Controller: Add multiplier/format to settings 2022-08-10 13:03:15 +10:00
Connor McLaughlin
ae0d60fcd8 Timer: Spin for last 1ms on non-windows too 2022-08-10 13:02:23 +10:00
Connor McLaughlin
73a80d3a1d scmversion: Fix generation on Macs 2022-08-07 01:31:24 +10:00
Connor McLaughlin
b581cc4777 Vulkan/SwapChain: Fix crash on fullscreen with MoltenVK 2022-08-07 01:31:24 +10:00
Connor McLaughlin
093979a65a Build: Disable mmap fastmem for Apple Silicon
It uses 16K pages, which means we'd also have to protect at 16K
granularity... which might be okay, but there's probably going to be
more faults due to code/data in the same page, which negates much of the
benefit.
2022-08-07 01:31:24 +10:00
zkdpower
64ed6c52ac update the simple-chinese language file to latest. 2022-08-06 14:47:06 +08:00
Connor McLaughlin
c614476a60 Qt: Fix resetting controller type-specific settings 2022-08-06 00:10:00 +10:00
Connor McLaughlin
3cc020069b dep/cubeb: Linux build fix 2022-08-05 22:02:00 +10:00
Connor McLaughlin
a37c330f4b Merge pull request #2859 from zkdpower/master
update simple-chinese language file to latest.
2022-08-05 21:50:27 +10:00
Anderson_Cardoso
a8cdc288b8 Portuguese translation Update (#2858)
* Update Pt-br

Updated missing strings to latest.

* Update duckstation-qt_pt-br.ts
2022-08-05 21:50:08 +10:00
Connor McLaughlin
8776bfe46d Qt: Move controller setting popups into dialog 2022-08-05 21:49:13 +10:00
zkdpower
56a2199dfb update simple-chinese language file to latest. 2022-08-05 19:16:27 +08:00
Connor McLaughlin
8d50ebe538 Qt: Support per-game setting of spinboxes 2022-08-05 20:48:39 +10:00
Connor McLaughlin
1109a81b8a InputManager: Fix unchangable input while paused/frame stepping 2022-08-05 18:14:38 +10:00
Connor McLaughlin
1289064316 Settings: Drop audio sync option
Not relevant since time stretching was added.
2022-08-05 17:57:47 +10:00
Connor McLaughlin
57c1ca97f7 Qt: Hook up audio driver selection 2022-08-05 17:50:28 +10:00
Connor McLaughlin
609b050676 dep/cubeb: Add cubeb_get_backend_names() 2022-08-05 17:50:18 +10:00
Connor McLaughlin
8f45bf7f27 dep/cubeb: Update to dc511c6 2022-08-05 17:43:27 +10:00
Connor McLaughlin
06ecc50797 System: Fix CPU usage not showing for sw-renderer-for-readbacks 2022-08-05 17:17:29 +10:00
Connor McLaughlin
8f314c8d49 System: Fix vsync resetting on pause and fast forward on boot 2022-08-05 17:09:44 +10:00
Connor McLaughlin
fd3de15589 ImGuiManager: Include renderer in enhancement info 2022-08-05 17:09:25 +10:00
Connor McLaughlin
589785f8a0 System: Don't print whole path in save OSD messages 2022-08-05 17:09:02 +10:00
Connor McLaughlin
6bf0ad789e fixup! Misc: Necessary emucore changes for Android 2022-08-05 17:07:07 +10:00
Connor McLaughlin
523297c60e System: Fix querying invalid handle on boot 2022-08-05 17:06:50 +10:00
Connor McLaughlin
9c3e4c78c8 System: Fix match window aspect ratio not working on startup 2022-08-05 17:06:02 +10:00
Connor McLaughlin
25d2148ae4 Misc: Necessary emucore changes for Android 2022-08-05 17:05:21 +10:00
Connor McLaughlin
bdb486ccaa Settings: Fix build without cubeb 2022-08-04 21:39:15 +10:00
Connor McLaughlin
31a17cd3c6 FrontendCommon: Remove SDLInitializer
Not needed anymore.
2022-08-04 21:35:32 +10:00
Connor McLaughlin
ea65c0970c FrontendCommon: Drop SDL2 audio output 2022-08-04 21:34:16 +10:00
Connor McLaughlin
679f1a51db CommonHost: Fix volume hotkeys 2022-08-04 21:20:26 +10:00
Connor McLaughlin
49b4e1f0a6 Qt: Fix crash on startup with autoboot 2022-08-04 21:09:07 +10:00
Connor McLaughlin
d8d18d49eb Merge pull request #2855 from zkdpower/master
update simple-chinese language file.
2022-08-04 21:08:52 +10:00
Connor McLaughlin
e91ec23e84 Merge pull request #2856 from Guwange/fix_translation_context_guncon
Fix translation context for GunCon
2022-08-04 21:08:43 +10:00
Connor McLaughlin
a355d7df3f Merge pull request #2857 from Guwange/fix_translation_context_analog_joystick
fix translation context for AnalogJoystick
2022-08-04 21:08:34 +10:00
Dolphin
44bf0ef8cb fix translation context for AnalogJoystick 2022-08-04 01:10:24 +09:00
Dolphin
c0626f0535 Fix translation context for GunCon 2022-08-04 00:02:19 +09:00
zkdpower
0299fc4dd0 update simple-chinese language file. 2022-08-03 17:10:36 +08:00
Connor McLaughlin
efa4f5333b Merge pull request #2853 from stenzek/macos-universal-binary
CI: Build universal binaries for MacOS
2022-08-01 23:08:13 +10:00
Connor McLaughlin
ca1512f47a Vulkan/Loader: Prioritize system libvulkan dylib, fallback to MoltenVK 2022-08-01 23:07:40 +10:00
Connor McLaughlin
e1383d15aa CDROM: Fix crash when changing readahead sectors 2022-08-01 23:07:40 +10:00
Connor McLaughlin
17e554498f Merge pull request #2854 from CookiePLMonster/ram-export
Bus: Add RAM exports for external debugger usage
2022-07-31 19:47:23 +10:00
Silent
c98e0bd096 Bus: Added RAM, RAM_SIZE and RAM_MASK exports for external debugger usage
Useful e.g. for Cheat Engine.
2022-07-31 10:43:26 +02:00
Connor McLaughlin
571a773b29 FileSystem: Fix build failure 2022-07-31 17:42:58 +10:00
Anderson_Cardoso
e2af9aa0ca Updated localization to latest (#2850)
* Updated localization to latest

Atualização Português do Brasil para versão mais atual.

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts
2022-07-31 17:38:37 +10:00
Connor McLaughlin
f7a4a16f07 Merge pull request #2851 from zkdpower/master
update simple-chinese language file to latest.
2022-07-31 17:38:27 +10:00
Connor McLaughlin
97d5d659d3 FileSystem: Fix zeros getting stripped in path 2022-07-31 17:37:21 +10:00
Connor McLaughlin
3505ca26e0 SaveStateSelectorUI: Fix loading/saving without popup 2022-07-31 17:33:03 +10:00
Connor McLaughlin
40a485326a CI: Build universal binaries for MacOS 2022-07-31 16:59:06 +10:00
Connor McLaughlin
20e2c39c0d CI: Self-sign Mac builds 2022-07-31 16:57:14 +10:00
Connor McLaughlin
d674014e30 CMake: Enable cross-compiling for macos arm64 on x86 2022-07-31 16:57:14 +10:00
Connor McLaughlin
4f5722c932 AudioStream: Fix compiling with clang/arm64 2022-07-31 16:38:45 +10:00
Connor McLaughlin
0006c54c46 Build: Add Mac dependencies and fix packaging 2022-07-31 16:00:37 +10:00
Connor McLaughlin
a899ca88f2 Build: Make OpenGL/Vulkan renderers optional
And disabled on Windows/arm64.
2022-07-31 01:14:28 +10:00
Connor McLaughlin
cb127b6412 Common: Remove Event 2022-07-30 21:55:12 +10:00
Connor McLaughlin
eb166220b1 GPU/SW: Replace event with semaphore 2022-07-30 21:49:56 +10:00
Connor McLaughlin
89659db7ee Path: Unicode handling and tests for SanitizeFileName 2022-07-30 21:46:14 +10:00
zkdpower
9d855b0ea8 update simple-chinese language file to latest.
update simple-chinese language file to latest.
2022-07-30 13:51:43 +08:00
Connor McLaughlin
12875cbcac D3D12/StagingTexture: Fix map persisting through resize 2022-07-30 12:58:20 +10:00
Connor McLaughlin
a48ee3282a FullscreenUI: Re-enable cheat list/toggle analog 2022-07-30 12:58:03 +10:00
Connor McLaughlin
eb569df025 GameList: Fix setting covers via right click 2022-07-30 00:47:49 +10:00
Connor McLaughlin
b074c0d1ee System: Make inter-frame sleep slightly more precise 2022-07-30 00:45:26 +10:00
Connor McLaughlin
66caaf6103 AudioStream: Fix null output 2022-07-29 22:39:38 +10:00
Connor McLaughlin
25b17f1422 FullscreenUI: Add new audio options 2022-07-29 22:30:02 +10:00
Connor McLaughlin
79c401740c FullscreenUI: Fix changing per-game settings not updating 2022-07-29 22:20:07 +10:00
Connor McLaughlin
d012f65d4f AudioStream: Fix possible NaN in forced tempo update 2022-07-29 22:16:22 +10:00
Connor McLaughlin
be5b979713 AudioStream: Make speed changes less poppy 2022-07-29 21:16:02 +10:00
Connor McLaughlin
f6ff7e48c1 Build: Fix compiling for arm64/linux 2022-07-28 22:38:08 +10:00
Connor McLaughlin
1625908847 dep: Remove libsamplerate 2022-07-28 22:10:47 +10:00
Connor McLaughlin
68b5dd869c SPU: Add time stretched audio output 2022-07-28 22:10:47 +10:00
Connor McLaughlin
f54e32ff01 dep: Add soundtouch 2022-07-28 22:10:47 +10:00
Connor McLaughlin
97506a811e ImGuiManager: Fix default OSD scale 2022-07-28 22:10:47 +10:00
Connor McLaughlin
a461ba8be6 System: Update speed limiter on boot 2022-07-28 22:10:46 +10:00
Connor McLaughlin
6b8b08ef61 System: Fix invalid memory read in SW thread stats 2022-07-28 22:10:46 +10:00
zkdpower
5ad268f449 Update Simple-Chinese Translation to latest. (#2843)
* Update Simple-Chinese language file to latest?

Update Simple-Chinese language file to latest?

* Delete duckstation-qt_zh-cn.qm

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.
2022-07-26 22:04:28 +10:00
Connor McLaughlin
560df7e06d Qt: Fix hide mouse cursor in fullscreen 2022-07-26 22:02:16 +10:00
Connor McLaughlin
6386004b2c FullscreenUI: Fix incorrect vsync state on unpause 2022-07-26 21:46:18 +10:00
Connor McLaughlin
c2f4b7e7b8 CDROM: Only apply extra remove delay on disc swap 2022-07-26 20:14:45 +10:00
Connor McLaughlin
13b2cf6b1c WindowInfo: Linux build fix 2022-07-26 20:10:19 +10:00
Connor McLaughlin
1057e42956 CDROM: Add additional time to auto disc swap 2022-07-26 18:52:25 +10:00
Connor McLaughlin
7dcc6512ac Merge pull request #2839 from andercard0/patch-1
Update - Translation
2022-07-26 18:46:22 +10:00
shikulja
3ca3b0b76c Update Russian translation (#2840)
* Update Russian translation

* typo
2022-07-26 18:46:10 +10:00
Connor McLaughlin
b92a42c44e Merge pull request #2842 from Iniquitatis/patch-3
Little improvements to the post-processing tab
2022-07-26 18:45:48 +10:00
Connor McLaughlin
19b358359c Qt: Move recompiler icache to console settings page 2022-07-26 18:42:37 +10:00
Connor McLaughlin
8af4f4f01a Common: ScopeGuard -> ScopedGuard 2022-07-26 18:37:16 +10:00
Connor McLaughlin
13e3f2a179 ContextWGL: Backport pbuffer changes 2022-07-26 18:32:55 +10:00
Connor McLaughlin
4295a70a89 Settings: Fix another typo in path saving 2022-07-26 17:39:52 +10:00
Dominus Iniquitatis
9e2b7c0026 Qt: Add margins to the shader configuration box 2022-07-25 17:18:14 +03:00
Dominus Iniquitatis
a6369c4740 Qt: Remove unnecessary bottom spacing 2022-07-25 17:14:34 +03:00
Connor McLaughlin
0b4c009d5b Settings: Fix some incorrect folder config keys 2022-07-25 22:44:13 +10:00
Connor McLaughlin
418898fe94 Qt: Fix possible cover cache overflow when zooming 2022-07-25 18:50:57 +10:00
Connor McLaughlin
a8f5146010 GameDatabase: Add some missing OSD message keys 2022-07-25 18:06:17 +10:00
Connor McLaughlin
f9846e1e4d Qt: Fix frozen display on exiting game with fsui active 2022-07-25 18:06:17 +10:00
Connor McLaughlin
5cb9ca1b8d CI: Don't enable DRM/KMS on AppImage 2022-07-25 18:06:17 +10:00
Connor McLaughlin
c233a8042f GLContext: Dynamically load wayland-egl 2022-07-25 18:06:17 +10:00
Connor McLaughlin
5d89715b17 CI: Install xlib dev package
Hopefully fix Qt build not having the display accessible in the PNI.
2022-07-25 02:23:26 +10:00
Connor McLaughlin
25c52f97d4 CMake: Include Vulkan headers 2022-07-25 01:06:24 +10:00
Connor McLaughlin
5510f66a12 Qt: Support changing theme without reopening window 2022-07-24 23:29:20 +10:00
Connor McLaughlin
bc49e2f627 Qt: Don't reset theme when changing language 2022-07-24 23:17:22 +10:00
Connor McLaughlin
7e20a79719 AppImage: Glob fix 2022-07-24 23:09:57 +10:00
Connor McLaughlin
78b4c433c3 AppImage: Add more missing libraries 2022-07-24 23:06:30 +10:00
Connor McLaughlin
29a5ac5d80 D3DHostDisplay: Fix starting in exclusive fullscreen 2022-07-24 17:43:56 +10:00
Anderson_Cardoso
9f3679afa0 Update - Translation
Updated localization to latest.
2022-07-23 10:40:37 -03:00
Connor McLaughlin
2d4404c031 Merge pull request #2838 from CookiePLMonster/pause-menu-fixes
FullscreenUI: Untangle Escape button behaviour
2022-07-23 21:40:40 +10:00
Silent
3040ce7bbd FullscreenUI: Untangle Escape button behaviour
Now it doesn't race against Open Pause Menu
2022-07-23 11:38:46 +02:00
Connor McLaughlin
4d89b52d3b Merge pull request #2837 from CookiePLMonster/fixed-negcon
NeGcon: Fix default mappings
2022-07-23 18:56:37 +10:00
Silent
bea9fe4b00 NeGcon: Fix default mappings
I is typically used to "proceed" or "accelerate",
and that is better suited for R2 than L2.
2022-07-23 10:54:54 +02:00
Connor McLaughlin
e84f38f466 Qt: Fix builtin post shaders 2022-07-23 18:49:18 +10:00
Connor McLaughlin
322c0c4c74 Qt: Fix controller defaults resetting some system settings 2022-07-23 18:37:47 +10:00
Connor McLaughlin
f07a6c243d FullscreenUI: Make version text less ugly 2022-07-23 13:59:59 +10:00
Connor McLaughlin
fc40397818 GPU: Don't set empty post chain 2022-07-23 13:55:09 +10:00
Connor McLaughlin
9b22f0564f Misc: Remove backported license text
For anyone trying to start drama, I have copyright over this code and
never signed a CLA, therefore can relicense it how I see fit (in this
case is no license, i.e. no rights, although the entire DuckStation as
is currently distributed is GPLv3).
2022-07-23 13:55:09 +10:00
Connor McLaughlin
be03998be0 System: Fix title not showing for non-database discs 2022-07-23 13:55:09 +10:00
Connor McLaughlin
cac9c3fe04 CommonHost: Default escape to opening pause menu 2022-07-23 13:55:09 +10:00
Connor McLaughlin
a1edddc59d CDROM: Revamp/improve preload image procedure 2022-07-23 13:55:09 +10:00
Connor McLaughlin
8d7fdae683 CDImagePPF: Precache underlying image when requested 2022-07-23 13:55:09 +10:00
Connor McLaughlin
65991899eb InputManager: Fix default value of SDL input source 2022-07-23 13:55:09 +10:00
Connor McLaughlin
11c0b7467b ImGuiManager: Fix OSD drawing under fsui 2022-07-23 13:55:08 +10:00
shikulja
6c8bcad444 Update Russian translation (#2835)
* Update Russian translation

* Update Russian translation

Cleaning and updating

* Delete clean_and_updt.bat

* Update duckstation-qt_ru.ts

* typo
2022-07-23 13:41:44 +10:00
Anderson_Cardoso
982c9ff40b Update - Portuguese Brazilian localization (#2834)
* Update 

Update strings to latest!

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts
2022-07-23 13:41:32 +10:00
Connor McLaughlin
0ba623b392 Qt: Fix crash opening game settings 2022-07-23 01:49:53 +10:00
Connor McLaughlin
7c2f335228 Qt: Fix not auto-switching back to game on unpause 2022-07-23 01:34:52 +10:00
Connor McLaughlin
a5f5be1a60 Qt: Fix directory setting changes 2022-07-23 01:28:19 +10:00
Connor McLaughlin
78bddd7fe9 Achievements: Crash fix on error 2022-07-23 00:52:03 +10:00
Connor McLaughlin
68121c0f6b Qt: Fix rendering at unthrottled framerate while paused 2022-07-23 00:41:36 +10:00
Connor McLaughlin
667726bbb3 Qt: Make general settings overridable per-game 2022-07-23 00:16:28 +10:00
Connor McLaughlin
75b4891f78 Qt: Fix Apply Game Settings option 2022-07-23 00:13:55 +10:00
Connor McLaughlin
c90824f8e9 Qt: Fix incorrect directories on Linux 2022-07-23 00:01:47 +10:00
Connor McLaughlin
23ea7b92bc Qt: Fix saved language setting 2022-07-22 23:48:22 +10:00
Connor McLaughlin
6e5b9c8f33 Qt: Simplify toolbar save/restore 2022-07-22 23:38:23 +10:00
Connor McLaughlin
91fcb56148 Qt: Fix crash on scanning empty directory 2022-07-22 23:33:59 +10:00
Connor McLaughlin
701780e2ef Qt: Regression fixes 2022-07-22 22:53:06 +10:00
Connor McLaughlin
7e52c01b35 CI: Fix appimage not being included in release 2022-07-22 22:51:22 +10:00
Connor McLaughlin
853e9a8a6a Qt: Fix updater 2022-07-22 21:51:00 +10:00
Connor McLaughlin
0590a6098d CI: Fix up Linux/Mac build and disable UWP (for now) 2022-07-22 21:20:16 +10:00
Connor McLaughlin
b42b5501f6 UI: Massive revamp, new features and improvements 2022-07-22 21:19:54 +10:00
Connor McLaughlin
3fb61865e5 dep/rcheevos: Update to 0181d02 2022-07-21 17:29:58 +10:00
Connor McLaughlin
af91fcf195 Backport more common classes 2022-07-21 17:29:58 +10:00
Connor McLaughlin
f6b3652ae6 Add MemorySettingsInterface 2022-07-21 17:29:58 +10:00
Connor McLaughlin
462eb2c155 Add Host/HostSettings 2022-07-21 17:29:58 +10:00
Connor McLaughlin
6a6ab6529a Backport SettingsInterface 2022-07-21 17:29:58 +10:00
Connor McLaughlin
0c0bd4c995 dep: Update imgui to v1.88 2022-07-21 17:29:58 +10:00
Connor McLaughlin
b7fbde31a7 Move utility classes from common to own static lib 2022-07-21 17:29:58 +10:00
Connor McLaughlin
d2ca454576 Sync filesystem.h/path.h 2022-07-21 17:29:57 +10:00
Connor McLaughlin
f89529015c dep: Move Vulkan loader to common 2022-07-21 17:29:57 +10:00
Connor McLaughlin
fd3507c16d Core: Replace Timestamp usage with fmt 2022-07-21 17:29:57 +10:00
Connor McLaughlin
b5bf3593c4 ByteStream: Move routines from FileSystem to ByteStream 2022-07-21 17:29:57 +10:00
Connor McLaughlin
d81e156a29 dep: Add build config for fmt 2022-07-21 17:29:57 +10:00
Connor McLaughlin
830f097aad dep: Add fmt 9.0.0 2022-07-21 17:29:57 +10:00
Connor McLaughlin
b3c3d5d954 Sync string_util.cpp 2022-07-21 17:29:57 +10:00
Connor McLaughlin
97730b56c8 Merge pull request #2832 from wheremyfoodat/dev
Allow .ps-exe suffix for executables.
2022-07-17 02:26:40 +10:00
wheremyfoodat
d959899022 Allow .ps-exe suffix for executables. 2022-07-16 19:05:17 +03:00
Anderson_Cardoso
5ab5070d73 Update read me (#2830)
* Fix table size

Fix para o espaçamento entre a primeira guia da tabela / ícone do CD

* Update - Cheat DB

Update for the cheat DB codes available in Discord made by: Unicorngolash  in between 2020 ~ 2021

* Update Cheats Db

The following has been adde/updated/fixed:

Added
- Grand Theft Auto
- Spyro X Sparx
- Resident Evil

Updated:
- Silent Hill 60 fps patch

* Atualização arquivo leia-me

Atualizado para a última versão!
2022-07-08 23:14:43 +10:00
Connor McLaughlin
82965f741e Overhaul japanese translation (#2829)
* update base duckstation-qt_ja.ts

* add white-space between Japanese and English

* replace zenkaku parenthesis and colon with hankaku

* unify wording (memory card, controller), fix okurigana for assign/load

* overhaul Japanese translation

Co-authored-by: Dolphin <dolphin@torikara.org>
2022-05-20 03:46:02 +10:00
Connor McLaughlin
6f932c29a5 Merge pull request #2828 from CookiePLMonster/keyed-osd
Add keys to more OSD messages
2022-05-13 22:34:32 +10:00
Silent
3a70e4d57d Add keys to more OSD messages:
* Resolution scale
* Multisampling
* Switching software/hardware rendering
* Switching PGXP CPU
* Switching post processing
* Switching widescreen hack
2022-05-09 23:42:28 +02:00
Connor McLaughlin
79397426de Merge pull request #2825 from DCxDemo/master
added simple-flip shader
2022-05-08 20:11:37 +10:00
Anderson_Cardoso
e7f97f938e Update Cheat DB (#2826)
* Fix table size

Fix para o espaçamento entre a primeira guia da tabela / ícone do CD

* Update - Cheat DB

Update for the cheat DB codes available in Discord made by: Unicorngolash  in between 2020 ~ 2021

* Update Cheats Db

The following has been adde/updated/fixed:

Added
- Grand Theft Auto
- Spyro X Sparx
- Resident Evil

Updated:
- Silent Hill 60 fps patch
2022-05-08 20:11:22 +10:00
RaydenX93
2d85a51577 Update duckstation-qt_it.ts (#2827)
* Update duckstation-qt_it.ts

* Update duckstation-qt_it.ts
2022-05-08 20:11:00 +10:00
DCxDemo
e888934c36 added simple-flip shader
added simple-flip shader.
options: flip screen horizontally and vertically
2022-04-25 15:01:49 +03:00
Connor McLaughlin
44d47e898e Merge pull request #2824 from stenzek/raintegration
Cheevos: Add RAIntergration support
2022-04-18 19:32:43 +10:00
Connor McLaughlin
296f613b4e Cheevos: Rework functions into namespace 2022-04-18 19:13:38 +10:00
Connor McLaughlin
9a5ef2d0a2 Cheevos: Add RAIntergration support 2022-04-18 19:13:33 +10:00
Connor McLaughlin
a991bb20c8 Merge pull request #2822 from zkdpower/master
Update Simple-Chinese language file to latest
2022-04-17 18:16:52 +10:00
Connor McLaughlin
d105ea52e1 Merge pull request #2823 from CookiePLMonster/read-reg-cheat-code
Add 5106, 5146, 5186 codes for indirect reads from a register code
2022-04-17 18:16:40 +10:00
Silent
506796a335 Add 5106, 5146, 5186 codes for indirect reads from a register code 2022-04-15 19:04:02 +02:00
zkdpower
04992fdf09 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2022-04-11 22:42:49 +08:00
Connor McLaughlin
8777bb17be Merge pull request #2821 from Guwange/fix_japanese_translation_save_state
fix japanese translation - save state dialog filter, debug window key…
2022-04-10 23:26:37 +10:00
Dolphin
7ba0f85718 fix japanese translation - save state dialog filter, debug window key accelerator 2022-04-10 21:51:26 +09:00
Connor McLaughlin
8b61fb8b58 README: Update VC runtime links to VS2022 2022-04-08 17:51:51 +10:00
Connor McLaughlin
1d9075fa1c Qt: Add es-es locale 2022-04-04 23:31:07 +10:00
Connor McLaughlin
748a75e533 Merge pull request #2818 from andercard0/patch-2
Atualização Português do Brasil
2022-04-04 23:18:51 +10:00
Anderson_Cardoso
6e875b48fb Update Cheat DB (#2819)
* Fix table size

Fix para o espaçamento entre a primeira guia da tabela / ícone do CD

* Update - Cheat DB

Update for the cheat DB codes available in Discord made by: Unicorngolash  in between 2020 ~ 2021
2022-04-04 23:18:43 +10:00
Connor McLaughlin
4652df496b Merge pull request #2820 from IlDucci/spanish-overhaul
Spanish translation overhaul + Addition of es-ES alternative
2022-04-04 23:18:22 +10:00
Anderson_Cardoso
9a314fb086 Atualização Português do Brasil
Update OSD messages string.
2022-04-03 19:02:16 -03:00
Connor McLaughlin
e45c7fd1f7 dep/libchdr: arm64 compile fix on MSVC 2022-04-03 21:38:55 +10:00
Connor McLaughlin
5d097da160 CDImageCHD: Implement precaching 2022-04-03 21:09:36 +10:00
Connor McLaughlin
9ab64ecdb3 CDImage: Add Precache() method 2022-04-03 21:09:36 +10:00
Connor McLaughlin
ec9411c0a7 dep/libchdr: Add chd_precache_progress()
Alternative which reports back as the file is read.
2022-04-03 21:09:36 +10:00
Connor McLaughlin
bceca040d9 dep/libchdr: Remove libFLAC dependency 2022-04-03 21:09:36 +10:00
Connor McLaughlin
6b8486674f dep/libchdr: Update to a03e693 2022-04-03 20:29:44 +10:00
Connor McLaughlin
ef6e18a1b2 Merge pull request #2817 from Guwange/update_fix_japanese_translation
Update fix japanese translation
2022-04-03 01:25:45 +10:00
Dolphin
39a7f6701f fix some japanese translations 2022-04-02 21:28:35 +09:00
Dolphin
fe182a26d0 update japanese translation file 2022-04-02 21:28:35 +09:00
Ronnie Sahlberg
f7a3358b1f pbp: pstitleimg sections are allowed also for single disc games
Multidisc games are stored inside the EBOOT.PBP file as
A)
pstitleimg
psisoimg
psisoimg
...

Single disk games can be stored in two different formats, with or
without a pstitleimg section, i.e. as

B)
pstitleimg
psisoimg

or

C)
psisoimg

Fix a conditional in duckstation that incorrectly flags B) as an error.
These types of EBOOT.PBP files can be created by the pop-fe utility.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2022-03-29 21:36:39 +10:00
Connor McLaughlin
8c6ced6758 Merge pull request #2816 from andercard0/patch-1
Small change (fix)
2022-03-29 21:36:27 +10:00
IlDucci
f9212363d3 Spanish translation overhaul + Addition of es-ES alternative
In its current state, the Spanish translations for Duckstation are a mess of different dialects, multiple translations for the same terms, mistranslations or excessively literal translations, and typos.

It's a shame, because you could feel that the initial translations were done with care, but were muddled with future revisions.

This commit tries to solve all of these and also change the initial decision of the first translator to have an "universal" "neutral" Spanish, as time has proven it's not possible without a dedicated translator who actually wants to have one Spanish language for all Spanish-speakers across the globe.

I'm not going to be that one, so the next option would be to duplicate the Spanish translations into two: one for the Spanish-speaking American people (called "Latin American Spanish", "español de Hispanoamérica", code es-419") and one for the European Spanish speakers (called "Spanish (Spain)", "español de España", code es-ES).

This distinction is used in multiple software applications that managed to have translators for different languages, and should also funnel any future Latin American Spanish and European Spanish translators to the corresponding file.

I have tried to follow as many existing terms and constructions as possible, restoring and/or rewording any phrasal constructions that were disunified by the multiple translators.

Since I have a limited experience with Latin American Spanish, this commit should be sent as a draft for additional revisions. I'm open to stick to having a single Spanish language, but it has to be done RIGHT.

This is an overview of changes across the board:
 - Added missing translations for QT and Android builds.
 - Unified translations between those.
 - Updated the QT file with the latest string values.
 - Massive removal of Title Uppercasing inherited from English in menu strings (the rules set by the Royal Academy of the Spanish Language, or RAE, limit the areas where Title Uppercasing is considered correct in Spanish. Menu names and window header texts are not within those areas).
 - Unified the treatment of users in the Latin American version to formal "ustedeo". This treatment could be modified with additional input.
 - Removed any gendering assumptions from any string directed towards the user (Are you sure...?, changed ¿Está/s seguro...? with ¿Seguro que...?)
 - Naturalization rewrites.
 - Typo corrections.
 - Gender corrections over definitive terms.
 - Adding missing NBSPs after required mathemathical characters or units.
 - Mass replacement of double/single quotes with angled quotes (the ones approved for Spanish).
 - Quoted non-Spanish, non-proper noun English words as dictated by RAE.
 - Removal of unwanted hyphens to join words (Auto-detectar with Detección automática, post-procesamiento with posprocesamiento). In Spanish, hyphens tend to separate, rather than join.
 - Revision of the compound forms, unified depending on Latin American Spanish or European Spanish.
 - Lowercased the first word of a text between parenthesis (Spanish rules dictate that they should be considered a continuation of the phrase, and thus, they should start with lowercase unless it's a proper noun or a word that must be uppercased) and corrected the positions between periods and parentheses.
 - Unified the accentuation rules for the adverb solo/sólo and the demostrative pronouns (este/ese/aquel) by removing all accents in European Spanish (following the RAE's 2010 suggestions) or keeping/adding them for Latin American Spanish (the 2010 rule ended up being a suggestion because while Spain has mostly deprecated those accents, it appears that the Latin American countries have not). To discuss?
 - Tweaked the key shortcuts for the QT menu to minimize duplicates.
 - Terms unified (this list doesn't represent the entirety of the changes):
    - Failed to (Fallo al/Error al): Fallo al
    - Hardcore Mode (Modo Hardcore/Modo Difícil): «hardcore» mode (Foreign non-proper nouns should be quoted, RetroAchievements does not have an official Spanish translation, so the term should be kept in English)
    - Enable/Disable (habilitado/deshabilitado/activado/desactivado/activo/inactivo): habilitado/deshabilitado
    - host (host/anfitrión/sistema): sistema, TO BE DETERMINED AND UNIFIED
    - Signed (numbers; firmados): (números) con signo
    - scan (verb and noun; escanear): buscar/búsqueda
    - Clear (something, like bindings or codes; despejar, limpiar): borrar/quitar
    - requirement (of a system, requisito/requerimento): requisito
    - input (of a controller, control): entrada
    - Threaded X (hilo de X): X multihilo
    - Frame Pacing (frame pacing): duración de fotogramas
    - XX-bit (XX-bit): XX bits (proper form)
    - Widescreen (screens, widescreen hacks; pantalla ancha, pantalla panorámica): pantalla panorámica
    - Antialiasing (anti-aliasing): Antialiasing (considered a proper noun by NVidia, doesn't need that hyphen)
    - hash: «hash» (could be discussed as "sumas de verificación", like on Dolphin)
    - Focus Loss (perder el foco): ir/entrar en segundo plano
    - toggle (verb for hotkeys, activar): alternar (as the key alternates between enabling and disabling the function, while "activate" might sound like it's just the enable part)
    - Rewind (function; retrocediendo, retrocedimiento): rebobinado (to discuss on LATAM Spanish)
    - shader (shader/sombreado): sombreador
    - resume (resumir): reanudar, continuar (resumir is a false friend)
    - Check (verb; chequear/revisar/comprobar): chequear (LATAM Spanish), comprobar (European Spanish)
    - Add (something; añadir/agregar): agregar (LATAM Spanish, to discuss) or añadir (European Spanish)
    - Enter/Input (ingrese, inserte): ingresar (LATAM Spanish) or introducir (European Spanish)
    - mouse (device; mouse/ratón): mouse (LATAM Spanish), ratón (European Spanish)
    - Auto-Detect (Auto-detectar): Detección automática
    - Controller (control): mando (for European Spanish only)
    - run (a game, the emulator; correr): ejecutar, funcionar (for European Spanish only)
2022-03-28 15:01:08 +02:00
Anderson_Cardoso
a3d4c4d648 Small change (fix)
Added tiny fix for table view column "type", when launch Ducko in list mode the type column get a bit squished, I just increased it a bit this number.
2022-03-27 13:15:18 -03:00
Connor McLaughlin
07d331deca Merge pull request #2814 from CookiePLMonster/y2038
Fix a Y2038 bug in UnixTimeToFileTime
2022-03-27 17:47:35 +10:00
Connor McLaughlin
da5513e9eb Merge pull request #2807 from Guwange/fix_gamedb_negcon
GameDB: fix NeGcon typo in some game entries
2022-03-27 17:47:21 +10:00
Connor McLaughlin
a55537ec1b D3D12/Builders: Fix incorrect depth write mask 2022-03-27 17:38:48 +10:00
Connor McLaughlin
3c2d5ae508 dep/vixl: Fix compilation under MSVC2022 2022-03-27 17:38:48 +10:00
Connor McLaughlin
859a156b3c Various build fixes 2022-03-27 17:38:48 +10:00
Connor McLaughlin
3d61e3e379 CI: Switch to windows-2022/VS2022 2022-03-27 17:01:50 +10:00
Connor McLaughlin
4c4e62cee6 dep: Update rcheevos to 0e9eb7c 2022-03-27 16:59:02 +10:00
Connor McLaughlin
a55b5022c7 System: Include cheevos state in save states 2022-03-27 16:59:02 +10:00
Connor McLaughlin
584525cb11 Cheevos: Move to core 2022-03-27 16:59:02 +10:00
Connor McLaughlin
c43df29abc ImGuiFullscreen: Move to core 2022-03-27 16:59:02 +10:00
Connor McLaughlin
fd76f437b3 Core: Purge WITH_IMGUI define 2022-03-27 16:59:02 +10:00
Connor McLaughlin
d5128a5ea9 HTTPDownloader: Move to common 2022-03-27 16:59:02 +10:00
Connor McLaughlin
cb51ab7197 Misc: Purge unused definitions 2022-03-27 16:59:02 +10:00
Connor McLaughlin
ad26d352d3 vsprops: Update to VS2022 toolchain 2022-03-27 16:59:01 +10:00
Brian Blakely
717ee3103f M3U: Preloading to RAM for single-disc playlists. 2022-03-27 16:58:51 +10:00
Silent
e43f2ddddb Fix a Y2038 bug in UnixTimeToFileTime 2022-03-26 16:49:02 +01:00
Dolphin
4a4b69db35 GameDB: fix NeGcon typo in some game entries 2022-01-22 22:44:54 +09:00
Connor McLaughlin
51041e47f7 Merge pull request #2797 from CookiePLMonster/rcheevos-update
Rcheevos update
2022-01-11 00:26:24 +10:00
Silent
9414f68f51 Add Cheevos::GetAchievementProgressText
Measured achievements formatting is now up to rcheevos,
not DuckStation
2022-01-07 16:59:36 +01:00
Silent
9c91af6dfa Update to rcheevos v10.2.0
Leaderboard rurl hacks are now replaced by proper calls
2022-01-07 16:21:37 +01:00
Connor McLaughlin
46737acecd CPU: Prevent mismatched va_start/va_end in log 2022-01-06 22:47:10 +10:00
Connor McLaughlin
541947c6f8 CPU/CodeCache: Fix currently-invalidated blocks breaking memory states 2022-01-06 22:47:10 +10:00
Connor McLaughlin
30a53fbb3c GameSettings: Disable GPU runahead for Red Asphalt PAL 2022-01-06 22:47:10 +10:00
Connor McLaughlin
8e56bb3f72 Merge pull request #2783 from Calinou/add-issue-forms
Replace existing issue templates with issue forms
2021-12-30 14:47:12 +10:00
Connor McLaughlin
bcce434ab4 Merge pull request #2782 from Calinou/readme-improve-macos-instructions
Improve macOS and Linux build instructions
2021-12-30 14:46:25 +10:00
Connor McLaughlin
a7bb590208 Merge pull request #2784 from Calinou/github-actions-use-ninja
Use Ninja for macOS builds on GitHub Actions
2021-12-30 14:45:12 +10:00
Hugo Locurcio
d13a418d06 Use Ninja for macOS builds on GitHub Actions
Ninja makes for faster builds compared to Make.
2021-12-26 23:39:06 +01:00
Hugo Locurcio
2c1ee9372b Improve macOS and Linux build instructions
- Use CMake's `-B` option to automatically create the build folder
  and avoid the `cd` requirement.
- Use CMake's build tool-agnostic `--build` option to use the same
  build command regardless of whether GNU Make or Ninja is used.
  `--parallel` also ensures that all CPU threads are used by default.
- Mention optional dependency on Ninja for macOS (it's confirmed to work
  there, installed from Homebrew).
- Update Qt macOS path to use the default installation path on a modern
  Homebrew installation. The old path is still mentioned just in case.
- Mention that the generated macOS application bundle may have to be
  manually resigned before it can be run.

The macOS build steps were successfully followed on a 2020 Mac mini
(Apple M1).
2021-12-26 22:51:21 +01:00
Hugo Locurcio
b9841634cd Replace existing issue templates with issue forms
Issue forms provide better guidance when creating issues, especially
for people less familiar with GitHub issue creation.
2021-12-26 22:48:04 +01:00
Connor McLaughlin
bee50481f5 CDImageMDS: Possible fix for multi-track images 2021-12-25 14:28:33 +10:00
Connor McLaughlin
592a591b5f FileSystem: Get rid of trailing nulls in GetWorkingDirectory() 2021-12-25 14:28:33 +10:00
Connor McLaughlin
fa9e50d7c1 HostInterface: Don't disable fastmem for runahead 2021-12-25 14:28:33 +10:00
Connor McLaughlin
25ea24853f HostInterface: Don't disable recompiler for runahead 2021-12-25 14:28:33 +10:00
Connor McLaughlin
4513c7a23d System: Invalidate instead of flushing code cache on memory state 2021-12-25 14:28:33 +10:00
Connor McLaughlin
c440593788 CPU/CodeCache: Add InvalidateAll() method 2021-12-25 14:28:32 +10:00
Connor McLaughlin
fe2062ff9f System: Warning fix 2021-12-25 14:28:32 +10:00
Connor McLaughlin
bbf67ef544 CPU: Warning fix 2021-12-25 14:28:32 +10:00
Connor McLaughlin
59cb7c0343 Merge pull request #2766 from CookiePLMonster/ui-improvements
UI improvements
2021-12-16 20:01:53 +10:00
Silent
5d4622af9a Migrate most dialogs to use QDialogButtonBox 2021-12-13 22:06:05 +01:00
Silent
690fa6ec3c Memory Card Editor: Make fields not editable 2021-12-13 22:06:04 +01:00
Connor McLaughlin
85b49da62a Merge pull request #2752 from BailShamber/master
Make appimage respect "QT_QPA_PLATFORM" env var.
2021-11-30 00:14:09 +10:00
Connor McLaughlin
7141e68e62 Merge pull request #2754 from bslenul/db-mouse-update
Database update for mouse compatible games
2021-11-30 00:13:50 +10:00
bslenul
1af69ff38e Database update for mouse compatible games 2021-11-29 12:29:05 +01:00
BailShamber
14a7ac78ac Makes it safe if somehow the WAYLAND_DISPLAY env var is set but incorrectly.
Inspired by qurious' solution.
2021-11-28 11:27:29 +02:00
BailShamber
7dea8d9043 Make appimage respect "QT_QPA_PLATFORM" env var. 2021-11-28 11:04:36 +02:00
Connor McLaughlin
46f9da97d2 Merge pull request #2749 from bslenul/guncon-update
Update database for GunCon/Justifier games
2021-11-28 11:22:20 +10:00
Risae
ab831daa18 Update chtdb.txt (#2735)
* Update chtdb.txt

Adds the following cheats to Gran Turismo 1 & 2:

Gran Turismo 1:
- 60 FPS (NTSC-U 1.1, NTSC-U 1.0, PAL, JP NTSC-J)
- Simulation timescale in Arcade (NTSC-U 1.1, PAL)

Gran Turismo 2:
- 16:9 Widescreen Hack 2.0 (NTSC-U 1.2, NTSC-U 1.1, PAL, NTSC-J 1.1, NTSC-J 1.0)
- 21:9 Widescreen Hack 2.0 (NTSC-U 1.2, NTSC-U 1.1, PAL, NTSC-J 1.1, NTSC-J 1.0)
- 60 FPS (NTSC-U 1.2, NTSC-U 1.1, PAL, Arcade Disc: JP NTSC-J 1.0, Simulation Disc: JP NTSC-J 1.1, NTSC-J 1.0)
- Metric units code (NTSC-U 1.2, NTSC-U 1.1, PAL)
- Full detail AI cars (NTSC-U 1.1, NTSC-U 1.2, PAL, NTSC-J 1.1, NTSC-J 1.0)
- Slightly higher draw distance (NTSC-U 1.2, NTSC-U 1.1, PAL, NTSC-J 1.1, NTSC-J 1.0)
- Use 8MB RAM for polygon buffers (NTSC-U 1.1, NTSC-U 1.2, PAL, NTSC-J 1.1, JP NTSC-J 1.0)

Credits go to
https://cookieplmonster.github.io/
https://cookieplmonster.github.io/mods/gran-turismo/
https://cookieplmonster.github.io/mods/gran-turismo-2/

* Update chtdb.txt

Added:

";This game currently has no cheats" to some games that didn't have any cheats yet.

HUD & rear view mirror toggle (NTSC-U 1.2, NTSC-U 1.1, PAL, NTSC-J 1.1, NTSC-J 1.0)
Replay cameras in race (NTSC-U 1.1, NTSC-U 1.2, PAL, Arcade Disc: NTSC-J 1.0, Simulation Disc: NTSC-J 1.1, NTSC-J 1.0)
True Endurance ( NTSC-U 1.2, NTSC-U 1.1, PAL, NTSC-J 1.1)

Removed:

Gran Turismo 2 (USA, v1.1)
#Widescreen 16-9 option Better Graphics
#Widescreen 16-9

Gran Turismo 2 (Euro)
#Widescreen 16-9
#Widescreen 16-9 Better Graphics (Optional)

Gran Turismo 2 (Arcade + Gran Turismo Mode) (Japan, Asia)
#Widescreen 16-9 v1.0
#Widescreen 16-9 v1.0 - Better Graphics (Optional)
#Widescreen 16-9 V1.1
#Widescreen 16-9 v1.1 - Better Graphics (Optional)

* Update chtdb.txt

Removed unnecessary line break
2021-11-28 11:22:04 +10:00
bslenul
19f7516b5b Update database for GunCon/Justifier games 2021-11-27 14:26:57 +01:00
shikulja
6eae2c50e2 Update Russian translation (#2747)
* Update Russian translation

New strings, minor adjustments

* Update duckstation-qt_ru.ts

* Update duckstation-qt_ru.ts
2021-11-27 21:14:46 +10:00
Connor McLaughlin
b32012c77d Merge pull request #2746 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-11-27 21:14:31 +10:00
Connor McLaughlin
8e4ce925ee Merge pull request #2745 from andercard0/patch-1
Atualização Português do Brasil
2021-11-27 21:13:58 +10:00
zkdpower
776e077002 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-11-26 13:12:49 +08:00
Anderson_Cardoso
a9913d6c23 Atualização Português do Brasil
Updated file translation to latest.
2021-11-25 23:05:31 -03:00
Connor McLaughlin
d55c86ccd8 HostInterface: Fix Linux build 2021-11-26 11:43:58 +10:00
Connor McLaughlin
0c4c37412b GameDB: Remove split json files
The original intention was to make it easier to edit via github,
but it's more of a pain than helpful.
2021-11-26 11:37:00 +10:00
Connor McLaughlin
43d68dcc01 Merge pull request #2743 from knight-ryu12/gamedb_fix_2
GameDB: Add missing definition
2021-11-26 11:34:43 +10:00
Connor McLaughlin
7c769b1941 CDImageDevice: Don't add out-of-file pregaps to audio tracks 2021-11-26 11:31:59 +10:00
Connor McLaughlin
827048eeda CDImageDevice: Fix printing of track summary 2021-11-26 11:31:59 +10:00
Connor McLaughlin
13f1027f59 Qt: Remove preset buttons from post settings 2021-11-26 11:31:59 +10:00
Connor McLaughlin
61f7e99508 CommonHostInterface: Add speed control hotkeys 2021-11-26 11:31:59 +10:00
Connor McLaughlin
928e492963 HostInterface: Add keys to a bunch of OSD messages 2021-11-26 11:31:59 +10:00
Connor McLaughlin
7522304360 HostInterface: Add keyed OSD messages 2021-11-26 11:31:59 +10:00
Connor McLaughlin
c346dfe8a4 SPU: Drop OOB register warnings to dev level 2021-11-26 11:31:59 +10:00
Chromaryu
23a34cb119 GameDB: Add missing definition 2021-11-25 15:11:12 +09:00
Connor McLaughlin
83a031e22f Merge pull request #2728 from ggrtk/mdec-eob
MDEC: EOB is optional for complete blocks
2021-11-18 14:25:53 +10:00
Albert Liu
1f07ea6ecc MDEC: EOB is optional for complete blocks 2021-11-14 20:46:05 -08:00
Connor McLaughlin
10cf8ef638 GameSettings: Force true color off for SLPS-00078 2021-11-14 23:47:15 +10:00
Connor McLaughlin
acace84bd1 GameDB: Use hash for SLPS-00078 2021-11-14 23:44:26 +10:00
Connor McLaughlin
f982a2a580 Update merged gamedb 2021-11-11 15:36:58 +10:00
Connor McLaughlin
af30d2b0c7 Merge pull request #2722 from knight-ryu12/gamedb_fix
GameDB: Fix ChronoCross Hash
2021-11-11 15:34:30 +10:00
knight-ryu12
adfd79d792 GameDB: Fix ChronoCross Hash 2021-11-11 14:30:36 +09:00
Connor McLaughlin
fbf52b57e8 Qt: Fix save state to file executing in UI thread 2021-11-11 11:48:20 +10:00
Connor McLaughlin
c54c5f1b95 Common/CueParser: Remove redundant check for CATALOG 2021-11-10 13:38:06 +10:00
Connor McLaughlin
a8ca544648 NoGUI: Fix incorrect mask in modifier lookup 2021-11-10 13:37:37 +10:00
Connor McLaughlin
a2223124ad Qt: Correct behavior of sorting in game list model
Turns out Qt inverts it for us.
2021-11-10 13:35:41 +10:00
Connor McLaughlin
fca4a2ec28 Common/FileSystem: Fix a couple of warnings from #2716 2021-11-10 13:18:30 +10:00
Connor McLaughlin
e6741dad9b Common/Timestamp: Use tuple for comparison operators 2021-11-10 13:00:32 +10:00
Connor McLaughlin
c78047c28f Update gamedb with new hashes for colliding games 2021-11-10 12:53:41 +10:00
Connor McLaughlin
13453ee6d8 Merge pull request #2715 from stenzek/pvd-hash
System: Use exe hash plus pvd hash for image hash code
2021-11-10 12:34:55 +10:00
Connor McLaughlin
c3a39a9bba vsprops: Add DynamicLibrary.props 2021-11-10 12:34:37 +10:00
Connor McLaughlin
14eecae680 System: Use exe hash plus pvd hash for image hash code 2021-11-09 12:54:30 +10:00
Connor McLaughlin
a8a0a50af7 ISOReader: Make fields public/accessible 2021-11-09 12:54:07 +10:00
Connor McLaughlin
b157540ec2 Merge pull request #2711 from Dushistov/patch-1
Fix usage of `free` for stack variable
2021-11-08 12:24:38 +10:00
Connor McLaughlin
d7c8a8b797 Merge pull request #2712 from ggrtk/analog-status-byte
AnalogController: Fix legacy rumble conditions and implement status byte toggling
2021-11-08 12:23:38 +10:00
Albert Liu
3273ca36ef AnalogController: Simulate status byte toggling 2021-11-07 12:31:27 -08:00
Albert Liu
ab496ef8fe AnalogController: Don't re-enable legacy rumble on manual toggles 2021-11-07 12:31:27 -08:00
Evgeniy Dushistov
39a9997fd0 Fix usage of free for stack variable
Based on warning from pvs static analyzer (https://habr.com/ru/company/pvs-studio/blog/586700/)
2021-11-07 20:43:41 +03:00
Connor McLaughlin
946481c2aa System: Add a workaround for PSF files with incorrect header 2021-11-06 10:48:23 +10:00
Connor McLaughlin
0adbfcbb1f Qt: Add missing <future> include to gamepropertiesdialog.cpp 2021-11-06 10:30:07 +10:00
Connor McLaughlin
ec31690587 CDROM: Fix incorrect delay on setmode while shell opening 2021-11-05 15:19:23 +10:00
Connor McLaughlin
425dee2f0b CDImage: Fix tracks not getting brought across in CopyTOC() 2021-11-05 15:19:21 +10:00
Connor McLaughlin
643dcb0a39 Update bug_report.md 2021-11-05 15:19:16 +10:00
Connor McLaughlin
2e85d0fcc3 Qt: Update Japanese translation by mikakunin 2021-11-05 15:16:43 +10:00
Connor McLaughlin
639260b41a Merge pull request #2674 from andercard0/patch-2
Update Turkish
2021-11-02 14:21:18 +10:00
Connor McLaughlin
ae92ce8405 Update game database with NeGcon entries from PiperCalls 2021-11-02 11:25:54 +10:00
Connor McLaughlin
d7b913288d Update SDL game controller database 2021-11-02 11:25:54 +10:00
Connor McLaughlin
8728e4d43e README: Remove Android beta link 2021-11-02 11:25:53 +10:00
Connor McLaughlin
e735746627 Merge pull request #2688 from CookiePLMonster/fix-absolute-cuesheets
CDImageCueSheet: Fix cuesheets with absolute paths
2021-11-02 11:02:56 +10:00
Silent
b7f73a42be CDImageCueSheet: Fix cuesheets with absolute paths 2021-10-30 11:17:41 +02:00
Connor McLaughlin
287b1e1abc D3D12HostDisplay: IDXGIDevice is not a parent of ID3D12Device 2021-10-29 14:00:30 +10:00
Connor McLaughlin
c8ff143d9b UWP: Fix building (again) 2021-10-29 14:00:30 +10:00
Connor McLaughlin
b1c738454f Merge pull request #2673 from andercard0/patch-1
Atualização Português do Brasil
2021-10-29 13:17:57 +10:00
Connor McLaughlin
892a137a0d Merge pull request #2681 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-10-29 13:17:46 +10:00
Connor McLaughlin
6bb7672168 Merge pull request #2683 from CookiePLMonster/fix-is-valid-psexe-header
Fixup IsValidPSExeHeader
2021-10-29 13:17:35 +10:00
Connor McLaughlin
25f69e7f8c CDROM: Special case immediate GetlocP after play/read before int
Fixes CDDA in Mad Panic Coaster.
2021-10-29 13:16:42 +10:00
Connor McLaughlin
58f05498e5 Common/ProgressCallback: Elide some redundant updates 2021-10-29 13:16:42 +10:00
Silent
bcbe93a462 Fixup IsValidPSExeHeader 2021-10-28 19:16:55 +02:00
zkdpower
d8e2fac278 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-10-27 18:57:55 +08:00
Anderson_Cardoso
a60e9cfd42 Update Turkish
Update localization to the latest, revised by a native speaker.
2021-10-25 09:46:47 -03:00
Anderson_Cardoso
34ace7dae8 Atualização Português do Brasil
Update localization to the latest.
2021-10-25 08:53:58 -03:00
Connor McLaughlin
48ddebd82e UWP: Fix possible crash on startup in SizeChanged 2021-10-25 18:42:08 +10:00
Connor McLaughlin
ccf5006bc8 Merge pull request #2668 from CookiePLMonster/dump-verification
Implement image verification
2021-10-25 17:30:20 +10:00
Connor McLaughlin
5cef81b2a0 GPU: Reduce log level of IRQ request command 2021-10-25 17:27:41 +10:00
Connor McLaughlin
ff34fb22e5 CommonHostInterface: Save/load autofire to input profiles 2021-10-25 17:27:41 +10:00
Connor McLaughlin
5367a63826 Update README.md 2021-10-25 17:27:41 +10:00
Connor McLaughlin
3b66acd395 CommonHostInterface: Remove unused variable in DrawEnhancementsOverlay 2021-10-25 17:27:41 +10:00
Connor McLaughlin
355d7664d2 System: Fix unused variable warning 2021-10-25 17:27:41 +10:00
Connor McLaughlin
48e55ab87b MDEC: Fix warnings in gcc debug build 2021-10-25 17:27:41 +10:00
Connor McLaughlin
f0c5b049bb DRMDisplay: Should include common types not core types 2021-10-25 17:27:41 +10:00
Connor McLaughlin
2194004662 CDImageDevice: Fix gcc warning 2021-10-25 17:15:56 +10:00
Connor McLaughlin
45a2e0df5c Update compatibility list 2021-10-25 17:15:56 +10:00
Connor McLaughlin
67b4a46895 Merge pull request #2672 from stenzek/build-time-version
CI: Set version in rc files at build time
2021-10-25 17:03:33 +10:00
Connor McLaughlin
134f7d6e54 CI: Set version in rc files at build time 2021-10-25 17:03:05 +10:00
Connor McLaughlin
8e06f1b94d Merge pull request #2669 from gameblabla/armored_core_sio_fix
Set DSRINPUTLEVEL and CTSINPUTLEVEL to true for Armored Core
2021-10-25 16:44:02 +10:00
Connor McLaughlin
e6b6ff6325 Revert "Add version number to the Windows executable"
This reverts commit b0cd59e5fb.
2021-10-25 16:41:00 +10:00
gameblabla
6a005f0a4e Set DSRINPUTLEVEL and CTSINPUTLEVEL to true for Armored Core
Without this, Armored Core will assume that a link cable is plugged in
and make the local multiplayer unavailable.
In the future, we should have proper link support but for now,
let's just do this instead to at least allow people to play it locally.

Many thanks to Albert Liu for the proper fix :
previously, we were just reporting 0xFFFFFF for SIO STAT.

Co-authored-by: Albert Liu <45282415+ggrtk@users.noreply.github.com>
2021-10-24 12:09:59 +02:00
Silent
85ea9a629a Add image verification
"Verify Dump" is now removed, now both hash calculation
and image verification are done in one step.
After a successful hash calculation, the button is replaced with
a "Search on Redump.org" button that opens a web browser
on Redump's search page.
2021-10-23 22:19:39 +02:00
Silent
e38ee512f3 Fix progress bar not starting from 0 when verifying the data track 2021-10-23 21:46:57 +02:00
Silent
764c6e4a72 Rewrote gamedb with revisional hashes 2021-10-23 21:46:56 +02:00
Connor McLaughlin
96f4fdf8d8 CI: Fix incorrect operator 2021-10-20 02:07:17 +10:00
Connor McLaughlin
98a1d4fe99 Merge pull request #2658 from qurious-pixel/patch-2
Add version number to the Windows executable
2021-10-20 00:56:45 +10:00
Connor McLaughlin
3b7268e870 Merge pull request #2665 from qurious-pixel/patch-3
Disable AppX signing for PRs
2021-10-20 00:55:55 +10:00
qurious-pixel
8ccee29694 Disable AppX signing for PRs
Allows builds to complete with unsigned UWPs
2021-10-19 07:44:24 -07:00
qurious-pixel
b0cd59e5fb Add version number to the Windows executable
https://github.com/stenzek/duckstation/issues/2083
2021-10-17 22:21:11 -07:00
Connor McLaughlin
b2ffee63a6 Merge pull request #2639 from andercard0/patch-12
Update Bug Report!
2021-10-06 12:03:44 +10:00
Anderson_Cardoso
6253003bc0 Update Bug Report!
Since there is no Android support anymore, I'm removing the part where it is mentioned!
2021-10-05 17:58:49 -03:00
Connor McLaughlin
a7096f033e Merge pull request #2636 from tunip3/master
Fix 4k on series consoles
2021-10-02 03:04:16 +10:00
tunip3
28ebc46e19 remove check for xbox one as it doesn't work on series consoles 2021-10-01 17:58:46 +01:00
Connor McLaughlin
13c5ee8bfb GPU: Fix incorrect value for status bit 13
Fixes openbios boot animation.
2021-09-29 10:48:55 +10:00
Connor McLaughlin
497a5b8dd1 GPU: Don't reset CRTC state on soft reset 2021-09-29 10:48:25 +10:00
Connor McLaughlin
8864b48c02 Merge pull request #2624 from CookiePLMonster/fix-safe-unaligned-writes
Make DoSafeMemoryAccess return true properly for RAM, BIOS, dcache writes
2021-09-26 09:57:26 +10:00
qurious-pixel
11be9c1498 generate a wayland appimage (#2625)
* generate a wayland appimage

- update patchelf to 0.12
- integrate qt5-wayland plugins
- check for wayland display environment

* duckstation wayland

- update packages to include qt5-wayland
- upload wayland packages
- add wayland packages to release

* Generate single Qt appimage with wayland

- combine x11 and wayland into one appimage

* One Qt appimage
2021-09-26 09:56:56 +10:00
Connor McLaughlin
c0a29f7bfd Fix a few warnings over the place 2021-09-26 09:56:17 +10:00
Silent
270899dbdb Make DoSafeMemoryAccess return true properly for RAM, BIOS, dcache writes
Fixes broken cheats when writing to unaligned addresses,
maybe also achievements.
2021-09-24 10:07:04 +02:00
Connor McLaughlin
1cc6ee4857 Update bundled SDL game controller database 2021-09-21 10:05:30 +10:00
Connor McLaughlin
814e5368ae Merge pull request #2617 from NotaInutilis/patch-1
Small fr translation fix
2021-09-21 10:02:21 +10:00
Hugo
4b20811656 Small fr translation fix 2021-09-16 15:12:13 +02:00
Connor McLaughlin
bacd834840 Cheevos: Use safe memory access routines 2021-09-15 12:24:33 +10:00
Connor McLaughlin
f7f121f036 Bus: Handle unaligned accesses in safe memory routines 2021-09-15 12:24:33 +10:00
Connor McLaughlin
14865d0007 Qt: Use application icon for settings dialog 2021-09-15 12:24:33 +10:00
Connor McLaughlin
f1d6e81751 Update compatibility list 2021-09-15 12:24:32 +10:00
Connor McLaughlin
3ae9960e6b Merge pull request #2595 from andercard0/patch-10
Atualização Português do Brasil
2021-09-15 12:24:01 +10:00
Connor McLaughlin
8a5c8bc410 Merge pull request #2602 from CookiePLMonster/gamesettings-oc-tick
GamePropertiesDialog: Unlock the CPU OC slider only when the option is
2021-09-15 12:23:53 +10:00
Connor McLaughlin
f4e3ee4e3a Merge pull request #2606 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-09-15 12:23:47 +10:00
Connor McLaughlin
1b5a744327 Merge pull request #2607 from CookiePLMonster/osd-paths-fix
CommonHostInterface: Fix broken word wrap in DrawOSDMessages
2021-09-15 12:23:41 +10:00
Connor McLaughlin
7faa409b50 Merge pull request #2611 from andercard0/patch-11
Turkish Localization update
2021-09-15 12:23:33 +10:00
Anderson_Cardoso
b73c4ea3dc Turkish Localization update
Updated file to the latest - By: Delta
2021-09-14 15:57:15 -03:00
Silent
4fb39b6d9e CommonHostInterface: Fix broken word wrap in DrawOSDMessages 2021-09-13 22:45:41 +02:00
zkdpower
24546a4675 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-09-12 11:33:09 +08:00
Silent
9d537ba03c GamePropertiesDialog: Unlock the CPU OC slider only when the option is checked 2021-09-10 18:28:09 +02:00
Connor McLaughlin
e12474ac91 Cheats: Use safe memory access routines 2021-09-10 15:53:15 +10:00
Connor McLaughlin
8dcd68b0a8 CPU: Make Safe{Read,Write}Memory{Byte,Halfword,Word} truely safe 2021-09-10 15:53:14 +10:00
Connor McLaughlin
d2e90b0516 CPU/Recompiler: Reduce register usage of SWL/SWR
Fixes crash in Ape Escape on AArch32.
2021-09-10 15:53:11 +10:00
Connor McLaughlin
38fc5c0210 QtHostInterface: RunLater() should be public 2021-09-10 15:53:04 +10:00
Anderson_Cardoso
662a758a30 Atualização Português do Brasil
Updated file to latest.
2021-09-07 23:12:09 -03:00
Connor McLaughlin
d1977b20a4 SDLControllerInterface: Fix compilation on older SDL versions (ugh) 2021-09-08 11:46:04 +10:00
Connor McLaughlin
4b31806bc9 SDLControllerInterface: Add option for PS4/PS5 enhanced mode 2021-09-08 11:29:25 +10:00
Connor McLaughlin
396b4a48f2 Data: Update SDL game controller database 2021-09-08 10:49:54 +10:00
Connor McLaughlin
9278b7f110 dep/msvc: Update SDL2 to 2.0.16 2021-09-08 10:49:10 +10:00
Connor McLaughlin
6c628bb89f Update compatibility list 2021-09-05 10:11:00 +10:00
Connor McLaughlin
c4253ff4bb README: Update notes about Android support 2021-09-05 10:11:00 +10:00
Connor McLaughlin
a4358240ad UWP: Fix missing font resource 2021-09-05 10:11:00 +10:00
Connor McLaughlin
832b320e4e Merge pull request #2579 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-09-05 10:03:25 +10:00
Connor McLaughlin
2934a7949d Merge pull request #2571 from shikulja/master
Update Russian translation
2021-09-05 10:03:15 +10:00
Connor McLaughlin
bd85853b02 Merge pull request #2569 from andercard0/patch-9
Turkish Localization update
2021-09-05 10:03:09 +10:00
Connor McLaughlin
6b0aa48b71 Merge pull request #2568 from andercard0/patch-8
Atualização Português do Brasil
2021-09-05 10:02:58 +10:00
zkdpower
06bd4cfc38 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-09-04 07:56:33 +08:00
shikulja
08d3b9ae1a Update Russian translation 2021-09-01 19:15:08 +03:00
Anderson_Cardoso
c1ca483fa8 Turkish Localization update
Updated file to the latest. 
No native speaker review needed nothing has been actually changed only moved and confirmed to be visible for the end user.
2021-09-01 08:29:25 -03:00
Anderson_Cardoso
e8081f3f17 Atualização Português do Brasil
Updated file to the latest.
2021-09-01 08:25:55 -03:00
shikulja
5b3c7072e7 Upgrade Russian translation (#2563)
* Update Russian translation

* Upgrade Russian translation

* Upgrade Russian translation

* Upgrade Russian translation
2021-09-01 15:09:03 +10:00
Connor McLaughlin
81ec359229 Merge pull request #2555 from CookiePLMonster/cheat-list-fixes
Cheat list fixes
2021-09-01 15:08:52 +10:00
Connor McLaughlin
8769a55298 SPU: Add a couple more reverb registers to debug window 2021-09-01 15:05:05 +10:00
Connor McLaughlin
8d57229bdc Update compatibility list 2021-09-01 15:01:39 +10:00
Connor McLaughlin
7f3f5ce1bd Update compatibility list 2021-09-01 14:57:21 +10:00
Connor McLaughlin
c8dfb2cd54 Qt: Add comments to AdvancedSettingsWidget::onResetToDefaultClicked() 2021-09-01 14:55:58 +10:00
Connor McLaughlin
4ef5f434be Qt: Move MSAA to advanced settings 2021-09-01 14:55:13 +10:00
Connor McLaughlin
a8dea21725 Qt: Make advanced seting constructors return the widget 2021-09-01 14:54:49 +10:00
Silent
c7d0df6081 Cheats: Update Cheat Manager state on toggling cheats from the list
Fixes a visual desync of these two lists
2021-08-26 20:17:23 +02:00
Silent
6c70d7b8b3 Cheats: Call ApplyOnDisable on disabling cheats from the list
Fixes an inconsistency in disabling cheats between the list
and the Cheat Manager.
2021-08-25 18:15:32 +02:00
Connor McLaughlin
bbcf1c67d1 Common/Vulkan: Fix compiling on 32-bit 2021-08-24 11:57:16 +10:00
Connor McLaughlin
1e88d04430 GPU: Set display parameters even when disabled 2021-08-24 11:57:14 +10:00
Connor McLaughlin
461e6aa50b GPU: Update display on reset 2021-08-24 11:57:12 +10:00
Connor McLaughlin
75e9506803 System: Get rid of double GPU reset 2021-08-24 11:57:11 +10:00
Connor McLaughlin
628dc36e77 GPU: Add GPU::GetFullDisplayResolution() 2021-08-24 11:57:09 +10:00
Connor McLaughlin
a44e9d16fb CDROM: Fix second response event getting lost on state load 2021-08-24 11:57:06 +10:00
Connor McLaughlin
4848c72466 GameDB: Actually fix SLES-00107 2021-08-23 02:28:44 +10:00
Connor McLaughlin
123322840e Merge pull request #2549 from andercard0/patch-7
Turkish localization update
2021-08-23 02:19:04 +10:00
Connor McLaughlin
2bb43ffac7 Merge pull request #2547 from PugsyMAME/master
New F6 Cheat Type (IF,ELSE IF, ELSE structure)
2021-08-23 02:18:52 +10:00
Connor McLaughlin
f85387345e PGXP: Fix memory past 2MB 2021-08-23 02:18:06 +10:00
Connor McLaughlin
95ccf82ff6 GameDB: Fix SLES-00107 2021-08-23 02:09:57 +10:00
Anderson_Cardoso
73c0382bf6 Turkish localization update
Updated file to the latest.
2021-08-22 12:34:33 -03:00
PugsyMAME
0ebb791323 New F6 Cheat Type (IF,ELSE IF, ELSE structure)
Cheat Type F6 lets you perform cheats in IF / ELSE IF / ELSE constructs along 
with multiple conditions for each one.

It supports conditions  D0, D1, D2, D3, E0, E1, E2, E3, A0, A1, A2, A3, D7 and 
two new types that will only be available in the F6 conditions :- 
E4 & E5 which are bit comparisons on bytes (set and clear). 

Any of those types which are "block conditionals" like D7 will be treated as a 
single condition with the other conditions so you wont need to worry about 
extra 00000000 FFFFs just for them (infact you can drop them completely apart
from the last 00000000 FFFF, which you can also drop if you have no trailing
cheat lines after the end of the construct.


#IF / ELSE IF / ELSE Statement Example with Notes
80001000 00000001   Setup Test Condition 1
80001004 00000002   Setup Test Condition 2
80001008 00000003   Setup Test Condition 3
8000100C 00000004   Setup Test Condition 4

                    1F = IF, last two digits determine the number of conditions to check
                    F600000x  x = 0 All conditions must be true, x = 1 At least One condition must be true                  
F6000000 1F000004   Check the next 4 lines as the conditions for the IF loop to be taken

D0001000 00000001  )
D0001004 00000002  )Conditions
D0001008 00000003  )
D000100C 00000004  )

80001010 00005555    Poke(s)
00000000 0000FFFF  End of IF Statement

F6000000 E15E1F02  E15E1F = ELSE IF (same format as IF) - Can have multiple ELSE IF Blocks or none at all
D0001008 00000003  )
D000100C 00000005  )Conditions
80001010 00008888     Poke(s)
00000000 0000FFFF  End of ELSE IF Statement 

F6000000 E15E0000  E15E = ELSE (no need for conditions - this will poke if the others dont)
80001010 0000AAAA    Poke(s)
00000000 0000FFFF End of ELSE Statement



#Multiple Test Using Joypad Left Thumb Directions, Look at Address 1100 in Debugger
F6000000 1F000001  
D7020002 00100000
90001100 50205055
90001104 53534552 
90001108 20204445
9000110C 20202020
F6000000 E15E1F01
D7020002 00400000
90001100 4E574F44
90001104 45525020
90001108 44455353
9000110C 20202020
F6000000 E15E1F01
D7020002 00800000
90001100 5446454C
90001104 45525020
90001108 44455353
9000110C 20202020
F6000000 E15E1F01
D7020002 00200000
90001100 48474952
90001104 52502054
90001108 45535345
9000110C 20202044
F6000000 E15E0000
90001100 20202020
90001104 20202020
90001108 20202020
9000110C 20202020
00000000 0000FFFF
2021-08-21 15:08:34 +01:00
Connor McLaughlin
abe9c0d438 GameList: Use display name for exe/psf titles 2021-08-21 16:58:10 +10:00
Connor McLaughlin
7eceee6a20 CDImage: Use display name for playlist titles 2021-08-21 16:58:10 +10:00
Connor McLaughlin
1081c132cf Qt: Fix 8MB game setting not being tristate 2021-08-21 16:58:10 +10:00
shikulja
6015cce47d Update Russian translation (#2517)
* Update Russian translation

Cleaning up old translation strings, minor fixes

* Update Russian translation

* Update Russian translation

* Update Russian translation

* Update Russian translation

* Update Russian translation

* Upgrade Russian translation

* Upgrade Russian translation

lowercase
2021-08-21 15:21:10 +10:00
Connor McLaughlin
903f3247be Merge pull request #2538 from CookiePLMonster/fix-32bit-cheats
Fix A0, A1, A2, A3 cheats
2021-08-21 15:20:57 +10:00
Silent
ebe862561d Fix A0, A1, A2, A3 cheats 2021-08-19 22:21:07 +02:00
Connor McLaughlin
3bf69ef3bb Extras: Sync translation xml 2021-08-18 13:33:42 +10:00
Connor McLaughlin
18241978ea CDROM: Cancel command second response when queuing new command
Fixes Wipeout corrupting parts of the TOC.
2021-08-18 00:25:19 +10:00
Connor McLaughlin
e45f15ef41 FileSystem: Implement StatFile/FileExists/DirectoryExists for scoped storage 2021-08-18 00:18:03 +10:00
Connor McLaughlin
1d790c9eb7 Qt: Load base translation files 2021-08-17 13:39:14 +10:00
Connor McLaughlin
74bf021c2f MSBuild: Copy base translation files 2021-08-17 13:39:06 +10:00
Connor McLaughlin
15b1420246 Qt: Recreate main window/children when changing themes 2021-08-16 14:10:10 +10:00
Connor McLaughlin
35bb20e586 Qt: Enable switching of languages without restarting app 2021-08-16 14:10:10 +10:00
Connor McLaughlin
47f85dc453 Qt: Add function to recreate the main window 2021-08-16 14:10:10 +10:00
Connor McLaughlin
971af2cb5c Qt: Set style after creating game list
Fixes incorrect sizes on Linux.
2021-08-16 14:10:10 +10:00
Connor McLaughlin
3dfbb3aa7a Merge pull request #2508 from andercard0/patch-6
Atualização Português do Brasil
2021-08-16 14:09:59 +10:00
Connor McLaughlin
2794420701 Merge pull request #2509 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-08-16 14:09:52 +10:00
zkdpower
194ff9dad3 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-08-15 17:49:59 +08:00
Anderson_Cardoso
ec42a11436 Atualização Português do Brasil
Updated file to latest.
2021-08-15 02:41:33 -03:00
Connor McLaughlin
64abbd6482 Qt: Fix change disc icon 2021-08-15 14:44:48 +10:00
Connor McLaughlin
f2909b447b Qt: Split icon theme and style init 2021-08-15 14:28:48 +10:00
Connor McLaughlin
e87761b9e6 Qt: Add icons by @andercard0 2021-08-15 14:23:20 +10:00
Connor McLaughlin
3236917479 HostInterface: Enable 8MB RAM should be disabled by all enhancements 2021-08-15 14:23:20 +10:00
Connor McLaughlin
521d20bcd2 CommonHostInterface: Add display enhancement settings option 2021-08-15 14:23:20 +10:00
Connor McLaughlin
78c92a3bf7 fixup! NoGUI: Move default quick menu bind out of CommonHostInterface 2021-08-15 14:23:20 +10:00
Connor McLaughlin
bba6ad4a84 CommonHostInterface: Remove EnumerateOSDMessages() 2021-08-15 14:23:20 +10:00
Connor McLaughlin
e6ea6358a0 CommonHostInterface: De-duplicate OSD messages from FS UI 2021-08-15 14:23:20 +10:00
Connor McLaughlin
4d9aa5ecdf CommonHostInterface: De-duplicate stats overlay from FS UI 2021-08-15 14:23:20 +10:00
Connor McLaughlin
1ee3882afd HostInterface: Default show status indicators to true 2021-08-15 14:23:20 +10:00
Connor McLaughlin
0491c893d9 HostInterface: Fix compile error on Android 32-bit 2021-08-15 14:23:20 +10:00
Connor McLaughlin
eaad87ab4f CommonHostInterface: Make timer resolution increased static 2021-08-15 14:23:20 +10:00
Connor McLaughlin
28d3c0768a NoGUI: Move default quick menu bind out of CommonHostInterface 2021-08-15 14:23:20 +10:00
Connor McLaughlin
27465c5258 Qt: Re-render display after pausing 2021-08-15 14:23:20 +10:00
Connor McLaughlin
1007d4bb07 Merge pull request #2503 from andercard0/patch-5
Atualização Português do Brasil
2021-08-15 14:22:53 +10:00
Connor McLaughlin
bf8910f7af Merge pull request #2506 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-08-15 14:22:41 +10:00
zkdpower
4eb78290b7 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-08-14 10:57:51 +08:00
Anderson_Cardoso
6cf1141cc8 Atualização Português do Brasil
Updated file to latest.
2021-08-12 15:31:46 -03:00
Connor McLaughlin
929aa2f3d1 OpenGLHostDisplay: Fix 16-bit display on GLES2 2021-08-12 21:31:40 +10:00
Connor McLaughlin
f0cb8cdc5c GL/Texture: Don't set max level on GLES2 2021-08-12 21:31:40 +10:00
Connor McLaughlin
3f3607548f CommonHostInterface: Make status indicators toggleable 2021-08-12 21:31:40 +10:00
Connor McLaughlin
1acaff2160 CommonHostInterface: Add FF/Rewind/Pause indicators to non-fullscreen-UI 2021-08-12 21:31:40 +10:00
Connor McLaughlin
4f190aa902 CommonHostInterface: Move fonts/logo to resources directory 2021-08-12 21:31:40 +10:00
Connor McLaughlin
c4f0dafb1f System: Don't time memory load/save states by default
Reduces log spam.
2021-08-12 21:31:40 +10:00
shikulja
5868901280 Update Russian translation (#2486)
* Update Russian translation

Cleaning up old translation strings, minor fixes

* Update Russian translation

* Update Russian translation

* Update Russian translation

* Update Russian translation
2021-08-12 21:31:16 +10:00
Connor McLaughlin
950228b587 Merge pull request #2483 from andercard0/patch-4
Turkish localization update
2021-08-12 21:31:08 +10:00
Connor McLaughlin
74173ee689 Merge pull request #2481 from falsepopsky/spanish-update
update qt spanish translation
2021-08-12 21:31:01 +10:00
Connor McLaughlin
b396714fad Merge pull request #2480 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-08-12 21:30:52 +10:00
Anderson_Cardoso
be6de70200 Turkish localization update
Updated file to latest by: Delta Oscar
2021-08-07 15:19:35 -03:00
zkdpower
93eacd0ce1 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-08-07 11:48:10 +08:00
Connor McLaughlin
4d0968a6b4 Merge pull request #2479 from andercard0/patch-3
Atualização Português do Brasil
2021-08-07 13:22:21 +10:00
Connor McLaughlin
4fac032ff6 SPU: Add a macro to enable per-voice dumping 2021-08-07 13:21:53 +10:00
Anderson_Cardoso
94e48f7dc3 Atualização Português do Brasil
Updated file to latest.
2021-08-06 23:40:42 -03:00
Connor McLaughlin
50a09384e1 CommonHostInterface: Add onscreen indicator for rewind 2021-08-07 12:07:04 +10:00
Connor McLaughlin
8bea6e1530 GPU/Vulkan: Fix warnings introduced by #2438 2021-08-07 12:01:02 +10:00
Connor McLaughlin
653453b1ee CommonHostInterface: Silence fast forward/turbo messages when using FS UI 2021-08-07 11:59:35 +10:00
Connor McLaughlin
81a90d66f5 HostInterface: Disable rewind on 32-bit ARM/Android 2021-08-07 11:58:05 +10:00
Connor McLaughlin
43c310af4b scripts: Add regression test runner/checker 2021-08-07 11:57:03 +10:00
Connor McLaughlin
6cba6986d3 Qt: Add debug/debugfast build tag to title bar 2021-08-07 11:55:30 +10:00
Connor McLaughlin
0576cb6e3b Update compatibility list 2021-08-07 11:45:20 +10:00
Connor McLaughlin
66cfd98685 Merge pull request #2460 from PugsyMAME/master
Fixed cheat type 52 only working with 1st subtype
2021-08-07 11:35:58 +10:00
Connor McLaughlin
eeb2e01a42 Merge pull request #2478 from PugsyMAME/master
Improved Cheat Memory Scanner functionality
2021-08-07 11:35:10 +10:00
Connor McLaughlin
db19cc6406 Merge pull request #2471 from andercard0/patch-2
Update Turkish localization
2021-08-07 11:33:33 +10:00
Connor McLaughlin
cdb47f7916 Merge pull request #2470 from andercard0/patch-1
Atualização Português do Brasil
2021-08-07 11:33:20 +10:00
Connor McLaughlin
6318d33e13 Merge pull request #2466 from andercard0/patch-172
Android Strings
2021-08-07 11:33:09 +10:00
Connor McLaughlin
b298a2d303 Merge pull request #2464 from andercard0/patch-171
Android Arrays
2021-08-07 11:33:00 +10:00
Connor McLaughlin
0ba70bdf69 Merge pull request #2462 from andercard0/patch-170
Update localization READM.md
2021-08-07 11:32:49 +10:00
Connor McLaughlin
56ce502e49 Merge pull request #2461 from andercard0/patch-169
Tiny 'fix' - README.md
2021-08-07 11:32:41 +10:00
Connor McLaughlin
c6c9abcb1c Merge pull request #2438 from Wunkolo/vk-debug
GPU/Vulkan: Add debug utility functions
2021-08-07 11:32:20 +10:00
falsepopsky
f0ab1ced76 update qt spanish translation 2021-08-06 19:50:09 -03:00
PugsyMAME
f835db6b4f Improved Cheat Memory Scanner functionality
Work done :
** Made the columns sortable (someone asked for this GH I think)
** Moved the Add to Watch button to under the search parameters, and renamed it.
** Made the selection work on a block level so we can block "add results" and block "Remove Watch" on multiple entries
** Made the description show the raw code - so either 3xxxxxxx, 8xxxxxxx, 9xxxxxxx depending on the Data Size and the memory being under 0x200000. This can be edited still.
** Changed the Watch value field to take a hex number in the form 0xX as well as a decimal number.
** Moved the freeze box to the right column, I originally did this prior to finding out about ContiguousSelection and I think it makes more sense next to the value you want to freeze
** Removed the message about 5000 results limitation (it made searching painful) and added a text box showing it permanently along with the number of results (which you can observe going down as you continue the search)
** Hidden the "Save Watch" & "Load Watch" buttons, they have no functionality (yet) and making them invisible in the mean time makes it less confusing.
2021-08-06 12:24:14 +01:00
PugsyMAME
7025cc3382 Improved Cheat Memory Scanner functionality
Work done :
** Made the columns sortable (someone asked for this GH I think)
** Moved the Add to Watch button to under the search parameters, and renamed it.
** Made the selection work on a block level so we can block "add results" and block "Remove Watch" on multiple entries
** Made the description show the raw code - so either 3xxxxxxx, 8xxxxxxx, 9xxxxxxx depending on the Data Size and the memory being under 0x200000. This can be edited still.
** Changed the Watch value field to take a hex number in the form 0xX as well as a decimal number.
** Moved the freeze box to the right column, I originally did this prior to finding out about ContiguousSelection and I think it makes more sense next to the value you want to freeze
** Removed the message about 5000 results limitation (it made searching painful) and added a text box showing it permanently along with the number of results (which you can observe going down as you continue the search)
** Hidden the "Save Watch" & "Load Watch" buttons, they have no functionality (yet) and making them invisible in the mean time makes it less confusing.
2021-08-06 12:11:22 +01:00
Anderson_Cardoso
cf5e291169 Update Turkish localization
Updated Turkish translation to the latest. - By: Delta Oscar Uniform
2021-08-03 17:00:14 -03:00
Anderson_Cardoso
ad591f5df7 Atualização Português do Brasil
Just some clean ups and updates.
2021-08-03 13:05:38 -03:00
Anderson_Cardoso
3fed0d757e Android Strings
Updated file to latest.
2021-08-02 01:32:39 -03:00
Anderson_Cardoso
7152ab94d7 Android Arrays
Updated file to latest.
2021-08-02 00:57:18 -03:00
Wunkolo
98089180c0 GPU/Vulkan: Add debug utility functions
Adds a way to set the name of vulkan
objects, and automatically determining their `VkObjectType` enum value
at compile-time. As well as a utility-object for creating debug-scopes
for `VkQueue` and `VkCommandBuffer` objects. `DebugScope` objects will
automatically emit `Begin` and `End` commands within the ctor and dtor
and allow for C++ scopes to name and color sections of a vulkan command.
These DebugScopes are also able to be nested within each other and will
automatically pick a color depending on the current recursive depth.

These functions are all null-stubbed in non-debug compilations.
2021-08-01 10:56:56 -07:00
Wunkolo
494b6e029f GPU/Vulkan: Add complete VK_EXT_debug_utils API entry points 2021-08-01 10:56:56 -07:00
Connor McLaughlin
b9d238d28b CommonHostInterface: Fix crash in FS UI when scale changes 2021-08-02 00:54:00 +10:00
Anderson_Cardoso
a5f2f5d66c Update localization READM.md
Update localization of README.MD file to the latest.
2021-07-31 19:00:57 -03:00
Anderson_Cardoso
cbfd6026fd Tiny 'fix' - README.md
Just a 'fix' into the numerical order at the line: 103 'till 113.
2021-07-31 18:56:40 -03:00
PugsyMAME
106dc2951d Fixed cheat type 52 only working with 1st subtype
Fixed typo in ExtCheatRegistersCompare, which made it so that only 52 type 5200 worked,
2021-07-31 11:14:15 +01:00
Connor McLaughlin
a542fa85d6 CPU/CodeCache: Fix crash when switching from interpreter to recompiler 2021-07-31 13:29:02 +10:00
Connor McLaughlin
b41d56d305 TimingEvent: Fix event list getting unsorted on Delay 2021-07-31 13:25:03 +10:00
Connor McLaughlin
642f8041e9 Common/Log: Fix compilation on Android 2021-07-30 17:01:07 +10:00
Connor McLaughlin
b948bb0750 CDImageDevice: Fix invalid TOC for multi-track discs 2021-07-29 14:00:47 +10:00
Connor McLaughlin
77eb8e4b72 Common/Log: Rewrite for better unicode handling 2021-07-29 13:45:38 +10:00
Connor McLaughlin
26a8f8d9e7 Common/Log: Restore old console behavior 2021-07-29 13:45:11 +10:00
Connor McLaughlin
b8bd545ee9 CommonHostInterface: Fix debug console toggling not applying 2021-07-29 13:44:48 +10:00
Connor McLaughlin
161d90d0e1 Merge pull request #2455 from Max833/master
Update german translation
2021-07-29 12:06:29 +10:00
Connor McLaughlin
167555892b Merge pull request #2454 from andercard0/patch-168
Atualização Português do Brasil
2021-07-29 12:06:21 +10:00
Connor McLaughlin
c52902c494 Merge pull request #2452 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-29 12:06:14 +10:00
Connor McLaughlin
88717fdb65 Merge pull request #2451 from 6lackmag3/patch-72
(Android) Update values-ru/strings to latest
2021-07-29 12:06:05 +10:00
Anderson_Cardoso
56185907ba Update duckstation-qt_pt-br.ts 2021-07-27 18:45:38 -03:00
Max833
3b4a7f3e06 Update duckstation-qt_de.ts 2021-07-27 21:02:31 +02:00
Max833
8bd592f40f Update duckstation-qt_de.ts 2021-07-27 20:58:40 +02:00
Anderson_Cardoso
9857b32b0d Atualização Português do Brasil
Updated file to latest.
2021-07-27 13:16:02 -03:00
zkdpower
18085285f1 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-27 19:26:48 +08:00
6lackmag3
5da62c7269 (Android) Update values-ru/strings to latest 2021-07-27 12:10:38 +03:00
Connor McLaughlin
96fb81733d Qt: Add option to switch/change discs from physical device 2021-07-27 18:24:54 +10:00
Connor McLaughlin
0af334bba5 Qt: Fix game properties being inaccessible in batch mode 2021-07-27 18:24:54 +10:00
Connor McLaughlin
6a99ff9c08 Merge pull request #2450 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-27 18:24:30 +10:00
shikulja
c7e4be2724 Update Russian translation (#2449)
* Update Russian translation

Cleaning up old translation strings, minor fixes

* Update Russian translation

* Update Russian translation
2021-07-27 18:24:09 +10:00
Connor McLaughlin
2db1c89306 Merge pull request #2447 from falsepopsky/spanish-update
Update spanish qt translation
2021-07-27 18:24:01 +10:00
Connor McLaughlin
864fd50eb8 Merge pull request #2444 from andercard0/patch-167
Update Turkish localization
2021-07-27 18:23:53 +10:00
Connor McLaughlin
89fddcb576 Merge pull request #2443 from andercard0/patch-166
Atualização Português do Brasil
2021-07-27 18:23:47 +10:00
zkdpower
0cab7019fc Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-27 12:15:13 +08:00
Connor McLaughlin
5bf24265aa CPU/CodeCache: Fix compilation without recompiler 2021-07-27 13:11:46 +10:00
Connor McLaughlin
c9f8828448 CPU/CodeCache: Drop block linking warning to dev level 2021-07-27 13:11:42 +10:00
zkdpower
ebd24a754d Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-26 09:24:11 +08:00
Anderson_Cardoso
4486022479 Update Turkish localization
Update Turkish localization - by: Delta Oscar Uniform.
2021-07-25 19:15:49 -03:00
falsepopsky
46886d90af updated qt spanish translation 2021-07-25 18:40:52 -03:00
Anderson_Cardoso
e88494e5e9 Update duckstation-qt_pt-br.ts 2021-07-25 16:46:17 -03:00
Anderson_Cardoso
0d6b018ec5 Update duckstation-qt_pt-br.ts 2021-07-25 15:06:09 -03:00
Anderson_Cardoso
b8cbf6c066 Atualização Português do Brasil
Update file to latest.
2021-07-25 13:41:06 -03:00
Connor McLaughlin
ab1143dd0c Update news 2021-07-26 01:37:16 +10:00
Connor McLaughlin
0da756b0fd dep/stb: Warning fix 2021-07-26 01:35:16 +10:00
Connor McLaughlin
aeba8b5e12 Update Android strings 2021-07-26 01:35:04 +10:00
Connor McLaughlin
b62ed5561c Merge pull request #2441 from stenzek/cd-image-device
CDImage: Add CD-ROM device implementation
2021-07-26 01:33:02 +10:00
Connor McLaughlin
7a10515df5 Merge pull request #2442 from Richard-L/patch-5
Update consolesettingswidget.cpp
2021-07-26 01:32:47 +10:00
Connor McLaughlin
4d262e8072 CDImage: Add CD-ROM device implementation 2021-07-26 01:30:53 +10:00
posix
3412587b1b Update consolesettingswidget.cpp
Small two things.

1
Explain there is usually only 2mb (which I suppose is the case if you arrive at 8 in the name of the option?). Nice for some backgroudn.

2
Improve the following sentence structure slightly.
2021-07-25 13:14:25 +02:00
falsepopsky
3342f2291c removed vanished messages 2021-07-24 21:57:10 -03:00
Connor McLaughlin
673f9927ad dep/stb: Use zlib for png compression 2021-07-24 15:26:47 +10:00
Connor McLaughlin
f8fe3cffd6 Merge pull request #2439 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-24 14:54:13 +10:00
zkdpower
f793d91ec5 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-24 12:49:48 +08:00
Connor McLaughlin
f9c6cb9343 Merge pull request #2436 from andercard0/patch-165
Atualização Português do Brasil
2021-07-24 14:19:30 +10:00
Connor McLaughlin
5ff9783626 CPU/Recompiler/ARM: Optimize icache check 2021-07-24 14:07:37 +10:00
Connor McLaughlin
e2db78b0ef CPU/Recompiler/AArch64: Fix assertion tripping in debug builds 2021-07-24 13:30:35 +10:00
Connor McLaughlin
d9d41de81b CPU/Recompiler: Skip updating current_instruction_pc 2021-07-24 13:30:35 +10:00
Connor McLaughlin
21938e14c6 CPU/Recompiler: Implement block linking 2021-07-24 13:07:11 +10:00
Connor McLaughlin
29bc0c950a System: Reset before loading save state on boot 2021-07-24 13:07:09 +10:00
Connor McLaughlin
9628f0d9d0 CPU/Recompiler: Reduce register usage of LWL/LWR/SWL/SWR 2021-07-24 13:06:53 +10:00
Connor McLaughlin
53299e3c7b CPU/Interpreter: Load delay check should be a debug assertion 2021-07-24 13:04:54 +10:00
Connor McLaughlin
6081e2415f CPU/Recompiler: Simplify PC addressing 2021-07-24 13:03:45 +10:00
Connor McLaughlin
033d85cd90 CPU/Recompiler: Simplify fast map addressing 2021-07-24 13:03:43 +10:00
Anderson_Cardoso
f69a42d19d Atualização Português do Brasil
Update file to latest.
2021-07-23 11:17:37 -03:00
Connor McLaughlin
7f88cd5f9f Add regression test runner 2021-07-24 00:02:09 +10:00
Connor McLaughlin
607cb8dbb7 VulkanHostDisplay: Don't crash when headless 2021-07-23 18:33:52 +10:00
Connor McLaughlin
09c65b48b8 D3D12HostDisplay: Fix headless rendering 2021-07-23 18:08:57 +10:00
Connor McLaughlin
be9427499b D3D11HostDisplay: Fix headless rendering 2021-07-23 18:07:30 +10:00
Connor McLaughlin
d230e7d22f HostInterface: Fix SetUserDirectoryToProgramDirectory() 2021-07-23 18:07:18 +10:00
Connor McLaughlin
3b7c6c7bbd Common/Log: Fix Unix escape sequences on preexisting consoles 2021-07-23 18:07:03 +10:00
Connor McLaughlin
78dabd1067 Build: Add missing d3dcompiler/d3d11 dependency in common 2021-07-23 18:06:25 +10:00
Connor McLaughlin
9b930f728f Qt: Remove incorrect format string translation 2021-07-23 15:05:33 +10:00
Connor McLaughlin
e17c93ab04 D3D12HostDisplay: Fix incorrect resource state in DownloadTexture() 2021-07-22 13:58:03 +10:00
Connor McLaughlin
89a11519fb D3D12: Use clears instead of draws for simple VRAM fills 2021-07-22 13:58:03 +10:00
Connor McLaughlin
a0fa3a3994 HostInterface: Don't save screenshot when switching renderers 2021-07-22 13:58:03 +10:00
Connor McLaughlin
cebf8957e6 D3D12HostDisplay: Implement RenderScreenshot() 2021-07-22 13:58:03 +10:00
Connor McLaughlin
a747e15ac7 D3D12HostDisplay: Fix possible panic on fullscreen switch 2021-07-22 13:36:08 +10:00
Connor McLaughlin
3cc7802897 GameList: Scan hidden files 2021-07-21 20:26:00 +10:00
Connor McLaughlin
3847c94a42 FileSystem: Don't treat dotfiles as hidden on Windows 2021-07-21 20:26:00 +10:00
Connor McLaughlin
bc10a67bca Merge pull request #2428 from 6lackmag3/patch-71
(Android) update Russian translation to latest
2021-07-21 19:25:41 +10:00
Connor McLaughlin
70209db402 GPU/HW: Implement oversized VRAM fills in hardware
Fixes downscaling in Bugs and Taz PAL.
2021-07-21 19:24:10 +10:00
6lackmag3
d13a19fb39 (Android) update Russian translation to latest 2021-07-19 21:56:20 +03:00
Connor McLaughlin
7ea78ad2df CPU/CodeCache: Fix incorrect macro for code buffer size 2021-07-20 00:00:43 +10:00
Connor McLaughlin
dfd6766411 MemoryArea: Use pid instead of thread id for mapping on Windows 2021-07-19 15:11:07 +10:00
Connor McLaughlin
ce460001d7 Sync Android translation strings 2021-07-19 15:10:23 +10:00
Connor McLaughlin
9136692de5 Merge pull request #2424 from andercard0/patch-164
Update Turkish localization
2021-07-19 13:59:06 +10:00
Connor McLaughlin
374e9aa9cf Merge pull request #2423 from andercard0/patch-163
Atualização Português do Brasil
2021-07-19 13:58:59 +10:00
Connor McLaughlin
5700e20eb5 Merge pull request #2422 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-19 13:58:44 +10:00
Connor McLaughlin
bde87b3cd9 Merge pull request #2427 from 6lackmag3/patch-70
(Android) Update values-ru/strings
2021-07-19 13:51:54 +10:00
Connor McLaughlin
05972d581e Merge pull request #2426 from 6lackmag3/patch-69
(Android) Update values-ru/arrays
2021-07-19 13:51:45 +10:00
6lackmag3
cddddcb6d1 (Android) Update values-ru/strings 2021-07-19 03:15:52 +03:00
6lackmag3
9aa7c4a988 (Android) Update values-ru/arrays 2021-07-19 03:14:56 +03:00
Anderson_Cardoso
42f3afeccf Update duckstation-qt_pt-br.ts 2021-07-17 20:14:24 -03:00
Anderson_Cardoso
015ab47d7d Update Turkish localization
Update file to latest by: Foxtrot Uniform
2021-07-17 13:50:51 -03:00
Anderson_Cardoso
97ff928456 Atualização Português do Brasil
Update file to latest.
2021-07-17 13:28:02 -03:00
zkdpower
3fe920d44a Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-17 23:56:55 +08:00
Connor McLaughlin
d519ba3d59 Qt: Fix race condition when switching to fullscreen
Stops the window opening in the corner of the screen occasionally in Wayland.
2021-07-17 23:03:46 +10:00
Connor McLaughlin
d6c4c2dda9 Qt: Add a container widget for render-outside-main
Fixes missing decorations on Wayland.
2021-07-17 23:03:46 +10:00
Connor McLaughlin
3cf12e8f0d Controller: Round floating point axis values instead of flooring 2021-07-17 20:38:23 +10:00
Connor McLaughlin
b01d49fa52 CommonHostInterface: Enable rewind for Android 2021-07-17 20:14:40 +10:00
Connor McLaughlin
0000750527 System: Fix rewind rate with vsync off 2021-07-17 20:14:40 +10:00
Connor McLaughlin
d3edfad493 Sync Android strings 2021-07-17 20:14:40 +10:00
Connor McLaughlin
efaf3d6ce5 Qt: Display warning before allowing cheats 2021-07-17 15:13:35 +10:00
Connor McLaughlin
6008b9f1e9 Update README.md 2021-07-17 14:51:59 +10:00
Connor McLaughlin
1da3c13aa1 Sync Android translation strings 2021-07-17 14:48:06 +10:00
Connor McLaughlin
36bad69b31 CI: Don't try to make UWP app bundle on pull requests 2021-07-17 14:06:28 +10:00
Connor McLaughlin
042c267065 Merge pull request #2420 from andercard0/patch-162
Update Turkish localization
2021-07-17 14:03:51 +10:00
Connor McLaughlin
5db085c83f Merge pull request #2419 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-17 14:03:42 +10:00
Connor McLaughlin
e9374646e9 GPU/SW: Fix performance regression on 32-bit ARM 2021-07-17 14:03:04 +10:00
Connor McLaughlin
75b69a6f7e GameSettings: Force icache for World Cup 98 2021-07-17 14:03:04 +10:00
Anderson_Cardoso
7e7f9aa4bc Update Turkish localization (Foxtrot Uniform)
update Turkish file to latest - Foxtrot Uniform
2021-07-16 16:58:34 -03:00
zkdpower
21521588d1 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-17 00:04:52 +08:00
Connor McLaughlin
4bc3470994 Merge pull request #2416 from andercard0/patch-161
Atualização Português do Brasil
2021-07-16 23:35:12 +10:00
Connor McLaughlin
21460c1924 FullscreenUI: Disable exclusive fullscreen resolution for UWP
It's not supported.
2021-07-16 23:34:39 +10:00
Connor McLaughlin
3265acbe09 UWP: Declare expandedResources in manifest 2021-07-16 23:32:45 +10:00
Anderson_Cardoso
9d25787fc1 Atualização Português do Brasil
Update file to latest.
2021-07-16 00:15:52 -03:00
Connor McLaughlin
30db081a64 CPU: Simulate stalls from GTE instructions 2021-07-16 12:27:31 +10:00
Connor McLaughlin
3d4cdb6d92 Merge pull request #2412 from andercard0/patch-160
Update information about SBI file
2021-07-16 12:26:59 +10:00
Anderson_Cardoso
41fc84ae51 Update information about SBI file
A simple update message to make it more clear for end users in regard SBI files.
2021-07-14 10:55:07 -03:00
Connor McLaughlin
c2c204c845 CDROM: Fix async readahead causing lockups in some games 2021-07-14 01:25:49 +10:00
Connor McLaughlin
ab9109f3b1 FullscreenUI: Add undo load state to load menu 2021-07-13 22:41:29 +10:00
Connor McLaughlin
921c5cdfbf CommonHostInterface: Always wait for audio buffer fill
Fixes underflows on booting, at the cost of enforcing the
user-configured minimum latency.
2021-07-13 22:41:29 +10:00
Connor McLaughlin
313237747b README: Clarify Linux support 2021-07-13 14:51:00 +10:00
Connor McLaughlin
86420a0d5f Qt: Fix restore defaults no button not having any effect 2021-07-13 14:28:41 +10:00
Connor McLaughlin
9723e617f9 GPU/D3D12: Implement VRAM write replacements 2021-07-13 14:17:04 +10:00
Connor McLaughlin
18df8d48e7 GPU/OpenGL: Use linear sampling for VRAM write replacement blit 2021-07-13 14:17:04 +10:00
Connor McLaughlin
d432accf81 GPU/D3D11: Use linear sampling for VRAM write replacement blit 2021-07-13 14:17:04 +10:00
Connor McLaughlin
fc164ce021 D3D12/Texture: Fix non-(0,0) texture streaming 2021-07-13 14:17:04 +10:00
Connor McLaughlin
5fa07999e7 D3D12HostDisplay: Fix debug violation in DestroyRenderSurface() 2021-07-13 14:17:04 +10:00
Connor McLaughlin
eb5a2a340c Qt: Expose adapter selection/exclusive fullscreen for D3D12 2021-07-13 14:17:04 +10:00
Connor McLaughlin
9915db1971 Merge pull request #2400 from andercard0/patch-158
Atualização Português do Brasil
2021-07-13 13:27:22 +10:00
Connor McLaughlin
c2f422ac70 Merge pull request #2403 from andercard0/patch-159
Atualização do Arquivo Leia-me
2021-07-13 13:27:11 +10:00
Connor McLaughlin
ddda82be2d Merge pull request #2402 from CookiePLMonster/fix-post
Fix POST messages
2021-07-13 13:26:57 +10:00
Anderson_Cardoso
a413798b59 Atualização do Arquivo Leia-me.
Update README. Pt-Br
2021-07-12 17:26:02 -03:00
Anderson_Cardoso
9765dc54d1 Update duckstation-qt_pt-br.ts 2021-07-12 16:52:38 -03:00
Silent
382595ff71 Fix POST messages
Fixes rich presence in RetroAchievements
2021-07-12 20:36:33 +02:00
Connor McLaughlin
309169d14c README: Add instructions for Xbox One/UWP 2021-07-12 22:53:50 +10:00
Connor McLaughlin
bb2e459f9f Warning fixes 2021-07-12 22:44:02 +10:00
Anderson_Cardoso
db60109246 Atualização Português do Brasil
Update file to latest.
2021-07-12 09:43:22 -03:00
Connor McLaughlin
fd3c12de84 scmversion: Use source directory as git directory
Fixes tagging in out of directory builds.
2021-07-12 22:38:30 +10:00
Connor McLaughlin
c962e9899d CDROM: Reject invalid Setloc commands
Fixes delays in Simple 1500 Series Vol. 31 - The Sound Novel.
2021-07-12 21:14:06 +10:00
Connor McLaughlin
a32ef4a963 CDROMAsyncReader: Support reading ahead more sectors 2021-07-12 21:14:06 +10:00
Connor McLaughlin
552b0098ef GPU/HW: Fix incorrect initial transparency mode
Fixes broken menus in Road Rash after loading state.
2021-07-12 21:14:06 +10:00
Connor McLaughlin
6894a719d5 Merge pull request #2394 from andercard0/patch-157
Atualização Português do Brasil
2021-07-12 21:13:51 +10:00
Anderson_Cardoso
eb11638e92 Atualização Português do Brasil
@stenzek you can close both PR's: #2393 and #2260

Reason: #2260 is too old and those changes were already days or at least weeks behind #2393 due to fact changes made there were made based on 'vanished' or obsolete lines so there is no sense update lines that will never be seen by users. Also, most of relevant (not obsolete) things / lines pointed out in that PR are being pushed by myself now. 

Thank You!
2021-07-11 21:36:31 -03:00
Connor McLaughlin
5396a5513d UWP: Map mouse buttons to match Qt 2021-07-11 21:44:18 +10:00
Connor McLaughlin
134056bb93 NoGUI: Map mouse buttons to match Qt 2021-07-11 21:44:10 +10:00
Connor McLaughlin
1405ba8a6b GPU/SW: Specialize rasterizing functions further 2021-07-11 21:23:12 +10:00
Connor McLaughlin
0ff1402fcd dep/libchdr: Disable verification/subcode decompression
Small speed boost on low end devices.
2021-07-11 20:58:46 +10:00
Connor McLaughlin
3be6270b2d ByteStream: Fix atomic updates on external storage with UWP 2021-07-11 19:05:30 +10:00
Connor McLaughlin
e8c16056b6 Common/FileSystem: Handle S/R modes for UWP 2021-07-11 19:05:08 +10:00
Connor McLaughlin
95f0185b5c UWP: Declare mcd as a file type 2021-07-11 17:22:28 +10:00
Connor McLaughlin
b10379fc7c FullscreenUI: Fix swapped audio/enhancement titles 2021-07-11 17:20:41 +10:00
Connor McLaughlin
efd4c70664 XAudio2OutputStream: Fix volume not applying 2021-07-11 17:19:29 +10:00
Connor McLaughlin
c3cbe3b969 CI: Enable UWP/AppX releases 2021-07-11 16:47:21 +10:00
Connor McLaughlin
a2c2dd31a2 Merge pull request #2391 from andercard0/patch-156
Atualização Português do Brasil
2021-07-11 16:46:59 +10:00
Anderson_Cardoso
524edc47a9 Atualização Português do Brasil
Update file to latest.
2021-07-11 02:36:05 -03:00
Connor McLaughlin
56ef250c36 Merge pull request #2359 from stenzek/uwp
Port DuckStation to UWP (and Xbox)
2021-07-11 15:23:59 +10:00
Connor McLaughlin
9affb035f8 Add UWP frontend 2021-07-11 15:20:38 +10:00
Connor McLaughlin
b0adcb5ea6 FrontendCommon: Add HTTPDownloaderUWP 2021-07-11 15:20:38 +10:00
Connor McLaughlin
99018b51b4 FrontendCommon: Support UWP in helper classes 2021-07-11 15:20:38 +10:00
Connor McLaughlin
b35a1308c4 Core: Make XAudio2 the default backend for UWP 2021-07-11 15:20:38 +10:00
Connor McLaughlin
ca747d8d7a CPU/CodeCache: Support UWP 2021-07-11 15:20:38 +10:00
Connor McLaughlin
0f911e9dbf Common/PageFaultHandler: Support for unwind exceptions
Needed for UWP.
2021-07-11 15:20:38 +10:00
Connor McLaughlin
6251894d3c Common/JitCodeBuffer: Add ability to reserve non-code space 2021-07-11 15:20:38 +10:00
Connor McLaughlin
03ab18909a Common: Add UWP support for helper classes 2021-07-11 15:20:38 +10:00
Connor McLaughlin
281f7c5789 Build: Add UWP configurations 2021-07-11 14:13:59 +10:00
Connor McLaughlin
c0352eb19f GPU/HW: Clear host display texture on interlace switch 2021-07-11 14:09:11 +10:00
Connor McLaughlin
928b5694ed GPU/D3D12: Fix VRAM getting trashed on interlace switch 2021-07-11 14:07:33 +10:00
Connor McLaughlin
05259bc851 HostInterface: Refresh display on settings change/state load 2021-07-11 14:03:14 +10:00
Connor McLaughlin
bf63be27c6 GPU/D3D12: Fix incorrect descriptor for VRAM copy 2021-07-11 13:43:59 +10:00
Connor McLaughlin
4bec982ca8 D3D12HostDisplay: Fix incorrect height when streaming updates 2021-07-11 13:43:47 +10:00
Connor McLaughlin
c7ce9562fa D3D12/Texture: Force 16MB uploads down temp texture path 2021-07-11 13:33:26 +10:00
Connor McLaughlin
9dab3f9b9b D3D12/StreamBuffer: Fix edge case of allocating buffer size 2021-07-11 13:32:17 +10:00
Connor McLaughlin
096a92ba84 GPU/HW: Simplify shader compile progress updates 2021-07-11 13:21:41 +10:00
Connor McLaughlin
98af6e7228 GPU/ShaderGen: Use [unroll] for resolve loops 2021-07-11 13:08:25 +10:00
Connor McLaughlin
719710ef98 GPU/D3D12: Fix multisampled resolve 2021-07-11 13:07:55 +10:00
Connor McLaughlin
2937c72721 GPU/D3D12: Fix incorrect samples for textures 2021-07-11 13:07:44 +10:00
Connor McLaughlin
ba3b5765ac Qt: Windows compile fix 2021-07-10 22:13:13 +10:00
Connor McLaughlin
14e7f8fd13 GPU: Add D3D12 renderer 2021-07-10 21:45:10 +10:00
Connor McLaughlin
5da9edceb9 Build: Unify MSBuild options in props files 2021-07-10 21:45:10 +10:00
Connor McLaughlin
a50d18242d Common/ByteStream: Add explicit include for alloca 2021-07-10 21:45:10 +10:00
Connor McLaughlin
6a74272fb4 glslang: Warning/error fix 2021-07-10 21:45:10 +10:00
Connor McLaughlin
f3c028d3af NoGUI/Win32: Use explicit wide strings 2021-07-10 21:28:33 +10:00
Connor McLaughlin
ef226105c1 Merge pull request #2381 from andercard0/patch-155
Atualização Português do Brasil
2021-07-10 14:29:24 +10:00
Connor McLaughlin
79dccc9d05 GPU/SW: Fix regression with non-transparent triangles 2021-07-10 13:23:12 +10:00
Anderson_Cardoso
fd998b69f8 Atualização Português do Brasil
Update file to latest
2021-07-09 11:17:20 -03:00
Connor McLaughlin
7caa5c09dd Qt: Add option to reset to defaults 2021-07-09 13:07:41 +10:00
Connor McLaughlin
cf51557b7f GPU/Vulkan: Fix possible out-of-range pipeline with depth buffer 2021-07-09 13:07:41 +10:00
Connor McLaughlin
bb289c336f Merge pull request #2377 from andercard0/patch-154
Atualização Português do Brasil
2021-07-09 13:07:30 +10:00
Anderson_Cardoso
c3f2151de1 Update duckstation-qt_pt-br.ts 2021-07-07 21:23:27 -03:00
Anderson_Cardoso
dec25dc0af Atualização Português do Brasil
Corrected a typo
2021-07-07 09:07:22 -03:00
Connor McLaughlin
24b4be5110 Merge pull request #2375 from andercard0/patch-153
Atualização Português do Brasil
2021-07-07 19:54:43 +10:00
Connor McLaughlin
1a64df3346 Merge pull request #2369 from andercard0/patch-152
Update Japanese localization
2021-07-07 19:54:38 +10:00
Connor McLaughlin
8f3162675f Warning fixes 2021-07-07 19:54:13 +10:00
Connor McLaughlin
2cf6e8f5c9 Move dist files into extras 2021-07-07 19:54:13 +10:00
Anderson_Cardoso
cc9999f20d Atualização Português do Brasil
Brushed up translation and updated to the latest.
2021-07-06 23:59:13 -03:00
Anderson_Cardoso
d94af2b8d0 Update Japanese localization
Update Japanese file to latest by: Mikakunin
2021-07-05 09:49:15 -03:00
Connor McLaughlin
dadd3fd26b Merge pull request #2367 from andercard0/patch-151
Android - Arrays
2021-07-05 21:46:43 +10:00
Connor McLaughlin
e520f80a42 Merge pull request #2366 from andercard0/patch-150
Android - Strings
2021-07-05 21:46:39 +10:00
Connor McLaughlin
45eae3e7ae Merge pull request #2361 from andercard0/patch-149
Update Turkish localization (Foxtrot Uniform)
2021-07-05 21:46:28 +10:00
Connor McLaughlin
2f3512aa33 GPU/D3D11: Fix incorrect state being used with depth buffer on 2021-07-05 21:44:08 +10:00
Connor McLaughlin
2f2dc9cf72 GameSettings: Force software renderer for Addie no Okurimono - To Moze from Addie 2021-07-05 21:44:03 +10:00
Connor McLaughlin
acb108f3ea GPU/SW: Improve software blending precision 2021-07-05 21:44:03 +10:00
Anderson_Cardoso
5e54d7b60c Android - Arrays
Update arrays file to latest
2021-07-04 21:35:36 -03:00
Anderson_Cardoso
e012e00b7a Android - Strings
Update string file to latest
2021-07-04 21:26:40 -03:00
Anderson_Cardoso
07fe20e9b9 Update Turkish localization (Foxtrot Uniform)
Update localization file to latest - by: Delta Foxtrot
2021-07-04 12:00:56 -03:00
Connor McLaughlin
0c4629bda2 CommonHostInterface: Compile warning fix 2021-07-04 22:17:46 +10:00
shikulja
a85f36b257 Update Russian translation (#2360)
* Update Russian translation

Cleaning up old translation strings, minor fixes

* Update Russian translation
2021-07-04 22:17:37 +10:00
Connor McLaughlin
9756168940 CommonHostInterface: Don't reset volume when fast forwarding 2021-07-04 21:53:02 +10:00
Connor McLaughlin
6e9ebfa5b5 GPU/D3D11: Fix possible buffer overwrite when reading back 2021-07-04 21:40:44 +10:00
Connor McLaughlin
8be2b66ebb CommonHostInterface: Remove system paused/resumed message 2021-07-04 16:02:16 +10:00
Connor McLaughlin
e4b23ffb7e dep/imgui: Handle backspace text input 2021-07-04 16:02:11 +10:00
Connor McLaughlin
89eda96cef dep/imgui: Activate text input on mouse/gamepad nav 2021-07-04 16:02:06 +10:00
Connor McLaughlin
3e7501c5c8 Qt: Create load/save state menus on demand 2021-07-04 14:46:51 +10:00
Connor McLaughlin
4ebca591fd FullscreenUI: Fix enable toggle not applying 2021-07-04 14:46:51 +10:00
Connor McLaughlin
7366d0fcff FullscreenUI: Fix start file running inside UI call 2021-07-04 14:46:51 +10:00
Connor McLaughlin
5e5255c6ae Add README.pt-br.md by @andercard0 2021-07-04 14:46:51 +10:00
Connor McLaughlin
0006032f78 Merge pull request #2351 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-04 14:28:11 +10:00
Connor McLaughlin
3e696ee719 Merge pull request #2352 from andercard0/patch-146
Atualização Português do Brasil
2021-07-04 14:27:28 +10:00
Connor McLaughlin
ffd141d05d Merge pull request #2354 from andercard0/patch-147
Update Turkish localization (Foxtrot Uniform)
2021-07-04 14:27:23 +10:00
Anderson_Cardoso
0af9ac7ff8 Update Turkish localization (Foxtrot Uniform)
Update Turkish file to latest! By: Delta Oscar Uniform.
2021-07-03 13:07:38 -03:00
Anderson_Cardoso
77b3a43c16 Atualização Português do Brasil
Update localization to latest.
2021-07-03 12:00:25 -03:00
zkdpower
e4b6f3a159 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-03 19:40:16 +08:00
shikulja
b4092a54bf Update Russian translation (#2350)
* Update Russian translation

* Update Russian translation

ups forgot
2021-07-03 21:10:40 +10:00
Connor McLaughlin
3da6c604d7 CommonHostInterface: Scale full axis to half axis bindings 2021-07-03 21:09:10 +10:00
Connor McLaughlin
4ddab3609d FullscreenUI: Fix settings menu offscreen with debug menu 2021-07-03 16:50:51 +10:00
Connor McLaughlin
24306be757 CommonHostInterface: Add save state backup option 2021-07-03 16:50:51 +10:00
Connor McLaughlin
53cabbb134 FileSystem: Add RenamePath() 2021-07-03 16:50:51 +10:00
Connor McLaughlin
762ab3ff43 CommonHostInterface: Add undo load state feature 2021-07-03 16:50:51 +10:00
Connor McLaughlin
af7dc40f5f Merge pull request #2349 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-03 15:12:24 +10:00
Connor McLaughlin
0d86d85752 FullscreenUI: Support binding half axes 2021-07-03 15:11:45 +10:00
Connor McLaughlin
f861fa40e5 Qt: Support binding half axes 2021-07-03 15:04:50 +10:00
Connor McLaughlin
a84992c395 NeGcon: Use 0..1 range instead of -1..1 for I/II/L 2021-07-03 15:04:33 +10:00
Connor McLaughlin
0ceb0f7a4a SDLControllerInterface: Support half axis bindings 2021-07-03 15:04:14 +10:00
Connor McLaughlin
a51fc5a149 XInputControllerInterface: Support half axis bindings 2021-07-03 15:04:02 +10:00
Connor McLaughlin
895f4d6fea EvdevInputControllerInterface: Support half axis bindings 2021-07-03 15:03:36 +10:00
Connor McLaughlin
b5baee7c8c DInputControllerInterface: Support half axis bindings 2021-07-03 15:03:21 +10:00
zkdpower
601e0202da Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-03 12:52:08 +08:00
Connor McLaughlin
1da39bdb0b GameDB: Add NeGcon for a few games 2021-07-03 14:37:28 +10:00
Connor McLaughlin
a6abf7a83d TimingEvent: Fix possible negative tick execution 2021-07-03 14:29:39 +10:00
Connor McLaughlin
dbe5f3c30c FIFOQueue: Fix contiguous space with full buffer 2021-07-03 14:29:25 +10:00
Connor McLaughlin
47b390e356 AudioStream: Prevent buffering more frames than size 2021-07-03 14:29:08 +10:00
Connor McLaughlin
f1d942c2be Qt: Clarify game list settings titles 2021-07-03 13:18:11 +10:00
Connor McLaughlin
4f96eb80a6 FullscreenUI: Move sync to host refresh to display settings 2021-07-03 13:18:11 +10:00
Connor McLaughlin
62d7608ef2 CommonHostInterface: Fix uncapped fps during pause in fullscreen UI 2021-07-03 13:18:11 +10:00
Connor McLaughlin
98e1bdee8d dep/vulkan-loader: _WIN32 -> WIN32 2021-07-03 13:18:11 +10:00
Connor McLaughlin
6dadc133ea Merge pull request #2348 from andercard0/patch-145
Android - Strings
2021-07-03 13:17:48 +10:00
Connor McLaughlin
8382545273 Merge pull request #2347 from andercard0/patch-144
Android - Arrays
2021-07-03 13:17:38 +10:00
Connor McLaughlin
08e081b1f6 Merge pull request #2346 from andercard0/patch-143
Atualização Português do Brasil
2021-07-03 13:17:27 +10:00
Connor McLaughlin
3836aafdc3 Merge pull request #2345 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-07-03 13:17:13 +10:00
Anderson_Cardoso
16641ff1f0 Update strings.xml 2021-07-02 20:27:34 -03:00
Anderson_Cardoso
1cdb27a2fc Android - Strings
Update strings file to latest.
2021-07-02 17:19:28 -03:00
Anderson_Cardoso
ed24c3e3ad Android - Arrays
Update arrays file to latest.
2021-07-02 15:29:52 -03:00
Anderson_Cardoso
2c44839a4b Atualização Português do Brasil
Update file to latest.
2021-07-02 08:23:18 -03:00
zkdpower
fb074bb5dd Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-07-02 11:55:35 +08:00
Anderson_Cardoso
173efd46ff Atualização Português do Brasil
Update file to latest.
2021-07-02 12:49:51 +10:00
zkdpower
778ff272fe Update Simple-Chinese Translation to latest. (#2343)
* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest. 

Update Simple-Chinese Translation to latest.
2021-07-02 12:49:51 +10:00
Connor McLaughlin
409c2b36ff Qt: Add game list exclude path UI 2021-07-02 12:49:32 +10:00
Connor McLaughlin
b2a5f35d44 GameList: Add ability to exclude/filter paths 2021-07-02 12:24:27 +10:00
zkdpower
cb36171b17 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-30 23:39:24 +08:00
zkdpower
914b91ed4d Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-30 22:04:19 +08:00
Connor McLaughlin
172c522a73 CI: Fix incorrect auto-updater arm64 filename 2021-06-30 20:20:18 +10:00
Connor McLaughlin
435865b45d FullscreenUI: Redesign settings window 2021-06-30 19:12:56 +10:00
Connor McLaughlin
7967b940d6 FullscreenUI: Fix autofire locking menu up 2021-06-30 19:12:47 +10:00
Connor McLaughlin
c41f82b2e2 Qt: Move some options around 2021-06-30 15:40:31 +10:00
Connor McLaughlin
5865064387 FrontendCommon: Add XAudio2 audio backend 2021-06-30 15:15:49 +10:00
Connor McLaughlin
37e50c62f0 CDROM: Fix intermediate seek->read status transition 2021-06-30 14:38:30 +10:00
Connor McLaughlin
911e9a37f1 WIN32 macro -> _WIN32 2021-06-30 14:38:07 +10:00
Anderson_Cardoso
489de3f9ce Atualização Português do Brasil (#2324)
* Atualização Português do Brasil

Brushed up translation and updated to the latest.

* Update duckstation-qt_pt-br.ts

* Update duckstation-qt_pt-br.ts
2021-06-30 14:21:06 +10:00
zkdpower
413f3118ac Update Simple-Chinese Translation to latest. (#2333)
* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.

* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.
2021-06-30 14:20:50 +10:00
Connor McLaughlin
48422a9932 Merge pull request #2336 from Wunkolo/vk-debug-utils
GPU/Vulkan: Update VK_EXT_debug_report to VK_EXT_debug_utils
2021-06-30 14:20:37 +10:00
Wunkolo
b7f583d10f GPU/Vulkan: Update VK_EXT_debug_report to VK_EXT_debug_utils
`VK_EXT_debug_report` has been officially depreciated by khronos in favor of the `VK_EXT_debug_utils` extension
2021-06-28 13:57:49 -07:00
zkdpower
1096376e35 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-28 05:29:18 +08:00
zkdpower
aa6bb9606c Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-28 02:26:11 +08:00
zkdpower
af44e776b3 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-28 01:09:49 +08:00
Connor McLaughlin
ce48b1dce0 Merge pull request #2323 from 6lackmag3/patch-66
Update values-ru/strings to latest
2021-06-27 13:53:49 +10:00
Connor McLaughlin
ae483b8f15 Merge pull request #2322 from 6lackmag3/patch-68
Update values-ru/arrays to latest
2021-06-27 13:53:42 +10:00
Connor McLaughlin
571862cbbf Merge pull request #2314 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-27 13:53:37 +10:00
Connor McLaughlin
bc1331208b System: Don't try to preload multi-disc images 2021-06-27 13:52:43 +10:00
Connor McLaughlin
06b009f361 Warning fixes 2021-06-27 13:51:22 +10:00
6lackmag3
944d1673ca Update values-ru/arrays to latest 2021-06-27 03:14:54 +03:00
6lackmag3
8801623e72 Update values-ru/strings to latest 2021-06-27 03:12:51 +03:00
zkdpower
8e80ba6cd2 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-26 00:03:38 +08:00
Connor McLaughlin
1a18e3ceb8 Update README.md 2021-06-26 01:22:07 +10:00
Connor McLaughlin
198d032fcc Extras: Add padtest 2021-06-26 01:22:07 +10:00
Connor McLaughlin
e6e7e6d448 Extras: Add translation sources 2021-06-26 01:22:07 +10:00
Connor McLaughlin
7ff71a9398 Merge pull request #2313 from andercard0/patch-140
Atualização Português do Brasil
2021-06-26 00:03:55 +10:00
Connor McLaughlin
23b5414270 Merge pull request #2312 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-26 00:03:46 +10:00
Connor McLaughlin
c44e614913 MemoryCardImage: Fix incorrect format string 2021-06-26 00:03:18 +10:00
Anderson_Cardoso
b910794abf Atualização Português do Brasil
Update file to latest.
2021-06-25 08:37:09 -03:00
zkdpower
e7eb182c15 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-25 18:10:03 +08:00
Connor McLaughlin
1ecf5cf76a Qt/MemoryCardEditor: Support undeleting files 2021-06-25 14:43:19 +10:00
Connor McLaughlin
f7587eaeac GPU/HW: Fix incorrect range for shader compiling progress 2021-06-25 13:56:06 +10:00
Connor McLaughlin
6f5d15d2aa Merge pull request #2311 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-25 13:55:53 +10:00
zkdpower
9a32bc0dec Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-25 11:44:39 +08:00
Connor McLaughlin
e449563530 Qt: Update Japanese translation by mikakunin 2021-06-25 00:20:29 +10:00
Connor McLaughlin
5488bf7128 CDROM: Ignore speed change for non-cued Play 2021-06-25 00:20:26 +10:00
Connor McLaughlin
defce709da GPU/HW: Don't allow adaptive downsampling at non-pow2 scales 2021-06-25 00:19:14 +10:00
Connor McLaughlin
2fbfd53d51 GameSettings: Force CPU PGXP mode for a bunch of games 2021-06-24 17:04:52 +10:00
Connor McLaughlin
ea26fc4b49 Qt/GameProperties: Fix single step value of geometry threshold 2021-06-24 16:59:38 +10:00
Connor McLaughlin
2343696995 CPU/Recompiler: Fix a few incorrect calls to PGXP
Fixes PGXP not being effective in Grandia.
2021-06-24 16:52:40 +10:00
Connor McLaughlin
98f0e5908b GPU/HW: Fix incorrect UV range for upscaled direct texturing 2021-06-24 14:45:15 +10:00
Connor McLaughlin
8ddc1d6016 GameSettings: Force icache for International Superstar Soccer Pro '98 2021-06-24 14:44:54 +10:00
Connor McLaughlin
226acdfe18 Merge pull request #2300 from CookiePLMonster/measured-cheevos
Measured achievements
2021-06-22 21:55:23 +10:00
Silent
67c92471d6 Slightly decrease spacing between header entries in Leaderboards
When Hardcore Mode was disabled and a specific leaderboard was previewed,
the Hardcore Mode notice text slightly overlapped the board legend.
2021-06-22 21:45:07 +10:00
Silent
5e9fc91669 Add support for measured achievements
These achievements show a progress bar in the Achievements screen
2021-06-22 21:45:07 +10:00
Silent
d567f1e870 Upgrade rcheevos to v10.1.0 2021-06-22 21:45:07 +10:00
Connor McLaughlin
7ac537bf73 CPU/Recompiler: Flush load delay when lwl/lwr is first instruction
Fixes corrupted textures in Zen Nihon Joshi Pro Wrestling - Joou
Densetsu - Yume no Taikousen.
2021-06-22 14:50:18 +10:00
Connor McLaughlin
5a8320b63a Merge pull request #2298 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-22 14:49:53 +10:00
Connor McLaughlin
a16787595e Merge pull request #2297 from andercard0/patch-139
Atualização Português do Brasil
2021-06-22 14:49:47 +10:00
Connor McLaughlin
cfe606fb5a Merge pull request #2296 from DCxDemo/patch-1
russian translation typo спиcкок -> список
2021-06-22 14:49:40 +10:00
zkdpower
fa74c6270b Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-21 22:19:04 +08:00
Connor McLaughlin
9d26a85967 OpenGLHostDisplay: Disable PBOs for streaming on Broadcom GPUs
glTexImage2D takes an extra 2-3ms when using PBOs for some reason,
despite the extra copy application-side...
2021-06-21 22:16:33 +10:00
Connor McLaughlin
859c78fdc0 DRMDisplay: Restore previous framebuffer on shutdown 2021-06-21 22:04:59 +10:00
Connor McLaughlin
7b87b386a9 CPU/Recompiler: Fix performance regression in AArch32/64 2021-06-21 22:04:50 +10:00
Anderson_Cardoso
c618598f7c Atualização Português do Brasil
Update file to latest.
2021-06-21 08:46:41 -03:00
DCxDemo
fbe7ba4a36 translation typo спикок -> список
translation typo спикок -> список
2021-06-21 12:29:40 +03:00
Connor McLaughlin
b2e8aa2d30 Qt: Add option to create non-existant memory cards on edit 2021-06-21 17:34:38 +10:00
Connor McLaughlin
84fe9aae0e Qt/MemoryCardEditor: Add format button 2021-06-21 17:25:08 +10:00
Connor McLaughlin
ed6145ac77 Qt/MemoryCardEditor: Support importing non-mcs raw files 2021-06-21 17:25:02 +10:00
Connor McLaughlin
2ab38aa47c FullscreenUI: Fix unpausing when closing achievement list 2021-06-21 12:16:27 +10:00
Connor McLaughlin
19dcd07f87 FullscreenUI: Fix compiling without cheevos 2021-06-21 12:16:27 +10:00
Connor McLaughlin
bf3476d903 Qt: Update Japanese translation by mikakunin 2021-06-21 12:16:26 +10:00
Connor McLaughlin
012167c028 Merge pull request #2291 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-21 12:16:14 +10:00
Connor McLaughlin
16332f66c1 Merge pull request #2292 from andercard0/patch-138
Atualização Português do Brasil
2021-06-21 12:15:51 +10:00
Anderson_Cardoso
828aa880b8 Atualização Português do Brasil
- File updated to latest;
- OSD Plurarity not being applied correctly;
- Plurarity lines weren't being applied correctly fixed.
2021-06-20 16:43:30 -03:00
zkdpower
68f9a6b39c Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-21 01:14:12 +08:00
Connor McLaughlin
49ee838562 Qt: Remove zh-cn translation causing crash on subimage change 2021-06-20 19:22:07 +10:00
Connor McLaughlin
0f564885dc CMake: Link to IOKit on Mac 2021-06-20 19:21:51 +10:00
Connor McLaughlin
9027864d3d CommonHostInterface: Remove achievements/leaderboards hotkeys on Android 2021-06-20 19:18:01 +10:00
Connor McLaughlin
d9412f9fcd FrontendCommon: Add option to inhibit screensaver 2021-06-20 15:50:59 +10:00
Connor McLaughlin
531845a0c7 FullscreenUI: Add rich presence to quick menu 2021-06-20 14:01:10 +10:00
Connor McLaughlin
8f5b2f24cf Cheevos: Update rich presence in test mode (but don't ping) 2021-06-20 13:40:15 +10:00
Connor McLaughlin
a072455903 CommonHostInterface: Add hotkeys for opening leaderboards/achievements 2021-06-20 13:33:30 +10:00
Connor McLaughlin
1644a0762d GPU/OpenGL: Disable MSAA on GLES3.1 2021-06-20 13:10:26 +10:00
Connor McLaughlin
1fe85a0d91 Merge pull request #2281 from CookiePLMonster/leaderboards-hardcore-only
Allow submitting entries to Leaderboards only in Hardcore Mode.
2021-06-20 01:19:56 +10:00
Connor McLaughlin
995bab72c4 Merge pull request #2279 from CookiePLMonster/retroachievements-discord-rpc
Show RetroAchievements rich presence in Discord-RPC
2021-06-20 01:18:51 +10:00
Silent
99fbd2827b Allow submitting entries to Leaderboards only in Hardcore Mode.
This is a requirement from RetroAchievements.
2021-06-19 17:15:47 +02:00
Silent
c86b7309d4 Show RetroAchievements rich presence in Discord-RPC 2021-06-19 14:13:10 +02:00
Connor McLaughlin
e7b113f454 System: Don't reset performance counters when turboing 2021-06-19 21:15:50 +10:00
Connor McLaughlin
bda573a540 Merge pull request #2278 from CookiePLMonster/leaderboard-switching-hotfix
Leaderboards: Implement missing teardown
2021-06-19 21:15:27 +10:00
Silent
c97aafb79d Leaderboards: Implement missing teardown 2021-06-19 12:30:07 +02:00
Connor McLaughlin
bc34a75e03 CDROM: Add missing include for <cmath> 2021-06-19 15:23:25 +10:00
Connor McLaughlin
67344070ea CDROM: Improve simulation of seek timing 2021-06-19 15:16:01 +10:00
Connor McLaughlin
2c19c7ce57 CDROM: Cancel speed changes if they're not complete 2021-06-19 15:16:01 +10:00
Connor McLaughlin
b1776dea61 CDROM: Simulate position holding for GetlocL too 2021-06-19 15:16:01 +10:00
Connor McLaughlin
b1c230bd86 Merge pull request #2276 from andercard0/patch-135
Update
2021-06-19 15:15:16 +10:00
Connor McLaughlin
194d6bf7ff Merge pull request #2277 from CookiePLMonster/leaderboards
RetroAchievements Leaderboards implementation
2021-06-19 15:14:51 +10:00
Silent
cce40a85dd Implemented Leaderboards UI 2021-06-19 01:30:36 +02:00
Anderson_Cardoso
6288547a19 Update
Update file to latest.
2021-06-18 13:50:33 -03:00
Silent
e361212bbf Basic leaderboard integration
No UI yet, only sends unlocks to the server.
2021-06-17 20:43:50 +02:00
Silent
c705eea3f9 Expose additional functions from rc_url.h
Will be needed for building proper leaderboard requests
2021-06-17 20:20:59 +02:00
Connor McLaughlin
815146e7d8 GPU/HW: Fix incorrect blend factor
Regression from 75e6c175de
2021-06-17 20:04:05 +10:00
Connor McLaughlin
e4fb028c8c GameDB: Add PlayStationMouse for Project - Horned Owl 2021-06-17 20:04:05 +10:00
Connor McLaughlin
794ab76ed5 Merge pull request #2268 from andercard0/patch-134
Atualização Português do Brasil
2021-06-17 20:03:53 +10:00
Anderson_Cardoso
d6dcb3fc19 Atualização Português do Brasil
- Typo fixed;
- Plurality fixed;
- Missing letters fixed;
- Unused spaces fixed;
- Untranslated terms now translated;
- Better debugger terms applied for Pt-br language.
2021-06-15 17:55:46 -03:00
Connor McLaughlin
75e6c175de GPU/HW: Elide redundant UBO updates on draw mode change 2021-06-15 23:10:49 +10:00
Connor McLaughlin
0e01a65e78 Merge pull request #2251 from CookiePLMonster/fullscreen-ui-exit-crash
Fix a crash when shutting down emulation from the Hardcore mode confirmation prompt
2021-06-15 23:09:16 +10:00
Connor McLaughlin
a4bf83740b Qt: Update Japanese translation by mikakunin 2021-06-15 23:08:18 +10:00
Connor McLaughlin
35c6d2d854 Merge pull request #2267 from RaydenX93/update_it_20210614
Update duckstation-qt_it.ts
2021-06-15 23:04:40 +10:00
Connor McLaughlin
67b517bd8a Merge pull request #2265 from andercard0/patch-132
Atualização Português do Brasil
2021-06-15 23:04:31 +10:00
Connor McLaughlin
3157684625 Merge pull request #2264 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-15 23:04:21 +10:00
Connor McLaughlin
4f09d61825 CPU: Don't panic on invalid instructions 2021-06-15 22:58:29 +10:00
Connor McLaughlin
2548f75267 CDROM: Differentiate between logical and physical hold 2021-06-15 22:44:21 +10:00
Silent
ee0e7f15c1 Fix a crash when shutting down emulation from the Hardcore mode confirmation prompt 2021-06-15 11:37:02 +02:00
RaydenX93
7b60080a43 Update duckstation-qt_it.ts 2021-06-14 19:35:58 +02:00
Anderson_Cardoso
bc4619e4c9 Atualização Português do Brasil
- Update file to latest. 
- As well as some posponed changes and fixes.
2021-06-14 11:26:49 -03:00
zkdpower
28d018218e Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-14 22:22:08 +08:00
Connor McLaughlin
16c02c8559 CDROM: Don't apply speed change delay when already changing 2021-06-14 19:36:37 +10:00
Connor McLaughlin
72d7ba9163 SPU: Increase transfer rate to RAM
Fixes broken sound effects in Grand Theft Auto London.
2021-06-14 19:32:15 +10:00
Connor McLaughlin
0cb9a3dcb6 dep/libFLAC: Silence CPUID messages in debug builds 2021-06-14 19:32:15 +10:00
Connor McLaughlin
fe7a195e3f Merge pull request #2258 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-14 15:04:58 +10:00
Connor McLaughlin
f4da56efea CDROM: Simulate the time it takes to change speeds 2021-06-14 14:56:35 +10:00
Connor McLaughlin
db5be6c70c TimingEvent: Add Delay method 2021-06-14 14:55:20 +10:00
Connor McLaughlin
38288e6b36 CDROM: Factor in implicit seeks when calculating time 2021-06-14 13:47:55 +10:00
Connor McLaughlin
f2bfbabdcb CDROM: Don't reset full state on Reset command 2021-06-14 13:47:41 +10:00
Connor McLaughlin
aa675163e2 CDROM: Fix second response event not being cleaned up 2021-06-14 13:47:04 +10:00
zkdpower
924c573821 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-13 23:34:10 +08:00
Connor McLaughlin
093904f930 CubebAudioStream: Set paused flag on main thread 2021-06-13 22:30:39 +10:00
Connor McLaughlin
e1d9f93172 Cheevos: Suffix unofficial achievements in popup 2021-06-13 18:32:13 +10:00
Connor McLaughlin
2113405c7a CPU/Recompiler: Elide tick flush completely where possible 2021-06-13 18:26:12 +10:00
Connor McLaughlin
e8ac1fca80 CPU/Recompiler: Optimize bgez zero, addr to unconditional 2021-06-13 18:26:12 +10:00
Connor McLaughlin
0ba405ef2d Merge pull request #2243 from CookiePLMonster/unofficial-achievements
Add an "Unofficial Test Mode" to allow unlocking non-core achievements
2021-06-13 18:25:50 +10:00
Connor McLaughlin
b5af2b25cf CI: Collapse del commands 2021-06-12 22:43:04 +10:00
Connor McLaughlin
d3d92226a5 PGXP: Further optimizations
Up to an 8% speed improvement in Racing Lagoon with CPU mode enabled.
2021-06-12 22:02:33 +10:00
Connor McLaughlin
a47686a313 PGXP: Don't abort() on vertex cache alloc fail 2021-06-12 20:50:48 +10:00
Connor McLaughlin
22b2963bfe Update compatibility list 2021-06-12 18:22:58 +10:00
Connor McLaughlin
74013a0853 CDROM: Use physical position for seek time calculations 2021-06-12 18:09:28 +10:00
Connor McLaughlin
36bfc461f9 CDROM: Refactor start/stop/second response 2021-06-12 18:09:28 +10:00
Connor McLaughlin
9d36ce757d CDROM: Simulate motor spin-up time
Fixes disc changing in Tales of Destiny II.
2021-06-11 20:47:46 +10:00
Connor McLaughlin
95247b0b5e CDROM: Don't set motor on before calc read/play time 2021-06-11 20:47:46 +10:00
Connor McLaughlin
6b83bb0cfe GameSettings: Use icache for Chrono Cross 2021-06-11 20:47:46 +10:00
Connor McLaughlin
8407610e42 GPU/Vulkan: Invalidate display framebuffer where possible 2021-06-11 20:47:46 +10:00
Connor McLaughlin
51fb23c850 GPU/OpenGL: Invalidate display framebuffer where possible 2021-06-11 20:47:46 +10:00
Connor McLaughlin
aae0fb3f2b System: Support loading libps.exe (for Net Yaroze) 2021-06-11 20:47:46 +10:00
Connor McLaughlin
d53daf2f26 CDImageEcm: Better error handling for corrupted dumps 2021-06-11 20:47:46 +10:00
Connor McLaughlin
1e2bdc11e7 Merge pull request #2241 from CookiePLMonster/hardcore-mode-improvements-2
Don't allow resuming from Fullscreen UI when Hardcore mode is active
2021-06-11 20:44:31 +10:00
Silent
6c52031966 Add an "Unofficial Test Mode" to allow unlocking non-core achievements 2021-06-09 20:15:19 +02:00
Silent
283021f1a2 Don't allow resuming from Fullscreen UI when Hardcore mode is active 2021-06-09 19:13:07 +02:00
Connor McLaughlin
44da13358d Merge pull request #2238 from CookiePLMonster/hardcore-mode-improvements
Misc improvements
2021-06-09 21:01:54 +10:00
Connor McLaughlin
da9c4c1175 CueParser: Fix crash on invalid mode string 2021-06-09 19:44:06 +10:00
Connor McLaughlin
52673743e1 CI: Fix workflow failure 2021-06-09 13:12:04 +10:00
Connor McLaughlin
8be8921ae5 Qt: Fix autofire buttons showing with no controller attached 2021-06-09 12:32:33 +10:00
Connor McLaughlin
22d1e6cf02 Qt: Fix crash on controller type mismatch in Japanese 2021-06-09 12:30:59 +10:00
Silent
fce4829d2d Unify CPU clock speed behaviour in Game Properties and Console Settings 2021-06-08 18:43:44 +02:00
Silent
7d8f3d26a6 Do not allow loading save states via commandline in Hardcore mode 2021-06-08 18:43:43 +02:00
Silent
d52b0e5dbb Disallow underclocking in Hardcore mode 2021-06-08 18:38:51 +02:00
Silent
35b35c9212 Hide "Load" from the save state UI legend in Hardcore mode 2021-06-08 18:38:51 +02:00
Silent
e21f2644d0 Refactor SystemBootParameters ownership 2021-06-08 18:38:12 +02:00
Connor McLaughlin
4e282cd172 README: Update Android apk link 2021-06-08 17:03:41 +10:00
Connor McLaughlin
64560d09fc Update CI scripts 2021-06-08 16:39:52 +10:00
Connor McLaughlin
6e49adb508 Remove Android app
This repository exists solely for the desktop version now.
2021-06-08 16:34:28 +10:00
Connor McLaughlin
81da9be2d1 Android: Add quick load/save touchscreen buttons 2021-06-07 18:40:32 +10:00
Connor McLaughlin
20afc1c4a1 Android: Handle some possible surface loss cases 2021-06-07 18:40:32 +10:00
Connor McLaughlin
141fac0481 Android: Don't allow fragment restoration 2021-06-07 18:40:32 +10:00
Connor McLaughlin
e09a9ff846 Merge pull request #2233 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-07 18:39:43 +10:00
zkdpower
d7e2795fe8 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-06 22:52:58 +08:00
Connor McLaughlin
4435851276 CI: Generate app bundles 2021-06-06 15:53:36 +10:00
Connor McLaughlin
c4cfb40f7b Android: Update dependencies 2021-06-06 15:53:36 +10:00
Connor McLaughlin
543997ff75 Android: Compile x86_64 native libraries 2021-06-06 15:53:36 +10:00
Connor McLaughlin
23da15a525 Android: Update to Gradle Plugin v4.2.1 2021-06-06 15:53:36 +10:00
Connor McLaughlin
31f03268cc Build: Opt out of -fno-semantic-interposition on Android 2021-06-06 15:53:36 +10:00
Connor McLaughlin
dc895edaa2 Android: Switch to Maven Central 2021-06-06 15:53:36 +10:00
Connor McLaughlin
857a07a5e7 Qt: Update Japanese translation by mikakunin 2021-06-06 15:53:36 +10:00
Connor McLaughlin
c41ec7df23 Merge pull request #2225 from andercard0/patch-128
Atualização Português do Brasil
2021-06-06 15:53:14 +10:00
Connor McLaughlin
74c83312bb Merge pull request #2227 from andercard0/patch-129
(Android) - Update Arrays
2021-06-06 15:53:03 +10:00
Anderson_Cardoso
10c831d4fa (Android) Update strings (#2228)
* (Android) Update strings

Updated string file to latest.
2021-06-06 15:52:43 +10:00
Anderson_Cardoso
4ccfd28b18 (Android) - Update Arrays
Update arrays file to latest.
2021-06-05 19:17:12 -03:00
Anderson_Cardoso
0cc718f85b Atualização Português do Brasil
- Some typo fixes;
- Update file to latest.
2021-06-05 17:24:14 -03:00
Connor McLaughlin
e118b5486e CDImagePPF: Fix incorrect filename saved to state 2021-06-05 18:12:59 +10:00
Connor McLaughlin
3caa9b7239 Android: Change order of seek speedup entries 2021-06-05 18:12:59 +10:00
Connor McLaughlin
e5f400b8d3 Merge pull request #2221 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-05 18:12:52 +10:00
zkdpower
497c813251 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-05 13:08:28 +08:00
Connor McLaughlin
a16f671362 Qt: Show CDROM State -> Show CD-ROM State 2021-06-05 13:46:31 +10:00
Connor McLaughlin
84b4a2836c Qt: Fix to file label in load/save menu 2021-06-05 13:46:31 +10:00
Connor McLaughlin
ad9712afca Qt: Add gear icon to disc games with user settings 2021-06-05 13:46:31 +10:00
Connor McLaughlin
e536674f80 Android: Display cutout setting shouldn't be dependent 2021-06-05 13:46:31 +10:00
Connor McLaughlin
c43d34af68 Merge pull request #2216 from 6lackmag3/patch-64
(Android) ru-translation updates and fixes
2021-06-05 13:46:15 +10:00
Connor McLaughlin
d677865d7a Merge pull request #2217 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-06-05 13:46:05 +10:00
zkdpower
41f367c441 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-06-05 09:28:19 +08:00
6lackmag3
c1bae40ef7 (Android) ru-translation updates and fixes 2021-06-04 23:14:45 +03:00
Connor McLaughlin
0c1ac4e9a6 Android: Add dummy view to expand layout bounds 2021-06-04 21:53:20 +10:00
Connor McLaughlin
8cf4c4f211 Android: Add option to expand display to cutout 2021-06-04 21:16:00 +10:00
Connor McLaughlin
ebcc11750d Build: Disable -fno-semantic-interposition on macOS 2021-06-04 19:03:49 +10:00
Connor McLaughlin
cac8080657 Remove unused libretro build scripts 2021-06-04 16:50:23 +10:00
Connor McLaughlin
950b81861b CI: Revert previous commit and fix underlying issue 2021-06-04 16:49:34 +10:00
Connor McLaughlin
1269a1e091 CI: Remove macOS builds completely
Random failures, and I don't have a machine to debug it on.
2021-06-04 14:22:30 +10:00
Connor McLaughlin
81f004b6c6 dep/msvc: Sync Qt submodule 2021-06-04 13:45:05 +10:00
Connor McLaughlin
d2f4170d01 Qt: Update lupdate scripts to point to 6.1.0 2021-06-04 13:45:05 +10:00
Connor McLaughlin
aac85299ea AudioStream: Make fields protected instead of private 2021-06-04 13:37:23 +10:00
Connor McLaughlin
350049826f Fix a bunch of compiler warnings 2021-06-04 13:14:30 +10:00
Connor McLaughlin
270bf59817 dep/libsamplerate: Sync minimum cmake version with main 2021-06-04 13:14:30 +10:00
Connor McLaughlin
02f75f25d3 Build: Default symbol visibility to hidden 2021-06-04 13:14:30 +10:00
Connor McLaughlin
262c43ac00 Build: Don't compile WGL/stackwalker for libretro 2021-06-03 21:32:23 +10:00
Connor McLaughlin
9845f1d76a DInputControllerInterface: Fix crash on shutdown 2021-06-03 14:05:11 +10:00
Connor McLaughlin
9feaae1a15 Merge pull request #2210 from mgziminsky/fix_autosave
NoGUI: Fix autosave on shutdown when started with -resume
2021-06-03 14:02:58 +10:00
Michael Ziminsky (Z)
6038389d35 NoGUI: Fix autosave on shutdown 2021-06-02 13:12:37 -07:00
Connor McLaughlin
3a831c543d GameSettings: Force icache for NHL FaceOff 2001 2021-06-02 15:13:43 +10:00
Connor McLaughlin
b02513d28d Update README/NEWS 2021-06-02 14:10:39 +10:00
Connor McLaughlin
e995331239 dep/vulkan-loader: Don't use potentially-conflicting symbol names 2021-06-02 13:41:54 +10:00
Connor McLaughlin
e398836a09 Qt: Update Turkish translation by Foxtrot Uniform 2021-06-02 12:50:43 +10:00
Connor McLaughlin
8f740cae9d Qt: Add Turkish icon by @andercard0 2021-06-02 12:49:58 +10:00
Connor McLaughlin
ce47639132 Merge pull request #2207 from andercard0/patch-127
Atualização Português do Brasil
2021-06-02 12:47:34 +10:00
Connor McLaughlin
1ab4b0d433 Merge pull request #2206 from 6lackmag3/patch-63
(Android) fixes & updates in values-ru/strings
2021-06-02 12:47:28 +10:00
Anderson_Cardoso
0e9a2ac2d5 Atualização Português do Brasil
Update file to latest.
2021-06-01 21:24:28 -03:00
6lackmag3
8acd0ab6e3 (Android) fixes & updates in values-ru/strings 2021-06-02 02:15:06 +03:00
Connor McLaughlin
8b57c24a7b Update README.md 2021-06-02 03:04:39 +10:00
Connor McLaughlin
a24b6bd8c7 Merge pull request #2203 from shikulja/master
Update Russian translation
2021-06-02 03:03:52 +10:00
Connor McLaughlin
46c34502b1 Qt: Add Turkish translation by Foxtrot Uniform 2021-06-02 03:03:29 +10:00
Connor McLaughlin
4f51310e83 Android: Add option in gamedirs to force scoped storage 2021-06-02 03:03:29 +10:00
Connor McLaughlin
3cb4d8e35a Android: Improve multitouch with guncon 2021-06-02 03:03:29 +10:00
Connor McLaughlin
98ae230d2d Android: Add missing CD-ROM options to advanced 2021-06-02 03:03:29 +10:00
Connor McLaughlin
7ff35828e4 Android: Use switch for trait game settings 2021-06-02 03:03:29 +10:00
Connor McLaughlin
b2447e2270 Android: Don't include autofire settings without controller set 2021-06-02 03:03:29 +10:00
shikulja
f8fad3c15a Update Russian translation
Last changes
Auto-fire buttons, Applying patches to images
2021-06-01 19:04:09 +03:00
shikulja
584427e33c Update Russian translation (#2202)
* Update duckstation-qt_ru.ts

* Update duckstation-qt_ru.ts

* Update Russian translation

new strings, adjustment
2021-06-01 22:17:46 +10:00
Connor McLaughlin
3cb01bf23d CDImage: Fix compilation on Linux 2021-06-01 22:04:25 +10:00
Connor McLaughlin
246797cf5c Qt: Fix inconsistent CDROM/CD-ROM in console settings 2021-06-01 21:56:12 +10:00
Connor McLaughlin
9aa386e96c System: Add option to load/apply image patches 2021-06-01 21:55:37 +10:00
Connor McLaughlin
77984035d2 CDImage: Add CDImagePPF to overlap a PPF on another image 2021-06-01 21:54:50 +10:00
Connor McLaughlin
5edc645d1f MemoryArena: Use module-unique shared memory name for libretro 2021-05-31 20:51:27 +10:00
Connor McLaughlin
179a7aea89 GPU/HW: Assume 240/288p for auto scale on start with all borders 2021-05-31 03:48:38 +10:00
Connor McLaughlin
d64bc193fd SaveStateSelectorUI: Make select/next hotkeys apply immediately 2021-05-30 13:21:25 +10:00
Connor McLaughlin
296a662e74 Qt: Add ability to load/save state from files 2021-05-30 13:19:53 +10:00
Connor McLaughlin
0229f25fc3 Android: Show patch code categories in list 2021-05-29 20:53:10 +10:00
Connor McLaughlin
1b0b88f60b Qt: Group cheats together in categories in menu 2021-05-29 20:51:30 +10:00
Connor McLaughlin
37e565698f Update README.md 2021-05-29 18:43:02 +10:00
Connor McLaughlin
4a13009af8 GameSettings: Force ICache for SLPM-86086 2021-05-29 18:35:41 +10:00
Connor McLaughlin
56c08254c9 CDImage: Fix incorrect index returned for track-relative 00:02:00
Fixes some voice lines being very briefly cut off in Tomb Raider.
2021-05-27 03:48:02 +10:00
Connor McLaughlin
e8e8b910a5 CDImage: Fix pregap not going to 00:00:00 2021-05-27 03:48:02 +10:00
Connor McLaughlin
28b8cb5bc6 Settings: Fix mismatches between default and fallback values 2021-05-27 03:48:01 +10:00
Connor McLaughlin
3e792651d4 Merge pull request #2174 from CookiePLMonster/vs2019-workaround
Common/DimensionalArray: Re-revert the workaround
2021-05-26 13:48:13 +10:00
Connor McLaughlin
205e18a0c7 Qt: Add icons by @andercard0 2021-05-26 13:42:35 +10:00
Connor McLaughlin
3ab7dcff82 CMake: Simplify platform detection a bit 2021-05-26 13:25:13 +10:00
Silent
803b68b279 Common/DimensionalArray: Re-revert the workaround
VS16.10 fixes the regression and bumps up _MSC_VER,
so make only VS2017 and VS16.9 use the workaround
2021-05-25 19:00:40 +02:00
Connor McLaughlin
deb7f0741a GameSettings: Force LUT fastmem for Racing Lagoon
Slight performance boost.
2021-05-26 02:50:44 +10:00
Connor McLaughlin
7c43f5c13e CPU/CodeCache: Fix compilation on 32-bit x86 2021-05-26 02:48:46 +10:00
Connor McLaughlin
baad1a4b23 CPU/Recompiler: Optimize away nops completely
35% performance improvement for PGXP CPU mode in Racing Lagoon.
2021-05-25 20:01:59 +10:00
Connor McLaughlin
f4242f390b GPU/HW: Use a larger epsilon for PowerVR 2021-05-25 20:01:37 +10:00
Connor McLaughlin
df26792c19 PGXP: Small optimization in memory lookup 2021-05-25 20:01:00 +10:00
Connor McLaughlin
eaab0cc033 GPU/ShaderGen: Use smaller position epsilon on PowerVR 2021-05-25 18:42:21 +10:00
Connor McLaughlin
df3427bb41 Android: Remove pause on menu option 2021-05-25 15:12:24 +10:00
Connor McLaughlin
6543cc42d3 Update compatibility settings for Rebel Assault II 2021-05-25 15:12:24 +10:00
Connor McLaughlin
d3d397d582 Merge pull request #2172 from 6lackmag3/patch-60
(Android) Update values-ru/strings
2021-05-25 14:15:56 +10:00
Connor McLaughlin
6bf7dc6a52 Merge pull request #2171 from 6lackmag3/patch-61
(Android) Update values-ru/arrays
2021-05-25 14:15:47 +10:00
Connor McLaughlin
e8a21d32dc CommonHostInterface: Use string list for autofire bindings
Fixes autofire bindings on Android.
2021-05-25 14:14:37 +10:00
Connor McLaughlin
08876d132f GPU/HW: Don't generate always/never-discarding discard shaders
Might fix the PowerVR driver...
2021-05-25 13:38:33 +10:00
Connor McLaughlin
0979149236 EvdevControllerInterface: Implement axes 2021-05-25 13:20:15 +10:00
6lackmag3
75bedbe5fd (Android) Updates for values-ru/arrays 2021-05-25 01:01:56 +03:00
6lackmag3
762c3b24e7 (Android) Updates for values-ru/strings 2021-05-25 01:00:27 +03:00
Connor McLaughlin
350bae7e94 Android: Implement controller auto-fire 2021-05-24 21:25:08 +10:00
Connor McLaughlin
8f23a79d36 CommonHostInterface: Add public method to activate autofire 2021-05-24 21:25:08 +10:00
Connor McLaughlin
a67f77d2a1 Android: Add custom aspect ratio support 2021-05-24 21:25:08 +10:00
Connor McLaughlin
daf2fd327f Android: Fix incorrect PBP statement in empty list 2021-05-24 21:24:22 +10:00
Connor McLaughlin
6a2b2ac7f8 System: Don't wipe out nonpersistent memory cards during game change 2021-05-24 21:24:22 +10:00
Connor McLaughlin
3f2c034869 CommonHostInterface: Fix always using playlist title for running game 2021-05-24 21:24:22 +10:00
Connor McLaughlin
b6ea769ecf Merge pull request #2168 from 6lackmag3/patch-59
(Android) fixes & updates for values-ru/arrays
2021-05-24 21:23:17 +10:00
Connor McLaughlin
d4b0f72ba9 Merge pull request #2167 from 6lackmag3/patch-58
(Android) fixes & updates for values-ru/strings
2021-05-24 21:23:10 +10:00
Connor McLaughlin
6f8595d359 Merge pull request #2166 from andercard0/patch-126
Android - Update strings
2021-05-24 21:22:10 +10:00
Connor McLaughlin
0307e68cdf Merge pull request #2165 from andercard0/patch-125
Android - Update
2021-05-24 21:21:59 +10:00
Connor McLaughlin
6e46cb11a7 Merge pull request #2163 from andercard0/patch-124
Atualização Português do Brasil
2021-05-24 21:21:48 +10:00
Max833
0881abcab3 Qt: Update German translation and fix cdromSeekSpeedup (#2161)
* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update consolesettingswidget.cpp

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts
2021-05-24 21:21:38 +10:00
6lackmag3
3afc1e9473 (Android) fixes & updates for values-ru/arrays 2021-05-24 02:19:59 +03:00
6lackmag3
0605611e3d (Android) fixes & updates for values-ru/strings 2021-05-24 02:14:11 +03:00
Anderson_Cardoso
8013ad402a Android - Update
Update file to latest.
2021-05-23 20:00:16 -03:00
Anderson_Cardoso
3ff56a5166 Android - Update
Tiny update file to latest.
2021-05-23 19:26:19 -03:00
Anderson_Cardoso
d8770c1a2c Atualização Português do Brasil
Update file to latest.
2021-05-23 17:46:37 -03:00
Connor McLaughlin
16efffa403 CueParser: Ignore pregap when index 0 is specified
Also corrects the previous track length when index 0 is specified.
2021-05-23 20:42:50 +10:00
Connor McLaughlin
8f639070c9 CueParser: Ignore zero pregap when index 0 is set 2021-05-23 20:33:55 +10:00
Connor McLaughlin
5556d8221b CueParser: Fix reading cuesheets with timecodes >60mins 2021-05-23 20:06:10 +10:00
Connor McLaughlin
d0de6a0aa9 Android: Expose CD-ROM seek speedup enhancement 2021-05-23 18:04:48 +10:00
Connor McLaughlin
c9029a88c7 CMake: Fix Android native library build 2021-05-23 18:00:57 +10:00
Connor McLaughlin
70396621e8 Merge pull request #2151 from andercard0/patch-123
Atualização Português do Brasil
2021-05-23 17:31:24 +10:00
Connor McLaughlin
743d463b18 Update README.md 2021-05-23 17:30:31 +10:00
Connor McLaughlin
d9a655fb41 System: Add non-persistent memory card type 2021-05-23 17:12:01 +10:00
Connor McLaughlin
3dc7ef92c2 GameSettings: Add CD-ROM seek speedup 2021-05-23 16:18:34 +10:00
Connor McLaughlin
98e4c181ca CDROM: Add seek speedup enhancement 2021-05-23 16:18:34 +10:00
Connor McLaughlin
143a82b543 scripts: Add libretro core build scripts 2021-05-23 16:18:34 +10:00
Connor McLaughlin
d4a13f511c dep: Reduce dependencies for libretro core 2021-05-23 16:18:34 +10:00
Connor McLaughlin
817c7ef96a FrontendCommon: Mark host display files as final
Libretro has its own display classes now.
2021-05-23 16:18:15 +10:00
Anderson_Cardoso
71effa3b3e Atualização Português do Brasil
Update file to latest.
2021-05-21 17:41:00 -03:00
Connor McLaughlin
4436cd5b58 dep: Remove libcue 2021-05-21 14:52:55 +10:00
Connor McLaughlin
69cfcd22a2 CDImageCue: Replace libcue with in-house cue parser 2021-05-21 14:52:55 +10:00
Connor McLaughlin
99b7a0bb85 Qt: Fix non-square cover scaling with hidpi 2021-05-21 13:48:10 +10:00
Connor McLaughlin
ff0bd7abc4 System: Add file title memory card type 2021-05-21 13:19:25 +10:00
Connor McLaughlin
6aa78b11fe NoGUI: Fix crash on startup with exclusive fullscreen 2021-05-21 13:19:25 +10:00
Connor McLaughlin
79549a2a51 Merge pull request #2147 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-05-21 13:19:09 +10:00
Connor McLaughlin
c6f286d7aa Merge pull request #2143 from andercard0/patch-122
Update Italian File Translation
2021-05-21 13:19:03 +10:00
zkdpower
e9253dfe43 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-05-21 06:18:49 +08:00
Anderson_Cardoso
eebff0f46c Update Italian File Translation
As reported by @projetto fixed typo in Italian file. 
Note: there are a bunch of non-translated itens there yet.
2021-05-20 14:17:26 -03:00
Connor McLaughlin
2285e219e1 Qt: Fix compiling auto updater with Qt 6 2021-05-20 15:21:15 +10:00
Connor McLaughlin
c4348beed4 NoGUI: Don't ignore pause on focus loss setting 2021-05-20 15:09:54 +10:00
Anderson_Cardoso
c417bd7a35 (Android) - Atualização Português do Brasil
Update String file to latest.
2021-05-20 15:04:49 +10:00
Anderson_Cardoso
2a3b3960dc Atualização Português do Brasil
Update file to latest.
2021-05-20 14:22:51 +10:00
6lackmag3
d473fce8cb (Android) Update Russian translation 2021-05-20 14:22:41 +10:00
Connor McLaughlin
05a89e385d Build: Use Qt 6 on Windows 2021-05-20 14:14:44 +10:00
Connor McLaughlin
6c20bac7dd Qt: Support Qt 6 2021-05-20 14:14:26 +10:00
Connor McLaughlin
245dd5b27a GPU/HW: Fix crash with oversized writes and sw readback 2021-05-20 14:14:26 +10:00
Connor McLaughlin
5f2a340953 Qt/GameList: Use device pixel ratio for cover pixmaps 2021-05-20 14:14:20 +10:00
Connor McLaughlin
2bde6d8e10 Android: Expose some of the GameSettings traits 2021-05-20 13:28:36 +10:00
Connor McLaughlin
a6d76e787f GameSettings: Add trait for sw-renderer-for-readbacks 2021-05-20 13:28:36 +10:00
Connor McLaughlin
5d877250e9 GPU/HW: Add an option to use software renderer for readbacks 2021-05-20 13:28:36 +10:00
Connor McLaughlin
063eeeb214 README: Update libretro core links 2021-05-20 13:28:36 +10:00
Connor McLaughlin
5e0e6c71bf CI: Improve naming of libretro binaries 2021-05-20 12:25:08 +10:00
Connor McLaughlin
ad9081d050 Android: Remove redundant ReleaseHostDisplayResources() 2021-05-20 12:19:29 +10:00
Connor McLaughlin
0e59a14c82 OpenGLHostDisplay: Fix crash when context creation fails 2021-05-20 12:19:29 +10:00
Anderson_Cardoso
4ea7dc79db Atualização Português do Brasil
Update file to latest.
2021-05-20 12:19:29 +10:00
Connor McLaughlin
bb9bd2af23 Qt: Update Japanese translation by mikakunin 2021-05-20 12:19:29 +10:00
Connor McLaughlin
9aaaf3f094 GameDB: Unflag analog controller for Mega Man 8 2021-05-20 12:19:28 +10:00
Connor McLaughlin
9784c9d930 Android: Only use scoped storage for scanning on 11+ 2021-05-20 12:19:28 +10:00
Connor McLaughlin
bcd40dd860 Qt: Fix autofire button selection in non-English UI 2021-05-20 12:19:28 +10:00
Connor McLaughlin
67f352339c CommonHostInterface: Add swap memory cards hotkey 2021-05-20 12:19:28 +10:00
Connor McLaughlin
2f8150f357 scmversion: Ignore play-store-release tag 2021-05-20 12:19:28 +10:00
Anderson_Cardoso
ac1db3448b Atualização Português do Brasil
Update file to latest
2021-05-20 12:19:28 +10:00
Connor McLaughlin
549b5e8af0 Qt: Translate button names in auto-fire config 2021-05-20 12:19:28 +10:00
Connor McLaughlin
3e3b691a86 NoGUI: Hook up exclusive fullscreen 2021-05-20 12:19:28 +10:00
Connor McLaughlin
f3cceca805 NoGUI: Implement mouse cursor hiding in fullscreen 2021-05-20 12:19:28 +10:00
Connor McLaughlin
6f38e171b2 Android: Fall back to native paths on <9
Apparently some of these devices have broken scoped storage?
2021-05-20 12:19:28 +10:00
Connor McLaughlin
2fe1f3c2f7 VulkanHostDisplay: Wait for GPU idle on surface change 2021-05-20 12:19:28 +10:00
Connor McLaughlin
90ac14a242 Update compatibility list 2021-05-20 12:19:28 +10:00
Connor McLaughlin
8f2169339d Update news 2021-05-20 12:19:28 +10:00
falsepopsky
03798180eb updated spanish translation, android and qt. 2021-05-20 12:19:28 +10:00
zkdpower
e3ff3cbb91 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-05-20 12:19:28 +10:00
Anderson_Cardoso
3fa25ebd78 Atualização Português do Brasil
Update file to latest and fixed typos.
2021-05-20 12:19:28 +10:00
Max833
e3f8238702 Qt: Update German translation (#2117)
* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts
2021-05-20 12:19:28 +10:00
Connor McLaughlin
bced237034 MemoryCard: Sanitize game titles for file names 2021-05-20 12:19:28 +10:00
Connor McLaughlin
ee5bf410e6 Qt: Make dark fusion the default theme 2021-05-20 12:19:28 +10:00
Connor McLaughlin
c43957d385 FullscreenUI: Add controller autofire settings 2021-05-20 12:19:28 +10:00
Connor McLaughlin
cc69ac5742 Qt: Add controller autofire settings 2021-05-20 12:19:28 +10:00
Connor McLaughlin
01c869b704 CommonHostInterface: Implement controller autofire 2021-05-20 12:19:28 +10:00
Connor McLaughlin
c7beac5efd Qt: Remove setting when string value is empty 2021-05-20 12:19:28 +10:00
Connor McLaughlin
148a706771 Qt: Add CollapsibleWidget 2021-05-20 12:19:28 +10:00
Connor McLaughlin
f5bec87f79 CommonHostInterface: Add Toggle PGXP CPU Mode hotkey 2021-05-20 12:19:28 +10:00
Connor McLaughlin
5853588a52 Qt: Use native separators for open disc 2021-05-20 12:19:27 +10:00
Connor McLaughlin
fd462ab778 VulkanHostDisplay: Fix crash in RenderScreenshot() when display disabled 2021-05-20 12:19:27 +10:00
Connor McLaughlin
f4fb627428 System: Increase maximum save state size (for 8MB RAM) 2021-05-20 12:19:27 +10:00
Connor McLaughlin
21d6af287e System: Fix a possible crash with runahead 2021-05-20 12:19:27 +10:00
Connor McLaughlin
1f206421e8 CommonHostInterface: Prevent crash with fullscreen UI enabled 2021-05-20 12:19:27 +10:00
zkdpower
dda2cccb1c Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-05-20 12:19:27 +10:00
Anderson_Cardoso
217f874cff Update Brazilian Portuguese Language
Update to latest.
2021-05-20 12:19:27 +10:00
Connor McLaughlin
437d3fbb4b GPU/SW: Set display parameters before data 2021-05-20 12:19:27 +10:00
Connor McLaughlin
3d972955a7 FullscreenUI: Fix empty cheat menu leaving system paused 2021-05-20 12:19:27 +10:00
Connor McLaughlin
a6d2324f0e ControllerInterface: Don't fire events when fullscreen UI active 2021-05-20 12:19:27 +10:00
Connor McLaughlin
00ffffe8c0 VulkanHostDisplay: Handle surface changes if this happens 2021-05-20 12:19:27 +10:00
Connor McLaughlin
08a815ad7b FullscreenUI: Make show status indicator setting local 2021-05-20 12:19:26 +10:00
Connor McLaughlin
172ba1fc32 CommonHostInterface: Fix controller masking for Start Disc 2021-05-20 12:19:26 +10:00
Connor McLaughlin
301bbb4924 CDImagePBP: Handle compression level 0 files 2021-05-20 12:19:26 +10:00
Connor McLaughlin
68fd77c326 CDImagePBP: Fix reading from track 1 pregap 2021-05-20 12:19:26 +10:00
Connor McLaughlin
f10134251b CI: Add play store builder 2021-05-20 12:19:26 +10:00
Connor McLaughlin
8e6b6377e2 Android: Fix possible crash in EmulationActivity 2021-05-20 12:19:26 +10:00
Connor McLaughlin
69fb8de644 CDImageM3u: Fix crash when error pointer is null 2021-05-20 12:19:26 +10:00
Anderson_Cardoso
6e189f4fd0 Atualização Português do Brasil
Update file to latest
2021-05-20 12:19:26 +10:00
ValadAmoleo
1fa4460590 Added a toggle for persistent message. (#2106)
* Added a toggle for persistent message.

Added a toggle to display settings to disable persistent messages (ff, pause) in the fullscreen UI.

* Moved toggle for the icons to advanced settings.

Moved the toggle to the advanced settings as suggested.  Renamed the option from "show persistent messages" to "show speed icons", so that it's much more specific.
2021-05-20 12:19:26 +10:00
Connor McLaughlin
63b70e6c0c Android: Fix pause button colour in light theme 2021-05-20 12:19:26 +10:00
Connor McLaughlin
8c7282046b CPU/CodeCache: Re-enable interpreter fallback heuristic 2021-05-20 12:19:25 +10:00
Connor McLaughlin
acda42be16 CPU/Recompiler: Get rid of non-constant offsetofs 2021-05-20 12:19:24 +10:00
zkdpower
4cb8817247 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-05-20 12:19:23 +10:00
Connor McLaughlin
1ed1d641a6 CPU/Recompiler: Don't use intepreter icache when falling back
Fixes broken rendering in TOCA 2.

It has self-modifying code every frame, which gets falled back to the
interpreter, and using the interpreter's icache, which resulted in
stale code executing.
2021-05-20 12:19:23 +10:00
Connor McLaughlin
e24a2aa6ac NoGUI/SDL: Save and restore window geometry 2021-05-20 12:19:23 +10:00
Connor McLaughlin
8e9fbf63a3 NoGUI/SDL: Implement pause on focus loss 2021-05-20 12:19:23 +10:00
Connor McLaughlin
ab0364eb8f Qt: Move fullscreen to view menu 2021-05-20 12:19:23 +10:00
Connor McLaughlin
8dd36f4474 CommonHostInterface: Fix translatability of widescreen hack toggle message 2021-05-20 12:19:23 +10:00
Connor McLaughlin
6eb0496d77 AnalogController: Don't panic on unknown configuration mode command 2021-05-20 12:19:23 +10:00
ValadAmoleo
057c264d97 Widescreen Hotkey (#2080)
* Widescreen Hotkey

Added the ability to toggle Widescreen Hack and set the Aspect Ratio via a hotkey.

This is in response to Discussion #1912 (https://github.com/stenzek/duckstation/discussions/1912)

* Widescreen Hotkey Uses Settings

The Widescreen Hotkey now looks at the user's global or game settings when toggling.  This means:
When disabling the widescreen hack it uses a non-wide ratio as set by the user if available or auto if unavailable.
When enabling the widescreen hack it uses a wide ratio as set by the user if available or 16:9 if unavailable.

* Avoids loading the entire settings now.

Specifically loads the aspect ratio setting.
2021-05-20 12:19:23 +10:00
Julien Reichardt
d77dfb4b23 Update installation instructions (#2079)
* Add Flatpak instructions

* Clarify Flatpak support
2021-05-20 12:19:23 +10:00
Connor McLaughlin
f98f9fcd0c CI: Fix libretro dll for Windows 2021-05-20 12:19:23 +10:00
Connor McLaughlin
1e7e52718e NamcoGuncon: Only update trigger for offscreen on change 2021-05-20 12:19:21 +10:00
Connor McLaughlin
9af822dc9c GameSettings: Remove some duplicate entries 2021-05-20 12:19:16 +10:00
Nekokabu
d096d0bd56 Update duckstation-qt_ja.ts 2021-05-20 12:19:15 +10:00
Anderson_Cardoso
1bddf524d8 Atualização Português do Brasil
Update file to latest.
2021-05-20 12:19:15 +10:00
6lackmag3
6e72204d3d (Android) Updated values-ru/strings to latest 2021-05-20 12:19:15 +10:00
Connor McLaughlin
5047a3e97f libretro: Expose support for pbp (and multi-disc) 2021-05-20 12:19:13 +10:00
Connor McLaughlin
94cb847e21 CI: Re-add libretro builds 2021-05-20 12:18:55 +10:00
Connor McLaughlin
333319acab CMake: Set __cplusplus version in MSVC 2021-05-20 12:18:55 +10:00
Connor McLaughlin
1392a64a93 Re-add libretro core 2021-05-20 12:18:54 +10:00
Connor McLaughlin
d38a1c9430 AnalogJoystick: Make setter methods public 2021-05-10 13:35:58 +10:00
Connor McLaughlin
77bf7d3902 Update game database 2021-05-09 03:30:57 +10:00
Connor McLaughlin
571c8684d7 Qt: Update Japanese translation by mikakunin 2021-05-08 20:38:01 +10:00
Connor McLaughlin
729675f497 Bus: Fix memory reserving when 8MB RAM is enabled 2021-05-08 20:36:34 +10:00
Connor McLaughlin
d9151cebf1 Android: Change quick menu exit button to back, add exit 2021-05-08 12:35:06 +10:00
Connor McLaughlin
1751a27604 Merge pull request #2071 from andercard0/patch-113
Atualização Português do brasil
2021-05-08 12:26:22 +10:00
Christopher Snowhill
9e52838c6e CMakeLists: Add system processor check for Apple Silicon 2021-05-08 12:25:50 +10:00
Christopher Snowhill
1d7a7bc842 cubeb: Adjust cubeb_jack to build on latest macOS 2021-05-08 12:25:50 +10:00
Anderson_Cardoso
8a1aaccd3e Atualização Português do brasil
Update file to latest.
2021-05-07 15:23:58 -03:00
Connor McLaughlin
7080e307dd Android: Improve pause menu in light theme 2021-05-08 03:45:14 +10:00
Connor McLaughlin
6a06b4970d Android: Add missing sensor based entry to translations 2021-05-08 03:45:14 +10:00
Connor McLaughlin
e226464a35 GameSettings: Add GPU renderer and 8MB RAM options 2021-05-08 03:45:14 +10:00
Connor McLaughlin
99876588c4 GameSettings: Force icache for Breath of Fire IV 2021-05-08 03:24:18 +10:00
Connor McLaughlin
0271622e59 Add PlayStationMouse supported controller for some games 2021-05-08 03:24:18 +10:00
Connor McLaughlin
e84fe4d948 D3D11HostDisplay: Fix alpha channel of lightgun crosshair 2021-05-08 03:24:18 +10:00
Connor McLaughlin
8a39969a61 SDLControllerInterface: Prevent crash with out-of-range buttons 2021-05-08 03:24:18 +10:00
Connor McLaughlin
e5a6103f74 ControllerInterface: Move axes/constants to derived class 2021-05-08 03:24:18 +10:00
Connor McLaughlin
9ff1f153be CommonHostInterface: Remove some rarely used default hotkeys 2021-05-08 03:24:18 +10:00
Anderson_Cardoso
69b9f88ecd Android - Update Arrays File (#2060)
* Update Arrays File

Update file to latest.
2021-05-08 03:22:57 +10:00
Connor McLaughlin
a0107fa0f2 Merge pull request #2064 from falsepopsky/updateSpanish
spanish translation qt updated to latest
2021-05-08 03:04:30 +10:00
Connor McLaughlin
4c23d6c295 Merge pull request #2063 from 6lackmag3/patch-54
(Android) Update values-ru/arrays to latest
2021-05-08 03:04:22 +10:00
Connor McLaughlin
f2818fc140 Merge pull request #2062 from j8r/add-higher-res-icons
Add higher resolution icons
2021-05-08 03:04:01 +10:00
Connor McLaughlin
f1e4406c09 Merge pull request #2059 from andercard0/patch-111
Atualização Português do Brasil
2021-05-08 03:03:25 +10:00
6lackmag3
e29e4ca5b4 (Android) Update values-ru/arrays to latest 2021-05-06 03:13:07 +03:00
falsepopsky
81f99d90ee spanish translation qt updated to latest 2021-05-05 21:04:11 -03:00
Julien Reichardt
e2d0eb485b Add higher resolution icons
Scaled down from https://img.icons8.com/isometric/452/duck.png (https://icons8.com/icon/74847/duck).
2021-05-05 14:18:48 +02:00
Anderson_Cardoso
5ede107686 Atualização Português do Brasil
Update file to latest
2021-05-04 15:13:48 -03:00
Connor McLaughlin
d3fea7b5a7 Android: Fix quick menu in light mode 2021-05-05 03:26:40 +10:00
Connor McLaughlin
8239d464b9 Android: Fix pause menu getting stuck open on some settings 2021-05-05 03:26:40 +10:00
Connor McLaughlin
8ace5ff6b8 CPU/Recompiler: Fix assertion tripping in debug builds 2021-05-05 03:26:40 +10:00
Connor McLaughlin
fc98fee860 Merge pull request #2054 from j8r/remove-Terminal=true-in-desktop-files
Remove Terminal=true in desktop files
2021-05-05 03:26:20 +10:00
Connor McLaughlin
87dbfe1edb Merge pull request #2055 from andercard0/patch-110
Atualização Português do Brasil
2021-05-05 03:26:09 +10:00
Certainty Witch
6aad1923cb Add sensor-based screen orientation for Android (#2056)
* Adding sensor-based orientation for Android

* Fix indents broken by NotePad++
2021-05-05 03:26:00 +10:00
Connor McLaughlin
320a595711 Merge pull request #2057 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-05-05 03:25:43 +10:00
zkdpower
a967247a96 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-05-04 10:49:07 +08:00
Anderson_Cardoso
1ca8b7628b Atualização Português do Brasil
Update file to latest.
2021-05-03 09:28:17 -03:00
Julien Reichardt
ff7872d923 Remove Terminal=true in desktop files 2021-05-03 14:17:47 +02:00
Connor McLaughlin
e382df0d41 Support expanding RAM to 8MB (dev console) 2021-05-03 12:43:33 +10:00
Connor McLaughlin
d021850394 Merge pull request #2051 from 6lackmag3/patch-53
(Android) Update values-ru/strings
2021-05-03 12:42:55 +10:00
6lackmag3
574cdb6e87 (Android) Update values-ru/strings 2021-05-03 01:24:54 +03:00
Connor McLaughlin
1d7bc24537 Qt: Fix memory card note string 2021-05-03 03:22:28 +10:00
Connor McLaughlin
6b2ce266d4 dep/discord-rpc: Ensure the cleared presence gets sent at shutdown 2021-05-03 03:22:28 +10:00
Connor McLaughlin
d4214211a2 Merge pull request #2028 from j8r/add-appstream-metadata-file
Add AppStream metadata file
2021-05-03 03:20:03 +10:00
zkdpower
cdf8786091 Update Simple-Chinese Translation to latest. (#2047)
* Update Simple-Chinese Translation to latest.

Update Simple-Chinese Translation to latest.
2021-05-03 03:17:37 +10:00
Connor McLaughlin
6f5c00bc86 Merge pull request #2044 from andercard0/patch-109
Atualização Português do Brasil
2021-05-02 15:08:37 +10:00
Connor McLaughlin
70aae89219 Android: New/improved ingame pause menu 2021-05-02 15:01:03 +10:00
Connor McLaughlin
19b84cbe4d GameList: Support getting covers without list entry 2021-05-02 14:57:52 +10:00
Julien Reichardt
4bd1161ac9 Split appimage script and distribution files 2021-05-01 17:48:26 +02:00
Anderson_Cardoso
51b031c214 Atualização Português do Brasil
Update file to latest.
2021-05-01 10:11:42 -03:00
Connor McLaughlin
20747d2108 Qt: Fix incorrect location of zh-cn translation 2021-05-01 14:49:45 +10:00
Connor McLaughlin
806fc3e918 Settings: Fix default value for VSync on Android 2021-05-01 14:49:45 +10:00
Connor McLaughlin
f77cc7a687 README: Add note about TLS1.2 on Windows 7 2021-05-01 14:15:15 +10:00
Connor McLaughlin
4875b2ecc7 README.md: Clarify reason for removing Mac releases 2021-05-01 13:37:44 +10:00
Connor McLaughlin
25426a90e7 CI: Don't publish Mac builds 2021-05-01 13:37:42 +10:00
Connor McLaughlin
44f29da40f CommonHostInterface: Fix OSD messages not clearing on shutdown 2021-05-01 13:37:29 +10:00
Connor McLaughlin
f39a5dcf5d Settings: Fix new display aspect ratios being untranslatable 2021-05-01 13:32:37 +10:00
Connor McLaughlin
a2e1cd8517 Merge pull request #2040 from 6lackmag3/patch-52
(Android) Update values-ru/arrays
2021-05-01 13:32:23 +10:00
Connor McLaughlin
1919aff1d6 Merge pull request #2038 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-05-01 13:32:00 +10:00
Connor McLaughlin
de33190e3b Merge pull request #2039 from 6lackmag3/patch-51
(Android) Update values-ru/strings
2021-05-01 13:31:51 +10:00
6lackmag3
83d9f1e6a3 (Android) Update values-ru/arrays 2021-05-01 02:54:54 +03:00
6lackmag3
f047fe5930 Update strings.xml 2021-05-01 02:52:51 +03:00
zkdpower
ea2f7b0376 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
besides:
"Auto (Match Window)" & "Custom" string need to add for translation.
2021-05-01 04:12:24 +08:00
Connor McLaughlin
e8fece60cf CommonHostInterface: Fix crash booting exe/psf from file 2021-05-01 02:58:43 +10:00
Connor McLaughlin
f8bbade9bf Android: Add touchscreen controller port option 2021-05-01 02:56:48 +10:00
Connor McLaughlin
052721fffc HostInterface: Fix toggling widescreen hack while running 2021-05-01 02:56:29 +10:00
Connor McLaughlin
864e7f0c91 GameSettings: Add custom aspect ratios 2021-04-30 02:53:03 +10:00
Connor McLaughlin
17a4712a3e Settings: Remove less-frequently used AR options
You can easily set this via custom ratios, or match window now.
2021-04-30 02:53:03 +10:00
Connor McLaughlin
256f272768 Support custom and match display aspect ratios 2021-04-30 02:53:03 +10:00
Connor McLaughlin
48bc152a63 Vulkan/SwapChain: Ensure returned height is at least 1x1 2021-04-30 02:53:03 +10:00
Connor McLaughlin
862c6998eb Update compatibility list and game database 2021-04-30 02:53:03 +10:00
Connor McLaughlin
9b9ce0e2d1 Merge pull request #2036 from falsepopsky/updateSpanish
update qt spanish translation
2021-04-30 02:50:22 +10:00
Connor McLaughlin
6920d6f74e Merge pull request #2035 from mirrornoir/master
Update gamedb with hashes for two titles
2021-04-30 02:50:17 +10:00
Connor McLaughlin
ad32d08986 Merge pull request #2034 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-04-30 02:50:10 +10:00
falsepopsky
80a534de9a update qt spanish translation 2021-04-29 00:09:33 -03:00
Elizabeth
a18c0265d1 Update Threads of Fate (USA) with hash for game code 2021-04-27 23:59:51 -04:00
Elizabeth
74f9ace9fb Update Urban Chaos (USA) with hash for game code 2021-04-27 23:52:46 -04:00
zkdpower
14e23850fa Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-04-28 11:28:24 +08:00
Connor McLaughlin
f1310bf93a System: Don't discard PGXP state when runahead-rollbacking
You'll still see some glitches if you have the frame count set too high,
since you'll get imprecise values for any vertices which have moved, but
that's going to happen anyway because of the runahead in the first
place.
2021-04-28 02:51:44 +10:00
Connor McLaughlin
c2916e0719 System: Render save state screenshots at fixed resolution
Fixes delays when saving state at high internal resolution.
2021-04-28 02:51:44 +10:00
Connor McLaughlin
67adc986ab VulkanHostDisplay: Fix incorrect screenshot size rendering when specified 2021-04-28 02:51:44 +10:00
Connor McLaughlin
6767fa1e5f OpenGLHostDisplay: Disable scissor test before rendering
Fixes uncleared screen sections in OpenGL renderer.
2021-04-28 02:51:44 +10:00
Connor McLaughlin
e6383286d9 D3D11HostDisplay: Make screenshots/display rendering opaque 2021-04-28 02:51:44 +10:00
Connor McLaughlin
ad59cf6974 Merge pull request #2031 from andercard0/patch-108
Atualização Português do Brasil
2021-04-28 01:56:33 +10:00
Connor McLaughlin
1cba1f1984 Merge pull request #2030 from ifarbod/patch-1
Fix width and height checks for fullscreen swapchain (d3d11)
2021-04-28 01:56:23 +10:00
Anderson_Cardoso
cbc3dad369 Atualização Português do Brasil
Update file to latest.
2021-04-26 17:26:32 -03:00
iFarbod
0f8128cc23 Fix width and height checks for fullscreen swapchain
Height is being compared against Width somehow, this is wrong..
2021-04-26 22:33:28 +04:30
Connor McLaughlin
1e44c2f3d0 GameSettings: Add trait to force LUT fastmem
Should help with games like CMR2 and Lagnacure (which are
constantly invalidating code), and THPS series (which use
memory mirrors).
2021-04-27 03:16:44 +10:00
Connor McLaughlin
f34a048009 CPU/CodeCache: Fall back constantly-modified blocks to interpreter
Partial fix for slowdown in Colin McRae Rally 2.0.
2021-04-27 02:56:57 +10:00
Connor McLaughlin
b84827b315 Pad: Don't remove card when loading state without card in slot
... unless load-devices-from-state is enabled.
2021-04-27 02:24:28 +10:00
Connor McLaughlin
e842abfa8a CPU/Recompiler: Fix corrupted constant address byte/halfword writes
Fixes broken rendering in Dino Crisis.
2021-04-27 02:11:33 +10:00
Julien Reichardt
a1a7b073d5 Add AppStream metadata file
Can be used for AppImage, and required for Flatpak.
2021-04-26 15:02:59 +02:00
Connor McLaughlin
fda106811c Merge pull request #2026 from falsepopsky/updateSpanish
update spanish translation (android)
2021-04-26 22:40:00 +10:00
Connor McLaughlin
40731b49fc Bus: Handle CPU-internal narrow writes
The full 32-bits of the GPR are used.

Fixes SoundScope in the BIOS Shell.
2021-04-26 22:08:18 +10:00
Connor McLaughlin
7fb5d6908f AnalogController: Use device state instead of save state for mode 2021-04-26 21:25:43 +10:00
falsepopsky
ba614ea3e2 update spanish translation-android 2021-04-24 13:59:55 -03:00
Connor McLaughlin
844c8e916f Update merged gamedb 2021-04-24 16:25:35 +10:00
Connor McLaughlin
e3f1b6583f Merge pull request #2024 from andercard0/patch-107
Atualização Português do Brasil
2021-04-24 16:25:08 +10:00
Connor McLaughlin
592ed003c2 Merge pull request #2023 from 6lackmag3/patch-49
Update m.json
2021-04-24 16:24:57 +10:00
Connor McLaughlin
ff427f4cbe Merge pull request #2022 from 6lackmag3/patch-48
Update g.json
2021-04-24 16:24:53 +10:00
Connor McLaughlin
ca52a1de67 Merge pull request #2021 from 6lackmag3/patch-47
Update k.json
2021-04-24 16:24:47 +10:00
Connor McLaughlin
a7be5ccd50 Merge pull request #2020 from 6lackmag3/patch-46
Update d.json
2021-04-24 16:24:42 +10:00
Connor McLaughlin
4ccdf53336 Merge pull request #2019 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-04-24 16:24:35 +10:00
Connor McLaughlin
46d19eeb1f Android: Allow opening/getting files relative to downloads directory 2021-04-24 16:19:13 +10:00
Connor McLaughlin
600ae7bcc0 Update compatibility settings for Chrono Cross 2021-04-24 16:03:10 +10:00
Anderson_Cardoso
66dee33393 Atualização Português do Brasil
Update and fix typos. File updated to latest.
2021-04-24 00:04:16 -03:00
6lackmag3
fbb186fc5e Update m.json 2021-04-24 05:49:10 +03:00
6lackmag3
c4094af375 Update g.json
remove analog support for Guilty Gear
2021-04-24 05:48:41 +03:00
6lackmag3
644fd507d9 Update k.json
add analog support for KKND
2021-04-24 05:47:53 +03:00
6lackmag3
d19b179095 Update d.json 2021-04-24 05:46:26 +03:00
zkdpower
c3a110e3f8 Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-04-24 10:39:21 +08:00
Connor McLaughlin
8f821c776c FullscreenUI: Fix compile with cheevos compile-time disabled 2021-04-22 15:52:11 +10:00
Connor McLaughlin
cc6ef01926 CMake: Add missing rapidjson dependency for frontend-common 2021-04-22 15:44:31 +10:00
Connor McLaughlin
cfb4b058d1 CPU/Recompiler: Gate debug exceptions behind memory exception flag
Libcrypt games seem to leave exceptions enabled, and it forces
interpreter for them when it's unnecessary.
2021-04-22 15:43:35 +10:00
Connor McLaughlin
fe1a582909 System: Disallow booting when SBI files are missing 2021-04-22 13:40:48 +10:00
Connor McLaughlin
558978b7f2 GameDatabase: Fix incorrect entries returned from short serials 2021-04-22 13:40:48 +10:00
Connor McLaughlin
a11883e2b4 GameDB: Fix detection of Advanced V.G. (Japan) 2021-04-22 13:40:48 +10:00
Connor McLaughlin
0a50ca3f18 CDROM: Improve CDDA report logging 2021-04-22 13:40:48 +10:00
Connor McLaughlin
1bc596ee26 Merge pull request #2010 from CookiePLMonster/update-gamecontrollerdb
Update SDL game controller database
2021-04-22 13:40:30 +10:00
Connor McLaughlin
1c5c2f1eda Merge pull request #2009 from CookiePLMonster/update-pl-loc
Update PL localization
2021-04-22 13:40:18 +10:00
Silent
d6db467ce8 Update SDL game controller database 2021-04-22 00:08:08 +02:00
Silent
a1639bdf0d Update PL localization 2021-04-21 23:58:31 +02:00
Silent
712a11fb71 Hotkey Settings: Fix a missing space in Change Disc 2021-04-21 23:57:15 +02:00
Connor McLaughlin
9652e3cb6b CDImage: Generate correct relative subq position in pregap 2021-04-22 02:58:13 +10:00
Connor McLaughlin
2d8806c13f CPU/Recompiler: Emit DCIC exit path in far code
Fixes PS3 BIOS booting.
2021-04-22 02:58:13 +10:00
Connor McLaughlin
1bc354c64e Merge pull request #2004 from zkdpower/master
Update Simple-Chinese Translation to latest.
2021-04-22 02:57:56 +10:00
zkdpower
3414e3999f Update Simple-Chinese Translation to latest.
Update Simple-Chinese Translation to latest.
2021-04-21 09:44:47 +08:00
Connor McLaughlin
2e86b65bf9 Qt/AchievementLoginDialog: Make login fully asynchronous 2021-04-21 01:58:49 +10:00
Connor McLaughlin
a7017783e4 dep/rurl: Enlarge username buffers 2021-04-21 01:55:10 +10:00
Connor McLaughlin
e64f8cc2c5 CDROM: Jump to seek target on pause while seeking
Fixes music in No Fear Downhill Mountain Biking, but needs more hardware
tests to confirm the behavior here.
2021-04-21 01:44:33 +10:00
Connor McLaughlin
52934aa563 AchievementLoginDialog: Pass QStrings to emulation thread 2021-04-21 01:40:49 +10:00
Connor McLaughlin
704c160c35 CommonHostInterface: Add CPU overclock toggle hotkey 2021-04-20 16:06:34 +10:00
Connor McLaughlin
6ba94b7eb2 Add note about issue templates being mandatory 2021-04-20 14:34:40 +10:00
Connor McLaughlin
49cd62aa6e Merge pull request #1996 from jpchow26/master
Update game_database.cpp
2021-04-20 12:27:06 +10:00
Connor McLaughlin
864e908f45 Merge pull request #1993 from lioncash/enum
core/types: Convert GPUDownsampleMode into an enum class
2021-04-20 12:26:26 +10:00
Connor McLaughlin
045eb8be76 HTTPDownloaderCurl: Set CURL_NOSIGNAL and block SIGPIPE 2021-04-20 12:25:28 +10:00
jpchow26
c86ff987eb Update game_database.cpp
fix windows build with missing include
2021-04-19 16:46:35 -04:00
Lioncash
113b4b71de core/types: Convert GPUDownsampleMode into an enum class
Prevents some generic-sounding identifiers from being put into the
global namespace.
2021-04-19 11:16:40 -04:00
Connor McLaughlin
5af6424324 CDROM: More conservative handling of INT1-while-pending-INT3 case 2021-04-19 15:39:44 +10:00
Connor McLaughlin
3106c797d9 CPU: Reduce severity of some log statements 2021-04-19 15:19:08 +10:00
Connor McLaughlin
62360d088a CDROM: Send IRQ1 for triple buffered sectors
Fixes hangs in loading in Eliminator and Colony Wars - Vengeance.
2021-04-19 15:19:08 +10:00
Connor McLaughlin
310e1830a0 Merge pull request #1990 from andercard0/patch-106
Update Japanese Translation by - Mikakunin
2021-04-19 15:18:49 +10:00
Connor McLaughlin
4977fcc21b Merge pull request #1991 from zkdpower/master
Update Simple-Chinese language file to latest
2021-04-19 15:18:10 +10:00
zkdpower
f2968633c3 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-04-19 11:21:04 +08:00
Anderson_Cardoso
d15fdf9c3b Update Japanese Translation by - Mikakunin
Update file to latest.
2021-04-18 22:22:59 -03:00
Connor McLaughlin
c79d93fd53 Android: Assign duplicate descriptors same controller index 2021-04-19 02:29:03 +10:00
Connor McLaughlin
71639d74b7 Android: Compile fix 2021-04-19 01:49:02 +10:00
Connor McLaughlin
0b7d982121 Update merged gamedb.json 2021-04-19 01:36:14 +10:00
Connor McLaughlin
49fc314fbb Merge pull request #1986 from PugsyMAME/master
Renamed various sports related genres
2021-04-19 01:35:13 +10:00
Connor McLaughlin
70deaa8bc4 Android: Add additional controller interface logging 2021-04-19 01:34:02 +10:00
PugsyMAME
d0dd27d46d Renamed various sports related genres
Fixed various genres so they come under the larger Sports Genre with the other sports games
"Boxing" to "Sports / Boxing"
"Soccer" to "Sports / Soccer"
"Baseball" to "Sports / Baseball"
"Basketball" to "Sports / Basketball"
"Bowling" to "Sports / Bowling"
"Fishing" to "Sports / Fishing"
"Football" to "Sports / American Football"
"Golf" to "Sports / Golf"
"Hockey" to "Sports / Ice Hockey"
"Ice Hockey" to "Sports / Ice Hockey"
"Motocross" to "Sports / Motocross"
"Skateboard" to "Sports / Skateboarding"
"Skateboarding" to "Sports / Skateboarding"
"Snowboard" to "Sports / Snowboarding"
"Snowboarding" to "Sports / Snowboarding"
"Squash" to "Sports / Squash"
"Tennis" to "Sports / Tennis"
"Wrestling" to "Sports / Wrestling"
Billiard(s) - changed to less generic name  - either pool or snooker
Fixed typo: "Plataformer" to "Platformer"
2021-04-18 16:07:06 +01:00
Connor McLaughlin
339a088fe9 Android: Fix possible crash touchscreen GunCon controller 2021-04-18 19:55:31 +10:00
Connor McLaughlin
430dbb32a7 Android: Fix possible crash when disconnecting controller 2021-04-18 19:49:20 +10:00
Connor McLaughlin
c4891af00e GameList: Fix broken cover-by-file-title detection 2021-04-18 19:00:27 +10:00
Connor McLaughlin
a2a4b66cb7 Update compatibility settings 2021-04-18 18:59:59 +10:00
Connor McLaughlin
aa57ec6105 dep/cubeb: Work around strlcpy not existing on Linux 2021-04-18 14:02:00 +10:00
Connor McLaughlin
2a5d14d8ed Android: Make ingame menu pause on open by default 2021-04-18 14:01:35 +10:00
Connor McLaughlin
3769f30260 Android: Add pause/menu button to touchscreen controller 2021-04-18 14:01:35 +10:00
Connor McLaughlin
308320c4e2 Merge pull request #1982 from zkdpower/master
Update Chinese language file to latest.
2021-04-18 13:53:44 +10:00
Connor McLaughlin
65bbde8e02 Merge pull request #1980 from 6lackmag3/patch-45
(Android) Update values-ru/strings
2021-04-18 13:53:35 +10:00
Connor McLaughlin
a6cd7f383a Merge pull request #1984 from ggrtk/cubeb-persist
CubebAudioStream: Set CUBEB_STREAM_PREF_PERSIST flag
2021-04-18 13:53:09 +10:00
Connor McLaughlin
021a3677f9 Merge pull request #1975 from soaresden/master
Duckstation - Adding F8 to change discs
2021-04-18 13:52:39 +10:00
Connor McLaughlin
64bd840195 Update common_host_interface.cpp 2021-04-18 13:52:17 +10:00
Albert Liu
e9e4d4174b CubebAudioStream: Set CUBEB_STREAM_PREF_PERSIST flag
This is required for getting default IAudioClient behavior on the WASAPI
backend.
2021-04-17 20:37:49 -07:00
zkdpower
f381fa8be6 Update Chinese language file to latest.
Update Chinese language file to latest.
2021-04-18 10:57:14 +08:00
6lackmag3
03b49978c7 (Android) Update values-ru/strings 2021-04-17 22:26:52 +03:00
soaresden
b0bd4b8cfe Adding Shortcut to Change Disc
Adding ShortCut to F8

simplifying

simplifying the code
2021-04-17 19:16:43 +02:00
Connor McLaughlin
2a8fd2f60b GameList: Fix database getting unloaded and lost on double refresh 2021-04-18 01:36:21 +10:00
Connor McLaughlin
ff8679cbee Merge pull request #1973 from andercard0/patch-105
Atualização Português do Brasil
2021-04-18 01:35:17 +10:00
Connor McLaughlin
ace116556a Merge pull request #1974 from PugsyMAME/master
Make Genre/Publisher/Developer/Year/Players fields sortable
2021-04-18 01:35:04 +10:00
PugsyMAME
d605d03995 Make Genre/Publisher/Developer/Year/Players fields sortable
Added the new gamelist fields to the GameListModel::lessThan routine to make them sortable.
2021-04-17 16:17:32 +01:00
Anderson_Cardoso
851533a84a Atualização Português do Brasil
Update file to latest.
2021-04-17 10:36:55 -03:00
Connor McLaughlin
e4d5d9f049 GPU/SW: Spin for 1ms rather than immediately sleeping 2021-04-17 22:17:02 +10:00
Connor McLaughlin
90e0ff33db Android: Improve text in empty game list fragment 2021-04-17 21:52:27 +10:00
Connor McLaughlin
8125995443 Android: Fix text overflowing in game directory editor 2021-04-17 21:52:27 +10:00
Connor McLaughlin
e3f5cf0fbb Android: Move Start File to overflow menu 2021-04-17 21:52:27 +10:00
Connor McLaughlin
f9fb4c2d16 Android: Fix filenames for SAF paths showing incorrectly 2021-04-17 21:52:27 +10:00
Connor McLaughlin
c3f914565f Android: Use SAF paths for scanning 2021-04-17 21:52:26 +10:00
Connor McLaughlin
d6d8d21eff Common/FileSystem: Make file functions content URI-aware 2021-04-17 21:52:26 +10:00
Connor McLaughlin
03f3f0369c GameList: Reduce number of system calls when scanning 2021-04-17 21:52:26 +10:00
Connor McLaughlin
e1578be20f Common/FileSystem: Add BuildRelativePath() function 2021-04-17 21:52:26 +10:00
Connor McLaughlin
1b16662f17 System: Remove unused ParseM3UFile function 2021-04-17 21:52:26 +10:00
Connor McLaughlin
2985c395df GameList: Fix uninitialized fields of PSF/EXE 2021-04-17 21:52:26 +10:00
Connor McLaughlin
8ad0f78ef7 CommonHostInterface: Prefer serial from database, not image 2021-04-17 21:52:26 +10:00
Connor McLaughlin
2ece7d19c1 GameDB: Fix analog controller support missing from numerous games 2021-04-17 21:52:26 +10:00
Connor McLaughlin
160aa06352 Add JSON game database data files 2021-04-17 17:04:24 +10:00
Connor McLaughlin
ff14e8aede Add JSON game database to replace dat parsing 2021-04-17 17:04:23 +10:00
Connor McLaughlin
b25030b19a Remove unused appveyor.yml 2021-04-17 16:33:37 +10:00
Connor McLaughlin
6868ad4326 Bus: Don't reserve entire fastmem region on Android 2021-04-17 16:33:25 +10:00
Connor McLaughlin
88618bde1c GPU: Correct value of ODE bit in vblank
Fixes line streaks in Dead or Alive.
2021-04-15 01:32:08 +10:00
Connor McLaughlin
3303523463 Update compatibility list/settings 2021-04-15 01:31:54 +10:00
Connor McLaughlin
442b801d39 CPU: Implement cop0 execution and data breakpoints 2021-04-14 19:06:52 +10:00
Connor McLaughlin
22fdd80cc3 CPU/Interpreter: Out of range cop0 reads should be nops 2021-04-14 19:06:52 +10:00
Connor McLaughlin
dd5277321b CPU/CachedInterpreter: Fix infinite loop when block compile fails 2021-04-14 19:06:52 +10:00
Connor McLaughlin
58f5c99100 Bus: Fix incorrect EPC for IBE exceptions 2021-04-14 19:01:43 +10:00
Connor McLaughlin
13b398ac46 GPU: Treat 0xFF commands as nops
Fixes slowdown in Soviet Strike and 40 Winks.
2021-04-13 13:18:51 +10:00
Connor McLaughlin
62718b3c50 Common/Timer: Add missing return when timer wait succeeds 2021-04-12 20:26:50 +10:00
Connor McLaughlin
ca9dee85a2 Merge pull request #1959 from falsepopsky/updateSpanish
update spanish qt and android
2021-04-12 20:15:34 +10:00
Connor McLaughlin
3687f2d067 MemoryArena: Fix compile error on Mac 2021-04-12 20:09:53 +10:00
falsepopsky
d3a14cb271 update qt spanish, and small translation for android 2021-04-11 14:35:10 -03:00
Connor McLaughlin
e087e6f3a2 CPU/Recompiler: Prevent using fastmem when cache is isolated
No point even trying since it's just going to fault.
2021-04-12 02:08:56 +10:00
Connor McLaughlin
922d320523 CPU/Recompiler: Reserve whole fastmem region to avoid clashes 2021-04-11 12:42:51 +10:00
Connor McLaughlin
8df0496dc1 CDROM: Store last subq even when auto-pausing
Fixes track looping in Fighting Force PAL.
2021-04-11 12:36:52 +10:00
Connor McLaughlin
bf7cd40f27 Update compatibility settings 2021-04-11 12:35:08 +10:00
Connor McLaughlin
4786beb0a9 Android: Don't ignore virtual input devices 2021-04-11 02:21:37 +10:00
Connor McLaughlin
251cffd64e Merge pull request #1954 from 6lackmag3/patch-42
(Android) update values-ru/strings
2021-04-11 02:21:24 +10:00
Connor McLaughlin
829fa1c08c Merge pull request #1953 from 6lackmag3/patch-39
(Android) update values-ru/arrays
2021-04-11 02:21:15 +10:00
6lackmag3
3e582d3d92 (Android) update values-ru/strings 2021-04-10 16:16:54 +03:00
6lackmag3
05120f114a (Android) update values-ru/arrays 2021-04-10 16:06:34 +03:00
Connor McLaughlin
1e5fc41b4e Android: Mark some missing strings as translatable 2021-04-10 20:17:35 +10:00
Connor McLaughlin
f72cbfc653 Android: Make touchscreen buttons larger when pushed 2021-04-10 20:17:35 +10:00
Connor McLaughlin
20ed6913a9 Android: Support scaling touchscreen buttons 2021-04-10 20:17:35 +10:00
Connor McLaughlin
3c83ef4939 NoGUI: Fail startup if font atlas creation fails 2021-04-10 14:59:59 +10:00
Connor McLaughlin
6a0bd7ee64 CDROM: Clear setloc pending on redundant read
Fixes palette corruption in Joshikousei no Houkago... Pukunpa.
2021-04-10 14:52:15 +10:00
Connor McLaughlin
327e8f3f59 GPU/OpenGL: Switch back to framebuffer blits over shader copy
Ends up being slower on Mali.
2021-04-10 14:52:15 +10:00
Connor McLaughlin
934b6e8f45 Merge pull request #1948 from 6lackmag3/patch-38
Update gamesettings.ini
2021-04-10 14:51:51 +10:00
Connor McLaughlin
1a714edf48 Merge pull request #1951 from andercard0/patch-104
Tiny fix
2021-04-10 14:51:43 +10:00
Anderson_Cardoso
973ecd1e18 Tiny fix
Quick fix typo.
2021-04-09 23:22:46 -03:00
6lackmag3
35f6f144ff Update gamesettings.ini 2021-04-08 23:32:12 +03:00
Connor McLaughlin
b6928e1b05 Merge pull request #1946 from 6lackmag3/patch-37
Update gamesettings.ini
2021-04-08 11:42:50 +10:00
Connor McLaughlin
0644faa635 System: Disable memory cards when running PSFs 2021-04-08 11:34:15 +10:00
Connor McLaughlin
deeb861918 CommonHostInterface: Fix rumble not applying to non-first controller 2021-04-08 11:33:59 +10:00
6lackmag3
cd09d583c0 Update gamesettings.ini 2021-04-08 03:55:27 +03:00
Connor McLaughlin
fc9d276435 Android: Fix fast boot by default not applying without opening settings 2021-04-08 03:20:25 +10:00
Connor McLaughlin
22d664b210 GPU/ShaderGen: Move discard to end of shader
Possible workaround for this PowerVR driver issue.
2021-04-08 03:07:10 +10:00
Connor McLaughlin
19ca102b40 VulkanHostDisplay: Handle surface loss gracefully
Also skips a full swap chain recreate on resize.
2021-04-08 03:07:10 +10:00
Connor McLaughlin
0342d0a26e Vulkan/SwapChain: Fix incorrectly-sized display surfaces being created 2021-04-08 03:07:10 +10:00
Connor McLaughlin
32ac60414c NoGUI: Use current resolution if unspecified 2021-04-08 03:07:10 +10:00
Connor McLaughlin
830612dbbf Update compatibility settings 2021-04-08 03:07:10 +10:00
shikulja
ab4c026b2d Update Russian translation (#1941)
* Update duckstation-qt_ru.ts

* Update duckstation-qt_ru.ts
2021-04-08 03:06:50 +10:00
Connor McLaughlin
6ce5330d75 Merge pull request #1938 from stenzek/file-offset-64
CDImagePBP: Use 64-bit file functions
2021-04-08 03:06:37 +10:00
Connor McLaughlin
7f6493fc3b Merge pull request #1931 from zkdpower/master
Update Simple-Chinese language file to latest
2021-04-08 03:06:18 +10:00
Connor McLaughlin
bd43c79ca4 Merge pull request #1929 from 6lackmag3/patch-34
Update gamesettings.ini
2021-04-08 03:06:09 +10:00
Connor McLaughlin
e595b357b3 CDImagePBP: Use 64-bit file functions
Fixes loading >2GB PBPs.
2021-04-07 18:30:54 +10:00
Connor McLaughlin
c71f78ffa0 FileSystem: Add 64-bit fseek/ftell wrappers 2021-04-07 18:30:38 +10:00
Connor McLaughlin
cbf0a21f05 CMake: Enable 64-bit file offsets on 32-bit platforms 2021-04-07 18:28:06 +10:00
zkdpower
8dd69ad149 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-04-06 14:34:57 +08:00
6lackmag3
bcd4eff10a Update gamesettings.ini
Removed duplicate entry for Duke Nukem: Total Meltdown. This game supports DualShock analog mode so no need for DisableAnalogModeForcing = true.
2021-04-06 03:04:58 +03:00
Connor McLaughlin
4ed12bcb52 GPU/OpenGL: Support MSAA without texel/SSBO buffers 2021-04-06 02:55:00 +10:00
Connor McLaughlin
0e637a093a Android: Add missing check for lifted pointer with d-pad 2021-04-06 02:26:41 +10:00
Connor McLaughlin
2ed482132d GPU/OpenGL: Use shader instead of framebuffer blit 2021-04-06 02:19:56 +10:00
Connor McLaughlin
57830bdd36 Update compatibility settings 2021-04-06 02:11:55 +10:00
Connor McLaughlin
72e6291107 HTTPDownloader: Drop user agent from base class 2021-04-04 13:30:28 +10:00
Connor McLaughlin
a8b2268e47 Merge pull request #1917 from falsepopsky/updateSpanish
spanish translation qt updated
2021-04-04 13:25:37 +10:00
Connor McLaughlin
c5460b4e48 Merge pull request #1915 from 6lackmag3/patch-33
(Android) update values-ru/strings to latest
2021-04-04 13:25:32 +10:00
Connor McLaughlin
9542825bd6 Merge pull request #1914 from 6lackmag3/patch-30
(Android) update values-ru/arrays to latest
2021-04-04 13:25:27 +10:00
Connor McLaughlin
f6194e2785 Merge pull request #1910 from andercard0/patch-103
Atualização Português do Brasil
2021-04-04 13:25:15 +10:00
Connor McLaughlin
4062d6c015 Cheevos: Provide OS and arch in user agent 2021-04-04 13:02:02 +10:00
Connor McLaughlin
2ac6f60bbb Rename cpu_detect.h to platform.h and add OS 2021-04-04 13:01:43 +10:00
Connor McLaughlin
d41b5be908 HTTPDownloader: Fix user agent sending on Windows/Android 2021-04-04 12:55:03 +10:00
6lackmag3
b8a16bcee8 (Android) update values-ru/strings.xml 2021-04-04 02:53:47 +03:00
falsepopsky
0ebe87be41 spanish translation qt updated 2021-04-03 20:50:38 -03:00
6lackmag3
847ee10340 (Android) update values-ru/arrays.xml 2021-04-04 02:46:15 +03:00
Anderson_Cardoso
334470d40a Atualização Português do Brasil
Update file to latest
2021-04-03 15:33:14 -03:00
Connor McLaughlin
251043f11a OSD: Add controller input display overlay 2021-04-04 04:08:42 +10:00
Connor McLaughlin
a9a571cd6a Android: Support binding half axes to buttons 2021-04-04 02:05:59 +10:00
Connor McLaughlin
bb21a062d8 Android: Add support for GunCon 2021-04-03 14:59:51 +10:00
Connor McLaughlin
17707525dc Android: Merge dpad into one button 2021-04-03 14:59:47 +10:00
Connor McLaughlin
acff275f6b WindowInfo: Fix macOS build 2021-04-03 03:03:42 +10:00
Connor McLaughlin
6c59e769ed FullscreenUI: Fix double display of stats with debug menu 2021-04-03 02:53:28 +10:00
Connor McLaughlin
924756860e HostDisplay: Support refresh rate queries on all platforms except Mac 2021-04-03 02:53:28 +10:00
Connor McLaughlin
e94c68e874 Qt: Update Japanese translation by mikakunin 2021-04-02 12:32:24 +10:00
Connor McLaughlin
65f99f89ff CDImagePBP: Improve handling of broken images from PSX2PSP 2021-04-01 16:26:21 +10:00
Connor McLaughlin
0313ce6aee Update compatibility list/game settings 2021-04-01 02:29:59 +10:00
Connor McLaughlin
9bf805c2af Pad: Fix crash with mismatched cards in save state 2021-04-01 02:29:59 +10:00
Connor McLaughlin
872a9b95c7 Android: Remove quick menu hotkey
It has its own quick menu hotkey.
2021-04-01 02:29:59 +10:00
Connor McLaughlin
7e11987ba8 Merge pull request #1890 from LOuroboros/typo
Corrected a typo in the emulator's settings
2021-04-01 02:29:38 +10:00
Connor McLaughlin
c825292a93 Merge pull request #1886 from MaddTheSane/morePrintfLike
More printflike macros
2021-04-01 02:29:05 +10:00
LOuroboros
5a751ff3be Corrected a typo
"safe to enabled" -> "safe to enable"
2021-03-30 19:58:47 -03:00
C.W. Betts
b8e85798a6 Fix wrong printflike for FormattedError in Cheevos. 2021-03-29 14:04:23 -06:00
C.W. Betts
e4735bcf7a Fix string formatting warnings. 2021-03-29 13:59:22 -06:00
C.W. Betts
fb7a8886f1 Add more printflike macros. 2021-03-29 13:56:19 -06:00
Connor McLaughlin
df5de7730c GPU/HW: Disable depth buffering on transparent polygons
These are the most likely to be coplanar and cause issues.
2021-03-30 01:40:05 +10:00
Connor McLaughlin
a6617e6297 Merge pull request #1878 from 6lackmag3/patch-28
(Android) minor corrections for values-ru/strings
2021-03-29 16:09:45 +10:00
Connor McLaughlin
2e0a2c7474 Merge pull request #1879 from 6lackmag3/patch-29
Force digital mode for Twisted Metal 1 and 2
2021-03-29 16:09:29 +10:00
Connor McLaughlin
d09cc99aa2 Merge pull request #1880 from MaddTheSane/patch-2
Update error.h
2021-03-29 16:09:17 +10:00
C.W. Betts
3af624b98e Update error.h
Add printflike macros to the Error class.
2021-03-28 14:37:50 -06:00
6lackmag3
ee9c1131db Force digital mode for Twisted Metal 1 and 2 2021-03-28 20:25:54 +03:00
6lackmag3
7c584eb589 (Android) minor corrections for values-ru/strings 2021-03-28 19:57:16 +03:00
Connor McLaughlin
1973419021 Settings: Disable region check by default 2021-03-29 00:53:15 +10:00
Connor McLaughlin
4983c32740 Android: Enable fast boot by default 2021-03-29 00:51:21 +10:00
Connor McLaughlin
ddea2818d9 Qt: Add renderer/resolution to status bar 2021-03-28 13:47:53 +10:00
Connor McLaughlin
dec2d48bfe System: Fix crash when launching exe/psf 2021-03-28 13:47:53 +10:00
Connor McLaughlin
a9c026f06a Settings: Rename 'FPS' to 'Game Frame Rate' 2021-03-28 13:47:53 +10:00
Connor McLaughlin
cfdddbf043 Android: Use global reference to EmulationActivity
Fixes crash when loading input profile while running.
2021-03-28 13:47:53 +10:00
Connor McLaughlin
85c5b99b7a CDROM: GetID should return error when no disc 2021-03-28 13:47:52 +10:00
zkdpower
afbef51b1a Update Simple-Chinese language file to latest (#1874)
* Update Simple-Chinese language file to latest

Update Simple-Chinese language file to latest

* Update Simple-Chinese language file to latest

Update Simple-Chinese language file to latest
2021-03-28 13:47:41 +10:00
Connor McLaughlin
07c5fdc0ea Merge pull request #1876 from andercard0/patch-102
Atualização Português do Brasil
2021-03-28 13:47:31 +10:00
Anderson_Cardoso
8cfed68ae9 Atualização Português do Brasil
Update file to latest
2021-03-27 12:54:20 -03:00
Connor McLaughlin
e9aab649e5 GameList: Bump cache version
Force playlists to re-scan.
2021-03-27 17:31:20 +10:00
Connor McLaughlin
465f0d6e04 Android: Make BIOS import error clearer 2021-03-27 17:21:34 +10:00
Connor McLaughlin
3f7d8604e5 Qt: Add 'Memory Card Editor' button to memory card settings 2021-03-27 17:14:10 +10:00
Connor McLaughlin
47ba6e7449 GL/Context: Better handle resizing with GLX
Fixes fullscreen having no effect when running under XWayland.
2021-03-27 16:14:34 +10:00
Connor McLaughlin
5df28eff9d System: Fix failing to load new single disc save states 2021-03-27 15:43:42 +10:00
Connor McLaughlin
fa2525324e CDImage: Fix Linux build 2021-03-27 15:34:15 +10:00
Connor McLaughlin
5aa70cf797 Settings: Add memory card directory option 2021-03-27 15:18:29 +10:00
Connor McLaughlin
f829933a83 Qt: Rework/simplify change disc menu 2021-03-27 15:18:29 +10:00
Connor McLaughlin
e83f312928 CDImagePBP: Add multi-disc support 2021-03-27 15:18:29 +10:00
Connor McLaughlin
50d712c3fe CDImage: Support sub-images, use subimages for m3u 2021-03-27 15:18:29 +10:00
Connor McLaughlin
573aa6d9cc FullscreenUI: Fix missing window title with playlist 2021-03-27 13:44:59 +10:00
Connor McLaughlin
97682e09ab Pad: Don't apply input state when load-from-devices is off 2021-03-27 13:42:32 +10:00
Connor McLaughlin
ff411dac2e DigitalController: Fix buttons getting broken when load-from-state on 2021-03-27 13:42:06 +10:00
Connor McLaughlin
9bbddc7b3a Merge pull request #1871 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-27 12:49:45 +10:00
Connor McLaughlin
781e8f1867 Merge pull request #1659 from piepacker/jake/multitap_8x_devices_in_state
pad: improve messaging when UI config doesn't match savestate config, and document some edge cases
2021-03-27 12:49:31 +10:00
zkdpower
a660c706de Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-26 17:53:45 +08:00
Connor McLaughlin
f1fb7383b7 DInputControllerInterface: Support diagonals in hat 2021-03-25 13:50:13 +10:00
Connor McLaughlin
03905b8f2e Remove stub duckstation-sdl binary
It's been a stub for a while.
2021-03-25 13:33:48 +10:00
Connor McLaughlin
270443605c README.md: Update dependencies for Linux 2021-03-25 13:33:48 +10:00
Connor McLaughlin
c502f8b0a6 GPU/Vulkan: Fix box downsampling using incorrect texture 2021-03-25 13:33:48 +10:00
Connor McLaughlin
c5e14c2f9f Android: Remove title from toolbar/add open icon 2021-03-25 13:33:48 +10:00
Connor McLaughlin
a3b0f7b2dd Merge pull request #1859 from ggrtk/fix-loadstate-message
System: Fix message crash for missing CD image
2021-03-25 13:33:39 +10:00
Albert Liu
d10365c60e System: Fix message crash for missing CD image 2021-03-22 19:17:04 -07:00
Connor McLaughlin
4cd8c959ce Merge pull request #1853 from 6lackmag3/patch-26
(Android) update values-ru/strings to latest
2021-03-22 12:18:06 +10:00
Connor McLaughlin
8f139a0bea Merge pull request #1852 from 6lackmag3/patch-27
(Android) update values-ru/arrays
2021-03-22 12:17:49 +10:00
Connor McLaughlin
1e3679c48b Update compatibility list 2021-03-22 12:17:06 +10:00
Connor McLaughlin
768e819ec8 Android: Re-enable logging in EmulationSurfaceView 2021-03-22 12:09:40 +10:00
Connor McLaughlin
dd130c2132 Android: Fix possible crash in memory card editor 2021-03-22 12:09:22 +10:00
6lackmag3
f02cee23f7 (Android) update values-ru/arrays 2021-03-22 02:23:36 +03:00
6lackmag3
6ecf75e0ba (Android) update values-ru/strings to latest 2021-03-22 02:23:19 +03:00
Jake Stine
96344799a0 pad: improve UI messaging when UI config doesn't match savestate config, and document some edge cases. 2021-03-21 13:25:46 -07:00
Jake Stine
6449207e04 pad: remove unreachable code block in DoState
The block in question was introduced by changesets:
  47f0720b93
  125d104df4
2021-03-21 12:31:58 -07:00
Connor McLaughlin
4c3d2cd3fe Android: Stop activity recreate when theme is set
Hopefully will fix those crashes on startup.
2021-03-21 17:22:33 +10:00
Connor McLaughlin
237c0a01b6 Android: Minor binding improvements
- Auto bind vibration when supported.
 - Fix automatic mapping of L2/R2 for XBox Controller.
2021-03-21 15:41:44 +10:00
Connor McLaughlin
da7fa835fe Merge pull request #1850 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-21 15:40:33 +10:00
Connor McLaughlin
3a041fa0f6 Android: Add a 'no games found' version of game list 2021-03-21 15:14:17 +10:00
Connor McLaughlin
7831769dc3 Android: Always show icons in game list toolbar 2021-03-21 15:14:17 +10:00
Connor McLaughlin
0155d6ed61 Android: Add automatic controller mapping option 2021-03-21 15:14:17 +10:00
Connor McLaughlin
ad991c122d Android: Add an update notification about controller bindings 2021-03-21 15:14:16 +10:00
zkdpower
132a485066 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-21 10:28:15 +08:00
Connor McLaughlin
a5e316b916 Android: Use user directory for memcard root 2021-03-21 02:55:49 +10:00
Connor McLaughlin
93087d3c45 Android: Don't restart activities on keyboard change 2021-03-21 02:55:49 +10:00
Connor McLaughlin
4ab283a2ae Android: Add "Choose Cover Image" to game list menu 2021-03-21 02:55:49 +10:00
Connor McLaughlin
f68836206b Android: Remove version from toolbar in game list
Not enough space to show it in portrait mode anyway.
2021-03-21 02:55:49 +10:00
Connor McLaughlin
02e8c7de58 Android: Add memory card editor 2021-03-21 02:55:49 +10:00
Connor McLaughlin
6d4a3bb5a5 Android: Add MemoryCardImage class 2021-03-21 02:55:49 +10:00
Connor McLaughlin
4dec0dee2f MemoryCardImage: Support passing import buffers in 2021-03-21 02:55:48 +10:00
Connor McLaughlin
3aaf1d942b Merge pull request #1842 from Max833/master
Qt: Update German translation
2021-03-21 02:51:59 +10:00
Connor McLaughlin
e343fd2b59 Merge pull request #1843 from andercard0/patch-101
Atualização Português do Brasil
2021-03-21 02:51:50 +10:00
Connor McLaughlin
a6a3590722 Merge pull request #1840 from stenzek/map-jit
CPU/Recompiler: Use MAP_JIT for code space on Apple Silicon
2021-03-21 02:51:45 +10:00
Anderson_Cardoso
d3461349d8 Atualização Português do Brasil
Update file to latest
2021-03-19 15:01:23 -03:00
Max833
818bdac464 Update duckstation-qt_de.ts 2021-03-19 18:46:50 +01:00
Connor McLaughlin
76d30282e0 Qt: Fix translatability of memory card editor tooltips 2021-03-20 03:05:18 +10:00
Connor McLaughlin
d61a9875e1 Android: Fix swapped labels for analog controller settings 2021-03-20 03:03:16 +10:00
Connor McLaughlin
891b4642b7 Android: Allow back button on controllers to be bound 2021-03-20 03:03:16 +10:00
Connor McLaughlin
7e4453a7d4 Android: Fix controller 1 default type of "Not Set" 2021-03-20 03:03:16 +10:00
Connor McLaughlin
ab02fbdfad Android: Be less strict about bindable devices 2021-03-20 03:03:16 +10:00
Connor McLaughlin
8b7e2b525e CPU/Recompiler: Tiny optimization for div on x64 2021-03-20 03:03:16 +10:00
Connor McLaughlin
7d634ca278 Merge pull request #1839 from ggrtk/memcard-editor
Qt/MemoryCardEditor: Minor update
2021-03-20 03:02:18 +10:00
Connor McLaughlin
b30ecca872 Merge pull request #1838 from ggrtk/pbp
CDImagePBP: Split disc loading into separate method
2021-03-20 03:00:59 +10:00
Connor McLaughlin
090e4700e8 Merge pull request #1841 from andercard0/patch-100
Atualização Português do Brasil
2021-03-20 03:00:32 +10:00
Anderson_Cardoso
5907a721a6 Atualização Português do Brasil
Update file to latest.
2021-03-19 08:27:00 -03:00
Connor McLaughlin
5bbbb8d3d5 CPU/Recompiler: Use MAP_JIT for code space on Apple Silicon 2021-03-19 18:47:31 +10:00
Connor McLaughlin
663dc496bf CPU/Recompiler: Tiny optimization for div on x64 2021-03-19 18:06:25 +10:00
Albert Liu
d7196f1f85 Qt/MemoryCardEditor: Add tool tips for new card and open card buttons 2021-03-18 18:21:53 -07:00
Albert Liu
39d1628da5 Qt/MemoryCardEditor: Set combobox indices to 0 on close event
Fixes persisting dirty card state when reopening memory card editor.
2021-03-18 18:04:25 -07:00
Albert Liu
02e8e2b071 CDImagePBP: Split disc loading into separate method 2021-03-18 16:51:09 -07:00
Connor McLaughlin
25d4060bce CDROM: Hold position at end of track, not start of next 2021-03-19 01:58:43 +10:00
Connor McLaughlin
11dcba1b68 CDImage: Use Error class for complex errors 2021-03-19 01:58:00 +10:00
Connor McLaughlin
955afc3182 Common: Add Error helper class 2021-03-19 01:52:50 +10:00
Connor McLaughlin
57ee9242f5 Merge pull request #1836 from ggrtk/pbp
CDImagePBP: Log error message when skipping encrypted files
2021-03-19 01:52:35 +10:00
Albert Liu
12ff343206 CDImagePBP: Log error message when skipping encrypted files 2021-03-17 20:24:04 -07:00
Connor McLaughlin
b13c51a2e2 GPU/SW: Use new 5-to-8 converters for RGBA8 display 2021-03-18 13:00:58 +10:00
Connor McLaughlin
6c05413220 GPU: Improve precision of 5-to-8 bit conversion for HW renderers
Fixes VRAM transfers being corrupted in fallback OpenGL path.
2021-03-18 13:00:58 +10:00
Connor McLaughlin
391114ccae GPU/OpenGL: Only use one upload path and clamp to max SSBO size 2021-03-18 13:00:58 +10:00
Connor McLaughlin
703715724e GPU/SW: Remove unused 5-to-8 conversion functions 2021-03-18 13:00:58 +10:00
Connor McLaughlin
4441bb1a91 CDROM: Apply volume on output not sector read
Fixes audio starting too late in Mega Man Legends.
2021-03-18 13:00:58 +10:00
Connor McLaughlin
37ec1dd7e4 Merge pull request #1830 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-18 13:00:47 +10:00
Connor McLaughlin
bad87f75cb Merge pull request #1831 from PookaMustard/master
QoL changes for Touch Gliding
2021-03-18 13:00:30 +10:00
Connor McLaughlin
db1c24d6b0 Merge pull request #1833 from falsepopsky/updateSpanish
update spanish qt, new config to block blank issues
2021-03-18 13:00:01 +10:00
falsepopsky
dbedb8d5d6 update spanish qt, new config to block blank issues 2021-03-17 19:52:31 -03:00
Certainty Witch
20f7cd7217 More QoL changes for touch gliding 2021-03-17 14:35:18 +02:00
Certainty Witch
3d08dd0250 QoL change for touch gliding 2021-03-17 14:00:17 +02:00
zkdpower
7675f3b48a Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-17 17:31:39 +08:00
Connor McLaughlin
1e1d864e0a Merge pull request #1827 from andercard0/patch-99
Atualização Português do Brasil
2021-03-17 13:18:37 +10:00
Connor McLaughlin
9a283b1867 Qt: Update Japanese translation by mikakunin 2021-03-17 13:18:14 +10:00
Anderson_Cardoso
0889fd6851 Atualização Português do Brasil
Minor update file.
2021-03-16 13:57:45 -03:00
Connor McLaughlin
b1cf255518 Merge pull request #1826 from falsepopsky/updateSpanish
android spanish translation update
2021-03-17 01:08:54 +10:00
falsepopsky
657854123a android spanish translation update 2021-03-16 12:04:31 -03:00
Connor McLaughlin
af237a7e78 Qt: Add .pbp to all open->all file types 2021-03-17 00:59:36 +10:00
Connor McLaughlin
1911a25a9f System: Add warning if CD-ROM read speedup is enabled on startup 2021-03-17 00:58:09 +10:00
Connor McLaughlin
3dc53dd93c Qt/AchievementSettings: Fix view profile button being disabled 2021-03-17 00:51:13 +10:00
Connor McLaughlin
4c76d88728 Cheevos: Fix panic when logging in with fullscreen UI disabled 2021-03-17 00:51:13 +10:00
Connor McLaughlin
86e5780c0d Merge pull request #1822 from 6lackmag3/patch-25
(Android) Update values-ru/arrays to latest
2021-03-17 00:51:03 +10:00
Connor McLaughlin
237d5f8ca9 Merge pull request #1823 from ggrtk/pbp
CDImage: Add support for loading PBP images
2021-03-17 00:50:37 +10:00
Albert Liu
46ff2b553d CDImage: Add support for loading PBP images 2021-03-15 20:06:39 -07:00
6lackmag3
b3a195bf76 (Android) Update values-ru/arrays to latest 2021-03-16 03:10:24 +03:00
Connor McLaughlin
a34f0d5599 Android: Add controller settings to ingame menu 2021-03-16 01:59:17 +10:00
Connor McLaughlin
a0086851ce Qt: Fix double-clicking psexes/psfs in game list 2021-03-16 01:59:17 +10:00
Connor McLaughlin
299ba60b8d XInput: Fix trigger magnitude being doubled 2021-03-16 01:59:17 +10:00
Anderson_Cardoso
b828ac89f4 Android - Atualização Pt-Br (#1810)
Update strings file to latest.
2021-03-16 01:58:59 +10:00
Connor McLaughlin
dccbc59246 Merge pull request #1816 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-16 01:02:20 +10:00
Connor McLaughlin
953718e1c8 Merge pull request #1814 from 6lackmag3/patch-24
Update arrays.xml
2021-03-16 01:02:16 +10:00
Connor McLaughlin
2f7d45c321 Merge pull request #1813 from 6lackmag3/patch-23
Update strings.xml
2021-03-16 01:02:02 +10:00
Connor McLaughlin
73295e27e0 Merge pull request #1811 from andercard0/patch-98
Android - Atualização Pt-Br
2021-03-16 01:01:38 +10:00
zkdpower
95806859a6 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-15 18:08:16 +08:00
6lackmag3
58baec862a Update arrays.xml
updated to latest
2021-03-15 05:13:12 +03:00
6lackmag3
c3eeed5a66 Update strings.xml
updated to latest
2021-03-15 05:13:03 +03:00
Anderson_Cardoso
314f520042 Android - Atualização Pt-Br
Update Arrays to latest.
2021-03-14 19:19:14 -03:00
Connor McLaughlin
a8fd4d5bbd HTTPDownloaderWinHttp: Hopefully fix issue on Windows <8.1 2021-03-15 01:46:26 +10:00
Connor McLaughlin
429ab9ffa2 Android: Fix DS4 dpad mapping 2021-03-14 20:48:10 +10:00
Connor McLaughlin
dea713e243 Merge pull request #1806 from stenzek/android-multi-controllers
Android: Add >1 controller, multitap, external controller vibration
2021-03-14 19:33:21 +10:00
Connor McLaughlin
686fc4cc2a Android: Add hotkey categories/grouping 2021-03-14 19:33:00 +10:00
Connor McLaughlin
d2cef2e3b5 Android: Pretty print device IDs 2021-03-14 19:33:00 +10:00
Connor McLaughlin
26ee2ce083 Android: Implement support 8 controllers (multitap) 2021-03-14 19:33:00 +10:00
Connor McLaughlin
c8a029c5cb Android: Support more than one controller 2021-03-14 19:32:58 +10:00
Connor McLaughlin
1839bfab3b Android: Rewrite input binding to be more flexible
Supports vibration, non-gamepad controllers, etc.

You will need to rebind your controllers.
2021-03-14 19:32:03 +10:00
Connor McLaughlin
ee171465ea CommonHostInterface: Move controller ID parsing to interface 2021-03-14 19:32:03 +10:00
Connor McLaughlin
e87ce48601 Merge pull request #1804 from 6lackmag3/patch-22
Update arrays.xml
2021-03-14 19:31:31 +10:00
Connor McLaughlin
830db73688 Merge pull request #1803 from 6lackmag3/patch-21
Update strings.xml
2021-03-14 19:31:16 +10:00
Connor McLaughlin
26a0a7b20c Merge pull request #1802 from andercard0/patch-96
Atualização Português do Brasil
2021-03-14 19:31:05 +10:00
Connor McLaughlin
b0657bc610 Merge pull request #1807 from ggrtk/fix-analog-controller-panic
AnalogController: Only panic on unknown config mode commands
2021-03-14 19:30:16 +10:00
Albert Liu
49c65cf5dd AnalogController: Only panic on unknown config mode commands 2021-03-14 00:40:36 -08:00
6lackmag3
613e1e2904 Update arrays.xml
minor changes; updated to latest
2021-03-14 03:03:50 +03:00
6lackmag3
19bc610276 Update strings.xml
minor changes and fixes; updated to latest
2021-03-14 03:02:21 +03:00
Anderson_Cardoso
21db6b7e48 Atualização Português do Brasil
Update file to latest.
2021-03-13 16:33:35 -03:00
Connor McLaughlin
cf7b167359 Merge pull request #1797 from stenzek/android-cheevos
Android: Implement RetroAchievements
2021-03-14 03:17:25 +10:00
Connor McLaughlin
455b4f4d0e Merge pull request #1800 from Max833/master
Qt: Update German translation
2021-03-14 03:16:09 +10:00
Max833
14ae73c137 Update duckstation-qt_de.ts 2021-03-13 18:13:48 +01:00
Connor McLaughlin
c182edf196 Android: Implement RetroAchievements 2021-03-14 03:13:11 +10:00
Connor McLaughlin
0f1dc93eaa Android: Enable plaintext HTTP for i.retroachievements.org
Android doesn't like its TLS configuration.
2021-03-14 02:21:15 +10:00
Connor McLaughlin
6bced299f4 Android: Add AndroidHTTPDownloader class 2021-03-14 02:21:15 +10:00
Connor McLaughlin
566ecaf209 Cheevos: Remove redundant message on login 2021-03-14 02:21:05 +10:00
Connor McLaughlin
e719ebcfa0 Android: Fix 'Auto (Game Native)' aspect ratio game setting 2021-03-14 02:20:21 +10:00
Connor McLaughlin
658184f85f GameSettings: Fix SSAA always showing on Android 2021-03-14 02:19:51 +10:00
Connor McLaughlin
fa03038cef Cheevos: Clear login timestamp on logout 2021-03-14 02:01:48 +10:00
Connor McLaughlin
f3ebd286c4 Android: Make progress dialogs non-cancelable 2021-03-14 02:01:48 +10:00
Connor McLaughlin
28e52e53e7 FullscreenUI: Allow tweaking notification vertical position 2021-03-14 02:01:48 +10:00
Connor McLaughlin
c062cc2c26 GPU/Vulkan: Fix UBO hazard across cmdbuffers 2021-03-14 02:01:48 +10:00
Connor McLaughlin
05f6f8579f GPU/Vulkan: Fix SSAA being near ineffective 2021-03-14 02:01:48 +10:00
Connor McLaughlin
0feb817130 ShaderGen: Disable interface blocks when using AMD OpenGL
SSAA/per sample shading is broken otherwise.
2021-03-14 02:01:48 +10:00
Connor McLaughlin
75e473897e Update compatibility settings 2021-03-14 02:01:48 +10:00
Connor McLaughlin
d20d616823 Merge pull request #1799 from PugsyMAME/master
Updated chtdb.txt and added new types F5, 52 & 53. Cleaned up type 51
2021-03-14 02:01:20 +10:00
Connor McLaughlin
4d2747fe74 Merge pull request #1792 from CookiePLMonster/plurality-pass
Plurality for non-Qt messages
2021-03-14 01:58:14 +10:00
PugsyMAME
0fd593eb42 Updated chtdb.txt and added new types F5, 52 & 53. Cleaned up type 51
Chtdb.txt
=========
Updated the header to document all the new cheat types, added some more cheats
and cleaned up others.

New Cheat Types:-
=================
F5 - 16-Bit toggle cheat, predominatly used with the D7 cheat to enable/disable
      ASM cheats with the same key presses. See chtdb.txt for more information.

52 - Register Block Conditionals for use with the type 51 cheats. There are 128 
      sub types. See chtdb.txt for more information.
      
53 - Improved Slide Code cheat type, with support for 65536 addresses and a 16
      bit step and easily configurable step direction for value and address.
      See chtdb.txt for more information.      

Other Changes:-
===============
51 - Cleaned up - renumbered/renamed, Tested & Bugfixed. See chtdb.txt for more 
      information.
2021-03-13 15:21:40 +00:00
PugsyMAME
bcd3bace83 Chtdb.txt update 2021-03-13 15:20:49 +00:00
Silent
5515a581e0 Update PL localization 2021-03-12 21:49:55 +01:00
Silent
6350bb0e36 Hook up plurality to OSD messages 2021-03-12 21:40:24 +01:00
Silent
948a6b530b Make TranslateString and TranslateStdString support numbers 2021-03-12 20:03:25 +01:00
Silent
787ab5dbd0 String: Add a new constructor 2021-03-12 19:59:39 +01:00
Connor McLaughlin
6fa245ed61 Cheats: Fix parsing database when game has one code 2021-03-13 03:06:56 +10:00
Connor McLaughlin
82749d1ba3 GPU/HW: Increase streaming buffer sizes to 4MB/2MB 2021-03-13 03:06:56 +10:00
Connor McLaughlin
f044818a7c Vulkan/StreamBuffer: Fix allocations getting stuck 2021-03-13 03:06:55 +10:00
Connor McLaughlin
5e07b23cfb Merge pull request #1786 from falsepopsky/updateSpanish
spanish lang... update
2021-03-12 03:17:31 +10:00
Connor McLaughlin
97adebba3a Merge pull request #1775 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-12 03:17:25 +10:00
Connor McLaughlin
39e75180d0 Merge pull request #1773 from andercard0/patch-95
Atualização Português do Brasil
2021-03-12 03:17:15 +10:00
Connor McLaughlin
e10271e18b GameList: Allow webp covers
Currently only enabled for Qt/Android, nogui lacks a decoder.
2021-03-12 03:06:11 +10:00
Connor McLaughlin
7241876cc7 CommonHostInterface: Fix -settings on cmdline not applying 2021-03-12 03:02:57 +10:00
Connor McLaughlin
14a98c3c9e CommonHostInterface: Fix reset settings not saving on startup 2021-03-12 03:02:45 +10:00
Connor McLaughlin
4685d66a2b Qt: Implement drag/drop file on main window 2021-03-12 02:50:17 +10:00
Connor McLaughlin
eca0b51008 GameSettings: Fix incorrect key for texture filter load from ini 2021-03-12 02:18:50 +10:00
Connor McLaughlin
d150a2ccc3 Qt: Only enable view->game properties for game list entry 2021-03-12 02:18:47 +10:00
falsepopsky
ea01c5c663 spanish update duckstation-qt_es 2021-03-10 22:25:14 -03:00
zkdpower
64522ce938 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-10 04:03:56 +08:00
Connor McLaughlin
ebfbae8dd1 Vulkan/StreamBuffer: Prevent skipping fance when wrapping around 2021-03-10 01:08:08 +10:00
Anderson_Cardoso
061770b162 Atualização Português do Brasil
Update and fixes.
2021-03-09 11:02:06 -03:00
Connor McLaughlin
36ff345e60 Revert "GL/Context: Disable GLES3.2 on PowerVR Rogue"
Broken driver is just broken. Not much I can do when I don't have one of
these phones and the shader compiler simply says "failure" without any
line information.
2021-03-09 17:25:58 +10:00
Connor McLaughlin
272daedc46 GameSettings: Don't display message for icache force enable
This likely isn't something the user has explicitly enabled, therefore
no need to spam them with the override.
2021-03-09 17:24:46 +10:00
Connor McLaughlin
75ce744cfe GameSettings: Fix incorrect serial for Legend of Legaia (USA) 2021-03-09 17:24:46 +10:00
Connor McLaughlin
18f952d95c Android: Enable scrollbars in game list 2021-03-09 17:24:46 +10:00
Connor McLaughlin
31a9e1b049 Merge pull request #1770 from CookiePLMonster/lock-login-button
Achievements Login: Lock "Login" button if credentials are not entered
2021-03-09 17:18:11 +10:00
Connor McLaughlin
f8f7c63b55 Merge pull request #1768 from CookiePLMonster/update-pl-loc
Update PL localization + fixes
2021-03-09 17:17:43 +10:00
Connor McLaughlin
a255425e27 Merge pull request #1769 from CookiePLMonster/fix-quick-menu-exit
Fix quick menu exit
2021-03-09 17:17:14 +10:00
Silent
08b2f6c715 AchievementLoginDialog: Lock out "Login" if fields aren't filled 2021-03-08 21:10:55 +01:00
Silent
435a848559 FullscreenUI: Close menus on Cancel button edge only
Now requires the button to be released, THEN pressed
2021-03-08 20:42:32 +01:00
Silent
3849ec449b Revert "CommonHostInterface: Use key-release to open quick menu"
This reverts commit e0161c3bb2.
2021-03-08 20:16:38 +01:00
Silent
6fb4d29930 Update PL localization 2021-03-08 19:59:17 +01:00
Silent
4ee93d5200 Add disambiguation in AchievementLoginDialog 2021-03-08 19:57:30 +01:00
Silent
2280fc9806 Fixup plurality in QtHostInterface::OnAchievementsRefreshed 2021-03-08 19:57:10 +01:00
Connor McLaughlin
4e2ee86c1a GPU/Vulkan: Fix incorrect layout in ClearDepthBuffer() 2021-03-08 17:44:10 +10:00
Connor McLaughlin
9d0c5d4c6d GameSettings: Force icache for Silent Hill 2021-03-08 17:29:00 +10:00
Connor McLaughlin
535fef88c5 GL/Context: Drop unnecessary macro check 2021-03-08 17:28:34 +10:00
Connor McLaughlin
fdc7066ead Merge pull request #1717 from stenzek/ram-reads
Bus: Increase the number of ticks for RAM reads
2021-03-08 17:27:46 +10:00
Connor McLaughlin
2da106391a Merge pull request #1759 from andercard0/patch-94
Atualização Português do Brasil
2021-03-08 11:49:23 +10:00
Connor McLaughlin
247f9bf344 Merge pull request #1761 from 6lackmag3/patch-19
Update strings.xml
2021-03-08 11:49:11 +10:00
Connor McLaughlin
bce45b468a Merge pull request #1762 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-08 11:48:58 +10:00
Connor McLaughlin
e0161c3bb2 CommonHostInterface: Use key-release to open quick menu
Fixes auto closing when it's bound to escape.
2021-03-08 11:45:48 +10:00
Connor McLaughlin
e2694b2570 Cheevos: Fix unlimited fast forward in hardcode mode 2021-03-08 11:44:02 +10:00
Connor McLaughlin
a559139105 GPU/OpenGL: Also check number of fragment storage blocks 2021-03-08 11:40:34 +10:00
Connor McLaughlin
9eae20128d GPU/OpenGL: Remove now-unnecessary geometry shader check 2021-03-08 11:37:03 +10:00
Connor McLaughlin
217c95bd2c Android: Fix incorrect 'Show Emulation Speed' summary 2021-03-08 11:35:40 +10:00
Connor McLaughlin
ad7e0d48c6 ShaderGen: Try disabling GLSL ES 3.2 on PowerVR 2021-03-08 11:34:17 +10:00
zkdpower
cc68e2931b Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-08 08:50:24 +08:00
6lackmag3
65002d329a Update strings.xml
update to latest
2021-03-07 21:48:59 +03:00
Anderson_Cardoso
c1c090fb7c Atualização Português do Brasil
Update file to latest.
2021-03-07 15:05:09 -03:00
Connor McLaughlin
5e0ebb5d5f SDLControllerInterface: Don't crash on unbound hat index 2021-03-08 02:48:18 +10:00
Connor McLaughlin
5fff104383 Android: Fix silly typo
That's what I get for editing out of the IDE and it being 2am.
2021-03-08 02:18:45 +10:00
Connor McLaughlin
6333daaddc Qt: Add note about quick menu to achievement settings 2021-03-08 02:05:50 +10:00
Connor McLaughlin
9f83dfbc15 Qt: Update Japanese translation by mikakunin 2021-03-08 01:53:26 +10:00
Connor McLaughlin
196f53ab80 Android: Add a couple of missing translation strings 2021-03-08 01:53:26 +10:00
Connor McLaughlin
1893bfd248 Cheevos: Don't choke on long passwords 2021-03-08 01:53:26 +10:00
Connor McLaughlin
a0e97059f5 Qt: Allow binding keyboard keys via fullscreen UI 2021-03-08 01:53:26 +10:00
Connor McLaughlin
39498cda10 FullscreenUI: Make right click on binding clear it 2021-03-08 01:53:26 +10:00
Connor McLaughlin
8531a5c8f0 Merge pull request #1757 from 6lackmag3/patch-18
Update arrays.xml
2021-03-08 01:53:05 +10:00
Connor McLaughlin
63669904e4 Merge pull request #1756 from 6lackmag3/patch-17
Update strings.xml
2021-03-08 01:52:56 +10:00
6lackmag3
039a19cad7 Update arrays.xml
minor correction
2021-03-07 18:45:32 +03:00
6lackmag3
214108ff92 Update strings.xml
minor corrections, update to latest
2021-03-07 18:40:45 +03:00
Connor McLaughlin
13e5769e42 Merge pull request #1753 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-07 19:35:22 +10:00
Connor McLaughlin
627f147a90 Support compiling for FreeBSD 2021-03-07 19:35:02 +10:00
Connor McLaughlin
7190c571f9 CMake: Build system support for FreeBSD 2021-03-07 19:35:02 +10:00
Connor McLaughlin
3f5d6ee025 CommonHostInterface: FixIncompatibleSettings() should be marked override 2021-03-07 17:35:02 +10:00
Connor McLaughlin
db17baba1b GL/Context: Disable GLES3.2 on PowerVR Rogue
It's choking on our shaders, maybe it's the I/O blocks or texture
buffers?
2021-03-07 17:34:29 +10:00
Connor McLaughlin
ee190ef561 CDROM: Fix typo in ResetPhysicalPosition() 2021-03-07 17:34:16 +10:00
Connor McLaughlin
753dd0480f CDImage: Add support for loading mds/mdf images 2021-03-07 16:26:15 +10:00
zkdpower
b903369d2c Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-07 11:58:29 +08:00
Connor McLaughlin
320394fbd1 ShaderGen: Fix GLSL emitting location = 00 2021-03-07 02:55:37 +10:00
Connor McLaughlin
6bbb1128b6 System: Hash executable for game code when system.cnf missing 2021-03-07 02:47:00 +10:00
Connor McLaughlin
ac4dd11fa0 CDImage: Add support for ECM images 2021-03-07 02:47:00 +10:00
Connor McLaughlin
cc48b6cc7b Android: Don't save fragment state
We have custom constructors and state which break this.
2021-03-07 02:46:59 +10:00
Connor McLaughlin
fd7d77bc70 Merge pull request #1736 from PugsyMAME/master
Added new cheat cheat types: C3, C4, C5, C6, D7&52
2021-03-07 02:46:50 +10:00
Connor McLaughlin
b80d4d5675 Android: Update touch buttons on down as well as move 2021-03-06 16:00:38 +10:00
Connor McLaughlin
977f5b69c2 Android: Make touch gliding opt-in 2021-03-06 16:00:38 +10:00
Connor McLaughlin
491e3a36df Android: Allow device vibration with external controller 2021-03-06 16:00:38 +10:00
Certainty Witch
a6e497cf62 Add touch gliding (#1723)
* Add touch gliding

* Add attributes for glidability

* Account for touch glide attributes

* Ditching glidabitliy arrays

* Change var name to be consistent with feature name
2021-03-06 15:46:58 +10:00
zkdpower
0db164bfb2 Update Simple-Chinese language file to latest (#1750)
* Update Simple-Chinese language file to latest 

Update Simple-Chinese language file to latest

* Update Simple-Chinese language file to latest

Update Simple-Chinese language file to latest
2021-03-06 15:44:56 +10:00
Connor McLaughlin
7767db77ec Merge pull request #1748 from andercard0/patch-93
Atualização Português do Brasil
2021-03-06 15:44:45 +10:00
Connor McLaughlin
ef440d2712 Android: Generate placeholder covers 2021-03-06 15:32:43 +10:00
Connor McLaughlin
b188c908c0 Android: Add dividers between game directories 2021-03-06 15:32:43 +10:00
Connor McLaughlin
7b45df0cc2 Android: Move game list over to RecyclerView 2021-03-06 15:32:43 +10:00
Connor McLaughlin
5bd39bc2c7 Android: Add game grid view 2021-03-06 15:32:43 +10:00
Anderson_Cardoso
9c78320351 Atualização Português do Brasil
Update file to latest.
2021-03-05 16:53:56 -03:00
Connor McLaughlin
2106197418 Update compatibility list 2021-03-06 02:25:15 +10:00
Connor McLaughlin
ae17ade117 FullscreenUI: Add missing stretch/internal res screenshot options 2021-03-06 02:22:35 +10:00
Connor McLaughlin
359d1509be Qt: Add option for internal/window resolution screenshots 2021-03-06 02:22:28 +10:00
Connor McLaughlin
2aea58d056 HostDisplay: Add method to render screenshots at window size 2021-03-06 02:21:27 +10:00
Connor McLaughlin
757bef7b6d Common/D3D11: Stride should be byte width 2021-03-06 02:21:27 +10:00
Connor McLaughlin
bf5f53e1d1 CPU/CodeCache: Don't choke on indirect -> direct branch in delay slot 2021-03-06 02:21:27 +10:00
Connor McLaughlin
56b522a902 Merge pull request #1726 from CookiePLMonster/misc-qt-stuff
Misc Qt stuff
2021-03-06 02:18:44 +10:00
Silent
84bec06a90 Use QString::number where applicable 2021-03-05 12:59:28 +01:00
Silent
c0b7ee5722 Fix "Stretch to fill" widget help 2021-03-05 12:59:28 +01:00
Silent
edeed89648 Add support for plural forms in Qt forms 2021-03-05 12:59:28 +01:00
Connor McLaughlin
4436e86a46 Merge pull request #1742 from andercard0/patch-92
Atualização Português do Brasil
2021-03-05 16:10:52 +10:00
Connor McLaughlin
b68585acc7 Merge pull request #1743 from ggrtk/memcard-editor
Qt/MemoryCardEditor: Implement missing functionality and clean up some stuff
2021-03-05 16:03:10 +10:00
Albert Liu
50a78489f2 MemoryCardImage: Implement save file importing and exporting 2021-03-04 20:50:20 -08:00
Albert Liu
e939507f42 Qt/MemoryCardEditor: Handle switching to empty path at combobox index 0 2021-03-04 17:51:17 -08:00
Albert Liu
0218006e1b Qt/MemoryCardEditor: Remove unused context help button 2021-03-04 16:55:44 -08:00
Albert Liu
3088138c3c Qt/MemoryCardEditor: Remove duplicate browse functionality 2021-03-04 16:42:26 -08:00
Albert Liu
f112222fae Qt/MemoryCardEditor: Prevent duplicate filenames when copying saves 2021-03-04 16:18:20 -08:00
Albert Liu
47e2cd382b Qt/MemoryCardEditor: Increase default filename column size 2021-03-04 15:37:27 -08:00
Albert Liu
645ce6658c Qt/MemoryCardEditor: Don't show blocks label when no card is selected 2021-03-04 15:21:40 -08:00
Anderson_Cardoso
7f77e8e7dd Atualização Português do Brasil
Update file to latest
2021-03-04 19:31:40 -03:00
Connor McLaughlin
c3d2999d78 Qt: Don't pass key input to controllers/hotkeys when ImGui has focus 2021-03-05 01:13:17 +10:00
Connor McLaughlin
767343ca22 FullscreenUI: Prevent quick menu opening over other windows 2021-03-05 01:12:56 +10:00
Connor McLaughlin
521ade025c System: Make hardware renderer init failure an OSD message 2021-03-05 01:05:16 +10:00
Connor McLaughlin
ccda1553b7 Qt: Fix crash when loading input profile and multitap disabled 2021-03-05 00:58:48 +10:00
Connor McLaughlin
c8387cb038 Cheats: Fix master enable not having any effect 2021-03-05 00:53:30 +10:00
Connor McLaughlin
3405041bda README: Update latest news 2021-03-04 13:16:01 +10:00
Connor McLaughlin
0cbba59e88 GPU/ShaderGen: Add readonly/restrict qualifier to VRAM write SSBO 2021-03-04 13:08:32 +10:00
Connor McLaughlin
adae4e1e5b CI: Fix build path for Qt on Mac (#1740) 2021-03-04 13:08:16 +10:00
Connor McLaughlin
6b1e8bd338 Merge pull request #1732 from andercard0/patch-91
Atualização Português do Brasil
2021-03-04 13:03:42 +10:00
Connor McLaughlin
861a1f0e44 Merge pull request #1735 from zkdpower/master
Update Simple-Chinese language file to latest
2021-03-04 13:03:32 +10:00
Connor McLaughlin
8ca500f1da Merge pull request #1737 from 6lackmag3/patch-11
Update gamesettings.ini
2021-03-04 13:03:00 +10:00
6lackmag3
8f1cfb7373 Update gamesettings.ini
force digital for Mortal Kombat 4
2021-03-04 02:31:44 +03:00
PugsyMAME
74b2b2ddfe Added new cheat cheat types: C3, C4, C5, C6, D7&52
C3-C7 are variants of C0
D7 is a BIT based joker to rule them all. It includes the analog sticks (@ggrtk thanks for adding the analog reading capability). Also added the facility of making dual single key joker by varying the amount of time a button is held down.
51 is a complicated beast that I still need to document

* C3XXXXXX 00YY - 8-Bit Master Code, if ($XXXXXX) is less than 0xYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C4XXXXXX 00YY - 8-Bit Master Code, if ($XXXXXX) is greater than 0xYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C5XXXXXX YYYY - 16-Bit Master Code, if ($XXXXXX) is less than 0xYYYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C6XXXXXX YYYY - 16-Bit Master Code, if ($XXXXXX) is greater than 0xYYYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* D7PQRRRR TTYYYYYY - 24-Bit Universal BIT Joker, OR the hex values to
                     combine into a multi-button joker. Because it is BIT
                     based it is better than D4, D5, D6 or using a D0 joker as you
                     do not need to worry about any other buttons being
                     pressed at the same time and you get both analog
                     sticks for extra functionality. Note if you want to use it
                     just as a enhanced joker just use D7000000 00YYYYYY when
                     the buttons/directions are pressed or D7100000 00YYYYYY
                     when you want to ensure they are not all pressed.
                     QRRRR TT provides the capability of only activating the
                     following codes after the keys have been held in for a set
                     amount of frames. 003C = 60 Frames = 1 Second at 100% Speed
                        YYYYYY = 000001 L2 Button
                        YYYYYY = 000002 R2 Button
                        YYYYYY = 000004 L1 Button
                        YYYYYY = 000008 R1 Button
                        YYYYYY = 000010 Triangle Button
                        YYYYYY = 000020 Circle Button
                        YYYYYY = 000040 X Button
                        YYYYYY = 000080 Square Button
                        YYYYYY = 000100 Select Button
                        YYYYYY = 000200 L3 Button
                        YYYYYY = 000400 R3 Button
                        YYYYYY = 000800 Start Button
                        YYYYYY = 001000 Up (Digital)
                        YYYYYY = 002000 Right (Digital)
                        YYYYYY = 004000 Down (Digital)
                        YYYYYY = 008000 Left (Digital)
                        YYYYYY = 010000 Up (Right Thumb)
                        YYYYYY = 020000 Right (Right Thumb)
                        YYYYYY = 040000 Down (Right Thumb)
                        YYYYYY = 080000 Left (Right Thumb)
                        YYYYYY = 100000 Up (Left Thumb)
                        YYYYYY = 200000 Right (Left Thumb)
                        YYYYYY = 400000 Down (Left Thumb)
                        YYYYYY = 800000 Left (Left Thumb)
                      NOTE: The 0s in the code are reserved for possible
                            future use.
                       TT=Temp Internal Variable 00-FF, 00 will mean it wont be
                            used, if it's not 00 do not use the same value for
                            jokers using different keypress combinations for
                            the same game.
                       P = 0 or 1. 0 = Check ALL YYYYYY Bits are ON
                                   1 = Check ALL YYYYYY Bits are OFF
                       Q = Frame Comparison 0 = Dont do any comparison
                                            1 = Check that the button combination
                                                has been held down for exactly
                                                RRRR frames.
                                            2 = Check that the button combination
                                                has been held down for more than
                                                RRRR frames.
                                            3 = Check that the button combination
                                                has been held down for less than
                                                RRRR frames.
                                            4 = Check that the button combination
                                                has been held down for anything
                                                but RRRR frames.
                       RRRR = 0000 to FFFF, Frame Comparison Value
                      It will then poke all following codes for rest of cheat
  00000000 FFFF       or until it reaches the 00000000 FFFF line.
2021-03-03 23:06:08 +00:00
zkdpower
a0a1781cba Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-03-04 06:29:23 +08:00
Anderson_Cardoso
46daa576af Atualização Português do Brasil
Update file to latest.
2021-03-03 14:58:19 -03:00
Connor McLaughlin
21e53016d7 GPU/Vulkan: Fix possible misalignment in VRAM writes 2021-03-04 01:36:43 +10:00
Connor McLaughlin
dbb6c708c2 Merge pull request #1731 from andercard0/patch-90
Atualização Português do Brasil
2021-03-04 00:38:22 +10:00
Connor McLaughlin
86b636dffb Common/DimensionalArray: Work around regression from MSVC 16.9 2021-03-04 00:28:34 +10:00
Connor McLaughlin
dc7b5e5155 Qt: Work around Linux builder's old Qt version 2021-03-04 00:26:01 +10:00
Anderson_Cardoso
3ea30c60ca Atualização Português do Brasil
Update file to latest.
2021-03-03 08:59:06 -03:00
Connor McLaughlin
05ac272c3f GameSettings: Add multitap mode 2021-03-03 21:45:03 +10:00
Connor McLaughlin
1d00f96f89 Qt: Populate controller tabs based on multitap mode 2021-03-03 21:44:56 +10:00
Connor McLaughlin
a8a1a9efd5 Merge pull request #1724 from stenzek/cheevos-hardcore-mode
Cheevos: Implement hardcore mode
2021-03-03 20:34:50 +10:00
Connor McLaughlin
93c8708806 Merge pull request #1729 from andercard0/patch-89
Atualização Português do Brasil
2021-03-03 20:29:45 +10:00
Connor McLaughlin
356cc28fc8 Merge pull request #1725 from ds22x/patch-1
Remove duplicate line in gamesettings.ini
2021-03-03 20:29:21 +10:00
Connor McLaughlin
6ecf828171 Cheevos: Ignore unofficial achievements for now 2021-03-03 19:44:29 +10:00
Connor McLaughlin
7dbc759619 Cheevos: Implement hardcore mode 2021-03-03 19:14:01 +10:00
Anderson_Cardoso
11adcbc330 Atualização Português do Brasil
Minor update and fix.
2021-03-02 23:05:21 -03:00
ds22x
10994a953d Remove duplicate line in gamesettings.ini
Removes a duplicate "DisableAnalogModeForcing = true" for SCES-00867 (Final Fantasy VII (Europe) (Disc 1).
2021-03-02 22:26:21 +01:00
Connor McLaughlin
7a05b4f98e XInputControllerInterface: Support fullscreen UI navigation 2021-03-03 03:07:38 +10:00
Connor McLaughlin
738bf9be9f FullscreenUI: Make achievements/settings/load state closable with controller 2021-03-03 03:07:38 +10:00
Connor McLaughlin
99ff0e64c5 FullscreenUI: Don't draw fps/pause overlay over windows 2021-03-03 03:06:13 +10:00
Connor McLaughlin
b45891f21a FullscreenUI: Make achievements window pause game 2021-03-03 03:06:13 +10:00
Connor McLaughlin
2088fa599e HTTPDownloaderCurl: Send user agent and cleanup 2021-03-03 03:06:13 +10:00
Connor McLaughlin
f47f99b62d FullscreenUI: Make achievement list collapsable 2021-03-03 03:06:13 +10:00
Connor McLaughlin
9cc079223c FullscreenUI: Fix achievement list scrolling off screen 2021-03-03 03:06:13 +10:00
Connor McLaughlin
c58227752d CommonHostInterface: Move save state on exit logic to base class 2021-03-03 01:14:05 +10:00
Connor McLaughlin
7645ca3836 HTTPDownloader: Log error code for WinHttpOpen() failure 2021-03-02 15:18:02 +10:00
Connor McLaughlin
910d3cdbb4 GPU/OpenGL: Make GL4.3 a prereq for binding layout
This was incorrectly checking for GL4.2, but explicit uniform/attribute
location isn't supported until GL4.3 without the extension.
2021-03-02 15:18:02 +10:00
Connor McLaughlin
3f698d6ed9 Merge pull request #1720 from ggrtk/multitap
Multitap: Add option to enable only on port 2
2021-03-02 15:14:50 +10:00
Connor McLaughlin
916007490f Merge pull request #1721 from andercard0/patch-88
Update Japanese Translation - By: Mikakunin
2021-03-02 15:14:12 +10:00
Anderson_Cardoso
59ab5abc28 Update Japanese Translation - By: Mikakunin
Update Japanese file to latest. By: Mikakunin
2021-03-01 21:21:46 -03:00
Albert Liu
3482313e2f Multitap: Add option to enable only on port 2 2021-03-01 14:59:59 -08:00
Connor McLaughlin
7cb1bd5ac0 Android: Fix swapped ingame menu items for es/nl/br 2021-03-02 01:50:01 +10:00
Connor McLaughlin
c7a4efc395 System: Don't strip subdirectories when reading exe
Fixes getting hashes for cheevos in games such as Metal Gear Solid -
Integral.
2021-03-02 01:48:31 +10:00
Connor McLaughlin
f6b8e2121b ISOReader: Fix recursing into subdirectories 2021-03-02 01:48:31 +10:00
Connor McLaughlin
93861f2977 Merge pull request #1715 from andercard0/patch-87
Android - Update Strings - Pt-Br
2021-03-02 01:46:30 +10:00
Connor McLaughlin
dd8a527516 Merge pull request #1714 from andercard0/patch-86
Android - Update Arrays Pt-Br
2021-03-02 01:46:19 +10:00
Connor McLaughlin
8fcd6f8c2d Merge pull request #1713 from shikulja/master
Update duckstation-qt_ru.ts
2021-03-02 01:46:09 +10:00
Connor McLaughlin
f0d7069f80 Merge pull request #1711 from PookaMustard/patch-1
Update arrays.xml
2021-03-02 01:46:01 +10:00
Connor McLaughlin
475f7ccd1f Bus: Increase the number of ticks for RAM reads 2021-03-02 00:46:29 +10:00
Anderson_Cardoso
4c58925cec Android - Update Strings - Pt-Br
Update Strings to latest.
2021-03-01 11:04:19 -03:00
Anderson_Cardoso
74156e5e5d Android - Update Arrays Pt-Br
Update arrays file to latest. (hope did not break anything this time).
2021-03-01 11:01:59 -03:00
shikulja
44064d25ed Update duckstation-qt_ru.ts
change text strings in settingsdialog.ui
2021-03-01 16:43:57 +03:00
Certainty Witch
6d3df27915 Update arrays.xml
Fix order of Italian strings (Settings was Change Touchscreen Controls and vice versa)
2021-03-01 13:03:08 +02:00
Connor McLaughlin
5c5e9644d7 Android: Fix input profile loading/saving 2021-03-01 13:38:41 +10:00
Connor McLaughlin
206735ca42 GameSettings: Disable forced analog for FF7 2021-03-01 12:04:24 +10:00
Connor McLaughlin
4df9778e85 FullscreenUI: Fix OSD showing over debug menu 2021-03-01 02:21:04 +10:00
Connor McLaughlin
9a8cb97875 CI: Add missing Mac build to preview release 2021-03-01 00:54:32 +10:00
Connor McLaughlin
7a0193a8de Qt: Fix macOS compile 2021-02-28 19:55:37 +10:00
Connor McLaughlin
59f2821d83 Merge pull request #1709 from 6lackmag3/patch-10
Update strings.xml
2021-02-28 19:10:33 +10:00
Connor McLaughlin
4eace11a8b Enable building with RetroAchievements by default 2021-02-28 19:04:40 +10:00
Connor McLaughlin
10c3506f1a Cheevos: Linux support 2021-02-28 19:01:16 +10:00
Connor McLaughlin
a032d191c8 Qt: Hook signal handlers for CTRL+C 2021-02-28 19:00:54 +10:00
Connor McLaughlin
98be448140 Cheevos: Support logging in while disabled 2021-02-28 19:00:37 +10:00
Connor McLaughlin
bc9ca302b8 FullscreenUI: Fix debug menu being occluded 2021-02-28 16:30:09 +10:00
6lackmag3
a0502eb531 Update strings.xml 2021-02-28 08:58:34 +03:00
Connor McLaughlin
520b64e711 CPU/Recompiler: Don't zero read-only bits in mtc0
Fixes memory card error in Digimon Digital Card Battle.
2021-02-28 15:06:24 +10:00
Connor McLaughlin
77d861e7df Merge pull request #1708 from zkdpower/master
Update Simple-Chinese language file to latest
2021-02-28 15:05:55 +10:00
shikulja
d239221a19 Update duckstation-qt_ru.ts (#1707)
* Update duckstation-qt_ru.ts

Translation of the achievements menu, some osd messages, and more

* Update duckstation-qt_ru.ts
2021-02-28 15:05:47 +10:00
Connor McLaughlin
46a0fde86b Merge pull request #1706 from andercard0/patch-85
Atualização Português do Brasil
2021-02-28 15:05:41 +10:00
Connor McLaughlin
0a5dc52707 Merge pull request #1704 from ggrtk/qt-scmversion-selectable
Qt: Make about dialog scmversion label selectable by mouse
2021-02-28 15:05:35 +10:00
zkdpower
ca9c058e2d Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-02-28 09:49:37 +08:00
Anderson_Cardoso
f565228afa Atualização Português do Brasil
Update file to latest.
2021-02-27 21:20:23 -03:00
Albert Liu
1f876afbed Qt: Make about dialog scmversion label selectable by mouse 2021-02-27 15:07:05 -08:00
Connor McLaughlin
1c1abee61a NoGUI: Linux compile fix 2021-02-28 04:11:34 +10:00
Connor McLaughlin
97cf3f770e GPU: Fix previous frame adaptive downsample leaking in 2021-02-28 04:03:48 +10:00
Connor McLaughlin
5669442ad1 Android: Fix TTY output summary not being translatable 2021-02-28 04:03:48 +10:00
Connor McLaughlin
a48fa4097b CommonHostInterface: Fix key inputs getting stuck with modifiers 2021-02-28 04:03:48 +10:00
Connor McLaughlin
091b745af6 Merge pull request #1699 from 6lackmag3/patch-7
Update strings.xml
2021-02-27 22:20:35 +10:00
Connor McLaughlin
cab4bdc042 Merge pull request #1700 from 6lackmag3/patch-9
Update arrays.xml
2021-02-27 22:20:13 +10:00
Connor McLaughlin
1607a2424d Android: Update PGXP CPU mode summary 2021-02-27 22:16:39 +10:00
Connor McLaughlin
2ce42cde5f Android: Add analog button to touchscreen controller 2021-02-27 22:15:45 +10:00
Connor McLaughlin
6e9a35806d Android: Fix touchscreen controller settings unpausing 2021-02-27 22:01:07 +10:00
Connor McLaughlin
49345a300c Settings: Fix display stretch disabled by linear filtering 2021-02-27 21:58:47 +10:00
Connor McLaughlin
faa8ed0031 CMake: Make evdev optional 2021-02-27 20:53:00 +10:00
6lackmag3
04bd46795a Update arrays.xml 2021-02-27 13:02:15 +03:00
6lackmag3
51b19d3d0a Update strings.xml 2021-02-27 12:52:29 +03:00
Connor McLaughlin
47e26b1ad3 FullscreenUI: Put cover images through the texture cache 2021-02-27 16:25:42 +10:00
Connor McLaughlin
1e383af623 Android: Hide fast forward button by default 2021-02-27 16:21:36 +10:00
Connor McLaughlin
d11ee48fe1 Android: Add touchscreen button add/remove/opacity 2021-02-27 16:21:36 +10:00
Connor McLaughlin
7bd11d38ac Android: Add on-screen fast forward button 2021-02-27 16:21:36 +10:00
Connor McLaughlin
d0ace6ed5a Android: Reorder options in main menu 2021-02-27 16:21:36 +10:00
Connor McLaughlin
e53ec0cc73 Android: Move a bunch of settings to advanced 2021-02-27 16:21:36 +10:00
Connor McLaughlin
5a0e4f85dd Settings: Enable cheat loading by default 2021-02-27 16:21:36 +10:00
Connor McLaughlin
e17d37b8bc HostDisplay: Add stretch option 2021-02-27 16:21:36 +10:00
Connor McLaughlin
f18babb97e Settings: Remove redundant break in IsMultitapEnabledOnPort 2021-02-27 16:21:36 +10:00
Connor McLaughlin
4380992591 Fix a couple of typos in translation sources 2021-02-27 16:21:36 +10:00
Connor McLaughlin
86f44f826d Merge pull request #1697 from ggrtk/multitap
Core: Add Multitap support
2021-02-27 16:19:28 +10:00
Connor McLaughlin
c70fe0b4ae Merge pull request #1693 from andercard0/patch-83
Atualização Português do Brasil
2021-02-27 16:18:54 +10:00
Connor McLaughlin
8d1bb6aa2c Merge pull request #1695 from andercard0/patch-84
Atualização Português de Portugal - By: Bajol
2021-02-27 16:18:36 +10:00
Connor McLaughlin
0cb5618aa1 Merge pull request #1698 from zkdpower/master
Update Simple-Chinese language file to latest
2021-02-27 16:18:24 +10:00
zkdpower
9670564578 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-02-27 13:46:52 +08:00
Albert Liu
f9dc1a7e80 Core: Add Multitap support 2021-02-26 21:04:12 -08:00
Anderson_Cardoso
64ea3de009 Atualização Português de Portugal - By: Bajol
Update file Portuguese Portugal By: Bajol
2021-02-26 16:22:49 -03:00
Connor McLaughlin
bd9cb67565 Merge pull request #1694 from ggrtk/always-save-controller-type
Settings: Always save controller type to settings interface
2021-02-27 04:01:34 +10:00
Albert Liu
b6301e1a43 Settings: Always save controller type to settings interface
Fixes Controller1 defaulting to DigitalController type on startup in
FullscreenUI when user had previously shut down the program with
Controller1 set to None.
2021-02-26 09:37:53 -08:00
Anderson_Cardoso
951c8310e9 Atualização Português do Brasil
Update file to latest.
2021-02-26 14:03:30 -03:00
Connor McLaughlin
b4e4e5891d Qt: Fix controller navigation for fullscreen UI 2021-02-27 01:17:44 +10:00
Connor McLaughlin
d6b8a80eb7 Merge pull request #1677 from stenzek/cheevos
Implement RetroAchivements
2021-02-27 00:45:26 +10:00
Connor McLaughlin
0ec2c87a0e Implement RetroAchivements 2021-02-27 00:44:53 +10:00
Connor McLaughlin
ef524d7dea FrontendCommon: Add HTTPDownloader class 2021-02-27 00:44:50 +10:00
Connor McLaughlin
20fa5b74d2 dep/rcheevos: Use https for requests in url.c 2021-02-27 00:44:50 +10:00
Connor McLaughlin
3ccaddc7e6 dep: Add rcheevos 2021-02-27 00:44:50 +10:00
Connor McLaughlin
e43773fbc8 Merge pull request #1691 from andercard0/patch-82
Atualização Português do Brasil
2021-02-27 00:44:30 +10:00
Connor McLaughlin
800c422e2e Merge pull request #1690 from zkdpower/master
Update Simple-Chinese language file to latest
2021-02-27 00:44:21 +10:00
Anderson_Cardoso
e6a90f646b Atualização Português do Brasil
update file to latest
2021-02-26 08:59:36 -03:00
Connor McLaughlin
c98b332b04 GL: Add missing context_egl_fbdev files 2021-02-26 19:13:02 +10:00
zkdpower
8173c94d40 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-02-26 11:08:49 +08:00
Connor McLaughlin
52c842e3b3 Qt: Hook up mouse wheel to ImGui 2021-02-26 02:45:28 +10:00
Connor McLaughlin
9425f34ceb Merge pull request #1687 from ggrtk/controller-type-cache
FullscreenUI: Update type cache when controller type is changed
2021-02-26 02:45:00 +10:00
shikulja
343c3068c7 Update duckstation-qt_ru.ts (#1688)
* Update duckstation-qt_ru.ts

* Update duckstation-qt_ru.ts
2021-02-26 02:44:15 +10:00
Albert Liu
07ad4f63fa FullscreenUI: Update type cache when controller type is changed 2021-02-24 20:32:32 -08:00
Connor McLaughlin
248baeec08 Merge pull request #1684 from andercard0/patch-81
Atualização Português do Brasil
2021-02-25 12:52:56 +10:00
Connor McLaughlin
bd59d711eb Merge pull request #1686 from ggrtk/fix-settinginfos
Controller: Fix invalid SettingInfos causing crash in FullscreenUI
2021-02-25 12:52:46 +10:00
Connor McLaughlin
bfb575cf40 Qt: Improve handling of exclusive fullscreen loss
Exclusive fullscreen will be re-requested automatically when the window
regains focus.
2021-02-25 12:51:45 +10:00
Albert Liu
3ca3a78b58 Controller: Fix invalid SettingInfos causing crash in FullscreenUI 2021-02-24 17:23:07 -08:00
Anderson_Cardoso
f8376f2724 Atualização Português do Brasil
Update file to latest
2021-02-24 17:55:42 -03:00
Connor McLaughlin
defea38a60 FullscreenUI: Add fullscreen/close buttons to landing window 2021-02-25 02:20:33 +10:00
Connor McLaughlin
1969a10034 FullscreenUI: Fix placeholder logo showing up 2021-02-25 02:20:33 +10:00
Connor McLaughlin
f023c1bcde FullscreenUI: Add 'Pause on Menu' option 2021-02-25 02:20:33 +10:00
Connor McLaughlin
b56b438f1f FullscreenUI: Only show debug menu bar in NoGUI 2021-02-25 02:20:33 +10:00
Chris
85ad091c22 Filter out Keypad as a mod in sdl_key_names (#1678) 2021-02-25 02:19:57 +10:00
Connor McLaughlin
617554bea7 Merge pull request #1681 from Max833/master
Qt: Update German translation
2021-02-25 02:07:23 +10:00
Connor McLaughlin
06f9088888 Merge pull request #1682 from zkdpower/master
Update Simple-Chinese language file to latest
2021-02-25 02:05:52 +10:00
Chris
dd3d5dbd86 Allow keyboard binding in nogui/fullscreen mode (#1679)
* Allow keyboard binding in nogui/fullscreen mode
2021-02-25 02:05:33 +10:00
zkdpower
961a691de7 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-02-24 08:12:00 +08:00
Max833
a94dd57b9f Update duckstation-qt_de.ts 2021-02-23 22:42:47 +01:00
Connor McLaughlin
0d0a7eac1f ImGuiFullscreen: Add animations for notifications 2021-02-24 01:22:04 +10:00
Connor McLaughlin
eb4d6efecd Common: Add easing.h 2021-02-24 01:22:04 +10:00
Connor McLaughlin
6e80c882df FullscreenUI: Allow vertical scaling 2021-02-24 01:22:04 +10:00
Connor McLaughlin
a7e4d55d02 Move game settings apply to CommonHostInterface 2021-02-24 01:22:04 +10:00
Connor McLaughlin
28fdc5537f FullscreenUI: Draw quick menu at screen bounds, not scaled bounds 2021-02-24 01:22:04 +10:00
Connor McLaughlin
8318cdb3c1 Move ImGui setup to common, and enable fullscreen UI in Qt 2021-02-24 01:22:03 +10:00
Connor McLaughlin
d0f6ff03a5 FullscreenUI: Remove local pointer to SettingsInterface 2021-02-24 01:21:43 +10:00
Connor McLaughlin
1fc53ff622 CommonHostInterface: Move settings interface pointer to base class 2021-02-24 01:21:43 +10:00
Connor McLaughlin
7e1fe166ee FullscreenUI: Add notifications API 2021-02-24 01:21:43 +10:00
Connor McLaughlin
229ed5a852 System: Add helpers for reading executables off discs 2021-02-24 01:21:43 +10:00
Connor McLaughlin
7501e89b7a System: Add path/image to game change notification 2021-02-24 01:21:43 +10:00
Connor McLaughlin
77090865c1 OSD: Draw shadows on stats overlays (FPS/Resolution)
Makes it more visible on white backgrounds.
2021-02-24 01:21:43 +10:00
Connor McLaughlin
175abd4914 CommonHostInterface: Filter OSD messages in acquire for disabled case 2021-02-24 01:21:43 +10:00
Connor McLaughlin
a9cf6cdc91 Qt: Update Japanese translation by mikakunin 2021-02-24 01:21:43 +10:00
Connor McLaughlin
75776f9b33 Merge pull request #1657 from CookiePLMonster/savestate-ui-legend
Save State UI: Add legend showing hotkeys
2021-02-24 01:21:24 +10:00
Chris
8b4a7e1b98 Fix for batch mode nogui (#1674)
* Don't override batch_mode to false in nogui

* Update nogui_host_interface.cpp
2021-02-24 01:20:21 +10:00
Silent
78f9136fb8 Save State UI: Cache legend strings 2021-02-22 19:34:51 +01:00
Connor McLaughlin
524a2f3f19 Merge pull request #1669 from falsepopsky/updateSpanish
spanish qt translation - updated
2021-02-22 17:52:12 +10:00
falsepopsky
5a84d28ff0 updated qt_es 2021-02-22 02:56:50 -03:00
Connor McLaughlin
91a7775d68 BIOS: Fix size validation for PSExe 2021-02-22 12:22:28 +10:00
Connor McLaughlin
13b0946efd CDImage: Fix file reading from >1 sequential sector 2021-02-22 12:22:28 +10:00
Connor McLaughlin
e540ab7038 Common: Add LRUCache class 2021-02-22 12:22:28 +10:00
Connor McLaughlin
322f1492b2 FileSystem: Add SanitizeFilename() overload for std::string 2021-02-22 12:22:28 +10:00
Connor McLaughlin
d97a107b62 WindowsHeaders: Undef GetObject 2021-02-22 12:22:28 +10:00
Connor McLaughlin
357235404a AudioStream: Fix a crash when opening device fails 2021-02-22 12:21:44 +10:00
Connor McLaughlin
ae49215251 Timers: Better predict next event time
Significantly improves performance in Fromage.
2021-02-22 12:21:44 +10:00
Connor McLaughlin
caae06dbf4 Merge pull request #1646 from piepacker/jake/osd_locking_opt
optimize locking mechanism for OSD messages (deadlock-proofing)
2021-02-22 12:21:12 +10:00
Connor McLaughlin
64d4b2e288 Merge pull request #1663 from RaydenX93/update_it_20210221
Update Italian Translation (Qt)
2021-02-22 12:08:45 +10:00
Connor McLaughlin
7fc68d0aca Merge pull request #1666 from ggrtk/controller-fixes
Minor controller fixes
2021-02-22 12:08:35 +10:00
Albert Liu
71d748ef04 AnalogController: Fix regression in analog mode toggling 2021-02-21 16:12:41 -08:00
Albert Liu
329e8317b4 Controller: Always check for access byte 2021-02-21 15:20:31 -08:00
RaydenX93
4a144d30ed Update duckstation-qt_it.ts 2021-02-21 12:17:41 +01:00
Silent
e361b9f012 Save State UI: Make the widget translatable 2021-02-19 20:14:33 +01:00
Silent
82a217570c Save State UI: Add legend showing hotkeys 2021-02-19 20:14:00 +01:00
Connor McLaughlin
30bcf280d4 Revert "CPU/Recompiler: Use fastmem for constant loads from RAM mirrors in LUT mode"
This reverts commit 67fe97a17c.

Misread the logic here - it's masked anyway, so it's fine.
2021-02-19 02:25:27 +10:00
Connor McLaughlin
24c2165bb3 GPU: Allow closing window/app to interrupt shader compilation 2021-02-19 01:48:44 +10:00
Connor McLaughlin
413e52b38d CI: Use Ubuntu 20.04 for AppImage builds 2021-02-19 01:37:56 +10:00
Connor McLaughlin
1b544ae350 GameList: Slight optimization to scanning 2021-02-19 01:37:56 +10:00
Connor McLaughlin
3ab7e140ee FileSystem: Add some overloads for FILE* 2021-02-19 01:37:56 +10:00
Connor McLaughlin
cacf12c209 FileSystem: Migrate component extractors to std::string_view 2021-02-19 01:37:56 +10:00
Connor McLaughlin
8c7aec2edf CommonHostInterface: Ensure game list is loaded before booting
Fixes a possible race/crash when starting with a filename in NoGUI.
2021-02-19 01:37:56 +10:00
Connor McLaughlin
d4bbef5021 GameSettings: Remove force interpreter for Spyro 2/3 PAL 2021-02-19 01:37:56 +10:00
Connor McLaughlin
d3717e66c3 CPU/Recompiler: Handle self-modifying code within same block
Fixes Spyro 2 and 3 PAL with recompiler.
2021-02-19 01:37:56 +10:00
Connor McLaughlin
67fe97a17c CPU/Recompiler: Use fastmem for constant loads from RAM mirrors in LUT mode 2021-02-19 01:37:56 +10:00
Connor McLaughlin
9d05aa2145 Merge pull request #1656 from andercard0/patch-80
Atualização Português do Brasil
2021-02-18 13:12:20 +10:00
Connor McLaughlin
255937f316 Merge pull request #1658 from zkdpower/master
Update Simple-Chinese language file to latest
2021-02-18 13:11:55 +10:00
Connor McLaughlin
1c59b114f8 Merge pull request #1655 from Max833/master
Qt: Update German translation
2021-02-18 13:11:39 +10:00
shikulja
214c164d37 Update duckstation-qt_ru.ts (#1654)
* Update duckstation-qt_ru.ts

minor update, changed lines, typos, a few new lines

* Update duckstation-qt_ru.ts
2021-02-18 13:11:21 +10:00
zkdpower
6bc1814d02 Update Simple-Chinese language file to latest
Update Simple-Chinese language file to latest
2021-02-18 09:31:26 +08:00
Anderson_Cardoso
2aad830d9e Atualização Português do Brasil
Update file to latest
2021-02-17 17:07:07 -03:00
Max833
04901c7769 Update duckstation-qt_de.ts 2021-02-17 18:36:45 +01:00
Connor McLaughlin
e7b9309567 GameSettings: Add PGXP projection precision 2021-02-18 02:19:43 +10:00
Connor McLaughlin
db4f521d92 System: Make some boot error messages translatable 2021-02-18 02:08:48 +10:00
Connor McLaughlin
7641bbf5f2 UI: Shuffle around PGXP settings 2021-02-18 02:08:48 +10:00
Connor McLaughlin
209827b67c PGXP: Compute PSX values on demand for CPU instructions
Generates shorter code for the recompiler.
2021-02-18 02:08:48 +10:00
Connor McLaughlin
54f5c737ce PGXP: Inline some more functions 2021-02-18 02:08:48 +10:00
Connor McLaughlin
46dbea509a GPU: Fix adaptive downsampling regression 2021-02-18 02:08:47 +10:00
Connor McLaughlin
1b881fc60b PGXP: Combine instr and rtVal parameters for CPU_LUI 2021-02-18 02:08:47 +10:00
Connor McLaughlin
bc021ddfd9 CPU/Recompiler: Implement PGXP CPU mode 2021-02-18 02:08:47 +10:00
Connor McLaughlin
0bfa1bf873 PGXP: Fix MFC0/MTC0
Doubt it'll change anything.
2021-02-18 02:08:47 +10:00
Connor McLaughlin
a722fd6b53 PGXP: Make mult/div compute results instead of parameters
Lets us call it from the recompiler.
2021-02-18 02:08:47 +10:00
Connor McLaughlin
33a5617ea3 PGXP: Remove some unused parameter from M{F,T}{HI,LO} 2021-02-18 02:08:47 +10:00
Connor McLaughlin
efecb44344 PGXP: Combine a couple of instructions 2021-02-18 02:08:47 +10:00
Connor McLaughlin
09805c1f80 FullscreenUI: Fix controller navigation in disc change 2021-02-18 02:08:47 +10:00
Connor McLaughlin
52962ce584 Merge pull request #1649 from CookiePLMonster/pl-loc-update
PL localization update + a few fixes
2021-02-18 02:06:03 +10:00
Silent
99dcc39e6b Update PL localization 2021-02-16 22:01:27 +01:00
Silent
9fd09c33b1 Improve consistency of tooltips in Display Settings 2021-02-16 21:53:50 +01:00
Jake Stine
c3c4181074 optimize locking mechanism for OSD messages, use EnumerateOSDMessages more generally 2021-02-15 16:53:40 -08:00
Silent
82469ac425 Fix a missing comma in the PGXP message
+ translations fixed to account for that
2021-02-15 23:36:39 +01:00
Connor McLaughlin
65daf1d6a0 Vulkan: Support fullscreen resolution enumeration 2021-02-16 02:58:25 +10:00
Max833
e84a39245f Update duckstation-qt_de.ts (#1644)
* Update duckstation-qt_de.ts

* Update duckstation-qt_de.ts
2021-02-16 02:58:03 +10:00
2540 changed files with 1217667 additions and 960599 deletions

View File

@@ -10,7 +10,115 @@ AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
BreakAfterAttributes: Leave
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 2
UseTab: Never
...
---
Language: ObjC
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None

View File

@@ -1,55 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
Please read before creating a new issue:
1. Make sure there is not already an open issue for this bug.
2. All enhancements **must** be off. To quickly disable all enhancements with affecting your normal config, in advanced options you can check "Disable All Enhancements".
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 rebooted before reporting the bug.
5. Do not share save state files. Memory cards are okay.
6. Verify your dump, 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 and that if it does, you have a correct SBI file (see https://github.com/stenzek/duckstation#libcrypt-protection-and-sbi-files for more information).
8. Please post your issue report in English as unfortunately this is the only language spoken by the developers. The Discord server has many helpful people if you need help translating.
**Remove everything before and including this line before submitting.**
**Game details**
[Serial Code, Region]
[i.e SLUS-00404 Ace Combat 2 (USA)]
**Description of the issue / bug**
[Describe what you are seeing and/or hearing during gameplay]
**Controller Troubleshoot Report**
1. Have you installed any drivers or wrappers on your system, or do you have any programs like Steam open?
2. Which controller backend are you using in general settings
**Note:**
If you are using Duckstation on Android device please consider the following before report:
Are you using any kind of "memory optimizer" program such as: Ccleaner, Wisecleaner, Clean Master, Boost Android etc. ?
(if so, please, consider create an exception on it first and test; or even remove / uninstall it retest and then, if the problem persists continue with the report.
**Steps to reproduce**
[Try to provide as much detail as possible to reproduce the issue]
**Enhancements information**
[Make sure they are all turned off before report]
**Hardware/software**
[If Android, which phone and Android version]
[If desktop, your CPU, graphics card, and operating system]
[GPU Renderer - D3D11/OpenGL/Vulkan]
**Emulator version**
[Shown in the title bar of the emulator]
**Additional context**
[Add any other context about the problem here]

94
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,94 @@
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.

10
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
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,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,43 @@
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.

38
.github/workflows/gamedb-lint.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: GameDB Lint
on:
pull_request:
paths:
- 'data/resources/gamedb.yaml'
- 'data/resources/discdb.yaml'
push:
branches:
- master
- dev
paths:
- 'data/resources/gamedb.yaml'
- 'data/resources/discdb.yaml'
workflow_dispatch:
jobs:
gamedb-lint:
runs-on: ubuntu-22.04
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: Install Packages
shell: bash
run: |
sudo apt-get update
sudo apt-get -y install yamllint
- name: Check GameDB
shell: bash
run: yamllint -c extras/yamllint-config.yaml -s -f github data/resources/gamedb.yaml
- name: Check DiscDB
shell: bash
run: yamllint -c extras/yamllint-config.yaml -s -f github data/resources/discdb.yaml

View File

@@ -20,12 +20,33 @@ on:
jobs:
windows-build:
runs-on: windows-2019
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v2.3.1
- 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/build-dependencies-windows-arm64.bat', 'scripts/build-dependencies-windows-x64.bat') }}
- name: Build X64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/build-dependencies-windows-x64.bat
- name: Build ARM64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/build-dependencies-windows-arm64.bat
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
@@ -46,33 +67,29 @@ jobs:
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 (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
msbuild duckstation.sln -t:Build -p:Platform=x64;Configuration=ReleaseLTCG
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: Upload x64 release symbols artifact
uses: actions/upload-artifact@v1
with:
name: "windows"
path: "duckstation-windows-x64-release-symbols.zip"
- name: Remove extra bloat before archiving
shell: cmd
run: |
del /Q bin\x64\*.pdb
del /Q bin\x64\*.exp
del /Q bin\x64\*.lib
del /Q bin\x64\*.iobj
del /Q bin\x64\*.ipdb
del /Q bin\x64\common-tests*
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
@@ -81,243 +98,311 @@ jobs:
"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@v1
uses: actions/upload-artifact@v4.3.3
with:
name: "windows"
path: "duckstation-windows-x64-release.zip"
path: "duckstation-windows-x64-release*.zip"
windows-arm64-build:
runs-on: windows-2019
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v2.3.1
- 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/build-dependencies-windows-arm64.bat', 'scripts/build-dependencies-windows-x64.bat') }}
- name: Build X64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/build-dependencies-windows-x64.bat
- name: Build ARM64 Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
env:
DEBUG: 0
run: scripts/build-dependencies-windows-arm64.bat
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
shell: cmd
run: |
echo #pragma once > src/scmversion/tag.h
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-release.zip" >> src/scmversion/tag.h
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 #pragma once > src/scmversion/tag.h
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-release.zip" >> src/scmversion/tag.h
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 (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64
msbuild duckstation.sln -t:Build -p:Platform=ARM64;Configuration=ReleaseLTCG
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: Upload arm64 release symbols artifact
uses: actions/upload-artifact@v1
with:
name: "windows-arm64"
path: "duckstation-windows-arm64-release-symbols.zip"
- name: Remove extra bloat before archiving
shell: cmd
run: |
del /Q bin\ARM64\*.pdb
del /Q bin\ARM64\*.exp
del /Q bin\ARM64\*.lib
del /Q bin\ARM64\*.iobj
del /Q bin\ARM64\*.ipdb
del /Q bin\ARM64\common-tests*
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@v1
uses: actions/upload-artifact@v4.3.3
with:
name: "windows-arm64"
path: "duckstation-windows-arm64-release.zip"
path: "duckstation-windows-arm64-release*.zip"
linux-build:
runs-on: ubuntu-18.04
runs-on: ubuntu-22.04
timeout-minutes: 120
steps:
- uses: actions/checkout@v2.3.1
# Work around https://github.com/actions/runner-images/issues/8659
- name: Remove GCC 13 from runner image
shell: bash
run: |
sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list
sudo apt-get update
sudo apt-get install -y --allow-downgrades 'libc6=2.35-0ubuntu*' 'libc6-dev=2.35-0ubuntu*' libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
- name: Install packages
shell: bash
run: |
sudo apt-get update
sudo apt-get -y install cmake ninja-build ccache libsdl2-dev libgtk-3-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qt5-default qttools5-dev libegl1-mesa-dev libevdev-dev libgbm-dev libdrm-dev libwayland-dev libwayland-egl-backend-dev extra-cmake-modules
# 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/build-dependencies-linux.sh') }}
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: scripts/build-dependencies-linux.sh "$HOME/deps"
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
run: |
echo '#pragma once' > src/scmversion/tag.h
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 '#pragma once' > src/scmversion/tag.h
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 -DCMAKE_BUILD_TYPE=Release -DBUILD_NOGUI_FRONTEND=ON -DBUILD_QT_FRONTEND=ON -DUSE_DRMKMS=ON -DUSE_EGL=ON -DUSE_SDL2=ON -DUSE_WAYLAND=ON -DUSE_X11=ON -G Ninja ..
ninja
../appimage/generate_appimages.sh $(pwd)
- name: Upload NoGUI AppImage
uses: actions/upload-artifact@v1
with:
name: "linux-x64-appimage-nogui"
path: "build/duckstation-nogui-x64.AppImage"
- name: Upload NoGUI AppImage zsync
uses: actions/upload-artifact@v1
with:
name: "linux-x64-appimage-nogui-zsync"
path: "build/duckstation-nogui-x64.AppImage.zsync"
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@v1
uses: actions/upload-artifact@v4.3.3
with:
name: "linux-x64-appimage-qt"
path: "build/duckstation-qt-x64.AppImage"
- name: Upload Qt AppImage zsync
uses: actions/upload-artifact@v1
with:
name: "linux-x64-appimage-qt-zsync"
path: "build/duckstation-qt-x64.AppImage.zsync"
path: "DuckStation-x64.AppImage"
android-build:
runs-on: ubuntu-20.04
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@v2.3.1
- uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
set-safe-directory: ${{ env.GITHUB_WORKSPACE }}
- name: Compile with Gradle
# Work around container ownership issue
- name: Set Safe Directory
shell: bash
run: |
cd android
./gradlew assembleRelease
run: git config --global --add safe.directory "*"
- name: Sign APK
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: android/app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.APK_SIGNING_KEY }}
alias: ${{ secrets.APK_KEY_ALIAS }}
keyStorePassword: ${{ secrets.APK_KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.APK_KEY_PASSWORD }}
- name: Rename APK
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
shell: bash
- name: Generate AppStream XML
run: |
cd android
mv app/build/outputs/apk/release/app-release-unsigned-signed.apk ../duckstation-android.apk
- name: Upload APK
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
uses: actions/upload-artifact@v1
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:
name: "android"
path: "duckstation-android.apk"
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@23796715b3dfa4c86ddf50cf29c3cc8b3c82dca8
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-10.15
runs-on: macos-14
timeout-minutes: 120
steps:
- uses: actions/checkout@v2.3.1
- 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 qt5 sdl2
brew install curl ninja
- name: Clone mac externals
shell: bash
- name: Cache Dependencies
id: cache-deps-mac
uses: actions/cache@v4.0.2
with:
path: ~/deps
key: deps-mac ${{ hashFiles('scripts/build-dependencies-mac.sh') }}
- name: Build Dependencies
if: steps.cache-deps-mac.outputs.cache-hit != 'true'
run: scripts/build-dependencies-mac.sh "$HOME/deps"
- name: Tag as preview build
if: github.ref == 'refs/heads/master'
run: |
git clone https://github.com/stenzek/duckstation-ext-mac.git dep/mac
echo '#pragma once' > src/scmversion/tag.h
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 '#pragma once' > src/scmversion/tag.h
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=10.14
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_NOGUI_FRONTEND=OFF -DBUILD_QT_FRONTEND=ON -DUSE_SDL2=ON -DQt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5 ..
cmake --build . --parallel 2
cd bin
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@v1
uses: actions/upload-artifact@v4.3.3
with:
name: "macos-x64"
path: "build/bin/duckstation-mac-release.zip"
name: "macos"
path: "build/duckstation-mac-release.zip"
create-release:
needs: [windows-build, windows-arm64-build, linux-build, android-build, macos-build]
runs-on: "ubuntu-latest"
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 Windows Artifacts
uses: actions/download-artifact@v1
- name: Download Artifacts
uses: actions/download-artifact@v4.1.7
with:
name: "windows"
path: ./artifacts/
- name: Download Windows ARM64 Artifact
uses: actions/download-artifact@v1
with:
name: "windows-arm64"
- name: Download NoGUI AppImage Artifact
uses: actions/download-artifact@v1
with:
name: "linux-x64-appimage-nogui"
- name: Download NoGUI AppImage zsync Artifact
uses: actions/download-artifact@v1
with:
name: "linux-x64-appimage-nogui-zsync"
- name: Download Qt AppImage Artifact
uses: actions/download-artifact@v1
with:
name: "linux-x64-appimage-qt"
- name: Download Qt AppImage zsync Artifact
uses: actions/download-artifact@v1
with:
name: "linux-x64-appimage-qt-zsync"
- name: Download Android APK
uses: actions/download-artifact@v1
with:
name: "android"
- name: Download Mac App
uses: actions/download-artifact@v1
with:
name: "macos-x64"
- name: Display Downloaded Artifacts
run: find ./artifacts/
- name: Create preview release
if: github.ref == 'refs/heads/master'
@@ -328,15 +413,13 @@ jobs:
prerelease: true
title: "Latest Preview Build"
files: |
windows/duckstation-windows-x64-release.zip
windows/duckstation-windows-x64-release-symbols.zip
windows-arm64/duckstation-windows-arm64-release.zip
windows-arm64/duckstation-windows-arm64-release-symbols.zip
linux-x64-appimage-nogui/duckstation-nogui-x64.AppImage
linux-x64-appimage-nogui-zsync/duckstation-nogui-x64.AppImage.zsync
linux-x64-appimage-qt/duckstation-qt-x64.AppImage
linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync
android/duckstation-android.apk
./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'
@@ -345,16 +428,13 @@ jobs:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
prerelease: false
title: "Latest Development Build"
title: "Latest Rolling Release"
files: |
windows/duckstation-windows-x64-release.zip
windows/duckstation-windows-x64-release-symbols.zip
windows-arm64/duckstation-windows-arm64-release.zip
windows-arm64/duckstation-windows-arm64-release-symbols.zip
linux-x64-appimage-nogui/duckstation-nogui-x64.AppImage
linux-x64-appimage-nogui-zsync/duckstation-nogui-x64.AppImage.zsync
linux-x64-appimage-qt/duckstation-qt-x64.AppImage
linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync
android/duckstation-android.apk
macos-x64/duckstation-mac-release.zip
./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

8
.gitignore vendored
View File

@@ -3,10 +3,12 @@
# binaries folder
/bin/
/Build/
/build/
/build-*/
# dependency build temp files
deps-build/
# vs stuff
.vs
ipch
@@ -17,6 +19,7 @@ ipch/*
*.vcxproj.user
*.VC.opendb
*.VC.db
/.vscode/
# cmake stuff
CMakeCache.txt
@@ -39,4 +42,5 @@ CMakeLists.txt.user
__pycache__
# other repos
/dep/mac
/android

4
.gitmodules vendored
View File

@@ -1,4 +0,0 @@
[submodule "dep/msvc/qt"]
path = dep/msvc/qt
url = https://github.com/stenzek/duckstation-ext-qt-minimal.git
shallow = true

View File

@@ -1,138 +1,43 @@
cmake_minimum_required(VERSION 3.10)
cmake_minimum_required(VERSION 3.16)
project(duckstation C CXX)
message("CMake Version: ${CMAKE_VERSION}")
# Policy settings.
cmake_policy(SET CMP0069 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "DuckStation does not support in-tree builds. Please make a build directory that is not the source"
"directory and generate your CMake project there using either `cmake -B build_directory` or by "
"running cmake from the build directory.")
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")
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)
# Platform detection.
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX TRUE)
set(SUPPORTS_X11 TRUE)
set(SUPPORTS_WAYLAND TRUE)
endif()
# Detect system attributes.
detect_operating_system()
detect_compiler()
detect_architecture()
detect_page_size()
detect_cache_line_size()
# Set minimum OS version for macOS. 10.14 should work.
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14.0" CACHE STRING "")
# Global options.
if(NOT ANDROID)
option(BUILD_SDL_FRONTEND "Build the SDL frontend" OFF)
option(BUILD_NOGUI_FRONTEND "Build the NoGUI frontend" ON)
option(BUILD_QT_FRONTEND "Build the Qt frontend" ON)
option(ENABLE_DISCORD_PRESENCE "Build with Discord Rich Presence support" ON)
option(USE_SDL2 "Link with SDL2 for controller support" ON)
endif()
# OpenGL context creation methods.
if(SUPPORTS_X11)
option(USE_X11 "Support X11 window system" ON)
endif()
if(SUPPORTS_WAYLAND)
option(USE_WAYLAND "Support Wayland window system" OFF)
endif()
if(LINUX OR ANDROID)
option(USE_EGL "Support EGL OpenGL context creation" ON)
endif()
if(LINUX AND NOT ANDROID)
option(USE_DRMKMS "Support DRM/KMS OpenGL contexts" OFF)
option(USE_FBDEV "Support FBDev OpenGL contexts" OFF)
endif()
# Force EGL when using Wayland
if(USE_WAYLAND)
set(USE_EGL ON)
endif()
if(ANDROID)
if(BUILD_SDL_FRONTEND)
message(WARNING "Building for Android, disabling SDL frontend")
set(BUILD_SDL_FRONTEND OFF)
endif()
if(BUILD_NOGUI_FRONTEND)
message(WARNING "Building for Android, disabling NoGUI frontend")
set(BUILD_QT_FRONTEND OFF)
endif()
if(BUILD_QT_FRONTEND)
message(WARNING "Building for Android, disabling Qt frontend")
set(BUILD_QT_FRONTEND OFF)
endif()
if(ENABLE_DISCORD_PRESENCE)
message("Building for Android, disabling Discord Presence support")
set(ENABLE_DISCORD_PRESENCE OFF)
endif()
if(USE_SDL2)
message("Building for Android, disabling SDL2 support")
set(USE_SDL2 OFF)
endif()
if(USE_X11)
set(USE_X11 OFF)
endif()
if(USE_WAYLAND)
set(USE_WAYLAND OFF)
endif()
endif()
# Common include/library directories on Windows.
if(WIN32)
set(SDL2_FOUND TRUE)
set(SDL2_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/include")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(SDL2_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/lib64/SDL2.lib")
set(SDL2MAIN_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/lib64/SDL2main.lib")
set(SDL2_DLL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/bin64/SDL2.dll")
set(Qt5_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/qt/5.15.0/msvc2017_64/lib/cmake/Qt5")
else()
set(SDL2_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/lib32/SDL2.lib")
set(SDL2MAIN_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/lib32/SDL2main.lib")
set(SDL2_DLL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/sdl2/bin32/SDL2.dll")
set(Qt5_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dep/msvc/qt/5.15.0/msvc2017_32/lib/cmake/Qt5")
endif()
endif()
# Required libraries.
if(NOT ANDROID)
if(NOT WIN32 AND (BUILD_SDL_FRONTEND OR USE_SDL2))
find_package(SDL2 REQUIRED)
endif()
if(BUILD_QT_FRONTEND)
find_package(Qt5 COMPONENTS Core Gui Widgets Network LinguistTools REQUIRED)
endif()
endif()
if(USE_EGL)
find_package(EGL REQUIRED)
endif()
if(USE_X11)
find_package(X11 REQUIRED)
endif()
if(USE_WAYLAND)
find_package(ECM REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}")
find_package(Wayland REQUIRED Egl)
message(STATUS "Wayland support enabled")
endif()
if(USE_DRMKMS AND USE_FBDEV)
message(FATAL_ERROR "Only one of DRM/KMS and FBDev can be enabled")
endif()
if(USE_DRMKMS)
find_package(GBM REQUIRED)
find_package(Libdrm REQUIRED)
message(STATUS "DRM/KMS support enabled")
endif()
if(USE_FBDEV)
message(STATUS "FBDev Support enabled")
endif()
# Build options. Depends on system attributes.
include(DuckStationBuildOptions)
# 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")
# Release build optimizations for MSVC.
if(MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS")
@@ -140,8 +45,8 @@ if(MSVC)
# Set warning level 3 instead of 4.
string(REPLACE "/W3" "/W4" ${config} "${${config}}")
# Enable intrinsic functions, disable minimal rebuild, UTF-8 source.
set(${config} "${${config}} /Oi /Gm- /utf-8")
# Enable intrinsic functions, disable minimal rebuild, UTF-8 source, set __cplusplus version.
set(${config} "${${config}} /Oi /Gm- /utf-8 /Zc:__cplusplus")
endforeach()
# RelWithDebInfo is set to Ob1 instead of Ob2.
@@ -154,90 +59,52 @@ if(MSVC)
# 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")
# Enable LTO/LTCG on Release builds.
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_IS_SUPPORTED)
if(IPO_IS_SUPPORTED)
message(STATUS "Enabling LTCG/IPO.")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
else()
message(WARNING "LTCG/IPO is not supported, this will make the build slightly slower.")
endif()
endif()
endif()
# Detect C++ version support.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
include(CheckCXXFlag)
check_cxx_flag(-Wall COMPILER_SUPPORTS_WALL)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch")
if(NOT ANDROID)
check_cxx_flag(-Wno-class-memaccess COMPILER_SUPPORTS_MEMACCESS)
check_cxx_flag(-Wno-invalid-offsetof COMPILER_SUPPORTS_OFFSETOF)
endif()
# Warning disables.
if(COMPILER_CLANG OR COMPILER_CLANG_CL OR COMPILER_GCC)
include(CheckCXXFlag)
check_cxx_flag(-Wall COMPILER_SUPPORTS_WALL)
check_cxx_flag(-Wno-class-memaccess COMPILER_SUPPORTS_MEMACCESS)
check_cxx_flag(-Wno-invalid-offsetof COMPILER_SUPPORTS_OFFSETOF)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch")
endif()
# We don't need exceptions, disable them to save a bit of code size.
if(MSVC)
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# Detect processor type.
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
set(CPU_ARCH "x64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
# MSVC x86/x64
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(CPU_ARCH "x64")
else()
set(CPU_ARCH "x86")
endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386" OR
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
set(CPU_ARCH "x86")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(CPU_ARCH "aarch64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7-a" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
set(CPU_ARCH "aarch32")
if(ANDROID)
# Force ARM mode, since apparently ANDROID_ARM_MODE isn't working..
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm")
else()
# Enable NEON.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_HAS_EXCEPTIONS=0 /permissive-")
else()
message(FATAL_ERROR "Unknown system processor: " ${CMAKE_SYSTEM_PROCESSOR})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif()
# Write binaries to a seperate directory.
if(WIN32)
# For Windows, use the source directory, except for libretro.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/${CPU_ARCH}")
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
# Enable large file support on Linux 32-bit platforms.
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
add_definitions("-D_FILE_OFFSET_BITS=64")
endif()
# Needed for Linux - put shared libraries in the binary directory.
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
# Optional unit tests.
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")
# Enable threads everywhere.
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
# Use C++20.
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Recursively include the source tree.
enable_testing()
include(DuckStationDependencies)
add_subdirectory(dep)
add_subdirectory(src)
if(ANDROID)
add_subdirectory(android/app/src/cpp)
endif()
# Output build summary.
include(DuckStationBuildSummary)

View File

@@ -0,0 +1,47 @@
# Borrowed from PCSX2.
if(APPLE)
function(add_metal_sources target sources)
if(CMAKE_GENERATOR MATCHES "Xcode")
# If we're generating an xcode project, you can just add the shaders to the main pcsx2 target and xcode will deal with them properly
# This will make sure xcode supplies code completion, etc (if you use a custom command, it won't)
set_target_properties(${target} PROPERTIES
XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO INCLUDE_SOURCE
)
foreach(shader IN LISTS sources)
target_sources(${target} PRIVATE ${shader})
set_source_files_properties(${shader} PROPERTIES LANGUAGE METAL)
endforeach()
else()
function(generateMetallib std triple outputName)
set(MetalShaderOut)
set(flags
-ffast-math
$<$<NOT:$<CONFIG:Release,MinSizeRel>>:-gline-tables-only>
$<$<NOT:$<CONFIG:Release,MinSizeRel>>:-MO>
)
foreach(shader IN LISTS sources)
file(RELATIVE_PATH relativeShader "${CMAKE_SOURCE_DIR}" "${shader}")
set(shaderOut ${CMAKE_CURRENT_BINARY_DIR}/${outputName}/${relativeShader}.air)
list(APPEND MetalShaderOut ${shaderOut})
get_filename_component(shaderDir ${shaderOut} DIRECTORY)
add_custom_command(OUTPUT ${shaderOut}
COMMAND ${CMAKE_COMMAND} -E make_directory ${shaderDir}
COMMAND xcrun metal ${flags} -std=${std} -target ${triple} -o ${shaderOut} -c ${shader}
DEPENDS ${shader}
)
set(metallib ${CMAKE_CURRENT_BINARY_DIR}/${outputName}.metallib)
endforeach()
add_custom_command(OUTPUT ${metallib}
COMMAND xcrun metallib -o ${metallib} ${MetalShaderOut}
DEPENDS ${MetalShaderOut}
)
target_sources(${target} PRIVATE ${metallib})
set_source_files_properties(${metallib} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
endfunction()
generateMetallib(macos-metal2.0 air64-apple-macos10.13 default)
generateMetallib(macos-metal2.2 air64-apple-macos10.15 Metal22)
generateMetallib(macos-metal2.3 air64-apple-macos11.0 Metal23)
endif()
endfunction()
endif()

View File

@@ -0,0 +1,50 @@
function(copy_base_translations target)
get_target_property(MOC_EXECUTABLE_LOCATION Qt6::moc IMPORTED_LOCATION)
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)
find_program(LCONVERT_EXE lconvert HINTS "${QT_BINARY_DIRECTORY}")
set(BASE_TRANSLATIONS_DIR "${QT_BINARY_DIRECTORY}/../translations")
if(NOT APPLE)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E make_directory "$<TARGET_FILE_DIR:${target}>/translations")
endif()
file(GLOB qmFiles "${BASE_TRANSLATIONS_DIR}/qt_*.qm")
foreach(path IN LISTS qmFiles)
get_filename_component(file ${path} NAME)
# qt_help_<lang> just has to ruin everything.
if(file MATCHES "qt_help_" OR NOT file MATCHES "qt_([^.]+).qm")
continue()
endif()
# If qtbase_<lang>.qm exists, merge all qms for that language into a single qm.
set(lang "${CMAKE_MATCH_1}")
set(baseQmPath "${BASE_TRANSLATIONS_DIR}/qtbase_${lang}.qm")
if(EXISTS "${baseQmPath}")
set(outPath "${CMAKE_CURRENT_BINARY_DIR}/qt_${lang}.qm")
set(srcQmFiles)
file(GLOB langQmFiles "${BASE_TRANSLATIONS_DIR}/qt*${lang}.qm")
foreach(qmFile IN LISTS langQmFiles)
get_filename_component(file ${qmFile} NAME)
if(file STREQUAL "qt_${lang}.qm")
continue()
endif()
LIST(APPEND srcQmFiles "${qmFile}")
endforeach()
add_custom_command(OUTPUT ${outPath}
COMMAND "${LCONVERT_EXE}" -verbose -of qm -o "${outPath}" ${srcQmFiles}
DEPENDS ${srcQmFiles}
)
set(path "${outPath}")
endif()
target_sources(${target} PRIVATE ${path})
if(APPLE)
set_source_files_properties(${path} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/translations)
else()
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${path}" "$<TARGET_FILE_DIR:${target}>/translations")
endif()
endforeach()
endfunction()

View File

@@ -1,46 +0,0 @@
# This module can be used in two different ways.
#
# When invoked as `cmake -P DolphinPostprocessBundle.cmake`, it fixes up an
# application folder to be standalone. It bundles all required libraries from
# the system and fixes up library IDs. Any additional shared libraries, like
# plugins, that are found under Contents/MacOS/ will be made standalone as well.
#
# When called with `include(DolphinPostprocessBundle)`, it defines a helper
# function `dolphin_postprocess_bundle` that sets up the command form of the
# module as a post-build step.
if(CMAKE_GENERATOR)
# Being called as include(DolphinPostprocessBundle), so define a helper function.
set(_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}")
function(dolphin_postprocess_bundle target)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND ${CMAKE_COMMAND} -DDOLPHIN_BUNDLE_PATH="$<TARGET_FILE_DIR:${target}>/../.."
-P "${_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION}"
)
endfunction()
return()
endif()
get_filename_component(DOLPHIN_BUNDLE_PATH "${DOLPHIN_BUNDLE_PATH}" ABSOLUTE)
message(STATUS "Fixing up application bundle: ${DOLPHIN_BUNDLE_PATH}")
# Make sure to fix up any additional shared libraries (like plugins) that are
# needed.
file(GLOB_RECURSE extra_libs "${DOLPHIN_BUNDLE_PATH}/Contents/MacOS/*.dylib")
# BundleUtilities doesn't support DYLD_FALLBACK_LIBRARY_PATH behavior, which
# makes it sometimes break on libraries that do weird things with @rpath. Specify
# equivalent search directories until https://gitlab.kitware.com/cmake/cmake/issues/16625
# is fixed and in our minimum CMake version.
set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib")
# BundleUtilities is overly verbose, so disable most of its messages
function(message)
if(NOT ARGV MATCHES "^STATUS;")
_message(${ARGV})
endif()
endfunction()
include(BundleUtilities)
set(BU_CHMOD_BUNDLE_ITEMS ON)
fixup_bundle("${DOLPHIN_BUNDLE_PATH}" "${extra_libs}" "${extra_dirs}")

View File

@@ -0,0 +1,15 @@
# 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_REGTEST "Build regression test runner" OFF)
option(BUILD_TESTS "Build unit tests" OFF)
if(LINUX OR BSD)
option(ENABLE_X11 "Support X11 window system" ON)
option(ENABLE_WAYLAND "Support Wayland window system" ON)
endif()
if(APPLE)
option(SKIP_POSTPROCESS_BUNDLE "Disable bundle post-processing, including Qt additions" OFF)
endif()

View File

@@ -0,0 +1,45 @@
if(ENABLE_OPENGL)
message(STATUS "Building with OpenGL support.")
endif()
if(ENABLE_VULKAN)
message(STATUS "Building with Vulkan support.")
endif()
if(ENABLE_X11)
message(STATUS "Building with X11 support.")
endif()
if(ENABLE_WAYLAND)
message(STATUS "Building with Wayland support.")
endif()
if(BUILD_QT_FRONTEND)
message(STATUS "Building Qt frontend.")
endif()
if(BUILD_NOGUI_FRONTEND)
message(STATUS "Building NoGUI frontend.")
endif()
if(BUILD_REGTEST)
message(STATUS "Building RegTest frontend.")
endif()
if(BUILD_TESTS)
message(STATUS "Building unit tests.")
endif()
if(NOT IS_SUPPORTED_COMPILER)
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.
No support will be provided, continue at your own risk.
*********************************************************")
endif()
if(WIN32)
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()

View File

@@ -0,0 +1,61 @@
# 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)
endif()
# Enable threads everywhere.
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(SDL2 2.30.4 REQUIRED)
find_package(Zstd 1.5.6 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)
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()
if(NOT WIN32 AND NOT APPLE)
find_package(Libbacktrace REQUIRED)
endif()
if(APPLE)
set(CMAKE_FIND_FRAMEWORK ${FIND_FRAMEWORK_BACKUP})
endif()

View File

@@ -0,0 +1,196 @@
function(disable_compiler_warnings_for_target target)
if(MSVC)
target_compile_options(${target} PRIVATE "/W0")
else()
target_compile_options(${target} PRIVATE "-w")
endif()
endfunction()
function(detect_operating_system)
message(STATUS "CMake Version: ${CMAKE_VERSION}")
message(STATUS "CMake System Name: ${CMAKE_SYSTEM_NAME}")
# LINUX wasn't added until CMake 3.25.
if (CMAKE_VERSION VERSION_LESS 3.25.0 AND CMAKE_SYSTEM_NAME MATCHES "Linux")
# Have to make it visible in this scope as well for below.
set(LINUX TRUE PARENT_SCOPE)
set(LINUX TRUE)
endif()
if(WIN32)
message(STATUS "Building for Windows.")
elseif(APPLE AND NOT IOS)
message(STATUS "Building for MacOS.")
elseif(LINUX)
message(STATUS "Building for Linux.")
elseif(BSD)
message(STATUS "Building for *BSD.")
else()
message(FATAL_ERROR "Unsupported platform.")
endif()
endfunction()
function(detect_compiler)
if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(COMPILER_CLANG_CL TRUE PARENT_SCOPE)
set(IS_SUPPORTED_COMPILER TRUE PARENT_SCOPE)
message(STATUS "Building with Clang-CL.")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(COMPILER_CLANG TRUE PARENT_SCOPE)
set(IS_SUPPORTED_COMPILER TRUE PARENT_SCOPE)
message(STATUS "Building with Clang/LLVM.")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(COMPILER_GCC TRUE PARENT_SCOPE)
set(IS_SUPPORTED_COMPILER FALSE PARENT_SCOPE)
message(STATUS "Building with GNU GCC.")
elseif(MSVC)
set(IS_SUPPORTED_COMPILER TRUE PARENT_SCOPE)
message(STATUS "Building with MSVC.")
else()
message(FATAL_ERROR "Unknown compiler: ${CMAKE_CXX_COMPILER_ID}")
endif()
endfunction()
function(detect_architecture)
if(APPLE AND NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "")
# Universal binaries.
if("x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
message(STATUS "Building x86_64 MacOS binaries.")
set(CPU_ARCH_X64 TRUE PARENT_SCOPE)
endif()
if("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)
message(STATUS "Building ARM64 MacOS binaries.")
set(CPU_ARCH_ARM64 TRUE PARENT_SCOPE)
endif()
elseif(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64") AND
CMAKE_SIZEOF_VOID_P EQUAL 8)
message(STATUS "Building x86_64 binaries.")
set(CPU_ARCH_X64 TRUE PARENT_SCOPE)
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.
message(STATUS "Building ARM64 binaries.")
set(CPU_ARCH_ARM64 TRUE PARENT_SCOPE)
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l" OR
(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
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)
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")
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)
endif()
else()
message(FATAL_ERROR "Unknown system processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
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)
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.
return()
endif()
if(CMAKE_CROSSCOMPILING)
message(WARNING "Cross-compiling and can't determine page size, assuming default.")
return()
endif()
message(STATUS "Determining host page size")
set(detect_page_size_file ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c)
file(WRITE ${detect_page_size_file} "
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int res = sysconf(_SC_PAGESIZE);
printf(\"%d\", res);
return (res > 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}")
try_run(
detect_page_size_run_result
detect_page_size_compile_result
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}
${detect_page_size_file}
RUN_OUTPUT_VARIABLE detect_page_size_output)
if(NOT detect_page_size_compile_result OR NOT detect_page_size_run_result EQUAL 0)
message(FATAL_ERROR "Could not determine host page size.")
else()
message(STATUS "Host page size: ${detect_page_size_output}")
set(HOST_PAGE_SIZE ${detect_page_size_output} CACHE STRING "Reported host page size")
endif()
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)
return()
endif()
if(NOT LINUX)
# For universal Apple builds, we use preprocessor macros to determine page size.
# Similar for Windows, except it's always 64 bytes.
return()
endif()
if(CMAKE_CROSSCOMPILING)
message(WARNING "Cross-compiling and can't determine page size, assuming default.")
return()
endif()
message(STATUS "Determining host cache line size")
set(detect_cache_line_size_file ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c)
file(WRITE ${detect_cache_line_size_file} "
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int l1i = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
int l1d = sysconf(_SC_LEVEL1_ICACHE_LINESIZE);
int res = (l1i > l1d) ? l1i : l1d;
for (int index = 0; index < 16; index++) {
char buf[128];
snprintf(buf, sizeof(buf), \"/sys/devices/system/cpu/cpu0/cache/index%d/coherency_line_size\", index);
FILE* fp = fopen(buf, \"rb\");
if (!fp)
break;
fread(buf, sizeof(buf), 1, fp);
fclose(fp);
int val = atoi(buf);
res = (val > res) ? val : res;
}
printf(\"%d\", res);
return (res > 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}")
try_run(
detect_cache_line_size_run_result
detect_cache_line_size_compile_result
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}
${detect_cache_line_size_file}
RUN_OUTPUT_VARIABLE detect_cache_line_size_output)
if(NOT detect_cache_line_size_compile_result OR NOT detect_cache_line_size_run_result EQUAL 0)
message(FATAL_ERROR "Could not determine host cache line size.")
else()
message(STATUS "Host cache line size: ${detect_cache_line_size_output}")
set(HOST_CACHE_LINE_SIZE ${detect_cache_line_size_output} CACHE STRING "Reported host cache line size")
endif()
endfunction()

View File

@@ -1,172 +0,0 @@
#.rst:
# FindEGL
# -------
#
# Try to find EGL.
#
# This will define the following variables:
#
# ``EGL_FOUND``
# True if (the requested version of) EGL is available
# ``EGL_VERSION``
# The version of EGL; note that this is the API version defined in the
# headers, rather than the version of the implementation (eg: Mesa)
# ``EGL_LIBRARIES``
# This can be passed to target_link_libraries() instead of the ``EGL::EGL``
# target
# ``EGL_INCLUDE_DIRS``
# This should be passed to target_include_directories() if the target is not
# used for linking
# ``EGL_DEFINITIONS``
# This should be passed to target_compile_options() if the target is not
# used for linking
#
# If ``EGL_FOUND`` is TRUE, it will also define the following imported target:
#
# ``EGL::EGL``
# The EGL library
#
# In general we recommend using the imported target, as it is easier to use.
# Bear in mind, however, that if the target is in the link interface of an
# exported library, it must be made available by the package config file.
#
# Since pre-1.0.0.
#=============================================================================
# Copyright 2014 Alex Merry <alex.merry@kde.org>
# Copyright 2014 Martin Gräßlin <mgraesslin@kde.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 copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
#=============================================================================
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
include(CheckCXXSourceCompiles)
include(CMakePushCheckState)
ecm_find_package_version_check(EGL)
# Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
pkg_check_modules(PKG_EGL QUIET egl)
set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER})
find_path(EGL_INCLUDE_DIR
NAMES
EGL/egl.h
HINTS
${PKG_EGL_INCLUDE_DIRS}
)
find_library(EGL_LIBRARY
NAMES
EGL
HINTS
${PKG_EGL_LIBRARY_DIRS}
)
# NB: We do *not* use the version information from pkg-config, as that
# is the implementation version (eg: the Mesa version)
if(EGL_INCLUDE_DIR)
# egl.h has defines of the form EGL_VERSION_x_y for each supported
# version; so the header for EGL 1.1 will define EGL_VERSION_1_0 and
# EGL_VERSION_1_1. Finding the highest supported version involves
# finding all these defines and selecting the highest numbered.
file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents)
string(REGEX MATCHALL
"[ \t]EGL_VERSION_[0-9_]+"
_EGL_version_lines
"${_EGL_header_contents}"
)
unset(_EGL_header_contents)
foreach(_EGL_version_line ${_EGL_version_lines})
string(REGEX REPLACE
"[ \t]EGL_VERSION_([0-9_]+)"
"\\1"
_version_candidate
"${_EGL_version_line}"
)
string(REPLACE "_" "." _version_candidate "${_version_candidate}")
if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate)
set(EGL_VERSION "${_version_candidate}")
endif()
endforeach()
unset(_EGL_version_lines)
endif()
cmake_push_check_state(RESET)
list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}")
list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}")
check_cxx_source_compiles("
#include <EGL/egl.h>
int main(int argc, char *argv[]) {
EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0;
eglDestroyContext(dpy, ctx);
}" HAVE_EGL)
cmake_pop_check_state()
set(required_vars EGL_INCLUDE_DIR HAVE_EGL)
if(NOT EMSCRIPTEN)
list(APPEND required_vars EGL_LIBRARY)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(EGL
FOUND_VAR
EGL_FOUND
REQUIRED_VARS
${required_vars}
VERSION_VAR
EGL_VERSION
)
if(EGL_FOUND AND NOT TARGET EGL::EGL)
if (EMSCRIPTEN)
add_library(EGL::EGL INTERFACE IMPORTED)
# Nothing further to be done, system include paths have headers and linkage is implicit.
else()
add_library(EGL::EGL UNKNOWN IMPORTED)
set_target_properties(EGL::EGL PROPERTIES
IMPORTED_LOCATION "${EGL_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}"
)
endif()
endif()
mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL)
# compatibility variables
set(EGL_LIBRARIES ${EGL_LIBRARY})
set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
set(EGL_VERSION_STRING ${EGL_VERSION})
include(FeatureSummary)
set_package_properties(EGL PROPERTIES
URL "https://www.khronos.org/egl/"
DESCRIPTION "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG."
)

View File

@@ -1,70 +0,0 @@
# https://fossies.org/linux/misc/xbmc-18.9-Leia.tar.gz/xbmc-18.9-Leia/cmake/modules/FindGBM.cmake?m=t
# FindGBM
# ----------
# Finds the GBM library
#
# This will define the following variables::
#
# GBM_FOUND - system has GBM
# GBM_INCLUDE_DIRS - the GBM include directory
# GBM_LIBRARIES - the GBM libraries
# GBM_DEFINITIONS - the GBM definitions
#
# and the following imported targets::
#
# GBM::GBM - The GBM library
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_GBM gbm QUIET)
endif()
find_path(GBM_INCLUDE_DIR NAMES gbm.h
PATHS ${PC_GBM_INCLUDEDIR})
find_library(GBM_LIBRARY NAMES gbm
PATHS ${PC_GBM_LIBDIR})
set(GBM_VERSION ${PC_GBM_VERSION})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GBM
REQUIRED_VARS GBM_LIBRARY GBM_INCLUDE_DIR
VERSION_VAR GBM_VERSION)
include(CheckCSourceCompiles)
set(CMAKE_REQUIRED_LIBRARIES ${GBM_LIBRARY})
check_c_source_compiles("#include <gbm.h>
int main()
{
gbm_bo_map(NULL, 0, 0, 0, 0, GBM_BO_TRANSFER_WRITE, NULL, NULL);
}
" GBM_HAS_BO_MAP)
check_c_source_compiles("#include <gbm.h>
int main()
{
gbm_surface_create_with_modifiers(NULL, 0, 0, 0, NULL, 0);
}
" GBM_HAS_MODIFIERS)
if(GBM_FOUND)
set(GBM_LIBRARIES ${GBM_LIBRARY})
set(GBM_INCLUDE_DIRS ${GBM_INCLUDE_DIR})
set(GBM_DEFINITIONS -DHAVE_GBM=1)
if(GBM_HAS_BO_MAP)
list(APPEND GBM_DEFINITIONS -DHAS_GBM_BO_MAP=1)
endif()
if(GBM_HAS_MODIFIERS)
list(APPEND GBM_DEFINITIONS -DHAS_GBM_MODIFIERS=1)
endif()
if(NOT TARGET GBM::GBM)
add_library(GBM::GBM UNKNOWN IMPORTED)
set_target_properties(GBM::GBM PROPERTIES
IMPORTED_LOCATION "${GBM_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${GBM_INCLUDE_DIR}")
endif()
endif()
mark_as_advanced(GBM_INCLUDE_DIR GBM_LIBRARY)

View File

@@ -1,33 +0,0 @@
# - Try to find libevdev
# Once done this will define
# LIBEVDEV_FOUND - System has libevdev
# LIBEVDEV_INCLUDE_DIRS - The libevdev include directories
# LIBEVDEV_LIBRARIES - The libraries needed to use libevdev
find_package(PkgConfig)
pkg_check_modules(PC_LIBEVDEV QUIET libevdev)
FIND_PATH(
LIBEVDEV_INCLUDE_DIR libevdev/libevdev.h
HINTS ${PC_LIBEVDEV_INCLUDEDIR} ${PC_LIBEVDEV_INCLUDE_DIRS}
/usr/include
/usr/local/include
${LIBEVDEV_PATH_INCLUDES}
)
FIND_LIBRARY(
LIBEVDEV_LIBRARY
NAMES evdev libevdev
HINTS ${PC_LIBEVDEV_LIBDIR} ${PC_LIBEVDEV_LIBRARY_DIRS}
PATHS ${ADDITIONAL_LIBRARY_PATHS}
${LIBEVDEV_PATH_LIB}
)
set(LIBEVDEV_LIBRARIES ${LIBEVDEV_LIBRARY} )
set(LIBEVDEV_INCLUDE_DIRS ${LIBEVDEV_INCLUDE_DIR} )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LIBEVDEV DEFAULT_MSG
LIBEVDEV_LIBRARY LIBEVDEV_INCLUDE_DIR)
mark_as_advanced(LIBEVDEV_INCLUDE_DIR LIBEVDEV_LIBRARY )

View File

@@ -0,0 +1,31 @@
# - Try to find libbacktrace
# Once done this will define
# LIBBACKTRACE_FOUND - System has libbacktrace
# LIBBACKTRACE_INCLUDE_DIRS - The libbacktrace include directories
# LIBBACKTRACE_LIBRARIES - The libraries needed to use libbacktrace
FIND_PATH(
LIBBACKTRACE_INCLUDE_DIR backtrace.h
HINTS /usr/include /usr/local/include
${LIBBACKTRACE_PATH_INCLUDES}
)
FIND_LIBRARY(
LIBBACKTRACE_LIBRARY
NAMES backtrace
PATHS ${ADDITIONAL_LIBRARY_PATHS} ${LIBBACKTRACE_PATH_LIB}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libbacktrace DEFAULT_MSG
LIBBACKTRACE_LIBRARY LIBBACKTRACE_INCLUDE_DIR)
if(LIBBACKTRACE_FOUND)
add_library(libbacktrace::libbacktrace UNKNOWN IMPORTED)
set_target_properties(libbacktrace::libbacktrace PROPERTIES
IMPORTED_LOCATION ${LIBBACKTRACE_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${LIBBACKTRACE_INCLUDE_DIR}
)
endif()
mark_as_advanced(LIBBACKTRACE_INCLUDE_DIR LIBBACKTRACE_LIBRARY)

View File

@@ -1,107 +0,0 @@
# https://raw.githubusercontent.com/KDE/kwin/master/cmake/modules/FindLibdrm.cmake
#.rst:
# FindLibdrm
# -------
#
# Try to find libdrm on a Unix system.
#
# This will define the following variables:
#
# ``Libdrm_FOUND``
# True if (the requested version of) libdrm is available
# ``Libdrm_VERSION``
# The version of libdrm
# ``Libdrm_LIBRARIES``
# This can be passed to target_link_libraries() instead of the ``Libdrm::Libdrm``
# target
# ``Libdrm_INCLUDE_DIRS``
# This should be passed to target_include_directories() if the target is not
# used for linking
# ``Libdrm_DEFINITIONS``
# This should be passed to target_compile_options() if the target is not
# used for linking
#
# If ``Libdrm_FOUND`` is TRUE, it will also define the following imported target:
#
# ``Libdrm::Libdrm``
# The libdrm library
#
# In general we recommend using the imported target, as it is easier to use.
# Bear in mind, however, that if the target is in the link interface of an
# exported library, it must be made available by the package config file.
#=============================================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
if(CMAKE_VERSION VERSION_LESS 2.8.12)
message(FATAL_ERROR "CMake 2.8.12 is required by FindLibdrm.cmake")
endif()
if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindLibdrm.cmake")
endif()
if(NOT WIN32)
# Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
pkg_check_modules(PKG_Libdrm QUIET libdrm)
set(Libdrm_DEFINITIONS ${PKG_Libdrm_CFLAGS_OTHER})
set(Libdrm_VERSION ${PKG_Libdrm_VERSION})
find_path(Libdrm_INCLUDE_DIR
NAMES
xf86drm.h
HINTS
${PKG_Libdrm_INCLUDE_DIRS}
)
find_library(Libdrm_LIBRARY
NAMES
drm
HINTS
${PKG_Libdrm_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libdrm
FOUND_VAR
Libdrm_FOUND
REQUIRED_VARS
Libdrm_LIBRARY
Libdrm_INCLUDE_DIR
VERSION_VAR
Libdrm_VERSION
)
if(Libdrm_FOUND AND NOT TARGET Libdrm::Libdrm)
add_library(Libdrm::Libdrm UNKNOWN IMPORTED)
set_target_properties(Libdrm::Libdrm PROPERTIES
IMPORTED_LOCATION "${Libdrm_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${Libdrm_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIR}"
INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIR}/libdrm"
)
endif()
mark_as_advanced(Libdrm_LIBRARY Libdrm_INCLUDE_DIR)
# compatibility variables
set(Libdrm_LIBRARIES ${Libdrm_LIBRARY})
set(Libdrm_INCLUDE_DIRS ${Libdrm_INCLUDE_DIR} "${Libdrm_INCLUDE_DIR}/libdrm")
set(Libdrm_VERSION_STRING ${Libdrm_VERSION})
else()
message(STATUS "FindLibdrm.cmake cannot find libdrm on Windows systems.")
set(Libdrm_FOUND FALSE)
endif()
include(FeatureSummary)
set_package_properties(Libdrm PROPERTIES
URL "https://wiki.freedesktop.org/dri/"
DESCRIPTION "Userspace interface to kernel DRM services."
)

View File

@@ -1,389 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Sourced from https://raw.githubusercontent.com/aminosbh/sdl2-cmake-modules/master/FindSDL2.cmake
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * 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.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "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 COPYRIGHT
# HOLDER OR CONTRIBUTORS 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:
FindSDL2
--------
Locate SDL2 library
This module defines the following 'IMPORTED' targets:
::
SDL2::Core
The SDL2 library, if found.
Libraries should link to SDL2::Core
SDL2::Main
The SDL2main library, if found.
Applications should link to SDL2::Main instead of SDL2::Core
This module will set the following variables in your project:
::
SDL2_LIBRARIES, the name of the library to link against
SDL2_INCLUDE_DIRS, where to find SDL.h
SDL2_FOUND, if false, do not try to link to SDL2
SDL2MAIN_FOUND, if false, do not try to link to SDL2main
SDL2_VERSION_STRING, human-readable string containing the version of SDL2
This module responds to the following cache variables:
::
SDL2_PATH
Set a custom SDL2 Library path (default: empty)
SDL2_NO_DEFAULT_PATH
Disable search SDL2 Library in default path.
If SDL2_PATH (default: ON)
Else (default: OFF)
SDL2_INCLUDE_DIR
SDL2 headers path.
SDL2_LIBRARY
SDL2 Library (.dll, .so, .a, etc) path.
SDL2MAIN_LIBRAY
SDL2main Library (.a) path.
SDL2_BUILDING_LIBRARY
This flag is useful only when linking to SDL2_LIBRARIES insead of
SDL2::Main. It is required only when building a library that links to
SDL2_LIBRARIES, because only applications need main() (No need to also
link to SDL2main).
If this flag is defined, then no SDL2main will be added to SDL2_LIBRARIES
and no SDL2::Main target will be created.
Don't forget to include SDLmain.h and SDLmain.m in your project for the
OS X framework based version. (Other versions link to -lSDL2main which
this module will try to find on your behalf.) Also for OS X, this
module will automatically add the -framework Cocoa on your behalf.
Additional Note: If you see an empty SDL2_LIBRARY in your project
configuration, it means CMake did not find your SDL2 library
(SDL2.dll, libsdl2.so, SDL2.framework, etc). Set SDL2_LIBRARY to point
to your SDL2 library, and configure again. Similarly, if you see an
empty SDL2MAIN_LIBRARY, you should set this value as appropriate. These
values are used to generate the final SDL2_LIBRARIES variable and the
SDL2::Core and SDL2::Main targets, but when these values are unset,
SDL2_LIBRARIES, SDL2::Core and SDL2::Main does not get created.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2. l.e.galup 9-20-02
Created by Amine Ben Hassouna:
Adapt FindSDL.cmake to SDL2 (FindSDL2.cmake).
Add cache variables for more flexibility:
SDL2_PATH, SDL2_NO_DEFAULT_PATH (for details, see doc above).
Mark 'Threads' as a required dependency for non-OSX systems.
Modernize the FindSDL2.cmake module by creating specific targets:
SDL2::Core and SDL2::Main (for details, see doc above).
Original FindSDL.cmake module:
Modified by Eric Wing. Added code to assist with automated building
by using environmental variables and providing a more
controlled/consistent search behavior. Added new modifications to
recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
Also corrected the header search path to follow "proper" SDL
guidelines. Added a search for SDLmain which is needed by some
platforms. Added a search for threads which is needed by some
platforms. Added needed compile switches for MinGW.
On OSX, this will prefer the Framework version (if found) over others.
People will have to manually change the cache value of SDL2_LIBRARY to
override this selection or set the SDL2_PATH variable or the CMake
environment CMAKE_INCLUDE_PATH to modify the search paths.
Note that the header path has changed from SDL/SDL.h to just SDL.h
This needed to change because "proper" SDL convention is #include
"SDL.h", not <SDL/SDL.h>. This is done for portability reasons
because not all systems place things in SDL/ (see FreeBSD).
#]=======================================================================]
# Define options for searching SDL2 Library in a custom path
set(SDL2_PATH "" CACHE STRING "Custom SDL2 Library path")
set(_SDL2_NO_DEFAULT_PATH OFF)
if(SDL2_PATH)
set(_SDL2_NO_DEFAULT_PATH ON)
endif()
set(SDL2_NO_DEFAULT_PATH ${_SDL2_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2 Library in default path")
unset(_SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD)
if(SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2 include directory
find_path(SDL2_INCLUDE_DIR SDL.h
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
include/SDL2 include
PATHS ${SDL2_PATH}
DOC "Where the SDL2 headers can be found"
)
set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR}")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# SDL-2.0 is the name used by FreeBSD ports...
# don't confuse it for the version number.
find_library(SDL2_LIBRARY
NAMES SDL2 SDL-2.0
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_PATH}
DOC "Where the SDL2 Library can be found"
)
set(SDL2_LIBRARIES "${SDL2_LIBRARY}")
if(NOT SDL2_BUILDING_LIBRARY)
if(NOT SDL2_INCLUDE_DIR MATCHES ".framework")
# Non-OS X framework versions expect you to also dynamically link to
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDL2main for compatibility even though they don't
# necessarily need it.
if(SDL2_PATH)
set(SDL2MAIN_LIBRARY_PATHS "${SDL2_PATH}")
endif()
if(NOT SDL2_NO_DEFAULT_PATH)
set(SDL2MAIN_LIBRARY_PATHS
/sw
/opt/local
/opt/csw
/opt
"${SDL2MAIN_LIBRARY_PATHS}"
)
endif()
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2MAIN_LIBRARY_PATHS}
DOC "Where the SDL2main library can be found"
)
unset(SDL2MAIN_LIBRARY_PATHS)
endif()
endif()
# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
if(NOT APPLE)
find_package(Threads QUIET)
if(NOT Threads_FOUND AND NOT WIN32)
set(SDL2_THREADS_NOT_FOUND "Could NOT find Threads (Threads is required by SDL2).")
if(SDL2_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_THREADS_NOT_FOUND})
else()
if(NOT SDL2_FIND_QUIETLY)
message(STATUS ${SDL2_THREADS_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_THREADS_NOT_FOUND)
endif()
endif()
# MinGW needs an additional link flag, -mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -mwindows
if(MINGW)
set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
endif()
if(SDL2_LIBRARY)
# For SDL2main
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
list(FIND SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
if(_SDL2_MAIN_INDEX EQUAL -1)
set(SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARIES})
endif()
unset(_SDL2_MAIN_INDEX)
endif()
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
if(APPLE)
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} "-framework Cocoa")
endif()
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
if(NOT APPLE)
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
endif()
# For MinGW library
if(MINGW)
set(SDL2_LIBRARIES ${MINGW32_LIBRARY} ${SDL2_LIBRARIES})
endif()
endif()
# Read SDL2 version
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}")
set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH})
unset(SDL2_VERSION_MAJOR_LINE)
unset(SDL2_VERSION_MINOR_LINE)
unset(SDL2_VERSION_PATCH_LINE)
unset(SDL2_VERSION_MAJOR)
unset(SDL2_VERSION_MINOR)
unset(SDL2_VERSION_PATCH)
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
if(SDL2MAIN_LIBRARY)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2main
REQUIRED_VARS SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
endif()
mark_as_advanced(SDL2_PATH
SDL2_NO_DEFAULT_PATH
SDL2_LIBRARY
SDL2MAIN_LIBRARY
SDL2_INCLUDE_DIR
SDL2_BUILDING_LIBRARY)
# SDL2:: targets (SDL2::Core and SDL2::Main)
if(SDL2_FOUND)
# SDL2::Core target
if(SDL2_LIBRARY AND NOT TARGET SDL2::Core)
add_library(SDL2::Core UNKNOWN IMPORTED)
set_target_properties(SDL2::Core PROPERTIES
IMPORTED_LOCATION "${SDL2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}")
if(APPLE)
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_OPTIONS "-framework Cocoa")
else()
# For threads, as mentioned Apple doesn't need this.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_LIBRARIES Threads::Threads)
endif()
endif()
# SDL2::Main target
# Applications should link to SDL2::Main instead of SDL2::Core
# For more details, please see above.
if(NOT SDL2_BUILDING_LIBRARY AND NOT TARGET SDL2::Main)
if(SDL2_INCLUDE_DIR MATCHES ".framework" OR NOT SDL2MAIN_LIBRARY)
add_library(SDL2::Main INTERFACE IMPORTED)
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
elseif(SDL2MAIN_LIBRARY)
# MinGW requires that the mingw32 library is specified before the
# libSDL2main.a static library when linking.
# The SDL2::MainInternal target is used internally to make sure that
# CMake respects this condition.
add_library(SDL2::MainInternal UNKNOWN IMPORTED)
set_property(TARGET SDL2::MainInternal PROPERTY
IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}")
set_property(TARGET SDL2::MainInternal PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
add_library(SDL2::Main INTERFACE IMPORTED)
if(MINGW)
# MinGW needs an additional link flag '-mwindows' and link to mingw32
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES "mingw32" "-mwindows")
endif()
set_property(TARGET SDL2::Main APPEND PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::MainInternal)
endif()
endif()
endif()

View File

@@ -0,0 +1,31 @@
# - 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

@@ -0,0 +1,32 @@
# - Try to find UDEV
# Once done, this will define
#
# UDEV_FOUND - system has UDEV
# UDEV_INCLUDE_DIRS - the UDEV include directories
# UDEV_LIBRARIES - the UDEV library
find_package(PkgConfig)
pkg_check_modules(UDEV_PKGCONF libudev)
find_path(UDEV_INCLUDE_DIRS
NAMES libudev.h
PATHS ${UDEV_PKGCONF_INCLUDE_DIRS}
)
find_library(UDEV_LIBRARIES
NAMES udev
PATHS ${UDEV_PKGCONF_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(UDEV DEFAULT_MSG UDEV_INCLUDE_DIRS UDEV_LIBRARIES)
mark_as_advanced(UDEV_INCLUDE_DIRS UDEV_LIBRARIES)
if(UDEV_FOUND AND NOT (TARGET UDEV::UDEV))
add_library (UDEV::UDEV UNKNOWN IMPORTED)
set_target_properties(UDEV::UDEV
PROPERTIES
IMPORTED_LOCATION ${UDEV_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES ${UDEV_INCLUDE_DIRS})
endif()

166
CMakeModules/FindWebP.cmake Normal file
View File

@@ -0,0 +1,166 @@
# Copyright (C) 2020 Sony Interactive Entertainment Inc.
# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
# Copyright (C) 2013 Igalia S.L.
#
# 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.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``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 COPYRIGHT HOLDER OR ITS
# CONTRIBUTORS 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:
FindWebP
--------------
Find WebP headers and libraries.
Imported Targets
^^^^^^^^^^^^^^^^
``WebP::libwebp``
The WebP library, if found.
``WebP::demux``
The WebP demux library, if found.
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables in your project:
``WebP_FOUND``
true if (the requested version of) WebP is available.
``WebP_VERSION``
the version of WebP.
``WebP_LIBRARIES``
the libraries to link against to use WebP.
``WebP_INCLUDE_DIRS``
where to find the WebP headers.
``WebP_COMPILE_OPTIONS``
this should be passed to target_compile_options(), if the
target is not used for linking
#]=======================================================================]
find_package(PkgConfig QUIET)
pkg_check_modules(PC_WEBP QUIET libwebp)
set(WebP_COMPILE_OPTIONS ${PC_WEBP_CFLAGS_OTHER})
set(WebP_VERSION ${PC_WEBP_CFLAGS_VERSION})
find_path(WebP_INCLUDE_DIR
NAMES webp/decode.h
HINTS ${PC_WEBP_INCLUDEDIR} ${PC_WEBP_INCLUDE_DIRS}
)
find_library(WebP_LIBRARY
NAMES ${WebP_NAMES} webp libwebp
HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
)
# There's nothing in the WebP headers that could be used to detect the exact
# WebP version being used so don't attempt to do so. A version can only be found
# through pkg-config
if ("${WebP_FIND_VERSION}" VERSION_GREATER "${WebP_VERSION}")
if (WebP_VERSION)
message(FATAL_ERROR "Required version (" ${WebP_FIND_VERSION} ") is higher than found version (" ${WebP_VERSION} ")")
else ()
message(WARNING "Cannot determine WebP version without pkg-config")
endif ()
endif ()
# Find components
if (WebP_INCLUDE_DIR AND WebP_LIBRARY)
set(_WebP_REQUIRED_LIBS_FOUND ON)
set(WebP_LIBS_FOUND "WebP (required): ${WebP_LIBRARY}")
else ()
set(_WebP_REQUIRED_LIBS_FOUND OFF)
set(WebP_LIBS_NOT_FOUND "WebP (required)")
endif ()
if ("demux" IN_LIST WebP_FIND_COMPONENTS)
find_library(WebP_DEMUX_LIBRARY
NAMES ${WebP_DEMUX_NAMES} webpdemux libwebpdemux
HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
)
if (WebP_DEMUX_LIBRARY)
if (WebP_FIND_REQUIRED_demux)
list(APPEND WebP_LIBS_FOUND "demux (required): ${WebP_DEMUX_LIBRARY}")
else ()
list(APPEND WebP_LIBS_FOUND "demux (optional): ${WebP_DEMUX_LIBRARY}")
endif ()
else ()
if (WebP_FIND_REQUIRED_demux)
set(_WebP_REQUIRED_LIBS_FOUND OFF)
list(APPEND WebP_LIBS_NOT_FOUND "demux (required)")
else ()
list(APPEND WebP_LIBS_NOT_FOUND "demux (optional)")
endif ()
endif ()
endif ()
if (NOT WebP_FIND_QUIETLY)
if (WebP_LIBS_FOUND)
message(STATUS "Found the following WebP libraries:")
foreach (found ${WebP_LIBS_FOUND})
message(STATUS " ${found}")
endforeach ()
endif ()
if (WebP_LIBS_NOT_FOUND)
message(STATUS "The following WebP libraries were not found:")
foreach (found ${WebP_LIBS_NOT_FOUND})
message(STATUS " ${found}")
endforeach ()
endif ()
endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(WebP
FOUND_VAR WebP_FOUND
REQUIRED_VARS WebP_INCLUDE_DIR WebP_LIBRARY _WebP_REQUIRED_LIBS_FOUND
VERSION_VAR WebP_VERSION
)
if (WebP_LIBRARY AND NOT TARGET WebP::libwebp)
add_library(WebP::libwebp UNKNOWN IMPORTED GLOBAL)
set_target_properties(WebP::libwebp PROPERTIES
IMPORTED_LOCATION "${WebP_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${WebP_COMPILE_OPTIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR}"
)
endif ()
if (WebP_DEMUX_LIBRARY AND NOT TARGET WebP::demux)
add_library(WebP::demux UNKNOWN IMPORTED GLOBAL)
set_target_properties(WebP::demux PROPERTIES
IMPORTED_LOCATION "${WebP_DEMUX_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${WebP_COMPILE_OPTIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR}"
)
endif ()
mark_as_advanced(
WebP_INCLUDE_DIR
WebP_LIBRARY
WebP_DEMUX_LIBRARY
)
if (WebP_FOUND)
set(WebP_LIBRARIES ${WebP_LIBRARY} ${WebP_DEMUX_LIBRARY})
set(WebP_INCLUDE_DIRS ${WebP_INCLUDE_DIR})
endif ()

View File

@@ -0,0 +1,45 @@
# 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()

View File

@@ -1,14 +0,0 @@
# Source: https://github.com/stenzek/duckstation/issues/626#issuecomment-660718306
# Target system
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR aarch64)
SET(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_CROSSCOMPILING TRUE)
# Cross compiler
SET(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu)
set(THREADS_PTHREAD_ARG "0" CACHE STRING "Result from TRY_RUN" FORCE)

View File

@@ -1,14 +0,0 @@
# Source: https://github.com/stenzek/duckstation/issues/626#issuecomment-660718306
# Target system
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR armv7l)
SET(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_CROSSCOMPILING TRUE)
# Cross compiler
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_LIBRARY_ARCHITECTURE arm-linux-gnueabihf)
set(THREADS_PTHREAD_ARG "0" CACHE STRING "Result from TRY_RUN" FORCE)

View File

@@ -1,28 +0,0 @@
{
"configurations": [
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": []
},
{
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"buildRoot": "${projectDir}\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
}
]
}

View File

@@ -1,12 +1,16 @@
# DuckStation Contributors List
The following people have contributed to the project in some way, and are credited here.
## Code Contributions
- Connor McLaughlin - @stenzek
- @ggrtk
- @CookiePLMonster
- @PookaMustard
## Translators
- Anderson Cardoso - Portuguese (Br)
- @bajolzas - Portuguese (Pt)
- posix - @Richard-L, blexx - German
@@ -19,44 +23,68 @@ The following people have contributed to the project in some way, and are credit
- @DenSinH - Dutch
- @BenjaminSiskoo - French
- mikakunin - Japanese
- Zuzia, Seba - Polish
- Zuzia, Seba, @CookiePLMonster - Polish
- Foxtrot Uniform - Turkish
## UI Contributions
- @kamfretoz
- @maxihplay (MBee)
## Cheat Database
- Pugsy
- Unicorngoulash
## Game Compatibility Database
- @Zet-sensei
- @DarkFrost89
- @macattack222
- @HeroponRikiBestest
- @picili
- @andercard0
- @Abbanon
- @Shideravan
- @mirrornoir
- @pryon
- @MojoJojoDojo
- @heckez-sys
- @Damaniel
- @RaydenX93
- @gp2man
- @Richard-L
- @pan2marumie3
- @CookiePLMonster
- @LoStraniero91
- @JFD62780
- @lmarciano9
- @Facepalm38
- @Alien-Grey
- @dmlipat
- @Krusher97
- @AngryScotsmanGaming
- @Zet-sensei
- @DarkFrost89
- @macattack222
- @HeroponRikiBestest
- @picili
- @andercard0
- @Abbanon
- @Shideravan
- @mirrornoir
- @pryon
- @MojoJojoDojo
- @heckez-sys
- @Damaniel
- @RaydenX93
- @gp2man
- @Richard-L
- @pan2marumie3
- @CookiePLMonster
- @LoStraniero91
- @JFD62780
- @lmarciano9
- @Facepalm38
- @Alien-Grey
- @dmlipat
- @Krusher97
- @AngryScotsmanGaming
- @PookaMustard
- @waspennator
- @Serpentario
- @QuasarDGames
- @egamboau
- @goldstinger
- @DankRank
- @Kesnos-ho
- @Facepalm38
- @ZL1LAC
- @cs50-account
- @nxrighthere
- @Overload86
- @landcaster
- @Sekai9
## Special Thanks
The following people did not directly contribute to the emulator, but it would not be in the state if not for them.
- nocash (https://problemkaputt.de/) for fantastic documentation.
- @PeterLemon for great simple test programs.
- amidog for CPU, GTE and GPU test programs.
- Jakub Czekański - @JaCzekanski - for collaboration on hardware tests.
The following people did not directly contribute to the emulator, but it would not be in the state if not for them.
- nocash (https://problemkaputt.de/) for fantastic documentation.
- @PeterLemon for great simple test programs.
- amidog for CPU, GTE and GPU test programs.
- Jakub Czekański - @JaCzekanski - for collaboration on hardware tests.

53
NEWS.md
View File

@@ -1,53 +0,0 @@
- 2021/01/24: Runahead added - work around input lag in some games by running frames ahead of time and backtracking on input. DuckStation's implementation works with upscaling and the hardware renderers, but you still require a powerful computer for higher frame counts.
- 2021/01/24: Rewind added - you can now "smooth rewind" (but not for long), or "skip rewind" (for much long) while playing.
- 2021/01/10: Option to sync to host refresh rate added (enabled by default). This will give the smoothest animation possible with zero duped frames, at the cost of running the game <1% faster. Users with variable refresh rate (GSync/FreeSync) displays will want to disable the option.
- 2021/01/10: Audio resampling added when fast forwarding to fixed speeds. Instead of crackling audio, you'll now get pitch altered audio.
- 2021/01/03: Per game settings and game properties added to Android version.
- 2020/12/30: Box and Adaptive downsampling modes added. Adaptive downsampling will smooth 2D backgrounds but attempt to preserve 3D geometry via pixel similarity (only supported in D3D11/Vulkan). Box is a simple average filter which will downsample to native resolution.
- 2020/12/30: Hotkey binding added to Android version. You can now bind hotkeys such as fast forward, save state, etc to controller buttons. The ability to bind multi-button combinations will be added in the future.
- 2020/12/29: Controller mapping/binding added for Android version. By default mappings will be clear and you will have to set them, you can do this from `Settings -> Controllers -> Controller Mapping`. Profiles can be saved and loaded as well.
- 2020/12/29: Dark theme added for Android. By default it will follow your system theme (Android 10+), but can be overridden in settings.
- 2020/12/29: DirectInput/DInput controller interface added for Windows. You can use this if you are having difficulties with SDL. Vibration is not supported yet.
- 2020/12/25: Partial texture replacement support added. For now, this is only applicable to a small number of games which upload backgrounds to video RAM every frame. Dumping and replacement options are available in `Advanced Settings`.
- 2020/12/22: PGXP Depth Buffer enhancement added. This enhancement can eliminate "polygon fighting" in games, by giving the PS1 the depth buffer it never had. Compatibility is rather low at the moment, but for the games it does work in, it works very well. The depth buffer will be made available to postprocessing shaders in the future, enabling effects such as SSAO.
- 2020/12/21: DuckStation now has two releases - Development and Preview. New features will appear in Preview first, and make their way to the Development release a few days later. To switch to preview, update to the latest development build (older builds will update to development), change the channel from `latest` to `preview` in general settings, and click `Check for Updates`.
- 2020/12/16: Integrated CPU debugger added in Qt frontend.
- 2020/12/13: Button layout for the touchscreen controller in the Android version can now be customized.
- 2020/12/10: Translation support added for Android version. Currently Brazillian Portuguese, Italian, and Dutch are available.
- 2020/11/27: Cover support added for game list in Android version. Procedure is the same as the desktop version, except you should place cover images in `<storage>/duckstation/covers` (see [Adding Game Covers](https://github.com/stenzek/duckstation/wiki/Adding-Game-Covers)).
- 2020/11/27: Disc database is shipped with desktop and Android versions courtesy of redump.org. This will provide titles for games on Android, where it was not possible previously.
- 2020/11/27: Compatibility databases added to libretro core - broken enhancements will be automatically disabled. You can turn this off by disabling "Apply Compatibility Settings" in the core options.
- 2020/11/27: SDL game controller database is included with desktop versions courtesy of https://github.com/gabomdq/SDL_GameControllerDB.
- 2020/11/21: OpenGL ES 2.0 host display support added. You cannot use the hardware renderer with GLES2, it still requires GLES3, but GLES2 GPUs can now use the software renderer.
- 2020/11/21: Threaded renderer for software renderer added. Can result in a significant speed boost depending on the game.
- 2020/11/21: AArch32/armv7 recompiler added. Android and Linux builds will follow after further testing, but for now you can build it yourself.
- 2020/11/18: Window size (resize window to Nx content resolution) added to Qt and SDL frontends.
- 2020/11/10: Widescreen hack now renders in the display aspect ratio instead of always 16:9.
- 2020/11/01: Exclusive fullscreen option added for Windows D3D11 users. Enjoy buttery smooth PAL games.
- 2020/10/31: Multisample antialiasing added as an enhancement.
- 2020/10/30: Option to use analog stick as d-pad for analog controller added.
- 2020/10/20: New cheat manager with memory scanning added. More features will be added over time.
- 2020/10/05: CD-ROM read speedup enhancement added.
- 2020/09/30: CPU overclocking is now supported. Use with caution as it will break games and increase system requirements. It can be set globally or per-game.
- 2020/09/25: Cheat support added for libretro core.
- 2020/09/23: Game covers added to Qt frontend (see [Adding Game Covers](https://github.com/stenzek/duckstation/wiki/Adding-Game-Covers)).
- 2020/09/19: Memory card importer/editor added to Qt frontend.
- 2020/09/13: Support for chaining post processing shaders added.
- 2020/09/12: Additional texture filtering options added.
- 2020/09/09: Basic cheat support added. Not all instructions/commands are supported yet.
- 2020/09/01: Many additional user settings available, including memory cards and enhancements. Now you can set these per-game.
- 2020/08/25: Automated builds for macOS now available.
- 2020/08/22: XInput controller backend added.
- 2020/08/20: Per-game setting overrides added. Mostly for compatibility, but some options are customizable.
- 2020/08/19: CPU PGXP mode added. It is very slow and incompatible with the recompiler, only use for games which need it.
- 2020/08/15: Playlist support/single memcard for multi-disc games in Qt frontend added.
- 2020/08/07: Automatic updater for standalone Windows builds.
- 2020/08/01: Initial PGXP (geometry/perspective correction) support.
- 2020/07/28: Qt frontend supports displaying interface in multiple languages.
- 2020/07/23: m3u multi-disc support for libretro core.
- 2020/07/22: Support multiple bindings for each controller button/axis.
- 2020/07/18: Widescreen hack enhancement added.
- 2020/07/04: Vulkan renderer now available in libretro core.
- 2020/07/02: Now available as a libretro core.
- 2020/07/01: Lightgun support with custom crosshairs.
- 2020/06/19: Vulkan hardware renderer added.

295
README.md
View File

@@ -1,44 +1,19 @@
# DuckStation - PlayStation 1, aka. PSX Emulator
[Latest News](#latest-news) | [Features](#features) | [Screenshots](#screenshots) | [Downloading and Running](#downloading-and-running) | [Building](#building) | [Disclaimers](#disclaimers)
[Features](#features) | [Downloading and Running](#downloading-and-running) | [Building](#building) | [Disclaimers](#disclaimers)
**Discord Server:** https://discord.gg/Buktv3t
**Latest Builds for Windows 10/11 (x64/ARM64), Linux (AppImage/Flatpak), and macOS (11.0+ Universal):** https://github.com/stenzek/duckstation/releases/tag/latest
**Latest Windows, Linux (AppImage), Mac, Android** https://github.com/stenzek/duckstation/releases/tag/latest
**Game Compatibility List:** https://docs.google.com/spreadsheets/d/e/2PACX-1vRE0jjiK_aldpICoy5kVQlpk2f81Vo6P4p9vfg4d7YoTOoDlH4PQHoXjTD2F7SdN8SSBLoEAItaIqQo/pubhtml
**Available on Google Play:** https://play.google.com/store/apps/details?id=com.github.stenzek.duckstation&hl=en_AU&gl=US
**Game Compatibility List:** https://docs.google.com/spreadsheets/d/1H66MxViRjjE5f8hOl5RQmF5woS1murio2dsLn14kEqo/edit?usp=sharing
**Wiki:** https://www.duckstation.org/wiki/
**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.
## Latest News
Older entries are available at https://github.com/stenzek/duckstation/blob/master/NEWS.md
- 2021/01/31: "Fullscreen UI" added, aka "Big Duck/TV Mode". This interface is fully navigatible with a controller. Currently it's limited to the NoGUI frontend, but it will be available directly in the Qt frontend in the near future, with more features being added (e.g. game grid) as well.
- 2021/01/24: Runahead added - work around input lag in some games by running frames ahead of time and backtracking on input. DuckStation's implementation works with upscaling and the hardware renderers, but you still require a powerful computer for higher frame counts.
- 2021/01/24: Rewind added - you can now "smooth rewind" (but not for long), or "skip rewind" (for much long) while playing.
- 2021/01/10: Option to sync to host refresh rate added (enabled by default). This will give the smoothest animation possible with zero duped frames, at the cost of running the game <1% faster. Users with variable refresh rate (GSync/FreeSync) displays will want to disable the option.
- 2021/01/10: Audio resampling added when fast forwarding to fixed speeds. Instead of crackling audio, you'll now get pitch altered audio.
- 2021/01/03: Per game settings and game properties added to Android version.
- 2020/12/30: Box and Adaptive downsampling modes added. Adaptive downsampling will smooth 2D backgrounds but attempt to preserve 3D geometry via pixel similarity (only supported in D3D11/Vulkan). Box is a simple average filter which will downsample to native resolution.
- 2020/12/30: Hotkey binding added to Android version. You can now bind hotkeys such as fast forward, save state, etc to controller buttons. The ability to bind multi-button combinations will be added in the future.
- 2020/12/29: Controller mapping/binding added for Android version. By default mappings will be clear and you will have to set them, you can do this from `Settings -> Controllers -> Controller Mapping`. Profiles can be saved and loaded as well.
- 2020/12/29: Dark theme added for Android. By default it will follow your system theme (Android 10+), but can be overridden in settings.
- 2020/12/29: DirectInput/DInput controller interface added for Windows. You can use this if you are having difficulties with SDL. Vibration is not supported yet.
- 2020/12/25: Partial texture replacement support added. For now, this is only applicable to a small number of games which upload backgrounds to video RAM every frame. Dumping and replacement options are available in `Advanced Settings`.
- 2020/12/22: PGXP Depth Buffer enhancement added. This enhancement can eliminate "polygon fighting" in games, by giving the PS1 the depth buffer it never had. Compatibility is rather low at the moment, but for the games it does work in, it works very well. The depth buffer will be made available to postprocessing shaders in the future, enabling effects such as SSAO.
- 2020/12/21: DuckStation now has two releases - Development and Preview. New features will appear in Preview first, and make their way to the Development release a few days later. To switch to preview, update to the latest development build (older builds will update to development), change the channel from `latest` to `preview` in general settings, and click `Check for Updates`.
- 2020/12/16: Integrated CPU debugger added in Qt frontend.
- 2020/12/13: Button layout for the touchscreen controller in the Android version can now be customized.
- 2020/12/10: Translation support added for Android version. Currently Brazillian Portuguese, Italian, and Dutch are available.
## Features
DuckStation features a fully-featured frontend built using Qt, as well as a fullscreen/TV UI based on Dear ImGui. An Android version has been started, but is not yet feature complete.
DuckStation features a fully-featured frontend built using Qt, as well as a fullscreen/TV UI based on Dear ImGui.
<p align="center">
<img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/main-qt.png" alt="Main Window Screenshot" />
@@ -47,110 +22,106 @@ DuckStation features a fully-featured frontend built using Qt, as well as a full
Other features include:
- CPU Recompiler/JIT (x86-64, armv7/AArch32 and AArch64)
- Hardware (D3D11, OpenGL, Vulkan) and software rendering
- Upscaling, texture filtering, and true colour (24-bit) in hardware renderers
- PGXP for geometry precision, texture correction, and depth buffer emulation
- Adaptive downsampling filter
- Post processing shader chains
- "Fast boot" for skipping BIOS splash/intro
- Save state support
- Windows, Linux, **highly experimental** macOS support
- Supports bin/cue images, raw bin/img files, and MAME CHD formats.
- Direct booting of homebrew executables
- Direct loading of Portable Sound Format (psf) files
- Digital and analog controllers for input (rumble is forwarded to host)
- Namco GunCon lightgun support (simulated with mouse)
- NeGcon support
- Qt and NoGUI frontends for desktop
- Automatic updates for Windows builds
- Automatic content scanning - game titles/regions are provided by redump.org
- Optional automatic switching of memory cards for each game
- Supports loading cheats from libretro or PCSXR format lists
- Memory card editor and save importer
- Emulated CPU overclocking
- Integrated and remote debugging
- CPU Recompiler/JIT (x86-64, armv7/AArch32, AArch64, RISC-V/RV64).
- Hardware (D3D11, D3D12, OpenGL, Vulkan, Metal) and software rendering.
- Upscaling, texture filtering, and true colour (24-bit) in hardware renderers.
- PGXP for geometry precision, texture correction, and depth buffer emulation.
- Adaptive downsampling filter.
- Post processing shader chains (GLSL and experimental Reshade FX).
- "Fast boot" for skipping BIOS splash/intro.
- Save state support.
- Windows, Linux, macOS support.
- Supports bin/cue images, raw bin/img files, MAME CHD, single-track ECM, MDS/MDF, and unencrypted PBP formats.
- Direct booting of homebrew executables.
- Direct loading of Portable Sound Format (psf) files.
- Digital and analog controllers for input (rumble is forwarded to host).
- Namco GunCon lightgun support (simulated with mouse).
- NeGcon support.
- Qt and "Big Picture" UI.
- Automatic updates with preview and latest channels.
- Automatic content scanning - game titles/hashes are provided by redump.org.
- Optional automatic switching of memory cards for each game.
- Supports loading cheats from existing lists.
- Memory card editor and save importer.
- Emulated CPU overclocking.
- Integrated and remote debugging.
- Multitap controllers (up to 8 devices).
- RetroAchievements.
- Automatic loading/applying of PPF patches.
## System Requirements
- A CPU faster than a potato. But it needs to be x86_64, AArch32/armv7, or AArch64/ARMv8, otherwise you won't get a recompiler and it'll be slow.
- For the hardware renderers, a GPU capable of OpenGL 3.1/OpenGL ES 3.0/Direct3D 11 Feature Level 10.0 (or Vulkan 1.0) and above. So, basically anything made in the last 10 years or so.
- SDL, XInput or DInput compatible game controller (e.g. XB360/XBOne). DualShock 3 users on Windows will need to install the official DualShock 3 drivers included as part of PlayStation Now.
- A CPU faster than a potato. But it needs to be x86_64, 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.
- 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, x86_64 Linux x86_64 (in AppImage format), and Android ARMv8/AArch64 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.
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.
### Windows
**Windows 10 is the only version of Windows supported by the developer.** Windows 7/8 may work, but is not supported. I am aware some users are still using Windows 7, but it is no longer supported by Microsoft and too much effort to get running on modern hardware. Game bugs are unlikely to be affected by the operating system, however performance issues should be verified on Windows 10 before reporting.
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.
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.
Once downloaded and extracted, you can launch the emulator with `duckstation-qt-x64-ReleaseLTCG.exe`.
To set up:
1. Either configure the path to a BIOS image in the settings, or copy one or more PlayStation BIOS images to the bios/ subdirectory. On Windows, by default this will be located in `C:\Users\YOUR_USERNAME\Documents\DuckStation\bios`. If you don't want to use the Documents directory to save the BIOS/memory cards/etc, you can use portable mode. See [User directory](#user-directories).
2. If using the Qt frontend, add the directories containing your disc images by clicking `Settings->Add Game Directory`.
2. Select a game from the list, or open a disc image file and enjoy.
Once downloaded and extracted, you can launch the emulator with `duckstation-qt-x64-ReleaseLTCG.exe`. Follow the Setup Wizard to get started.
**If you get an error about `vcruntime140_1.dll` being missing, you will need to update your Visual C++ runtime.** You can do that from this page: https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads. Specifically, you want the x64 runtime, which can be downloaded from https://aka.ms/vs/16/release/vc_redist.x64.exe.
The Qt frontend includes an automatic update checker. Builds downloaded after 2020/08/07 will automatically check for updates each time the emulator starts, this can be disabled in Settings. Alternatively, you can force an update check by clicking `Help->Check for Updates`.
**If you get an error about `vcruntime140_1.dll` being missing, you will need to update your Visual C++ runtime.** You can do that from this page: https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads. Specifically, you want the x64 runtime, which can be downloaded from https://aka.ms/vs/17/release/vc_redist.x64.exe.
### Linux
Prebuilt binaries for 64-bit Linux distros are available for download in the AppImage format. However, these binaries may be incompatible with older Linux distros (e.g. Ubuntu distros earlier than 18.04.4 LTS) due to older distros not providing newer versions of the C/C++ standard libraries required by the AppImage binaries.
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.
**Linux users are encouraged to build from source when possible and optionally create their own AppImages for features such as desktop integration if desired.**
The release on [Flathub](https://flathub.org/apps/org.duckstation.DuckStation) is official, and synchronized with the latest rolling/stable release on GitHub.
To download:
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download either `duckstation-qt-x64.AppImage` or `duckstation-nogui-x64.AppImage` for your desired frontend.
You **should not** install DuckStation from unofficial repositories such as the AUR, they are **known to be broken**.
#### 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.
- Optionally use a program such as [appimaged](https://github.com/AppImage/appimaged) or [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher) for desktop integration. [AppImageUpdate](https://github.com/AppImage/AppImageUpdate) can be used alongside appimaged to easily update your DuckStation AppImage.
#### Flatpak
- Go to https://github.com/stenzek/duckstation/releases/tag/latest, and download `duckstation-x64.flatpak`.
- Run `flatpak install ./duckstation-x64.flatpak`.
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).
MacOS Big Sir (11.0) 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 the Mac build. This is a zip archive containing the prebuilt binary.
- Alternatively, direct download link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-mac-release.zip
- Extract the zip archive. If you're using Safari, apparently this happens automatically. This will give you DuckStation.app.
- Right click DuckStation.app, and click Open. As the package is not signed (Mac certificates are expensive), you must do this the first time you open it. Subsequent runs can be done by double-clicking.
macOS support is considered experimental and not actively supported by the developer; the builds are provided here as a courtesy. Please feel free to submit issues, but it may be some time before
they are investigated.
**macOS builds do not support automatic updates yet.** If there is sufficient demand, this may be something I will consider.
- 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.
### Android
A prebuilt APK is now available for Android. However, please keep in mind that the Android version does not contain all features present in the desktop version yet. You will need a device with armv7 (32-bit ARM) or AArch64 (64-bit ARM). 64-bit is preferred, the requirements are higher for 32-bit, you'll probably want at least a 1.5GHz CPU.
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 link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-android.apk
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.
To use:
- Install and run the app for the first time.
- This will create `/sdcard/duckstation`. Drop your BIOS files in `/sdcard/duckstation/bios`.
- Add game directories by hitting the `+` icon and selecting a directory.
- Map your controller buttons and axes by going into `Controller Mapping` under `Controllers` in `Settings`.
- Tap a game to start.
1. Install and run the app for the first time.
2. Follow the setup wizard.
### Title Information
PlayStation game discs do not contain title information. For game titles, we use the redump.org database cross-referenced with the game's executable code. A version of the database is included with the DuckStation download, but you can replace this with a different database by saving it as `cache/redump.dat` in your user directory, or updated by going into the `Game List Settings` in the Qt Frontend, and clicking `Update Redump Database`.
### Region detection and BIOS images
By default, DuckStation will emulate the region check present in the CD-ROM controller of the console. This means that when the region of the console does not match the disc, it will refuse to boot, giving a "Please insert PlayStation CD-ROM" message. DuckStation supports automatic detection disc regions, and if you set the console region to auto-detect as well, this should never be a problem.
If you wish to use auto-detection, you do not need to change the BIOS path each time you switch regions. Simply place the BIOS images for the other regions in the **same directory** as the configured image. This will probably be in the `bios/` subdirectory. Then set the console region to "Auto-Detect", and everything should work fine. The console/log will tell you if you are missing the image for the disc's region.
Some users have been confused by the "BIOS Path" option, the reason it is a path and not a directory is so that an unknown BIOS revision can be used/tested.
Alternatively, the region checking can be disabled in the console options tab. This is the only way to play unlicensed games or homebrew which does not supply a correct region string on the disc, aside from using fastboot which skips the check entirely.
Mismatching the disc and console regions with the check disabled is supported, but may break games if they are patching the BIOS and expecting specific content.
If you have an external controller, you will need to map the buttons and sticks in settings.
### LibCrypt protection and SBI files
@@ -160,59 +131,57 @@ For these games, make sure that the CD image and its corresponding SBI (.sbi) fi
For example, if your disc image was named `Spyro3.cue`, you would place the SBI file in the same directory, and name it `Spyro3.sbi`.
CHD images with built-in subchannel information are also supported.
## Building
### Windows
Requirements:
- Visual Studio 2019
1. Clone the respository with submodules (`git clone --recursive https://github.com/stenzek/duckstation.git -b dev`).
2. Open the Visual Studio solution `duckstation.sln` in the root, or "Open Folder" for cmake build.
3. Build solution.
4. Binaries are located in `bin/x64`.
5. Run `duckstation-qt-x64-Release.exe` or whichever config you used.
- Visual Studio 2022
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`.
3. Open the Visual Studio solution `duckstation.sln` in the root, or "Open Folder" for cmake build.
4. Build solution.
5. Binaries are located in `bin/x64`.
6. Run `duckstation-qt-x64-Release.exe` or whichever config you used.
### Linux
Requirements (Debian/Ubuntu package names):
- CMake (`cmake`)
- SDL2 (`libsdl2-dev`)
- pkgconfig (`pkg-config`)
- Qt 5 (`qtbase5-dev`, `qtbase5-private-dev`, `qtbase5-dev-tools`, `qttools5-dev`)
- libevdev (`libevdev-dev`)
- git (`git`) (Note: needed to clone the repository and at build time)
- Optional for faster building: Ninja (`ninja-build`)
- Optional for framebuffer output: DRM/GBM (`libgbm-dev`, `libdrm-dev`)
1. Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows (`git clone https://github.com/stenzek/duckstation.git -b dev`).
2. Create a build directory, either in-tree or elsewhere.
3. Run cmake to configure the build system. Assuming a build subdirectory of `build-release`, `cd build-release && cmake -DCMAKE_BUILD_TYPE=Release -GNinja ..`.
4. Compile the source code. For the example above, run `ninja`.
5. Run the binary, located in the build directory under `bin/duckstation-qt`.
#### Required Dependencies
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
```
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
```
#### Building
1. Clone the repository: `git clone https://github.com/stenzek/duckstation.git`, `cd duckstation`.
2. Build dependencies. You can save these outside of the tree if you like. This will take a while. `scripts/build-dependencies-linux.sh deps`.
3. Run CMake to configure the build system. Assuming a build subdirectory of `build-release`, run `cmake -B build-release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_PREFIX_PATH="$PWD/deps" -G Ninja`. If you want a release (optimized) build, include `-DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON`.
4. Compile the source code. For the example above, run `ninja -C build-release`
5. Run the binary, located in the build directory under `./build-release/bin/duckstation-qt`.
### macOS
**NOTE:** macOS is highly experimental and not tested by the developer. Use at your own risk, things may be horribly broken.
Requirements:
- CMake (installed by default? otherwise, `brew install cmake`)
- SDL2 (`brew install sdl2`)
- Qt 5 (`brew install qt5`)
- CMake
- Xcode
1. Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows (`git clone https://github.com/stenzek/duckstation.git -b dev`).
2. Clone the mac externals repository (for MoltenVK): `git clone https://github.com/stenzek/duckstation-ext-mac.git dep/mac`.
2. Create a build directory, either in-tree or elsewhere, e.g. `mkdir build-release`, `cd build-release`.
3. Run cmake to configure the build system: `cmake -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5 ..`. You may need to tweak `Qt5_DIR` depending on your system.
4. Compile the source code: `make`. Use `make -jN` where `N` is the number of CPU cores in your system for a faster build.
1. Clone the repository: `git clone https://github.com/stenzek/duckstation.git`.
2. Build the dependencies. This will take a while. `scripts/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"`.
4. Compile the source code: `cmake --build build-release --parallel`.
5. Run the binary, located in the build directory under `bin/DuckStation.app`.
### Android
Requirements:
- Android Studio with the NDK and CMake installed
1. Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows.
2. Open the project in the `android` directory.
3. Select Build -> Build Bundle(s) / APKs(s) -> Build APK(s).
4. Install APK on device, or use Run menu for attached device.
## User Directories
The "User Directory" is where you should place your BIOS images, where settings are saved to, and memory cards/save states are saved by default.
An optional [SDL game controller database file](#sdl-game-controller-database) can be also placed here.
@@ -232,7 +201,7 @@ in the same directory as the DuckStation executable.
## 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`.
To bind your input device, go to `Settings -> Controller Settings`. 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`. 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.
## 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.
@@ -241,44 +210,24 @@ If you are experiencing issues binding your controller with the SDL controller b
## Default bindings
Controller 1:
- **D-Pad:** W/A/S/D
- **Triangle/Square/Circle/Cross:** Numpad8/Numpad4/Numpad6/Numpad2
- **Left Stick:** W/A/S/D
- **Right Stick:** T/F/G/H
- **D-Pad:** Up/Left/Down/Right
- **Triangle/Square/Circle/Cross:** I/J/L/K
- **L1/R1:** Q/E
- **L2/R2:** 1/3
- **L3/R3:** 2/4
- **Start:** Enter
- **Select:** Backspace
Hotkeys:
- **Escape:** Power off console
- **ALT+ENTER:** Toggle fullscreen
- **Tab:** Temporarily disable speed limiter
- **Pause/Break:** Pause/resume emulation
- **Page Up/Down:** Increase/decrease resolution scale in hardware renderers
- **End:** Toggle software renderer
## Tests
- Passes amidog's CPU and GTE tests in both interpreter and recompiler modes, partial passing of CPX tests
## Screenshots
<p align="center">
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/monkey.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/monkey.jpg" alt="Monkey Hero" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/rrt4.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/rrt4.jpg" alt="Ridge Racer Type 4" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/tr2.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/tr2.jpg" alt="Tomb Raider 2" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/quake2.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/quake2.jpg" alt="Quake 2" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/croc.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/croc.jpg" alt="Croc" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/croc2.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/croc2.jpg" alt="Croc 2" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/ff7.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/ff7.jpg" alt="Final Fantasy 7" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/mm8.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/mm8.jpg" alt="Mega Man 8" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/ff8.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/ff8.jpg" alt="Final Fantasy 8 in Fullscreen UI" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/spyro.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/spyro.jpg" alt="Spyro in Fullscreen UI" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/tof.jpg"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/tof.jpg" alt="Threads of Fate in Fullscreen UI" width="400" /></a>
<a href="https://raw.githubusercontent.com/stenzek/duckstation/md-images/gamegrid.png"><img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/gamegrid.png" alt="Game Grid" width="400" /></a>
</p>
- **Escape:** Open Pause Menu
- **F11:** Toggle Fullscreen
- **Tab:** Temporarily Disable Speed Limiter
- **Space:** Pause/Resume Emulation
## Disclaimers
Icon by icons8: https://icons8.com/icon/74847/platforms.undefined.short-title
"PlayStation" and "PSX" are registered trademarks of Sony Interactive Entertainment Europe Limited. This project is not affiliated in any way with Sony Interactive Entertainment.

221
README.pt-br.md Normal file
View File

@@ -0,0 +1,221 @@
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
**Lista de Compatibilidade de Jogos:** https://docs.google.com/spreadsheets/d/1H66MxViRjjE5f8hOl5RQmF5woS1murio2dsLn14kEqo/edit
**Wiki:** https://www.duckstation.org/wiki/
DuckStation é um simulador/emulador do console Sony PlayStation(TM), focando na jogabilidade, velocidade e manutenção a longo prazo. O objetivo é ser o mais preciso possível, mantendo um desempenho adequado para dispositivos de baixo desempenho. Opções de "hack" não são recomendadas, a configuração padrão deve suportar todos os jogos jogáveis, com apenas algumas das melhorias tendo problemas de compatibilidade.
Uma imagem ROM do "BIOS" é necessária para iniciar o emulador e jogar os jogos. Você pode usar uma imagem de qualquer versão de hardware ou região, embora regiões de jogos e regiões de BIOS que não idênticas podem resultar em problemas de compatibilidade. A imagem ROM ou Jogo não é fornecida com o emulador por motivos legais; você deve obter do seu próprio console usando Caetla ou outros meios.
## Recursos
O DuckStation possui uma interface totalmente funcional construída usando Qt, bem como uma interface de tela cheia/TV baseada no Dear ImGui.
<p align="center">
<img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/main-qt.png" alt="Captura de Tela da Janela Principal" />
<img src="https://raw.githubusercontent.com/stenzek/duckstation/md-images/bigduck.png" alt="Captura de Tela da Interface de Tela Cheia" />
</p>
Outros recursos incluem:
- Recompilador de CPU/JIT (x86-64, armv7/AArch32 e AArch64).
- Renderização de hardware (D3D11, D3D12, OpenGL, Vulkan, Metal) e renderização de software.
- Ampliação, filtragem de textura e cor verdadeira (24 bits) nos renderizadores de hardware.
- PGXP para precisão de geometria, correção de textura e emulação de buffer de profundidade.
- Filtro de downsampling adaptativo.
- Cadeias de shaders de pós-processamento (GLSL e Reshade FX experimental).
- "Inicialização rápida" para pular a tela de abertura/intro do BIOS.
- Suporte a salvar estados.
- Suporte para Windows, Linux e macOS.
- Suporta imagens bin/cue, arquivos bin/img crus, MAME CHD, ECM de única faixa, MDS/MDF e formatos PBP não criptografados.
- Inicialização direta de executáveis homebrew.
- Carregamento direto de arquivos Portable Sound Format (psf).
- Controles digitais e analógicos.
- Suporte ao lightgun Namco GunCon (simulado com o mouse).
- Suporte ao NeGcon.
- Interface Qt e "Big Picture".
- Atualizações automáticas a partir dos canais oficiais.
- Verificação automática de conteúdo - os títulos/jogos são fornecidos por redump.org.
- Troca automática opcional de cartões de memória para cada jogo.
- Suporta carregar trapaças de listas existentes.
- Editor de cartões de memória e importador de salvamento.
- Overclock emulado de CPU.
- Depuração integrada e remota.
- Controles multitap (até 8 dispositivos).
- RetroAchievements.
- Carregamento/aplicação automática de patches PPF.
## Requisitos do Sistema
- Um CPU rápido. Mas precisa ser x86_64, AArch32/armv7 ou AArch64/ARMv8, caso contrário, o recompilação será lenta.
- Para os renderizadores de hardware, é necessário uma GPU compatível com OpenGL 3.1/OpenGL ES 3.1/Direct3D 11 Feature Level 10.0 (ou Vulkan 1.0) e superior. basicamente, qualquer computador produzido nos últimos 10 anos mais ou menos deve dar conta.
- Controlador de jogo compatível com SDL, XInput ou DInput (por exemplo, XB360/XBOne/XBSeries). Usuários de DualShock 3 no Windows precisarão instalar os drivers oficiais do DualShock 3 incluídos como parte do PlayStation Now.
## Download e Execução
Executáveis do DuckStation para Windows x64/ARM64, Linux x86_64 (nos formatos AppImage/Flatpak) e para macOS estão disponíveis via GitHub na aba Releases e são automaticamente compilados a cada commit/envio. Executáveis ou pacotes distribuídos por outras fontes podem estar desatualizados e não são suportados pelo desenvolvedor, por favor, entre em contato com eles para obter suporte, não conosco.
### Windows
DuckStation **requer** Windows 10/11, especificamente a versão 1809 ou mais recente. Se você ainda estiver usando Windows 7/8/8.1, o DuckStation **não funcionará** no seu sistema operacional. Usar esses sistemas operacionais em 2023 deve ser considerado um risco de segurança, recomendaria atualizar para algo que receba suporte do fornecedor.
Se você precisa usar um sistema operacional mais antigo, [v0.1-5624](https://github.com/stenzek/duckstation/releases/tag/v0.1-5624) é a última versão que funcionará. Mas não espere receber nenhuma assistência, essas compilações não são mais suportadas.
Para baixar:
- Acesse https://github.com/stenzek/duckstation/releases/tag/latest e baixe a compilação do Windows x64. Este é um arquivo ZIP contendo o executável pré-compilado.
- Alternativamente, link de download direto: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-windows-x64-release.zip
- Extraia o arquivo ZIP **para uma pasta**. O arquivo ZIP não tem um subdiretório raiz, então, se você não extrair para um subdiretório, ele irá despejar vários arquivos no seu diretório de download.
Depois de baixado e extraído, pode iniciar o emulador com `duckstation-qt-x64-ReleaseLTCG.exe`. Siga o Assistente de configuração para começar.
**Se você receber um erro sobre a falta de `vcruntime140_1.dll`, precisará atualizar sua runtime do Visual C++.**faça da seguinte forma, nesta página: https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads. Especificamente, você deseja a runtime x64, que pode ser baixada em https://aka.ms/vs/17/release/vc_redist.x64.exe.
### Linux
As únicas versões suportadas do DuckStation para Linux são o AppImage e o Flatpak na página de lançamentos. Se você instalou o DuckStation de outra fonte ou distribuição (por exemplo, EmuDeck), você deve entrar em contato com o responsável para suporte, nós não temos controle sobre isso.
#### AppImage
Os AppImages requerem uma distribuição equivalente ao Ubuntu 22.04 ou mais recente para serem executados.
- Acesse https://github.com/stenzek/duckstation/releases/tag/latest e baixe `duckstation-x64.AppImage`.
- Execute `chmod a+x` no AppImage baixado -- após este passo, o AppImage pode ser executado como um executável típico.
#### Flatpak
- Acesse https://github.com/stenzek/duckstation/releases/tag/latest e baixe `duckstation-x64.flatpak`.
- Execute `flatpak install ./duckstation-x64.flatpak`.
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).
MacOS Big Sir (11.0) é 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.
- 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.
A distribuição pelo Google Play é o mecanismo de distribuição recomendado e resultará em tamanhos de download menores: https://play.google.com/store/apps/details?id=com.github.stenzek.duckstation
**Não é fornecido suporte para o aplicativo Android**, ele é gratuito e suas expectativas devem estar alinhadas com isso. Por favor, **não** me envie e-mails sobre problemas relacionados a ele, eles serão ignorados.
Se você precisar usar um APK, os links para download estão listados em https://www.duckstation.org/android/
Para usar:
1. Instale e execute o aplicativo pela primeira vez.
2. Adicione diretórios de jogos tocando no botão de adição e selecionando um diretório. Você pode adicionar diretórios adicionais depois selecionando "Editar Diretórios de Jogos" no menu.
3. Toque em um jogo para começar. Quando você inicia um jogo pela primeira vez, ele pedirá para importar uma imagem de BIOS.
Se você tiver um controle externo, precisará mapear os botões e analogicos nas configurações.
### Proteção LibCrypt e arquivos SBI
Alguns jogos da região PAL usam a proteção LibCrypt, que requer informações adicionais de subcanal de CD para funcionar corretamente. O não funcionamento do libcrypt geralmente se manifesta como travamentos, mas às vezes pode afetar a jogabilidade, dependendo de como o jogo o implementou.
Para esses jogos, certifique-se de que a imagem do CD e seu arquivo correspondente SBI (.sbi) tenham o mesmo nome e estejam na mesma pasta. O DuckStation carregará automaticamente o arquivo SBI quando ele for encontrado ao lado da imagem do CD.
Por exemplo, se sua imagem de disco se chamasse `Spyro3.cue`, você colocaria o arquivo SBI na mesma pasta e o nomearia como `Spyro3.sbi`.
## Compilação
### Windows
Requisitos:
- Visual Studio 2022
1. Clone o repositório: `git clone https://github.com/stenzek/duckstation.git`.
2. Baixe o pacote de dependências em https://github.com/stenzek/duckstation-ext-qt-minimal/releases/download/latest/deps-x64.7z e extraia-o para `dep\msvc`.
3. Abra a solução do Visual Studio `duckstation.sln` na raiz ou "Abrir Pasta" para a compilação com CMake.
4. Compile a solução.
5. Os binários estão localizados em `bin/x64`.
6. Execute `duckstation-qt-x64-Release.exe` ou a configuração que você usou.
### Linux
Requisitos (nomes de pacotes Debian/Ubuntu):
- CMake (`cmake`)
- SDL2 (pelo menos a versão 2.28.2) (`libsdl2-dev` `libxrandr-dev`)
- pkgconfig (`pkg-config`)
- Qt 6 (pelo menos a versão 6.5.1) (`qt6-base-dev` `qt6-base-private-dev` `qt6-base-dev-tools` `qt6-tools-dev` `libqt6svg6`)
- git (`git`) (Nota: necessário para clonar o repositório e na hora da compilação)
- Quando o Wayland estiver habilitado (padrão): (`libwayland-dev` `libwayland-egl-backend-dev` `extra-cmake-modules` `qt6-wayland`)
- libcurl (`libcurl4-openssl-dev`)
- Opcional para compilação mais rápida: Ninja (`ninja-build`)
1. Clone o repositório: `git clone https://github.com/stenzek/duckstation.git -b dev`.
2. Crie um diretório de compilação, seja dentro ou fora do diretório de origem.
3. Execute o CMake para configurar o sistema de compilação. Supondo que o diretório de compilação seja `build-release`, execute `cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release`. Se você tiver o Ninja instalado, adicione `-GNinja` ao final da linha de comando do CMake para compilações mais rápidas.
4. Compile o código-fonte. Para o exemplo acima, execute `cmake --build build-release --parallel`.
5. Execute o binário, que está localizado no diretório de compilação em `bin/duckstation-qt`.
### macOS
Requisitos:
- CMake
- SDL2 (pelo menos a versão 2.28.2)
- Qt 6 (pelo menos a versão 6.5.1)
Opcional (recomendado para compilações mais rápidas):
- Ninja
1. Clone o repositório: `git clone https://github.com/stenzek/duckstation.git`.
2. Execute o CMake para configurar o sistema de compilação: `cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release`. Você pode precisar especificar `-DQt6_DIR` dependendo do seu sistema. Se você tiver o Ninja instalado, adicione `-GNinja` ao final da linha de comando do CMake para compilações mais rápidas.
4. Compile o código-fonte: `cmake --build build-release --parallel`.
5. Execute o binário, que está localizado no diretório de compilação em `bin/DuckStation.app`.
## Diretórios de Usuários
O "Diretório de Usuário" é onde você deve colocar suas imagens da BIOS, onde as configurações são salvas e onde os cartões de memória e estados de salvamento são salvos por padrão. Um [arquivo opcional de banco de dados de controle de jogo SDL](#sdl-game-controller-database) também pode ser colocado aqui.
Ele está localizado nos seguintes lugares, dependendo da plataforma que você está usando:
- Windows: Meus Documentos\DuckStation
- Linux: `$XDG_DATA_HOME/duckstation`, ou `~/.local/share/duckstation`.
- macOS: `~/Library/Application Support/DuckStation`.
Portanto, se você estiver usando o Linux, sugiro colocar suas imagens do BIOS em `~/.local/share/duckstation/bios`. Este diretório será criado na primeira vez que você executar o DuckStation.
Se você deseja usar uma compilação "portátil", onde o diretório do usuário é o mesmo onde o executável está localizado, crie um arquivo vazio chamado `portable.txt` no mesmo diretório onde o executável do DuckStation está.
## Associações para a interface Qt
Seu teclado ou controle podem ser usados para simular uma variedade de controles de PlayStation. A entrada do controle é suportada através dos back-ends DInput, XInput e SDL e pode ser alterada em `Configurações -> Configurações Gerais`.
Para atribuir seu dispositivo de entrada, vá para `Configurações -> Configurações do Controle`. Cada um dos botões/eixos para o controle emulador será listado, juntamente com a tecla/botão correspondente do seu dispositivo a que ele atualmente em uso. Para atribuir novamente, clique na caixa ao lado do nome do botão/eixo e pressione a tecla ou botão do seu dispositivo de entrada que deseja atribuir. Ao atribuir a vibração, basta pressionar qualquer botão no controle para o qual você deseja que seja configurado.
## Banco de Dados de Controle de Jogo SDL
Os lançamentos do DuckStation incluem um banco de dados de mapeamentos de controle de jogo para o back-end do controle SDL, cortesia de https://github.com/gabomdq/SDL_GameControllerDB. O arquivo `gamecontrollerdb.txt` incluído pode ser encontrado no subdiretório `database` do diretório do programa DuckStation.
Se você estiver tendo problemas para associar seu controle com o back-end do controlador SDL, pode ser necessário adicionar um mapeamento personalizado ao arquivo de banco de dados. Faça uma cópia de `gamecontrollerdb.txt` e coloque-o no seu [diretório de usuário](#user-directories) (ou diretamente no diretório do programa, se estiver executando em modo portátil) e siga as instruções no [repositório SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) para criar um novo mapeamento. Adicione este mapeamento à nova cópia de `gamecontrollerdb.txt` e seu controle deve ser reconhecido corretamente.
## Atribuições padrão
Controle 1:
- **D-Pad:** W/A/S/D
- **Triângulo/Quadrado/Círculo/Cruz:** Numpad8/Numpad4/Numpad6/Numpad2
- **L1/R1:** Q/E
- **L2/R2:** 1/3
- **Start:** Enter
- **Select:** Backspace
Atalhos:
- **Esc:** Abrir Menu de Pausa
- **F11:** Alternar Tela Cheia
- **Tab:** Desativar Temporariamente o Limitador de Velocidade
- **Espaço:** Pausar/Continuar Emulação
## Avisos Legais
Ícone por icons8: https://icons8.com/icon/74847/platforms.undefined.short-title
"PlayStation" e "PSX" são marcas registradas da Sony Interactive Entertainment Europe Limited. Este projeto não está afiliado de forma alguma com a Sony Interactive Entertainment.

14
android/.gitignore vendored
View File

@@ -1,14 +0,0 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx

1
android/.idea/.name generated
View File

@@ -1 +0,0 @@
DuckStation

View File

@@ -1,116 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

View File

@@ -1,5 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
</component>
</project>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

6
android/.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

View File

@@ -1 +0,0 @@
/build

View File

@@ -1,83 +0,0 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.github.stenzek.duckstation"
minSdkVersion 23
targetSdkVersion 29
versionCode(getBuildVersionCode())
versionName "${getVersion()}"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "../../CMakeLists.txt"
version "3.10.2"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
externalNativeBuild {
cmake {
arguments "-DCMAKE_BUILD_TYPE=Release"
abiFilters "arm64-v8a", "armeabi-v7a"
}
}
}
sourceSets {
main.assets.srcDirs += "../../data"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.preference:preference:1.1.0-alpha05'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.viewpager2:viewpager2:1.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
// Adapted from Dolphin.
def getVersion() {
def versionNumber = '0.0-unknown'
try {
versionNumber = 'git describe --tags --exclude latest --exclude preview'.execute([], project.rootDir).text
.trim()
.replaceAll(/(-0)?-[^-]+$/, "")
} catch (Exception e) {
logger.error('Cannot find git, defaulting to dummy version number')
}
return versionNumber
}
def getBuildVersionCode() {
try {
def versionNumber = 'git rev-list --first-parent --count HEAD'.execute([], project.rootDir).text
.trim()
return Integer.valueOf(versionNumber);
} catch (Exception e) {
logger.error('Cannot find git, defaulting to dummy version number')
}
return 1;
}

View File

@@ -1,21 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -1,27 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.github.stenzek.duckstation", appContext.getPackageName());
}
}

View File

@@ -1,23 +0,0 @@
set(SRCS
android_controller_interface.cpp
android_controller_interface.h
android_host_interface.cpp
android_host_interface.h
android_progress_callback.cpp
android_progress_callback.h
android_settings_interface.cpp
android_settings_interface.h
)
add_library(duckstation-native SHARED ${SRCS})
target_link_libraries(duckstation-native PRIVATE android frontend-common core common glad imgui)
find_package(OpenSLES)
if(OPENSLES_FOUND)
message("Enabling OpenSL ES audio stream")
target_sources(duckstation-native PRIVATE
opensles_audio_stream.cpp
opensles_audio_stream.h)
target_link_libraries(duckstation-native PRIVATE OpenSLES::OpenSLES)
target_compile_definitions(duckstation-native PRIVATE "-DUSE_OPENSLES=1")
endif()

View File

@@ -1,186 +0,0 @@
#include "android_controller_interface.h"
#include "common/assert.h"
#include "common/file_system.h"
#include "common/log.h"
#include "core/controller.h"
#include "core/host_interface.h"
#include "core/system.h"
#include <cmath>
Log_SetChannel(AndroidControllerInterface);
AndroidControllerInterface::AndroidControllerInterface() = default;
AndroidControllerInterface::~AndroidControllerInterface() = default;
ControllerInterface::Backend AndroidControllerInterface::GetBackend() const
{
return ControllerInterface::Backend::Android;
}
bool AndroidControllerInterface::Initialize(CommonHostInterface* host_interface)
{
if (!ControllerInterface::Initialize(host_interface))
return false;
return true;
}
void AndroidControllerInterface::Shutdown()
{
ControllerInterface::Shutdown();
}
void AndroidControllerInterface::PollEvents() {}
void AndroidControllerInterface::ClearBindings()
{
for (ControllerData& cd : m_controllers)
{
cd.axis_mapping.fill({});
cd.button_mapping.fill({});
cd.axis_button_mapping.fill({});
cd.button_axis_mapping.fill({});
}
}
bool AndroidControllerInterface::BindControllerAxis(int controller_index, int axis_number, AxisSide axis_side,
AxisCallback callback)
{
if (static_cast<u32>(controller_index) >= m_controllers.size())
return false;
if (axis_number < 0 || axis_number >= NUM_AXISES)
return false;
m_controllers[controller_index].axis_mapping[axis_number][axis_side] = std::move(callback);
return true;
}
bool AndroidControllerInterface::BindControllerButton(int controller_index, int button_number, ButtonCallback callback)
{
if (static_cast<u32>(controller_index) >= m_controllers.size())
return false;
if (button_number < 0 || button_number >= NUM_BUTTONS)
return false;
m_controllers[controller_index].button_mapping[button_number] = std::move(callback);
return true;
}
bool AndroidControllerInterface::BindControllerAxisToButton(int controller_index, int axis_number, bool direction,
ButtonCallback callback)
{
if (static_cast<u32>(controller_index) >= m_controllers.size())
return false;
if (axis_number < 0 || axis_number >= NUM_AXISES)
return false;
m_controllers[controller_index].axis_button_mapping[axis_number][BoolToUInt8(direction)] = std::move(callback);
return true;
}
bool AndroidControllerInterface::BindControllerHatToButton(int controller_index, int hat_number,
std::string_view hat_position, ButtonCallback callback)
{
// Hats don't exist in XInput
return false;
}
bool AndroidControllerInterface::BindControllerButtonToAxis(int controller_index, int button_number,
AxisCallback callback)
{
if (static_cast<u32>(controller_index) >= m_controllers.size())
return false;
if (button_number < 0 || button_number >= NUM_BUTTONS)
return false;
m_controllers[controller_index].button_axis_mapping[button_number] = std::move(callback);
return true;
}
bool AndroidControllerInterface::HandleAxisEvent(u32 index, u32 axis, float value)
{
Log_DevPrintf("controller %u axis %u %f", index, static_cast<u32>(axis), value);
DebugAssert(index < NUM_CONTROLLERS);
if (DoEventHook(Hook::Type::Axis, index, static_cast<u32>(axis), value))
return true;
const AxisCallback& cb = m_controllers[index].axis_mapping[static_cast<u32>(axis)][AxisSide::Full];
if (cb)
{
cb(value);
return true;
}
// set the other direction to false so large movements don't leave the opposite on
const bool outside_deadzone = (std::abs(value) >= m_controllers[index].deadzone);
const bool positive = (value >= 0.0f);
const ButtonCallback& other_button_cb =
m_controllers[index].axis_button_mapping[static_cast<u32>(axis)][BoolToUInt8(!positive)];
const ButtonCallback& button_cb =
m_controllers[index].axis_button_mapping[static_cast<u32>(axis)][BoolToUInt8(positive)];
if (button_cb)
{
button_cb(outside_deadzone);
if (other_button_cb)
other_button_cb(false);
return true;
}
else if (other_button_cb)
{
other_button_cb(false);
return true;
}
else
{
return false;
}
}
bool AndroidControllerInterface::HandleButtonEvent(u32 index, u32 button, bool pressed)
{
Log_DevPrintf("controller %u button %u %s", index, button, pressed ? "pressed" : "released");
DebugAssert(index < NUM_CONTROLLERS);
if (DoEventHook(Hook::Type::Button, index, button, pressed ? 1.0f : 0.0f))
return true;
const ButtonCallback& cb = m_controllers[index].button_mapping[button];
if (cb)
{
cb(pressed);
return true;
}
const AxisCallback& axis_cb = m_controllers[index].button_axis_mapping[button];
if (axis_cb)
{
axis_cb(pressed ? 1.0f : -1.0f);
}
return true;
}
u32 AndroidControllerInterface::GetControllerRumbleMotorCount(int controller_index)
{
return 0;
}
void AndroidControllerInterface::SetControllerRumbleStrength(int controller_index, const float* strengths,
u32 num_motors)
{
}
bool AndroidControllerInterface::SetControllerDeadzone(int controller_index, float size /* = 0.25f */)
{
if (static_cast<u32>(controller_index) >= NUM_CONTROLLERS)
return false;
m_controllers[static_cast<u32>(controller_index)].deadzone = std::clamp(std::abs(size), 0.01f, 0.99f);
Log_InfoPrintf("Controller %d deadzone size set to %f", controller_index,
m_controllers[static_cast<u32>(controller_index)].deadzone);
return true;
}

View File

@@ -1,67 +0,0 @@
#pragma once
#include "frontend-common/controller_interface.h"
#include "core/types.h"
#include <array>
#include <functional>
#include <mutex>
#include <vector>
class AndroidControllerInterface final : public ControllerInterface
{
public:
AndroidControllerInterface();
~AndroidControllerInterface() override;
Backend GetBackend() const override;
bool Initialize(CommonHostInterface* host_interface) override;
void Shutdown() override;
// Removes all bindings. Call before setting new bindings.
void ClearBindings() override;
// Binding to events. If a binding for this axis/button already exists, returns false.
bool BindControllerAxis(int controller_index, int axis_number, AxisSide axis_side, AxisCallback callback) override;
bool BindControllerButton(int controller_index, int button_number, ButtonCallback callback) override;
bool BindControllerAxisToButton(int controller_index, int axis_number, bool direction,
ButtonCallback callback) override;
bool BindControllerHatToButton(int controller_index, int hat_number, std::string_view hat_position,
ButtonCallback callback) override;
bool BindControllerButtonToAxis(int controller_index, int button_number, AxisCallback callback) override;
// Changing rumble strength.
u32 GetControllerRumbleMotorCount(int controller_index) override;
void SetControllerRumbleStrength(int controller_index, const float* strengths, u32 num_motors) override;
// Set deadzone that will be applied on axis-to-button mappings
bool SetControllerDeadzone(int controller_index, float size = 0.25f) override;
void PollEvents() override;
bool HandleAxisEvent(u32 index, u32 axis, float value);
bool HandleButtonEvent(u32 index, u32 button, bool pressed);
private:
enum : u32
{
NUM_CONTROLLERS = 1,
NUM_AXISES = 12,
NUM_BUTTONS = 23
};
struct ControllerData
{
float deadzone = 0.25f;
std::array<std::array<AxisCallback, 3>, NUM_AXISES> axis_mapping;
std::array<ButtonCallback, NUM_BUTTONS> button_mapping;
std::array<std::array<ButtonCallback, 2>, NUM_AXISES> axis_button_mapping;
std::array<AxisCallback, NUM_BUTTONS> button_axis_mapping;
};
using ControllerDataArray = std::array<ControllerData, NUM_CONTROLLERS>;
ControllerDataArray m_controllers;
std::mutex m_event_intercept_mutex;
Hook::Callback m_event_intercept_callback;
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,174 +0,0 @@
#pragma once
#include "android_settings_interface.h"
#include "common/byte_stream.h"
#include "common/event.h"
#include "common/progress_callback.h"
#include "core/host_display.h"
#include "frontend-common/common_host_interface.h"
#include <array>
#include <atomic>
#include <condition_variable>
#include <functional>
#include <jni.h>
#include <memory>
#include <string>
#include <thread>
struct ANativeWindow;
class Controller;
class AndroidHostInterface final : public CommonHostInterface
{
public:
AndroidHostInterface(jobject java_object, jobject context_object, std::string user_directory);
~AndroidHostInterface() override;
ALWAYS_INLINE ANativeWindow* GetSurface() const { return m_surface; }
bool Initialize() override;
void Shutdown() override;
const char* GetFrontendName() const override;
void RequestExit() override;
void RunLater(std::function<void()> func) override;
void ReportError(const char* message) override;
void ReportMessage(const char* message) override;
std::string GetStringSettingValue(const char* section, const char* key, const char* default_value = "") override;
bool GetBoolSettingValue(const char* section, const char* key, bool default_value = false) override;
int GetIntSettingValue(const char* section, const char* key, int default_value = 0) override;
float GetFloatSettingValue(const char* section, const char* key, float default_value = 0.0f) override;
std::unique_ptr<ByteStream> OpenPackageFile(const char* path, u32 flags) override;
bool GetMainDisplayRefreshRate(float* refresh_rate) override;
bool IsEmulationThreadRunning() const { return m_emulation_thread_running.load(); }
bool IsEmulationThreadPaused() const;
bool IsOnEmulationThread() const;
void RunOnEmulationThread(std::function<void()> function, bool blocking = false);
void PauseEmulationThread(bool paused);
void StopEmulationThreadLoop();
void EmulationThreadEntryPoint(JNIEnv* env, jobject emulation_activity, SystemBootParameters boot_params,
bool resume_state);
void SurfaceChanged(ANativeWindow* surface, int format, int width, int height);
void SetDisplayAlignment(HostDisplay::Alignment alignment);
void SetControllerType(u32 index, std::string_view type_name);
void SetControllerButtonState(u32 index, s32 button_code, bool pressed);
void SetControllerAxisState(u32 index, s32 button_code, float value);
void HandleControllerButtonEvent(u32 controller_index, u32 button_index, bool pressed);
void HandleControllerAxisEvent(u32 controller_index, u32 axis_index, float value);
void SetFastForwardEnabled(bool enabled);
void RefreshGameList(bool invalidate_cache, bool invalidate_database, ProgressCallback* progress_callback);
void ApplySettings(bool display_osd_messages) override;
bool ImportPatchCodesFromString(const std::string& str);
jobjectArray GetInputProfileNames(JNIEnv* env) const;
bool ApplyInputProfile(const char* profile_name);
bool SaveInputProfile(const char* profile_name);
protected:
void SetUserDirectory() override;
void LoadSettings() override;
void UpdateInputMap() override;
void RegisterHotkeys() override;
bool AcquireHostDisplay() override;
void ReleaseHostDisplay() override;
std::unique_ptr<AudioStream> CreateAudioStream(AudioBackend backend) override;
void UpdateControllerInterface() override;
void OnSystemPaused(bool paused) override;
void OnSystemDestroyed() override;
void OnRunningGameChanged() override;
private:
void EmulationThreadLoop(JNIEnv* env);
void CreateImGuiContext();
void DestroyImGuiContext();
void LoadAndConvertSettings();
void SetVibration(bool enabled);
void UpdateVibration();
jobject m_java_object = {};
jobject m_emulation_activity_object = {};
AndroidSettingsInterface m_settings_interface;
ANativeWindow* m_surface = nullptr;
std::mutex m_mutex;
std::condition_variable m_sleep_cv;
std::deque<std::function<void()>> m_callback_queue;
std::atomic_bool m_callbacks_outstanding{false};
std::atomic_bool m_emulation_thread_stop_request{false};
std::atomic_bool m_emulation_thread_running{false};
std::thread::id m_emulation_thread_id{};
HostDisplay::Alignment m_display_alignment = HostDisplay::Alignment::Center;
u64 m_last_vibration_update_time = 0;
bool m_last_vibration_state = false;
bool m_vibration_enabled = false;
};
namespace AndroidHelpers {
JNIEnv* GetJNIEnv();
AndroidHostInterface* GetNativeClass(JNIEnv* env, jobject obj);
std::string JStringToString(JNIEnv* env, jstring str);
std::unique_ptr<GrowableMemoryByteStream> ReadInputStreamToMemory(JNIEnv* env, jobject obj, u32 chunk_size = 65536);
jclass GetStringClass();
} // namespace AndroidHelpers
template<typename T>
class LocalRefHolder
{
public:
LocalRefHolder() : m_env(nullptr), m_object(nullptr) {}
LocalRefHolder(JNIEnv* env, T object) : m_env(env), m_object(object) {}
LocalRefHolder(const LocalRefHolder<T>&) = delete;
LocalRefHolder(LocalRefHolder&& move) : m_env(move.m_env), m_object(move.m_object)
{
move.m_env = nullptr;
move.m_object = {};
}
~LocalRefHolder()
{
if (m_object)
m_env->DeleteLocalRef(m_object);
}
operator T() const { return m_object; }
T operator*() const { return m_object; }
LocalRefHolder& operator=(const LocalRefHolder&) = delete;
LocalRefHolder& operator=(LocalRefHolder&& move)
{
if (m_object)
m_env->DeleteLocalRef(m_object);
m_env = move.m_env;
m_object = move.m_object;
move.m_env = nullptr;
move.m_object = {};
return *this;
}
T Get() const { return m_object; }
private:
JNIEnv* m_env;
T m_object;
};

View File

@@ -1,113 +0,0 @@
#include "android_progress_callback.h"
#include "android_host_interface.h"
#include "common/log.h"
#include "common/assert.h"
Log_SetChannel(AndroidProgressCallback);
AndroidProgressCallback::AndroidProgressCallback(JNIEnv* env, jobject java_object)
: m_java_object(java_object)
{
jclass cls = env->GetObjectClass(java_object);
m_set_title_method = env->GetMethodID(cls, "setTitle", "(Ljava/lang/String;)V");
m_set_status_text_method = env->GetMethodID(cls, "setStatusText", "(Ljava/lang/String;)V");
m_set_progress_range_method = env->GetMethodID(cls, "setProgressRange", "(I)V");
m_set_progress_value_method = env->GetMethodID(cls, "setProgressValue", "(I)V");
m_modal_error_method = env->GetMethodID(cls, "modalError", "(Ljava/lang/String;)V");
m_modal_information_method = env->GetMethodID(cls, "modalInformation", "(Ljava/lang/String;)V");
m_modal_confirmation_method = env->GetMethodID(cls, "modalConfirmation", "(Ljava/lang/String;)Z");
Assert(m_set_status_text_method && m_set_progress_range_method && m_set_progress_value_method && m_modal_error_method && m_modal_information_method && m_modal_confirmation_method);
}
AndroidProgressCallback::~AndroidProgressCallback() = default;
bool AndroidProgressCallback::IsCancelled() const
{
return false;
}
void AndroidProgressCallback::SetCancellable(bool cancellable)
{
if (m_cancellable == cancellable)
return;
BaseProgressCallback::SetCancellable(cancellable);
}
void AndroidProgressCallback::SetTitle(const char* title)
{
Assert(title);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> text_jstr(env, env->NewStringUTF(title));
env->CallVoidMethod(m_java_object, m_set_title_method, text_jstr.Get());
}
void AndroidProgressCallback::SetStatusText(const char* text)
{
Assert(text);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> text_jstr(env, env->NewStringUTF(text));
env->CallVoidMethod(m_java_object, m_set_status_text_method, text_jstr.Get());
}
void AndroidProgressCallback::SetProgressRange(u32 range)
{
BaseProgressCallback::SetProgressRange(range);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
env->CallVoidMethod(m_java_object, m_set_progress_range_method, static_cast<jint>(range));
}
void AndroidProgressCallback::SetProgressValue(u32 value)
{
const u32 old_value = m_progress_value;
BaseProgressCallback::SetProgressValue(value);
if (old_value == m_progress_value)
return;
JNIEnv* env = AndroidHelpers::GetJNIEnv();
env->CallVoidMethod(m_java_object, m_set_progress_value_method, static_cast<jint>(value));
}
void AndroidProgressCallback::DisplayError(const char* message)
{
Log_ErrorPrintf("%s", message);
}
void AndroidProgressCallback::DisplayWarning(const char* message)
{
Log_WarningPrintf("%s", message);
}
void AndroidProgressCallback::DisplayInformation(const char* message)
{
Log_InfoPrintf("%s", message);
}
void AndroidProgressCallback::DisplayDebugMessage(const char* message)
{
Log_DevPrintf("%s", message);
}
void AndroidProgressCallback::ModalError(const char* message)
{
Assert(message);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
env->CallVoidMethod(m_java_object, m_modal_error_method, message_jstr.Get());
}
bool AndroidProgressCallback::ModalConfirmation(const char* message)
{
Assert(message);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
return env->CallBooleanMethod(m_java_object, m_modal_confirmation_method, message_jstr.Get());
}
void AndroidProgressCallback::ModalInformation(const char* message)
{
Assert(message);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> message_jstr(env, env->NewStringUTF(message));
env->CallVoidMethod(m_java_object, m_modal_information_method, message_jstr.Get());
}

View File

@@ -1,38 +0,0 @@
#pragma once
#include "common/progress_callback.h"
#include <jni.h>
class AndroidProgressCallback final : public BaseProgressCallback
{
public:
AndroidProgressCallback(JNIEnv* env, jobject java_object);
~AndroidProgressCallback();
bool IsCancelled() const override;
void SetCancellable(bool cancellable) override;
void SetTitle(const char* title) override;
void SetStatusText(const char* text) override;
void SetProgressRange(u32 range) override;
void SetProgressValue(u32 value) override;
void DisplayError(const char* message) override;
void DisplayWarning(const char* message) override;
void DisplayInformation(const char* message) override;
void DisplayDebugMessage(const char* message) override;
void ModalError(const char* message) override;
bool ModalConfirmation(const char* message) override;
void ModalInformation(const char* message) override;
private:
jobject m_java_object;
jmethodID m_set_title_method;
jmethodID m_set_status_text_method;
jmethodID m_set_progress_range_method;
jmethodID m_set_progress_value_method;
jmethodID m_modal_error_method;
jmethodID m_modal_confirmation_method;
jmethodID m_modal_information_method;
};

View File

@@ -1,407 +0,0 @@
#include "android_settings_interface.h"
#include "android_host_interface.h"
#include "common/assert.h"
#include "common/log.h"
#include "common/string.h"
#include "common/string_util.h"
#include <algorithm>
Log_SetChannel(AndroidSettingsInterface);
ALWAYS_INLINE TinyString GetSettingKey(const char* section, const char* key)
{
return TinyString::FromFormat("%s/%s", section, key);
}
AndroidSettingsInterface::AndroidSettingsInterface(jobject java_context)
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
jclass c_preference_manager = env->FindClass("androidx/preference/PreferenceManager");
jclass c_preference_editor = env->FindClass("android/content/SharedPreferences$Editor");
jclass c_set = env->FindClass("java/util/Set");
jclass c_helper = env->FindClass("com/github/stenzek/duckstation/PreferenceHelpers");
jmethodID m_get_default_shared_preferences =
env->GetStaticMethodID(c_preference_manager, "getDefaultSharedPreferences",
"(Landroid/content/Context;)Landroid/content/SharedPreferences;");
Assert(c_preference_manager && c_preference_editor && c_set && c_helper && m_get_default_shared_preferences);
m_set_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_set));
m_shared_preferences_editor_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_preference_editor));
m_helper_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_helper));
Assert(m_set_class && m_shared_preferences_editor_class && m_helper_class);
env->DeleteLocalRef(c_set);
env->DeleteLocalRef(c_preference_editor);
env->DeleteLocalRef(c_helper);
jobject shared_preferences =
env->CallStaticObjectMethod(c_preference_manager, m_get_default_shared_preferences, java_context);
Assert(shared_preferences);
m_java_shared_preferences = env->NewGlobalRef(shared_preferences);
Assert(m_java_shared_preferences);
env->DeleteLocalRef(c_preference_manager);
env->DeleteLocalRef(shared_preferences);
jclass c_shared_preferences = env->GetObjectClass(m_java_shared_preferences);
m_shared_preferences_class = reinterpret_cast<jclass>(env->NewGlobalRef(c_shared_preferences));
Assert(m_shared_preferences_class);
env->DeleteLocalRef(c_shared_preferences);
m_get_boolean = env->GetMethodID(m_shared_preferences_class, "getBoolean", "(Ljava/lang/String;Z)Z");
m_get_int = env->GetMethodID(m_shared_preferences_class, "getInt", "(Ljava/lang/String;I)I");
m_get_float = env->GetMethodID(m_shared_preferences_class, "getFloat", "(Ljava/lang/String;F)F");
m_get_string = env->GetMethodID(m_shared_preferences_class, "getString",
"(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
m_get_string_set =
env->GetMethodID(m_shared_preferences_class, "getStringSet", "(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;");
m_set_to_array = env->GetMethodID(m_set_class, "toArray", "()[Ljava/lang/Object;");
Assert(m_get_boolean && m_get_int && m_get_float && m_get_string && m_get_string_set && m_set_to_array);
m_edit = env->GetMethodID(m_shared_preferences_class, "edit", "()Landroid/content/SharedPreferences$Editor;");
m_edit_set_string = env->GetMethodID(m_shared_preferences_editor_class, "putString", "(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;");
m_edit_commit = env->GetMethodID(m_shared_preferences_editor_class, "commit", "()Z");
m_edit_remove = env->GetMethodID(m_shared_preferences_editor_class, "remove", "(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;");
Assert(m_edit && m_edit_set_string && m_edit_commit && m_edit_remove);
m_helper_clear_section = env->GetStaticMethodID(m_helper_class, "clearSection", "(Landroid/content/SharedPreferences;Ljava/lang/String;)V");
m_helper_add_to_string_list = env->GetStaticMethodID(m_helper_class, "addToStringList", "(Landroid/content/SharedPreferences;Ljava/lang/String;Ljava/lang/String;)Z");
m_helper_remove_from_string_list = env->GetStaticMethodID(m_helper_class, "removeFromStringList", "(Landroid/content/SharedPreferences;Ljava/lang/String;Ljava/lang/String;)Z");
m_helper_set_string_list = env->GetStaticMethodID(m_helper_class, "setStringList", "(Landroid/content/SharedPreferences;Ljava/lang/String;[Ljava/lang/String;)V");
Assert(m_helper_clear_section && m_helper_add_to_string_list && m_helper_remove_from_string_list && m_helper_set_string_list);
}
AndroidSettingsInterface::~AndroidSettingsInterface()
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
if (m_java_shared_preferences)
env->DeleteGlobalRef(m_java_shared_preferences);
if (m_shared_preferences_editor_class)
env->DeleteGlobalRef(m_shared_preferences_editor_class);
if (m_shared_preferences_class)
env->DeleteGlobalRef(m_shared_preferences_class);
if (m_set_class)
env->DeleteGlobalRef(m_set_class);
if (m_helper_class)
env->DeleteGlobalRef(m_helper_class);
}
bool AndroidSettingsInterface::Save()
{
return true;
}
void AndroidSettingsInterface::Clear()
{
Log_ErrorPrint("Not implemented");
}
int AndroidSettingsInterface::GetIntValue(const char* section, const char* key, int default_value /*= 0*/)
{
// Some of these settings are string lists...
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(TinyString::FromFormat("%d", default_value)));
LocalRefHolder<jstring> string_object(
env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
default_value_string.Get())));
if (env->ExceptionCheck())
{
env->ExceptionClear();
// it might actually be an int (e.g. seek bar preference)
const int int_value =
static_cast<int>(env->CallIntMethod(m_java_shared_preferences, m_get_int, key_string.Get(), default_value));
if (env->ExceptionCheck())
{
env->ExceptionClear();
Log_DevPrintf("GetIntValue(%s, %s) -> %d (exception)", section, key, default_value);
return default_value;
}
Log_DevPrintf("GetIntValue(%s, %s) -> %d (int)", section, key, int_value);
return int_value;
}
if (!string_object)
return default_value;
const char* data = env->GetStringUTFChars(string_object, nullptr);
Assert(data != nullptr);
Log_DevPrintf("GetIntValue(%s, %s) -> %s", section, key, data);
std::optional<int> value = StringUtil::FromChars<int>(data);
env->ReleaseStringUTFChars(string_object, data);
return value.value_or(default_value);
}
float AndroidSettingsInterface::GetFloatValue(const char* section, const char* key, float default_value /*= 0.0f*/)
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(TinyString::FromFormat("%f", default_value)));
LocalRefHolder<jstring> string_object(
env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
default_value_string.Get())));
if (env->ExceptionCheck())
{
env->ExceptionClear();
Log_DevPrintf("GetFloatValue(%s, %s) -> %f (exception)", section, key, default_value);
return default_value;
}
if (!string_object)
{
Log_DevPrintf("GetFloatValue(%s, %s) -> %f (null)", section, key, default_value);
return default_value;
}
const char* data = env->GetStringUTFChars(string_object, nullptr);
Assert(data != nullptr);
Log_DevPrintf("GetFloatValue(%s, %s) -> %s", section, key, data);
std::optional<float> value = StringUtil::FromChars<float>(data);
env->ReleaseStringUTFChars(string_object, data);
return value.value_or(default_value);
}
bool AndroidSettingsInterface::GetBoolValue(const char* section, const char* key, bool default_value /*= false*/)
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
jboolean bool_value = static_cast<bool>(
env->CallBooleanMethod(m_java_shared_preferences, m_get_boolean, key_string.Get(), default_value));
if (env->ExceptionCheck())
{
Log_DevPrintf("GetBoolValue(%s, %s) -> %u (exception)", section, key, static_cast<unsigned>(default_value));
env->ExceptionClear();
return default_value;
}
Log_DevPrintf("GetBoolValue(%s, %s) -> %u", section, key, static_cast<unsigned>(bool_value));
return bool_value;
}
std::string AndroidSettingsInterface::GetStringValue(const char* section, const char* key,
const char* default_value /*= ""*/)
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> default_value_string(env, env->NewStringUTF(default_value));
LocalRefHolder<jstring> string_object(
env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(),
default_value_string.Get())));
if (env->ExceptionCheck())
{
env->ExceptionClear();
Log_DevPrintf("GetStringValue(%s, %s) -> %s (exception)", section, key, default_value);
return default_value;
}
if (!string_object)
{
Log_DevPrintf("GetStringValue(%s, %s) -> %s (null)", section, key, default_value);
return default_value;
}
const std::string ret(AndroidHelpers::JStringToString(env, string_object));
Log_DevPrintf("GetStringValue(%s, %s) -> %s", section, key, ret.c_str());
return ret;
}
jobject AndroidSettingsInterface::GetPreferencesEditor(JNIEnv* env)
{
return env->CallObjectMethod(m_java_shared_preferences, m_edit);
}
void AndroidSettingsInterface::CheckForException(JNIEnv *env, const char *task)
{
if (!env->ExceptionCheck())
return;
Log_ErrorPrintf("JNI exception during %s", task);
env->ExceptionClear();
}
void AndroidSettingsInterface::SetIntValue(const char* section, const char* key, int value)
{
Log_DevPrintf("SetIntValue(\"%s\", \"%s\", %d)", section, key, value);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> str_value(env, env->NewStringUTF(TinyString::FromFormat("%d", value)));
LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
env->CallBooleanMethod(editor, m_edit_commit);
CheckForException(env, "SetIntValue");
}
void AndroidSettingsInterface::SetFloatValue(const char* section, const char* key, float value)
{
Log_DevPrintf("SetFloatValue(\"%s\", \"%s\", %f)", section, key, value);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> str_value(env, env->NewStringUTF(TinyString::FromFormat("%f", value)));
LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
env->CallBooleanMethod(editor, m_edit_commit);
CheckForException(env, "SetFloatValue");
}
void AndroidSettingsInterface::SetBoolValue(const char* section, const char* key, bool value)
{
Log_DevPrintf("SetBoolValue(\"%s\", \"%s\", %u)", section, key, static_cast<unsigned>(value));
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> str_value(env, env->NewStringUTF(value ? "true" : "false"));
LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
env->CallBooleanMethod(editor, m_edit_commit);
CheckForException(env, "SetBoolValue");
}
void AndroidSettingsInterface::SetStringValue(const char* section, const char* key, const char* value)
{
Log_DevPrintf("SetStringValue(\"%s\", \"%s\", \"%s\")", section, key, value);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> str_value(env, env->NewStringUTF(value));
LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_set_string, key_string.Get(), str_value.Get()));
env->CallBooleanMethod(editor, m_edit_commit);
CheckForException(env, "SetStringValue");
}
void AndroidSettingsInterface::DeleteValue(const char* section, const char* key)
{
Log_DevPrintf("DeleteValue(\"%s\", \"%s\")", section, key);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobject> editor(env, GetPreferencesEditor(env));
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jobject> dummy(env, env->CallObjectMethod(editor, m_edit_remove, key_string.Get()));
env->CallBooleanMethod(editor, m_edit_commit);
CheckForException(env, "DeleteValue");
}
void AndroidSettingsInterface::ClearSection(const char* section)
{
Log_DevPrintf("ClearSection(\"%s\")", section);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> str_section(env, env->NewStringUTF(section));
env->CallStaticVoidMethod(m_helper_class, m_helper_clear_section, m_java_shared_preferences, str_section.Get());
CheckForException(env, "ClearSection");
}
std::vector<std::string> AndroidSettingsInterface::GetStringList(const char* section, const char* key)
{
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jobject> values_set(
env, env->CallObjectMethod(m_java_shared_preferences, m_get_string_set, key_string.Get(), nullptr));
if (env->ExceptionCheck())
{
env->ExceptionClear();
// this might just be a string, not a string set
LocalRefHolder<jstring> string_object(
env, reinterpret_cast<jstring>(env->CallObjectMethod(m_java_shared_preferences, m_get_string, key_string.Get(), nullptr)));
if (!env->ExceptionCheck()) {
std::vector<std::string> ret;
if (string_object)
ret.push_back(AndroidHelpers::JStringToString(env, string_object));
return ret;
}
env->ExceptionClear();
return {};
}
if (!values_set)
return {};
LocalRefHolder<jobjectArray> values_array(
env, reinterpret_cast<jobjectArray>(env->CallObjectMethod(values_set, m_set_to_array)));
if (env->ExceptionCheck())
{
env->ExceptionClear();
return {};
}
if (!values_array)
return {};
jsize size = env->GetArrayLength(values_array);
std::vector<std::string> values;
values.reserve(size);
for (jsize i = 0; i < size; i++)
{
jstring str = reinterpret_cast<jstring>(env->GetObjectArrayElement(values_array, i));
values.push_back(AndroidHelpers::JStringToString(env, str));
env->DeleteLocalRef(str);
}
return values;
}
void AndroidSettingsInterface::SetStringList(const char* section, const char* key,
const std::vector<std::string>& items)
{
Log_DevPrintf("SetStringList(\"%s\", \"%s\")", section, key);
if (items.empty())
{
DeleteValue(section, key);
return;
}
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jobjectArray> items_array(env, env->NewObjectArray(static_cast<jsize>(items.size()), AndroidHelpers::GetStringClass(), nullptr));
for (size_t i = 0; i < items.size(); i++)
{
LocalRefHolder<jstring> item_jstr(env, env->NewStringUTF(items[i].c_str()));
env->SetObjectArrayElement(items_array, static_cast<jsize>(i), item_jstr);
}
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
env->CallStaticVoidMethod(m_helper_class, m_helper_set_string_list, m_java_shared_preferences, key_string.Get(), items_array.Get());
CheckForException(env, "SetStringList");
}
bool AndroidSettingsInterface::RemoveFromStringList(const char* section, const char* key, const char* item)
{
Log_DevPrintf("RemoveFromStringList(\"%s\", \"%s\", \"%s\")", section, key, item);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> item_string(env, env->NewStringUTF(item));
const bool result = env->CallStaticBooleanMethod(m_helper_class, m_helper_remove_from_string_list, m_java_shared_preferences, key_string.Get(), item_string.Get());
CheckForException(env, "RemoveFromStringList");
return result;
}
bool AndroidSettingsInterface::AddToStringList(const char* section, const char* key, const char* item)
{
Log_DevPrintf("AddToStringList(\"%s\", \"%s\", \"%s\")", section, key, item);
JNIEnv* env = AndroidHelpers::GetJNIEnv();
LocalRefHolder<jstring> key_string(env, env->NewStringUTF(GetSettingKey(section, key)));
LocalRefHolder<jstring> item_string(env, env->NewStringUTF(item));
const bool result = env->CallStaticBooleanMethod(m_helper_class, m_helper_add_to_string_list, m_java_shared_preferences, key_string.Get(), item_string.Get());
CheckForException(env, "AddToStringList");
return result;
}

View File

@@ -1,54 +0,0 @@
#pragma once
#include "core/settings.h"
#include <jni.h>
class AndroidSettingsInterface : public SettingsInterface
{
public:
AndroidSettingsInterface(jobject java_context);
~AndroidSettingsInterface();
bool Save() override;
void Clear() override;
int GetIntValue(const char* section, const char* key, int default_value = 0) override;
float GetFloatValue(const char* section, const char* key, float default_value = 0.0f) override;
bool GetBoolValue(const char* section, const char* key, bool default_value = false) override;
std::string GetStringValue(const char* section, const char* key, const char* default_value = "") override;
void SetIntValue(const char* section, const char* key, int value) override;
void SetFloatValue(const char* section, const char* key, float value) override;
void SetBoolValue(const char* section, const char* key, bool value) override;
void SetStringValue(const char* section, const char* key, const char* value) override;
void DeleteValue(const char* section, const char* key) override;
void ClearSection(const char* section) override;
std::vector<std::string> GetStringList(const char* section, const char* key) override;
void SetStringList(const char* section, const char* key, const std::vector<std::string>& items) override;
bool RemoveFromStringList(const char* section, const char* key, const char* item) override;
bool AddToStringList(const char* section, const char* key, const char* item) override;
private:
jobject GetPreferencesEditor(JNIEnv* env);
void CheckForException(JNIEnv* env, const char* task);
jclass m_set_class{};
jclass m_shared_preferences_class{};
jclass m_shared_preferences_editor_class{};
jclass m_helper_class{};
jobject m_java_shared_preferences{};
jmethodID m_get_boolean{};
jmethodID m_get_int{};
jmethodID m_get_float{};
jmethodID m_get_string{};
jmethodID m_get_string_set{};
jmethodID m_edit{};
jmethodID m_edit_set_string{};
jmethodID m_edit_commit{};
jmethodID m_edit_remove{};
jmethodID m_set_to_array{};
jmethodID m_helper_clear_section{};
jmethodID m_helper_add_to_string_list{};
jmethodID m_helper_remove_from_string_list{};
jmethodID m_helper_set_string_list{};
};

View File

@@ -1,209 +0,0 @@
#include "opensles_audio_stream.h"
#include "common/assert.h"
#include "common/log.h"
#include <cmath>
Log_SetChannel(OpenSLESAudioStream);
// Based off Dolphin's OpenSLESStream class.
OpenSLESAudioStream::OpenSLESAudioStream() = default;
OpenSLESAudioStream::~OpenSLESAudioStream()
{
if (IsOpen())
OpenSLESAudioStream::CloseDevice();
}
std::unique_ptr<AudioStream> OpenSLESAudioStream::Create()
{
return std::make_unique<OpenSLESAudioStream>();
}
bool OpenSLESAudioStream::OpenDevice()
{
DebugAssert(!IsOpen());
SLresult res = slCreateEngine(&m_engine, 0, nullptr, 0, nullptr, nullptr);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("slCreateEngine failed: %d", res);
return false;
}
res = (*m_engine)->Realize(m_engine, SL_BOOLEAN_FALSE);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("Realize(Engine) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_engine)->GetInterface(m_engine, SL_IID_ENGINE, &m_engine_engine);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("GetInterface(SL_IID_ENGINE) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_engine_engine)->CreateOutputMix(m_engine_engine, &m_output_mix, 0, 0, 0);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("CreateOutputMix failed: %d", res);
CloseDevice();
return false;
}
res = (*m_output_mix)->Realize(m_output_mix, SL_BOOLEAN_FALSE);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("Realize(OutputMix) mix failed: %d", res);
CloseDevice();
return false;
}
SLDataLocator_AndroidSimpleBufferQueue dloc_bq{SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, NUM_BUFFERS};
SLDataFormat_PCM format = {SL_DATAFORMAT_PCM,
m_channels,
m_output_sample_rate * 1000u,
SL_PCMSAMPLEFORMAT_FIXED_16,
SL_PCMSAMPLEFORMAT_FIXED_16,
SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT,
SL_BYTEORDER_LITTLEENDIAN};
SLDataSource dsrc{&dloc_bq, &format};
SLDataLocator_OutputMix dloc_outputmix{SL_DATALOCATOR_OUTPUTMIX, m_output_mix};
SLDataSink dsink{&dloc_outputmix, nullptr};
const std::array<SLInterfaceID, 2> ap_interfaces = {{SL_IID_BUFFERQUEUE, SL_IID_VOLUME}};
const std::array<SLboolean, 2> ap_interfaces_req = {{true, true}};
res = (*m_engine_engine)
->CreateAudioPlayer(m_engine_engine, &m_player, &dsrc, &dsink, static_cast<u32>(ap_interfaces.size()),
ap_interfaces.data(), ap_interfaces_req.data());
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("CreateAudioPlayer failed: %d", res);
CloseDevice();
return false;
}
res = (*m_player)->Realize(m_player, SL_BOOLEAN_FALSE);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("Realize(AudioPlayer) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_player)->GetInterface(m_player, SL_IID_PLAY, &m_play_interface);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("GetInterface(SL_IID_PLAY) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_player)->GetInterface(m_player, SL_IID_BUFFERQUEUE, &m_buffer_queue_interface);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("GetInterface(SL_IID_BUFFERQUEUE) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_player)->GetInterface(m_player, SL_IID_VOLUME, &m_volume_interface);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("GetInterface(SL_IID_VOLUME) failed: %d", res);
CloseDevice();
return false;
}
res = (*m_buffer_queue_interface)->RegisterCallback(m_buffer_queue_interface, BufferCallback, this);
if (res != SL_RESULT_SUCCESS)
{
Log_ErrorPrintf("Failed to register callback: %d", res);
CloseDevice();
return false;
}
for (u32 i = 0; i < NUM_BUFFERS; i++)
m_buffers[i] = std::make_unique<SampleType[]>(m_buffer_size * m_channels);
Log_InfoPrintf("OpenSL ES device opened: %uhz, %u channels, %u buffer size, %u buffers",
m_output_sample_rate, m_channels, m_buffer_size, NUM_BUFFERS);
return true;
}
void OpenSLESAudioStream::PauseDevice(bool paused)
{
if (m_paused == paused)
return;
SLresult res = (*m_play_interface)->SetPlayState(m_play_interface, paused ? SL_PLAYSTATE_PAUSED : SL_PLAYSTATE_PLAYING);
if (res != SL_RESULT_SUCCESS)
Log_ErrorPrintf("SetPlayState failed: %d", res);
if (!paused && !m_buffer_enqueued)
{
m_buffer_enqueued = true;
EnqueueBuffer();
}
m_paused = paused;
}
void OpenSLESAudioStream::CloseDevice()
{
m_buffers = {};
m_current_buffer = 0;
m_paused = true;
m_buffer_enqueued = false;
if (m_player)
{
(*m_player)->Destroy(m_player);
m_volume_interface = {};
m_buffer_queue_interface = {};
m_play_interface = {};
m_player = {};
}
if (m_output_mix)
{
(*m_output_mix)->Destroy(m_output_mix);
m_output_mix = {};
}
(*m_engine)->Destroy(m_engine);
m_engine_engine = {};
m_engine = {};
}
void OpenSLESAudioStream::SetOutputVolume(u32 volume)
{
const SLmillibel attenuation = (volume == 0) ?
SL_MILLIBEL_MIN :
static_cast<SLmillibel>(2000.0f * std::log10(static_cast<float>(volume) / 100.0f));
SLresult res = (*m_volume_interface)->SetVolumeLevel(m_volume_interface, attenuation);
if (res != SL_RESULT_SUCCESS)
Log_ErrorPrintf("SetVolumeLevel failed: %d", res);
}
void OpenSLESAudioStream::EnqueueBuffer()
{
SampleType* samples = m_buffers[m_current_buffer].get();
ReadFrames(samples, m_buffer_size, false);
SLresult res = (*m_buffer_queue_interface)
->Enqueue(m_buffer_queue_interface, samples, m_buffer_size * m_channels * sizeof(SampleType));
if (res != SL_RESULT_SUCCESS)
Log_ErrorPrintf("Enqueue buffer failed: %d", res);
m_current_buffer = (m_current_buffer + 1) % NUM_BUFFERS;
}
void OpenSLESAudioStream::BufferCallback(SLAndroidSimpleBufferQueueItf buffer_queue, void* context)
{
OpenSLESAudioStream* const this_ptr = static_cast<OpenSLESAudioStream*>(context);
this_ptr->EnqueueBuffer();
}
void OpenSLESAudioStream::FramesAvailable() {}

View File

@@ -1,48 +0,0 @@
#pragma once
#include "common/audio_stream.h"
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include <array>
#include <memory>
class OpenSLESAudioStream final : public AudioStream
{
public:
OpenSLESAudioStream();
~OpenSLESAudioStream();
static std::unique_ptr<AudioStream> Create();
void SetOutputVolume(u32 volume) override;
protected:
enum : u32
{
NUM_BUFFERS = 2
};
ALWAYS_INLINE bool IsOpen() const { return (m_engine != nullptr); }
bool OpenDevice() override;
void PauseDevice(bool paused) override;
void CloseDevice() override;
void FramesAvailable() override;
void EnqueueBuffer();
static void BufferCallback(SLAndroidSimpleBufferQueueItf buffer_queue, void* context);
SLObjectItf m_engine{};
SLEngineItf m_engine_engine{};
SLObjectItf m_output_mix{};
SLObjectItf m_player{};
SLPlayItf m_play_interface{};
SLAndroidSimpleBufferQueueItf m_buffer_queue_interface{};
SLVolumeItf m_volume_interface{};
std::array<std::unique_ptr<SampleType[]>, NUM_BUFFERS> m_buffers;
u32 m_current_buffer = 0;
bool m_paused = true;
bool m_buffer_enqueued = false;
};

View File

@@ -1,73 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.stenzek.duckstation">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".GameDirectoriesActivity"
android:label="@string/title_activity_game_directories"
android:theme="@style/AppTheme.NoActionBar"></activity>
<activity
android:name=".EmulationActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:immersive="true"
android:label="@string/title_activity_emulation"
android:parentActivityName=".MainActivity"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
android:exported="true">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.stenzek.duckstation.MainActivity" />
</activity>
<activity
android:name=".SettingsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.stenzek.duckstation.MainActivity" />
</activity>
<activity
android:name=".ControllerMappingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.stenzek.duckstation.MainActivity" />
</activity>
<activity
android:name=".GamePropertiesActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/activity_game_properties"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.github.stenzek.duckstation.MainActivity" />
</activity>
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -1,174 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.os.Environment;
import android.os.Process;
import android.util.Log;
import android.view.Surface;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
public class AndroidHostInterface {
public final static int DISPLAY_ALIGNMENT_TOP_OR_LEFT = 0;
public final static int DISPLAY_ALIGNMENT_CENTER = 1;
public final static int DISPLAY_ALIGNMENT_RIGHT_OR_BOTTOM = 2;
private long mNativePointer;
private Context mContext;
public AndroidHostInterface(Context context) {
this.mContext = context;
}
public void reportError(String message) {
Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
}
public void reportMessage(String message) {
Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
}
public InputStream openAssetStream(String path) {
try {
return mContext.getAssets().open(path, AssetManager.ACCESS_STREAMING);
} catch (IOException e) {
return null;
}
}
public void setContext(Context context) {
mContext = context;
}
static public native String getScmVersion();
static public native String getFullScmVersion();
static public native boolean setThreadAffinity(int[] cpus);
static public native AndroidHostInterface create(Context context, String userDirectory);
public native boolean isEmulationThreadRunning();
public native boolean runEmulationThread(EmulationActivity emulationActivity, String filename, boolean resumeState, String state_filename);
public native boolean isEmulationThreadPaused();
public native void pauseEmulationThread(boolean paused);
public native void stopEmulationThreadLoop();
public native boolean hasSurface();
public native void surfaceChanged(Surface surface, int format, int width, int height);
// TODO: Find a better place for this.
public native void setControllerType(int index, String typeName);
public native void setControllerButtonState(int index, int buttonCode, boolean pressed);
public native void setControllerAxisState(int index, int axisCode, float value);
public static native int getControllerButtonCode(String controllerType, String buttonName);
public static native int getControllerAxisCode(String controllerType, String axisName);
public static native String[] getControllerButtonNames(String controllerType);
public static native String[] getControllerAxisNames(String controllerType);
public native void handleControllerButtonEvent(int controllerIndex, int buttonIndex, boolean pressed);
public native void handleControllerAxisEvent(int controllerIndex, int axisIndex, float value);
public native String[] getInputProfileNames();
public native boolean loadInputProfile(String name);
public native boolean saveInputProfile(String name);
public native HotkeyInfo[] getHotkeyInfoList();
public native void refreshGameList(boolean invalidateCache, boolean invalidateDatabase, AndroidProgressCallback progressCallback);
public native GameListEntry[] getGameListEntries();
public native GameListEntry getGameListEntry(String path);
public native String getGameSettingValue(String path, String key);
public native void setGameSettingValue(String path, String key, String value);
public native void resetSystem();
public native void loadState(boolean global, int slot);
public native void saveState(boolean global, int slot);
public native void saveResumeState(boolean waitForCompletion);
public native void applySettings();
public native void setDisplayAlignment(int alignment);
public native PatchCode[] getPatchCodeList();
public native void setPatchCodeEnabled(int index, boolean enabled);
public native boolean importPatchCodesFromString(String str);
public native void addOSDMessage(String message, float duration);
public native boolean hasAnyBIOSImages();
public native String importBIOSImage(byte[] data);
public native boolean isFastForwardEnabled();
public native void setFastForwardEnabled(boolean enabled);
public native String[] getMediaPlaylistPaths();
public native int getMediaPlaylistIndex();
public native boolean setMediaPlaylistIndex(int index);
public native boolean setMediaFilename(String filename);
public native SaveStateInfo[] getSaveStateInfo(boolean includeEmpty);
static {
System.loadLibrary("duckstation-native");
}
static private AndroidHostInterface mInstance;
static public boolean createInstance(Context context) {
// Set user path.
String externalStorageDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
if (externalStorageDirectory.isEmpty())
externalStorageDirectory = "/sdcard";
externalStorageDirectory += "/duckstation";
Log.i("AndroidHostInterface", "User directory: " + externalStorageDirectory);
mInstance = create(context, externalStorageDirectory);
return mInstance != null;
}
static public boolean hasInstance() {
return mInstance != null;
}
static public AndroidHostInterface getInstance() {
return mInstance;
}
static public boolean hasInstanceAndEmulationThreadIsRunning() {
return hasInstance() && getInstance().isEmulationThreadRunning();
}
}

View File

@@ -1,139 +0,0 @@
package com.github.stenzek.duckstation;
import android.app.Activity;
import android.app.ProgressDialog;
import androidx.appcompat.app.AlertDialog;
public class AndroidProgressCallback {
private Activity mContext;
private ProgressDialog mDialog;
public AndroidProgressCallback(Activity context) {
mContext = context;
mDialog = new ProgressDialog(context);
mDialog.setMessage(context.getString(R.string.android_progress_callback_please_wait));
mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mDialog.setIndeterminate(false);
mDialog.setMax(100);
mDialog.setProgress(0);
mDialog.show();
}
public void dismiss() {
mDialog.dismiss();
}
public void setTitle(String text) {
mContext.runOnUiThread(() -> {
mDialog.setTitle(text);
});
}
public void setStatusText(String text) {
mContext.runOnUiThread(() -> {
mDialog.setMessage(text);
});
}
public void setProgressRange(int range) {
mContext.runOnUiThread(() -> {
mDialog.setMax(range);
});
}
public void setProgressValue(int value) {
mContext.runOnUiThread(() -> {
mDialog.setProgress(value);
});
}
public void modalError(String message) {
Object lock = new Object();
mContext.runOnUiThread(() -> {
new AlertDialog.Builder(mContext)
.setTitle("Error")
.setMessage(message)
.setPositiveButton(mContext.getString(R.string.android_progress_callback_ok), (dialog, button) -> {
dialog.dismiss();
})
.setOnDismissListener((dialogInterface) -> {
synchronized (lock) {
lock.notify();
}
})
.create()
.show();
});
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
}
}
}
public void modalInformation(String message) {
Object lock = new Object();
mContext.runOnUiThread(() -> {
new AlertDialog.Builder(mContext)
.setTitle(mContext.getString(R.string.android_progress_callback_information))
.setMessage(message)
.setPositiveButton(mContext.getString(R.string.android_progress_callback_ok), (dialog, button) -> {
dialog.dismiss();
})
.setOnDismissListener((dialogInterface) -> {
synchronized (lock) {
lock.notify();
}
})
.create()
.show();
});
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
}
}
}
private class ConfirmationResult {
public boolean result = false;
}
public boolean modalConfirmation(String message) {
ConfirmationResult result = new ConfirmationResult();
mContext.runOnUiThread(() -> {
new AlertDialog.Builder(mContext)
.setTitle(mContext.getString(R.string.android_progress_callback_confirmation))
.setMessage(message)
.setPositiveButton(mContext.getString(R.string.android_progress_callback_yes), (dialog, button) -> {
result.result = true;
dialog.dismiss();
})
.setNegativeButton(mContext.getString(R.string.android_progress_callback_no), (dialog, button) -> {
result.result = false;
dialog.dismiss();
})
.setOnDismissListener((dialogInterface) -> {
synchronized (result) {
result.notify();
}
})
.create()
.show();
});
synchronized (result) {
try {
result.wait();
} catch (InterruptedException e) {
}
}
return result.result;
}
}

View File

@@ -1,8 +0,0 @@
package com.github.stenzek.duckstation;
public enum ConsoleRegion {
AutoDetect,
NTSC_J,
NTSC_U,
PAL
}

View File

@@ -1,157 +0,0 @@
package com.github.stenzek.duckstation;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.ArraySet;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import java.util.HashMap;
public class ControllerBindingDialog extends AlertDialog {
private boolean mIsAxis;
private String mSettingKey;
private String mCurrentBinding;
public ControllerBindingDialog(Context context, String buttonName, String settingKey, String currentBinding, boolean isAxis) {
super(context);
mIsAxis = isAxis;
mSettingKey = settingKey;
mCurrentBinding = currentBinding;
if (mCurrentBinding == null)
mCurrentBinding = getContext().getString(R.string.controller_binding_dialog_no_binding);
setTitle(buttonName);
updateMessage();
setButton(BUTTON_POSITIVE, context.getString(R.string.controller_binding_dialog_cancel), (dialogInterface, button) -> dismiss());
setButton(BUTTON_NEGATIVE, context.getString(R.string.controller_binding_dialog_clear), (dialogInterface, button) -> {
mCurrentBinding = null;
updateBinding();
dismiss();
});
setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (onKeyDown(keyCode, event))
return true;
return false;
}
});
}
private void updateMessage() {
setMessage(String.format(getContext().getString(R.string.controller_binding_dialog_message), mCurrentBinding));
}
private void updateBinding() {
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
if (mCurrentBinding != null) {
ArraySet<String> values = new ArraySet<>();
values.add(mCurrentBinding);
editor.putStringSet(mSettingKey, values);
} else {
try {
editor.remove(mSettingKey);
} catch (Exception e) {
}
}
editor.commit();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mIsAxis || !EmulationSurfaceView.isDPadOrButtonEvent(event))
return super.onKeyUp(keyCode, event);
int buttonIndex = EmulationSurfaceView.getButtonIndexForKeyCode(keyCode);
if (buttonIndex < 0)
return super.onKeyUp(keyCode, event);
// TODO: Multiple controllers
final int controllerIndex = 0;
mCurrentBinding = String.format("Controller%d/Button%d", controllerIndex, buttonIndex);
updateMessage();
updateBinding();
dismiss();
return true;
}
private int mUpdatedAxisCode = -1;
private void setAxisCode(int axisCode, boolean positive) {
final int axisIndex = EmulationSurfaceView.getAxisIndexForAxisCode(axisCode);
if (mUpdatedAxisCode >= 0 || axisIndex < 0)
return;
mUpdatedAxisCode = axisCode;
final int controllerIndex = 0;
if (mIsAxis)
mCurrentBinding = String.format("Controller%d/Axis%d", controllerIndex, axisIndex);
else
mCurrentBinding = String.format("Controller%d/%cAxis%d", controllerIndex, (positive) ? '+' : '-', axisIndex);
updateBinding();
updateMessage();
dismiss();
}
final static float DETECT_THRESHOLD = 0.25f;
private HashMap<Integer, float[]> mStartingAxisValues = new HashMap<>();
private boolean doAxisDetection(MotionEvent event) {
if ((event.getSource() & (InputDevice.SOURCE_JOYSTICK | InputDevice.SOURCE_GAMEPAD | InputDevice.SOURCE_DPAD)) == 0)
return false;
final int[] axisCodes = EmulationSurfaceView.getKnownAxisCodes();
final int deviceId = event.getDeviceId();
if (!mStartingAxisValues.containsKey(deviceId)) {
final float[] axisValues = new float[axisCodes.length];
for (int axisIndex = 0; axisIndex < axisCodes.length; axisIndex++) {
final int axisCode = axisCodes[axisIndex];
// these are binary, so start at zero
if (axisCode == MotionEvent.AXIS_HAT_X || axisCode == MotionEvent.AXIS_HAT_Y)
axisValues[axisIndex] = 0.0f;
else
axisValues[axisIndex] = event.getAxisValue(axisCode);
}
mStartingAxisValues.put(deviceId, axisValues);
}
final float[] axisValues = mStartingAxisValues.get(deviceId);
for (int axisIndex = 0; axisIndex < axisCodes.length; axisIndex++) {
final float newValue = event.getAxisValue(axisCodes[axisIndex]);
if (Math.abs(newValue - axisValues[axisIndex]) >= DETECT_THRESHOLD) {
setAxisCode(axisCodes[axisIndex], newValue >= 0.0f);
break;
}
}
return true;
}
@Override
public boolean onGenericMotionEvent(@NonNull MotionEvent event) {
if (doAxisDetection(event))
return true;
return super.onGenericMotionEvent(event);
}
}

View File

@@ -1,178 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceViewHolder;
import java.util.Set;
public class ControllerBindingPreference extends Preference {
private enum Type {
BUTTON,
AXIS,
HOTKEY
}
private String mBindingName;
private String mValue;
private TextView mValueView;
private Type mType = Type.BUTTON;
private static int getIconForButton(String buttonName) {
if (buttonName.equals("Up")) {
return R.drawable.ic_controller_up_button_pressed;
} else if (buttonName.equals("Right")) {
return R.drawable.ic_controller_right_button_pressed;
} else if (buttonName.equals("Down")) {
return R.drawable.ic_controller_down_button_pressed;
} else if (buttonName.equals("Left")) {
return R.drawable.ic_controller_left_button_pressed;
} else if (buttonName.equals("Triangle")) {
return R.drawable.ic_controller_triangle_button_pressed;
} else if (buttonName.equals("Circle")) {
return R.drawable.ic_controller_circle_button_pressed;
} else if (buttonName.equals("Cross")) {
return R.drawable.ic_controller_cross_button_pressed;
} else if (buttonName.equals("Square")) {
return R.drawable.ic_controller_square_button_pressed;
} else if (buttonName.equals("Start")) {
return R.drawable.ic_controller_start_button_pressed;
} else if (buttonName.equals("Select")) {
return R.drawable.ic_controller_select_button_pressed;
} else if (buttonName.equals("L1")) {
return R.drawable.ic_controller_l1_button_pressed;
} else if (buttonName.equals("L2")) {
return R.drawable.ic_controller_l2_button_pressed;
} else if (buttonName.equals("R1")) {
return R.drawable.ic_controller_r1_button_pressed;
} else if (buttonName.equals("R2")) {
return R.drawable.ic_controller_r2_button_pressed;
}
return R.drawable.ic_baseline_radio_button_unchecked_24;
}
private static int getIconForAxis(String axisName) {
return R.drawable.ic_baseline_radio_button_checked_24;
}
private static int getIconForHotkey(String hotkeyDisplayName) {
return R.drawable.ic_baseline_category_24;
}
public ControllerBindingPreference(Context context, AttributeSet attrs) {
this(context, attrs, 0);
setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
setIconSpaceReserved(false);
}
public ControllerBindingPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
setIconSpaceReserved(false);
}
public ControllerBindingPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
setWidgetLayoutResource(R.layout.layout_controller_binding_preference);
setIconSpaceReserved(false);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
ImageView iconView = ((ImageView) holder.findViewById(R.id.controller_binding_icon));
TextView nameView = ((TextView) holder.findViewById(R.id.controller_binding_name));
mValueView = ((TextView) holder.findViewById(R.id.controller_binding_value));
int drawableId = R.drawable.ic_baseline_radio_button_checked_24;
switch (mType) {
case BUTTON:
drawableId = getIconForButton(mBindingName);
break;
case AXIS:
drawableId = getIconForAxis(mBindingName);
break;
case HOTKEY:
drawableId = getIconForHotkey(mBindingName);
break;
}
iconView.setImageDrawable(ContextCompat.getDrawable(getContext(), drawableId));
nameView.setText(mBindingName);
updateValue();
}
@Override
protected void onClick() {
ControllerBindingDialog dialog = new ControllerBindingDialog(getContext(), mBindingName, getKey(), mValue, (mType == Type.AXIS));
dialog.setOnDismissListener((dismissedDialog) -> updateValue());
dialog.show();
}
public void initButton(int controllerIndex, String buttonName) {
mBindingName = buttonName;
mType = Type.BUTTON;
setKey(String.format("Controller%d/Button%s", controllerIndex, buttonName));
updateValue();
}
public void initAxis(int controllerIndex, String axisName) {
mBindingName = axisName;
mType = Type.AXIS;
setKey(String.format("Controller%d/Axis%s", controllerIndex, axisName));
updateValue();
}
public void initHotkey(HotkeyInfo hotkeyInfo) {
mBindingName = hotkeyInfo.getDisplayName();
mType = Type.HOTKEY;
setKey(hotkeyInfo.getBindingConfigKey());
updateValue();
}
private void updateValue(String value) {
mValue = value;
if (mValueView != null) {
if (value != null)
mValueView.setText(value);
else
mValueView.setText(getContext().getString(R.string.controller_binding_dialog_no_binding));
}
}
public void updateValue() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
Set<String> values = PreferenceHelpers.getStringSet(prefs, getKey());
if (values != null) {
StringBuilder sb = new StringBuilder();
for (String value : values) {
if (sb.length() > 0)
sb.append(", ");
sb.append(value);
}
updateValue(sb.toString());
} else {
updateValue(null);
}
}
public void clearBinding(SharedPreferences.Editor prefEditor) {
try {
prefEditor.remove(getKey());
} catch (Exception e) {
}
updateValue(null);
}
}

View File

@@ -1,271 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import java.util.ArrayList;
public class ControllerMappingActivity extends AppCompatActivity {
private static final int NUM_CONTROLLER_PORTS = 2;
private ArrayList<ControllerBindingPreference> mPreferences = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsCollectionFragment(this))
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(R.string.controller_mapping_activity_title);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_controller_mapping, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
final int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_load_profile) {
doLoadProfile();
return true;
} else if (id == R.id.action_save_profile) {
doSaveProfile();
return true;
} else if (id == R.id.action_clear_bindings) {
doClearBindings();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
private void displayError(String text) {
new AlertDialog.Builder(this)
.setTitle(R.string.emulation_activity_error)
.setMessage(text)
.setNegativeButton(R.string.main_activity_ok, ((dialog, which) -> dialog.dismiss()))
.create()
.show();
}
private void doLoadProfile() {
final String[] profileNames = AndroidHostInterface.getInstance().getInputProfileNames();
if (profileNames == null) {
displayError(getString(R.string.controller_mapping_activity_no_profiles_found));
return;
}
new AlertDialog.Builder(this)
.setTitle(R.string.controller_mapping_activity_select_input_profile)
.setItems(profileNames, (dialog, choice) -> {
doLoadProfile(profileNames[choice]);
dialog.dismiss();
})
.setNegativeButton("Cancel", ((dialog, which) -> dialog.dismiss()))
.create()
.show();
}
private void doLoadProfile(String profileName) {
if (!AndroidHostInterface.getInstance().loadInputProfile(profileName)) {
displayError(String.format(getString(R.string.controller_mapping_activity_failed_to_load_profile), profileName));
return;
}
updateAllBindings();
}
private void doSaveProfile() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
builder.setTitle(R.string.controller_mapping_activity_input_profile_name);
builder.setView(input);
builder.setPositiveButton(R.string.controller_mapping_activity_save, (dialog, which) -> {
final String name = input.getText().toString();
if (name.isEmpty()) {
displayError(getString(R.string.controller_mapping_activity_name_must_be_provided));
return;
}
if (!AndroidHostInterface.getInstance().saveInputProfile(name)) {
displayError(getString(R.string.controller_mapping_activity_failed_to_save_input_profile));
return;
}
Toast.makeText(ControllerMappingActivity.this, String.format(ControllerMappingActivity.this.getString(R.string.controller_mapping_activity_input_profile_saved), name),
Toast.LENGTH_LONG).show();
});
builder.setNegativeButton(R.string.controller_mapping_activity_cancel, (dialog, which) -> dialog.dismiss());
builder.create().show();
}
private void doClearBindings() {
SharedPreferences.Editor prefEdit = PreferenceManager.getDefaultSharedPreferences(this).edit();
for (ControllerBindingPreference pref : mPreferences)
pref.clearBinding(prefEdit);
prefEdit.commit();
}
private void updateAllBindings() {
for (ControllerBindingPreference pref : mPreferences)
pref.updateValue();
}
public static class ControllerPortFragment extends PreferenceFragmentCompat {
private ControllerMappingActivity activity;
private int controllerIndex;
public ControllerPortFragment(ControllerMappingActivity activity, int controllerIndex) {
this.activity = activity;
this.controllerIndex = controllerIndex;
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
final SharedPreferences sp = getPreferenceManager().getSharedPreferences();
final String defaultControllerType = controllerIndex == 0 ? "DigitalController" : "None";
String controllerType = sp.getString(String.format("Controller%d/Type", controllerIndex), defaultControllerType);
String[] controllerButtons = AndroidHostInterface.getControllerButtonNames(controllerType);
String[] axisButtons = AndroidHostInterface.getControllerAxisNames(controllerType);
final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
if (controllerButtons != null) {
for (String buttonName : controllerButtons) {
final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
cbp.initButton(controllerIndex, buttonName);
ps.addPreference(cbp);
activity.mPreferences.add(cbp);
}
}
if (axisButtons != null) {
for (String axisName : axisButtons) {
final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
cbp.initAxis(controllerIndex, axisName);
ps.addPreference(cbp);
activity.mPreferences.add(cbp);
}
}
setPreferenceScreen(ps);
}
}
public static class HotkeyFragment extends PreferenceFragmentCompat {
private ControllerMappingActivity activity;
private HotkeyInfo[] mHotkeyInfo;
public HotkeyFragment(ControllerMappingActivity activity) {
this.activity = activity;
this.mHotkeyInfo = AndroidHostInterface.getInstance().getHotkeyInfoList();
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
if (mHotkeyInfo != null) {
for (HotkeyInfo hotkeyInfo : mHotkeyInfo) {
final ControllerBindingPreference cbp = new ControllerBindingPreference(getContext(), null);
cbp.initHotkey(hotkeyInfo);
ps.addPreference(cbp);
activity.mPreferences.add(cbp);
}
}
setPreferenceScreen(ps);
}
}
public static class SettingsCollectionFragment extends Fragment {
private ControllerMappingActivity activity;
private SettingsCollectionAdapter adapter;
private ViewPager2 viewPager;
public SettingsCollectionFragment(ControllerMappingActivity activity) {
this.activity = activity;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_controller_mapping, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
adapter = new SettingsCollectionAdapter(activity, this);
viewPager = view.findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
TabLayout tabLayout = view.findViewById(R.id.tab_layout);
new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
if (position == NUM_CONTROLLER_PORTS)
tab.setText("Hotkeys");
else
tab.setText(String.format("Port %d", position + 1));
}).attach();
}
}
public static class SettingsCollectionAdapter extends FragmentStateAdapter {
private ControllerMappingActivity activity;
public SettingsCollectionAdapter(@NonNull ControllerMappingActivity activity, @NonNull Fragment fragment) {
super(fragment);
this.activity = activity;
}
@NonNull
@Override
public Fragment createFragment(int position) {
if (position != NUM_CONTROLLER_PORTS)
return new ControllerPortFragment(activity, position + 1);
else
return new HotkeyFragment(activity);
}
@Override
public int getItemCount() {
return NUM_CONTROLLER_PORTS + 1;
}
}
}

View File

@@ -1,8 +0,0 @@
package com.github.stenzek.duckstation;
public enum DiscRegion {
NTSC_J,
NTSC_U,
PAL,
Other
}

View File

@@ -1,720 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.hardware.input.InputManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.Display;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.PreferenceManager;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*/
public class EmulationActivity extends AppCompatActivity implements SurfaceHolder.Callback {
/**
* Settings interfaces.
*/
private SharedPreferences mPreferences;
private boolean mWasDestroyed = false;
private boolean mStopRequested = false;
private boolean mApplySettingsOnSurfaceRestored = false;
private String mGameTitle = null;
private EmulationSurfaceView mContentView;
private boolean getBooleanSetting(String key, boolean defaultValue) {
return mPreferences.getBoolean(key, defaultValue);
}
private void setBooleanSetting(String key, boolean value) {
SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(key, value);
editor.apply();
}
private String getStringSetting(String key, String defaultValue) {
return mPreferences.getString(key, defaultValue);
}
private void setStringSetting(String key, String value) {
SharedPreferences.Editor editor = mPreferences.edit();
editor.putString(key, value);
editor.apply();
}
private void reportErrorOnUIThread(String message) {
// Toast.makeText(this, message, Toast.LENGTH_LONG);
new AlertDialog.Builder(this)
.setTitle(R.string.emulation_activity_error)
.setMessage(message)
.setPositiveButton(R.string.emulation_activity_ok, (dialog, button) -> {
dialog.dismiss();
enableFullscreenImmersive();
})
.create()
.show();
}
public void reportError(String message) {
Log.e("EmulationActivity", message);
Object lock = new Object();
runOnUiThread(() -> {
// Toast.makeText(this, message, Toast.LENGTH_LONG);
new AlertDialog.Builder(this)
.setTitle(R.string.emulation_activity_error)
.setMessage(message)
.setPositiveButton(R.string.emulation_activity_ok, (dialog, button) -> {
dialog.dismiss();
enableFullscreenImmersive();
synchronized (lock) {
lock.notify();
}
})
.create()
.show();
});
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
}
}
}
private EmulationThread mEmulationThread;
private void stopEmulationThread() {
if (mEmulationThread == null)
return;
mEmulationThread.stopAndJoin();
mEmulationThread = null;
}
public void onEmulationStarted() {
runOnUiThread(() -> {
updateRequestedOrientation();
updateOrientation();
});
}
public void onEmulationStopped() {
runOnUiThread(() -> {
if (!mWasDestroyed && !mStopRequested)
finish();
});
}
public void onGameTitleChanged(String title) {
runOnUiThread(() -> {
mGameTitle = title;
});
}
public float getRefreshRate() {
WindowManager windowManager = getWindowManager();
if (windowManager == null) {
windowManager = ((WindowManager) getSystemService(Context.WINDOW_SERVICE));
if (windowManager == null)
return -1.0f;
}
Display display = windowManager.getDefaultDisplay();
if (display == null)
return -1.0f;
return display.getRefreshRate();
}
public void openPauseMenu() {
runOnUiThread(() -> {
showMenu();
});
}
private void doApplySettings() {
AndroidHostInterface.getInstance().applySettings();
updateRequestedOrientation();
updateControllers();
updateSustainedPerformanceMode();
}
private void applySettings() {
if (!AndroidHostInterface.getInstance().isEmulationThreadRunning())
return;
if (AndroidHostInterface.getInstance().hasSurface()) {
doApplySettings();
} else {
mApplySettingsOnSurfaceRestored = true;
}
}
/// Ends the activity if it was restored without properly being created.
private boolean checkActivityIsValid() {
if (!AndroidHostInterface.hasInstance() || !AndroidHostInterface.getInstance().isEmulationThreadRunning()) {
finish();
return false;
}
return true;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Once we get a surface, we can boot.
AndroidHostInterface.getInstance().surfaceChanged(holder.getSurface(), format, width, height);
if (mEmulationThread != null) {
updateOrientation();
if (mApplySettingsOnSurfaceRestored) {
mApplySettingsOnSurfaceRestored = false;
doApplySettings();
}
return;
}
final String bootPath = getIntent().getStringExtra("bootPath");
final boolean saveStateOnExit = getBooleanSetting("Main/SaveStateOnExit", true);
final boolean resumeState = getIntent().getBooleanExtra("resumeState", saveStateOnExit);
final String bootSaveStatePath = getIntent().getStringExtra("saveStatePath");
mEmulationThread = EmulationThread.create(this, bootPath, resumeState, bootSaveStatePath);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.i("EmulationActivity", "Surface destroyed");
// Save the resume state in case we never get back again...
if (AndroidHostInterface.getInstance().isEmulationThreadRunning() && !mStopRequested)
AndroidHostInterface.getInstance().saveResumeState(true);
AndroidHostInterface.getInstance().surfaceChanged(null, 0, 0, 0);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
super.onCreate(savedInstanceState);
Log.i("EmulationActivity", "OnCreate");
// we might be coming from a third-party launcher if the host interface isn't setup
if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
finish();
return;
}
enableFullscreenImmersive();
setContentView(R.layout.activity_emulation);
mContentView = findViewById(R.id.fullscreen_content);
mContentView.getHolder().addCallback(this);
mContentView.setFocusableInTouchMode(true);
mContentView.setFocusable(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mContentView.setFocusedByDefault(true);
}
mContentView.requestFocus();
// Sort out rotation.
updateOrientation();
updateSustainedPerformanceMode();
// Hook up controller input.
updateControllers();
registerInputDeviceListener();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
enableFullscreenImmersive();
}
@Override
protected void onPostResume() {
super.onPostResume();
enableFullscreenImmersive();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("EmulationActivity", "OnStop");
if (mEmulationThread != null) {
mWasDestroyed = true;
stopEmulationThread();
}
unregisterInputDeviceListener();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (!checkActivityIsValid()) {
// we must've got killed off in the background :(
return;
}
if (requestCode == REQUEST_CODE_SETTINGS) {
if (AndroidHostInterface.getInstance().isEmulationThreadRunning()) {
applySettings();
}
} else if (requestCode == REQUEST_IMPORT_PATCH_CODES) {
if (data == null)
return;
importPatchesFromFile(data.getData());
} else if (requestCode == REQUEST_CHANGE_DISC_FILE) {
if (data == null)
return;
String path = GameDirectoriesActivity.getPathFromUri(this, data.getData());
if (path == null)
return;
AndroidHostInterface.getInstance().setMediaFilename(path);
}
}
@Override
public void onBackPressed() {
showMenu();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (mContentView.onKeyDown(event.getKeyCode(), event))
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
if (mContentView.onKeyUp(event.getKeyCode(), event))
return true;
}
return super.dispatchKeyEvent(event);
}
@Override
public boolean dispatchGenericMotionEvent(MotionEvent ev) {
if (mContentView.onGenericMotionEvent(ev))
return true;
return super.dispatchGenericMotionEvent(ev);
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (checkActivityIsValid())
updateOrientation(newConfig.orientation);
}
private void updateRequestedOrientation() {
final String orientation = getStringSetting("Main/EmulationScreenOrientation", "unspecified");
if (orientation.equals("portrait"))
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
else if (orientation.equals("landscape"))
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE);
else
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
private void updateOrientation() {
final int orientation = getResources().getConfiguration().orientation;
updateOrientation(orientation);
}
private void updateOrientation(int newOrientation) {
if (newOrientation == Configuration.ORIENTATION_PORTRAIT)
AndroidHostInterface.getInstance().setDisplayAlignment(AndroidHostInterface.DISPLAY_ALIGNMENT_TOP_OR_LEFT);
else
AndroidHostInterface.getInstance().setDisplayAlignment(AndroidHostInterface.DISPLAY_ALIGNMENT_CENTER);
if (mTouchscreenController != null)
mTouchscreenController.updateOrientation();
}
private void enableFullscreenImmersive() {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
if (mContentView != null)
mContentView.requestFocus();
}
private static final int REQUEST_CODE_SETTINGS = 0;
private static final int REQUEST_IMPORT_PATCH_CODES = 1;
private static final int REQUEST_CHANGE_DISC_FILE = 2;
private void onMenuClosed() {
enableFullscreenImmersive();
if (AndroidHostInterface.getInstance().isEmulationThreadPaused())
AndroidHostInterface.getInstance().pauseEmulationThread(false);
}
private void showMenu() {
if (getBooleanSetting("Main/PauseOnMenu", false) &&
!AndroidHostInterface.getInstance().isEmulationThreadPaused()) {
AndroidHostInterface.getInstance().pauseEmulationThread(true);
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (mGameTitle != null && !mGameTitle.isEmpty())
builder.setTitle(mGameTitle);
builder.setItems(R.array.emulation_menu, (dialogInterface, i) -> {
switch (i) {
case 0: // Load State
{
showSaveStateMenu(false);
return;
}
case 1: // Save State
{
showSaveStateMenu(true);
return;
}
case 2: // Toggle Fast Forward
{
AndroidHostInterface.getInstance().setFastForwardEnabled(!AndroidHostInterface.getInstance().isFastForwardEnabled());
onMenuClosed();
return;
}
case 3: // More Options
{
showMoreMenu();
return;
}
case 4: // Quit
{
mStopRequested = true;
finish();
return;
}
}
});
builder.setOnCancelListener(dialogInterface -> onMenuClosed());
builder.create().show();
}
private void showSaveStateMenu(boolean saving) {
final SaveStateInfo[] infos = AndroidHostInterface.getInstance().getSaveStateInfo(true);
if (infos == null) {
onMenuClosed();
return;
}
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final ListView listView = new ListView(this);
listView.setAdapter(new SaveStateInfo.ListAdapter(this, infos));
builder.setView(listView);
builder.setOnDismissListener((dialog) -> {
onMenuClosed();
});
final AlertDialog dialog = builder.create();
listView.setOnItemClickListener((parent, view, position, id) -> {
SaveStateInfo info = infos[position];
if (saving) {
AndroidHostInterface.getInstance().saveState(info.isGlobal(), info.getSlot());
} else {
AndroidHostInterface.getInstance().loadState(info.isGlobal(), info.getSlot());
}
dialog.dismiss();
});
dialog.show();
}
private void showMoreMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (mGameTitle != null && !mGameTitle.isEmpty())
builder.setTitle(mGameTitle);
builder.setItems(R.array.emulation_more_menu, (dialogInterface, i) -> {
switch (i) {
case 0: // Reset
{
AndroidHostInterface.getInstance().resetSystem();
onMenuClosed();
return;
}
case 1: // Patch Codes
{
showPatchesMenu();
return;
}
case 2: // Change Disc
{
showDiscChangeMenu();
return;
}
case 3: // Settings
{
Intent intent = new Intent(EmulationActivity.this, SettingsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent, REQUEST_CODE_SETTINGS);
return;
}
case 4: // Change Touchscreen Controller
{
showTouchscreenControllerMenu();
return;
}
case 5: // Edit Touchscreen Controller Layout
{
if (mTouchscreenController != null)
mTouchscreenController.startLayoutEditing();
onMenuClosed();
return;
}
}
});
builder.setOnCancelListener(dialogInterface -> onMenuClosed());
builder.create().show();
}
private void showTouchscreenControllerMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(R.array.settings_touchscreen_controller_view_entries, (dialogInterface, i) -> {
String[] values = getResources().getStringArray(R.array.settings_touchscreen_controller_view_values);
setStringSetting("Controller1/TouchscreenControllerView", values[i]);
updateControllers();
onMenuClosed();
});
builder.setOnCancelListener(dialogInterface -> onMenuClosed());
builder.create().show();
}
private void showPatchesMenu() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final PatchCode[] codes = AndroidHostInterface.getInstance().getPatchCodeList();
if (codes != null) {
CharSequence[] items = new CharSequence[codes.length];
boolean[] itemsChecked = new boolean[codes.length];
for (int i = 0; i < codes.length; i++) {
final PatchCode cc = codes[i];
items[i] = cc.getDescription();
itemsChecked[i] = cc.isEnabled();
}
builder.setMultiChoiceItems(items, itemsChecked, (dialogInterface, i, checked) -> {
AndroidHostInterface.getInstance().setPatchCodeEnabled(i, checked);
});
}
builder.setNegativeButton(R.string.emulation_activity_ok, (dialogInterface, i) -> {
dialogInterface.dismiss();
});
builder.setNeutralButton(R.string.emulation_activity_import_patch_codes, (dialogInterface, i) -> {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.emulation_activity_choose_patch_code_file)), REQUEST_IMPORT_PATCH_CODES);
});
builder.setOnDismissListener(dialogInterface -> onMenuClosed());
builder.create().show();
}
private void importPatchesFromFile(Uri uri) {
String str = FileUtil.readFileFromUri(this, uri, 512 * 1024);
if (str == null || !AndroidHostInterface.getInstance().importPatchCodesFromString(str)) {
reportErrorOnUIThread(getString(R.string.emulation_activity_failed_to_import_patch_codes));
}
}
private void showDiscChangeMenu() {
final String[] paths = AndroidHostInterface.getInstance().getMediaPlaylistPaths();
final int currentPath = AndroidHostInterface.getInstance().getMediaPlaylistIndex();
final int numPaths = (paths != null) ? paths.length : 0;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
CharSequence[] items = new CharSequence[numPaths + 1];
for (int i = 0; i < numPaths; i++)
items[i] = GameListEntry.getFileNameForPath(paths[i]);
items[numPaths] = "Select New File...";
builder.setSingleChoiceItems(items, (currentPath < numPaths) ? currentPath : -1, (dialogInterface, i) -> {
dialogInterface.dismiss();
onMenuClosed();
if (i < numPaths) {
AndroidHostInterface.getInstance().setMediaPlaylistIndex(i);
} else {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_CHANGE_DISC_FILE);
}
});
builder.setOnCancelListener(dialogInterface -> onMenuClosed());
builder.create().show();
}
/**
* Touchscreen controller overlay
*/
TouchscreenControllerView mTouchscreenController;
public void updateControllers() {
final String controllerType = getStringSetting("Controller1/Type", "DigitalController");
final String viewType = getStringSetting("Controller1/TouchscreenControllerView", "digital");
final boolean autoHideTouchscreenController = getBooleanSetting("Controller1/AutoHideTouchscreenController", false);
final boolean hapticFeedback = getBooleanSetting("Controller1/HapticFeedback", false);
final boolean vibration = getBooleanSetting("Controller1/Vibration", false);
final FrameLayout activityLayout = findViewById(R.id.frameLayout);
Log.i("EmulationActivity", "Controller type: " + controllerType);
Log.i("EmulationActivity", "View type: " + viewType);
final boolean hasAnyControllers = mContentView.initControllerMapping(controllerType);
if (controllerType.equals("none") || viewType.equals("none") || (hasAnyControllers && autoHideTouchscreenController)) {
if (mTouchscreenController != null) {
activityLayout.removeView(mTouchscreenController);
mTouchscreenController = null;
mVibratorService = null;
}
} else {
if (mTouchscreenController == null) {
mTouchscreenController = new TouchscreenControllerView(this);
if (vibration)
mVibratorService = (Vibrator) getSystemService(VIBRATOR_SERVICE);
activityLayout.addView(mTouchscreenController);
}
mTouchscreenController.init(0, controllerType, viewType, hapticFeedback);
}
}
private InputManager.InputDeviceListener mInputDeviceListener;
private void registerInputDeviceListener() {
if (mInputDeviceListener != null)
return;
mInputDeviceListener = new InputManager.InputDeviceListener() {
@Override
public void onInputDeviceAdded(int i) {
Log.i("EmulationActivity", String.format("InputDeviceAdded %d", i));
updateControllers();
}
@Override
public void onInputDeviceRemoved(int i) {
Log.i("EmulationActivity", String.format("InputDeviceRemoved %d", i));
updateControllers();
}
@Override
public void onInputDeviceChanged(int i) {
Log.i("EmulationActivity", String.format("InputDeviceChanged %d", i));
updateControllers();
}
};
InputManager inputManager = ((InputManager) getSystemService(Context.INPUT_SERVICE));
if (inputManager != null)
inputManager.registerInputDeviceListener(mInputDeviceListener, null);
}
private void unregisterInputDeviceListener() {
if (mInputDeviceListener == null)
return;
InputManager inputManager = ((InputManager) getSystemService(Context.INPUT_SERVICE));
if (inputManager != null)
inputManager.unregisterInputDeviceListener(mInputDeviceListener);
mInputDeviceListener = null;
}
private Vibrator mVibratorService;
public void setVibration(boolean enabled) {
if (mVibratorService == null)
return;
runOnUiThread(() -> {
if (mVibratorService == null)
return;
if (enabled)
mVibratorService.vibrate(1000);
else
mVibratorService.cancel();
});
}
private boolean mSustainedPerformanceModeEnabled = false;
private void updateSustainedPerformanceMode() {
final boolean enabled = getBooleanSetting("Main/SustainedPerformanceMode", false);
if (mSustainedPerformanceModeEnabled == enabled)
return;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
getWindow().setSustainedPerformanceMode(enabled);
Log.i("EmulationActivity", String.format("%s sustained performance mode.", enabled ? "enabling" : "disabling"));
} else {
Log.e("EmulationActivity", "Sustained performance mode not supported.");
}
mSustainedPerformanceModeEnabled = enabled;
}
}

View File

@@ -1,349 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.AttributeSet;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceView;
import androidx.core.util.Pair;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class EmulationSurfaceView extends SurfaceView {
public EmulationSurfaceView(Context context) {
super(context);
}
public EmulationSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EmulationSurfaceView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public static boolean isDPadOrButtonEvent(KeyEvent event) {
final int source = event.getSource();
return (source & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD ||
(source & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD ||
(source & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK;
}
private boolean isExternalKeyCode(int keyCode) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_HOME:
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_MUTE:
case KeyEvent.KEYCODE_POWER:
case KeyEvent.KEYCODE_CAMERA:
case KeyEvent.KEYCODE_CALL:
case KeyEvent.KEYCODE_ENDCALL:
case KeyEvent.KEYCODE_VOICE_ASSIST:
return true;
default:
return false;
}
}
private static final int[] buttonKeyCodes = new int[]{
KeyEvent.KEYCODE_BUTTON_A, // 0/Cross
KeyEvent.KEYCODE_BUTTON_B, // 1/Circle
KeyEvent.KEYCODE_BUTTON_X, // 2/Square
KeyEvent.KEYCODE_BUTTON_Y, // 3/Triangle
KeyEvent.KEYCODE_BUTTON_SELECT, // 4/Select
KeyEvent.KEYCODE_BUTTON_MODE, // 5/Analog
KeyEvent.KEYCODE_BUTTON_START, // 6/Start
KeyEvent.KEYCODE_BUTTON_THUMBL, // 7/L3
KeyEvent.KEYCODE_BUTTON_THUMBR, // 8/R3
KeyEvent.KEYCODE_BUTTON_L1, // 9/L1
KeyEvent.KEYCODE_BUTTON_R1, // 10/R1
KeyEvent.KEYCODE_DPAD_UP, // 11/Up
KeyEvent.KEYCODE_DPAD_DOWN, // 12/Down
KeyEvent.KEYCODE_DPAD_LEFT, // 13/Left
KeyEvent.KEYCODE_DPAD_RIGHT, // 14/Right
KeyEvent.KEYCODE_BUTTON_L2, // 15
KeyEvent.KEYCODE_BUTTON_R2, // 16
KeyEvent.KEYCODE_BUTTON_C, // 17
KeyEvent.KEYCODE_BUTTON_Z, // 18
KeyEvent.KEYCODE_VOLUME_DOWN, // 19
KeyEvent.KEYCODE_VOLUME_UP, // 20
KeyEvent.KEYCODE_MENU, // 21
KeyEvent.KEYCODE_CAMERA, // 22
};
private static final int[] axisCodes = new int[]{
MotionEvent.AXIS_X, // 0/LeftX
MotionEvent.AXIS_Y, // 1/LeftY
MotionEvent.AXIS_Z, // 2/RightX
MotionEvent.AXIS_RZ, // 3/RightY
MotionEvent.AXIS_LTRIGGER, // 4/L2
MotionEvent.AXIS_RTRIGGER, // 5/R2
MotionEvent.AXIS_RX, // 6
MotionEvent.AXIS_RY, // 7
MotionEvent.AXIS_HAT_X, // 8
MotionEvent.AXIS_HAT_Y, // 9
MotionEvent.AXIS_GAS, // 10
MotionEvent.AXIS_BRAKE, // 11
};
public static int getButtonIndexForKeyCode(int keyCode) {
for (int buttonIndex = 0; buttonIndex < buttonKeyCodes.length; buttonIndex++) {
if (buttonKeyCodes[buttonIndex] == keyCode)
return buttonIndex;
}
Log.e("EmulationSurfaceView", String.format("Button code %d not found", keyCode));
return -1;
}
public static int[] getKnownAxisCodes() {
return axisCodes;
}
public static int getAxisIndexForAxisCode(int axisCode) {
for (int axisIndex = 0; axisIndex < axisCodes.length; axisIndex++) {
if (axisCodes[axisIndex] == axisCode)
return axisIndex;
}
Log.e("EmulationSurfaceView", String.format("Axis code %d not found", axisCode));
return -1;
}
private class ButtonMapping {
public ButtonMapping(int deviceId, int deviceButton, int controllerIndex, int button) {
this.deviceId = deviceId;
this.deviceAxisOrButton = deviceButton;
this.controllerIndex = controllerIndex;
this.buttonMapping = button;
}
public int deviceId;
public int deviceAxisOrButton;
public int controllerIndex;
public int buttonMapping;
}
private class AxisMapping {
public AxisMapping(int deviceId, int deviceAxis, InputDevice.MotionRange motionRange, int controllerIndex, int axis) {
this.deviceId = deviceId;
this.deviceAxisOrButton = deviceAxis;
this.deviceMotionRange = motionRange;
this.controllerIndex = controllerIndex;
this.axisMapping = axis;
this.positiveButton = -1;
this.negativeButton = -1;
}
public AxisMapping(int deviceId, int deviceAxis, InputDevice.MotionRange motionRange, int controllerIndex, int positiveButton, int negativeButton) {
this.deviceId = deviceId;
this.deviceAxisOrButton = deviceAxis;
this.deviceMotionRange = motionRange;
this.controllerIndex = controllerIndex;
this.axisMapping = -1;
this.positiveButton = positiveButton;
this.negativeButton = negativeButton;
}
public int deviceId;
public int deviceAxisOrButton;
public InputDevice.MotionRange deviceMotionRange;
public int controllerIndex;
public int axisMapping;
public int positiveButton;
public int negativeButton;
}
private ArrayList<ButtonMapping> mControllerKeyMapping;
private ArrayList<AxisMapping> mControllerAxisMapping;
private boolean handleControllerKey(int deviceId, int keyCode, int repeatCount, boolean pressed) {
boolean result = false;
for (ButtonMapping mapping : mControllerKeyMapping) {
if (mapping.deviceId != deviceId || mapping.deviceAxisOrButton != keyCode)
continue;
if (repeatCount == 0) {
AndroidHostInterface.getInstance().handleControllerButtonEvent(0, mapping.buttonMapping, pressed);
Log.d("EmulationSurfaceView", String.format("handleControllerKey %d -> %d %d", keyCode, mapping.buttonMapping, pressed ? 1 : 0));
}
result = true;
}
return result;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (!isDPadOrButtonEvent(event))
return false;
if (handleControllerKey(event.getDeviceId(), keyCode, event.getRepeatCount(), true))
return true;
// eat non-external button events anyway
return !isExternalKeyCode(keyCode);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (!isDPadOrButtonEvent(event))
return false;
if (handleControllerKey(event.getDeviceId(), keyCode, 0, false))
return true;
// eat non-external button events anyway
return !isExternalKeyCode(keyCode);
}
private float clamp(float value, float min, float max) {
return (value < min) ? min : ((value > max) ? max : value);
}
@Override
public boolean onGenericMotionEvent(MotionEvent event) {
final int source = event.getSource();
if ((source & (InputDevice.SOURCE_JOYSTICK | InputDevice.SOURCE_GAMEPAD | InputDevice.SOURCE_DPAD)) == 0)
return false;
final int deviceId = event.getDeviceId();
for (AxisMapping mapping : mControllerAxisMapping) {
if (mapping.deviceId != deviceId)
continue;
final float axisValue = event.getAxisValue(mapping.deviceAxisOrButton);
float emuValue;
switch (mapping.deviceAxisOrButton) {
case MotionEvent.AXIS_BRAKE:
case MotionEvent.AXIS_GAS:
case MotionEvent.AXIS_LTRIGGER:
case MotionEvent.AXIS_RTRIGGER:
// Scale 0..1 -> -1..1.
emuValue = (clamp(axisValue, 0.0f, 1.0f) * 2.0f) - 1.0f;
break;
default:
// Everything else should already by -1..1 as per Android documentation.
emuValue = clamp(axisValue, -1.0f, 1.0f);
break;
}
Log.d("EmulationSurfaceView", String.format("axis %d value %f emuvalue %f", mapping.deviceAxisOrButton, axisValue, emuValue));
if (mapping.axisMapping >= 0) {
AndroidHostInterface.getInstance().handleControllerAxisEvent(0, mapping.axisMapping, emuValue);
}
final float DEAD_ZONE = 0.25f;
if (mapping.negativeButton >= 0) {
AndroidHostInterface.getInstance().handleControllerButtonEvent(0, mapping.negativeButton, (emuValue <= -DEAD_ZONE));
}
if (mapping.positiveButton >= 0) {
AndroidHostInterface.getInstance().handleControllerButtonEvent(0, mapping.positiveButton, (emuValue >= DEAD_ZONE));
}
}
return true;
}
private boolean addControllerKeyMapping(int deviceId, int keyCode, int controllerIndex) {
int mapping = getButtonIndexForKeyCode(keyCode);
Log.i("EmulationSurfaceView", String.format("Map %d to %d", keyCode, mapping));
if (mapping >= 0) {
mControllerKeyMapping.add(new ButtonMapping(deviceId, keyCode, controllerIndex, mapping));
return true;
}
return false;
}
private boolean addControllerAxisMapping(int deviceId, List<InputDevice.MotionRange> motionRanges, int axis, int controllerIndex) {
InputDevice.MotionRange range = null;
for (InputDevice.MotionRange curRange : motionRanges) {
if (curRange.getAxis() == axis) {
range = curRange;
break;
}
}
if (range == null)
return false;
int mapping = getAxisIndexForAxisCode(axis);
int negativeButton = -1;
int positiveButton = -1;
if (mapping >= 0) {
Log.i("EmulationSurfaceView", String.format("Map axis %d to %d", axis, mapping));
mControllerAxisMapping.add(new AxisMapping(deviceId, axis, range, controllerIndex, mapping));
return true;
}
if (negativeButton >= 0 && negativeButton >= 0) {
Log.i("EmulationSurfaceView", String.format("Map axis %d to buttons %d %d", axis, negativeButton, positiveButton));
mControllerAxisMapping.add(new AxisMapping(deviceId, axis, range, controllerIndex, positiveButton, negativeButton));
return true;
}
Log.w("EmulationSurfaceView", String.format("Axis %d was not mapped", axis));
return false;
}
private static boolean isJoystickDevice(int deviceId) {
if (deviceId < 0)
return false;
final InputDevice dev = InputDevice.getDevice(deviceId);
if (dev == null)
return false;
final int sources = dev.getSources();
if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0)
return true;
if ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD)
return true;
return (sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD;
}
public boolean initControllerMapping(String controllerType) {
mControllerKeyMapping = new ArrayList<>();
mControllerAxisMapping = new ArrayList<>();
final int[] deviceIds = InputDevice.getDeviceIds();
for (int deviceId : deviceIds) {
if (!isJoystickDevice(deviceId))
continue;
InputDevice device = InputDevice.getDevice(deviceId);
List<InputDevice.MotionRange> motionRanges = device.getMotionRanges();
int controllerIndex = 0;
for (int keyCode : buttonKeyCodes) {
addControllerKeyMapping(deviceId, keyCode, controllerIndex);
}
if (motionRanges != null) {
for (int axisCode : axisCodes) {
addControllerAxisMapping(deviceId, motionRanges, axisCode, controllerIndex);
}
}
}
return !mControllerKeyMapping.isEmpty() || !mControllerKeyMapping.isEmpty();
}
}

View File

@@ -1,67 +0,0 @@
package com.github.stenzek.duckstation;
import android.os.Build;
import android.os.Process;
import android.util.Log;
import android.view.Surface;
import androidx.annotation.NonNull;
public class EmulationThread extends Thread {
private EmulationActivity emulationActivity;
private String filename;
private boolean resumeState;
private String stateFilename;
private EmulationThread(EmulationActivity emulationActivity, String filename, boolean resumeState, String stateFilename) {
super("EmulationThread");
this.emulationActivity = emulationActivity;
this.filename = filename;
this.resumeState = resumeState;
this.stateFilename = stateFilename;
}
public static EmulationThread create(EmulationActivity emulationActivity, String filename, boolean resumeState, String stateFilename) {
Log.i("EmulationThread", String.format("Starting emulation thread (%s)...", filename));
EmulationThread thread = new EmulationThread(emulationActivity, filename, resumeState, stateFilename);
thread.start();
return thread;
}
private void setExclusiveCores() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
int[] cores = Process.getExclusiveCores();
if (cores == null || cores.length == 0)
throw new Exception("Invalid return value from getExclusiveCores()");
AndroidHostInterface.setThreadAffinity(cores);
}
} catch (Exception e) {
Log.e("EmulationThread", "getExclusiveCores() failed");
}
}
@Override
public void run() {
try {
Process.setThreadPriority(Process.THREAD_PRIORITY_MORE_FAVORABLE);
setExclusiveCores();
} catch (Exception e) {
Log.i("EmulationThread", "Failed to set priority for emulation thread: " + e.getMessage());
}
AndroidHostInterface.getInstance().runEmulationThread(emulationActivity, filename, resumeState, stateFilename);
Log.i("EmulationThread", "Emulation thread exiting.");
}
public void stopAndJoin() {
AndroidHostInterface.getInstance().stopEmulationThreadLoop();
try {
join();
} catch (InterruptedException e) {
Log.i("EmulationThread", "join() interrupted: " + e.getMessage());
}
}
}

View File

@@ -1,175 +0,0 @@
package com.github.stenzek.duckstation;
// https://stackoverflow.com/questions/34927748/android-5-0-documentfile-from-tree-uri
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.storage.StorageManager;
import android.provider.DocumentsContract;
import androidx.annotation.Nullable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public final class FileUtil {
static String TAG = "TAG";
private static final String PRIMARY_VOLUME_NAME = "primary";
@Nullable
public static String getFullPathFromTreeUri(@Nullable final Uri treeUri, Context con) {
if (treeUri == null) return null;
String volumePath = getVolumePath(getVolumeIdFromTreeUri(treeUri), con);
if (volumePath == null) return File.separator;
if (volumePath.endsWith(File.separator))
volumePath = volumePath.substring(0, volumePath.length() - 1);
String documentPath = getDocumentPathFromTreeUri(treeUri);
if (documentPath.endsWith(File.separator))
documentPath = documentPath.substring(0, documentPath.length() - 1);
if (documentPath.length() > 0) {
if (documentPath.startsWith(File.separator))
return volumePath + documentPath;
else
return volumePath + File.separator + documentPath;
} else return volumePath;
}
@SuppressLint("ObsoleteSdkInt")
private static String getVolumePath(final String volumeId, Context context) {
if (volumeId == null)
return null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return null;
try {
StorageManager mStorageManager =
(StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
Class<?> storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
Method getUuid = storageVolumeClazz.getMethod("getUuid");
Method getPath = storageVolumeClazz.getMethod("getPath");
Method isPrimary = storageVolumeClazz.getMethod("isPrimary");
Object result = getVolumeList.invoke(mStorageManager);
final int length = Array.getLength(result);
for (int i = 0; i < length; i++) {
Object storageVolumeElement = Array.get(result, i);
String uuid = (String) getUuid.invoke(storageVolumeElement);
Boolean primary = (Boolean) isPrimary.invoke(storageVolumeElement);
// primary volume?
if (primary && PRIMARY_VOLUME_NAME.equals(volumeId))
return (String) getPath.invoke(storageVolumeElement);
// other volumes?
if (uuid != null && uuid.equals(volumeId))
return (String) getPath.invoke(storageVolumeElement);
}
// not found.
return null;
} catch (Exception ex) {
return null;
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static String getVolumeIdFromTreeUri(final Uri treeUri) {
final String docId = DocumentsContract.getTreeDocumentId(treeUri);
final String[] split = docId.split(":");
if (split.length > 0) return split[0];
else return null;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static String getDocumentPathFromTreeUri(final Uri treeUri) {
final String docId = DocumentsContract.getTreeDocumentId(treeUri);
final String[] split = docId.split(":");
if ((split.length >= 2) && (split[1] != null)) return split[1];
else return File.separator;
}
@Nullable
public static String getFullPathFromUri(@Nullable final Uri treeUri, Context con) {
if (treeUri == null) return null;
String volumePath = getVolumePath(getVolumeIdFromUri(treeUri), con);
if (volumePath == null) return File.separator;
if (volumePath.endsWith(File.separator))
volumePath = volumePath.substring(0, volumePath.length() - 1);
String documentPath = getDocumentPathFromUri(treeUri);
if (documentPath.endsWith(File.separator))
documentPath = documentPath.substring(0, documentPath.length() - 1);
if (documentPath.length() > 0) {
if (documentPath.startsWith(File.separator))
return volumePath + documentPath;
else
return volumePath + File.separator + documentPath;
} else return volumePath;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static String getVolumeIdFromUri(final Uri treeUri) {
try {
final String docId = DocumentsContract.getDocumentId(treeUri);
final String[] split = docId.split(":");
if (split.length > 0) return split[0];
else return null;
} catch (Exception e) {
return null;
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static String getDocumentPathFromUri(final Uri treeUri) {
try {
final String docId = DocumentsContract.getDocumentId(treeUri);
final String[] split = docId.split(":");
if ((split.length >= 2) && (split[1] != null)) return split[1];
else return File.separator;
} catch (Exception e) {
return null;
}
}
public static String readFileFromUri(final Context context, final Uri uri, int maxSize) {
InputStream stream = null;
try {
stream = context.getContentResolver().openInputStream(uri);
} catch (FileNotFoundException e) {
return null;
}
StringBuilder os = new StringBuilder();
try {
char[] buffer = new char[1024];
InputStreamReader reader = new InputStreamReader(stream, Charset.forName(StandardCharsets.UTF_8.name()));
int len;
while ((len = reader.read(buffer)) > 0) {
os.append(buffer, 0, len);
if (os.length() > maxSize)
return null;
}
} catch (IOException e) {
return null;
}
if (os.length() == 0)
return null;
return os.toString();
}
}

View File

@@ -1,331 +0,0 @@
package com.github.stenzek.duckstation;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.util.Property;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.ListFragment;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
public class GameDirectoriesActivity extends AppCompatActivity {
private static final int REQUEST_ADD_DIRECTORY_TO_GAME_LIST = 1;
private class DirectoryListAdapter extends RecyclerView.Adapter {
private class Entry {
private String mPath;
private boolean mRecursive;
public Entry(String path, boolean recursive) {
mPath = path;
mRecursive = recursive;
}
public String getPath() {
return mPath;
}
public boolean isRecursive() {
return mRecursive;
}
public void toggleRecursive() {
mRecursive = !mRecursive;
}
}
private class EntryComparator implements Comparator<Entry> {
@Override
public int compare(Entry left, Entry right) {
return left.getPath().compareTo(right.getPath());
}
}
private Context mContext;
private Entry[] mEntries;
public DirectoryListAdapter(Context context) {
mContext = context;
reload();
}
public void reload() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
ArrayList<Entry> entries = new ArrayList<>();
try {
Set<String> paths = prefs.getStringSet("GameList/Paths", null);
if (paths != null) {
for (String path : paths)
entries.add(new Entry(path, false));
}
} catch (Exception e) {
}
try {
Set<String> paths = prefs.getStringSet("GameList/RecursivePaths", null);
if (paths != null) {
for (String path : paths)
entries.add(new Entry(path, true));
}
} catch (Exception e) {
}
mEntries = new Entry[entries.size()];
entries.toArray(mEntries);
Arrays.sort(mEntries, new EntryComparator());
notifyDataSetChanged();
}
private class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private int mPosition;
private Entry mEntry;
private TextView mPathView;
private TextView mRecursiveView;
private ImageButton mToggleRecursiveView;
private ImageButton mRemoveView;
public ViewHolder(View rootView) {
super(rootView);
mPathView = rootView.findViewById(R.id.path);
mRecursiveView = rootView.findViewById(R.id.recursive);
mToggleRecursiveView = rootView.findViewById(R.id.toggle_recursive);
mToggleRecursiveView.setOnClickListener(this);
mRemoveView = rootView.findViewById(R.id.remove);
mRemoveView.setOnClickListener(this);
}
public void bindData(int position, Entry entry) {
mPosition = position;
mEntry = entry;
updateText();
}
private void updateText() {
mPathView.setText(mEntry.getPath());
mRecursiveView.setText(getString(mEntry.isRecursive() ? R.string.game_directories_scanning_subdirectories : R.string.game_directories_not_scanning_subdirectories));
mToggleRecursiveView.setImageDrawable(getDrawable(mEntry.isRecursive() ? R.drawable.ic_baseline_folder_24 : R.drawable.ic_baseline_folder_open_24));
}
@Override
public void onClick(View v) {
if (mToggleRecursiveView == v) {
removeSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
mEntry.toggleRecursive();
addSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
updateText();
} else if (mRemoveView == v) {
removeSearchDirectory(mContext, mEntry.getPath(), mEntry.isRecursive());
reload();
}
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
((ViewHolder) holder).bindData(position, mEntries[position]);
}
@Override
public int getItemViewType(int position) {
return R.layout.layout_game_directory_entry;
}
@Override
public long getItemId(int position) {
return mEntries[position].getPath().hashCode();
}
@Override
public int getItemCount() {
return mEntries.length;
}
}
DirectoryListAdapter mDirectoryListAdapter;
RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_directories);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
mDirectoryListAdapter = new DirectoryListAdapter(this);
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setAdapter(mDirectoryListAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
findViewById(R.id.fab).setOnClickListener((v) -> startAddGameDirectory());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_edit_game_directories, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
if (item.getItemId() == R.id.add_directory) {
startAddGameDirectory();
return true;
} else if (item.getItemId() == R.id.add_path) {
startAddPath();
return true;
}
return super.onOptionsItemSelected(item);
}
public static String getPathFromTreeUri(Context context, Uri treeUri) {
String path = FileUtil.getFullPathFromTreeUri(treeUri, context);
if (path.length() < 5) {
new AlertDialog.Builder(context)
.setTitle(R.string.main_activity_error)
.setMessage(R.string.main_activity_get_path_from_directory_error)
.setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
})
.create()
.show();
return null;
}
return path;
}
public static String getPathFromUri(Context context, Uri uri) {
String path = FileUtil.getFullPathFromUri(uri, context);
if (path.length() < 5) {
new AlertDialog.Builder(context)
.setTitle(R.string.main_activity_error)
.setMessage(R.string.main_activity_get_path_from_file_error)
.setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
})
.create()
.show();
return null;
}
return path;
}
public static void addSearchDirectory(Context context, String path, boolean recursive) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final String key = recursive ? "GameList/RecursivePaths" : "GameList/Paths";
PreferenceHelpers.addToStringList(prefs, key, path);
Log.i("GameDirectoriesActivity", "Added path '" + path + "' to game list search directories");
}
public static void removeSearchDirectory(Context context, String path, boolean recursive) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final String key = recursive ? "GameList/RecursivePaths" : "GameList/Paths";
PreferenceHelpers.removeFromStringList(prefs, key, path);
Log.i("GameDirectoriesActivity", "Removed path '" + path + "' from game list search directories");
}
private void startAddGameDirectory() {
Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(i, getString(R.string.main_activity_choose_directory)),
REQUEST_ADD_DIRECTORY_TO_GAME_LIST);
}
private void startAddPath() {
final EditText text = new EditText(this);
text.setSingleLine();
new AlertDialog.Builder(this)
.setTitle(R.string.edit_game_directories_add_path)
.setMessage(R.string.edit_game_directories_add_path_summary)
.setView(text)
.setPositiveButton("Add", (dialog, which) -> {
final String path = text.getText().toString();
if (!path.isEmpty()) {
addSearchDirectory(GameDirectoriesActivity.this, path, true);
mDirectoryListAdapter.reload();
}
})
.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss())
.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_ADD_DIRECTORY_TO_GAME_LIST: {
if (resultCode != RESULT_OK)
return;
String path = getPathFromTreeUri(this, data.getData());
if (path == null)
return;
addSearchDirectory(this, path, true);
mDirectoryListAdapter.reload();
}
break;
}
}
}

View File

@@ -1,98 +0,0 @@
package com.github.stenzek.duckstation;
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.Arrays;
import java.util.Comparator;
public class GameList {
private Activity mContext;
private GameListEntry[] mEntries;
private ListViewAdapter mAdapter;
public GameList(Activity context) {
mContext = context;
mAdapter = new ListViewAdapter();
mEntries = new GameListEntry[0];
}
private class GameListEntryComparator implements Comparator<GameListEntry> {
@Override
public int compare(GameListEntry left, GameListEntry right) {
return left.getTitle().compareTo(right.getTitle());
}
}
public void refresh(boolean invalidateCache, boolean invalidateDatabase, Activity parentActivity) {
// Search and get entries from native code
AndroidProgressCallback progressCallback = new AndroidProgressCallback(mContext);
AsyncTask.execute(() -> {
AndroidHostInterface.getInstance().refreshGameList(invalidateCache, invalidateDatabase, progressCallback);
GameListEntry[] newEntries = AndroidHostInterface.getInstance().getGameListEntries();
Arrays.sort(newEntries, new GameListEntryComparator());
mContext.runOnUiThread(() -> {
try {
progressCallback.dismiss();
} catch (Exception e) {
Log.e("GameList", "Exception dismissing refresh progress");
e.printStackTrace();
}
mEntries = newEntries;
mAdapter.notifyDataSetChanged();
});
});
}
public int getEntryCount() {
return mEntries.length;
}
public GameListEntry getEntry(int index) {
return mEntries[index];
}
private class ListViewAdapter extends BaseAdapter {
@Override
public int getCount() {
return mEntries.length;
}
@Override
public Object getItem(int position) {
return mEntries[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext)
.inflate(R.layout.game_list_view_entry, parent, false);
}
mEntries[position].fillView(convertView);
return convertView;
}
}
public BaseAdapter getListViewAdapter() {
return mAdapter;
}
}

View File

@@ -1,190 +0,0 @@
package com.github.stenzek.duckstation;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
public class GameListEntry {
public enum EntryType {
Disc,
PSExe,
Playlist,
PSF
}
public enum CompatibilityRating {
Unknown,
DoesntBoot,
CrashesInIntro,
CrashesInGame,
GraphicalAudioIssues,
NoIssues,
}
private String mPath;
private String mCode;
private String mTitle;
private String mFileTitle;
private long mSize;
private String mModifiedTime;
private DiscRegion mRegion;
private EntryType mType;
private CompatibilityRating mCompatibilityRating;
private String mCoverPath;
public GameListEntry(String path, String code, String title, String fileTitle, long size, String modifiedTime, String region,
String type, String compatibilityRating, String coverPath) {
mPath = path;
mCode = code;
mTitle = title;
mFileTitle = fileTitle;
mSize = size;
mModifiedTime = modifiedTime;
mCoverPath = coverPath;
try {
mRegion = DiscRegion.valueOf(region);
} catch (IllegalArgumentException e) {
mRegion = DiscRegion.NTSC_U;
}
try {
mType = EntryType.valueOf(type);
} catch (IllegalArgumentException e) {
mType = EntryType.Disc;
}
try {
mCompatibilityRating = CompatibilityRating.valueOf(compatibilityRating);
} catch (IllegalArgumentException e) {
mCompatibilityRating = CompatibilityRating.Unknown;
}
}
public String getPath() {
return mPath;
}
public String getCode() {
return mCode;
}
public String getTitle() {
return mTitle;
}
public String getFileTitle() {
return mFileTitle;
}
public String getModifiedTime() {
return mModifiedTime;
}
public DiscRegion getRegion() {
return mRegion;
}
public EntryType getType() {
return mType;
}
public CompatibilityRating getCompatibilityRating() {
return mCompatibilityRating;
}
public static String getFileNameForPath(String path) {
int lastSlash = path.lastIndexOf('/');
if (lastSlash > 0 && lastSlash < path.length() - 1)
return path.substring(lastSlash + 1);
else
return path;
}
private String getSubTitle() {
String fileName = getFileNameForPath(mPath);
String sizeString = String.format("%.2f MB", (double) mSize / 1048576.0);
return String.format("%s (%s)", fileName, sizeString);
}
public void fillView(View view) {
((TextView) view.findViewById(R.id.game_list_view_entry_title)).setText(mTitle);
((TextView) view.findViewById(R.id.game_list_view_entry_subtitle)).setText(getSubTitle());
int regionDrawableId;
switch (mRegion) {
case NTSC_J:
regionDrawableId = R.drawable.flag_jp;
break;
case PAL:
regionDrawableId = R.drawable.flag_eu;
break;
case Other:
regionDrawableId = R.drawable.ic_baseline_help_24;
break;
case NTSC_U:
default:
regionDrawableId = R.drawable.flag_us;
break;
}
((ImageView) view.findViewById(R.id.game_list_view_entry_region_icon))
.setImageDrawable(ContextCompat.getDrawable(view.getContext(), regionDrawableId));
int typeDrawableId;
switch (mType) {
case PSExe:
typeDrawableId = R.drawable.ic_emblem_system;
break;
case Playlist:
typeDrawableId = R.drawable.ic_baseline_playlist_play_24;
break;
case PSF:
typeDrawableId = R.drawable.ic_baseline_library_music_24;
break;
case Disc:
default:
typeDrawableId = R.drawable.ic_media_cdrom;
break;
}
ImageView icon = ((ImageView) view.findViewById(R.id.game_list_view_entry_type_icon));
icon.setImageDrawable(ContextCompat.getDrawable(view.getContext(), typeDrawableId));
if (mCoverPath != null) {
new ImageLoadTask(icon).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mCoverPath);
}
int compatibilityDrawableId;
switch (mCompatibilityRating) {
case DoesntBoot:
compatibilityDrawableId = R.drawable.ic_star_1;
break;
case CrashesInIntro:
compatibilityDrawableId = R.drawable.ic_star_2;
break;
case CrashesInGame:
compatibilityDrawableId = R.drawable.ic_star_3;
break;
case GraphicalAudioIssues:
compatibilityDrawableId = R.drawable.ic_star_4;
break;
case NoIssues:
compatibilityDrawableId = R.drawable.ic_star_5;
break;
case Unknown:
default:
compatibilityDrawableId = R.drawable.ic_star_0;
break;
}
((ImageView) view.findViewById(R.id.game_list_view_compatibility_icon))
.setImageDrawable(ContextCompat.getDrawable(view.getContext(), compatibilityDrawableId));
}
}

View File

@@ -1,249 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Property;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.ListFragment;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import java.util.ArrayList;
public class GamePropertiesActivity extends AppCompatActivity {
PropertyListAdapter mPropertiesListAdapter;
GameListEntry mGameListEntry;
public ListAdapter getPropertyListAdapter() {
if (mPropertiesListAdapter != null)
return mPropertiesListAdapter;
mPropertiesListAdapter = new PropertyListAdapter(this);
mPropertiesListAdapter.addItem("title", "Title", mGameListEntry.getTitle());
mPropertiesListAdapter.addItem("filetitle", "File Title", mGameListEntry.getFileTitle());
mPropertiesListAdapter.addItem("serial", "Serial", mGameListEntry.getCode());
mPropertiesListAdapter.addItem("type", "Type", mGameListEntry.getType().toString());
mPropertiesListAdapter.addItem("path", "Path", mGameListEntry.getPath());
mPropertiesListAdapter.addItem("region", "Region", mGameListEntry.getRegion().toString());
mPropertiesListAdapter.addItem("compatibility", "Compatibility Rating", mGameListEntry.getCompatibilityRating().toString());
return mPropertiesListAdapter;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String path = getIntent().getStringExtra("path");
if (path == null || path.isEmpty()) {
finish();
return;
}
mGameListEntry = AndroidHostInterface.getInstance().getGameListEntry(path);
if (mGameListEntry == null) {
finish();
return;
}
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsCollectionFragment(this))
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
setTitle(mGameListEntry.getTitle());
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
private void displayError(String text) {
new AlertDialog.Builder(this)
.setTitle(R.string.emulation_activity_error)
.setMessage(text)
.setNegativeButton(R.string.main_activity_ok, ((dialog, which) -> dialog.dismiss()))
.create()
.show();
}
private void createBooleanGameSetting(PreferenceScreen ps, String key, int titleId) {
GameSettingPreference pref = new GameSettingPreference(ps.getContext(), mGameListEntry.getPath(), key, titleId);
ps.addPreference(pref);
}
private void createListGameSetting(PreferenceScreen ps, String key, int titleId, int entryId, int entryValuesId) {
GameSettingPreference pref = new GameSettingPreference(ps.getContext(), mGameListEntry.getPath(), key, titleId, entryId, entryValuesId);
ps.addPreference(pref);
}
public static class GameSettingsFragment extends PreferenceFragmentCompat {
private GamePropertiesActivity activity;
public GameSettingsFragment(GamePropertiesActivity activity) {
this.activity = activity;
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
activity.createListGameSetting(ps, "CPUOverclock", R.string.settings_cpu_overclocking, R.array.settings_advanced_cpu_overclock_entries, R.array.settings_advanced_cpu_overclock_values);
activity.createListGameSetting(ps, "CDROMReadSpeedup", R.string.settings_cdrom_read_speedup, R.array.settings_cdrom_read_speedup_entries, R.array.settings_cdrom_read_speedup_values);
activity.createListGameSetting(ps, "DisplayAspectRatio", R.string.settings_aspect_ratio, R.array.settings_display_aspect_ratio_names, R.array.settings_display_aspect_ratio_values);
activity.createListGameSetting(ps, "DisplayCropMode", R.string.settings_crop_mode, R.array.settings_display_crop_mode_entries, R.array.settings_display_crop_mode_values);
activity.createListGameSetting(ps, "GPUDownsampleMode", R.string.settings_downsample_mode, R.array.settings_downsample_mode_entries, R.array.settings_downsample_mode_values);
activity.createBooleanGameSetting(ps, "DisplayLinearUpscaling", R.string.settings_linear_upscaling);
activity.createBooleanGameSetting(ps, "DisplayIntegerUpscaling", R.string.settings_integer_upscaling);
activity.createBooleanGameSetting(ps, "DisplayForce4_3For24Bit", R.string.settings_force_4_3_for_24bit);
activity.createListGameSetting(ps, "GPUResolutionScale", R.string.settings_gpu_resolution_scale, R.array.settings_gpu_resolution_scale_entries, R.array.settings_gpu_resolution_scale_values);
activity.createListGameSetting(ps, "GPUMSAA", R.string.settings_msaa, R.array.settings_gpu_msaa_entries, R.array.settings_gpu_msaa_values);
activity.createBooleanGameSetting(ps, "GPUTrueColor", R.string.settings_true_color);
activity.createBooleanGameSetting(ps, "GPUScaledDithering", R.string.settings_scaled_dithering);
activity.createListGameSetting(ps, "GPUTextureFilter", R.string.settings_texture_filtering, R.array.settings_gpu_texture_filter_names, R.array.settings_gpu_texture_filter_values);
activity.createBooleanGameSetting(ps, "GPUForceNTSCTimings", R.string.settings_force_ntsc_timings);
activity.createBooleanGameSetting(ps, "GPUWidescreenHack", R.string.settings_widescreen_hack);
activity.createBooleanGameSetting(ps, "GPUPGXP", R.string.settings_pgxp_geometry_correction);
activity.createBooleanGameSetting(ps, "GPUPGXPDepthBuffer", R.string.settings_pgxp_depth_buffer);
setPreferenceScreen(ps);
}
}
public static class ControllerSettingsFragment extends PreferenceFragmentCompat {
private GamePropertiesActivity activity;
public ControllerSettingsFragment(GamePropertiesActivity activity) {
this.activity = activity;
}
private void createInputProfileSetting(PreferenceScreen ps) {
final GameSettingPreference pref = new GameSettingPreference(ps.getContext(), activity.mGameListEntry.getPath(), "InputProfileName", R.string.settings_input_profile);
final String[] inputProfileNames = AndroidHostInterface.getInstance().getInputProfileNames();
pref.setEntries(inputProfileNames);
pref.setEntryValues(inputProfileNames);
ps.addPreference(pref);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
final PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(getContext());
activity.createListGameSetting(ps, "Controller1Type", R.string.settings_controller_type, R.array.settings_controller_type_entries, R.array.settings_controller_type_values);
activity.createListGameSetting(ps, "MemoryCard1Type", R.string.settings_memory_card_1_type, R.array.settings_memory_card_mode_entries, R.array.settings_memory_card_mode_values);
activity.createListGameSetting(ps, "MemoryCard2Type", R.string.settings_memory_card_2_type, R.array.settings_memory_card_mode_entries, R.array.settings_memory_card_mode_values);
createInputProfileSetting(ps);
setPreferenceScreen(ps);
}
}
public static class SettingsCollectionFragment extends Fragment {
private GamePropertiesActivity activity;
private SettingsCollectionAdapter adapter;
private ViewPager2 viewPager;
public SettingsCollectionFragment(GamePropertiesActivity activity) {
this.activity = activity;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_controller_mapping, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
adapter = new SettingsCollectionAdapter(activity, this);
viewPager = view.findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
TabLayout tabLayout = view.findViewById(R.id.tab_layout);
new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
switch (position) {
case 0:
tab.setText(R.string.game_properties_tab_summary);
break;
case 1:
tab.setText(R.string.game_properties_tab_game_settings);
break;
case 2:
tab.setText(R.string.game_properties_tab_controller_settings);
break;
}
}).attach();
}
}
public static class SettingsCollectionAdapter extends FragmentStateAdapter {
private GamePropertiesActivity activity;
public SettingsCollectionAdapter(@NonNull GamePropertiesActivity activity, @NonNull Fragment fragment) {
super(fragment);
this.activity = activity;
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 0: { // Summary
ListFragment lf = new ListFragment();
lf.setListAdapter(activity.getPropertyListAdapter());
return lf;
}
case 1: { // Game Settings
return new GameSettingsFragment(activity);
}
case 2: { // Controller Settings
return new ControllerSettingsFragment(activity);
}
// TODO: Memory Card Editor
default:
return null;
}
}
@Override
public int getItemCount() {
return 3;
}
}
}

View File

@@ -1,83 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.util.AttributeSet;
import androidx.preference.ListPreference;
public class GameSettingPreference extends ListPreference {
private String mGamePath;
/**
* Creates a boolean game property preference.
*/
public GameSettingPreference(Context context, String gamePath, String settingKey, int titleId) {
super(context);
mGamePath = gamePath;
setPersistent(false);
setTitle(titleId);
setKey(settingKey);
setIconSpaceReserved(false);
setSummaryProvider(SimpleSummaryProvider.getInstance());
setEntries(R.array.settings_boolean_entries);
setEntryValues(R.array.settings_boolean_values);
updateValue();
}
/**
* Creates a list game property preference.
*/
public GameSettingPreference(Context context, String gamePath, String settingKey, int titleId, int entryArray, int entryValuesArray) {
super(context);
mGamePath = gamePath;
setPersistent(false);
setTitle(titleId);
setKey(settingKey);
setIconSpaceReserved(false);
setSummaryProvider(SimpleSummaryProvider.getInstance());
setEntries(entryArray);
setEntryValues(entryValuesArray);
updateValue();
}
private void updateValue() {
final String value = AndroidHostInterface.getInstance().getGameSettingValue(mGamePath, getKey());
if (value == null)
super.setValue("null");
else
super.setValue(value);
}
@Override
public void setValue(String value) {
super.setValue(value);
if (value.equals("null"))
AndroidHostInterface.getInstance().setGameSettingValue(mGamePath, getKey(), null);
else
AndroidHostInterface.getInstance().setGameSettingValue(mGamePath, getKey(), value);
}
@Override
public void setEntries(CharSequence[] entries) {
final int length = (entries != null) ? entries.length : 0;
CharSequence[] newEntries = new CharSequence[length + 1];
newEntries[0] = getContext().getString(R.string.game_properties_preference_use_global_setting);
if (entries != null)
System.arraycopy(entries, 0, newEntries, 1, entries.length);
super.setEntries(newEntries);
}
@Override
public void setEntryValues(CharSequence[] entryValues) {
final int length = (entryValues != null) ? entryValues.length : 0;
CharSequence[] newEntryValues = new CharSequence[length + 1];
newEntryValues[0] = "null";
if (entryValues != null)
System.arraycopy(entryValues, 0, newEntryValues, 1, length);
super.setEntryValues(newEntryValues);
}
}

View File

@@ -1,29 +0,0 @@
package com.github.stenzek.duckstation;
public class HotkeyInfo {
private String mCategory;
private String mName;
private String mDisplayName;
public HotkeyInfo(String category, String name, String displayName) {
mCategory = category;
mName = name;
mDisplayName = displayName;
}
public String getCategory() {
return mCategory;
}
public String getName() {
return mName;
}
public String getDisplayName() {
return mDisplayName;
}
public String getBindingConfigKey() {
return String.format("Hotkeys/%s", mName);
}
}

View File

@@ -1,32 +0,0 @@
package com.github.stenzek.duckstation;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import java.lang.ref.WeakReference;
public class ImageLoadTask extends AsyncTask<String, Void, Bitmap> {
private WeakReference<ImageView> mView;
public ImageLoadTask(ImageView view) {
mView = new WeakReference<>(view);
}
@Override
protected Bitmap doInBackground(String... strings) {
try {
return BitmapFactory.decodeFile(strings[0]);
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(Bitmap bitmap) {
ImageView iv = mView.get();
if (iv != null)
iv.setImageBitmap(bitmap);
}
}

View File

@@ -1,448 +0,0 @@
package com.github.stenzek.duckstation;
import android.Manifest;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.preference.PreferenceManager;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_EXTERNAL_STORAGE_PERMISSIONS = 1;
private static final int REQUEST_ADD_DIRECTORY_TO_GAME_LIST = 2;
private static final int REQUEST_IMPORT_BIOS_IMAGE = 3;
private static final int REQUEST_START_FILE = 4;
private static final int REQUEST_SETTINGS = 5;
private static final int REQUEST_EDIT_GAME_DIRECTORIES = 6;
private GameList mGameList;
private ListView mGameListView;
private boolean mHasExternalStoragePermissions = false;
private void setLanguage() {
String language = PreferenceManager.getDefaultSharedPreferences(this).getString("Main/Language", "none");
if (language == null || language.equals("none")) {
return;
}
String[] parts = language.split("-");
if (parts.length < 2)
return;
Locale locale = new Locale(parts[0], parts[1]);
Locale.setDefault(locale);
Resources res = getResources();
Configuration config = res.getConfiguration();
config.setLocale(locale);
res.updateConfiguration(config, res.getDisplayMetrics());
}
private void setTheme() {
String theme = PreferenceManager.getDefaultSharedPreferences(this).getString("Main/Theme", "follow_system");
if (theme == null)
return;
if (theme.equals("follow_system")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
} else if (theme.equals("light")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else if (theme.equals("dark")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
}
private void loadSettings() {
setLanguage();
setTheme();
}
private boolean shouldResumeStateByDefault() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
return prefs.getBoolean("Main/SaveStateOnExit", true);
}
private static String getTitleString() {
String scmVersion = AndroidHostInterface.getScmVersion();
final int gitHashPos = scmVersion.indexOf("-g");
if (gitHashPos > 0)
scmVersion = scmVersion.substring(0, gitHashPos);
return String.format("DuckStation %s", scmVersion);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadSettings();
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(getTitleString());
findViewById(R.id.fab_add_game_directory).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startAddGameDirectory();
}
});
findViewById(R.id.fab_resume).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startEmulation(null, shouldResumeStateByDefault());
}
});
// Set up game list view.
mGameList = new GameList(this);
mGameListView = findViewById(R.id.game_list_view);
mGameListView.setAdapter(mGameList.getListViewAdapter());
mGameListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startEmulation(mGameList.getEntry(position).getPath(), shouldResumeStateByDefault());
}
});
mGameListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
long id) {
PopupMenu menu = new PopupMenu(MainActivity.this, view,
Gravity.RIGHT | Gravity.TOP);
menu.getMenuInflater().inflate(R.menu.menu_game_list_entry, menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.game_list_entry_menu_start_game) {
startEmulation(mGameList.getEntry(position).getPath(), false);
return true;
} else if (id == R.id.game_list_entry_menu_resume_game) {
startEmulation(mGameList.getEntry(position).getPath(), true);
return true;
} else if (id == R.id.game_list_entry_menu_properties) {
openGameProperties(mGameList.getEntry(position).getPath());
return true;
}
return false;
}
});
menu.show();
return true;
}
});
mHasExternalStoragePermissions = checkForExternalStoragePermissions();
if (mHasExternalStoragePermissions)
completeStartup();
}
private void completeStartup() {
if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
Log.i("MainActivity", "Failed to create host interface");
throw new RuntimeException("Failed to create host interface");
}
AndroidHostInterface.getInstance().setContext(this);
mGameList.refresh(false, false, this);
}
private void startAddGameDirectory() {
if (!checkForExternalStoragePermissions())
return;
Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(i, getString(R.string.main_activity_choose_directory)),
REQUEST_ADD_DIRECTORY_TO_GAME_LIST);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_resume) {
startEmulation(null, true);
} else if (id == R.id.action_start_bios) {
startEmulation(null, false);
} else if (id == R.id.action_start_file) {
startStartFile();
} else if (id == R.id.action_edit_game_directories) {
Intent intent = new Intent(this, GameDirectoriesActivity.class);
startActivityForResult(intent, REQUEST_EDIT_GAME_DIRECTORIES);
return true;
} else if (id == R.id.action_scan_for_new_games) {
mGameList.refresh(false, false, this);
} else if (id == R.id.action_rescan_all_games) {
mGameList.refresh(true, true, this);
} else if (id == R.id.action_import_bios) {
importBIOSImage();
} else if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, REQUEST_SETTINGS);
return true;
} else if (id == R.id.action_controller_mapping) {
Intent intent = new Intent(this, ControllerMappingActivity.class);
startActivity(intent);
return true;
} else if (id == R.id.action_show_version) {
showVersion();
return true;
} else if (id == R.id.action_github_respository) {
openGithubRepository();
return true;
} else if (id == R.id.action_discord_server) {
openDiscordServer();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_ADD_DIRECTORY_TO_GAME_LIST: {
if (resultCode != RESULT_OK)
return;
String path = GameDirectoriesActivity.getPathFromTreeUri(this, data.getData());
if (path == null)
return;
GameDirectoriesActivity.addSearchDirectory(this, path, true);
mGameList.refresh(false, false, this);
}
break;
case REQUEST_IMPORT_BIOS_IMAGE: {
if (resultCode != RESULT_OK)
return;
onImportBIOSImageResult(data.getData());
}
break;
case REQUEST_START_FILE: {
if (resultCode != RESULT_OK)
return;
String path = GameDirectoriesActivity.getPathFromUri(this, data.getData());
if (path == null)
return;
startEmulation(path, shouldResumeStateByDefault());
}
break;
case REQUEST_SETTINGS: {
loadSettings();
}
break;
case REQUEST_EDIT_GAME_DIRECTORIES: {
mGameList.refresh(false, false, this);
}
break;
}
}
private boolean checkForExternalStoragePermissions() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_GRANTED &&
ContextCompat
.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_GRANTED) {
return true;
}
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE_PERMISSIONS);
return false;
}
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
// check that all were successful
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
if (!mHasExternalStoragePermissions) {
mHasExternalStoragePermissions = true;
completeStartup();
}
} else {
Toast.makeText(this,
R.string.main_activity_external_storage_permissions_error,
Toast.LENGTH_LONG);
finish();
}
}
}
private boolean openGameProperties(String path) {
Intent intent = new Intent(this, GamePropertiesActivity.class);
intent.putExtra("path", path);
startActivity(intent);
return true;
}
private boolean startEmulation(String bootPath, boolean resumeState) {
if (!doBIOSCheck())
return false;
Intent intent = new Intent(this, EmulationActivity.class);
intent.putExtra("bootPath", bootPath);
intent.putExtra("resumeState", resumeState);
startActivity(intent);
return true;
}
private void startStartFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_START_FILE);
}
private boolean doBIOSCheck() {
if (AndroidHostInterface.getInstance().hasAnyBIOSImages())
return true;
new AlertDialog.Builder(this)
.setTitle(R.string.main_activity_missing_bios_image)
.setMessage(R.string.main_activity_missing_bios_image_prompt)
.setPositiveButton(R.string.main_activity_yes, (dialog, button) -> importBIOSImage())
.setNegativeButton(R.string.main_activity_no, (dialog, button) -> {
})
.create()
.show();
return false;
}
private void importBIOSImage() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_bios_image)), REQUEST_IMPORT_BIOS_IMAGE);
}
private void onImportBIOSImageResult(Uri uri) {
// This should really be 512K but just in case we wanted to support the other BIOSes in the future...
final int MAX_BIOS_SIZE = 2 * 1024 * 1024;
InputStream stream = null;
try {
stream = getContentResolver().openInputStream(uri);
} catch (FileNotFoundException e) {
Toast.makeText(this, R.string.main_activity_failed_to_open_bios_image, Toast.LENGTH_LONG);
return;
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
byte[] buffer = new byte[512 * 1024];
int len;
while ((len = stream.read(buffer)) > 0) {
os.write(buffer, 0, len);
if (os.size() > MAX_BIOS_SIZE) {
throw new IOException(getString(R.string.main_activity_bios_image_too_large));
}
}
} catch (IOException e) {
new AlertDialog.Builder(this)
.setMessage(getString(R.string.main_activity_failed_to_read_bios_image_prefix) + e.getMessage())
.setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
})
.create()
.show();
return;
}
String importResult = AndroidHostInterface.getInstance().importBIOSImage(os.toByteArray());
String message = (importResult == null) ? getString(R.string.main_activity_invalid_error) : ("BIOS '" + importResult + "' imported.");
new AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
})
.create()
.show();
}
private void showVersion() {
final String message = AndroidHostInterface.getFullScmVersion();
new AlertDialog.Builder(this)
.setTitle(R.string.main_activity_show_version_title)
.setMessage(message)
.setPositiveButton(R.string.main_activity_ok, (dialog, button) -> {
})
.setNeutralButton(R.string.main_activity_copy, (dialog, button) -> {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
if (clipboard != null)
clipboard.setPrimaryClip(ClipData.newPlainText(getString(R.string.main_activity_show_version_title), message));
})
.create()
.show();
}
private void openGithubRepository() {
final String url = "https://github.com/stenzek/duckstation";
final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
}
private void openDiscordServer() {
final String url = "https://discord.gg/Buktv3t";
final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
}
}

View File

@@ -1,25 +0,0 @@
package com.github.stenzek.duckstation;
public class PatchCode {
private int mIndex;
private String mDescription;
private boolean mEnabled;
public PatchCode(int index, String description, boolean enabled) {
mIndex = index;
mDescription = description;
mEnabled = enabled;
}
public int getIndex() {
return mIndex;
}
public String getDescription() {
return mDescription;
}
public boolean isEnabled() {
return mEnabled;
}
}

View File

@@ -1,85 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.SharedPreferences;
import android.util.ArraySet;
import java.util.Set;
public class PreferenceHelpers {
/**
* Clears all preferences in the specified section (starting with sectionName/).
* We really don't want to have to do this with JNI...
*
* @param prefs Preferences object.
* @param sectionName Section to clear keys for.
*/
public static void clearSection(SharedPreferences prefs, String sectionName) {
String testSectionName = sectionName + "/";
SharedPreferences.Editor editor = prefs.edit();
for (String keyName : prefs.getAll().keySet()) {
if (keyName.startsWith(testSectionName)) {
editor.remove(keyName);
}
}
editor.commit();
}
public static Set<String> getStringSet(SharedPreferences prefs, String keyName) {
Set<String> values = null;
try {
values = prefs.getStringSet(keyName, null);
} catch (Exception e) {
try {
String singleValue = prefs.getString(keyName, null);
if (singleValue != null) {
values = new ArraySet<>();
values.add(singleValue);
}
} catch (Exception e2) {
}
}
return values;
}
public static boolean addToStringList(SharedPreferences prefs, String keyName, String valueToAdd) {
Set<String> values = getStringSet(prefs, keyName);
if (values == null) {
values = new ArraySet<>();
} else {
// We need to copy it otherwise the put doesn't save.
Set<String> valuesCopy = new ArraySet<>();
valuesCopy.addAll(values);
values = valuesCopy;
}
final boolean result = values.add(valueToAdd);
prefs.edit().putStringSet(keyName, values).commit();
return result;
}
public static boolean removeFromStringList(SharedPreferences prefs, String keyName, String valueToRemove) {
Set<String> values = getStringSet(prefs, keyName);
if (values == null)
return false;
// We need to copy it otherwise the put doesn't save.
Set<String> valuesCopy = new ArraySet<>();
valuesCopy.addAll(values);
values = valuesCopy;
final boolean result = values.remove(valueToRemove);
prefs.edit().putStringSet(keyName, values).commit();
return result;
}
public static void setStringList(SharedPreferences prefs, String keyName, String[] values) {
Set<String> valueSet = new ArraySet<String>();
for (String value : values)
valueSet.add(value);
prefs.edit().putStringSet(keyName, valueSet).commit();
}
}

View File

@@ -1,84 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class PropertyListAdapter extends BaseAdapter {
private class Item {
public String key;
public String title;
public String value;
Item(String key, String title, String value) {
this.key = key;
this.title = title;
this.value = value;
}
}
private Context mContext;
private ArrayList<Item> mItems = new ArrayList<>();
public PropertyListAdapter(Context context) {
mContext = context;
}
public Item getItemByKey(String key) {
for (Item it : mItems) {
if (it.key.equals(key))
return it;
}
return null;
}
public int addItem(String key, String title, String value) {
if (getItemByKey(key) != null)
return -1;
Item it = new Item(key, title, value);
int position = mItems.size();
mItems.add(it);
return position;
}
public boolean removeItem(Item item) {
return mItems.remove(item);
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public Object getItem(int position) {
return mItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext)
.inflate(R.layout.layout_game_property_entry, parent, false);
}
TextView titleView = (TextView) convertView.findViewById(R.id.property_title);
TextView valueView = (TextView) convertView.findViewById(R.id.property_value);
Item prop = mItems.get(position);
titleView.setText(prop.title);
valueView.setText(prop.value);
return convertView;
}
}

View File

@@ -1,151 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.nio.ByteBuffer;
public class SaveStateInfo {
private String mPath;
private String mGameTitle;
private String mGameCode;
private String mMediaPath;
private String mTimestamp;
private int mSlot;
private boolean mGlobal;
private Bitmap mScreenshot;
public SaveStateInfo(String path, String gameTitle, String gameCode, String mediaPath, String timestamp, int slot, boolean global,
int screenshotWidth, int screenshotHeight, byte[] screenshotData) {
mPath = path;
mGameTitle = gameTitle;
mGameCode = gameCode;
mMediaPath = mediaPath;
mTimestamp = timestamp;
mSlot = slot;
mGlobal = global;
if (screenshotData != null) {
try {
mScreenshot = Bitmap.createBitmap(screenshotWidth, screenshotHeight, Bitmap.Config.ARGB_8888);
mScreenshot.copyPixelsFromBuffer(ByteBuffer.wrap(screenshotData));
} catch (Exception e) {
mScreenshot = null;
}
}
}
public boolean exists() {
return mPath != null;
}
public String getPath() {
return mPath;
}
public String getGameTitle() {
return mGameTitle;
}
public String getGameCode() {
return mGameCode;
}
public String getMediaPath() {
return mMediaPath;
}
public String getTimestamp() {
return mTimestamp;
}
public int getSlot() {
return mSlot;
}
public boolean isGlobal() {
return mGlobal;
}
public Bitmap getScreenshot() {
return mScreenshot;
}
private void fillView(Context context, View view) {
ImageView imageView = (ImageView) view.findViewById(R.id.image);
TextView summaryView = (TextView) view.findViewById(R.id.summary);
TextView gameView = (TextView) view.findViewById(R.id.game);
TextView pathView = (TextView) view.findViewById(R.id.path);
TextView timestampView = (TextView) view.findViewById(R.id.timestamp);
if (mScreenshot != null)
imageView.setImageBitmap(mScreenshot);
else
imageView.setImageDrawable(context.getDrawable(R.drawable.ic_baseline_not_interested_60));
String summaryText;
if (mGlobal)
summaryView.setText(String.format(context.getString(R.string.save_state_info_global_save_n), mSlot));
else if (mSlot == 0)
summaryView.setText(R.string.save_state_info_quick_save);
else
summaryView.setText(String.format(context.getString(R.string.save_state_info_game_save_n), mSlot));
if (exists()) {
gameView.setText(String.format("%s - %s", mGameCode, mGameTitle));
int lastSlashPosition = mMediaPath.lastIndexOf('/');
if (lastSlashPosition >= 0)
pathView.setText(mMediaPath.substring(lastSlashPosition + 1));
else
pathView.setText(mMediaPath);
timestampView.setText(mTimestamp);
} else {
gameView.setText(R.string.save_state_info_slot_is_empty);
pathView.setText("");
timestampView.setText("");
}
}
public static class ListAdapter extends BaseAdapter {
private final Context mContext;
private final SaveStateInfo[] mInfos;
public ListAdapter(Context context, SaveStateInfo[] infos) {
mContext = context;
mInfos = infos;
}
@Override
public int getCount() {
return mInfos.length;
}
@Override
public Object getItem(int position) {
return mInfos[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.save_state_view_entry, parent, false);
}
mInfos[position].fillView(mContext, convertView);
return convertView;
}
}
}

View File

@@ -1,120 +0,0 @@
package com.github.stenzek.duckstation;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceFragmentCompat;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsCollectionFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
public static class SettingsFragment extends PreferenceFragmentCompat {
private int resourceId;
public SettingsFragment(int resourceId) {
this.resourceId = resourceId;
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(resourceId, rootKey);
}
}
public static class SettingsCollectionFragment extends Fragment {
private SettingsCollectionAdapter adapter;
private ViewPager2 viewPager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_settings_collection, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
adapter = new SettingsCollectionAdapter(this);
viewPager = view.findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
TabLayout tabLayout = view.findViewById(R.id.tab_layout);
new TabLayoutMediator(tabLayout, viewPager,
(tab, position) -> tab.setText(getResources().getStringArray(R.array.settings_tabs)[position])
).attach();
}
}
public static class SettingsCollectionAdapter extends FragmentStateAdapter {
public SettingsCollectionAdapter(@NonNull Fragment fragment) {
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 0: // General
return new SettingsFragment(R.xml.general_preferences);
case 1: // Display
return new SettingsFragment(R.xml.display_preferences);
case 2: // Audio
return new SettingsFragment(R.xml.audio_preferences);
case 3: // Enhancements
return new SettingsFragment(R.xml.enhancements_preferences);
case 4: // Controllers
return new SettingsFragment(R.xml.controllers_preferences);
case 5: // Advanced
return new SettingsFragment(R.xml.advanced_preferences);
default:
return new Fragment();
}
}
@Override
public int getItemCount() {
return 6;
}
}
}

View File

@@ -1,187 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
public final class TouchscreenControllerAxisView extends View {
private Drawable mBaseDrawable;
private Drawable mStickUnpressedDrawable;
private Drawable mStickPressedDrawable;
private boolean mPressed = false;
private int mPointerId = 0;
private float mXValue = 0.0f;
private float mYValue = 0.0f;
private int mDrawXPos = 0;
private int mDrawYPos = 0;
private String mConfigName;
private int mControllerIndex = -1;
private int mXAxisCode = -1;
private int mYAxisCode = -1;
private int mLeftButtonCode = -1;
private int mRightButtonCode = -1;
private int mUpButtonCode = -1;
private int mDownButtonCode = -1;
public TouchscreenControllerAxisView(Context context) {
super(context);
init();
}
public TouchscreenControllerAxisView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public TouchscreenControllerAxisView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
mBaseDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_base);
mBaseDrawable.setCallback(this);
mStickUnpressedDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_stick_unpressed);
mStickUnpressedDrawable.setCallback(this);
mStickPressedDrawable = getContext().getDrawable(R.drawable.ic_controller_analog_stick_pressed);
mStickPressedDrawable.setCallback(this);
}
public String getConfigName() {
return mConfigName;
}
public void setConfigName(String configName) {
mConfigName = configName;
}
public void setControllerAxis(int controllerIndex, int xCode, int yCode) {
mControllerIndex = controllerIndex;
mXAxisCode = xCode;
mYAxisCode = yCode;
mLeftButtonCode = -1;
mRightButtonCode = -1;
mUpButtonCode = -1;
mDownButtonCode = -1;
}
public void setControllerButtons(int controllerIndex, int leftCode, int rightCode, int upCode, int downCode) {
mControllerIndex = controllerIndex;
mXAxisCode = -1;
mYAxisCode = -1;
mLeftButtonCode = leftCode;
mRightButtonCode = rightCode;
mUpButtonCode = upCode;
mDownButtonCode = downCode;
}
public void setUnpressed() {
if (!mPressed && mXValue == 0.0f && mYValue == 0.0f)
return;
mPressed = false;
mXValue = 0.0f;
mYValue = 0.0f;
mDrawXPos = 0;
mDrawYPos = 0;
invalidate();
updateControllerState();
}
public void setPressed(int pointerId, float pointerX, float pointerY) {
final float dx = pointerX - (float) (getX() + (float) (getWidth() / 2));
final float dy = pointerY - (float) (getY() + (float) (getHeight() / 2));
// Log.i("SetPressed", String.format("px=%f,py=%f dx=%f,dy=%f", pointerX, pointerY, dx, dy));
final float pointerDistance = Math.max(Math.abs(dx), Math.abs(dy));
final float angle = (float) Math.atan2((double) dy, (double) dx);
final float maxDistance = (float) Math.min((getWidth() - getPaddingLeft() - getPaddingRight()) / 2, (getHeight() - getPaddingTop() - getPaddingBottom()) / 2);
final float length = Math.min(pointerDistance / maxDistance, 1.0f);
// Log.i("SetPressed", String.format("pointerDist=%f,angle=%f,w=%d,h=%d,maxDist=%f,length=%f", pointerDistance, angle, getWidth(), getHeight(), maxDistance, length));
final float xValue = (float) Math.cos((double) angle) * length;
final float yValue = (float) Math.sin((double) angle) * length;
mDrawXPos = (int) (xValue * maxDistance);
mDrawYPos = (int) (yValue * maxDistance);
boolean doUpdate = (pointerId != mPointerId || !mPressed || (xValue != mXValue || yValue != mYValue));
mPointerId = pointerId;
mPressed = true;
mXValue = xValue;
mYValue = yValue;
// Log.i("SetPressed", String.format("xval=%f,yval=%f,drawX=%d,drawY=%d", mXValue, mYValue, mDrawXPos, mDrawYPos));
if (doUpdate) {
invalidate();
updateControllerState();
}
}
private void updateControllerState() {
final float BUTTON_THRESHOLD = 0.33f;
AndroidHostInterface hostInterface = AndroidHostInterface.getInstance();
if (mXAxisCode >= 0)
hostInterface.setControllerAxisState(mControllerIndex, mXAxisCode, mXValue);
if (mYAxisCode >= 0)
hostInterface.setControllerAxisState(mControllerIndex, mYAxisCode, mYValue);
if (mLeftButtonCode >= 0)
hostInterface.setControllerButtonState(mControllerIndex, mLeftButtonCode, (mXValue <= -BUTTON_THRESHOLD));
if (mRightButtonCode >= 0)
hostInterface.setControllerButtonState(mControllerIndex, mRightButtonCode, (mXValue >= BUTTON_THRESHOLD));
if (mUpButtonCode >= 0)
hostInterface.setControllerButtonState(mControllerIndex, mUpButtonCode, (mYValue <= -BUTTON_THRESHOLD));
if (mDownButtonCode >= 0)
hostInterface.setControllerButtonState(mControllerIndex, mDownButtonCode, (mYValue >= BUTTON_THRESHOLD));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final int paddingLeft = getPaddingLeft();
final int paddingTop = getPaddingTop();
final int paddingRight = getPaddingRight();
final int paddingBottom = getPaddingBottom();
final int contentWidth = getWidth() - paddingLeft - paddingRight;
final int contentHeight = getHeight() - paddingTop - paddingBottom;
mBaseDrawable.setBounds(paddingLeft, paddingTop,
paddingLeft + contentWidth, paddingTop + contentHeight);
mBaseDrawable.draw(canvas);
final int stickWidth = contentWidth / 3;
final int stickHeight = contentHeight / 3;
final int halfStickWidth = stickWidth / 2;
final int halfStickHeight = stickHeight / 2;
final int centerX = getWidth() / 2;
final int centerY = getHeight() / 2;
final int drawX = centerX + mDrawXPos;
final int drawY = centerY + mDrawYPos;
Drawable stickDrawable = mPressed ? mStickPressedDrawable : mStickUnpressedDrawable;
stickDrawable.setBounds(drawX - halfStickWidth, drawY - halfStickHeight, drawX + halfStickWidth, drawY + halfStickHeight);
stickDrawable.draw(canvas);
}
public boolean isPressed() {
return mPressed;
}
public boolean hasPointerId() {
return mPointerId >= 0;
}
public int getPointerId() {
return mPointerId;
}
public void setPointerId(int mPointerId) {
this.mPointerId = mPointerId;
}
}

View File

@@ -1,130 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.View;
/**
* TODO: document your custom view class.
*/
public final class TouchscreenControllerButtonView extends View {
private Drawable mUnpressedDrawable;
private Drawable mPressedDrawable;
private boolean mPressed = false;
private boolean mHapticFeedback = false;
private int mControllerIndex = -1;
private int mButtonCode = -1;
private String mConfigName;
public TouchscreenControllerButtonView(Context context) {
super(context);
init(context, null, 0);
}
public TouchscreenControllerButtonView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0);
}
public TouchscreenControllerButtonView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs, defStyle);
}
private void init(Context context, AttributeSet attrs, int defStyle) {
// Load attributes
final TypedArray a = getContext().obtainStyledAttributes(
attrs, R.styleable.TouchscreenControllerButtonView, defStyle, 0);
if (a.hasValue(R.styleable.TouchscreenControllerButtonView_unpressedDrawable)) {
mUnpressedDrawable = a.getDrawable(R.styleable.TouchscreenControllerButtonView_unpressedDrawable);
mUnpressedDrawable.setCallback(this);
}
if (a.hasValue(R.styleable.TouchscreenControllerButtonView_pressedDrawable)) {
mPressedDrawable = a.getDrawable(R.styleable.TouchscreenControllerButtonView_pressedDrawable);
mPressedDrawable.setCallback(this);
}
a.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final int paddingLeft = getPaddingLeft();
final int paddingTop = getPaddingTop();
final int paddingRight = getPaddingRight();
final int paddingBottom = getPaddingBottom();
final int contentWidth = getWidth() - paddingLeft - paddingRight;
final int contentHeight = getHeight() - paddingTop - paddingBottom;
// Draw the example drawable on top of the text.
Drawable drawable = mPressed ? mPressedDrawable : mUnpressedDrawable;
if (drawable != null) {
drawable.setBounds(paddingLeft, paddingTop,
paddingLeft + contentWidth, paddingTop + contentHeight);
drawable.draw(canvas);
}
}
public boolean isPressed() {
return mPressed;
}
public void setPressed(boolean pressed) {
if (pressed == mPressed)
return;
mPressed = pressed;
invalidate();
updateControllerState();
if (mHapticFeedback) {
performHapticFeedback(pressed ? HapticFeedbackConstants.VIRTUAL_KEY : HapticFeedbackConstants.VIRTUAL_KEY_RELEASE);
}
}
public void setButtonCode(int controllerIndex, int code) {
mControllerIndex = controllerIndex;
mButtonCode = code;
}
public void setConfigName(String name) {
mConfigName = name;
}
public String getConfigName() {
return mConfigName;
}
public void setHapticFeedback(boolean enabled) {
mHapticFeedback = enabled;
}
private void updateControllerState() {
if (mButtonCode >= 0)
AndroidHostInterface.getInstance().setControllerButtonState(mControllerIndex, mButtonCode, mPressed);
}
public Drawable getPressedDrawable() {
return mPressedDrawable;
}
public void setPressedDrawable(Drawable pressedDrawable) {
mPressedDrawable = pressedDrawable;
}
public Drawable getUnpressedDrawable() {
return mUnpressedDrawable;
}
public void setUnpressedDrawable(Drawable unpressedDrawable) {
mUnpressedDrawable = unpressedDrawable;
}
}

View File

@@ -1,445 +0,0 @@
package com.github.stenzek.duckstation;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.preference.PreferenceManager;
import java.util.ArrayList;
/**
* TODO: document your custom view class.
*/
public class TouchscreenControllerView extends FrameLayout {
private int mControllerIndex;
private String mControllerType;
private String mViewType;
private View mMainView;
private ArrayList<TouchscreenControllerButtonView> mButtonViews = new ArrayList<>();
private ArrayList<TouchscreenControllerAxisView> mAxisViews = new ArrayList<>();
private boolean mHapticFeedback;
private String mLayoutOrientation;
private boolean mEditingLayout = false;
private View mMovingView = null;
private String mMovingName = null;
private float mMovingLastX = 0.0f;
private float mMovingLastY = 0.0f;
private ConstraintLayout mEditLayout = null;
public TouchscreenControllerView(Context context) {
super(context);
setFocusable(false);
setFocusableInTouchMode(false);
}
public TouchscreenControllerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchscreenControllerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
private String getConfigKeyForXTranslation(String name) {
return String.format("TouchscreenController/%s/%s%sXTranslation", mViewType, name, mLayoutOrientation);
}
private String getConfigKeyForYTranslation(String name) {
return String.format("TouchscreenController/%s/%s%sYTranslation", mViewType, name, mLayoutOrientation);
}
private void saveTranslationForButton(String name, float xTranslation, float yTranslation) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
final SharedPreferences.Editor editor = prefs.edit();
editor.putFloat(getConfigKeyForXTranslation(name), xTranslation);
editor.putFloat(getConfigKeyForYTranslation(name), yTranslation);
editor.commit();
}
private void clearTranslationForAllButtons() {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
final SharedPreferences.Editor editor = prefs.edit();
for (TouchscreenControllerButtonView buttonView : mButtonViews) {
editor.remove(getConfigKeyForXTranslation(buttonView.getConfigName()));
editor.remove(getConfigKeyForYTranslation(buttonView.getConfigName()));
buttonView.setTranslationX(0.0f);
buttonView.setTranslationY(0.0f);
}
for (TouchscreenControllerAxisView axisView : mAxisViews) {
editor.remove(getConfigKeyForXTranslation(axisView.getConfigName()));
editor.remove(getConfigKeyForYTranslation(axisView.getConfigName()));
axisView.setTranslationX(0.0f);
axisView.setTranslationY(0.0f);
}
editor.commit();
requestLayout();
}
private void reloadButtonTranslation() {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
for (TouchscreenControllerButtonView buttonView : mButtonViews) {
try {
buttonView.setTranslationX(prefs.getFloat(getConfigKeyForXTranslation(buttonView.getConfigName()), 0.0f));
buttonView.setTranslationY(prefs.getFloat(getConfigKeyForYTranslation(buttonView.getConfigName()), 0.0f));
//Log.i("TouchscreenController", String.format("Translation for %s %f %f", buttonView.getConfigName(),
// buttonView.getTranslationX(), buttonView.getTranslationY()));
} catch (ClassCastException ex) {
}
}
for (TouchscreenControllerAxisView axisView : mAxisViews) {
try {
axisView.setTranslationX(prefs.getFloat(getConfigKeyForXTranslation(axisView.getConfigName()), 0.0f));
axisView.setTranslationY(prefs.getFloat(getConfigKeyForYTranslation(axisView.getConfigName()), 0.0f));
} catch (ClassCastException ex) {
}
}
}
private String getOrientationString() {
switch (getContext().getResources().getConfiguration().orientation) {
case Configuration.ORIENTATION_PORTRAIT:
return "Portrait";
case Configuration.ORIENTATION_LANDSCAPE:
default:
return "Landscape";
}
}
/**
* Checks if the orientation of the layout has changed, and if so, reloads button translations.
*/
public void updateOrientation() {
String newOrientation = getOrientationString();
if (mLayoutOrientation != null && mLayoutOrientation.equals(newOrientation))
return;
Log.i("TouchscreenController", "New orientation: " + newOrientation);
mLayoutOrientation = newOrientation;
reloadButtonTranslation();
requestLayout();
}
public void init(int controllerIndex, String controllerType, String viewType, boolean hapticFeedback) {
mControllerIndex = controllerIndex;
mControllerType = controllerType;
mViewType = viewType;
mHapticFeedback = hapticFeedback;
mLayoutOrientation = getOrientationString();
if (mEditingLayout)
endLayoutEditing();
mButtonViews.clear();
mAxisViews.clear();
removeAllViews();
LayoutInflater inflater = LayoutInflater.from(getContext());
switch (viewType) {
case "digital":
mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_digital, this, true);
break;
case "analog_stick":
mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_analog_stick, this, true);
break;
case "analog_sticks":
mMainView = inflater.inflate(R.layout.layout_touchscreen_controller_analog_sticks, this, true);
break;
case "none":
default:
mMainView = null;
break;
}
if (mMainView == null)
return;
mMainView.setOnTouchListener((view1, event) -> {
if (mEditingLayout)
return handleEditingTouchEvent(event);
else
return handleTouchEvent(event);
});
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
linkButton(mMainView, R.id.controller_button_up, "UpButton", "Up");
linkButton(mMainView, R.id.controller_button_right, "RightButton", "Right");
linkButton(mMainView, R.id.controller_button_down, "DownButton", "Down");
linkButton(mMainView, R.id.controller_button_left, "LeftButton", "Left");
linkButton(mMainView, R.id.controller_button_l1, "L1Button", "L1");
linkButton(mMainView, R.id.controller_button_l2, "L2Button", "L2");
linkButton(mMainView, R.id.controller_button_select, "SelectButton", "Select");
linkButton(mMainView, R.id.controller_button_start, "StartButton", "Start");
linkButton(mMainView, R.id.controller_button_triangle, "TriangleButton", "Triangle");
linkButton(mMainView, R.id.controller_button_circle, "CircleButton", "Circle");
linkButton(mMainView, R.id.controller_button_cross, "CrossButton", "Cross");
linkButton(mMainView, R.id.controller_button_square, "SquareButton", "Square");
linkButton(mMainView, R.id.controller_button_r1, "R1Button", "R1");
linkButton(mMainView, R.id.controller_button_r2, "R2Button", "R2");
if (!linkAxis(mMainView, R.id.controller_axis_left, "LeftAxis", "Left"))
linkAxisToButtons(mMainView, R.id.controller_axis_left, "LeftAxis", "");
linkAxis(mMainView, R.id.controller_axis_right, "RightAxis", "Right");
reloadButtonTranslation();
requestLayout();
}
private void linkButton(View view, int id, String configName, String buttonName) {
TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView) view.findViewById(id);
if (buttonView == null)
return;
int code = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonName);
Log.i("TouchscreenController", String.format("%s -> %d", buttonName, code));
if (code >= 0) {
buttonView.setConfigName(configName);
buttonView.setButtonCode(mControllerIndex, code);
buttonView.setHapticFeedback(mHapticFeedback);
mButtonViews.add(buttonView);
} else {
Log.e("TouchscreenController", String.format("Unknown button name '%s' " +
"for '%s'", buttonName, mControllerType));
}
}
private boolean linkAxis(View view, int id, String configName, String axisName) {
TouchscreenControllerAxisView axisView = (TouchscreenControllerAxisView) view.findViewById(id);
if (axisView == null)
return false;
int xCode = AndroidHostInterface.getControllerAxisCode(mControllerType, axisName + "X");
int yCode = AndroidHostInterface.getControllerAxisCode(mControllerType, axisName + "Y");
Log.i("TouchscreenController", String.format("%s -> %d/%d", axisName, xCode, yCode));
if (xCode < 0 && yCode < 0)
return false;
axisView.setConfigName(configName);
axisView.setControllerAxis(mControllerIndex, xCode, yCode);
mAxisViews.add(axisView);
return true;
}
private boolean linkAxisToButtons(View view, int id, String configName, String buttonPrefix) {
TouchscreenControllerAxisView axisView = (TouchscreenControllerAxisView) view.findViewById(id);
if (axisView == null)
return false;
int leftCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Left");
int rightCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Right");
int upCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Up");
int downCode = AndroidHostInterface.getControllerButtonCode(mControllerType, buttonPrefix + "Down");
Log.i("TouchscreenController", String.format("%s(ButtonAxis) -> %d,%d,%d,%d", buttonPrefix, leftCode, rightCode, upCode, downCode));
if (leftCode < 0 && rightCode < 0 && upCode < 0 && downCode < 0)
return false;
axisView.setControllerButtons(mControllerIndex, leftCode, rightCode, upCode, downCode);
mAxisViews.add(axisView);
return true;
}
private int dpToPixels(float dp) {
return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()));
}
public void startLayoutEditing() {
if (mEditLayout == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
mEditLayout = (ConstraintLayout) inflater.inflate(R.layout.layout_touchscreen_controller_edit, this, false);
((Button) mEditLayout.findViewById(R.id.stop_editing)).setOnClickListener((view) -> endLayoutEditing());
((Button) mEditLayout.findViewById(R.id.reset_layout)).setOnClickListener((view) -> clearTranslationForAllButtons());
addView(mEditLayout);
}
mEditingLayout = true;
}
public void endLayoutEditing() {
if (mEditLayout != null) {
((ViewGroup) mMainView).removeView(mEditLayout);
mEditLayout = null;
}
mEditingLayout = false;
mMovingView = null;
mMovingName = null;
mMovingLastX = 0.0f;
mMovingLastY = 0.0f;
}
private boolean handleEditingTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_UP: {
if (mMovingView != null) {
// save position
saveTranslationForButton(mMovingName, mMovingView.getTranslationX(), mMovingView.getTranslationY());
mMovingView = null;
mMovingName = null;
mMovingLastX = 0.0f;
mMovingLastY = 0.0f;
}
return true;
}
case MotionEvent.ACTION_DOWN: {
if (mMovingView != null) {
// already moving a button
return true;
}
Rect rect = new Rect();
final float x = event.getX();
final float y = event.getY();
for (TouchscreenControllerButtonView buttonView : mButtonViews) {
buttonView.getHitRect(rect);
if (rect.contains((int) x, (int) y)) {
mMovingView = buttonView;
mMovingName = buttonView.getConfigName();
mMovingLastX = x;
mMovingLastY = y;
return true;
}
}
for (TouchscreenControllerAxisView axisView : mAxisViews) {
axisView.getHitRect(rect);
if (rect.contains((int) x, (int) y)) {
mMovingView = axisView;
mMovingName = axisView.getConfigName();
mMovingLastX = x;
mMovingLastY = y;
return true;
}
}
// nothing..
return true;
}
case MotionEvent.ACTION_MOVE: {
if (mMovingView == null)
return true;
final float x = event.getX();
final float y = event.getY();
final float dx = x - mMovingLastX;
final float dy = y - mMovingLastY;
mMovingLastX = x;
mMovingLastY = y;
final float posX = mMovingView.getX() + dx;
final float posY = mMovingView.getY() + dy;
//Log.d("Position", String.format("%f %f -> (%f %f) %f %f",
// mMovingView.getX(), mMovingView.getY(), dx, dy, posX, posY));
mMovingView.setX(posX);
mMovingView.setY(posY);
mMovingView.invalidate();
mMainView.requestLayout();
return true;
}
}
return false;
}
private boolean handleTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_UP: {
if (!AndroidHostInterface.hasInstanceAndEmulationThreadIsRunning())
return false;
for (TouchscreenControllerButtonView buttonView : mButtonViews) {
buttonView.setPressed(false);
}
for (TouchscreenControllerAxisView axisView : mAxisViews) {
axisView.setUnpressed();
}
return true;
}
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_MOVE: {
if (!AndroidHostInterface.hasInstanceAndEmulationThreadIsRunning())
return false;
Rect rect = new Rect();
final int pointerCount = event.getPointerCount();
final int liftedPointerIndex = (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP) ? event.getActionIndex() : -1;
for (TouchscreenControllerButtonView buttonView : mButtonViews) {
buttonView.getHitRect(rect);
boolean pressed = false;
for (int i = 0; i < pointerCount; i++) {
if (i == liftedPointerIndex)
continue;
final int x = (int) event.getX(i);
final int y = (int) event.getY(i);
if (rect.contains(x, y)) {
buttonView.setPressed(true);
pressed = true;
break;
}
}
if (!pressed)
buttonView.setPressed(pressed);
}
for (TouchscreenControllerAxisView axisView : mAxisViews) {
axisView.getHitRect(rect);
boolean pressed = false;
for (int i = 0; i < pointerCount; i++) {
if (i == liftedPointerIndex)
continue;
final int pointerId = event.getPointerId(i);
final int x = (int) event.getX(i);
final int y = (int) event.getY(i);
if ((rect.contains(x, y) && !axisView.isPressed()) ||
(axisView.isPressed() && axisView.getPointerId() == pointerId)) {
axisView.setPressed(pointerId, x, y);
pressed = true;
break;
}
}
if (!pressed)
axisView.setUnpressed();
}
return true;
}
}
return false;
}
}

View File

@@ -1,34 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillType="evenOdd"
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
android:strokeWidth="1"
android:strokeColor="#00000000">
<aapt:attr name="android:fillColor">
<gradient
android:endX="78.5885"
android:endY="90.9159"
android:startX="48.7653"
android:startY="61.0927"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
<vector android:height="15dp"
android:viewportHeight="15"
android:viewportWidth="21"
android:width="21dp"
xmlns:aapt="http://schemas.android.com/aapt"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillType="evenOdd"
android:pathData="M0,0h21v15h-21z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="10.5"
android:endY="15"
android:startX="10.5"
android:startY="0"
android:type="linear">
<item
android:color="#FFFFFFFF"
android:offset="0" />
<item
android:color="#FFF0F0F0"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
<path
android:fillType="evenOdd"
android:pathData="M0,0h21v15h-21z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="10.5"
android:endY="15"
android:startX="10.5"
android:startY="0"
android:type="linear">
<item
android:color="#FF043CAE"
android:offset="0" />
<item
android:color="#FF00339A"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
<path
android:fillType="evenOdd"
android:pathData="M10.5,3L9.7929,3.2071L10,2.5L9.7929,1.7929L10.5,2L11.2071,1.7929L11,2.5L11.2071,3.2071L10.5,3ZM10.5,13L9.7929,13.2071L10,12.5L9.7929,11.7929L10.5,12L11.2071,11.7929L11,12.5L11.2071,13.2071L10.5,13ZM15.5,8L14.7929,8.2071L15,7.5L14.7929,6.7929L15.5,7L16.2071,6.7929L16,7.5L16.2071,8.2071L15.5,8ZM5.5,8L4.7929,8.2071L5,7.5L4.7929,6.7929L5.5,7L6.2071,6.7929L6,7.5L6.2071,8.2071L5.5,8ZM14.8301,5.5L14.123,5.7071L14.3301,5L14.123,4.2929L14.8301,4.5L15.5372,4.2929L15.3301,5L15.5372,5.7071L14.8301,5.5ZM6.1699,10.5L5.4628,10.7071L5.6699,10L5.4628,9.2929L6.1699,9.5L6.877,9.2929L6.6699,10L6.877,10.7071L6.1699,10.5ZM13,3.6699L12.2929,3.877L12.5,3.1699L12.2929,2.4628L13,2.6699L13.7071,2.4628L13.5,3.1699L13.7071,3.877L13,3.6699ZM8,12.3301L7.2929,12.5372L7.5,11.8301L7.2929,11.123L8,11.3301L8.7071,11.123L8.5,11.8301L8.7071,12.5372L8,12.3301ZM14.8301,10.5L14.123,10.7071L14.3301,10L14.123,9.2929L14.8301,9.5L15.5372,9.2929L15.3301,10L15.5372,10.7071L14.8301,10.5ZM6.1699,5.5L5.4628,5.7071L5.6699,5L5.4628,4.2929L6.1699,4.5L6.877,4.2929L6.6699,5L6.877,5.7071L6.1699,5.5ZM13,12.3301L12.2929,12.5372L12.5,11.8301L12.2929,11.123L13,11.3301L13.7071,11.123L13.5,11.8301L13.7071,12.5372L13,12.3301ZM8,3.6699L7.2929,3.877L7.5,3.1699L7.2929,2.4628L8,2.6699L8.7071,2.4628L8.5,3.1699L8.7071,3.877L8,3.6699Z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="10.5"
android:endY="13.2071"
android:startX="10.5"
android:startY="1.7929"
android:type="linear">
<item
android:color="#FFFFD429"
android:offset="0" />
<item
android:color="#FFFFCC00"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
</vector>

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_hp.xml -->
<vector android:height="15dp"
android:viewportHeight="15"
android:viewportWidth="21"
android:width="21dp"
xmlns:aapt="http://schemas.android.com/aapt"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillType="evenOdd"
android:pathData="M0,0h21v15h-21z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="10.5"
android:endY="15"
android:startX="10.5"
android:startY="0"
android:type="linear">
<item
android:color="#FFFFFFFF"
android:offset="0" />
<item
android:color="#FFF0F0F0"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
<path
android:fillType="evenOdd"
android:pathData="M10.5,7.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="10.5"
android:endY="12"
android:startX="10.5"
android:startY="3"
android:type="linear">
<item
android:color="#FFD81441"
android:offset="0" />
<item
android:color="#FFBB0831"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
</vector>

View File

@@ -1,539 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="21dp"
android:viewportWidth="10"
android:viewportHeight="13">
<path
android:fillColor="#bd3d44"
android:pathData="M0 0h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 1h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 2h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 3h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 4h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 5h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 6h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 7h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 8h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 9h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 10h13v1h-13Z" />
<path
android:fillColor="#fff"
android:pathData="M0 11h13v1h-13Z" />
<path
android:fillColor="#bd3d44"
android:pathData="M0 12h13v1h-13Z" />
<path
android:fillColor="#192f5d"
android:pathData="M0 0h5.2v7h-5.2Z" />
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="4.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group android:translateY="1.4">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="4.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group android:translateY="2.9">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="4.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group android:translateY="4.3">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="4.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group android:translateY="5.6">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="4.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<!-- Odd stars -->
<group
android:translateY="0.7"
android:translateX="0.4">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group
android:translateY="2.1"
android:translateX="0.4">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group
android:translateY="3.6"
android:translateX="0.4">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
<group
android:translateY="5.0"
android:translateX="0.4">
<group
android:translateX="0.2"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.0"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="1.8"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="2.6"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
<group
android:translateX="3.4"
android:translateY="0.2"
android:scaleX="0.009"
android:scaleY="0.012">
<path
android:fillColor="#fff"
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
</group>
</group>
</vector>

View File

@@ -1,16 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2l-5.5,9h11z" />
<path
android:fillColor="@android:color/white"
android:pathData="M17.5,17.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0" />
<path
android:fillColor="@android:color/white"
android:pathData="M3,13.5h8v8H3z" />
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z" />
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" />
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M20,6h-8l-2,-2L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,8c0,-1.1 -0.9,-2 -2,-2zM20,18L4,18L4,8h16v10z" />
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M15,7.5V2H9v5.5l3,3 3,-3zM7.5,9H2v6h5.5l3,-3 -3,-3zM9,16.5V22h6v-5.5l-3,-3 -3,3zM16.5,9l-3,3 3,3H22V9h-5.5z" />
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
</vector>

View File

@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,7h-3v5.5c0,1.38 -1.12,2.5 -2.5,2.5S10,13.88 10,12.5s1.12,-2.5 2.5,-2.5c0.57,0 1.08,0.19 1.5,0.51L14,5h4v2zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6z"/>
</vector>

View File

@@ -1,5 +0,0 @@
<vector android:height="60dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="60dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8 0,-1.85 0.63,-3.55 1.69,-4.9L16.9,18.31C15.55,19.37 13.85,20 12,20zM18.31,16.9L7.1,5.69C8.45,4.63 10.15,4 12,4c4.42,0 8,3.58 8,8 0,1.85 -0.63,3.55 -1.69,4.9z"/>
</vector>

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