Compare commits

...
1198 Commits
Author SHA1 Message Date
Barry Rowe fca7bc52ed Fixed accessibility for menu start actions. 2020-04-04 11:47:19 -07:00
Barry Rowe 159190cc14 Merge branch 'ozone_accessibility' into SAPI_NVDA_auto 2020-04-03 18:09:49 -07:00
Barry Rowe 984c3a22a3 Added in fixes for ozone and glui accessibility. 2020-04-03 10:39:28 -07:00
Autechre 1d7cae2ceb Merge pull request #10383 from myfreeweb/monotonic
features_cpu: synchronize ifdefs for CLOCK_MONOTONIC
2020-04-03 01:50:12 +02:00
Autechre 1f2e42cdc2 Merge pull request #10384 from myfreeweb/bsd-qt
Use -fPIC with Qt on *BSD like on Linux
2020-04-03 01:49:52 +02:00
Autechre 2cb67d1172 Merge pull request #10387 from yo6snap/master
[FIXES]GPU capture on Metal/OSX/NVidia
2020-04-03 01:49:25 +02:00
Olivier PARRA 5813228c6c [FIXES]GPU capture on Metal/OSX/NVidia
[FIX]RetroArch CRASH on Metal internal assert
_validateGetBytes:39: failed assertion `texture must not be a
framebufferOnly texture.' GPU Capture were done on a
framebufferOnly texture. Fix it by setting framebufferOnly
CAMetalLayer property to NO. Subsequent MTLTexture inherits from
this property.

[FIX]Capture black frames. Resulting PNG screenshots were black.
Since GPU texture where not sync with CPU,
getBytes:bytesPerRow:fromRegion:mipmapLevel: behavior is undefined
Fix it by adding synchronizeResource command to blitCommandEncoder
In order to keep performances, syncing is done ONLY when a GPU
Capture is requested.

[FIX]Corrupted image due to incorrect viewport copy
Modify code in charge of copying MTLTexture bytes to 24bits PNG
buffer.
2020-04-02 23:01:48 +02:00
Autechre dea5b5347d Merge pull request #10385 from jdgleaver/playlist-strlen-fix
(playlist.c) Prevent possible NULL pointer dereferences when calling strlen()
2020-04-02 16:05:17 +02:00
jdgleaver f39e554586 (playlist.c) Prevent possible NULL pointer dereferences when calling strlen() 2020-04-02 14:19:35 +01:00
Greg V f646fea03f Use -fPIC with Qt on *BSD like on Linux
Required on FreeBSD at least.
2020-04-02 15:24:54 +03:00
Greg V f9ae48c3f6 features_cpu: synchronize ifdefs for CLOCK_MONOTONIC
The ifdef in cpu_features_get_time_usec was more portable
than the one in cpu_features_get_perf_counter.

Make them the same to avoid 'undefined reference to __mftb'
on FreeBSD/powerpc64.
2020-04-02 15:09:49 +03:00
Barry Rowe 1e11cbf6b4 Got gamepad commands to work with paused emulation. 2020-04-01 16:40:41 -07:00
twinaphex ecebcf8215 Add HAVE_NVDA switch 2020-04-01 16:40:41 -07:00
Barry Rowe 8f7646ded8 Bug fix with ai service state dictionary. 2020-04-01 16:40:41 -07:00
Barry Rowe b96fd5933c Added in gamepad override access to the AI Service. 2020-04-01 16:40:41 -07:00
Barry Rowe 03676061b4 Adding some nvda stuff. 2020-04-01 16:40:41 -07:00
Barry Rowe 777ba7c5c3 Added in auto-translate support. 2020-04-01 16:40:41 -07:00
Barry Rowe bfb5f58b90 Added in SAPI option for windows narrator. 2020-04-01 16:40:41 -07:00
Autechre 2004545f96 Update CHANGES.md 2020-04-01 21:00:15 +02:00
Autechre e80fb4f386 Merge pull request #10375 from jdgleaver/font-fixes
Enable correct vertical alignment of text (+ font rendering fixes)
2020-04-01 20:59:51 +02:00
Autechre 83958a4402 Merge pull request #10378 from phcoder/qnx-rb
Several fixes for QNX/Blackberry10
2020-04-01 20:46:59 +02:00
Twinaphex 8292f31ea0 Fix unused variable warning 2020-04-01 20:43:03 +02:00
Twinaphex d0a9de01a3 (GL) Fix unused variable setting 2020-04-01 20:41:38 +02:00
Vladimir Serbinenko c809ecd623 Add qnx packaging
Put your cores into pkg/qnx/pkg/assets/cores and info into
pkg/qnx/pkg/assets/info.

set QNX_DEBUGTOKEN to your debug token. Then:

make -f Makefile.griffin platform=qnx clean retroarch-dev.bar

To install:

blackberry-deploy -installApp DEVICEIP  retroarch-dev.bar -password YOURPASSWORD
2020-04-01 16:49:44 +02:00
Vladimir Serbinenko 2ff9bfb24d qnx: support analog sticks 2020-04-01 16:49:44 +02:00
Vladimir Serbinenko ab34a0a34f Handle errors in qnx_input
I had errors with null driver. While this setup is not really usable,
we shouldn't crash on it
2020-04-01 16:49:44 +02:00
Vladimir Serbinenko c5e2099dd9 Add makefile for qnx
Usage:
make -f Makefile.griffin platform=qnx clean all
2020-04-01 16:49:44 +02:00
Vladimir Serbinenko 5a2e4237c4 Fix qnx compilation 2020-04-01 16:49:44 +02:00
Autechre 9d0585a280 Update CHANGES.md 2020-03-31 20:17:09 +02:00
Autechre f0ef3904d5 Merge pull request #10376 from Jamiras/bad_chd_header
don't ignore errors from decompress_v5_map
2020-03-31 20:16:35 +02:00
Jamiras 7fe952ddeb don't ignore errors from decompress_v5_map 2020-03-31 11:08:35 -06:00
jdgleaver 73bcd7a692 Enable correct vertical alignment of text (+ font rendering fixes) 2020-03-31 16:55:22 +01:00
Autechre 316c07c226 Merge pull request #10372 from WeedyWeedSmoker/French-translation-update
French: Add drm_go2_ctx for odroidgo2
2020-03-30 19:01:48 +02:00
Weedy Weed Smoker 2a579f4418 French: Add drm_go2_ctx for odroidgo2 2020-03-30 22:00:25 +07:00
Autechre 8f8fbab4f9 Update CHANGES.md 2020-03-30 08:43:19 +02:00
Autechre 411ff301c7 Merge pull request #10370 from phcoder/psl1ght_s2
PSL1GHT port
2020-03-30 08:42:21 +02:00
Vladimir Serbinenko 2fb7ba22e5 PSL1GHT port
Working:

* packaging
* running cores
* switching cores
* gamepad including axis
* rgui
* audio
* video

Not working:

* OSD
* menus other than rgui
* shaders
* Graphical acceleration
* Proper signing
* ODE build
* rumble
* keyboard
* mouse

Not tested:

* A lot
2020-03-30 05:39:22 +02:00
Autechre 761a17ccd8 Merge pull request #10365 from trioan/fixes
msvc 2017 -- HAVE_ODROIDGO2 compile fixes
2020-03-29 06:00:18 +02:00
trioan f466cc5143 msvc 2017 -- HAVE_ODROIDGO2 compile fixes 2020-03-29 03:20:34 +00:00
Autechre 47067b691e Update CHANGES.md 2020-03-29 04:42:21 +02:00
Autechre 83a262ceae Update CHANGES.md 2020-03-29 04:41:54 +02:00
Autechre 15c661a374 Merge pull request #10262 from valadaa48/odroidgo2_drm_ctx_hw_scaling
Add drm_go2_ctx for odroidgo2
2020-03-29 04:40:57 +02:00
Autechre 43d24114b3 Merge pull request #10362 from WeedyWeedSmoker/French-translation-update
French: Add "Cheat File (Append)"
2020-03-28 15:17:58 +01:00
Autechre e4a3946998 Merge pull request #10361 from valadaa48/oga_signal_handler
Register signal handler for oga video driver
2020-03-28 15:17:36 +01:00
Weedy Weed Smoker 0087928aa5 French: Add "Cheat File (Append)" 2020-03-28 17:58:16 +07:00
valadaa48 2d2bd625c6 Register signal handler for oga video driver 2020-03-28 04:54:33 +00:00
valadaa48 6e4228b054 Add drm_go2_ctx for odroidgo2
- Revert odroidgo changes to drm_ctx
- Introduce new drm_go2_ctx specifically for odroidgo2 (and libgo2)
- Add hw_scaling option to mitigate builtin gl scaling/filtering and to
use libgo2 and rga's hw scaling and bicubic filtering via librga. The
quality of the image is improved by this and should be a bit faster.

Credits to CrashOverride for the initial libgo2 port and
commit to RA. And to natinusala for the initial cleanup/commit in the original
drm_ctx driver. NOirBRight for finding this setting and testing.
2020-03-28 03:30:28 +00:00
twinaphex 5972ed9cc6 (gfx_widgets) Cleanups 2020-03-28 03:53:51 +01:00
twinaphex 2dc0fdcfee (gfx drivers_display) Cleanups 2020-03-28 03:47:05 +01:00
twinaphex 4fd3cac319 (Menu) remove ident 2020-03-28 01:59:15 +01:00
twinaphex 66eed86ccf Get rid of the hash generation in menu_cbs.c 2020-03-27 19:09:50 +01:00
twinaphex 79dc998a7b Get rid of the remaining hashes 2020-03-27 19:05:54 +01:00
twinaphex 75a33b3662 (Menu cbs OK) Get rid of label hashes 2020-03-27 18:35:10 +01:00
twinaphex ac72d19f5c Update msg_hash_us.h 2020-03-27 18:04:36 +01:00
twinaphex 49e584c6f6 (Deferred push) Remove hashes 2020-03-27 18:00:26 +01:00
twinaphex d30d2abe10 Fix title regression with playlist entries 2020-03-27 16:41:10 +01:00
Autechre 637266be03 Merge pull request #10357 from jdgleaver/runtime-file-config-cleanup
(runtime_file) Remove settings pointer dependency
2020-03-27 14:57:48 +01:00
jdgleaver 05744bb69f (runtime_file) Remove settings pointer dependency 2020-03-27 11:12:32 +00:00
twinaphex 7531223846 (Menu) Fix ELSPA label 2020-03-27 05:43:44 +01:00
twinaphex 7ba551864b Fix input overlay title label 2020-03-27 04:43:42 +01:00
Autechre 0988f7fb8a Merge pull request #10356 from justinweiss/always-define-rgui-reset
Always define rgui_context_reset and rgui_context_destroy
2020-03-27 02:34:44 +01:00
Justin Weiss d016a0929b Always define rgui_context_reset and rgui_context_destroy
RetroArch will log an error if `menu_driver_ctx->context_reset` isn't
defined. The function should always be defined, and should skip the
platform-specific code inside the function instead.
2020-03-26 17:22:45 -07:00
Autechre b01ae6b366 Update CHANGES.md 2020-03-27 00:15:45 +01:00
Autechre 309af5d526 Merge pull request #10354 from johanbcn/bugfix/android-chd-scanning
Include WANT_SUBCODE and WANT_RAW_DATA_SECTOR defines on Android's JNI makefile
2020-03-27 00:15:00 +01:00
Joan Coll Cerdán 66d98af48b Include WANT_SUBCODE and WANT_RAW_DATA_SECTOR defines on Android's JNI
makefile in order to properly support CHD scanning.
2020-03-26 23:37:46 +01:00
twinaphex 97ee822f35 Fix some titles 2020-03-26 17:47:31 +01:00
twinaphex 4646da6df8 Get rid of label hashes in menu_cbs_title.c 2020-03-26 17:36:05 +01:00
twinaphex 6f6a4e59df (Title) Cleanup more hashes 2020-03-26 17:22:36 +01:00
twinaphex 4a95cb7b54 Cleanups 2020-03-26 16:46:49 +01:00
twinaphex e81e53bdf6 (Menu cbs OK) Rewrite this into a loop 2020-03-26 16:44:16 +01:00
twinaphex ae48da5ebf Cleanups 2020-03-26 14:57:02 +01:00
twinaphex 3d24439276 (Menu cbs ok) Get rid of unused hashes 2020-03-26 14:54:09 +01:00
Autechre 6b0a46d5d2 Update CHANGES.md 2020-03-26 14:06:57 +01:00
Autechre 456346e0c6 Merge pull request #10352 from jdgleaver/texture-slice-fix
Fix 'gfx_display_draw_texture_slice()' (i.e. prevent glitches when rendering Ozone's selection cursor)
2020-03-26 14:06:01 +01:00
jdgleaver 1440b46eb0 Fix 'gfx_display_draw_texture_slice()' (i.e. prevent glitches when rendering Ozone's selection cursor) 2020-03-26 11:45:28 +00:00
twinaphex 9f7e55e59d (intl) Remove HAVE_VIDEO_LAYOUT ifdefs 2020-03-26 03:05:21 +01:00
Autechre ef13fc1b9e Merge pull request #10346 from DEX357/patch-52
Update msg_hash_pl.h
2020-03-26 01:27:56 +01:00
hizzlekizzle 513dcdc502 Merge pull request #10348 from WeedyWeedSmoker/French-translation-update
French: (Manual content scanner/playlist cleaner)
2020-03-25 16:14:49 -05:00
Weedy Weed Smoker b17e274ff6 French: (Manual content scanner/playlist cleaner)
Prevent redundant playlist entries when handling M3U content
2020-03-26 02:54:33 +07:00
DEX357 29774bd84a Update msg_hash_pl.h 2020-03-25 15:50:30 +01:00
hizzlekizzle 95f0b6e0b8 Merge pull request #10344 from phcoder/3ds6
3ds: Add ID for ThePowderToy
2020-03-24 19:19:40 -05:00
Vladimir Serbinenko ab8af924c0 3ds: Add ID for ThePowderToy 2020-03-24 23:22:39 +01:00
Autechre a0e12fecde Update CHANGES.md 2020-03-24 18:24:55 +01:00
Autechre af52212e6d Merge pull request #10310 from Ryunam/lastplayed-timedate
Update timedate style options for Last Played sublabel metadata
2020-03-24 18:16:12 +01:00
Autechre ff7f56e996 Merge pull request #10314 from jdgleaver/m3u-scan
(Manual content scanner/playlist cleaner) Prevent redundant playlist entries when handling M3U content
2020-03-24 18:15:24 +01:00
Autechre 261adaf100 Merge pull request #10339 from jdgleaver/input-notification-port
Use correct port index in input device configured/disconnected notifications
2020-03-24 18:15:06 +01:00
Autechre b9c32276bf Merge pull request #10340 from jdgleaver/ozone-theme-setting
(Ozone) Hide 'Menu Color Theme' setting when 'Use preferred system color theme' is enabled
2020-03-24 18:14:49 +01:00
Autechre e639d2b09a Merge pull request #10342 from jdgleaver/thumb-swap-fix
(XMB/Ozone) Fix thumbnail switching via 'scan' button functionality
2020-03-24 18:13:46 +01:00
Autechre 2cc841a6cb Merge pull request #10343 from jdgleaver/font-segfault-fix
(Menu) Prevent font-related segfaults when using extremely small scales/window sizes
2020-03-24 18:13:32 +01:00
jdgleaver 9194a3b24d (Menu) Prevent font-related segfaults when using extremely small scales/window sizes 2020-03-24 16:14:53 +00:00
jdgleaver b5d9ed60e7 (XMB/Ozone) Fix thumbnail switching via 'scan' button functionality 2020-03-24 14:28:01 +00:00
jdgleaver 7a1e97f8c0 (Ozone) Hide 'Menu Color Theme' setting when 'Use preferred system color theme' is enabled + ensure default theme is applied consistently 2020-03-24 12:06:30 +00:00
jdgleaver fb7b1ec1a0 Use correct port index in input device configured/disconnected notifications 2020-03-24 11:18:54 +00:00
hizzlekizzle 9729b5a917 Merge pull request #10322 from valadaa48/video_oga
Video oga
2020-03-23 13:30:51 -05:00
valadaa48 53fffbd670 Add "oga" graphics driver for odroid go advance
libgo2 improvements

- Expose rga scale mode as param for future use
- Cleanup whitespace
- Add option to disable managed surfaces and allow direct posting to drm
  driver

oga graphics driver

- Uses direct framebuffers in libgo2
- Bitmap font only supported for now
- Uses built-in bicubic filtering: graphics quality better than gl + bilinear
- Support for rotation
2020-03-22 23:35:22 -04:00
Autechre 8643cb22dd Merge pull request #10327 from phcoder/3ds5
3ds: Add ID for crocods
2020-03-22 22:00:57 +01:00
Vladimir Serbinenko 47582ffa41 3ds: Add ID for crocods 2020-03-22 15:03:28 +01:00
Autechre f48c668447 Update CHANGES.md 2020-03-20 17:35:42 +01:00
Autechre 8bcd74bf42 Merge pull request #10311 from altiereslima/master
Update Portuguese Brazilian Translation
2020-03-20 17:34:45 +01:00
Autechre 92f6c33d34 Merge pull request #10312 from natinusala/vc-fix
Fix VG and VC EGL
2020-03-20 17:34:33 +01:00
jdgleaver c61f6aafc1 (m3u_file.c) Replace tab indents with spaces 2020-03-20 14:53:53 +00:00
jdgleaver e24274a314 (Manual content scanner/playlist cleaner) Prevent redundant playlist entries when handling M3U content 2020-03-20 14:26:08 +00:00
natinusala 00590f2077 Fix VG and VC EGL 2020-03-20 09:19:06 +01:00
altiereslima 353ca34a49 Update msg_hash_pt_br.h 2020-03-19 21:40:51 -03:00
altiereslima bc01a94f07 Update msg_hash_pt_br.h 2020-03-19 21:18:43 -03:00
Ryunam 5a8106308e Update timedate style options for Last Played sublabel metadata 2020-03-19 18:47:42 +01:00
Autechre 532fd88e2f Merge pull request #10308 from martinezjavier/master
(GL) Fix NULL pointer dereference in gl2_init()
2020-03-19 06:48:17 +01:00
Javier Martinez Canillas 42e8890c91 (GL) Fix NULL pointer dereference in gl2_init()
Commit 10df615d14 ("add "Send Debug Info" option under Help") added some
debug information that contains the GL_VENDOR, GL_RENDERER and GL_VERSION
strings that are returned by the glGetString() function, and is used by
algorithms to recognize the platform.

But in some GL contexts, these may be NULL which leads to a NULL pointer
dereference when trying to copy the returned strings. Commit 97247dbaec
("gl1: check for vender/renderer was in the wrong place") later fixed it
for the GL1 driver, but it missed doing the same for the GL driver.

For example, on an Exynos Odroid XU4 with a mali-fdev GL context I get:

$ retroarch -v
[INFO] RetroArch 1.8.5 (Git 8d3f25f)
[INFO] === Build =======================================
[INFO] Capabilities:  NEON VFPv3 VFPv4
[INFO] Built: Mar 18 2020
[INFO] Version: 1.8.5
[INFO] Git: 8d3f25f
[INFO] =================================================
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 30000.00 Hz.
[INFO] [Video]: Video @ 960x720
[INFO] [EGL] Falling back to eglGetDisplay
[INFO] [EGL]: EGL version: 1.4
[INFO] [GL]: Found GL context: mali-fbdev
[INFO] [GL]: Detecting screen resolution 0x0.
[INFO] [EGL]: Current context: 0xf08e20.
[INFO] [GL]: Vendor: (null), Renderer: (null).
[INFO] [GL]: Version: (null).
Segmentation fault (core dumped)
2020-03-18 23:44:50 +01:00
Autechre 8d3f25f20f Update Makefile.libnx 2020-03-18 14:23:38 +01:00
Autechre fe03ba76f9 Update CHANGES.md 2020-03-17 22:44:46 +01:00
Autechre 9b9e0a03fa Merge pull request #10290 from Ryunam/master
Add European timedate style (DD/MM/YYYY) and reorder timedate options
2020-03-17 22:43:35 +01:00
Autechre d078a7131f Merge pull request #10303 from natinusala/split-widgets
gfx_widgets: move libretro message widget into its own file
2020-03-17 22:42:59 +01:00
Autechre be1b97c7c0 Merge pull request #10306 from phcoder/3ds4
Add ID for chailove
2020-03-17 22:42:21 +01:00
Autechre 249c0f4fb5 Merge pull request #10305 from Tatsuya79/patch-1
qt: add scroll acceleration option
2020-03-17 22:42:06 +01:00
Vladimir Serbinenko 3a1510ca88 Add ID for chailove 2020-03-17 22:38:14 +01:00
Tatsuya79 19331636bd qt: add scroll acceleration option 2020-03-17 22:32:12 +01:00
natinusala 997136c029 gfx_widgets: move libretro message widget into its own file 2020-03-17 17:16:21 +01:00
Autechre 3c4a959b83 Merge pull request #10293 from Crestwave/haiku
(Haiku) Use GL1 video driver by default
2020-03-17 06:57:08 +01:00
Autechre 157260d05d Merge pull request #10301 from libretro/revert-10088-travis-ccache
Revert "(Travis) Use ccache for caching compilation"
2020-03-17 02:33:29 +01:00
Autechre f65fefb462 Revert "(Travis) Use ccache for caching compilation (#10088)"
This reverts commit 7e6fc5ab4d.
2020-03-17 02:33:18 +01:00
Autechre 3180cbd103 Merge pull request #10296 from FmT0/patch-1
(Vita) Prefer Front Touch option fix
2020-03-17 02:31:47 +01:00
Autechre c0c9caec22 Merge pull request #10300 from phcoder/3ds3
3ds: Add ID for tic80
2020-03-17 02:31:01 +01:00
Vladimir Serbinenko 4d79396cc3 Add ID for tic80 2020-03-17 01:37:49 +01:00
Autechre 7c5cca2dba Merge pull request #10297 from jdgleaver/3ds-prboom
(3DS) Restore missing PrBoom assets
2020-03-16 12:20:51 +01:00
jdgleaver 1e0c74e818 (3DS) Restore missing PrBoom assets 2020-03-16 11:13:41 +00:00
FmT0 f0faedddf9 Update psp_joypad.c
Fix "Prefer Front Touch" option from Input menu for Vita toggle menu input
2020-03-16 20:07:10 +09:00
Autechre b4aca85a0c Merge pull request #10292 from phcoder/3ds2
(3DS) Add IDs for hatari, lutro and tyrquake
2020-03-16 08:37:36 +01:00
Autechre e12655915d Merge pull request #10295 from libretro/RobLoach/travis-xcode-allow-failure
(Travis) Allow OSX to fail until we fix xcode11.2
2020-03-16 08:37:26 +01:00
twinaphex 58e7355942 (Android) Buildfix 2020-03-16 08:16:03 +01:00
Rob Loach cfbc3d4317 (Docs) Use HTTPS URL for libretro.com link (#10274)
Fixes #10272
2020-03-16 02:49:18 -04:00
Rob Loach 7e6fc5ab4d (Travis) Use ccache for caching compilation (#10088)
This aims to speed up the Travis builds. Fixes #9961
2020-03-16 02:47:38 -04:00
Rob Loach 8b6c330253 (Travis) Allow OSX to fail until we fix xcode11.2
Xcode 11.2 has been failing for a while through the following error. This change ignores that failure until we can fix it properly...

```
0.03s$ echo $OSX_CERT | base64 --decode > dev.p12
The command "echo $OSX_CERT | base64 --decode > dev.p12" exited with 0.
0.04s$ security import dev.p12 -k build.keychain -P $OSX_CERT_PASS -T /usr/bin/codesign
security: SecKeychainItemImport: One or more parameters passed to a function were not valid.
The command "security import dev.p12 -k build.keychain -P $OSX_CERT_PASS -T /usr/bin/codesign" exited with 1.
0.01s$ rm dev.p12
The command "rm dev.p12" exited with 0.
0.05s$ security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k travis build.keychain
security: SecItemCopyMatching: The specified item could not be found in the keychain.
The command "security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k travis build.keychain" exited with 1.
4.39s$ xcodebuild -target RetroArchQt -configuration Release -project pkg/apple/RetroArch_Metal.xcodeproj
note: Using new build system
note: Planning build
note: Constructing build description
error: No signing certificate "Developer ID Application" found: No "Developer ID Application" signing certificate matching team ID "ZE9XE938Z2" with a private key was found. (in target 'RetroArchQt' from project 'RetroArch_Metal')
** BUILD FAILED **
The command "xcodebuild -target RetroArchQt -configuration Release -project pkg/apple/RetroArch_Metal.xcodeproj" exited with 65.
```
2020-03-15 23:48:00 -04:00
Crestwave ef78f5b3c3 (Haiku) Use GL1 video driver by default 2020-03-16 08:52:11 +08:00
Vladimir Serbinenko a8a88efcb2 Add ID for lutro 2020-03-15 23:56:04 +01:00
Vladimir Serbinenko e93857cd9b Add ID for tyrquake 2020-03-15 16:25:13 +01:00
Ryunam 0310f6dafd Add European timedate style (DD/MM/YYYY) and reorder timedate options 2020-03-15 16:00:03 +01:00
Vladimir Serbinenko 9c06b1a0fb ID for hatari 2020-03-15 13:48:09 +01:00
Autechre 7c57124aed Merge pull request #10288 from fjtrujy/vita/AudioMixer
[Vita] Add audio mixer to vita
2020-03-15 12:21:48 +01:00
Francisco Javier Trujillo Mata 856eb3df89 Add audio mixer to vita 2020-03-15 11:26:29 +01:00
Autechre e7f5423d53 Merge pull request #10285 from phcoder/xrick3ds
Add ID for xrick
2020-03-15 02:20:59 +01:00
Autechre 442101e7ae Merge pull request #10286 from WeedyWeedSmoker/French-translation-update
French: qt: expose dropped thumbnal size limit
2020-03-15 02:20:52 +01:00
Autechre 0d8c4ce3ae Merge pull request #10287 from phcoder/pocketcdg
Add ID for PocketCDG
2020-03-15 02:20:43 +01:00
Vladimir Serbinenko 1197104b60 Add ID for PocketCDG 2020-03-15 02:17:42 +01:00
Weedy Weed Smoker ab5bb981df French: qt: expose dropped thumbnal size limit 2020-03-15 06:14:33 +07:00
Vladimir Serbinenko 2509d8e88f Add ID for xrick 2020-03-14 22:43:18 +01:00
twinaphex a33353399f Attempt to fix https://github.com/libretro/RetroArch/issues/10276 2020-03-14 21:54:14 +01:00
Autechre c4a98a62d3 Merge pull request #10283 from phcoder/gme
Add ID for GME
2020-03-14 21:02:02 +01:00
Autechre 497180e506 Merge pull request #10284 from fjtrujy/pspsAudioMixer
Add Audio Mixer support to PSP
2020-03-14 21:01:51 +01:00
Francisco Javier Trujillo Mata f0e1ab37cc Add Audio Mixer support to PSP 2020-03-14 18:38:24 +01:00
Vladimir Serbinenko 53194e10b5 Add ID for GME 2020-03-14 13:03:36 +01:00
Autechre 25231d5c92 Merge pull request #10280 from phcoder/3dsboom
3ds: Add ID for mrboom
2020-03-14 10:44:12 +01:00
Vladimir Serbinenko 400f97a163 3ds: Add ID for mrboom 2020-03-14 03:10:14 +01:00
Autechre d857fb3234 Update FUNDING.yml 2020-03-14 02:53:46 +01:00
Autechre 5dc3f40451 Merge pull request #10277 from Tatsuya79/master
qt: expose dropped thumbnail size limit
2020-03-14 02:40:01 +01:00
Autechre e138bfbfaf Merge pull request #10275 from natinusala/split-widgets
gfx_widgets: move generic message to its own file
2020-03-14 02:39:46 +01:00
Autechre c9b39a41e9 Merge pull request #10278 from phcoder/3ds
3DS: Add IDs for 8-bit computers
2020-03-14 02:39:26 +01:00
Autechre cf0f16596c Merge pull request #10279 from phcoder/prboom3ds
Fix prboom smdh
2020-03-14 01:33:00 +01:00
Vladimir Serbinenko 8b138d8bb1 Fix prboom smdh 2020-03-14 01:22:35 +01:00
Vladimir Serbinenko 320d4917bd Add IDs for 8-bit computers 2020-03-14 00:50:35 +01:00
Tatsuya79 a780755af7 qt: expose dropped thumbnal size limit 2020-03-13 22:46:46 +01:00
natinusala 7246d0d053 gfx_widgets: move generic message to its own file 2020-03-13 17:13:56 +01:00
Rob Loach 8794360b65 Merge pull request #10273 from WeedyWeedSmoker/French-translation-update
French: Rename menu widgets to display widgets
2020-03-13 08:19:38 -04:00
Weedy Weed Smoker 6b9f8be3fb French: Rename menu widgets to display widgets 2020-03-13 19:03:14 +07:00
Autechre bae318dbc2 Merge pull request #10271 from phcoder/3ds
3ds: Add ids for ffmpeg and freechaf
2020-03-13 10:04:33 +01:00
Vladimir Serbinenko 11ece8b373 3ds: Add ids for ffmpeg and freechaf 2020-03-13 09:56:53 +01:00
twinaphex efb0b87c1d (Menu cbs title) Take out more hash labels 2020-03-13 06:25:43 +01:00
twinaphex 7986561598 Rename menu widgets to display widgets 2020-03-13 03:58:33 +01:00
Autechre 0aecf033b6 Update CHANGES.md 2020-03-13 02:22:53 +01:00
Autechre 3c6bea1113 Merge pull request #10270 from libretro/RobLoach/database-psp-korea
(Database) Add support for scanning PSP Korean
2020-03-13 02:22:21 +01:00
twinaphex 7f8c13ae09 (GDI/Win32) Refactor code - handle doubleclick press on title bar
inside DInput driver
2020-03-13 02:20:31 +01:00
Rob Loach 7403b3de8a (Database) Add support for scanning PSP Korean
This adds support for scanning PlayStation Portable Korean region.

Found by @pkos, and fixes #10268
2020-03-12 21:19:32 -04:00
twinaphex 925ec7bc82 (MSVC 2010) Buildfix 2020-03-13 01:03:48 +01:00
twinaphex 30e8ec6543 (win32_common.c) Put g_win32_resized into struct 2020-03-13 00:15:51 +01:00
twinaphex 91fd05133b C89_BUILD fix 2020-03-13 00:11:43 +01:00
twinaphex c796f3268b (win32_common.c) Cleanups 2020-03-13 00:11:21 +01:00
twinaphex b4da4940eb Revert "(Win32) Move global state to struct"
This reverts commit dfa1288988.
2020-03-12 22:10:24 +01:00
twinaphex 26bb0105c0 (Vita) Buildfix 2020-03-12 20:54:38 +01:00
Autechre 2e215c4efd Merge pull request #10267 from WeedyWeedSmoker/French-translation-update
French: small cosmetic changes/improvements
2020-03-12 20:29:02 +01:00
Weedy Weed Smoker d9dccf0c78 French: small cosmetic improvement 2020-03-13 00:27:09 +07:00
Weedy Weed Smoker 6b279a2581 French: small cosmetic changes/improvements 2020-03-13 00:16:59 +07:00
Autechre 66f621f810 Merge pull request #10266 from WeedyWeedSmoker/French-translation-update
French: Fix 'remap file loaded' notification msg
2020-03-12 17:48:17 +01:00
twinaphex dfa1288988 (Win32) Move global state to struct 2020-03-12 17:47:49 +01:00
Weedy Weed Smoker fdad03e878 French: Fix 'remap file loaded' notification msg 2020-03-12 23:39:13 +07:00
Autechre ee92c6d679 Update CHANGES.md 2020-03-12 17:18:45 +01:00
Autechre 4ccff43919 Merge pull request #10265 from jdgleaver/glui-scroll-fix
(GLUI) Fix ragged/broken scrolling when navigating at very high speed via gamepad/keyboard/mouse wheel
2020-03-12 17:17:49 +01:00
jdgleaver 050ac1e9cf (GLUI) Fix ragged/broken scrolling when navigating at very high speed via gamepad/keyboard/mouse wheel 2020-03-12 16:04:22 +00:00
twinaphex 28eec1489a Every global has to be named uniquely for Griffin targets 2020-03-12 17:00:13 +01:00
Autechre 76f0c14289 Merge pull request #10263 from jdgleaver/widget-scale-setting-cleanup
Use single 'Widgets Scale Override' setting on console and mobile platforms
2020-03-12 16:38:38 +01:00
Autechre c20e83e50a Merge pull request #10256 from jdgleaver/threaded-video-show-mouse
(Threaded Video) Enable proper mouse cursor show/hide functionality
2020-03-12 16:09:09 +01:00
Autechre e1debd6f11 Merge pull request #10252 from natinusala/split-widgets
gfx_widgets: move volume into its own file
2020-03-12 15:46:21 +01:00
Autechre 932d12a684 Merge pull request #10264 from jdgleaver/remap-msg-fix
Fix 'remap file loaded' notification message
2020-03-12 15:45:39 +01:00
Autechre a9bb8d08f2 Update CHANGES.md 2020-03-12 15:45:23 +01:00
jdgleaver 927d801463 Fix 'remap file loaded' notification message 2020-03-12 12:16:23 +00:00
jdgleaver 018209d6c2 Use single 'Widgets Scale Override' setting on console and mobile platforms 2020-03-12 11:29:53 +00:00
natinusala 375621394c gfx_widgets: move volume into its own file 2020-03-12 09:31:05 +01:00
natinusala 37a5e7ff08 gfx_widgets: cleanup 2020-03-12 09:29:04 +01:00
twinaphex 7fb7d4e74c Buildfix 2020-03-12 08:05:44 +01:00
twinaphex 649aee49ba (task_content.c) Cleanups 2020-03-12 07:29:04 +01:00
twinaphex 67ea016c09 (task_content.c) cleanups 2020-03-12 07:14:44 +01:00
twinaphex 38135c505b Rearrange struct members based on size 2020-03-12 06:59:07 +01:00
twinaphex f13a4b10ee (task_content.c) Move global variables to struct 2020-03-12 06:45:17 +01:00
twinaphex 0611581b28 (Win32) Remove this - hopefully it sets Ozone to default 2020-03-12 03:52:56 +01:00
Autechre 3bfd6ababd Merge pull request #10261 from valadaa48/odroidgo2_conf_extra
Change some defaults for odroidgo2
2020-03-12 02:22:35 +01:00
valadaa48 ea53d4ab38 Change some defaults for odroidgo2 2020-03-12 01:15:05 +00:00
Twinaphex 4a533447a1 Merge pull request #10258 from WeedyWeedSmoker/French-translation-update
French: Add Menu scroll acceleration
2020-03-11 19:58:10 +01:00
Weedy Weed Smoker 16d62001e0 French: Add Menu scroll acceleration 2020-03-12 01:36:41 +07:00
Twinaphex 00577b8950 Merge pull request #10255 from jdgleaver/widget-persistence
Enable widget persistence across drivers_init()/driver_uninit() events
2020-03-11 19:21:27 +01:00
jdgleaver 27ab57bc05 (Threaded Video) Enable proper mouse cursor show/hide functionality 2020-03-11 16:26:17 +00:00
jdgleaver b92dcd1334 (gfx_widgets) reorder internal status updates 2020-03-11 14:28:15 +00:00
jdgleaver 086c68bca7 Enable widget persistence across drivers_init()/driver_uninit() events 2020-03-11 11:47:13 +00:00
Twinaphex 2a0833378d Merge pull request #10239 from parport0/master
(Menu) Add Menu Scroll Acceleration option
2020-03-10 21:33:51 +01:00
twinaphex c4dfa1e12a (Gfx drivers) Cleanups 2020-03-10 19:52:05 +01:00
twinaphex ae18fc808d Cleanups 2020-03-10 19:32:21 +01:00
twinaphex 92b09a9f60 (Video layout) Get rid of video_frame_info dependency 2020-03-10 19:10:02 +01:00
twinaphex abcfe03059 (Metal) Simplification 2020-03-10 19:03:34 +01:00
Twinaphex 9e8dd390b2 Update CHANGES.md 2020-03-10 15:17:41 +01:00
Twinaphex ee5e7f8034 Merge pull request #10246 from jdgleaver/thread-status-fix
Ensure proper detection of 'threaded video' state when calling 'drivers_init()'
2020-03-10 15:16:00 +01:00
jdgleaver 3b3eaa1e24 Ensure proper detection of 'threaded video' state when calling 'drivers_init()' 2020-03-10 12:17:38 +00:00
parport0 1e315bb61b Rename PSP-style scroll to Menu scroll acceleration 2020-03-10 13:10:09 +01:00
Twinaphex e2a703896f Update CHANGES.md 2020-03-10 06:42:24 +01:00
Twinaphex d2f3af69f4 Merge pull request #10243 from libretro/RobLoach/database-korea-asia-discs
database: Add scanning Korea and Asia discs
2020-03-10 06:41:05 +01:00
Rob Loach 84eb05c917 database: Add scanning Korea and Asia discs
This change adds support for scanning Korean and Asian media discs to task_database_cue.c.

Found by @pkos, and fixes #10241 .
2020-03-09 22:46:30 -04:00
twinaphex bbe688cd05 Updates 2020-03-10 03:38:45 +01:00
Twinaphex d81e756fa7 (Metal) Buildfix 2020-03-10 03:37:48 +01:00
twinaphex 8a4e8f4ae9 (Stripes) Cleanups 2020-03-10 03:35:10 +01:00
twinaphex f4c5036c3c Get rid of video_frame_info dep for fonts 2020-03-10 03:24:59 +01:00
Twinaphex 35a528a3e0 (Metal raster font) Remove dependency on video_info 2020-03-10 03:02:37 +01:00
Twinaphex 783f16b198 Updates 2020-03-10 02:48:01 +01:00
Twinaphex 238d72d187 Buildfix 2020-03-10 02:38:23 +01:00
Twinaphex dde5f67962 Revert "(Metal raster font) remove video_frame_info dep"
This reverts commit f2df63e246.
2020-03-10 02:07:10 +01:00
twinaphex f2df63e246 (Metal raster font) remove video_frame_info dep 2020-03-10 02:02:19 +01:00
twinaphex 083a0453c6 (PS2) Buildfix 2020-03-10 01:07:29 +01:00
twinaphex 1a854021a4 (Metal raster font) More simplifications 2020-03-09 22:47:40 +01:00
twinaphex 2da2dd3b0b (Metal raster font) Simplify code 2020-03-09 22:44:01 +01:00
twinaphex c77861126f remove video_info deps 2020-03-09 22:35:25 +01:00
twinaphex 867bdad010 Get rid of unimplemented FPGA font driver 2020-03-09 22:13:17 +01:00
twinaphex a395bf9355 (Drivers font) Start getting rid of video_frame_info dependency 2020-03-09 21:56:03 +01:00
twinaphex 43feea3496 (Drivers font) Add parameter 2020-03-09 21:34:14 +01:00
twinaphex 0ee8119459 (widgets) Nits 2020-03-09 19:35:49 +01:00
Twinaphex adfef2a503 Merge pull request #10240 from natinusala/split-widgets
gfx_widgets: start moving widgets into their own file
2020-03-09 19:14:26 +01:00
twinaphex 252bb3a905 (GLX) Fixes fastforwarding issues 2020-03-09 19:13:43 +01:00
twinaphex c007b68e6b (GLX) GLX OML was unstable with threaded video - remove it -
also put SwapInterval first instead of SwapIntervalEXT - this
makes fastforwarding work on Intel iGPUs
2020-03-09 18:37:20 +01:00
twinaphex 4e6f26d2e4 (Video drivers) Cleanups 2020-03-09 16:24:20 +01:00
twinaphex 9e9ad8d5eb (video_thread_wrapper) Remove unused CMD_POKE_SET_OSD_MSG 2020-03-09 16:19:07 +01:00
twinaphex b7da58b40b (Gfx) Video driver cleanups 2020-03-09 16:15:53 +01:00
natinusala 7dc961bdd9 griffin: add screenshot widget 2020-03-09 16:10:53 +01:00
twinaphex 17bb6f7354 (D3D10) Cleanups 2020-03-09 15:55:37 +01:00
twinaphex 68678987c4 (Vulkan) Cleanups 2020-03-09 15:48:15 +01:00
twinaphex cd152399a3 (GL) Cleanups 2020-03-09 15:40:14 +01:00
twinaphex a4cced8fde (Stripes) Updates - no longer compiles 2020-03-09 15:25:02 +01:00
twinaphex 9786e08228 (Ozone) Cleanups 2020-03-09 15:10:28 +01:00
twinaphex 448b988e62 (Ozone) Cleanups 2020-03-09 15:03:21 +01:00
twinaphex 92054bcd09 (Ozone) Cleanups 2020-03-09 14:53:54 +01:00
twinaphex 540f0d2646 (Menu) Cleanups 2020-03-09 14:46:23 +01:00
natinusala b4ea5d3cd5 gfx_widgets: move screenshot widget into its own file 2020-03-09 14:40:31 +01:00
natinusala 8e3ef34c1f gfx_widgets: pipe all functions to the widgets 2020-03-09 14:40:31 +01:00
natinusala 3c1e9372ab gfx_widgets: add gfx_widget struct 2020-03-09 14:40:31 +01:00
twinaphex 82b327420d (XMB) Cleanups 2020-03-09 14:35:03 +01:00
parport0 fb5f557d91 Add PSP-style menu scroll option 2020-03-09 14:34:51 +01:00
twinaphex b3d5551ad2 (Menu) Cleanups 2020-03-09 14:22:16 +01:00
twinaphex 999f862a6d Fix for cursor conditional 2020-03-09 14:14:11 +01:00
twinaphex ee2f25b1dc (Gfx drivers) Cleanups 2020-03-09 05:18:02 +01:00
twinaphex 006735395c (MaterialUI) Cleanups 2020-03-09 04:59:53 +01:00
twinaphex cdbae18ae5 Cleanups 2020-03-09 04:13:41 +01:00
twinaphex 07416f1a0e Cleanups 2020-03-09 02:59:42 +01:00
twinaphex 7c7fe66dfc Cleanups 2020-03-09 02:58:31 +01:00
twinaphex 87bf32e889 Cleanups 2020-03-09 02:38:13 +01:00
twinaphex 43e608760a Cleanups 2020-03-09 02:22:19 +01:00
twinaphex 7d4e5b8ce5 No more video_info_frame dependency in gfx_thumbnail.c 2020-03-09 02:15:44 +01:00
twinaphex 6a0a68f8df (XMB) Cleanups 2020-03-09 01:36:49 +01:00
twinaphex 7f958862fe cleanups 2020-03-09 01:32:05 +01:00
twinaphex e08689ed98 (Menu) Cleanups 2020-03-09 01:26:43 +01:00
twinaphex c3be8f45fc (Metal) Buildfix 2020-03-09 01:18:01 +01:00
twinaphex e5ab0f33d1 Cleanups 2020-03-09 01:07:35 +01:00
twinaphex 2413c1b8d5 (Menu) Cleanups 2020-03-09 00:58:04 +01:00
twinaphex ba73bebf3d (XMB) Cleanups 2020-03-09 00:43:43 +01:00
twinaphex d91800038d (Ozone) Cleanups 2020-03-09 00:38:18 +01:00
twinaphex a0446f778c Cleanups 2020-03-09 00:34:31 +01:00
twinaphex 5388448cf3 (gfx_widgets.c) Cleanups 2020-03-09 00:25:28 +01:00
twinaphex 8c39c804ee (gfx_widgets.c) Cleanups 2020-03-09 00:18:38 +01:00
twinaphex 13249f6011 Cleanups 2020-03-09 00:08:18 +01:00
twinaphex d72596142e gfx_display_draw_quad - no longer dependent on video_frame_info 2020-03-08 23:56:22 +01:00
twinaphex b24d1f06aa gfx_display_scissor_begin/end - get rid of video_frame_info dependency 2020-03-08 22:58:17 +01:00
twinaphex 044619281c gfx_display_draw - remove video_frame_info dependency 2020-03-08 22:52:02 +01:00
twinaphex d42a76dec1 Simplify conditional and fix clear_color call 2020-03-08 22:36:51 +01:00
twinaphex 6cb6f76add gfx_display_rotate_z - get rid of video_frame_info dependency 2020-03-08 22:33:11 +01:00
twinaphex e4aa0fd544 (gfx display) Get rid of video_frame_info dependency for
blend_begin/blend_end
2020-03-08 22:28:42 +01:00
twinaphex c16568cf32 (gfx drivers display) No more video_frame_info dependency 2020-03-08 22:06:08 +01:00
twinaphex 7a9684b6ea (Gfx display) scissor_begin/scissor_end - drop video_frame_info dependency 2020-03-08 22:06:08 +01:00
Twinaphex 7efe1160e1 Merge pull request #10237 from libretro/revert-10224-metal-entitlements
Revert "(macOS Metal) Add entitlements file"
2020-03-08 21:14:23 +01:00
Twinaphex df0f334b97 Revert "(macOS Metal) Add entitlements file" 2020-03-08 21:14:10 +01:00
Twinaphex e7cbc2cd5c Merge pull request #10236 from libretro/revert-10226-metal-buildfix
Revert "(macOS Metal) Buildfix"
2020-03-08 21:13:53 +01:00
Twinaphex 436fc6706b Revert "(macOS Metal) Buildfix" 2020-03-08 21:13:39 +01:00
twinaphex 591bb36e03 (gfx display) blend_begin/blend_end - no more dependency on
video_frame_info
2020-03-08 21:02:03 +01:00
twinaphex 809e22ec1a (gfx display) set_viewport - no longer dependent on video_frame_info 2020-03-08 20:23:39 +01:00
twinaphex 874510152e (drivers_display) Get rid of video_frame_info argument for
get_default_mvp
2020-03-08 19:59:03 +01:00
twinaphex 3e706fe5b2 (D3D9 renderchain) Take out video_frame_info dependencies 2020-03-08 19:03:57 +01:00
Twinaphex c465fda58a Merge pull request #10234 from MrHuu/patch-4
(3DS) Update Makefile.cores
2020-03-08 18:53:06 +01:00
twinaphex 7c7eeff0fb Move display_server code into retroarch.c 2020-03-08 18:48:15 +01:00
twinaphex 2497ac4584 (video_crt_switch.c) Move static global variables to struct 2020-03-08 18:48:15 +01:00
MrHuu b8b2a2dae4 (3DS) Update Makefile.cores
Fix target for building XMillenium.

'x1_libretro.cia'
2020-03-08 14:01:36 +01:00
Twinaphex 3cb73ccd03 Merge pull request #10231 from altiereslima/master
Update msg_hash_pt_br.h
2020-03-08 01:54:35 +01:00
altiereslima f5c5b872db Update msg_hash_pt_br.h 2020-03-07 21:53:45 -03:00
twinaphex c32cb51755 Cleanups 2020-03-08 01:45:29 +01:00
twinaphex cfa90a4a36 (gfx/drivers_display) cleanups 2020-03-08 01:28:15 +01:00
twinaphex f0bf2df92f Get rid of stale PERF_START/PERF_STOP macros in d3d files 2020-03-07 23:16:25 +01:00
twinaphex 935393b391 Cleanups 2020-03-07 23:12:02 +01:00
twinaphex 212f32e2fd Get rid of the static asserts 2020-03-07 22:54:57 +01:00
twinaphex ead6c2b0dc Cleanups 2020-03-07 22:41:10 +01:00
twinaphex a8a2294f27 (Menu) Cache video_info->width/video_info->height into local
variables
2020-03-07 21:42:49 +01:00
Ömercan Kömür f9c81f358a (Docs) Update README.md latest RetroArch changes (#10092)
* 1.8.4 images && official links
* Update README.md
* Update README.md
* Update README.md
* new location
* images moved to docs folder
* Update README.md
* Update README.md
* Links have changed to markdown format
* Update README.md
* docs: Use https on libretro.com link
Co-Authored-By: Margen67 <[email protected]>
Co-authored-by: Rob Loach <[email protected]>
2020-03-07 15:26:28 -05:00
twinaphex 9b76446b48 Cache video_info->width/video_info->height into local variables
and use them throughout code
2020-03-07 21:18:12 +01:00
twinaphex 9b0ff1fd0d (gfx_display.c) Cleanup 2020-03-07 20:53:39 +01:00
twinaphex 6505080d64 (gfx drivers font) Get rid of as many video_frame_info
dependencies as possible
2020-03-07 20:48:26 +01:00
twinaphex be861cf55d (gfx drivers font) Reduce dependency on video_frame_info 2020-03-07 20:11:39 +01:00
Twinaphex 681443cc45 Merge pull request #10228 from phcoder/audiocb
Return failure on set_audio_callback without threads
2020-03-07 19:58:20 +01:00
twinaphex 4c92d43fe2 (Gfx drivers) More cleanups 2020-03-07 19:54:58 +01:00
twinaphex 9e31c2de34 Remove this for now until this gets reintroduced in some way 2020-03-07 19:34:24 +01:00
twinaphex 83ac24e7f1 (VGA) Move static global variables to struct 2020-03-07 19:33:03 +01:00
twinaphex 9ae4031d13 Cleanups 2020-03-07 19:14:45 +01:00
twinaphex 20366f3d3c (RGUI) Move some static global variables to struct 2020-03-07 18:59:33 +01:00
Vladimir Serbinenko 000eaf712a Return failure on set_audio_callback without threads
Current code returns success even though it's actually a failure
2020-03-07 18:53:06 +01:00
twinaphex 888a4bfe37 Add TODO/FIXME note 2020-03-07 18:51:34 +01:00
twinaphex 4ad03e6553 Buildfix - have to rearrange scan_settings too 2020-03-07 18:45:32 +01:00
twinaphex 5a147fe46f (manual_content_scan.c) Rearrange struct members
(verbosity.c) Add TODO/FIXME
2020-03-07 18:41:39 +01:00
twinaphex 577e254e9e (playlist.c) Rearrange struct members 2020-03-07 18:38:37 +01:00
twinaphex c5fc9cf5ce (X ctx) Move two static global variables to struct 2020-03-07 18:28:53 +01:00
twinaphex 0d543baa4b (Drivers context) Move more static global state to structs 2020-03-07 18:21:49 +01:00
twinaphex 3aa8afd60d (gfx/drivers) Further cleanups 2020-03-07 18:05:50 +01:00
twinaphex 1aa95f6cc4 (GX) Cleanups 2020-03-07 17:53:47 +01:00
twinaphex daea169e5d (GL1) Move static global variables into struct 2020-03-07 17:47:26 +01:00
twinaphex b1337d0a21 (GL) Move shared_context_use into struct 2020-03-07 17:34:35 +01:00
twinaphex 8ec6447b18 (FPGA) Move regOp to struct too 2020-03-07 17:30:56 +01:00
twinaphex 87f34eb12f Add missing header 2020-03-07 17:29:08 +01:00
twinaphex 788ae60d12 (FPGA) Put static global variables into struct 2020-03-07 17:28:42 +01:00
twinaphex 3e35fb8672 (D3D8/D3D9) Move static global to struct 2020-03-07 17:04:06 +01:00
twinaphex d63daacdf9 (GDI) Put gdi_menu_frame into struct 2020-03-07 16:50:25 +01:00
twinaphex efe72dea94 (Caca) Put everything into the struct 2020-03-07 16:42:12 +01:00
twinaphex a7dd320653 (CACA) Cleanups 2020-03-07 16:34:12 +01:00
twinaphex 203b4d7f80 (GDI) Move these variables to struct 2020-03-07 16:31:04 +01:00
twinaphex 2b0164f551 (GDI) Get rid of gdi_video_width static globals 2020-03-07 16:23:34 +01:00
twinaphex 31263970ad Fix include path 2020-03-07 06:50:43 +01:00
twinaphex 7be7815933 (libnx) Buildfix 2020-03-07 06:49:10 +01:00
twinaphex bdc31234d5 (Caca) Move caca global state to struct 2020-03-07 06:03:32 +01:00
twinaphex e8ff0fddca (drivers_font) More untangling of video_info 2020-03-07 05:48:21 +01:00
twinaphex f3c6799b4e (drivers_font) switch_font - cleanups 2020-03-07 05:25:28 +01:00
twinaphex 3e891c6237 (drivers font) Start making the code independent of video_frame_info 2020-03-07 04:45:27 +01:00
twinaphex f588e7f646 Buildfix 2020-03-07 04:22:20 +01:00
twinaphex b4b758466f (gx_display_gl) Simplifications 2020-03-07 01:47:44 +01:00
Twinaphex d4d19555e0 Merge pull request #10226 from CatGreen90/metal-buildfix
(macOS Metal) Buildfix
2020-03-07 01:41:25 +01:00
twinaphex ee9c6ef5ba (Font driver) Get rid of more video_frame_info dependencies 2020-03-07 01:41:00 +01:00
twinaphex 267800abaa (GL) Start reducing dependency on video_frame_info 2020-03-07 00:58:06 +01:00
CatGreen90 5c25cf1ad6 Buildfix 2020-03-06 18:43:41 -05:00
twinaphex 4598f186a8 Get rid of video_frame_info dependency 2020-03-07 00:39:06 +01:00
twinaphex 83b815df17 (XEGL) Buildfix 2020-03-07 00:26:44 +01:00
twinaphex 7f75bcfcb5 (DRM) Buildfix 2020-03-07 00:06:34 +01:00
twinaphex 4f27a740ba Revert "(menu_setting.c) Stop using settings->arrays.menu_driver to"
This reverts commit e75e2ede92.
2020-03-06 23:36:16 +01:00
twinaphex 250468a1ba drm_get_connector - cleanup 2020-03-06 23:18:22 +01:00
twinaphex 304cd05dc6 (X11) Buildfix 2020-03-06 23:00:06 +01:00
twinaphex 4d7b627421 Get rid of video_info dependency for set_video_mode 2020-03-06 22:58:12 +01:00
twinaphex e20151a048 Get rid of video_info struct for swap_buffers too 2020-03-06 22:29:51 +01:00
twinaphex 68664fdf1d update_title - we don't need video_info 2020-03-06 22:11:44 +01:00
twinaphex 8b43e1b4ef Can get rid of IS_SHUTDOWN 2020-03-06 20:32:22 +01:00
twinaphex 4aae293e3d Remove is_shutdown from check_window 2020-03-06 20:29:31 +01:00
Twinaphex 3de0bf27d2 Merge pull request #10224 from CatGreen90/metal-entitlements
(macOS Metal) Add entitlements file
2020-03-06 19:51:40 +01:00
CatGreen90 49e07b3e82 Add entitlements file to project.pbxproj 2020-03-06 13:37:37 -05:00
CatGreen90 c1b5860320 Add entitlements file 2020-03-06 13:15:24 -05:00
Twinaphex 801fa3459c Merge pull request #10221 from jdgleaver/qt-history-thumbs
(QT) Populate 'db_name' and 'crc32' fields when adding entries to content history
2020-03-06 18:54:59 +01:00
twinaphex 05cf2ee8ba (core_info.c) Move globals to single struct 2020-03-06 18:13:36 +01:00
twinaphex ad725cefc2 (discord.c) Move globals to single struct 2020-03-06 17:55:15 +01:00
Twinaphex b99838b06b Merge pull request #10220 from phcoder/3bs-bk
Add bk id for 3ds
2020-03-06 17:52:48 +01:00
twinaphex dcf1138040 (menu_dialog.c) Cleanups 2020-03-06 17:27:42 +01:00
twinaphex 869a8cfcba (menu_dialog.c) Move globals to single struct 2020-03-06 17:19:53 +01:00
twinaphex 26f6e0bccf (ozone_theme.c) Add TODO/FIXME notes 2020-03-06 17:14:41 +01:00
Twinaphex 9a78994fe2 Merge pull request #10223 from jdgleaver/gfx-thumbnail-struct
(gfx_thumbnail) Move globals to a single struct
2020-03-06 17:06:17 +01:00
twinaphex 1f553ac1c4 Get rid of menu_shader_set_modified - instead, add a single
'modified' variable to video_shader struct
2020-03-06 17:05:20 +01:00
twinaphex 814835aa8f (menu_input_bind_dialog.c) Put port into menu input bind dialog
global state
2020-03-06 16:51:39 +01:00
jdgleaver 5b59f0dcda (gfx_thumbnail) Move globals to a single struct 2020-03-06 15:48:07 +00:00
twinaphex 544df2f03c Create global state for gfx_display 2020-03-06 16:33:34 +01:00
twinaphex a6995c0336 (gfx_display.c) Cleanup video coord array 2020-03-06 16:12:24 +01:00
twinaphex e06a6b62c8 (gfx_display.c) Change some of the naming conventions to make it
clear this is no longer code bound to the menu
2020-03-06 16:06:44 +01:00
twinaphex fb04376722 (gfx_display.c) Cleanups 2020-03-06 16:01:45 +01:00
twinaphex d1276258ea Add TODO/FIXME note 2020-03-06 15:55:22 +01:00
Twinaphex ffca8af2c6 Merge pull request #10222 from libretro/refactors
Refactors
2020-03-06 15:49:18 +01:00
twinaphex e678b39de6 Cleanup 2020-03-06 15:40:45 +01:00
twinaphex 9d9c24f94b (gfx_animation.c) Move all global state into the struct 2020-03-06 15:37:16 +01:00
jdgleaver 7873b5f044 (QT) Populate 'db_name' and 'crc32' fields when adding entries to content history 2020-03-06 14:00:04 +00:00
twinaphex 69b84d9d02 Settings cleanups 2020-03-06 04:33:56 +01:00
twinaphex bdc999ca45 Settings cleanups 2020-03-06 03:53:10 +01:00
twinaphex d5985c35ae Settings cleanups 2020-03-06 03:39:33 +01:00
Vladimir Serbinenko ddd12aab36 Add bk id for 3ds 2020-03-06 03:15:13 +01:00
twinaphex 8f65c2cf72 Settings updates 2020-03-06 03:10:55 +01:00
twinaphex f581260daa (video thread wrapper) Add TODO/FIXME notes 2020-03-06 03:05:45 +01:00
twinaphex 62bd4960e1 Fix MSVC include paths 2020-03-06 03:01:47 +01:00
twinaphex bd5f151077 Settings cleanups 2020-03-06 02:52:21 +01:00
twinaphex 70d0c1ce6f Fix IOS build 2020-03-06 02:39:54 +01:00
twinaphex 18a90d81d2 Setting needs to be re-set again 2020-03-06 02:28:37 +01:00
twinaphex 6fd784375a Update 2020-03-06 02:25:28 +01:00
twinaphex 6ad38b4140 Revert "Try to avoid concurrent data access to"
This reverts commit 8fd43c0927.
2020-03-05 22:21:13 +01:00
twinaphex 8fd43c0927 Try to avoid concurrent data access to
video_driver_width/video_driver_height
2020-03-05 22:18:59 +01:00
twinaphex 534f09373e Get rid of video_driver_height dependency 2020-03-05 22:03:58 +01:00
twinaphex 52fae101e8 (GL) Get rid of video_driver_build_info dependency 2020-03-05 21:45:02 +01:00
twinaphex 8d5d91a5a4 (GL1/GLCore) Only video_info dependency now is 'height' 2020-03-05 20:32:58 +01:00
twinaphex e65c816ed0 (GL) Will have to rework set_viewport for the GL drivers -
video drivers should not be calling video_driver_build_info as
they could be on a separate thread
2020-03-05 20:29:51 +01:00
twinaphex a7d679d391 Rename WndProcGL to WndProcWGL 2020-03-05 18:45:41 +01:00
twinaphex c5cb509f1b Change function signatures 2020-03-05 18:32:26 +01:00
Twinaphex c6f3b4a6da Merge pull request #10217 from phcoder/3ds_2
3ds: Add id for bluemsx
2020-03-05 18:31:23 +01:00
twinaphex be39981ba3 (MSVC 2003 Debug) Fix build 2020-03-05 18:29:48 +01:00
Vladimir Serbinenko da1ace4668 3ds: Add id for bluemsx 2020-03-05 17:43:04 +01:00
twinaphex ca4ce9f136 Add this nasty workaround for a suspected MSVC2010 bug 2020-03-05 17:39:43 +01:00
twinaphex dd6cbce0eb Silence these MSVC warnings - warning C4047: '=' : 'unsigned char' differs in levels of indirection from 'char *' 2020-03-05 16:32:15 +01:00
twinaphex e75e2ede92 (menu_setting.c) Stop using settings->arrays.menu_driver to
identify the menu driver
2020-03-05 16:27:35 +01:00
twinaphex 5f8020b32e (libretro-common samples udp test) Rewrite while (1) to for (;;) 2020-03-05 15:52:02 +01:00
twinaphex 860f94e914 (CTR) Stylistic cleanups 2020-03-05 15:50:39 +01:00
twinaphex dc24530382 Cleanups 2020-03-05 15:38:10 +01:00
twinaphex 84f04ae984 (Ozone) Cleanup this confusing code 2020-03-05 15:34:54 +01:00
twinaphex 48ffe8dac3 Do not rely on settings->arrays.menu_driver anymore to check
which menu driver is active
2020-03-05 15:33:18 +01:00
Twinaphex 1c302f26b3 Prevent warning 2020-03-05 15:20:16 +01:00
twinaphex dfe64e3735 Merge branch 'master' of https://github.com/libretro/RetroArch 2020-03-05 15:13:00 +01:00
Twinaphex d7ddeeb40c Update CHANGES.md 2020-03-05 15:12:16 +01:00
Twinaphex 1215f4eb59 Merge pull request #10216 from Tatsuya79/patch-9
don't flush on override/remap messages
2020-03-05 15:11:19 +01:00
Tatsuya79 10ec720686 don't flush on override/remap messages 2020-03-05 14:59:40 +01:00
twinaphex 6d5fc4a36b Buildfix 2020-03-05 14:49:35 +01:00
twinaphex 4933b89736 Buildfix 2020-03-05 14:18:41 +01:00
Twinaphex 3958235c89 Merge pull request #10215 from jdgleaver/widget-osd-fix
Prevent improper display of (old style) OSD text when widgets are enabled
2020-03-05 14:14:25 +01:00
twinaphex d3bc82d2c3 Header cleanups 2020-03-05 14:12:20 +01:00
twinaphex da60c1bb96 Header cleanups 2020-03-05 14:06:04 +01:00
twinaphex 2e034c1574 (gfx/drivers_font) header cleanups 2020-03-05 14:01:34 +01:00
twinaphex 35001e64c2 Header cleanups 2020-03-05 13:53:49 +01:00
twinaphex bdfd6d3175 Cleanups 2020-03-05 13:50:50 +01:00
twinaphex 7841b639ec (Ozone) Header cleanups 2020-03-05 13:35:55 +01:00
jdgleaver 35977efe43 Prevent improper display of (old style) OSD text when widgets are enabled 2020-03-05 12:28:38 +00:00
twinaphex b5c87aaef8 (menu_driver.c) Go through wrapper 2020-03-05 13:26:36 +01:00
twinaphex c66b4249ca More settings cleanups 2020-03-05 13:24:59 +01:00
Twinaphex a451d6927a Merge pull request #10214 from WeedyWeedSmoker/French-translation-update
French translation update
2020-03-05 13:09:49 +01:00
twinaphex 178e4e7d29 (menu_setting.c) Settings cleanups 2020-03-05 13:09:08 +01:00
twinaphex d592959be8 When settings struct gets modified, go through macros to set
the modified flag
2020-03-05 13:00:43 +01:00
twinaphex f87bd0c190 Settings cleanups - make sure things that modify the settings
struct go through the wrapper function so that the 'modified'
bit gets set
2020-03-05 12:22:58 +01:00
Weedy Weed Smoker 3c9664f099 French translation update 2020-03-05 18:11:17 +07:00
twinaphex 43b65be030 Arrange array members based on size 2020-03-05 11:27:25 +01:00
twinaphex 899c21257c (Video layout) move init_string and set_string to stdstring -
rename them - cleanup strcmp usage in video layout and other
code cleanups
2020-03-05 11:19:44 +01:00
twinaphex 1bda81560e Get rid of remnant 2020-03-05 01:04:50 +01:00
twinaphex 09f595e0a8 Settings cleanups 2020-03-05 01:03:55 +01:00
Twinaphex 2333b7f31a Update CHANGES.md 2020-03-05 00:54:34 +01:00
Twinaphex 8f42e5f9a7 Update CHANGES.md 2020-03-05 00:53:54 +01:00
Twinaphex a18b29743e Merge pull request #10212 from Jamiras/cheevos_rp_buffer_overflow
(cheevos) prevent buffer overflow when encountering an unknown macro
2020-03-05 00:53:28 +01:00
Jamiras 8baf0f6340 prevent buffer overflow when encountering an unknown macro 2020-03-04 16:37:59 -07:00
twinaphex a1951b51b6 Cleanup menu_dialog.c 2020-03-05 00:29:48 +01:00
twinaphex 8bad0b6b7e Cleanup some comments 2020-03-04 23:22:51 +01:00
twinaphex a03d4485b0 Cleanup retroarch_validate_per_core_options 2020-03-04 22:41:58 +01:00
twinaphex c0e088ca07 Add TODO/FIXME 2020-03-04 22:30:17 +01:00
Twinaphex 97d8db7aae Remove unused variables 2020-03-04 22:27:37 +01:00
twinaphex bea4f8aad3 (menu_dialog.c) Cleanups 2020-03-04 22:21:18 +01:00
twinaphex 8d3b22091c Get rid of menu_dialog_is_push_pending 2020-03-04 22:12:42 +01:00
Twinaphex cbeb8944eb Merge pull request #10211 from Tatsuya79/patch-8
qt: update osd options
2020-03-04 20:55:07 +01:00
twinaphex dcfa8cc7ba (cheevos) Cleanup 2020-03-04 20:53:23 +01:00
twinaphex 32e4aea068 Start making the other code safe that is dependent on menu driver
ident checking
2020-03-04 20:47:39 +01:00
twinaphex 2f25db03ba (Menu) Fix bug - if you were in XMB and you would set menu driver to
RGUI, you could no longer go to the left or right tab
2020-03-04 19:51:36 +01:00
Tatsuya79 570884dc2b qt: update osd options 2020-03-04 19:36:07 +01:00
twinaphex 70602487be Cleanup 2020-03-04 19:23:18 +01:00
twinaphex 2077ffa2ca Simplify menu_dialog.c 2020-03-04 19:21:24 +01:00
twinaphex 2637bd648b Cleanups 2020-03-04 19:13:30 +01:00
Twinaphex ee4d86237f Update CHANGES.md 2020-03-04 19:06:49 +01:00
Twinaphex 55bc96e00b Merge pull request #10210 from jdgleaver/widget-scaling-windowed
Add independent widget scale override settings for fullscreen/windowed modes
2020-03-04 19:05:40 +01:00
jdgleaver 29f8189d0e Add independent widget scale override settings for fullscreen/windowed modes 2020-03-04 17:10:49 +00:00
Twinaphex e10ae3dca1 Update CHANGES.md 2020-03-04 17:32:38 +01:00
Twinaphex d74398b262 Merge pull request #10198 from altiereslima/master
Update Portuguese Brazilian Translation
2020-03-04 17:29:40 +01:00
Twinaphex a1fe704d22 Merge pull request #10207 from jdgleaver/arcade-dat-filter
(Manual content scanner) Add 'Arcade DAT Filter' Option
2020-03-04 17:29:33 +01:00
Twinaphex b96bdeeed7 Merge pull request #10208 from jdgleaver/drop-down-auto-select
Automatically select currently checked item when opening drop-down lists
2020-03-04 17:29:22 +01:00
Twinaphex 9678b1f9ed Merge pull request #10209 from jdgleaver/rgui-flux
(RGUI) Enable 'Flux' theme
2020-03-04 17:23:13 +01:00
jdgleaver a10c7e3ac2 (RGUI) Enable 'Flux' theme 2020-03-04 14:09:07 +00:00
jdgleaver f7217702e2 Automatically select currently checked item when opening drop-down lists 2020-03-04 13:24:25 +00:00
jdgleaver 9d59fcaded (Manual content scanner) Add 'Arcade DAT Filter' Option 2020-03-04 11:52:20 +00:00
Twinaphex e2378680ef Merge pull request #10202 from WeedyWeedSmoker/French-translation-update
French update — (GLUI) Add navigation bar option
2020-03-03 19:58:43 +01:00
Twinaphex e7d6c63863 Merge pull request #10204 from jdgleaver/volume-widget-fix
Fix volume widget scaling
2020-03-03 19:45:11 +01:00
jdgleaver 9954ae57a9 Fix volume widget scaling 2020-03-03 17:08:37 +00:00
Twinaphex f61621f753 Merge pull request #10203 from jdgleaver/line-ticker-fix
Fix smooth (vertical) line ticker scroll speed
2020-03-03 17:01:36 +01:00
jdgleaver c02f922c10 Fix smooth (vertical) line ticker scroll speed 2020-03-03 14:33:26 +00:00
Weedy Weed Smoker a62ec9217f French update — (GLUI) Add navigation bar option 2020-03-03 21:11:18 +07:00
twinaphex 6232e0abd3 Buildfix 2020-03-03 11:08:16 +01:00
twinaphex d5f7839d12 Cleanups 2020-03-03 10:58:04 +01:00
twinaphex d1ebb58580 Cleanups - change function signature of compile_spirv to const char * 2020-03-03 10:49:47 +01:00
Twinaphex 67d00f4772 Merge pull request #10199 from orbea/glslang
griffin: Fix the glslang path.
2020-03-03 10:34:12 +01:00
orbea 0138398f0c griffin: Fix the glslang path. 2020-03-02 18:13:26 -08:00
altiereslima 040ded3443 Update msg_hash_pt_br.h 2020-03-02 21:38:33 -03:00
altiereslima 09d8cce474 Update msg_hash_pt_br.h 2020-03-02 21:21:07 -03:00
twinaphex 09df109531 Silence warning 2020-03-03 00:53:43 +01:00
twinaphex e895b9f101 (GX) Buildfix 2020-03-03 00:52:48 +01:00
Twinaphex f74126ec77 Merge pull request #10195 from MrHuu/patch-3
(3DS) Remove duplicate ECWolf ID
2020-03-02 23:39:03 +01:00
Twinaphex ae21ebddc8 Merge pull request #10196 from orbea/deps2
Fix the header paths with the system glslang.
2020-03-02 23:38:52 +01:00
orbea def374c2b9 Fix the header paths with the system glslang. 2020-03-02 14:20:18 -08:00
twinaphex f638fff16d (discord.c) Cleanups 2020-03-02 20:59:27 +01:00
twinaphex 4f5b16b245 Fix some TODO/FIXME notes 2020-03-02 20:52:29 +01:00
twinaphex 1167a06a5a Settings Cleanups 2020-03-02 20:34:31 +01:00
twinaphex 80991a00f0 Settings cleanups 2020-03-02 20:24:00 +01:00
twinaphex 0ef1b342e4 settings Cleanups 2020-03-02 20:10:24 +01:00
MrHuu 13ed047e13 (3DS) Remove duplicate ECWolf ID
ECWolf entry has been duplicated.

https://github.com/libretro/RetroArch/commit/0bd8629baa1b222838fb8363a218ab3352b53ddd#diff-780fd17e8e9be633670c6de3b589c992

https://github.com/libretro/RetroArch/commit/8dc2ea114f620ab7dd9e90e541317257fc4cb6f5#diff-780fd17e8e9be633670c6de3b589c992
2020-03-02 18:42:35 +01:00
Twinaphex 50c3673dfc Update CHANGES.md 2020-03-02 18:15:41 +01:00
Twinaphex 670cbc8903 Merge pull request #10191 from Jamiras/cheevos_lboard_retry
(cheevos) add delayed retries to leaderboard submissions
2020-03-02 18:15:26 +01:00
Twinaphex 96f2f24ce3 Update CHANGES.md 2020-03-02 18:14:38 +01:00
Twinaphex d4c9768138 Merge pull request #10175 from Jamiras/multi_popup
(cheevos) queue multiple popups
2020-03-02 18:13:33 +01:00
Twinaphex 254dacb66b Merge pull request #10194 from jdgleaver/glui-hide-nav-bar
(GLUI) Add option to remove navigation bar
2020-03-02 18:12:20 +01:00
Twinaphex 92bd0fc47a Merge pull request #10193 from phcoder/3ds
3ds: Add ids for ecwolf and xmillenium
2020-03-02 18:12:00 +01:00
jdgleaver 4d3507097a (GLUI) Add option to remove navigation bar 2020-03-02 16:13:53 +00:00
Vladimir Serbinenko 8dc2ea114f 3ds: Add ids for ecwolf and xmillenium
I don't have banners or icons though
2020-03-02 14:11:59 +01:00
Jamiras db5358f70f add delay retries to leaderboard submits 2020-03-01 17:19:50 -07:00
Twinaphex ccb8b98008 Update msg_hash_fr.h 2020-03-01 22:06:44 +01:00
Twinaphex 795be81f4a Merge pull request #10189 from WeedyWeedSmoker/French-update
French update — XMB themes added
2020-03-01 22:06:12 +01:00
twinaphex cc50cefd30 Cleanups 2020-03-01 21:58:09 +01:00
Twinaphex 5b2ed8a08d Update msg_hash_us.h 2020-03-01 20:37:49 +01:00
Twinaphex adbd442448 Merge pull request #10190 from libretro/revert-10188-turkish-language
Revert "Turkish Language updates"
2020-03-01 20:36:35 +01:00
Twinaphex f642066f05 Revert "Turkish Language updates" 2020-03-01 20:36:24 +01:00
Weedy Weed Smoker b1d0fec02e French update — XMB themes added 2020-03-02 01:13:51 +07:00
Twinaphex a4ca31e197 Merge pull request #10188 from fpscan/turkish-language
Turkish Language updates
2020-03-01 18:57:13 +01:00
Ömercan Kömür 40b17e4875 Turkish Language updates 2020-03-01 20:56:25 +03:00
twinaphex b99501d5d7 Simplify netplay_driver_ctl 2020-03-01 18:22:58 +01:00
twinaphex 0c1568c4ab Merge netplay_frontend.c into retroarch.c -
This should be the last file we have to roll into retroarch.c
2020-03-01 18:02:55 +01:00
twinaphex 45b02df36b Put HAVE_NETWORKING ifdefs around this code 2020-03-01 17:41:46 +01:00
twinaphex 182afe9561 Style nit 2020-03-01 17:30:42 +01:00
Twinaphex 38bbb2b3e1 Merge pull request #10183 from MrHuu/patch-2
(3DS) Update Makefile.cores
2020-03-01 16:28:35 +01:00
twinaphex 177d2a5903 (netplay_frontend.c) Settings cleanups 2020-03-01 16:24:06 +01:00
twinaphex 29d954bab2 Cleanups 2020-03-01 16:08:49 +01:00
twinaphex 69ffcf5648 (netplay_frontend.c) Simplify code 2020-03-01 15:58:17 +01:00
twinaphex 360fdfedbc (netplay_frontend.c) Cleanups 2020-03-01 15:33:17 +01:00
Twinaphex cd495a09f1 Merge pull request #10186 from JKoppel93/master
New XMB themes
2020-03-01 14:34:45 +01:00
JKoppel93 4914a41c2c minor tweaking 2020-03-01 04:58:59 -05:00
JKoppel93 105bfcafe5 XMB themes added
XMB themes added
2020-03-01 04:39:45 -05:00
MrHuu 0bd8629baa (3DS) Update Makefile.cores
Add id's for ECWolf / SMSplus / VitaQuake2 cores.
2020-02-29 22:21:01 +01:00
twinaphex 81ab6d575a Cleanups 2020-02-29 18:06:06 +01:00
Jamiras daad8bcca0 queue multiple popups 2020-02-29 09:30:22 -07:00
twinaphex 0524d4ae49 (retroarch.c) Settings cleanups 2020-02-29 17:18:25 +01:00
twinaphex 63b7d74272 Cut down get_time_usec calls - pass current_time around instead 2020-02-29 16:52:56 +01:00
twinaphex 42d3dd68ed (menu_cbs_deferred_push) Cleanups 2020-02-29 16:38:53 +01:00
twinaphex ca6b07cc47 Get rid of hash 2020-02-29 15:05:01 +01:00
twinaphex 22ada33990 Cleanups - get rid of label hash 2020-02-29 15:01:10 +01:00
twinaphex c4583a62fb Cleanups 2020-02-29 14:37:52 +01:00
twinaphex a326be71f3 Simplify remap_load_file 2020-02-29 14:33:53 +01:00
twinaphex 212318f95b Cleanups 2020-02-29 14:16:58 +01:00
twinaphex 8ce4ed7164 Cleanups 2020-02-29 12:55:33 +01:00
twinaphex 9dcc941ec5 Reduce get_time_usec calls 2020-02-29 12:51:42 +01:00
twinaphex 6802fa1324 Buildfix - add missing HAVE_CHEEVOS ifdef 2020-02-29 12:28:23 +01:00
Twinaphex 341cd0da36 Update CHANGES.md 2020-02-29 08:46:48 +01:00
Twinaphex 8476fd0559 Merge pull request #10177 from altiereslima/master
LOCALIZATION: Update Portuguese Brazilian translation
2020-02-29 08:46:26 +01:00
Twinaphex 6c8d87ac04 Update CHANGES.md 2020-02-29 08:17:43 +01:00
Twinaphex a438d4f4da Update CHANGES.md 2020-02-29 08:15:25 +01:00
Twinaphex b03f1d4c7f Update CHANGES.md 2020-02-29 08:14:46 +01:00
Twinaphex a4bad00133 Merge pull request #10180 from justinweiss/keep-bottom-screen-hidden-on-wake
[3DS] Keep the bottom screen hidden on sleep/wakeup
2020-02-29 08:14:13 +01:00
twinaphex b1fa971d35 Do check outside of rarch_perf_log 2020-02-29 08:05:49 +01:00
Justin Weiss a96be2cdce [3DS] Keep the bottom screen hidden on sleep/wakeup
When the 3DS wakes back up after being closed, the bottom screen needs
to be reinitialized. Adding the condition here will cause the screen
to be turned on or off based on the state of
ctr_bottom_screen_enabled, as you'd expect.
2020-02-28 23:01:22 -08:00
twinaphex 160d90f22a (performance counters) Get rid of other duplicate functions 2020-02-29 08:00:38 +01:00
twinaphex 3a1c59d461 rarch_timer_begin_new_time is an unnecessary function 2020-02-29 07:53:42 +01:00
twinaphex 7d908da30f Address TODO/FIXME 2020-02-29 07:45:17 +01:00
twinaphex add0cedc48 * Reduce the amount of cpu_features_get_time_usec calls
* Put code behind menu ifdefs
2020-02-29 07:41:05 +01:00
Twinaphex fe51b44d98 Merge pull request #10174 from Alcaro/patch-2
Fix tautological comparison
2020-02-29 06:35:56 +01:00
Twinaphex 7effd2171c Merge pull request #10179 from Jamiras/cheevos_measured
(cheevos) display measured progress on locked achievements
2020-02-29 06:34:29 +01:00
Jamiras 1557b15c40 display measured progress on locked achievements 2020-02-28 21:23:04 -07:00
altiereslima 897809cc75 LOCALIZATION: Update Portuguese Brazilian translation 2020-02-28 22:14:37 -03:00
hizzlekizzle ad03277e3c Merge pull request #10173 from Alcaro/patch-1
Avoid overflow when calculating multiplying performance counter
2020-02-28 18:30:13 -06:00
Alcaro ad523ebae0 Fix tautological comparison 2020-02-28 18:46:50 +01:00
Alcaro 472fe9a991 Avoid overflow when calculating multiplying performance counter 2020-02-28 18:07:00 +01:00
Twinaphex a10db7c280 Merge pull request #10171 from gordon-fish/patch-1
Fix to correctly set header.metadata_offset
2020-02-28 16:59:49 +01:00
gordon-fish 71c12aab32 Fix to correctly set header.metadata_offset
This fix will correctly set ``header.metadata_offset`` in ``libretrodb_create`` instead of always setting it to zero.

The main problem was using ``filestream_seek`` when ``filestream_tell`` should be used to get the actual offset.

See issue #10140
2020-02-28 07:46:07 -08:00
Twinaphex 385b0b71e7 Update CHANGES.md 2020-02-28 14:23:04 +01:00
Twinaphex 0913849b87 Update CHANGES.md 2020-02-28 14:22:17 +01:00
Twinaphex d67666f9fa Merge pull request #10170 from jdgleaver/core-list-hang-fix
Core updater tasks: Prevent hang when fetching core list if HTTP transfer fails
2020-02-28 14:21:18 +01:00
jdgleaver 5128237228 Core updater tasks: Prevent hang when fetching core list if HTTP transfer fails 2020-02-28 11:57:13 +00:00
twinaphex 5bb85ee5d5 (GX) Buildfix 2020-02-27 23:32:18 +01:00
Twinaphex 227a4585af Merge pull request #10166 from natinusala/odroidgo2-skeleton
ODROID-GO Advance rotation support
2020-02-27 23:30:00 +01:00
Twinaphex 172f49437f Merge pull request #10165 from jdgleaver/ozone-entry-height-fix
(Ozone) Fix entry height calculation
2020-02-27 23:29:05 +01:00
natinusala deb1151f04 odroidgo2: add zlib as dependency of libpng 2020-02-27 19:55:04 +01:00
natinusala b6a79462d5 odroidgo2: add libpng as libgo2 dependency 2020-02-27 19:45:25 +01:00
jdgleaver 4c9e2d98c1 (Ozone) Fix entry height calculation 2020-02-27 17:13:20 +00:00
twinaphex 55a1837494 menu_input_driver_toggle_on - turn function static 2020-02-27 15:34:47 +01:00
twinaphex 74547c0a81 (netplay) Cleanups 2020-02-27 12:02:55 +01:00
natinusala f00fb6d1ea odroidgo2: patched DRM driver 2020-02-27 10:22:51 +01:00
natinusala a75059f94b odroidgo2: add skeleton 2020-02-27 10:22:51 +01:00
twinaphex 765f8d4c8c Cleanup menu_keys_pressed 2020-02-27 10:03:21 +01:00
twinaphex 602623dc50 Remove RARCH_CTL_CORE_OPTIONS_INTL_INIT 2020-02-27 08:51:03 +01:00
twinaphex fb223ac377 Refactor input_keys_pressed 2020-02-27 08:08:38 +01:00
twinaphex 26b3ccf2e5 Don't pass joypad_info by value 2020-02-27 07:33:14 +01:00
twinaphex c2ed8783ee (pkg) Remove font / xui files 2020-02-27 01:34:42 +01:00
twinaphex 94cefaf1c5 Remove xui/fonts 2020-02-27 01:33:26 +01:00
twinaphex cd29beb00d Remove MENU_XUI 2020-02-26 22:05:11 +01:00
twinaphex 0ae51061f6 Fix build 2020-02-26 22:00:59 +01:00
twinaphex a6c9bb95f0 Remove HAVE_XUI 2020-02-26 19:09:00 +01:00
twinaphex fd7bc416ce Get rid of header include 2020-02-26 09:24:20 +01:00
twinaphex f5bc061b26 Merge menu_generic.c into menu_driver.c 2020-02-26 09:22:48 +01:00
twinaphex 3a76aac226 Get rid of unneeded header include 2020-02-26 08:25:56 +01:00
twinaphex b23863ae85 Reduce more cpu_features_get_time_usec calls 2020-02-26 08:17:51 +01:00
twinaphex d19dd12b30 Start calling cpu_features_get_time_usec less per frame iteration 2020-02-26 08:09:20 +01:00
twinaphex 795801b1f5 Reduce amount of calls to input_event_get_osk_ptr 2020-02-26 05:58:11 +01:00
twinaphex 01a65fa5ba Rename menu_osk.c to input_osk.c 2020-02-26 05:49:23 +01:00
Twinaphex e43f34376d Merge pull request #10163 from Tatsuya79/patch-7
qt: move gfx widget option to OSD
2020-02-25 20:16:12 +01:00
Tatsuya79 58fc9ce9ca Update ui.cpp 2020-02-25 19:20:27 +01:00
Tatsuya79 dc5afdccf9 qt: move gfx widget option to OSD 2020-02-25 19:18:57 +01:00
twinaphex a7e4bfe479 Cleanups 2020-02-25 08:11:45 +01:00
Twinaphex 010b2cb109 Merge pull request #10161 from altiereslima/master
(Translation) Update Portuguese Brazilian
2020-02-25 07:45:50 +01:00
Twinaphex 283c95399c Merge pull request #10162 from WeedyWeedSmoker/French-update
French update
2020-02-25 07:45:29 +01:00
Weedy Weed Smoker dd07038e14 (Ozone) Add 'Nord' and 'Gruvbox Dark' themes 2020-02-25 13:25:20 +07:00
twinaphex a5a0437bda (Ozone) Implement menu sublabels 2020-02-25 04:10:05 +01:00
altiereslima 314de68297 (Translation) Update Portuguese Brazilian 2020-02-24 21:22:23 -03:00
Twinaphex bdc159f0b4 Update CHANGES.md 2020-02-24 20:34:45 +01:00
Twinaphex 2d99847529 Merge pull request #10160 from jdgleaver/ozone-themes
(Ozone) Add 'Nord' and 'Gruvbox Dark' themes
2020-02-24 20:34:06 +01:00
jdgleaver 02a6243718 (Ozone) Add 'Nord' and 'Gruvbox Dark' themes 2020-02-24 17:53:07 +00:00
Twinaphex d7e6152d45 Merge pull request #10159 from jdgleaver/playlist-sublabel-fix
Fix playlist sublabels
2020-02-24 11:36:01 +01:00
jdgleaver 27c5ffeb76 Fix playlist sublabels 2020-02-24 10:22:44 +00:00
Twinaphex 0c17faa78f Merge pull request #10081 from felinben/patch
Add French comment
2020-02-24 10:11:08 +01:00
Twinaphex d4e9abe363 Merge pull request #10154 from Jamiras/cheevos_badges
(cheevos) simplify badge handling; remember enablement if XMB not available
2020-02-24 00:59:25 +01:00
Jamiras 5ecc426741 simplify badge handling; remember enablement if XMB not available 2020-02-23 15:55:41 -07:00
Twinaphex f671c37a0d Update CHANGES.md 2020-02-23 19:16:14 +01:00
Twinaphex 1933bc1eaf Merge pull request #10153 from Jamiras/cheevos_user_change
(cheevos) reset token when username or password changes
2020-02-23 19:15:13 +01:00
altiereslima c356e71b0a (Translation) Update Portuguese Brazilian (#10127)
* Update Portuguese Brazilian translation

* updates

* Update msg_hash_pt_br.h

* Update msg_hash_pt_br.h

* update

* finish
2020-02-23 12:26:50 -05:00
Rob Loach a3eef7442f (Translation) Update retroarch.desktop for French 2020-02-23 12:24:11 -05:00
Rob Loach d3419e7490 Merge pull request #10152 from natinusala/connmanctl-fix
connmanctl: fix build
2020-02-23 12:22:39 -05:00
Jamiras 4e27394b87 reset token when username or password changes 2020-02-23 08:10:26 -07:00
natinusala f21412ab59 connmanctl: fix build 2020-02-23 12:02:11 +01:00
twinaphex b89663e213 Inline file_list_get_userdata_at_offset 2020-02-23 11:13:48 +01:00
twinaphex 8ae08cf23d (Gfx widgets) Put AI service overlay code behind HAVE_TRANSLATE
ifdefs
2020-02-23 11:03:38 +01:00
twinaphex 6c82a3802e Remove more hashes 2020-02-23 10:20:29 +01:00
Rob Loach 387cb8bf8b Merge pull request #10132 from WeedyWeedSmoker/French-translation-update
(Translation) Update French translation
2020-02-23 03:30:06 -05:00
twinaphex 19f9ffc99f Get rid of more hashes 2020-02-23 09:22:30 +01:00
twinaphex 65d2c53bfe (Menu) Start getting rid of label hashes 2020-02-23 08:06:42 +01:00
twinaphex 976b659e2b (Ozone/MaterialUI) Settings cleanups 2020-02-23 07:53:19 +01:00
twinaphex 3b207990ce Cleanups 2020-02-23 06:34:41 +01:00
twinaphex 0ec3a8a449 (Input) Settings cleanups 2020-02-23 06:05:23 +01:00
twinaphex 8b11d9f039 Cleanups 2020-02-23 05:55:15 +01:00
twinaphex 3be4eac555 (msg_hash) Settings cleanups 2020-02-23 05:51:45 +01:00
twinaphex a2a5ca0d01 Move this struct over to rhash.c 2020-02-23 05:22:11 +01:00
twinaphex 79536a4767 (Darwin) Remove hashing 2020-02-23 04:58:08 +01:00
twinaphex 8fe2fe7b62 (UNIX) Remove hashing dependency 2020-02-23 04:52:27 +01:00
Twinaphex 41230c05b1 Merge pull request #10150 from valadaa48/battery_match
Add match on "battery" instead of just "BAT" to appease some unices
2020-02-23 04:41:56 +01:00
valadaa48 2dbb13d8dd Add match on "battery" instead of just "BAT" to appease some unices
- required for odroid go advance
2020-02-22 22:16:57 -05:00
twinaphex 8d6c7d6753 Cleanup 2020-02-23 00:02:56 +01:00
Twinaphex 8525b9e9cb Merge pull request #10143 from Jamiras/task_schedule
(cheevos) delay subsequent unlock attempts on failure
2020-02-22 21:59:43 +01:00
Jamiras c8c05306a3 add comments 2020-02-22 13:01:07 -07:00
Twinaphex 0f06e44b90 Merge pull request #10144 from Tatsuya79/patch-6
qt: fix ui "views" menu for drivers without kiosk mode
2020-02-22 18:29:13 +01:00
Tatsuya79 cb3d4ac722 qt: fix ui "views" menu for drivers without kiosk mode 2020-02-22 18:21:15 +01:00
Jamiras e00449c410 delay subsequent unlock attempts on failure 2020-02-22 07:11:01 -07:00
twinaphex 3ee89a16ef (Menu) Settings cleanups 2020-02-22 07:21:35 +01:00
twinaphex 4f50b2c698 Bump up to 1.8.5 2020-02-22 00:25:53 +01:00
twinaphex 428b3a8cc0 (Settings) Cleanups 2020-02-22 00:19:05 +01:00
twinaphex d8b3132a3c Cleanups 2020-02-21 23:57:42 +01:00
Twinaphex c2ca8b3a2d Update CHANGES.md 2020-02-21 21:57:13 +01:00
twinaphex a4c19457ce Found one instance where userdata was not implicitly set to NULL 2020-02-21 20:48:11 +01:00
Twinaphex 22dda9f398 Silence warnings 2020-02-21 20:40:23 +01:00
twinaphex d3e62c62f2 Make Ozone the new default for platforms that previously defaulted
to XMB
2020-02-21 20:19:13 +01:00
Twinaphex cee58b354d Merge pull request #10139 from jdgleaver/ozone-pointer
(Ozone) Add rudimentary pointer support
2020-02-21 19:46:30 +01:00
jdgleaver 92f93e9e4f (Ozone) Fix touchscreen sidebar scroll acceleration 2020-02-21 17:38:45 +00:00
jdgleaver d79b6e8574 (Ozone) Add rudimentary pointer support 2020-02-21 14:00:38 +00:00
twinaphex 1b0ab1c05f Cleanups 2020-02-21 07:34:53 +01:00
twinaphex 391a02fe45 Cleanups 2020-02-21 06:40:00 +01:00
twinaphex 2ec6d189ff Cleanups 2020-02-21 06:23:49 +01:00
twinaphex 903668aecf CXX_BUILD buildfix 2020-02-21 05:00:08 +01:00
twinaphex 47dc7e3db8 Cleanups 2020-02-21 04:01:21 +01:00
twinaphex 23d521935f Cleanups 2020-02-21 03:31:04 +01:00
twinaphex 6b7f794494 Cleanups 2020-02-21 03:28:23 +01:00
twinaphex 573fb445c4 CXX_BUILD buildfix 2020-02-20 01:06:00 +01:00
twinaphex 90ad9c567b CXX_BUILD buildfix 2020-02-19 23:50:26 +01:00
twinaphex b1db052bea (XMB) Cleanups 2020-02-19 23:30:08 +01:00
twinaphex c182916554 (Cheevos) Cleanups 2020-02-19 22:20:24 +01:00
twinaphex 068529929b Cleanups 2020-02-19 22:06:21 +01:00
twinaphex b3d3e5dd06 Cleanups 2020-02-19 21:05:38 +01:00
twinaphex 85c672a0f6 Settings pointer cleanups 2020-02-19 20:57:02 +01:00
twinaphex ab94af68c1 Cut down on settings access 2020-02-19 19:31:00 +01:00
twinaphex 682462fb20 Cleanups 2020-02-19 19:23:10 +01:00
twinaphex 75eef8a2c9 (drivers shader slang) Put logging behind DEBUG ifdef - and
turn some conditionals into a switch
2020-02-19 16:25:41 +01:00
Weedy Weed Smoker 0cb791ad5b Rename Menu Widgets to Graphics Widgets 2020-02-19 13:51:37 +07:00
twinaphex c6bd3da1c3 (drivers_shader) Cleanups 2020-02-19 03:23:30 +01:00
twinaphex 5280286415 (shader_vulkan.cpp) Cleanup 2020-02-19 03:11:45 +01:00
twinaphex 08f26eb097 (MSVC 2010) Add HAVE_GFX_WIDGETS 2020-02-19 02:59:19 +01:00
twinaphex d36941b81d (CTR) Buildfix 2020-02-19 00:23:45 +01:00
twinaphex 3ea96c2587 (GX) Buildfix 2020-02-19 00:23:45 +01:00
Twinaphex 51b9854a19 Merge pull request #10134 from jdgleaver/ozone-bg-opacity
(Ozone) Enable configuration of background opacity when content is running
2020-02-18 19:52:59 +01:00
jdgleaver 72b2da20e8 (Ozone) Enable configuration of background opacity when content is running 2020-02-18 17:12:39 +00:00
twinaphex 7f2d8742c2 Cleanups 2020-02-18 15:30:47 +01:00
twinaphex 3a94c52426 (gfx drivers) Start reducing settings pointer usage 2020-02-18 14:51:40 +01:00
twinaphex 9af520fa54 Cleanup 2020-02-18 13:40:01 +01:00
twinaphex c1a5bf944a Cleanups 2020-02-18 13:26:43 +01:00
twinaphex d7113372cb Rename Menu Widgets to Graphics Widgets; move setting to
Onscreen Notifications
2020-02-18 13:22:35 +01:00
twinaphex 46cacfc60e (gfx_display.c) Cleanups 2020-02-18 13:04:12 +01:00
Weedy Weed Smoker d3aae85014 French translation update
thanks to crowdin, I could find the last strings I forgot to translate!
2020-02-18 12:59:06 +07:00
twinaphex 2ba45d0acb (GL1) Fixes crash on MSVC2005 2020-02-18 05:51:23 +01:00
twinaphex cf8f2ac56c (menu_filebrowser.c) No more dependencies on settings_t 2020-02-18 05:43:13 +01:00
twinaphex 2ed50d2579 (MSVC 2010) x64 - update 2020-02-18 05:15:11 +01:00
twinaphex 6d09d29093 Be more safe with these functions - this was causing crashes on
MSVC 2005
2020-02-18 04:18:31 +01:00
twinaphex bd63d28b0f (MSVC) Add HAVE_OZONE 2020-02-18 02:55:33 +01:00
twinaphex 1a55b37046 (MSVC 2005) Add HAVE_OZONE 2020-02-18 02:53:28 +01:00
twinaphex 63a0f7a637 Get rid of fill_pathname_slash here 2020-02-18 02:42:41 +01:00
twinaphex 49b908e3c6 (MSVC2008) Add HAVE_OZONE 2020-02-18 02:35:52 +01:00
twinaphex 6609a749a3 (MSVC 2008) Add HAVE_GFX_WIDGETS 2020-02-18 02:15:41 +01:00
twinaphex 4224900f47 Fix memory leak 2020-02-18 02:02:22 +01:00
twinaphex 71d5f120a9 (Apple PPC) Add HAVE_GFX_WIDGETS 2020-02-17 23:03:10 +01:00
twinaphex 5684c72e35 (Ozone) Add two TODO/FIXMEs 2020-02-17 22:45:13 +01:00
twinaphex 53356fe61a Get rid of menu_texture_item 2020-02-17 22:28:21 +01:00
twinaphex 898044933a (MSVC 2005) Add HAVE_GFX_WIDGETS 2020-02-17 22:23:33 +01:00
twinaphex f4dd0f27ed MSVC2010 buildfix 2020-02-17 22:19:22 +01:00
twinaphex e3af337a78 Buildfix 2020-02-17 21:48:15 +01:00
twinaphex ebc335319e Cleanups 2020-02-17 21:47:09 +01:00
twinaphex 7c7d0f596a HAVE_MENU_WIDGETS now decoupled from HAVE_MENU 2020-02-17 21:28:42 +01:00
twinaphex 561012c3ba (gfx_widgets) Set all values to initial state 2020-02-17 20:49:56 +01:00
Twinaphex 7a37476b9a Update CHANGES.md 2020-02-17 16:44:33 +01:00
Twinaphex 65564b415d Merge pull request #10130 from ToKe79/lakka_ssid_length
connmanctl: display more chars from SSID
2020-02-17 16:44:05 +01:00
Twinaphex 25d428fde0 Update CHANGES.md 2020-02-17 16:43:45 +01:00
Twinaphex f7675bb48a Merge pull request #10131 from jdgleaver/double-input-fix
Prevent double input when using 'return' key (hardware) to close on-screen keyboard
2020-02-17 16:43:26 +01:00
twinaphex 10d09eaed3 gfx_widgets_init - move content of error path to retroarch.c 2020-02-17 16:42:17 +01:00
twinaphex 4d148ff078 Roll gfx_widgets_context_destroy into gfx_widgets_free 2020-02-17 16:35:19 +01:00
jdgleaver b10d4e9412 Prevent double input when using 'return' key (hardware) to close on-screen keyboard 2020-02-17 15:13:18 +00:00
twinaphex 166c0c2311 Cleanups 2020-02-17 16:07:37 +01:00
Tomas Kelemen (vudiq) d5cd51644e connmanctl: display more chars from SSID 2020-02-17 15:57:16 +01:00
Twinaphex 903648f1fe Update Makefile.cores 2020-02-17 14:16:03 +01:00
Twinaphex 3cc0c5a60a Merge pull request #10129 from jdgleaver/dos2unix
gfx_display.h/c: Fix line endings
2020-02-17 13:06:15 +01:00
Twinaphex 97627559a6 Merge pull request #10128 from jdgleaver/scaling-fix
Ensure menu ID is set before initialising menu driver
2020-02-17 13:06:04 +01:00
jdgleaver e497b8f534 gfx_display.h/c: Fix line endings 2020-02-17 12:01:14 +00:00
jdgleaver 12cd9e5c88 Ensure menu ID is set before initialising menu driver (fixes first-frame scaling bug) 2020-02-17 11:51:01 +00:00
twinaphex cec672a71d Buildfix 2020-02-17 12:27:08 +01:00
twinaphex cccf8a9870 Move hex32_to_rgba_normalized to materialui.c 2020-02-17 04:01:58 +01:00
twinaphex a0f3010159 Cleanup 2020-02-17 03:59:12 +01:00
hizzlekizzle 4e5509e206 Merge pull request #10123 from WeedyWeedSmoker/French-translation-update
French translation update
2020-02-16 20:37:42 -06:00
twinaphex c855eb38d8 Move enums to related header 2020-02-17 03:06:07 +01:00
twinaphex a59eec01e1 Cleanups 2020-02-17 02:40:37 +01:00
twinaphex 6e880ef686 osk_dark no longer a global 2020-02-17 02:31:14 +01:00
twinaphex 8980d92efa Cleanup 2020-02-17 02:08:40 +01:00
twinaphex 43561dc389 (Xvideo) Buildfix 2020-02-17 01:54:25 +01:00
twinaphex b00bf17153 Move menu_widgets to gfx/ and call it gfx_widgets 2020-02-17 01:54:07 +01:00
twinaphex b229f267e4 Rename menu_widgets to gfx_widgets 2020-02-17 01:43:40 +01:00
twinaphex 6b82089d6c Move menu_display code to gfx_display 2020-02-17 00:42:49 +01:00
twinaphex 550e8fff6b Move menu DPI scaling code to menu_widgets 2020-02-17 00:17:36 +01:00
twinaphex 633277ddd0 Refactor menu_widgets_iterate 2020-02-16 23:38:24 +01:00
twinaphex 5d5200d20b (Menu widgets) Refactor 2020-02-16 23:34:49 +01:00
Twinaphex 31a7e5628c Update CHANGES.md 2020-02-16 22:27:28 +01:00
Twinaphex 481e970424 Merge pull request #10126 from hcvcastro/master
avoid crash when running retroarch
2020-02-16 22:27:01 +01:00
twinaphex ec302bc4fc video_set_nonblock_state - remove settings dependency 2020-02-16 22:26:07 +01:00
twinaphex 47af95469a (font_driver.c) Remove configuration.h dependency 2020-02-16 21:59:03 +01:00
Henry Castro 4ac25e09ce avoid crash when running retroarch
Avoid NULL deref when running in GNU/Linux Debian
2020-02-16 16:52:07 -04:00
twinaphex 4493ece2f2 Cleanup 2020-02-16 20:27:22 +01:00
twinaphex 26dea23b5d Add DEBUG ifdefs 2020-02-16 20:21:54 +01:00
twinaphex 1cea12bf57 Cleanups 2020-02-16 20:03:57 +01:00
twinaphex 05dd4bbb51 No longer menu-specific 2020-02-16 19:49:02 +01:00
twinaphex 09da302b8d Try to make it more portable for BSD 2020-02-16 19:37:59 +01:00
twinaphex 95286408ed Buildfixes 2020-02-16 18:45:28 +01:00
twinaphex 26543a3636 Cleanups 2020-02-16 18:29:34 +01:00
twinaphex 7bf5da8de4 (gfx_animation.c) Remove remaining menu namespace conventions 2020-02-16 18:24:45 +01:00
twinaphex e7149effa7 (Menu widgets) Add HAVE_CHEEVOS ifdefs
(retroarch.c) command_reply is now still used regardless of HAVE_CHEEVOS
being defined or not
2020-02-16 18:11:50 +01:00
twinaphex 808a54e217 Cleanups 2020-02-16 17:40:06 +01:00
twinaphex bb2251a7b2 (display server) Cleanup 2020-02-16 17:34:26 +01:00
twinaphex 2f525187a1 (gfx_display.c) Get rid of more header includes 2020-02-16 17:18:13 +01:00
twinaphex 13ea2ceaa6 Get rid of some header includes 2020-02-16 17:09:52 +01:00
twinaphex 5c15b306d6 Header include cleanups 2020-02-16 16:58:38 +01:00
twinaphex b7ced5763b Get rid of header include 2020-02-16 16:54:58 +01:00
twinaphex f74225721d menu_thumbnail and menu_thumbnail_path now decoupled from menu
system
2020-02-16 16:38:17 +01:00
twinaphex f0bdb61fd8 gfx_display and gfx_animation no longer tied to HAVE_MENU 2020-02-16 15:51:58 +01:00
twinaphex 9a6ab81739 MOve gfx_display and gfx_animation to gfx/ 2020-02-16 15:26:58 +01:00
twinaphex c71469c715 Rename menu_display to gfx_display 2020-02-16 15:10:07 +01:00
twinaphex e6d64f72ec Start preparing menu_widgets.c to become independent of menu code 2020-02-16 14:17:33 +01:00
twinaphex fc9edda0ef Turn menu_animation.c into gfx_animation.c 2020-02-16 14:01:34 +01:00
twinaphex 084bad5aaa Every menu driver can set its own callback 2020-02-16 13:40:18 +01:00
twinaphex 98227a886b menu_animation_update_time - cleanups 2020-02-16 02:16:27 +01:00
twinaphex 3a1abbed4c Cleanup 2020-02-15 17:28:29 +01:00
twinaphex 45a012eb71 Cleanups 2020-02-15 17:25:20 +01:00
twinaphex 980058ea4c Cleanup dir_init_shader 2020-02-15 15:43:26 +01:00
Twinaphex 8e59430f93 Merge pull request #10122 from Jamiras/rcheevos_rp
default rich presence on; better handling of special characters
2020-02-15 13:23:13 +01:00
Weedy Weed Smoker 4f91a12f73 French translation update 2020-02-15 13:37:33 +07:00
Jamiras 4b8f3ec5b5 default rich presence on; better handling of special characters 2020-02-14 20:12:49 -07:00
Twinaphex bba8d9cd30 Update CHANGES.md 2020-02-15 02:43:54 +01:00
Twinaphex 46d876d607 Merge pull request #10121 from WeedyWeedSmoker/French-translation-update
French translation update
2020-02-15 02:43:12 +01:00
Twinaphex 205eb10f43 Merge pull request #9971 from sinusinu/master
Update korean translation
2020-02-15 02:42:37 +01:00
twinaphex 01e01f480e Add crowdin.yaml 2020-02-15 02:41:29 +01:00
Twinaphex 1c031466fc Merge pull request #9513 from guoyunhe/translation-update-script
Add translation update scripts to integrate with localization platforms
2020-02-15 02:39:31 +01:00
twinaphex ff96d914f4 Use M_PI from retro_math.h 2020-02-15 01:54:44 +01:00
Weedy Weed Smoker 278498da48 Latest additions to the french translation 2020-02-15 04:10:16 +07:00
Twinaphex b030f044f4 Update CHANGES.md 2020-02-14 22:05:29 +01:00
twinaphex 1d86fc07b1 Buildfix 2020-02-14 22:01:28 +01:00
twinaphex 5d56d09b8d Merge branch 'celerizer-test' 2020-02-14 21:56:31 +01:00
twinaphex 386199e422 Merge branch 'master' of git://github.com/celerizer/RetroArch into celerizer-test 2020-02-14 21:56:14 +01:00
Twinaphex 851ee94c5c Merge pull request #10120 from libretro/celerizer-master
Cleanups
2020-02-14 21:54:41 +01:00
Weedy Weed Smoker 9526e3f14b French translation update 2020-02-15 03:54:25 +07:00
twinaphex d86eb46f15 Cleanups 2020-02-14 21:53:45 +01:00
Twinaphex 2992cbd261 Merge pull request #10119 from Tatsuya79/patch-5
qt: add menu widget scaling new settings
2020-02-14 21:48:10 +01:00
Tatsuya79 914e330ef2 qt: add menu widget scaling new settings 2020-02-14 21:44:35 +01:00
twinaphex f320eb45d8 (menu_animation.c) Need to find a different way to remove this
dependency
2020-02-14 21:26:13 +01:00
twinaphex 60f335cf02 Split up menu display code into separate file 2020-02-14 21:07:15 +01:00
Guo Yunhe 1b395e664f Merge branch 'master' into translation-update-script 2020-02-14 21:06:03 +02:00
twinaphex 8040e7d168 (PS2) Buildfix 2020-02-14 19:04:12 +01:00
Twinaphex 9d5d7edf9a Update CHANGES.md 2020-02-14 19:00:59 +01:00
Twinaphex 136163ba4f Merge pull request #10114 from jdgleaver/widget-scaling
(Menu Widgets) Add scaling
2020-02-14 18:53:43 +01:00
jdgleaver 23c9b86f64 (Menu Widgets) Enable scaling of widgets independently from menu scale 2020-02-14 17:10:39 +00:00
twinaphex afb2a4abbf (Wii) Style nits 2020-02-14 17:43:58 +01:00
twinaphex c4f69b1eb7 (PS2) Cleanups 2020-02-14 17:43:00 +01:00
Twinaphex d6e7ae3769 Merge pull request #10118 from orbea/menu_null
Fix a segfault when starting the qt menu with the null menu driver.
2020-02-14 17:19:52 +01:00
orbea 0ea75894c1 Fix a segfault when starting the qt menu with the null menu driver. 2020-02-14 07:47:34 -08:00
twinaphex 0278e78989 Replace strcmp with string_is_equal 2020-02-14 16:46:09 +01:00
twinaphex 3b977c8747 Cleanups 2020-02-14 16:32:31 +01:00
twinaphex 789db436bb (conmanctl) Cleanups 2020-02-14 14:38:26 +01:00
twinaphex 2be5ffe4e9 Improve ifdef - should be compiled in only if HAVE_OZONE is defined 2020-02-14 14:31:02 +01:00
twinaphex 369348ebaf (Managers) Get rid of settings_t dependencies 2020-02-14 14:24:38 +01:00
twinaphex dad077adf3 Cleanups 2020-02-14 14:11:25 +01:00
twinaphex 3b2a3c1277 (led_driver) Take out settings_t dependency
(menu cbs sublabel) Add HAVE_MATERIALUI ifdefs
2020-02-14 14:05:35 +01:00
twinaphex e5674b146d (PSP) Buildfix 2020-02-14 13:33:27 +01:00
twinaphex ebd3e65f46 (ps2 compat files) Cleanups 2020-02-14 13:16:21 +01:00
twinaphex 2d946d0d95 (PS2 gfx) Cleanups 2020-02-14 13:06:56 +01:00
twinaphex cb0c145e3d Cleanups 2020-02-14 12:55:36 +01:00
twinaphex de604a79ab dir_list_new_special - no more dependency on settings_t 2020-02-14 12:12:59 +01:00
Twinaphex 172f75e5c0 (OSX) Buildfix 2020-02-14 00:24:03 +01:00
twinaphex df62b6d78f Buildfix 2020-02-14 00:19:54 +01:00
twinaphex 2d274f1369 Move accessibility features to platform frontend driver 2020-02-14 00:17:55 +01:00
twinaphex e47b7526bc (gfx) Cleanups 2020-02-13 23:24:51 +01:00
twinaphex 310bf3328e (UI) Cleanups 2020-02-13 22:39:29 +01:00
twinaphex 4467f811e0 ui_companion_driver_toggle - turn into static function 2020-02-13 22:33:09 +01:00
Twinaphex 637ff87e3f Merge pull request #10115 from orbea/cxx_linker
Add CXX_LINKER to the builtin glslang.
2020-02-13 22:26:49 +01:00
orbea c9c50f286c Add CXX_LINKER to the builtin glslang.
Fixes https://github.com/libretro/RetroArch/issues/10112.
2020-02-13 13:20:14 -08:00
twinaphex 59d6ad6b05 (platform_win32.c) Cleanup 2020-02-13 21:53:31 +01:00
twinaphex 950f6bb752 (record_ffmpeg) No more settings_t dependency 2020-02-13 21:48:52 +01:00
twinaphex 9c37356267 (record_ffmpeg.c) Start reducing settings_t usage 2020-02-13 21:41:29 +01:00
twinaphex 835acec8f3 (record_ffmpeg.c) Cleanups 2020-02-13 21:39:24 +01:00
twinaphex a6d64696e3 (menu_animation.c) Cleanups 2020-02-13 21:24:02 +01:00
twinaphex f4d93587a3 Remove unnecessary strings 2020-02-13 21:17:46 +01:00
twinaphex d0c40e3295 Remove duplicate English strings 2020-02-13 21:15:23 +01:00
twinaphex a92943d66c Buildfix for --disable-menu 2020-02-13 20:23:41 +01:00
jdgleaver 3f34f5072f (Menu Widgets) Add comment notifying that OZONE_SIDEBAR_WIDTH must be kept in sync between menu_widgets.c and ozone.h 2020-02-13 18:20:49 +00:00
twinaphex bf35c1faf5 Cleanup 2020-02-13 18:42:11 +01:00
twinaphex 108643473d (Intl Ja) Remove duplicate Japanese strings 2020-02-13 18:34:40 +01:00
jdgleaver e8a2a39d72 (Menu Widgets) Add scaling 2020-02-13 17:28:32 +00:00
Twinaphex e0cfa01e99 Merge pull request #10099 from WeedyWeedSmoker/French-translation-update
French translation update
2020-02-13 18:24:28 +01:00
twinaphex d645478f89 Cleanups 2020-02-13 18:19:04 +01:00
twinaphex a0ab7ab6fc (Menu) Cleanups 2020-02-13 18:13:21 +01:00
twinaphex 7090de541a - Merge runahead/mylist.c into retroarch.c
- General cleanups
2020-02-13 17:26:11 +01:00
twinaphex 5cb7d29c17 Style nits 2020-02-13 17:11:57 +01:00
twinaphex 2f64329c98 Cleanups 2020-02-13 17:04:49 +01:00
twinaphex 732fe2e996 Simplify menu_shader_manager_set_preset 2020-02-13 17:01:06 +01:00
twinaphex d02dbcfedd Update CHANGES.md 2020-02-13 14:18:30 +01:00
Twinaphex a97557f2e4 Merge pull request #10111 from jdgleaver/ozone-scaling
(Ozone) Add DPI-based scaling
2020-02-13 14:16:34 +01:00
twinaphex b004202cbf Revert "Reduce dependency on settings in menu_widgets.c"
This reverts commit ec53a400a7.
2020-02-13 14:11:52 +01:00
twinaphex 2e0f921ded Cleanups 2020-02-13 02:18:38 +01:00
twinaphex b7a17442d9 (menu_shader.c) Remove configuration.h dependency 2020-02-13 02:04:35 +01:00
twinaphex 699a21fa87 Cleanups 2020-02-13 01:09:27 +01:00
twinaphex 4c95d1af4e (network) Turn some functions into static functions 2020-02-12 20:06:21 +01:00
twinaphex 013117318c (network) Get rid of all the settings pointer grabbing 2020-02-12 20:01:48 +01:00
twinaphex e93244e0cb Cleanups 2020-02-12 17:26:54 +01:00
twinaphex 71030e4d81 Cleanup 2020-02-12 17:18:14 +01:00
twinaphex 7eb41e7057 (JACK) Get rid of configuration.h dependency 2020-02-12 17:13:47 +01:00
twinaphex ec53a400a7 Reduce dependency on settings in menu_widgets.c 2020-02-12 17:06:53 +01:00
twinaphex bb0840956f (menu_osk) Cleanup - take out configuration.h dependencies 2020-02-12 16:45:50 +01:00
twinaphex dd01ae8ebc menu_animation.c - no more dependency on configuration.h 2020-02-12 16:31:15 +01:00
twinaphex 1105d1019d Reduce some configuration dependencies 2020-02-12 16:13:28 +01:00
twinaphex d918c1791a Get rid of some configuration.h dependencies 2020-02-12 16:09:30 +01:00
jdgleaver b1773cc73b (Switch) Report correct (approximate) DPI in 'docked' mode 2020-02-12 14:25:49 +00:00
twinaphex 83a03b6679 Silence this warning 2020-02-12 14:16:09 +01:00
Twinaphex f3b3fc3935 Merge pull request #10102 from Jamiras/cheevos_unsupported_core
(cheevos) if the core says it's exposing SYSTEM_RAM, give it the benefit of the doubt
2020-02-12 13:38:46 +01:00
jdgleaver fff9a4f0c5 (Ozone) Add DPI-based scaling 2020-02-11 17:03:54 +00:00
twinaphex 1f6b90a4f9 Prevent warnings 2020-02-10 20:45:17 +01:00
twinaphex bc5349061f Missing prototype 2020-02-10 20:39:53 +01:00
twinaphex 70e3ddb224 Cleanups 2020-02-10 17:19:49 +01:00
twinaphex 5e20a7ef5e Rework some of the config.def.h variables 2020-02-10 15:33:32 +01:00
twinaphex 0fd00ca82f Cleanup 2020-02-10 15:24:14 +01:00
twinaphex 1fafdb2843 Style nits 2020-02-10 13:18:27 +01:00
twinaphex c142ee19ba Cleanups 2020-02-10 13:12:26 +01:00
twinaphex 880391d0c5 (libnx) Try to silence warnings 2020-02-10 12:36:11 +01:00
twinaphex 9dbad614a5 Prevent warnings 2020-02-10 11:54:05 +01:00
twinaphex 0c6bb6660a Cleanups 2020-02-10 11:49:50 +01:00
Guo Yunhe a4bb8f130b Merge branch 'master' into translation-update-script 2020-02-07 10:59:36 +02:00
twinaphex dce610747b Update audio resampler 2020-02-07 07:53:23 +01:00
Twinaphex 84e6c2a185 Merge pull request #10095 from eadmaster/patch-2
added GET_CONFIG_PARAM and SHOW_MSG network commands
2020-02-06 19:57:15 +01:00
Jamiras 446e44cb09 if the core says it's exposing SYSTEM_RAM, give it the benefit of the doubt 2020-02-05 18:16:34 -07:00
Twinaphex eb58b8c0b5 Update opensl.c 2020-02-05 18:53:11 +01:00
Twinaphex 51964eee20 Remove unused variable 2020-02-05 07:17:25 +01:00
Twinaphex 8bda4553ed Update CHANGES.md 2020-02-05 02:33:17 +01:00
Twinaphex b8951b9934 Update CHANGES.md 2020-02-05 02:31:32 +01:00
Twinaphex 0b7edbad28 Merge pull request #10100 from hasenbanck/fix-ffmpeg-seek
Fix crash on seeking when using HW decoding in some cases.
2020-02-05 02:31:06 +01:00
Nils Hasenbanck baf065b789 Fix crash on seeking when using HW decoding in some cases.
This fix makes sure that we don't de-allocate the video buffer before
while the decoding thread is still working. We also don't throw
an misleading error when the decoding threads flushed the buffers
on seeking.
2020-02-04 21:29:35 +01:00
Weedy Weed Smoker 609dde0988 Another small change to the french translation 2020-02-05 03:15:03 +07:00
Weedy Weed Smoker 41b5387203 Small change to the french translation 2020-02-05 03:06:06 +07:00
Weedy Weed Smoker 2311936580 French translation update
and small typo fix for the english file…
2020-02-05 02:59:48 +07:00
Twinaphex ed4558fadd Merge pull request #10096 from jdgleaver/disk-control-notification-labels
(Disk Control) Add disk labels to 'disk inserted' notifications
2020-02-04 20:10:18 +01:00
Twinaphex b1d56207e3 Merge pull request #10097 from jdgleaver/widget-width
(Menu Widgets) Allow notifications to use full screen width when not displaying menu
2020-02-04 19:38:21 +01:00
jdgleaver 0d5a8c6aaa (Menu Widgets) Allow notifications to use full screen width when not displaying menu 2020-02-04 16:07:06 +00:00
jdgleaver 9de9a79925 (Disk Control) Add disk labels to 'disk inserted' notifications 2020-02-04 15:45:00 +00:00
eadmaster ed0a624b12 added GET_CONFIG_PARAM and SHOW_MSG network commands 2020-02-04 08:57:45 +01:00
twinaphex 8627d638e1 Cleanups 2020-02-04 06:05:00 +01:00
twinaphex 3990254a7c Cleanups 2020-02-04 05:54:00 +01:00
twinaphex 51290457dd Cleanups 2020-02-04 05:01:03 +01:00
twinaphex 2c2ab2a7b9 Revert "Cleanups"
This reverts commit 110dda6e48.
2020-02-04 04:49:25 +01:00
twinaphex a7f21e6cea (config.def.h) Cleanups 2020-02-04 04:21:31 +01:00
twinaphex 309dbacb67 Cleanup 2020-02-04 03:11:57 +01:00
twinaphex 110dda6e48 Cleanups 2020-02-04 03:10:58 +01:00
twinaphex 58457ef16c Cleanups 2020-02-04 02:57:16 +01:00
twinaphex 55e7c16dea Cleanups 2020-02-04 02:50:12 +01:00
twinaphex 51bc64559b Revert "(Config file) Don't save 'nul' entries in config file anymore -"
This reverts commit 4c6d46137c.
2020-02-04 01:02:40 +01:00
twinaphex 4c6d46137c (Config file) Don't save 'nul' entries in config file anymore -
config file size goes from 100KB to 20KB
2020-02-04 00:05:11 +01:00
twinaphex debbd9f15b Remove unused menu_display_pixel_get_scale 2020-02-03 22:47:26 +01:00
twinaphex 712910dec0 Cleanups 2020-02-03 22:05:11 +01:00
twinaphex 8999235373 Cleanups 2020-02-03 21:45:55 +01:00
twinaphex 8c2fe0a9ae Cleanup 2020-02-03 21:17:17 +01:00
Twinaphex 9651299e79 Merge pull request #10094 from IlDucci/master
Updating Spanish translation with latest changes.
2020-02-03 21:16:59 +01:00
twinaphex fdb7f972a6 Update Makefile.griffin 2020-02-03 18:14:15 +01:00
twinaphex 12e82baeb3 Update - add HAVE_CONFIGFILE to Makefile.griffin 2020-02-03 18:12:43 +01:00
IlDucci a41ee25518 Updating Spanish translation with latest changes. 2020-02-03 15:30:30 +01:00
twinaphex cd20966fc8 Remove more settings_t dependencies 2020-02-03 08:00:08 +01:00
twinaphex d3e0d03301 Cleanups 2020-02-03 07:44:00 +01:00
twinaphex 2cb6416572 Cleanup 2020-02-03 07:39:14 +01:00
twinaphex 3fd40c03bf (tasks/task_core_updater.c) get Rid of some settings dependencies 2020-02-03 07:37:05 +01:00
twinaphex e5b236898f Cleanup 2020-02-03 07:22:30 +01:00
twinaphex 67cfff2520 Remove the menu display null drivers 2020-02-03 07:04:06 +01:00
twinaphex 68467da7ac Remove menu_display_ctx_vga - is identical to menu display null 2020-02-03 06:55:15 +01:00
twinaphex 6b0a62d6ff Null video driver should work now 2020-02-03 06:49:59 +01:00
twinaphex 5ff4ee96e4 (Resampler) More buildfixes 2020-02-03 03:33:50 +01:00
twinaphex e1603c0f44 (Resampler) Cleanups 2020-02-03 01:59:24 +01:00
twinaphex 5ceb73c1cf More casts 2020-02-03 00:29:34 +01:00
twinaphex 5f631b3499 Cast this 2020-02-03 00:24:24 +01:00
twinaphex 076fddd9d9 (Resampler) Turn this void 2020-02-03 00:16:16 +01:00
twinaphex bcfa6d7e0e Cleanup 2020-02-02 23:45:11 +01:00
twinaphex 2c37fb1f5e Add HAVE_CONFIGFILE ifdefs 2020-02-02 23:41:17 +01:00
twinaphex e0fdd8d39e Add back HAVE_CONFIGFILE ifdef - will strip out remaps and overrides
support as well
2020-02-02 21:27:38 +01:00
twinaphex cb48ae6989 Updates 2020-02-02 17:37:16 +01:00
twinaphex cde2d7c18c Looks like unnecessary logic 2020-02-02 17:32:14 +01:00
twinaphex 28b2a34191 Remove duplicate prototype 2020-02-02 08:07:59 +01:00
Twinaphex 07a2dc5aa9 Merge pull request #10089 from orbea/vulkan_warning
Silence warning with clang-9.0.1.
2020-02-02 04:08:24 +01:00
Twinaphex bfbbd858fb Merge pull request #10090 from orbea/glslang
Add HAVE_BUILTINGLSLANG to other build systems.
2020-02-02 04:07:57 +01:00
twinaphex 564a4758de Cleanups 2020-02-02 03:45:42 +01:00
orbea f1b9b8cb73 Add HAVE_BUILTINGLSLANG to other build systems. 2020-02-01 18:36:41 -08:00
twinaphex 5bb084c32b Cleanups 2020-02-02 03:00:51 +01:00
twinaphex 97beb90b8f Remove unused RARCH_CTL_IS_BLOCK_CONFIG_READ 2020-02-02 02:26:54 +01:00
twinaphex 8eca1a0459 Refactor this 2020-02-02 02:16:19 +01:00
twinaphex e7e7a284f5 Cleanups 2020-02-02 02:16:19 +01:00
orbea baf7013941 Silence warning with clang-9.0.1.
gfx/drivers_shader/shader_vulkan.cpp:2372:4: warning: field 'device' will be initialized after field 'size' [-Wreorder]
   device(device),
   ^
1 warning generated.
2020-02-01 16:52:00 -08:00
Twinaphex 7bf6bac63f Merge pull request #10087 from orbea/glslang
qb: Support building with a system version of glslang.
2020-02-02 01:23:31 +01:00
orbea 74a09844c2 qb: Support building with a system version of glslang. 2020-02-01 16:12:54 -08:00
orbea 65e071e470 qb: Add c++ support for check_header. 2020-02-01 15:40:43 -08:00
twinaphex e005044f64 Remove retro_main_log_file function 2020-02-01 23:56:51 +01:00
Twinaphex d788531ae5 Update CHANGES.md 2020-02-01 23:50:09 +01:00
Twinaphex 5ed63521b1 Merge pull request #10085 from Jamiras/cheevos_hash_info
(cheevos) show RetroAchievements Hash in content information list
2020-02-01 23:49:46 +01:00
twinaphex 3b492142db Add CDROM_DEBUG ifdefs around this 2020-02-01 19:39:44 +01:00
twinaphex 6b99e07043 Can remove retroarch_get_launch_arguments function now 2020-02-01 17:46:01 +01:00
twinaphex 85d64602ff Move retroarch_get_launch_arguments() function call outside
of frontend driver - should be called by Salamander too which
has no conception of RetroArch launch arguments
2020-02-01 17:42:18 +01:00
twinaphex c2852bdefe Get rid of useless return 2020-02-01 17:26:32 +01:00
twinaphex e5ffeff36e Turn two more functions static 2020-02-01 17:24:27 +01:00
twinaphex bece92abb2 Turn command_set_shader private 2020-02-01 17:17:36 +01:00
Jamiras 79b51595a5 show RetroAchievements hash in content information list 2020-02-01 08:10:22 -07:00
twinaphex d89fb0e7c4 (shader_slang.cpp) Simplify usage of functions that are only
ever used as C-strings
2020-02-01 07:04:27 +01:00
twinaphex ca83be1db4 Cleanups 2020-02-01 04:19:22 +01:00
twinaphex 64c515bac4 Turn while (true) into for (;;) for easier MSVC backwards compatibility 2020-02-01 04:15:22 +01:00
twinaphex ff6d79b2cc Get rid of more RARCH_CTL_ enums 2020-02-01 03:32:24 +01:00
twinaphex 96018412c0 Cleanups 2020-02-01 03:27:58 +01:00
twinaphex 35b8c4cb05 Cleanup 2020-02-01 02:02:50 +01:00
Twinaphex 063e1a5d33 Update CHANGES.md 2020-02-01 01:52:22 +01:00
Twinaphex f54cd38f2e Update CHANGES.md 2020-02-01 01:51:59 +01:00
Twinaphex 04a5cbab4f Update CHANGES.md 2020-02-01 01:51:18 +01:00
Twinaphex 823f6b1047 Merge pull request #10084 from hasenbanck/override-netplay-fix
Save netplay settings which have a CLI override.
2020-02-01 01:50:47 +01:00
twinaphex 2db0d1f518 Cleanups 2020-02-01 01:50:01 +01:00
twinaphex cd9ca691ca (libretro-common) Update copyright 2020-01-31 15:43:42 +01:00
Nils Hasenbanck ec254f817d Save netplay settings which have a CLI override.
Currently the CLI overrides should not be saved when creating a confi-
guration file. But because of a bug, the user can never save netplay
settings which have an override.

This change prevents the frontend to set the "override flag" for these
options when setting the setting manually via the settings menu.

This enables toe saving of the affected settings again.
2020-01-31 15:21:20 +01:00
twinaphex 84251b02bd verbosity.c - add necessary header 2020-01-31 15:06:50 +01:00
twinaphex f0e889b552 Change prototype of video_driver_set_size 2020-01-31 15:06:50 +01:00
Twinaphex b490c774bf Update compat_ifaddrs.c 2020-01-31 07:48:32 +01:00
twinaphex 9f66968d1b Update verbosity.c 2020-01-31 02:34:16 +01:00
twinaphex 12da79730f Merge runahead/mem_util.c into retroarch.c 2020-01-31 02:32:49 +01:00
twinaphex 982e35db45 Use strlcat instead of strcat 2020-01-30 22:20:18 +01:00
twinaphex 941b5f83f3 Prefer to use strlcpy/strlcat instead of strcpy/strcat 2020-01-30 22:14:50 +01:00
twinaphex 3fc8aa7071 Cleanup 2020-01-30 22:03:49 +01:00
twinaphex 8c76e82e2f Simplify copy_core_to_temp_file 2020-01-30 21:55:38 +01:00
twinaphex 5ef559f6d8 Simplify copy_core_to_temp_file 2020-01-30 21:45:43 +01:00
twinaphex 0421d463f8 JUst use strdup instead of strcpy_alloc 2020-01-30 21:26:54 +01:00
twinaphex bb3e7fad66 - Make strcpy_alloc a static function of mem_util.c
- Make sure we avoid strcpy as much as possible - preferring
to use strlcpy instead
2020-01-30 20:16:20 +01:00
twinaphex d7c2eba4fd Simplify get_temp_directory_alloc 2020-01-30 20:05:44 +01:00
twinaphex e31ba43b5a Don't need to use verbosity_get_ptr for this 2020-01-30 19:47:03 +01:00
twinaphex 5d428d471c Move logging code over to verbosity.c 2020-01-30 19:22:57 +01:00
twinaphex a934e13309 Move variables into function 2020-01-30 19:13:17 +01:00
twinaphex d631da7d11 Start taking settings dependencies out of rarch_log_file_init
function
2020-01-30 19:04:05 +01:00
twinaphex 08239ead20 Remove duplicate English strings 2020-01-30 18:26:44 +01:00
twinaphex 7c0e80a415 (RPNG) Fix test compilation, currently fails though 2020-01-30 17:52:32 +01:00
twinaphex 0ff69ec3df Move test over to samples 2020-01-30 17:47:15 +01:00
twinaphex cad21249e0 Move crc32.c to samples 2020-01-30 17:44:29 +01:00
twinaphex acfe7ab16d Updates to samples/utils 2020-01-30 17:41:38 +01:00
twinaphex 652923d056 Move files around 2020-01-30 17:31:49 +01:00
twinaphex 4d18f3e9b7 Create more tests 2020-01-30 17:25:58 +01:00
twinaphex df06a0effe Fix names 2020-01-30 17:14:45 +01:00
twinaphex e13ffc7507 Add missing samples 2020-01-30 17:13:44 +01:00
twinaphex 12ec690044 Add samples test file for config_file 2020-01-30 17:02:52 +01:00
twinaphex 7f4139c427 Get rid of wrong double ';;' 2020-01-30 16:53:20 +01:00
twinaphex 74cd84399f Cleanups - Replace '== NULL' 2020-01-30 16:47:33 +01:00
Twinaphex f762ea6412 Update CHANGES.md 2020-01-30 16:39:25 +01:00
Twinaphex 46e26d9682 Update CHANGES.md 2020-01-30 16:37:57 +01:00
Twinaphex 057e57e0b6 Update CHANGES.md 2020-01-30 16:37:38 +01:00
Twinaphex 7f6b9fb31a Merge pull request #10080 from Jamiras/cheevos_unsupported_core
(cheevos) don't block sameboy core because it only exposes some memory
2020-01-30 16:36:52 +01:00
twinaphex a034909ae9 Cleanups 2020-01-30 16:35:59 +01:00
twinaphex f785e4b045 Replace while (1) with for (;;) - avoids MSVC warnings 2020-01-30 16:15:52 +01:00
twinaphex 8870632918 Get rid of unused RARCH_CTL_SET_FRAME_TIME_LAST 2020-01-30 04:39:22 +01:00
Jamiras 3ff13783fa workaround for sameboy only exposing RAM 2020-01-29 07:30:28 -07:00
Benoit Felix 54c7109cee Add French comment 2020-01-29 13:55:34 +00:00
twinaphex fe98aab910 Buildfix 2020-01-29 14:17:39 +01:00
twinaphex 260be59c9e C89_BUILD buildfix 2020-01-29 13:24:11 +01:00
twinaphex 2688805872 (retroarch.c) move variables to top 2020-01-29 03:48:09 +01:00
twinaphex ed84fd73a3 Cleanups 2020-01-29 03:46:25 +01:00
Twinaphex 255790b664 Merge pull request #10073 from eadmaster/patch-1
added GET_STATUS network command
2020-01-28 23:57:01 +01:00
eadmaster 491c0457a6 added detection of paused state 2020-01-28 21:40:56 +01:00
twinaphex 764990bb59 Revert "Aggressively simplify netplay_handshake - this function was very"
This reverts commit 096f992cc0.
2020-01-28 19:15:12 +01:00
twinaphex ac72ba5af8 Revert "(Netplay) Cleanups"
This reverts commit 646eba5a92.
2020-01-28 19:15:05 +01:00
twinaphex 846d9ed391 Revert "Cleanups"
This reverts commit 399f039b9e.
2020-01-28 19:14:37 +01:00
twinaphex 21381ff990 Revert "(netplay_frontend.c) Cleanups"
This reverts commit d0a2315098.
2020-01-28 19:14:22 +01:00
Twinaphex f43d7cc2d4 Merge pull request #10077 from phcoder/pixelbook2
Pixelbook fixes part 2
2020-01-28 17:50:37 +01:00
Vladimir Serbinenko 193d40bae4 Cleanup AMotionEvent_getAxisValue check
I though it was a weak loading but in fact it's explicit so
loading with some define magic, so we need to check for p_AMotionEvent_getAxisValue
to be clean. Binary code is actually the same

Tested by reverting path fix
2020-01-28 17:32:38 +01:00
Vladimir Serbinenko 6d8cbd2c4b Fix so file for x64 android
In particular it affects Pixelbook which implements x64 Android
2020-01-28 17:23:46 +01:00
Vladimir Serbinenko 14c24e1fab Remove unnecessarry check for AMotionEvent_getX
Unlike getAxis getX is always present and doesn't need to be checked
2020-01-28 17:04:32 +01:00
twinaphex d0a2315098 (netplay_frontend.c) Cleanups 2020-01-28 15:42:55 +01:00
Twinaphex 3d510bcaba Merge pull request #10075 from jdgleaver/netplay-rooms
Prevent out-of-bounds array indexing when displaying/selecting netplay rooms in menus
2020-01-28 15:38:03 +01:00
Twinaphex f75b588b0f Merge pull request #10076 from phcoder/pixelbook
Fix crash on Pixelbook
2020-01-28 15:32:56 +01:00
twinaphex 399f039b9e Cleanups 2020-01-28 15:14:29 +01:00
Vladimir Serbinenko e290e9193d Fix crash on Pixelbook
AMotionEvent_getAxisValue is a weak symbol and we need
to check for its presence before calling it.
2020-01-28 15:03:16 +01:00
twinaphex 646eba5a92 (Netplay) Cleanups 2020-01-28 14:56:05 +01:00
twinaphex 096f992cc0 Aggressively simplify netplay_handshake - this function was very
weird - the conditional was never triggered because all instances
of connection->mode being greater than or equal to
NETPLAY_CONNECTION_CONNECTED would already early return anyway
2020-01-28 14:29:30 +01:00
jdgleaver f538e04fd2 Prevent out-of-bounds array indexing when displaying/selecting netplay rooms in menus 2020-01-28 12:42:26 +00:00
twinaphex f72e127f5f Remove 'Send Debug Info' 2020-01-28 02:18:34 +01:00
eadmaster 7e7429cadd fixed comments style 2020-01-27 23:35:11 +01:00
twinaphex 4d36f0d356 Remove rarch_get_cpu_architecture_string - don't have two
functions that do more or less the same thing
2020-01-27 22:51:20 +01:00
eadmaster 7867b09a0e added GET_STATUS network command (#9483)
will return a string with the name of the current core running, the content name and crc32
2020-01-27 20:10:35 +01:00
twinaphex eb4e365820 (libretro-common) Cleanups 2020-01-27 17:00:18 +01:00
twinaphex f57ca1abba (netplay_room_parse) Fix namespacing of variable 2020-01-27 16:47:11 +01:00
twinaphex e8bc606c20 Move netplay_get_architecture to frontend_driver.c 2020-01-27 16:39:36 +01:00
twinaphex 9f9191819d (netplay_frontend.c) Cleanups 2020-01-27 16:27:51 +01:00
twinaphex 17cdbc305c Cleanups 2020-01-27 16:03:30 +01:00
Rob Loach a0faec186d intl: Remove AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST 2020-01-27 09:29:25 -05:00
Rob Loach 6b4b5ec2a1 Merge branch 'master' into master 2020-01-27 09:07:06 -05:00
Twinaphex 4a931c3bef Merge pull request #10062 from trioan/fixes
fix vulkan_framebuffer_generate_mips (msvc2017)
2020-01-26 15:08:06 +01:00
trioan 0e20be17cc fix vulkan_framebuffer_generate_mips (msvc2017)
{0} initializer
2020-01-25 21:14:28 -05:00
twinaphex 36cbcb12b2 Update CHANGELOG 2020-01-25 17:51:38 +01:00
twinaphex e54e12876b Header cleanups 2020-01-25 17:51:07 +01:00
twinaphex d198bef37b task_decompress.c - get rid of logging
task_autodetect_blissbox.c - get rid of logging
2020-01-25 17:22:24 +01:00
twinaphex cfcce71392 - Add HAVE_BLISSBOX
- Do not use logging functions inside internal task functions - should
always be done outside at end handler function
2020-01-25 17:17:53 +01:00
twinaphex 571eafd149 Get rid of send debug info in a more safe way that won't mess
with people's existing configs
2020-01-25 15:58:22 +01:00
twinaphex 3f598a0f9c Revert "Get rid of send debug info - if we ever bring this back, needs to be"
This reverts commit c0482ff2ea.
2020-01-25 15:55:11 +01:00
twinaphex c0482ff2ea Get rid of send debug info - if we ever bring this back, needs to be
reimplemented according to new infra
2020-01-25 14:53:04 +01:00
Twinaphex 3952761812 Merge pull request #10049 from Jamiras/http_port
allow characters other than / to follow port
2020-01-25 04:28:47 +01:00
hizzlekizzle f8ac94353a Merge pull request #9710 from hunterk/master
switch to nearest neighbor scaling as default
2020-01-24 15:56:03 -06:00
Jamiras d0d1c5bb37 allow characters other than / to follow port 2020-01-23 07:00:50 -07:00
Guo Yunhe 24aa0f7fe6 Merge branch 'master' into translation-update-script 2020-01-23 12:04:19 +02:00
twinaphex 60e087b8e7 (Discord) Add header include 2020-01-23 04:49:51 +01:00
twinaphex 9ddd8417c8 Replace some more auto variables 2020-01-23 04:49:51 +01:00
Twinaphex 363e7294b6 Update CHANGES.md 2020-01-23 01:59:39 +01:00
Twinaphex b0aa447d5f Merge pull request #10048 from Jamiras/http_task_progress_div_zero
prevent divide by zero error when calculating http transfer percentage
2020-01-23 01:57:15 +01:00
Jamiras a96672c0fc improve accuracy of progress for smaller payloads; prevent divide by zero for very small payloads 2020-01-22 17:42:55 -07:00
twinaphex bf5d3437f0 Merge branch 'master' of https://github.com/libretro/RetroArch 2020-01-22 20:09:33 +01:00
Twinaphex 689805ecbb Merge pull request #10045 from jdgleaver/disk-control-restore-index
(Disk Control Interface) Add support for saving/restoring last used disk in playlists + code overhaul
2020-01-22 20:09:14 +01:00
twinaphex a4564b8939 Move C oriented code from slang_reflection.cpp to glslang_util.c 2020-01-22 19:36:49 +01:00
twinaphex ff9701685f Remove some auto variables 2020-01-22 19:07:10 +01:00
twinaphex 528edf7e82 (Discord) Cleanups - we might want to do a clean implementation of all
this someday as Discord RPC is deprecated anyway
2020-01-22 18:53:54 +01:00
jdgleaver 00397a33f0 (Disk Control Interface) Add support for saving/restoring last used disk in playlists + code overhaul 2020-01-22 17:09:12 +00:00
twinaphex 276b7a03f1 Remove 'automatically add content to playlist' option - causes
memory corruption; not worth it for now
2020-01-22 17:08:02 +01:00
twinaphex 6d0286efbd Turn video_shader_parse_type into macro 2020-01-22 14:30:55 +01:00
twinaphex 920e89a506 Move pass set texture to vulkan_common.c 2020-01-22 14:27:24 +01:00
twinaphex 8f1aa8c2c3 (shader_gl_core.cpp) Cleanups 2020-01-22 13:52:14 +01:00
twinaphex 376ad6d61d move more C functions over to gl_core.c 2020-01-22 13:12:00 +01:00
twinaphex 90874b434e (shader_vulkan.cpp) Move more C code to vulkan_common.c 2020-01-22 12:09:08 +01:00
twinaphex bcf8ff3d0a (shader_gl_core) Get rid of ConfigDeleter - move C code to gl_core.c 2020-01-22 11:57:06 +01:00
twinaphex c8227c95dd (shader_gl_core) get rid of ConfigDeleter 2020-01-22 11:35:00 +01:00
twinaphex b8cd37aef7 (shader_vulkan.cpp) Get rid of ConfigDeleter 2020-01-22 11:29:40 +01:00
twinaphex f853632260 Move framebuffer generate_mips function to vulkan_common.c 2020-01-22 10:52:20 +01:00
twinaphex e9c73bd9a6 (Vulkan) Move more C code to vulkan_common.c 2020-01-22 10:41:38 +01:00
twinaphex ef27a660a7 (shader vulkan) Cleanups - moving C code out of the C++ file 2020-01-22 10:11:42 +01:00
twinaphex d4a1f2ef85 Cleanups 2020-01-20 05:06:51 +01:00
twinaphex 60faeffde0 (task_patch.c) Cleanups 2020-01-20 04:44:45 +01:00
twinaphex 481f31fe8f Turn task_patch.c into separately compiled file 2020-01-20 04:31:32 +01:00
twinaphex 8a989b65ee Cleanup 2020-01-19 13:19:25 +01:00
twinaphex 826b2245ec WndProcCommon - small optimization 2020-01-19 12:17:26 +01:00
twinaphex 61c6dc5a70 (msg_hash_pl.h) Buildfix 2020-01-19 07:49:27 +01:00
Twinaphex bfc46120bb Update CHANGES.md 2020-01-19 07:36:38 +01:00
Twinaphex b63387ca4f Merge pull request #10029 from DEX357/patch-51
New PL strings
2020-01-19 07:36:21 +01:00
Twinaphex 4e2f2e0458 Merge pull request #10031 from yoshisuga/tvos-fix-compiler-flag
tvOS: fix preprocessor flag; update version in Info.plist
2020-01-19 07:12:06 +01:00
Yoshi Sugawara 72a6e71e72 tvOS: fix preprocessor flag; update version in Info.plist 2020-01-18 20:01:41 -10:00
twinaphex 7748ac207c Split up blissbox code into separate file
tasks/task_autodetect_blissbox.c
2020-01-19 06:40:07 +01:00
twinaphex f852209040 Silence some unused variable warnings on some targets 2020-01-19 06:04:37 +01:00
twinaphex 32c62a7fe1 Get rid of header include 2020-01-19 05:00:35 +01:00
twinaphex 51d6b467d6 (Win32) Buildfix 2020-01-19 04:56:12 +01:00
twinaphex 638b65c828 (platform_switch.c) Cleanups 2020-01-19 04:23:07 +01:00
Twinaphex 4e7a8a6478 Update CHANGES.md 2020-01-19 04:16:41 +01:00
Twinaphex 17153b4aae Update CHANGES.md 2020-01-19 04:16:08 +01:00
Twinaphex ee95aa401d Merge pull request #10017 from Jamiras/cheevos_segacd_ext_mem
(cheevos) support for extended sega cd memory
2020-01-19 04:15:41 +01:00
Twinaphex ff81118ffc Update CHANGES.md 2020-01-19 04:15:25 +01:00
Twinaphex fdac368153 Merge pull request #10028 from ToadKing/emscripten-input-fix
emscripten: recreate input event listeners properly
2020-01-19 04:15:06 +01:00
Twinaphex 7f3bf75788 Update CHANGES.md 2020-01-19 04:14:47 +01:00
Twinaphex 506b524db0 Merge pull request #10027 from ToadKing/fix-mouse-capture
fix mouse capture hotkey not working
2020-01-19 04:14:23 +01:00
DEX357 21b8ae9e52 New PL strings 2020-01-18 20:29:49 +01:00
Toad King 14c67fde7f emscripten: recreate input event listeners properly
There's a new (undocumented -_-) API for removing event listeners in emscripten
now, so use that when recreating input listeners. Fixes mouse events breaking
when loading cores.
2020-01-18 12:51:21 -06:00
Toad King 7ca666a0e9 fix mouse capture hotkey not working
There's a normal binding for this set in your configs/`grab_mouse_toggle`, but
there's a second place where it's hardcoded to check the F11 key. Because F11
is the default key, both of these codepaths will run which immediately captures
and then uncaptures the mouse cursor, effectively breaking it.

Tested and this fixes the behavior on Linux and Emscripten
2020-01-18 12:49:08 -06:00
twinaphex c26c9483ec Cleanup WNDPROC functions 2020-01-18 11:34:50 +01:00
twinaphex a01e6652df Replace ZeroMemory with memset 2020-01-18 10:46:25 +01:00
twinaphex 57c00e7e26 Cleanup 2020-01-18 10:41:26 +01:00
twinaphex a67896ab2b Cleanup 2020-01-18 09:37:16 +01:00
twinaphex 142503d3b5 move win32_menu_loop and win32_browser to win32_common 2020-01-18 09:28:46 +01:00
twinaphex fe9022afe0 More CXX_BUILD fixes 2020-01-18 05:48:19 +01:00
twinaphex 64d3408188 (ffmpeg) Fixups 2020-01-18 05:40:11 +01:00
Twinaphex ffd9b1bede Merge pull request #10022 from Jamiras/http_transfer_file
add task_push_http_transfer_file
2020-01-18 04:59:14 +01:00
Twinaphex daf52cb32e Merge pull request #10023 from Jamiras/http_port
fix parsing of port in net_http_connection_done
2020-01-18 04:57:11 +01:00
Jamiras 92d572285e add missing header 2020-01-17 20:36:28 -07:00
Jamiras 59302e816c fix parsing of port in net_http_connection_done 2020-01-17 20:22:49 -07:00
Jamiras 7325147d83 add task_push_http_transfer_file 2020-01-17 19:48:40 -07:00
Twinaphex d6592b6b0a Merge pull request #10021 from Jamiras/cheevos_coro_fix
(cheevos) attempt to fix corrupted User-Agent string
2020-01-18 03:38:45 +01:00
Jamiras 3460214467 buffer doesn't survive across CORO boundary 2020-01-17 18:52:48 -07:00
Twinaphex 38b486eb6b Merge pull request #10019 from jdgleaver/extended-disk-control
Add disk control interface API extension
2020-01-17 18:09:15 +01:00
jdgleaver a2e1d622e1 Add disk control interface API extension 2020-01-17 16:34:05 +00:00
Guo Yunhe c6139b7285 Merge branch 'master' into translation-update-script 2020-01-17 17:14:11 +02:00
Twinaphex dbe0705880 Merge pull request #10014 from orbea/unused
qb: Improve the NOUNUSED checks.
2020-01-17 08:19:05 +01:00
Jamiras 4b471a6e01 support for extended sega cd memory 2020-01-16 19:44:14 -07:00
orbea a87192f8d0 qb: Improve the NOUNUSED checks. 2020-01-15 11:05:38 -08:00
Twinaphex f425d8dc8b Update CHANGES.md 2020-01-15 19:29:14 +01:00
Twinaphex 9e25601a56 Merge pull request #10012 from orbea/c99
qb: Improve the gnu99 compiler check.
2020-01-15 19:18:29 +01:00
Twinaphex fca5af7ac3 Merge pull request #10011 from orbea/qb-fix
qb: Don't set cc_works in test_compiler.
2020-01-15 19:18:20 +01:00
Twinaphex 1af0ede1a6 Merge pull request #10013 from jdgleaver/clean-playlists
(Playlist Management) Add 'Clean Playlist' option
2020-01-15 19:17:50 +01:00
jdgleaver e7733abc40 (Playlist Management) Add 'Clean Playlist' option 2020-01-15 18:00:51 +00:00
orbea 4171c93bff qb: Improve the gnu99 compiler check. 2020-01-15 09:55:27 -08:00
orbea dd2c9c911b qb: Don't set cc_works in test_compiler. 2020-01-15 09:23:49 -08:00
Twinaphex de052537ec Update AndroidManifest.xml 2020-01-15 17:18:05 +01:00
Twinaphex 68bc6b37ae Update AndroidManifest.xml 2020-01-15 17:17:43 +01:00
Twinaphex 548d1bae9e Update retroarch-sailfishos.spec 2020-01-15 17:12:35 +01:00
Twinaphex c89e557158 Update bar-descriptor.xml 2020-01-15 17:12:15 +01:00
Twinaphex 62dda5fdbf Update Info.plist 2020-01-15 17:09:26 +01:00
Twinaphex 22f24bd48f Update Info_Metal.plist 2020-01-15 17:09:10 +01:00
Twinaphex eeb0c65b6e Update Info.plist 2020-01-15 17:08:02 +01:00
Twinaphex b23fcf238b Update RetroArch_iOS9-Info.plist 2020-01-15 17:07:00 +01:00
Twinaphex 79698981ad Update version.dtd 2020-01-15 17:06:00 +01:00
Twinaphex ab4e3e8c75 Update version.all 2020-01-15 17:05:43 +01:00
Twinaphex 4bee4429aa Update CHANGES.md 2020-01-15 17:05:04 +01:00
Twinaphex 269ee7e672 Merge pull request #10010 from orbea/uname
Don't use uname -a.
2020-01-15 16:17:20 +01:00
orbea 8d6b70c22c Don't use uname -a. 2020-01-15 06:27:42 -08:00
twinaphex e786059506 frontend_ctx_null - add missing function pointer 2020-01-15 09:11:17 +01:00
twinaphex d48d4385d9 (Wayland) Silence warning 2020-01-15 08:48:13 +01:00
Twinaphex 1521be8acb Merge pull request #10007 from orbea/eval
qb: Move BUILD_DIRS to the correct function.
2020-01-15 08:21:05 +01:00
Twinaphex 76c97bbfad Merge pull request #10009 from orbea/qb-win
qb: Clean up.
2020-01-15 07:52:30 +01:00
Twinaphex 1b931dd410 Merge pull request #10008 from orbea/qt-fix
qb: Fix the qt configure check with older compilers.
2020-01-15 07:51:52 +01:00
orbea 77baa1c930 qb: Clean up. 2020-01-14 22:12:22 -08:00
orbea d41b7770c4 qb: Fix the qt configure check with older compilers. 2020-01-14 21:01:50 -08:00
Twinaphex 4f145a4f4f Update CHANGES.md 2020-01-15 05:29:50 +01:00
twinaphex fc7dc3cef7 (Camera) Add stub null camera driver 2020-01-15 05:20:01 +01:00
orbea 0dbfd721b3 qb: Move BUILD_DIRS to the correct function. 2020-01-14 20:06:09 -08:00
Twinaphex 243505b7cb Merge pull request #10006 from orbea/eval
qb: Remove potentially unsafe uses of eval.
2020-01-15 00:43:09 +01:00
orbea 04af898fe5 qb: Remove potentially unsafe uses of eval. 2020-01-14 14:30:28 -08:00
Twinaphex 9e1c5747f6 Merge pull request #10004 from orbea/exists
qb: Update the exists function.
2020-01-14 22:33:47 +01:00
twinaphex ab49806a5f add another ifdef 2020-01-14 22:09:00 +01:00
twinaphex e24934d5ea Improve compile time checks for determining if ffmpeg
version supports hardware decoder
2020-01-14 21:41:26 +01:00
Twinaphex 8ab162ffb1 Update CHANGES.md 2020-01-14 20:28:41 +01:00
Twinaphex 614e5bc44f Update CHANGES.md 2020-01-14 20:28:23 +01:00
twinaphex c1137ee3fa CoreAudio - Put g_interrupted behind IOS ifdefs 2020-01-14 20:22:06 +01:00
twinaphex 6cfe0ea77c (Audio) Update 2020-01-14 20:20:54 +01:00
orbea d89b7f93b2 qb: Update the exists function. 2020-01-14 10:20:35 -08:00
Twinaphex a6b114e423 Merge pull request #10000 from orbea/comp
qb: Allow multi argument CC and CXX.
2020-01-14 19:01:14 +01:00
Twinaphex 90f2ebeac1 Update CHANGES.md 2020-01-14 18:51:40 +01:00
Twinaphex 60cca4d9d2 Merge pull request #10003 from jdgleaver/disk-control-tweaks
Disk control interface improvements
2020-01-14 18:48:57 +01:00
hizzlekizzle 9b2752ff07 Merge pull request #9896 from m4tsa/update-libnx
fix breaking changes from the 3.0.0 libnx release
2020-01-14 08:32:47 -06:00
jdgleaver 16c4035e1c DISABLE_MENU=1 build fix 2020-01-14 14:04:34 +00:00
jdgleaver b5eba22aaf Disk control interface improvements 2020-01-14 12:30:08 +00:00
twinaphex 98b572d17a (FFmpeg) Add more ffmpeg_sw_decoder_threads options 2020-01-14 06:56:14 +01:00
Twinaphex 76c6e01534 Update CHANGES.md 2020-01-13 19:34:17 +01:00
Twinaphex 15b1281075 Update CHANGES.md 2020-01-13 19:34:05 +01:00
twinaphex e4ef930b47 (Android) Prevent crash when Android device is minimized and you go back to
the app
2020-01-13 19:21:24 +01:00
orbea 19e86a2b19 qb: Allow multi argument CC and CXX. 2020-01-13 09:41:14 -08:00
twinaphex 46b62b4a63 Update Makefile 2020-01-13 08:28:26 +01:00
twinaphex 7874d179da Simplify create_win32_process 2020-01-13 00:01:28 +01:00
twinaphex 341a4d50ea Buildfix 2020-01-12 23:56:08 +01:00
twinaphex b8328a9fdf (Accessibility) Cleanups 2020-01-12 22:04:31 +01:00
twinaphex 5b8411fe77 Silence implicit definition warnings 2020-01-12 21:46:28 +01:00
twinaphex 682d8f23e9 Strip out accessibility settings in menu if HAVE_ACCESSIBILITY
is not defined
2020-01-12 21:38:30 +01:00
twinaphex 34a9224334 Add accessibility.h 2020-01-12 21:34:31 +01:00
twinaphex 88ee7cbfa8 Add HAVE_ACCESSIBILITY switch 2020-01-12 21:33:00 +01:00
twinaphex 70e472e9e2 (menu widgets) Minor variable cleanups; shouldn't affect anything 2020-01-12 21:11:26 +01:00
twinaphex e9adb44c4a Avoid two warnings 2020-01-12 00:07:41 +01:00
twinaphex 81f8cae52a (RGUI) Prevent 'potential uninitialized reference to variables'
in load_custom_theme
2020-01-11 23:22:54 +01:00
twinaphex 36e67108fb Cleanups 2020-01-11 23:22:54 +01:00
Twinaphex f0bad7b091 Merge pull request #9988 from hasenbanck/fix-brackets
Fix brackets in buffer logic of the ffmpeg core.
2020-01-11 23:15:28 +01:00
Nils Hasenbanck 354c50039b Fix brackets in buffer logic of the ffmpeg core. 2020-01-11 15:01:21 +01:00
twinaphex b9c69e24a9 Cleanups 2020-01-11 05:06:38 +01:00
twinaphex 6319262b9c (RGUI) Prevent warning 2020-01-11 05:03:27 +01:00
twinaphex 78e02bf3dd Avoid warnings when HAVE_RUNAHEAD is not defined 2020-01-11 05:02:46 +01:00
twinaphex 3492ba5fd6 (libretro-common) Prevent warning 2020-01-11 04:48:33 +01:00
twinaphex f9ed6cbbfe Prevent another warning 2020-01-11 04:27:38 +01:00
twinaphex 98a573033d Prevent another warning 2020-01-11 04:26:31 +01:00
twinaphex 066089873b Prevent warning when HAVE_NETWORKING is not defined 2020-01-11 04:13:05 +01:00
twinaphex 8032ff6e19 (RCheevos) Cleanups 2020-01-11 03:07:54 +01:00
twinaphex 99d5dba6ae Add signal.h check for linux/unix 2020-01-10 15:19:29 +01:00
Twinaphex 0b0455975b Update CHANGES.md 2020-01-10 15:09:37 +01:00
Twinaphex 4b34894b59 Merge pull request #9978 from dev-0x7C6/master
Added additional CI test for passing sysroot flags via CC and CXX.
2020-01-10 15:07:20 +01:00
Twinaphex 311ee2db62 Update build.gradle 2020-01-10 15:06:00 +01:00
Twinaphex dfafcb0513 Update AndroidManifest.xml 2020-01-10 15:05:34 +01:00
Twinaphex 28520af599 Merge pull request #9979 from hasenbanck/better-buffer-logic
Fix the ffmpeg core packet buffer logic.
2020-01-10 15:04:31 +01:00
Twinaphex 207795abfd Merge pull request #9981 from jdgleaver/thumb-task-cleanup
Thumbnail downloader clean-ups
2020-01-10 15:04:11 +01:00
jdgleaver 495ad41741 Thumbnail downloader clean-ups 2020-01-10 11:08:36 +00:00
Nils Hasenbanck d591529e7a Fix the ffmpeg core packet buffer logic.
The logic for when to consider to decode a buffered packet did
had used a "magic number" when considering when the current packet
should be decoded when compared to the reference packet.
This change uses the media fps so that we never "overshoot" our target
and don't need to rely on a "magic number".
2020-01-10 08:23:18 +01:00
twinaphex 3a5dace583 (WiiU) fix build 2020-01-10 01:16:42 +01:00
Bartłomiej Burdukiewicz e2952586d1 Added additional CI test for passing sysroot flags via CC and CXX. 2020-01-09 23:14:50 +01:00
Woohyun Shin 5f456d067e Update korean translation 2020-01-09 15:00:42 +09:00
Mats A ef2ddf6912 fix breaking changes from the 3.0.0 libnx release 2020-01-06 13:12:00 +01:00
U-DESKTOP-LII42QK\andre 05c1f9c9aa Squashed commit of the following:
commit 830a69818c6a9496d950def3f68f59c7d3affcab
Author: celerizer <[email protected]>
Date:   Sun Jan 5 17:43:47 2020 -0600

    remove unneeded pointer

commit 034cc521004dd95816af69c9d02eec6b3db62d95
Author: celerizer <[email protected]>
Date:   Sun Jan 5 17:39:45 2020 -0600

    cleanup

commit 4317b9d04d3f86f215d9df8d41ac22a6a2705420
Author: celerizer <[email protected]>
Date:   Thu Jan 2 18:52:06 2020 -0600

    needs a lot of cleanup
2020-01-05 17:53:59 -06:00
Guo Yunhe 0c2fbd178d Synchronize translations 2020-01-04 21:56:20 +02:00
Guo Yunhe 85814137ea Use JSON as format to connect with translation tools 2020-01-04 21:56:20 +02:00
Guo Yunhe 34792a3493 Fix C98 build error 2020-01-04 21:56:20 +02:00
Guo Yunhe 148e15bca0 Detect duplicated keys 2020-01-04 21:56:20 +02:00
Guo Yunhe a3806194ee Handle exceptions in intl/template.py 2020-01-04 21:56:20 +02:00
Guo Yunhe c4c8778017 Rebase 2020-01-04 21:56:20 +02:00
Guo Yunhe ecd117d80d Add translation update script 2020-01-04 21:56:19 +02:00
hunterk b142a44fd0 keep bilinear filtering for low-res targets 2019-11-11 12:56:55 -06:00
hunterk ed4aae2d18 switch to nearest neighbor scaling as default 2019-11-11 12:48:13 -06:00
954 changed files with 54694 additions and 62213 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# These are supported funding model platforms
github: [twinaphex]
github: [libretro]
patreon: libretro
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
+7 -1
View File
@@ -32,6 +32,8 @@ matrix:
env: CXX_BUILD=1 CROSS_COMPILE=x86_64-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501"
- compiler: gcc
env: CC=gcc-8 CXX=g++-8
- compiler: gcc
env: CC="gcc-8 --sysroot=/" CXX="g++-8 --sysroot=/"
- compiler: gcc
env: C89_BUILD=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
@@ -103,9 +105,13 @@ matrix:
- cd pkg/android/phoenix
- ./gradlew assembleNormalRelease
jobs:
allow_failure:
- os: osx
before_install:
- |
if [ "$CC" = gcc-8 ]; then
if [[ "$CC" =~ ^gcc-8.* ]]; then
# Install a more recent gcc than the default
sudo apt-get install -y g++-8
elif [ "$CC" = clang-6.0 ]; then
+2 -2
View File
@@ -42,7 +42,7 @@
"core_info.h": "c",
"thread": "c",
"xlocale": "c",
"menu_widgets.h": "c",
"gfx_widgets.h": "c",
"message_queue.h": "c",
"task_queue.h": "c",
"fifo_queue.h": "c",
@@ -52,7 +52,7 @@
"ozone_display.h": "c",
"verbosity.h": "c",
"retroarch.h": "c",
"menu_animation.h": "c",
"gfx_animation.h": "c",
"netplay.h": "c",
"scaler.h": "c",
"deque": "c",
+100
View File
@@ -1,4 +1,102 @@
# Future
- AUTOCONFIG: Use correct port index in input device configured/disconnected notifications
- CHD: Fixes a crash caused by ignoring the return value from one of the CHD library functions.
- MENU: Prevent font-related segfaults when using extremely small scales/window sizes
- MENU: Fix 'gfx_display_draw_texture_slice()'
- MENU/FONT: Enable correct vertical alignment of text (+ font rendering fixes)
- MENU/OZONE: Update timedate style options for Last Played sublabel metadata
- MENU/OZONE: Hide 'Menu Color Theme' setting when 'Use preferred system color theme' is enabled
- MENU/OZONE: Fix thumbnail switching via 'scan' button functionality
- MENU/OZONE: Prevent glitches when rendering Ozone's selection cursor
- MENU/XMB: Fix thumbnail switching via 'scan' button functionality
- ODROID GO ADVANCE: Add DRM HW context driver
- PSL1GHT: Initial port
- SCANNER: Prevent redundant playlist entries when handling M3U content
- SCANNER/ANDROID: Fix content scanner being unable to identify certain games from CHD images (raw data sector/subcode)
# 1.8.5
- 3DS: Keep the bottom screen hidden on sleep/wakeup. When the 3DS wakes back up after being closed, the bottom screen needs to be reinitialized. Adding the condition here will cause the screen to be turned on or off based on the state of ctr_bottom_screen_enabled, as you'd expect
- ANDROID/CHROMEBOOK/CRASH: Fix Chromebook crashes (on x86 x64) when touching the screen
- BUGFIX: Prevent double input when using 'return' key (hardware) to close on-screen keyboard
- BUGFIX: Fix mouse capture hotkey not working
- BUGFIX: Avoid overflow when calculating multiplying performance counter
- BUGFIX: Retroarch overlay displaying "Game remap file loaded." on the overlay instead of "Core remap file loaded." when only a core remap file is present
- CHEEVOS/BUGFIX: Achievement triggers could cause Retroarch to Crash
- CHEEVOS: Don't block Sameboy core because it only exposes some memory
- CHEEVOS: Support for extended Sega CD memory
- CHEEVOS: Show RetroAchievements Hash in content information list
- CHEEVOS: If the core says it's exposing SYSTEM_RAM, give it the benefit of the doubt
- CHEEVOS: RetroAchievements rich presence for RA.org website/Discord
- CHEEVOS: Reset token when username or password changes
- CHEEVOS: Display measured progress on locked achievements
- CHEEVOS: Queue multiple popups
- CHEEVOS: Add delay retries to leaderboard submits
- CHEEVOS: Prevent buffer overflow when encountering an unknown macro
- CORE UPDATER: Prevent hang when fetching core list if HTTP transfer fails
- DISK CONTROL: Add disk labels to 'disk inserted' notifications
- EMSCRIPTEN: Recreate input event listeners properly
- FFMPEG CORE: Fix crash on seeking when using HW decoding in some cases
- LIBRETRO: Add disk control interface API extension
- LINUX: Avoid possible crash when running retroarch at startup
- LINUX/GLX: Fix threaded video crashes/instability because of GLX OML sync callbacks
- LOCALIZATION: Update French translation
- LOCALIZATION: Update Korean translation
- LOCALIZATION: Update Polish translation
- LOCALIZATION: Update Spanish translation
- LOCALIZATION: Update Portuguese Brazilian translation
- MENU: Add Menu Scroll Acceleration option
- MENU: Automatically select currently checked item when opening drop-down lists
- MENU: Fix smooth (vertical) line ticker scroll speed
- MENU: Don't flush on override/remap messages
- MENU/DATETIME: Adds some new timedate styles that follow the DD/MM/YYYY format, found in several European countries
- MENU/DATETIME: Modifies the existing translation files in order to accommodate the new options that are now available
- MENU/DATETIME: Reorders the timedate view options based on a decreasing order of the quantity of information displayed, so that they are more convenient to switch around and easily categorized
- MENU/BUGFIX: Fix bug - if you were in XMB and you would set menu driver to RGUI, you could no longer go to the left or right tab
- MENU/MATERIALUI: Add option to remove navigation bar
- MENU/OZONE: Add DPI-based scaling
- MENU/OZONE: Add rudimentary pointer support
- MENU/OZONE: Add 'Nord' and 'Gruvbox Dark' themes
- MENU/OZONE/POINTER: Pointer can be used to switch between sidebar and entries list
- MENU/OZONE/POINTER: Pointer can be used to select sidebar and entries list items
- MENU/OZONE/POINTER: Both sidebar and entries list can be scrolled by dragging
- MENU/OZONE/POINTER: Clicking/pressing the header or footer produces a 'cancel' action
- MENU/OZONE/POINTER: Cursor focus follows mouse pointer from sidebar to entries list (and vice versa)
- MENU/OZONE/POINTER: In entries list, item under cursor is automatically selected (with some fudging to ensure this doesn't break mouse wheel scrolling)
- MENU/OZONE/POINTER: In sidebar, item under cursor is not automatically selected (this is too jarring)
- MENU/RGUI: Add 'Flux' theme
- MENU/XMB: New color themes 'Cube Purple', 'Family Red', etc
- NETPLAY/MENU/BUGFIX: Fix Netplay Stateless Mode doesn't save. Affects other netplay settings which can be overridden by commandline option
- ODROID GO ADVANCE: Rotation support
- NETPLAY/ROOMS/BUGFIX: Prevent out-of-bounds array indexing when displaying/selecting netplay rooms in menus
- SCANNER: Add 'Arcade DAT Filter' Option
- SCANNER: Add scanning Korea and Asia PS1 discs
- SCANNER: Add support for scanning PSP Korean
- VIDEO: Set hardware 'Bilinear filtering' off by default
- VIDEO/WIDGETS: Widgets are now menu-independent
- VIDEO/WIDGETS: Allow notifications to use full screen width when not displaying menu
- VIDEO/WIDGETS: DPI-based scaling
- VIDEO/WIDGETS: Fix volume widget scaling
- VIDEO/WIDGETS: Add independent widget scale override settings for fullscreen/windowed modes
- VIDEO/WIDGETS/BUGFIX: Prevent improper display of (old style) OSD text when widgets are enabled
- VIDEO/WIDGETS/THREADED/BUGFIX: Fix issue - corruption of menu widgets when running some cores (e.g. VICE) with threaded video enabled
- WIFI/CONNMANCTL: Display more characters from SSID
# 1.8.4
- ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app
- CAMERA/BUGFIX: Fix crash when a core requires the camera driver and the platform only has a null driver. This would crash mgba on Wii for example
- DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state
- DISK CONTROL: Current Disk Index is only shown when the current disk has been ejected
- DISK CONTROL: The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem - i.e. bypassing the m3u playlist disk index interface - automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty)
- DISK CONTROL: The Current Disk Index may now be set more easily via a drop-down list.
- DISK CONTROL: Selecting Eject Disk automatically moves the menu selection to the Current Disk Index entry
- DISK CONTROL: Selecting an index via the Current Disk Index drop-down list automatically moves the menu selection back to Insert Disk
- DISK CONTROL: The Disk Control entry sublabels have been changed for greater clarity
- DISK CONTROL: All of the horrendous notification spam has been removed. Notifications are now only shown in the event of an error, or when the menu itself does not provide sufficient visual feedback (note that using hotkeys to swap disks still produces the old style notifications, since this is typically only done while content is running - i.e. no menu). The duration of disk-related info notifications has also been reduced to a more sane level.
- DISK CONTROL: A new Resume content after changing disks option has been added under Settings > User Interface. When enabled (default setting), content is resumed automatically after selecting either Insert Disk or Load New Disk (when disabled, the menu remains open, obviously...)
- DISK CONTROL/BUGFIX: The Disk Control menu now has the correct title
- DISK CONTROL/BUGFIX: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu)
- LIBNX/SWITCH: Updated libnx integration to v3.0.0. This also cherry-picks libnx commit 583d6bb92dcbb33b6bb4a0fa1a9df6e3725d6ef6, which should fix the requirement having to turn rumble off and on in the system settings once per reboot
- PLAYLISTS: Add 'Clean Playlist' option
# 1.8.3
- ANDROID/BUGFIX: Fix 'Install or Restore Core' regression
@@ -8,6 +106,7 @@
- BUGFIX/CRASH/CORE UPDATER: Fix potential double free error
- BUGFIX/CRASH/OPENGL/WINDOWS: Fix regression in 1.8.2 that would cause GL-based cores to fail because it would try to erroneously load libGLESv2.dll instead of OpenGL32.dll (cores affected: VitaQuake 2/3/Dhewm3, possibly more)
- BUGFIX/MENU/DESKTOP UI: Show desktop menu on startup does not launch Qt UI on Linux
- BUGFIX: Entries in the Playlist Thumbnails Updater list were displaying improper sublabels. I have no idea when this broke... The issue is now fixed
- CHEEVOS: Don't disable achievement when AddAddress generates an out-of-range address
- CHEEVOS: Don't reset triggers/leaderboards that failed to load
- CHEEVOS: Don't count unsupported achievements as unlocked
@@ -32,6 +131,7 @@
- NETPLAY/RELAY: Overall stability has improved. Fixed a memory leak that would cause the relay server to become unresponsive after some time.
- NETPLAY/RELAY: Fixed critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it.
- SWITCH/LIBNX/BUGFIX: Fix onscreen keyboard input regression
- THUMBNAIL UPDATER: When waiting for individual thumbnail file http transfers to complete, the task status checking is more accurate. This uses the same method as the new core updater - we now wait until the task is 'really' complete, instead of relying on the (slightly nebulous) 'task finished' state
- UWP: Add ANGLE support
- UWP: Wire up get_metrics to the fake context of D3D9/10/11/12 driver, enabling proper scaling and mouse/touch gestures
- VITA: Re-add Online Updater
+16 -27
View File
@@ -45,6 +45,8 @@ else
DEF_FLAGS += -ffast-math
endif
DEF_FLAGS += -Wall
ifneq ($(findstring BSD,$(OS)),)
DEF_FLAGS += -DBSD
LDFLAGS += -L/usr/local/lib
@@ -68,7 +70,7 @@ endif
include Makefile.common
ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang"),1)
DEFINES += -Wno-invalid-source-encoding -Wno-incompatible-ms-struct
DEF_FLAGS += -Wno-invalid-source-encoding -Wno-incompatible-ms-struct
endif
ifeq ($(shell $(CC) -v 2>&1 | grep -c "tcc"),1)
@@ -80,7 +82,7 @@ endif
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
ifeq ($(MISSING_DECLS), 1)
DEFINES += -Werror=missing-declarations
DEF_FLAGS += -Werror=missing-declarations
endif
ifeq ($(HAVE_DYLIB), 1)
@@ -106,10 +108,20 @@ ifneq ($(findstring Win32,$(OS)),)
LDFLAGS += -mwindows
endif
DEF_FLAGS += -Wall $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb
ifneq ($(CXX_BUILD), 1)
ifneq ($(C89_BUILD),)
CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long
else ifeq ($(HAVE_C99), 1)
CFLAGS += $(C99_CFLAGS)
endif
CFLAGS += -D_GNU_SOURCE
endif
DEF_FLAGS += $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS
CXXFLAGS += $(DEF_FLAGS) -D__STDC_CONSTANT_MACROS
OBJCFLAGS := $(CFLAGS) -D__STDC_CONSTANT_MACROS
ifeq ($(HAVE_CXX), 1)
@@ -127,29 +139,6 @@ else
LINK = $(CC)
endif
ifneq ($(CXX_BUILD), 1)
ifneq ($(GNU90_BUILD), 1)
ifneq ($(findstring icc,$(CC)),)
CFLAGS += -std=c99 -D_GNU_SOURCE
else
CFLAGS += -std=gnu99 -D_GNU_SOURCE
endif
endif
ifneq ($(C89_BUILD),)
CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long
endif
endif
ifeq ($(NOUNUSED), yes)
CFLAGS += -Wno-unused-result
CXXFLAGS += -Wno-unused-result
endif
ifeq ($(NOUNUSED_VARIABLE), yes)
CFLAGS += -Wno-unused-variable
CXXFLAGS += -Wno-unused-variable
endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
ifneq ($(X86),)
+121 -96
View File
@@ -7,6 +7,18 @@ ifeq ($(HAVE_STACK_USAGE), 1)
DEF_FLAGS += -fstack-usage
endif
ifeq ($(HAVE_NOUNUSED), 1)
DEF_FLAGS += $(NOUNUSED_CFLAGS)
endif
ifeq ($(HAVE_NOUNUSED_VARIABLE), 1)
DEF_FLAGS += $(NOUNUSED_VARIABLE_CFLAGS)
endif
ifeq ($(HAVE_CXX11), 1)
CXXFLAGS += $(CXX11_CFLAGS)
endif
ifeq ($(HAVE_GL_CONTEXT),)
HAVE_GL_CONTEXT = 0
HAVE_GL_MODERN = 0
@@ -158,6 +170,7 @@ OBJ += frontend/frontend_driver.o \
intl/msg_hash_us.o \
$(LIBRETRO_COMM_DIR)/queues/task_queue.o \
tasks/task_content.o \
tasks/task_patch.o \
tasks/task_save.o \
tasks/task_file_transfer.o \
tasks/task_image.o \
@@ -209,8 +222,11 @@ OBJ += \
input/input_mapper.o \
led/led_driver.o \
gfx/video_coord_array.o \
gfx/video_display_server.o \
gfx/video_crt_switch.o \
gfx/gfx_display.o \
gfx/gfx_animation.o \
gfx/gfx_thumbnail_path.o \
gfx/gfx_thumbnail.o \
configuration.o \
$(LIBRETRO_COMM_DIR)/dynamic/dylib.o \
cores/dynamic_dummy.o \
@@ -220,7 +236,6 @@ OBJ += \
tasks/task_autodetect.o \
input/input_autodetect_builtin.o \
input/input_keymaps.o \
input/input_remapping.o \
$(LIBRETRO_COMM_DIR)/queues/fifo_queue.o \
$(LIBRETRO_COMM_DIR)/compat/compat_fnmatch.o \
$(LIBRETRO_COMM_DIR)/compat/compat_posix_string.o \
@@ -229,6 +244,7 @@ OBJ += \
$(LIBRETRO_COMM_DIR)/file/config_file.o \
$(LIBRETRO_COMM_DIR)/file/config_file_userdata.o \
runtime_file.o \
disk_index_file.o \
tasks/task_screenshot.o \
tasks/task_powerstate.o \
$(LIBRETRO_COMM_DIR)/gfx/scaler/scaler.o \
@@ -247,7 +263,18 @@ OBJ += \
performance_counters.o \
verbosity.o \
$(LIBRETRO_COMM_DIR)/playlists/label_sanitization.o \
manual_content_scan.o
manual_content_scan.o \
disk_control_interface.o
ifeq ($(HAVE_CONFIGFILE), 1)
DEFINES += -DHAVE_CONFIGFILE
OBJ += input/input_remapping.o
endif
ifeq ($(HAVE_BLISSBOX), 1)
DEFINES += -DHAVE_BLISSBOX
OBJ += tasks/task_autodetect_blissbox.o
endif
ifeq ($(HAVE_AUDIOMIXER), 1)
DEFINES += -DHAVE_AUDIOMIXER
@@ -258,8 +285,6 @@ endif
ifeq ($(HAVE_RUNAHEAD), 1)
DEFINES += -DHAVE_RUNAHEAD
OBJ += runahead/mem_util.o \
runahead/mylist.o
endif
ifeq ($(HAVE_CC_RESAMPLER), 1)
@@ -401,6 +426,8 @@ ifeq ($(HAVE_QT), 1)
ifneq ($(findstring Linux,$(OS)),)
DEF_FLAGS += -fPIC
else ifneq ($(findstring BSD,$(OS)),)
DEF_FLAGS += -fPIC
endif
endif
@@ -734,8 +761,8 @@ ifeq ($(HAVE_MENU), 1)
DEFINES += -DHAVE_MENU
HAVE_MENU_COMMON = 1
ifeq ($(HAVE_MENU_WIDGETS), 1)
DEFINES += -DHAVE_MENU_WIDGETS
ifeq ($(HAVE_GFX_WIDGETS), 1)
DEFINES += -DHAVE_GFX_WIDGETS
endif
ifeq ($(HAVE_RGUI), 1)
@@ -791,7 +818,6 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/widgets/menu_filebrowser.o \
menu/widgets/menu_dialog.o \
menu/widgets/menu_input_bind_dialog.o \
menu/widgets/menu_osk.o \
menu/menu_cbs.o \
menu/cbs/menu_cbs_ok.o \
menu/cbs/menu_cbs_cancel.o \
@@ -810,15 +836,17 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/cbs/menu_cbs_up.o \
menu/cbs/menu_cbs_down.o \
menu/cbs/menu_cbs_contentlist_switch.o \
menu/menu_displaylist.o \
menu/menu_animation.o \
menu/drivers/menu_generic.o \
menu/menu_thumbnail_path.o \
menu/menu_thumbnail.o
menu/menu_displaylist.o
endif
ifeq ($(HAVE_MENU_WIDGETS), 1)
OBJ += menu/widgets/menu_widgets.o
endif
OBJ += input/input_osk.o
ifeq ($(HAVE_GFX_WIDGETS), 1)
OBJ += gfx/gfx_widgets.o \
gfx/widgets/gfx_widget_screenshot.o \
gfx/widgets/gfx_widget_volume.o \
gfx/widgets/gfx_widget_generic_message.o \
gfx/widgets/gfx_widget_libretro_message.o
endif
ifeq ($(HAVE_OVERLAY), 1)
@@ -880,9 +908,7 @@ ifeq ($(HAVE_VITA2D), 1)
$(DEPS_DIR)/libvita2d/shader/texture_tint_v_gxp.o \
$(DEPS_DIR)/libvita2d/shader/texture_tint_f_gxp.o
ifeq ($(HAVE_MENU_COMMON),1)
OBJ += menu/drivers_display/menu_display_vita2d.o
endif
OBJ += gfx/drivers_display/gfx_display_vita2d.o
OBJ += gfx/drivers/vita2d_gfx.o \
gfx/drivers_font/vita2d_font.o
@@ -892,7 +918,7 @@ endif
ifeq ($(TARGET), retroarch_3ds)
OBJ += gfx/drivers/ctr_gfx.o \
menu/drivers_display/menu_display_ctr.o \
gfx/drivers_display/gfx_display_ctr.o \
input/drivers/ctr_input.o \
input/drivers_joypad/ctr_joypad.o
endif
@@ -913,7 +939,7 @@ endif
ifeq ($(TARGET), retroarch_wiiu)
OBJ += gfx/drivers/gx2_gfx.o \
gfx/drivers_font/wiiu_font.o \
menu/drivers_display/menu_display_wiiu.o \
gfx/drivers_display/gfx_display_wiiu.o \
input/drivers/wiiu_input.o \
input/drivers_joypad/wiiu_joypad.o \
input/drivers_joypad/wiiu/wpad_driver.o \
@@ -938,7 +964,7 @@ endif
ifeq ($(TARGET), retroarch_switch)
ifeq ($(HAVE_LIBNX), 1)
OBJ += menu/drivers_display/menu_display_switch.o \
OBJ += gfx/drivers_display/gfx_display_switch.o \
gfx/drivers/switch_nx_gfx.o \
audio/drivers/switch_libnx_audren_audio.o \
audio/drivers/switch_libnx_audren_thread_audio.o
@@ -1094,7 +1120,12 @@ OBJ += gfx/drivers_context/gfx_null_ctx.o
ifeq ($(HAVE_KMS), 1)
HAVE_AND_WILL_USE_DRM = 1
ifeq ($(HAVE_ODROIDGO2), 1)
OBJ += gfx/drivers_context/drm_go2_ctx.o
else
OBJ += gfx/drivers_context/drm_ctx.o
endif
DEF_FLAGS += $(GBM_CFLAGS) $(DRM_CFLAGS)
LIBS += $(GBM_LIBS) $(DRM_LIBS)
endif
@@ -1104,10 +1135,6 @@ ifeq ($(HAVE_CACA), 1)
OBJ += gfx/drivers/caca_gfx.o gfx/drivers_font/caca_font.o
LIBS += $(CACA_LIBS)
DEF_FLAGS += $(CACA_CFLAGS)
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_caca.o
endif
endif
ifeq ($(HAVE_SIXEL), 1)
@@ -1117,10 +1144,6 @@ ifeq ($(HAVE_SIXEL), 1)
gfx/drivers_context/sixel_ctx.o
LIBS += $(SIXEL_LIBS)
DEF_FLAGS += $(SIXEL_CFLAGS)
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_sixel.o
endif
endif
ifeq ($(HAVE_NETWORK_VIDEO), 1)
@@ -1152,7 +1175,7 @@ ifeq ($(HAVE_VITAGL), 1)
OBJ += gfx/drivers/gl1.o \
gfx/drivers_font/gl1_raster_font.o \
gfx/drivers_context/vita_ctx.o \
menu/drivers_display/menu_display_gl1.o
gfx/drivers_display/gfx_display_gl1.o
endif
ifeq ($(HAVE_GL_CONTEXT), 1)
@@ -1160,7 +1183,8 @@ ifeq ($(HAVE_GL_CONTEXT), 1)
DEFINES += -DHAVE_OPENGL
OBJ += gfx/drivers/gl.o \
$(LIBRETRO_COMM_DIR)/gfx/gl_capabilities.o \
gfx/drivers_font/gl_raster_font.o
gfx/drivers_font/gl_raster_font.o \
gfx/drivers_display/gfx_display_gl.o
endif
OBJ += $(LIBRETRO_COMM_DIR)/glsym/rglgen.o
@@ -1168,17 +1192,8 @@ ifeq ($(HAVE_GL_CONTEXT), 1)
ifeq ($(HAVE_OPENGL1), 1)
DEFINES += -DHAVE_OPENGL1
OBJ += gfx/drivers/gl1.o \
gfx/drivers_font/gl1_raster_font.o
endif
ifeq ($(HAVE_MENU_COMMON), 1)
ifeq ($(HAVE_GL_MODERN), 1)
OBJ += menu/drivers_display/menu_display_gl.o
endif
ifeq ($(HAVE_OPENGL1), 1)
OBJ += menu/drivers_display/menu_display_gl1.o
endif
gfx/drivers_font/gl1_raster_font.o \
gfx/drivers_display/gfx_display_gl1.o
endif
ifeq ($(HAVE_VIDEOCORE), 1)
@@ -1226,11 +1241,8 @@ ifeq ($(HAVE_GL_CONTEXT), 1)
gfx/common/metal/MenuDisplay.o \
gfx/common/metal_common.o \
gfx/drivers/metal.o \
gfx/drivers_font/metal_raster_font.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_metal.o
endif
gfx/drivers_font/metal_raster_font.o \
gfx/drivers_display/gfx_display_metal.o
endif
ifeq ($(HAVE_MPV), 1)
@@ -1326,7 +1338,8 @@ ifeq ($(HAVE_VULKAN), 1)
OBJ += gfx/drivers/vulkan.o \
gfx/common/vulkan_common.o \
$(LIBRETRO_COMM_DIR)/vulkan/vulkan_symbol_wrapper.o \
gfx/drivers_font/vulkan_raster_font.o
gfx/drivers_font/vulkan_raster_font.o \
gfx/drivers_display/gfx_display_vulkan.o
ifeq ($(HAVE_SLANG), 1)
OBJ += gfx/drivers_shader/shader_vulkan.o
@@ -1335,9 +1348,6 @@ ifeq ($(HAVE_VULKAN), 1)
ifeq ($(HAVE_VULKAN_DISPLAY), 1)
OBJ += gfx/drivers_context/khr_display_ctx.o
endif
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_vulkan.o
endif
NEED_CXX_LINKER = 1
DEFINES += -DHAVE_VULKAN
INCLUDE_DIRS += -Igfx/include
@@ -1346,10 +1356,8 @@ endif
ifeq ($(HAVE_OPENGL_CORE), 1)
OBJ += gfx/drivers/gl_core.o \
gfx/drivers_font/gl_core_raster_font.o \
gfx/drivers_shader/shader_gl_core.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_gl_core.o
endif
gfx/drivers_shader/shader_gl_core.o \
gfx/drivers_display/gfx_display_gl_core.o
DEFINES += -DHAVE_OPENGL_CORE
NEED_CXX_LINKER = 1
@@ -1416,10 +1424,8 @@ ifeq ($(HAVE_D3D10), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d10.o \
gfx/common/d3d10_common.o \
gfx/drivers_font/d3d10_font.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d10.o
endif
gfx/drivers_font/d3d10_font.o \
gfx/drivers_display/gfx_display_d3d10.o
DEFINES += -DHAVE_D3D10
endif
@@ -1427,10 +1433,8 @@ ifeq ($(HAVE_D3D11), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d11.o \
gfx/common/d3d11_common.o \
gfx/drivers_font/d3d11_font.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d11.o
endif
gfx/drivers_font/d3d11_font.o \
gfx/drivers_display/gfx_display_d3d11.o
DEFINES += -DHAVE_D3D11
endif
@@ -1438,10 +1442,8 @@ ifeq ($(HAVE_D3D12), 1)
HAVE_D3D_COMMON = 1
OBJ += gfx/drivers/d3d12.o \
gfx/common/d3d12_common.o \
gfx/drivers_font/d3d12_font.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d12.o
endif
gfx/drivers_font/d3d12_font.o \
gfx/drivers_display/gfx_display_d3d12.o
DEFINES += -DHAVE_D3D12
endif
@@ -1479,20 +1481,14 @@ ifeq ($(HAVE_D3D8), 1)
DEFINES += -DHAVE_D3D8
OBJ += gfx/drivers/d3d8.o
OBJ += gfx/common/d3d8_common.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d8.o
endif
OBJ += gfx/drivers_display/gfx_display_d3d8.o
endif
ifeq ($(HAVE_D3D9), 1)
DEFINES += -DHAVE_D3D9
OBJ += gfx/drivers/d3d9.o
OBJ += gfx/common/d3d9_common.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d9.o
endif
OBJ += gfx/drivers_display/gfx_display_d3d9.o
endif
ifeq ($(HAVE_D3D_COMMON), 1)
@@ -1528,8 +1524,9 @@ ifeq ($(HAVE_SHADERS_COMMON), 1)
OBJ += gfx/video_shader_parse.o
endif
ifeq ($(HAVE_GLSLANG), 1)
DEFINES += -DHAVE_GLSLANG
ifeq ($(HAVE_BUILTINGLSLANG), 1)
NEED_CXX_LINKER = 1
HAVE_GLSLANG_COMMON = 1
ifneq ($(findstring Win32,$(OS)),)
GLSLANG_PLATFORM := Windows
@@ -1537,17 +1534,17 @@ ifeq ($(HAVE_GLSLANG), 1)
GLSLANG_PLATFORM := Unix
endif
DEFINES += -DHAVE_BUILTINGLSLANG
INCLUDE_DIRS += \
-I$(DEPS_DIR)/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM) \
-I$(DEPS_DIR)/glslang/glslang/OGLCompilersDLL \
-I$(DEPS_DIR)/glslang/glslang \
-I$(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent \
-I$(DEPS_DIR)/glslang/glslang/glslang/Public \
-I$(DEPS_DIR)/glslang/glslang/SPIRV \
-I$(DEPS_DIR)/glslang
-I$(DEPS_DIR)/glslang/glslang/SPIRV
GLSLANG_SOURCES := \
$(wildcard $(DEPS_DIR)/glslang/*.cpp) \
gfx/drivers_shader/glslang.cpp \
$(wildcard $(DEPS_DIR)/glslang/glslang/SPIRV/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/GenericCodeGen/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/OGLCompilersDLL/*.cpp) \
@@ -1559,7 +1556,22 @@ ifeq ($(HAVE_GLSLANG), 1)
DEFINES += -DENABLE_HLSL
GLSLANG_SOURCES += $(wildcard $(DEPS_DIR)/glslang/glslang/hlsl/*.cpp)
endif
else ifeq ($(HAVE_GLSLANG),1)
HAVE_GLSLANG_COMMON = 1
GLSLANG_SOURCES := gfx/drivers_shader/glslang.cpp
# The order of these libs are somewhat specific
LIBS += $(GLSLANG_LIBS) \
$(GLSLANG_OSDEPENDENT_LIBS) \
$(GLSLANG_OGLCOMPILER_LIBS) \
$(GLSLANG_HLSL_LIBS) \
$(GLSLANG_SPIRV_LIBS) \
$(GLSLANG_SPIRV_TOOLS_OPT_LIBS) \
$(GLSLANG_SPIRV_TOOLS_LIBS)
endif
ifeq ($(HAVE_GLSLANG_COMMON), 1)
DEFINES += -DHAVE_GLSLANG
OBJ += $(GLSLANG_SOURCES:.cpp=.o)
endif
@@ -1728,7 +1740,8 @@ endif
OBJ += $(LIBRETRO_COMM_DIR)/formats/bmp/rbmp_encode.o \
$(LIBRETRO_COMM_DIR)/formats/json/jsonsax.o \
$(LIBRETRO_COMM_DIR)/formats/json/jsonsax_full.o \
$(LIBRETRO_COMM_DIR)/formats/image_transfer.o
$(LIBRETRO_COMM_DIR)/formats/image_transfer.o \
$(LIBRETRO_COMM_DIR)/formats/m3u/m3u_file.o
# Gong embedded core
ifeq ($(HAVE_GONG),1)
@@ -1748,6 +1761,17 @@ ifeq ($(HAVE_V4L2),1)
LIBS += $(V4L2_LIBS)
endif
# Accessibility
ifeq ($(HAVE_ACCESSIBILITY), 1)
DEFINES += -DHAVE_ACCESSIBILITY
ifneq ($(findstring Win32,$(OS)),)
LIBS += -lsapi
endif
endif
# Things that depend on network availability
ifeq ($(HAVE_NETWORKING), 1)
@@ -1763,10 +1787,11 @@ ifeq ($(HAVE_NETWORKING), 1)
tasks/task_netplay_lan_scan.o \
tasks/task_netplay_nat_traversal.o \
tasks/task_wifi.o \
tasks/task_pl_thumbnail_download.o \
tasks/task_netplay_find_content.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += tasks/task_pl_thumbnail_download.o \
OBJ += \
tasks/task_core_updater.o \
menu/menu_networking.o
endif
@@ -1791,7 +1816,6 @@ ifeq ($(HAVE_NETWORKING), 1)
# Netplay
DEFINES += -DHAVE_NETWORK_CMD
OBJ += network/netplay/netplay_delta.o \
network/netplay/netplay_frontend.o \
network/netplay/netplay_handshake.o \
network/netplay/netplay_init.o \
network/netplay/netplay_io.o \
@@ -1930,9 +1954,7 @@ endif
ifneq ($(findstring FPGA,$(OS)),)
OBJ += gfx/drivers/fpga_gfx.o \
gfx/drivers_context/fpga_ctx.o \
gfx/drivers_font/fpga_font.o \
menu/drivers_display/menu_display_fpga.o
gfx/drivers_context/fpga_ctx.o
endif
ifneq ($(findstring Win32,$(OS)),)
@@ -1944,11 +1966,9 @@ ifneq ($(findstring Win32,$(OS)),)
ifeq ($(HAVE_GDI), 1)
OBJ += gfx/drivers/gdi_gfx.o \
gfx/drivers_context/gdi_ctx.o \
gfx/drivers_font/gdi_font.o
gfx/drivers_font/gdi_font.o \
gfx/drivers_display/gfx_display_gdi.o
LIBS += -lmsimg32
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_gdi.o
endif
endif
LIBS += -lhid -lsetupapi
endif
@@ -1998,10 +2018,6 @@ ifneq ($(findstring DOS,$(OS)),)
input/drivers/dos_input.o \
input/drivers_joypad/dos_joypad.o \
frontend/drivers/platform_dos.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_vga.o
endif
endif
ifeq ($(HAVE_STATIC_VIDEO_FILTERS), 1)
@@ -2108,4 +2124,13 @@ endif
ifeq ($(HAVE_SEGAM), 1)
DEFINES += -DHAVE_SEGAM
endif
ifeq ($(HAVE_ODROIDGO2), 1)
DEFINES += -DHAVE_ODROIDGO2
LIBS += -lrga -lpng -lz
INCLUDE_DIRS += -I$(DEPS_DIR)/libgo2/include
OBJ += $(DEPS_DIR)/libgo2/src/display.o \
$(DEPS_DIR)/libgo2/src/queue.o \
gfx/drivers/oga_gfx.o
endif
##################################
+1 -1
View File
@@ -50,7 +50,7 @@ endif
DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA
#DEFINES += -DHAVE_NETWORKING -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_SOCKET_LEGACY -DHAVE_THREADS
#-DHAVE_SSL -DHAVE_BUILTINMBEDTLS -DMBEDTLS_SSL_DEBUG_ALL
+2 -1
View File
@@ -32,7 +32,7 @@ HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_MENU = 1
HAVE_MENU_COMMON = 1
HAVE_MENU_WIDGETS = 1
HAVE_GFX_WIDGETS = 1
HAVE_MMAP = 1
HAVE_NETWORKING = 1
HAVE_OPENDINGUX_FBDEV = 1
@@ -61,6 +61,7 @@ HAVE_UDEV = 1
HAVE_VIDEO_LAYOUT = 1
HAVE_XMB = 1
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
OS = Linux
TARGET = retroarch
+2 -1
View File
@@ -20,7 +20,7 @@ HAVE_RJPEG = 0
HAVE_RPNG = 1
HAVE_EMSCRIPTEN = 1
HAVE_MENU = 1
HAVE_MENU_WIDGETS = 1
HAVE_GFX_WIDGETS = 1
HAVE_RGUI = 1
HAVE_SDL = 0
HAVE_SDL2 = 0
@@ -29,6 +29,7 @@ HAVE_SHADERPIPELINE = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_STB_FONT = 1
HAVE_CONFIGFILE = 1
MEMORY = 134217728
+85 -7
View File
@@ -75,15 +75,22 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_END := -Wl,--no-whole-archive
endif
STATIC_BUILD = 1
ifneq (,$(findstring msvc,$(platform)))
LIBS := $(WHOLE_START) $(WHOLE_END)
else
STATIC_BUILD = 0
endif
ifneq (,$(findstring unix,$(platform)))
STATIC_BUILD = 0
endif
ifeq (qnx, $(platform))
STATIC_BUILD = 0
endif
ifeq ($(STATIC_BUILD), 0)
LIBS := $(WHOLE_START) $(WHOLE_END)
else
LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END)
endif
endif
libogc_platform :=
@@ -93,7 +100,7 @@ else ifeq ($(platform), wii)
libogc_platform := 1
endif
HAVE_MENU_WIDGETS := 1
HAVE_GFX_WIDGETS := 1
# PS3
ifeq ($(platform), ps3)
@@ -197,6 +204,7 @@ else ifeq ($(libogc_platform), 1)
HAVE_VIDEO_LAYOUT := 0
HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_CONFIGFILE := 1
RARCH_CONSOLE = 1
ifeq ($(platform), wii)
@@ -236,6 +244,7 @@ else ifeq ($(platform), xenon360)
HAVE_THREADS := 1
HAVE_GETOPT_LONG := 1
RARCH_CONSOLE = 1
HAVE_CONFIGFILE := 1
# PSP
else ifeq ($(platform), psp1)
@@ -260,6 +269,7 @@ else ifeq ($(platform), psp1)
HAVE_KERNEL_PRX := 1
#HAVE_LANGEXTRA := 1
RARCH_CONSOLE = 1
HAVE_CONFIGFILE := 1
ifeq ($(BUILD_PRX), 1)
LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS)
@@ -317,6 +327,7 @@ else ifeq ($(platform), vita)
HAVE_THREADS := 1
HAVE_LIBRETRODB := 1
RARCH_CONSOLE = 1
HAVE_CONFIGFILE := 1
else ifeq ($(platform), windows_msvc6_x86)
HAVE_RPNG := 1
HAVE_RJPEG := 1
@@ -340,6 +351,7 @@ else ifeq ($(platform), windows_msvc6_x86)
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -383,6 +395,7 @@ else ifeq ($(platform), windows_msvc2003_x86)
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -432,6 +445,7 @@ else ifeq ($(platform), windows_msvc2005_x86)
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 1
HAVE_DIRECTX ?= 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -483,6 +497,7 @@ else ifneq (,$(findstring windows_msvc2010,$(platform)))
HAVE_GRIFFIN_CPP := 1
HAVE_RUNAHEAD := 1
HAVE_DIRECTX ?= 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -557,6 +572,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform)))
HAVE_GRIFFIN_CPP := 1
HAVE_RUNAHEAD := 1
HAVE_DIRECTX ?= 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -635,6 +651,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
HAVE_GRIFFIN_CPP := 1
HAVE_RUNAHEAD := 1
HAVE_DIRECTX ?= 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -713,6 +730,7 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
HAVE_GRIFFIN_CPP := 1
HAVE_RUNAHEAD := 1
HAVE_DIRECTX ?= 1
HAVE_CONFIGFILE := 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
@@ -780,6 +798,44 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
export INCLUDE := $(INCLUDE);libretro-common\include;libretro-common\include\compat\msvc;gfx\include;deps;deps\stb
export LIB := $(LIB)
endif
else ifeq (qnx,$(platform))
HAVE_AUDIOMIXER := 1
HAVE_RPNG := 1
HAVE_RJPEG := 1
HAVE_RBMP := 1
HAVE_RTGA := 1
HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_VIDEO_LAYOUT := 0
HAVE_MATERIALUI := 1
HAVE_XMB := 1
HAVE_STB_FONT := 1
HAVE_THREADS := 1
HAVE_LIBRETRODB := 1
HAVE_COMMAND := 1
HAVE_STDIN_CMD := 1
HAVE_CMD := 1
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 0
WANT_GLSLANG := 0
HAVE_CONFIGFILE := 1
CC=qcc -Vgcc_ntoarmv7le
CXX=QCC -Vgcc_ntoarmv7le
ifeq ($(DEBUG), 1)
LDFLAGS += -g
endif
PLATCFLAGS += -DHAVE_SHADERPIPELINE -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_OZONE -DHAVE_CC_RESAMPLER -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_FBO -DHAVE_GL_SYNC -DHAVE_GLSLANG -DHAVE_BUILTINGLSLANG -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_RUNAHEAD -DHAVE_GFX_WIDGETS -DHAVE_CONFIGFILE -DHAVE_SPIRV_CROSS -DHAVE_STB_FONT -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_XMB -DRARCH_INTERNAL -DWANT_GLSLANG -DHAVE_XCB -DHAVE_EGL -DHAVE_BB10 -DHAVE_GLSL -DHAVE_AL -DRARCH_MOBILE
EXT_TARGET := $(TARGET_NAME)
EXT_INTER_TARGET := $(TARGET_NAME)
INCLUDE += -Ilibretro-common/include -Igfx/include -Ideps -Ideps/stb -Ideps/rcheevos/include -Ideps/SPIRV-Cross -Ideps/glslang -I.
LIBS += -lEGL -lbps -lscreen -lsocket -lm -lGLESv2 -lOpenAL
else ifneq (,$(findstring unix,$(platform)))
HAVE_AUDIOMIXER := 1
HAVE_RPNG := 1
@@ -804,9 +860,10 @@ else ifneq (,$(findstring unix,$(platform)))
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 1
WANT_GLSLANG := 1
WANT_GLSLANG := 1
HAVE_CONFIGFILE := 1
PLATCFLAGS += -D__MMX__ -D__SSE__ -DHAVE_OPENGL -DHAVE_OPENGL1 -DHAVE_GLSL -DHAVE_SHADERPIPELINE -DHAVE_OZONE -DHAVE_CC_RESAMPLER -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_FBO -DHAVE_GL_SYNC -DHAVE_SLANG -DHAVE_GLSLANG -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_RUNAHEAD -DHAVE_MENU_WIDGETS -DHAVE_SPIRV_CROSS -DHAVE_STB_FONT -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_VULKAN -DHAVE_XMB -DRARCH_INTERNAL -DWANT_GLSLANG -DHAVE_X11 -DHAVE_XCB -DHAVE_UDEV -DHAVE_PULSE
PLATCFLAGS += -D__MMX__ -D__SSE__ -DHAVE_OPENGL -DHAVE_OPENGL1 -DHAVE_GLSL -DHAVE_SHADERPIPELINE -DHAVE_OZONE -DHAVE_CC_RESAMPLER -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_FBO -DHAVE_GL_SYNC -DHAVE_SLANG -DHAVE_GLSLANG -DHAVE_BUILTINGLSLANG -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_RUNAHEAD -DHAVE_GFX_WIDGETS -DHAVE_CONFIGFILE -DHAVE_SPIRV_CROSS -DHAVE_STB_FONT -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_VULKAN -DHAVE_XMB -DRARCH_INTERNAL -DWANT_GLSLANG -DHAVE_X11 -DHAVE_XCB -DHAVE_UDEV -DHAVE_PULSE
EXT_TARGET := $(TARGET_NAME)
EXT_INTER_TARGET := $(TARGET_NAME)
INCLUDE += -Ilibretro-common/include -Igfx/include -Ideps -Ideps/stb -Ideps/rcheevos/include -Ideps/SPIRV-Cross -Ideps/glslang -I.
@@ -972,6 +1029,10 @@ ifeq ($(HAVE_THREADS), 1)
endif
endif
ifeq ($(HAVE_CONFIGFILE), 1)
CFLAGS += -DHAVE_CONFIGFILE
endif
ifeq ($(HAVE_RSOUND), 1)
CFLAGS += -DHAVE_RSOUND
endif
@@ -1080,7 +1141,12 @@ $(APP_BOOTER_DIR)/app_booter.bin:
$(MAKE) -C $(APP_BOOTER_DIR)
pkg: all
ifeq ($(platform), wii)
ifeq ($(platform), qnx)
mkdir -p pkg/qnx/pkg
cp -r $(EXT_TARGET) pkg/qnx/pkg/RetroArch
cp -r media/canvas.png pkg/qnx/pkg/canvas.png
cp -r media/retroarch-96x96.png pkg/qnx/pkg/retroarch-96x96.png
else ifeq ($(platform), wii)
cp -r $(EXT_TARGET) pkg/wii/CORE.dol
else ifeq ($(platform), ngc)
cp -r $(EXT_TARGET) pkg/ngc/CORE.dol
@@ -1088,6 +1154,18 @@ else ifeq ($(platform), psp1)
psp-fixup-imports$(EXT) $(EXT_TARGET)
endif
ifeq ($(platform), qnx)
retroarch-dev.bar: pkg
ifeq ($(QNX_DEBUGTOKEN),)
blackberry-nativepackager -package $@ -devMode pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
else
blackberry-nativepackager -package $@ -devMode -debugToken $(QNX_DEBUGTOKEN) pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
endif
retroarch-release.bar: pkg
blackberry-nativepackager -package $@ pkg/qnx/bar-descriptor.xml -C pkg/qnx/pkg pkg/qnx/pkg/*
endif
shaders-checkout:
@if test -d $(SHADER_CG_DIR); then \
echo "[SHADER CHECKOUT::] Git pulling common-shaders..."; \
+3 -2
View File
@@ -36,6 +36,7 @@ HAVE_LIBRETRODB = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
HAVE_RUNAHEAD = 1
HAVE_NETWORKING = 1
HAVE_NETPLAYDISCOVERY = 1
@@ -52,7 +53,7 @@ HAVE_SWITCH = 1
HAVE_LIBNX = 1
HAVE_OPENGL = 1
HAVE_LANGEXTRA = 1
HAVE_MENU_WIDGETS = 1
HAVE_GFX_WIDGETS = 1
ifeq ($(HAVE_OPENGL), 1)
HAVE_EGL = 1
@@ -132,7 +133,7 @@ LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-de
# add things from Makefile.common
CFLAGS += $(DEF_FLAGS)
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lm
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lm
ifeq ($(HAVE_OPENGL), 1)
LIBS := -lEGL -lglapi -ldrm_nouveau $(LIBS)
+2 -1
View File
@@ -21,7 +21,7 @@ HAVE_D3D12 := 1
HAVE_CG := 1
HAVE_OPENGL := 1
HAVE_OPENGL1 := 1
HAVE_MENU_WIDGETS := 1
HAVE_GFX_WIDGETS := 1
HAVE_VULKAN := 1
HAVE_XAUDIO := 1
HAVE_XINPUT := 1
@@ -31,6 +31,7 @@ HAVE_WINMM := 1
HAVE_RPNG := 1
HAVE_ZLIB := 1
HAVE_CONFIGFILE := 1
HAVE_MENU := 1
HAVE_RGUI := 1
HAVE_XMB := 1
+1 -1
View File
@@ -15,7 +15,7 @@ LDFLAGS = -L$(PNDSDK)/usr/lib -Wl,-rpath,$(PNDSDK)/usr/lib
LIBS = -lGLESv2 -lEGL -ldl -lm -lpthread -lrt -lasound
DEFINES = -std=gnu99 -DHAVE_THREADS -DHAVE_GETOPT_LONG=1 -DHAVE_GRIFFIN -DRARCH_INTERNAL
DEFINES += -D__ARM_ARCH_6__ -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DHAVE_DYNAMIC -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_OVERLAY -DHAVE_VIDEO_LAYOUT -DHAVE_ALSA -DHAVE_ZLIB -D__linux__
DEFINES += -DHAVE_CONFIGFILE -D__ARM_ARCH_6__ -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DHAVE_DYNAMIC -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_OVERLAY -DHAVE_VIDEO_LAYOUT -DHAVE_ALSA -DHAVE_ZLIB -D__linux__
DEFINES += $(INCDIRS)
DEFINES += -D__OPENPANDORA__ -DPANDORA
DEFINES += -marm -march=armv7-a -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize
+3 -2
View File
@@ -16,7 +16,7 @@ DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1
DEFINES += -DHAVE_MENU -DHAVE_LIBRETRODB
DEFINES += -DHAVE_MENU -DHAVE_LIBRETRODB -DHAVE_CONFIGFILE
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_CC_RESAMPLER
ifeq ($(DEBUG), 1)
DEFINES += -DHAVE_NETLOGGER
@@ -34,13 +34,14 @@ else
HAVE_VIDEO_LAYOUT := 0
HAVE_7ZIP := 1
HAVE_EGL := 1
HAVE_MENU_WIDGETS := 1
HAVE_GFX_WIDGETS := 1
HAVE_GLSL := 1
HAVE_OPENGLES := 1
HAVE_NETWORKING := 0
HAVE_SOCKET_LEGACY := 0
HAVE_MENU := 1
HAVE_MENU_COMMON := 1
HAVE_CONFIGFILE := 1
HAVE_RGUI := 0
HAVE_MATERIALUI := 0
HAVE_XMB := 1
+1 -1
View File
@@ -38,7 +38,7 @@ CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) -ffast-math -fsingle-precision-const
ASFLAGS = $(CFLAGS)
RARCH_DEFINES += -DPS2 -DUSE_IOP_CTYPE_MACRO -D_MIPS_ARCH_R5900 -DHAVE_ZLIB -DHAVE_NO_BUILTINZLIB -DHAVE_RPNG -DHAVE_RJPEG
RARCH_DEFINES += -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
RARCH_DEFINES += -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
LIBDIR =
LDFLAGS += -L$(PS2SDK)/ports/lib -L$(PS2DEV)/gsKit/lib -L$(PS2SDK)/ee/lib -L$(CDVD_DIR)/lib -L.
+3 -2
View File
@@ -69,8 +69,9 @@ endif
PPU_SRCS = griffin/griffin.c
#DEFINES += -DHAVE_VIDEO_LAYOUT
DEFINES += -DHAVE_MENU -DHAVE_MENU_WIDGETS -DHAVE_RGUI -DHAVE_XMB -DHAVE_OZONE -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD -DHAVE_DR_MP3 -DHAVE_DR_FLAC
DEFINES += -DHAVE_VIDEO_LAYOUT
DEFINES += -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_GFX_WIDGETS -DHAVE_RGUI -DHAVE_XMB -DHAVE_OZONE -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD -DHAVE_DR_MP3 -DHAVE_DR_FLAC
DEFINES += -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
+31 -67
View File
@@ -1,29 +1,39 @@
#-------------------------------------------------------------------------------
# Clear the implicit built in rules
#-------------------------------------------------------------------------------
.SUFFIXES:
#-------------------------------------------------------------------------------
ifeq ($(strip $(PSL1GHT)),)
$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
endif
include $(PSL1GHT)/ppu_rules
include version.all
DEBUG = 0
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0
HAVE_FILE_LOGGER = 1
PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.7"
PC_DEVELOPMENT_UDP_PORT = 3490
CC = $(PS3DEV)/ppu/bin/ppu-gcc
CXX = $(PS3DEV)/ppu/bin/ppu-g++
LD = $(PS3DEV)/ppu/bin/ppu-ld
CONTENT_ID_FULL = UP0001-SSNE10000_00-0000000000000001
CONTENTID = UP0001-SSNE10001_00-0000000000000001
APPID = SSNE10001
TITLE = Retroarch PSL1GHT
PACKAGE_BASENAME := retroarch_psl1ght
ELF_TARGET := retroarch_psl1ght.elf
EBOOT_PATH = pkg/ps3/USRDIR/EBOOT.BIN
CORE_PATH = pkg/ps3/USRDIR/cores/CORE.SELF
SELF_TARGET := $(ELF_TARGET:.elf=.self)
CORE_PATH = pkg/psl1ght/pkg/USRDIR/cores/CORE.SELF
INCLUDE := -I. -I$(PS3DEV)/ppu/include -Ips3/gcmgl/include/export -Ips3/include -Ideps -Ideps/stb -Ilibretro-common/include/compat/zlib
LIBDIRS := -L$(PS3DEV)/ppu/lib -L$(PS3DEV)/portlibs/ppu/lib -L.
INCLUDE += -I. -Ips3/gcmgl/include/export -Ips3/include -Ideps -Ideps/stb -Ilibretro-common/include/compat/zlib -Ilibretro-common/include $(LIBPSL1GHT_INC) -Iinclude
LIBDIRS += -L.
MACHDEP := -D__CELLOS_LV2__ -D__PSL1GHT__
MACHDEP := -D__CELLOS_LV2__ -D__PSL1GHT__ -mcpu=cell
CFLAGS += -Wall $(MACHDEP) $(INCLUDE)
LDFLAGS := $(MACHDEP)
LIBS := -lrgl_ps3 -lretro_psl1ght -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl
LIBS := -lretro_psl1ght -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl
# system platform
system_platform = unix
@@ -38,46 +48,10 @@ endif
PKG_SCRIPT = tools/ps3/ps3py/pkg.py
ifeq ($(shell uname), Linux)
PKG_FINALIZE = package_finalize
MAKE_SELF_WC = make_self_wc
MAKE_SELF = make_self_npdrm
PYTHON2 = python2
GIT = git
else
PKG_FINALIZE = package_finalize.exe
MAKE_SELF_WC = make_self_wc.exe
MAKE_SELF = make_self_npdrm.exe
PYTHON2 = python2.exe
GIT = git.exe
endif
# system platform
system_platform = unix
ifeq ($(shell uname -a),)
EXE_EXT = .exe
system_platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
system_platform = osx
else ifneq ($(findstring MINGW,$(shell uname -a)),)
system_platform = win
endif
PKG_SCRIPT = tools/ps3/ps3py/pkg.py
ifeq ($(shell uname), Linux)
PKG_FINALIZE = package_finalize
MAKE_SELF_WC = make_self_wc
MAKE_SELF = make_self_npdrm
PYTHON2 = python2
GIT = git
else
PKG_FINALIZE = package_finalize.exe
MAKE_SELF_WC = make_self_wc.exe
MAKE_SELF = make_self_npdrm.exe
PYTHON2 = python2.exe
GIT = git.exe
endif
MAKE_FSELF_NPDRM = $(CELL_SDK)/host-win32/bin/make_fself_npdrm.exe
MAKE_PACKAGE_NPDRM = $(CELL_SDK)/host-win32/bin/make_package_npdrm.exe
OBJ = griffin/griffin.o
@@ -91,8 +65,8 @@ endif
SHARED_FLAGS :=
#SHARED_FLAGS += -DHAVE_VIDEO_LAYOUT
SHARED_FLAGS += -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_GCMGL -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_MOUSE -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_GRIFFIN=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts -DHAVE_CC_RESAMPLER
SHARED_FLAGS += -DHAVE_VIDEO_LAYOUT
SHARED_FLAGS += -DHAVE_MENU -DHAVE_CONFIGFILE -DRARCH_CONSOLE -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_GCMGL -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_MOUSE -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_GRIFFIN=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts -DHAVE_CC_RESAMPLER -DRARCH_INTERNAL -DHAVE_MULTIMAN -DHAVE_RGUI
CFLAGS += -std=gnu99 $(SHARED_FLAGS)
CXXFLAGS += $(SHARED_FLAGS)
@@ -103,28 +77,18 @@ else
CXXFLAGS += -03 -g
endif
all: $(ELF_TARGET)
all: $(SELF_TARGET)
$(ELF_TARGET): $(OBJ)
$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS)
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
create-core: $(SELF_TARGET)
cp $(SELF_TARGET) $(CORE_PATH)
%.o: %.cpp
$(CXX) $(CFLAGS) -c -o $@ $<
create-npdrm-core:
$(MAKE_FSELF_NPDRM) $(ELF_TARGET) $(CORE_PATH)
create-core:
$(MAKE_SELF_WC) $(ELF_TARGET) $(CORE_PATH)
pkg: $(ELF_TARGET) create-npdrm-core
$(MAKE_PACKAGE_NPDRM) pkg/ps3/package.conf ps3/pkg
pkg-signed: $(ELF_TARGET) create-core
$(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(PACKAGE_VERSION).pkg
pkg: create-core
$(PKG) --contentid $(CONTENTID) pkg/psl1ght/pkg/ $(PACKAGE_BASENAME).pkg
# cp $(PACKAGE_BASENAME).pkg $(PACKAGE_BASENAME).gnpdrm.pkg
# $(PACKAGE_FINALIZE) $(PACKAGE_BASENAME).gnpdrm.pkg
clean:
rm -f $(ELF_TARGET)
+119
View File
@@ -0,0 +1,119 @@
#-------------------------------------------------------------------------------
# Clear the implicit built in rules
#-------------------------------------------------------------------------------
.SUFFIXES:
#-------------------------------------------------------------------------------
ifeq ($(strip $(PSL1GHT)),)
$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
endif
include $(PSL1GHT)/ppu_rules
include version.all
DEBUG = 0
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 1
PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.7"
PC_DEVELOPMENT_UDP_PORT = 3490
CONTENTID = UP0001-SSNE10001_00-0000000000000001
APPID = SSNE10001
TITLE = Retroarch PSL1GHT
PACKAGE_BASENAME := retroarch_psl1ght
ELF_TARGET := retroarch_psl1ght_salamander.elf
ELF_TARGET_NONSTRIPPED := retroarch_psl1ght_salamander_nonstripped.elf
EBOOT_PATH = pkg/psl1ght/pkg/USRDIR/EBOOT.BIN
INCLUDE += -I. -Ips3/gcmgl/include/export -Ips3/include -Ideps -Ideps/stb -Ilibretro-common/include/compat/zlib -Ilibretro-common/include $(LIBPSL1GHT_INC) -Iinclude
LIBDIRS += -L.
MACHDEP := -D__CELLOS_LV2__ -D__PSL1GHT__ -mcpu=cell -mhard-float -fmodulo-sched -ffunction-sections -fdata-sections
CFLAGS += -Wall $(MACHDEP) $(INCLUDE)
LDFLAGS := $(MACHDEP)
LIBS := -lgcm_sys -lrsx -lsysutil -lio -lnet -lsysmodule -lrt -llv2 -lm
# system platform
system_platform = unix
ifeq ($(shell uname -a),)
EXE_EXT = .exe
system_platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
system_platform = osx
else ifneq ($(findstring MINGW,$(shell uname -a)),)
system_platform = win
endif
PKG_SCRIPT = tools/ps3/ps3py/pkg.py
ifeq ($(shell uname), Linux)
GIT = git
else
GIT = git.exe
endif
OBJ = frontend/frontend_salamander.o \
frontend/frontend_driver.o \
frontend/drivers/platform_ps3.o \
libretro-common/file/file_path.o \
libretro-common/file/file_path_io.o \
libretro-common/lists/dir_list.o \
libretro-common/lists/string_list.o \
libretro-common/file/retro_dirent.o \
libretro-common/hash/rhash.o \
libretro-common/string/stdstring.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strl.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
libretro-common/file/config_file.o \
file_path_str.o \
verbosity.o
ifeq ($(HAVE_LOGGER), 1)
CFLAGS += -DHAVE_LOGGER
endif
ifeq ($(HAVE_FILE_LOGGER), 1)
CFLAGS += -DHAVE_FILE_LOGGER
endif
SHARED_FLAGS :=
SHARED_FLAGS += -DHAVE_VIDEO_LAYOUT
SHARED_FLAGS += -DHAVE_MENU -DHAVE_CONFIGFILE -DRARCH_CONSOLE -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_GCMGL -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_MOUSE -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_GRIFFIN=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts -DHAVE_CC_RESAMPLER -DHAVE_MULTIMAN -DHAVE_RGUI -DIS_SALAMANDER
CFLAGS += -std=gnu99 $(SHARED_FLAGS)
CXXFLAGS += $(SHARED_FLAGS)
ifeq ($(DEBUG), 1)
CFLAGS += -O0 -g
else
CFLAGS += -O3 -g
CXXFLAGS += -03 -g
endif
all: create-salamander
$(ELF_TARGET_NONSTRIPPED): $(OBJ)
$(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS)
$(ELF_TARGET): $(ELF_TARGET_NONSTRIPPED)
$(STRIP) $< -o $@
$(SPRX) $@
create-salamander: $(ELF_TARGET)
$(SELF_NPDRM) $(ELF_TARGET) $(EBOOT_PATH) $(CONTENTID)
pkg: create-salamander
$(PKG) --contentid $(CONTENTID) pkg/psl1ght/pkg/ $(PACKAGE_BASENAME).pkg
# cp $(PACKAGE_BASENAME).pkg $(PACKAGE_BASENAME).gnpdrm.pkg
# $(PACKAGE_FINALIZE) $(PACKAGE_BASENAME).gnpdrm.pkg
clean:
rm -f $(ELF_TARGET)
rm -f $(OBJ)
.PHONY: clean
+2 -2
View File
@@ -25,7 +25,7 @@ INCDIR = deps deps/stb deps/7zip deps/pthreads deps/pthreads/platform/psp deps/p
CFLAGS = $(OPTIMIZE_LV) -G0 -std=gnu99 -ffast-math -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP -D_MIPS_ARCH_ALLEGREX -DHAVE_LANGEXTRA -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
RARCH_DEFINES = -DPSP -D_MIPS_ARCH_ALLEGREX -DHAVE_LANGEXTRA -DHAVE_ZLIB -DHAVE_AUDIOMIXER -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
LIBDIR =
LDFLAGS =
@@ -72,4 +72,4 @@ pspsh-run:
debug: clean all pspsh-debug
run: clean all pspsh-run
run: clean all pspsh-run
+2
View File
@@ -13,6 +13,7 @@ ifeq ($(GRIFFIN_BUILD), 1)
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_NEON -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA
DEFINES += -DHAVE_RUNAHEAD -DHAVE_DYNAMIC
DEFINES += -DHAVE_CONFIGFILE
else
HAVE_AUDIOMIXER = 1
HAVE_CC_RESAMPLER = 1
@@ -30,6 +31,7 @@ else
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
HAVE_RUNAHEAD = 1
HAVE_DYNAMIC = 1
+4 -2
View File
@@ -17,7 +17,7 @@ INCDIRS :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1
DEFINES += -DHAVE_NEON -DHAVE_MENU -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB DEFINES -DHAVE_KEYMAPPER
DEFINES += -DHAVE_NEON -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB DEFINES -DHAVE_KEYMAPPER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_CC_RESAMPLER
ifeq ($(DEBUG), 1)
DEFINES += -DHAVE_NETLOGGER
@@ -43,7 +43,8 @@ else
HAVE_SOCKET_LEGACY := 1
HAVE_MENU := 1
HAVE_MENU_COMMON := 1
HAVE_MENU_WIDGETS = 1
HAVE_GFX_WIDGETS := 1
HAVE_CONFIGFILE := 1
HAVE_OVERLAY := 1
HAVE_VIDEO_LAYOUT := 0
HAVE_MATERIALUI := 1
@@ -58,6 +59,7 @@ else
RARCH_CONSOLE := 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_AUDIOMIXER := 1
ifeq ($(DEBUG), 1)
HAVE_NETLOGGER = 1
+3 -1
View File
@@ -57,6 +57,7 @@ ifeq ($(SALAMANDER_BUILD),1)
OBJ += libretro-common/compat/compat_strcasestr.o
OBJ += libretro-common/compat/fopen_utf8.o
OBJ += libretro-common/file/file_path.o
OBJ += libretro-common/file/file_path_io.o
OBJ += libretro-common/string/stdstring.o
OBJ += libretro-common/lists/string_list.o
OBJ += libretro-common/lists/dir_list.o
@@ -106,7 +107,7 @@ endif
INCDIRS += -Ideps/SPIRV-Cross
DEFINES += -DHAVE_AUDIOMIXER
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_LIBRETRODB
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_CONFIGFILE -DHAVE_RGUI -DHAVE_LIBRETRODB
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_SPIRV_CROSS -DHAVE_SLANG
DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING -DHAVE_NETPLAYDISCOVERY
@@ -125,6 +126,7 @@ endif
HAVE_RPNG = 1
HAVE_RJPEG = 1
HAVE_RBMP = 1
HAVE_CONFIGFILE = 1
HAVE_MENU = 1
HAVE_RGUI = 1
HAVE_7ZIP = 1
+1
View File
@@ -14,6 +14,7 @@ HAVE_STDIN_CMD = 1
HAVE_COMMAND = 1
HAVE_THREADS = 1
HAVE_MENU = 1
HAVE_CONFIGFILE = 1
HAVE_RGUI = 1
HAVE_MATERIALUI = 1
HAVE_7ZIP = 1
+30 -7
View File
@@ -8,15 +8,17 @@ Popular examples of implementations for this API includes video game system emul
more generalized 3D programs.
These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".
![XMB menu driver](http://i.imgur.com/BMR1xxr.png "XMB menu driver")
![XMB menu driver](docs/XMB-main-menu.jpg "XMB menu driver")
![rgui menu driver](http://i.imgur.com/X3CbBKa.png "rgui menu driver")
![rgui menu driver](docs/rgui-main-menu.jpg "rgui menu driver")
![glui menu driver](http://i.imgur.com/ooqv8rw.png "glui menu driver")
![glui menu driver](docs/glui-main-menu.jpg "glui menu driver")
![ozone menu driver](docs/ozone-main-menu.jpg "ozone menu driver")
## libretro
[libretro](http://libretro.com) is an API that exposes generic audio/video/input callbacks.
[libretro](https://www.libretro.com) is an API that exposes generic audio/video/input callbacks.
A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle.
A libretro core written in portable C or C++ can run seamlessly on many platforms with very little to no porting effort.
@@ -31,12 +33,12 @@ Latest binaries are currently hosted on the [buildbot](http://buildbot.libretro.
## Support
To reach developers, either make an issue here on GitHub, make a thread on the [forum](http://www.libretro.com/forums/), chat on [discord](https://discord.gg/C4amCeV), or visit our IRC channel: #retroarch @ irc.freenode.org.
To reach developers, either make an issue here on GitHub, make a thread on the [forum](https://www.libretro.com/forums/), chat on [discord](https://discord.gg/C4amCeV), or visit our IRC channel: #retroarch @ irc.freenode.org. You could create a post in [Reddit](https://www.reddit.com/r/RetroArch/) with *Technical Support* flair.
## Documentation
See our [Documentation Center](https://docs.libretro.com/). On Unix, man-pages are provided.
More developer-centric stuff is found [here](https://github.com/libretro/libretro.github.com/wiki/Documentation-devs).
More developer-centric stuff is found [here](https://docs.libretro.com/development/libretro-overview/).
## Related projects
@@ -72,6 +74,7 @@ RetroArch has been ported to the following platforms:
- Haiku
- Solaris
- macOS (PPC, x86-32 and x86-64)
- PlayStation 2
- PlayStation 3
- PlayStation Portable
- PlayStation Vita
@@ -80,7 +83,7 @@ RetroArch has been ported to the following platforms:
- Nintendo GameCube
- Nintendo Wii
- Nintendo Wii U
- Nintendo 3DS
- Nintendo 3DS/2DS
- Nintendo Switch
- Nintendo NES/SNES Classic Edition
- Raspberry Pi
@@ -256,3 +259,23 @@ These modelines are more accurate giving exact hz. However, some games may have
Some arcade resolutions can be very different from consumer CRTs. There is resolution detection to ensure MAME games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the MAME game will look just like the original hardware.
MAME ROMs that run in a vertical aspect like DoDonPachi need to be rotated within MAME before resolution switching and aspect correction will work. Do this before enabling CRT SwitchRes so that RetroArch will run in your desktop resolution. Once you have rotated any games that may need it turn CRT SwitchRes on.
## Socials
The links below belong to our official channels. Links other than this may have been created by fans, independent members or followers. We seriously recommend using our original resources.
- [Website](https://www.retroarch.com/)
- [Blog](https://libretro.com/)
- [Facebook](https://www.facebook.com/libretro)
- [Twitter](https://twitter.com/libretro)
- [Reddit](https://www.reddit.com/r/RetroArch/)
- [YouTube](https://www.youtube.com/Libretro)
- [Google Post](https://posts.google.com/share/55Nhs2jG)
- [Steam](https://store.steampowered.com/app/1118310/RetroArch/)
- [YouTube Topic](https://www.youtube.com/channel/UC5q007PYyQPgin0HHbzF0zQ)
- [Patreon](https://www.patreon.com/libretro)
- [BOUNTYSOURCE](https://www.bountysource.com/teams/libretro/issues)
- [Discord](https://discord.gg/27Xxm2h)
- [Teespring](https://teespring.com/stores/retroarch)
- [Documentation](https://docs.libretro.com/)
- [Forum](https://forums.libretro.com/)
+18 -17
View File
@@ -1,7 +1,6 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2012-2015 - Michael Lelli
* Copyright (C) 2011-2016 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -15,27 +14,29 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _MENU_GENERIC_H
#define _MENU_GENERIC_H
#ifndef __RETROARCH_ACCESSIBILITY_H
#define __RETROARCH_ACCESSIBILITY_H
#include <stdint.h>
#include <stddef.h>
#include <sys/types.h>
#include <stdlib.h>
#include <boolean.h>
#include <retro_inline.h>
#include <retro_common_api.h>
#include "../menu_driver.h"
#include "../menu_input.h"
#include "../menu_entries.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
enum action_iterate_type
{
ITERATE_TYPE_DEFAULT = 0,
ITERATE_TYPE_HELP,
ITERATE_TYPE_INFO,
ITERATE_TYPE_BIND
};
int generic_menu_iterate(void *data, void *userdata, enum menu_action action);
RETRO_BEGIN_DECLS
bool generic_menu_init_list(void *data);
bool is_accessibility_enabled(void);
int generic_menu_entry_action(void *userdata, menu_entry_t *entry, size_t i, enum menu_action action);
bool accessibility_speak_priority(const char* speak_text, int priority);
RETRO_END_DECLS
#endif
+29 -50
View File
@@ -53,7 +53,7 @@ typedef struct coreaudio
} coreaudio_t;
#if TARGET_OS_IOS
static bool g_interrupted = false;
static bool g_interrupted;
#endif
static void coreaudio_free(void *data)
@@ -346,61 +346,40 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size)
const uint8_t *buf = (const uint8_t*)buf_;
size_t written = 0;
if (dev->nonblock)
{
bool cond = size > 0;
#if TARGET_OS_IOS
cond = cond && !g_interrupted;
while (!g_interrupted && size > 0)
#else
while (size > 0)
#endif
if (cond)
{
size_t write_avail;
slock_lock(dev->lock);
write_avail = fifo_write_avail(dev->buffer);
if (write_avail > size)
write_avail = size;
fifo_write(dev->buffer, buf, write_avail);
buf += write_avail;
written += write_avail;
size -= write_avail;
slock_unlock(dev->lock);
}
}
else
{
#if TARGET_OS_IOS
while (!g_interrupted && size > 0)
#else
while (size > 0)
#endif
size_t write_avail;
slock_lock(dev->lock);
write_avail = fifo_write_avail(dev->buffer);
if (write_avail > size)
write_avail = size;
fifo_write(dev->buffer, buf, write_avail);
buf += write_avail;
written += write_avail;
size -= write_avail;
if (dev->nonblock)
{
size_t write_avail;
slock_lock(dev->lock);
write_avail = fifo_write_avail(dev->buffer);
if (write_avail > size)
write_avail = size;
fifo_write(dev->buffer, buf, write_avail);
buf += write_avail;
written += write_avail;
size -= write_avail;
#if TARGET_OS_IPHONE
if (write_avail == 0 && !scond_wait_timeout(
dev->cond, dev->lock, 3000000))
g_interrupted = true;
#else
if (write_avail == 0)
scond_wait(dev->cond, dev->lock);
#endif
slock_unlock(dev->lock);
break;
}
#if TARGET_OS_IOS
if (write_avail == 0 && !scond_wait_timeout(
dev->cond, dev->lock, 3000000))
g_interrupted = true;
#else
if (write_avail == 0)
scond_wait(dev->cond, dev->lock);
#endif
slock_unlock(dev->lock);
}
return written;
+12 -27
View File
@@ -260,37 +260,22 @@ static bool g_interrupted;
- (ssize_t)writeFloat:(const float *)data samples:(size_t)samples {
size_t written = 0;
if (_nonBlock)
while (!g_interrupted && samples > 0)
{
if (!g_interrupted && samples > 0)
{
size_t write_avail = rb_avail(&_rb);
if (write_avail > samples)
write_avail = samples;
size_t write_avail = rb_avail(&_rb);
if (write_avail > samples)
write_avail = samples;
rb_write_data(&_rb, data, write_avail);
data += write_avail;
written += write_avail;
samples -= write_avail;
}
}
else
{
while (!g_interrupted && samples > 0)
{
size_t write_avail = rb_avail(&_rb);
if (write_avail > samples)
write_avail = samples;
rb_write_data(&_rb, data, write_avail);
data += write_avail;
written += write_avail;
samples -= write_avail;
rb_write_data(&_rb, data, write_avail);
data += write_avail;
written += write_avail;
samples -= write_avail;
if (_nonBlock)
break;
if (write_avail == 0)
dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER);
}
if (write_avail == 0)
dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER);
}
return written;
+6 -6
View File
@@ -26,7 +26,6 @@
#include <rthreads/rthreads.h>
#include "../../retroarch.h"
#include "../../configuration.h"
#include "../../verbosity.h"
#define FRAMES(x) (x / (sizeof(float) * 2))
@@ -97,13 +96,13 @@ static void shutdown_cb(void *data)
#endif
}
static int parse_ports(char **dest_ports, const char **jports)
static int parse_ports(const char *audio_device,
char **dest_ports, const char **jports)
{
int i;
char *save = NULL;
int parsed = 0;
settings_t *settings = config_get_ptr();
char *audio_device_cpy = strdup(settings->arrays.audio_device);
char *audio_device_cpy = strdup(audio_device);
const char *con = strtok_r(audio_device_cpy, ",", &save);
if (con)
@@ -146,7 +145,8 @@ static size_t find_buffersize(jack_t *jd, int latency, unsigned out_rate)
return buffer_frames * sizeof(jack_default_audio_sample_t);
}
static void *ja_init(const char *device, unsigned rate, unsigned latency,
static void *ja_init(const char *device,
unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
@@ -203,7 +203,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
}
}
parsed = parse_ports(dest_ports, jports);
parsed = parse_ports(device, dest_ports, jports);
if (jack_activate(jd->client) < 0)
{
+26 -56
View File
@@ -238,75 +238,45 @@ static ssize_t sl_write(void *data, const void *buf_, size_t size)
size_t written = 0;
const uint8_t *buf = (const uint8_t*)buf_;
if (sl->nonblock)
while (size)
{
while (size)
{
size_t avail_write;
size_t avail_write;
if (sl->nonblock)
{
if (sl->buffered_blocks == sl->buf_count)
break;
avail_write = MIN(sl->buf_size - sl->buffer_ptr, size);
if (avail_write)
{
memcpy(sl->buffer[sl->buffer_index] + sl->buffer_ptr, buf, avail_write);
sl->buffer_ptr += avail_write;
buf += avail_write;
size -= avail_write;
written += avail_write;
}
if (sl->buffer_ptr >= sl->buf_size)
{
SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], sl->buf_size);
sl->buffer_index = (sl->buffer_index + 1) % sl->buf_count;
__sync_fetch_and_add(&sl->buffered_blocks, 1);
sl->buffer_ptr = 0;
if (res != SL_RESULT_SUCCESS)
{
RARCH_ERR("[OpenSL]: Failed to write! (Error: 0x%x)\n", (unsigned)res);
return -1;
}
}
}
}
else
{
while (size)
else
{
size_t avail_write;
slock_lock(sl->lock);
while (sl->buffered_blocks == sl->buf_count)
scond_wait(sl->cond, sl->lock);
slock_unlock(sl->lock);
}
avail_write = MIN(sl->buf_size - sl->buffer_ptr, size);
avail_write = MIN(sl->buf_size - sl->buffer_ptr, size);
if (avail_write)
if (avail_write)
{
memcpy(sl->buffer[sl->buffer_index] + sl->buffer_ptr, buf, avail_write);
sl->buffer_ptr += avail_write;
buf += avail_write;
size -= avail_write;
written += avail_write;
}
if (sl->buffer_ptr >= sl->buf_size)
{
SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], sl->buf_size);
sl->buffer_index = (sl->buffer_index + 1) % sl->buf_count;
__sync_fetch_and_add(&sl->buffered_blocks, 1);
sl->buffer_ptr = 0;
if (res != SL_RESULT_SUCCESS)
{
memcpy(sl->buffer[sl->buffer_index] + sl->buffer_ptr, buf, avail_write);
sl->buffer_ptr += avail_write;
buf += avail_write;
size -= avail_write;
written += avail_write;
}
if (sl->buffer_ptr >= sl->buf_size)
{
SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], sl->buf_size);
sl->buffer_index = (sl->buffer_index + 1) % sl->buf_count;
__sync_fetch_and_add(&sl->buffered_blocks, 1);
sl->buffer_ptr = 0;
if (res != SL_RESULT_SUCCESS)
{
RARCH_ERR("[OpenSL]: Failed to write! (Error: 0x%x)\n", (unsigned)res);
return -1;
}
RARCH_ERR("[OpenSL]: Failed to write! (Error: 0x%x)\n", (unsigned)res);
return -1;
}
}
}
+1 -1
View File
@@ -45,7 +45,7 @@ static void *ra_init(const char *device, unsigned rate, unsigned latency,
(void)latency;
if ((vss = roar_vs_new_simple(device, "RetroArch", rate, 2, ROAR_CODEC_PCM_S, 16, ROAR_DIR_PLAY, &err)) == NULL)
if (!(vss = roar_vs_new_simple(device, "RetroArch", rate, 2, ROAR_CODEC_PCM_S, 16, ROAR_DIR_PLAY, &err)))
{
RARCH_ERR("RoarAudio: \"%s\"\n", roar_vs_strerr(err));
free(roar);
+8 -1
View File
@@ -32,7 +32,9 @@
static const int sample_rate = 48000;
static const int max_num_samples = sample_rate;
static const int num_channels = 2;
#ifndef HAVE_LIBNX
static const size_t sample_buffer_size = ((max_num_samples * num_channels * sizeof(uint16_t)) + 0xfff) & ~0xfff;
#endif
typedef struct
{
@@ -98,7 +100,9 @@ static ssize_t switch_audio_write(void *data, const void *buf, size_t size)
while (!swa->current_buffer)
{
#ifndef HAVE_LIBNX
uint32_t handle_idx = 0;
#endif
num = 0;
#ifdef HAVE_LIBNX
@@ -236,7 +240,9 @@ static void *switch_audio_init(const char *device,
{
unsigned i;
char names[8][0x20];
#ifndef HAVE_LIBNX
uint32_t num_names = 0;
#endif
switch_audio_t *swa = (switch_audio_t*) calloc(1, sizeof(*swa));
if (!swa)
@@ -333,8 +339,9 @@ fail_audio_output:
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
audio_ipc_output_close(&swa->output);
#endif
fail_audio_ipc:
#endif
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
audio_ipc_finalize();
+1 -1
View File
@@ -17,7 +17,7 @@ typedef Thread compat_thread;
typedef CondVar compat_condvar;
#define compat_thread_create(thread, func, data, stack_size, prio, cpu) \
threadCreate(thread, func, data, stack_size, prio, cpu)
threadCreate(thread, func, data, NULL, stack_size, prio, cpu)
#define compat_thread_start(thread) \
threadStart(thread)
#define compat_thread_join(thread) \
@@ -232,7 +232,7 @@ static void *libnx_audren_thread_audio_init(const char *device, unsigned rate, u
svcGetThreadPriority(&thread_priority, CUR_THREAD_HANDLE);
rc = threadCreate(&aud->thread, &thread_job,
(void*)aud, thread_stack_size,
(void*)aud, NULL, thread_stack_size,
thread_priority - 1, thread_preferred_cpu);
if (R_FAILED(rc))
{
+2 -1
View File
@@ -39,7 +39,6 @@ static const size_t thread_stack_size = 1024 * 8;
static const int thread_preferred_cpu = 2;
static const int channel_count = 2;
static const size_t sample_size = sizeof(uint16_t);
static const size_t frame_size = channel_count * sample_size;
#define AUDIO_BUFFER_COUNT 2
@@ -144,8 +143,10 @@ static void *switch_thread_audio_init(const char *device, unsigned rate, unsigne
Result rc;
unsigned i;
uint32_t prio;
#ifndef HAVE_LIBNX
char names[8][0x20];
uint32_t num_names = 0;
#endif
switch_thread_audio_t *swa = (switch_thread_audio_t *)calloc(1, sizeof(*swa));
if (!swa)
+2 -1
View File
@@ -491,13 +491,14 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
BYTE *dest = NULL;
settings_t *settings = config_get_ptr();
bool float_format = settings->bools.audio_wasapi_float_format;
bool exclusive_mode = settings->bools.audio_wasapi_exclusive_mode;
int sh_buffer_length = settings->ints.audio_wasapi_sh_buffer_length;
wasapi_t *w = (wasapi_t*)calloc(1, sizeof(wasapi_t));
if (!w)
return NULL;
w->exclusive = settings->bools.audio_wasapi_exclusive_mode;
w->exclusive = exclusive_mode;
w->device = wasapi_init_device(dev_id);
if (!w->device && dev_id)
w->device = wasapi_init_device(NULL);
-1
View File
@@ -20,7 +20,6 @@
#endif
#endif
#include <stdio.h>
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
+7 -7
View File
@@ -234,7 +234,7 @@ static int rsnd_connect_server( rsound_t *rd )
if (!isdigit(rd->host[0]))
{
struct hostent *host = gethostbyname(rd->host);
if (host == NULL)
if (!host)
return -1;
addr.sin_addr.s_addr = inet_addr(host->h_addr_list[0]);
@@ -295,7 +295,7 @@ static int rsnd_send_header_info(rsound_t *rd)
/* Defines the size of a wave header */
#define HEADER_SIZE 44
char *header = calloc(1, HEADER_SIZE);
if (header == NULL)
if (!header)
{
RSD_ERR("[RSound] Could not allocate memory.");
return -1;
@@ -472,7 +472,7 @@ static int rsnd_get_backend_info ( rsound_t *rd )
if ( rd->fifo_buffer != NULL )
fifo_free(rd->fifo_buffer);
rd->fifo_buffer = fifo_new (rd->buffer_size);
if ( rd->fifo_buffer == NULL )
if (!rd->fifo_buffer)
{
RSD_ERR("[RSound] Failed to create FIFO buffer.\n");
return -1;
@@ -963,7 +963,7 @@ static int rsnd_close_ctl(rsound_t *rd)
return -1;
subchar = strrchr(buf, 'R');
if ( subchar == NULL )
if (!subchar)
index = 0;
else
{
@@ -1023,7 +1023,7 @@ static int rsnd_update_server_info(rsound_t *rd)
temp[RSD_PROTO_CHUNKSIZE] = '\0';
if ( (substr = strstr(temp, "RSD")) == NULL )
if (!(substr = strstr(temp, "RSD")))
return -1;
// Jump over "RSD" in header
@@ -1038,7 +1038,7 @@ static int rsnd_update_server_info(rsound_t *rd)
// We only bother if this is an INFO message.
substr = strstr(temp, "INFO");
if ( substr == NULL )
if (!substr)
continue;
// Jump over "INFO" in header
@@ -1548,7 +1548,7 @@ int rsd_pause(rsound_t* rsound, int enable)
int rsd_init(rsound_t** rsound)
{
*rsound = calloc(1, sizeof(rsound_t));
if ( *rsound == NULL )
if (*rsound == NULL)
return -1;
retro_assert(rsound != NULL);
+1 -1
View File
@@ -57,7 +57,7 @@ static void *android_camera_init(const char *device, uint64_t caps,
goto dealloc;
GET_OBJECT_CLASS(env, class, android_app->activity->clazz);
if (class == NULL)
if (!class)
goto dealloc;
GET_METHOD_ID(env, androidcamera->onCameraInit, class,
+51 -41
View File
@@ -14,60 +14,70 @@
*/
#include <file/file_path.h>
#include <string/stdstring.h>
#ifdef HAVE_MENU
#include "../menu/menu_driver.h"
#endif
#include "../file_path_special.h"
#include "../configuration.h"
#include "../verbosity.h"
#include "../network/net_http_special.h"
#include "../gfx/gfx_display.h"
#include "badges.h"
badges_ctx_t badges_ctx;
bool badge_exists(const char* filepath)
{
return path_is_valid(filepath);
}
void set_badge_menu_texture(badges_ctx_t * badges, int i)
{
char badge_file[16];
char fullpath[PATH_MAX_LENGTH];
snprintf(badge_file, sizeof(badge_file), "%s%s", badges->badge_id_list[i],
badges->badge_locked[i] ? "_lock.png" : ".png");
fill_pathname_application_special(fullpath,
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES);
#ifdef HAVE_MENU
menu_display_reset_textures_list(badge_file, fullpath,
&badges->menu_texture_list[i],TEXTURE_FILTER_MIPMAP_LINEAR, NULL, NULL);
#endif
}
void set_badge_info (badges_ctx_t *badge_struct, int id,
const char *badge_id, bool active)
#define CHEEVOS_MENU_BADGE_LIMIT 256
static uintptr_t cheevos_badge_menu_texture_list[CHEEVOS_MENU_BADGE_LIMIT] = { 0 };
void cheevos_reset_menu_badges(void)
{
if (!badge_struct)
return;
int index;
for (index = 0; index < CHEEVOS_MENU_BADGE_LIMIT; ++index)
{
if (cheevos_badge_menu_texture_list[index])
video_driver_texture_unload(&cheevos_badge_menu_texture_list[index]);
}
badge_struct->badge_id_list[id] = badge_id;
badge_struct->badge_locked[id] = active;
set_badge_menu_texture(badge_struct, id);
memset(&cheevos_badge_menu_texture_list, 0, sizeof(cheevos_badge_menu_texture_list));
}
menu_texture_item get_badge_texture(int id)
void cheevos_set_menu_badge(int index, const char *badge, bool locked)
{
settings_t *settings = config_get_ptr();
if (!settings || !settings->bools.cheevos_badges_enable)
return (menu_texture_item)NULL;
return badges_ctx.menu_texture_list[id];
if (index >= CHEEVOS_MENU_BADGE_LIMIT)
return;
if (!settings || !settings->bools.cheevos_badges_enable)
cheevos_badge_menu_texture_list[index] = 0;
else
cheevos_badge_menu_texture_list[index] = cheevos_get_badge_texture(badge, locked);
}
uintptr_t cheevos_get_menu_badge_texture(int index)
{
if (index < CHEEVOS_MENU_BADGE_LIMIT)
return cheevos_badge_menu_texture_list[index];
return 0;
}
#endif
uintptr_t cheevos_get_badge_texture(const char *badge, bool locked)
{
char badge_file[24];
char fullpath[PATH_MAX_LENGTH];
uintptr_t tex;
if (!badge)
return 0;
snprintf(badge_file, sizeof(badge_file), "%s%s.png", badge, locked ? "_lock" : "");
fill_pathname_application_special(fullpath,
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES);
gfx_display_reset_textures_list(badge_file, fullpath,
&tex, TEXTURE_FILTER_MIPMAP_LINEAR, NULL, NULL);
return tex;
}
+8 -17
View File
@@ -16,28 +16,19 @@
#ifndef __RARCH_CHEEVOS_BADGE_H
#define __RARCH_CHEEVOS_BADGE_H
#include <stdint.h>
#include <retro_common_api.h>
#include "../menu/menu_driver.h"
#include <boolean.h>
RETRO_BEGIN_DECLS
#define CHEEVOS_BADGE_LIMIT 256
#ifdef HAVE_MENU
void cheevos_reset_menu_badges(void);
void cheevos_set_menu_badge(int index, const char *badge, bool locked);
uintptr_t cheevos_get_menu_badge_texture(int index);
#endif
typedef struct
{
bool badge_locked[CHEEVOS_BADGE_LIMIT];
const char * badge_id_list[CHEEVOS_BADGE_LIMIT];
menu_texture_item menu_texture_list[CHEEVOS_BADGE_LIMIT];
} badges_ctx_t;
bool badge_exists(const char* filepath);
void set_badge_menu_texture(badges_ctx_t * badges, int i);
extern void set_badge_info (badges_ctx_t *badge_struct, int id, const char *badge_id, bool active);
extern menu_texture_item get_badge_texture(int id);
extern badges_ctx_t badges_ctx;
static badges_ctx_t new_badges_ctx;
uintptr_t cheevos_get_badge_texture(const char* badge, bool locked);
RETRO_END_DECLS
+467 -213
View File
File diff suppressed because it is too large. Load diff
+5
View File
@@ -45,6 +45,7 @@ bool rcheevos_load(const void *data);
void rcheevos_reset_game(void);
void rcheevos_populate_menu(void *data);
void rcheevos_get_achievement_state(unsigned index, char* buffer, size_t buffer_size);
bool rcheevos_get_description(rcheevos_ctx_desc_t *desc);
@@ -64,6 +65,10 @@ bool rcheevos_get_support_cheevos(void);
int rcheevos_get_console(void);
const char* rcheevos_get_hash(void);
const char *rcheevos_get_richpresence(void);
extern bool rcheevos_loaded;
extern bool rcheevos_hardcore_active;
extern bool rcheevos_hardcore_paused;
+25 -12
View File
@@ -124,6 +124,7 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
{
rarch_system_info_t* system = runloop_get_system_info();
const void* pointer = NULL;
unsigned original_address = address;
if (console == RC_CONSOLE_NINTENDO)
{
@@ -208,6 +209,21 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
address += 0x006000 - 0x020000;
}
}
else if (console == RC_CONSOLE_SEGA_CD)
{
if (address < 0x010000)
{
/* Work RAM. */
address += 0xFF0000;
CHEEVOS_LOG(RCHEEVOS_TAG "Sega CD memory address %X adjusted to %X\n", original_address, address);
}
else
{
/* CD-ROM peripheral RAM - exposed at virtual address to avoid banking */
address += 0x80020000 - 0x010000;
CHEEVOS_LOG(RCHEEVOS_TAG "Sega CD memory address %X adjusted to %X\n", original_address, address);
}
}
desc = system->mmaps.descriptors;
end = desc + system->mmaps.num_descriptors;
@@ -216,19 +232,18 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
{
if (((desc->core.start ^ address) & desc->core.select) == 0)
{
unsigned addr = address;
pointer = desc->core.ptr;
pointer = desc->core.ptr;
address -= desc->core.start;
address = (unsigned)rcheevos_var_reduce(
(addr - desc->core.start) & desc->disconnect_mask,
desc->core.disconnect);
if (desc->disconnect_mask)
address = (unsigned)rcheevos_var_reduce(address & desc->disconnect_mask, desc->core.disconnect);
if (address >= desc->core.len)
address -= rcheevos_var_highest_bit(address);
address += desc->core.offset;
CHEEVOS_LOG(RCHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", addr, (int)((desc - system->mmaps.descriptors) + 1), address);
CHEEVOS_LOG(RCHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", original_address, (int)((desc - system->mmaps.descriptors) + 1), address);
break;
}
}
@@ -236,7 +251,6 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
else
{
unsigned i;
unsigned addr = address;
for (i = 0; i < 4; i++)
{
@@ -260,10 +274,9 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
core_get_memory(&meminfo);
if (addr < meminfo.size)
if (address < meminfo.size)
{
pointer = meminfo.data;
address = addr;
break;
}
@@ -272,15 +285,15 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
* it's size is not always set correctly in the core.
*/
if (i == 0 && console == RC_CONSOLE_NINTENDO)
addr -= 0x6000;
address -= 0x6000;
else
addr -= meminfo.size;
address -= meminfo.size;
}
}
if (pointer == NULL)
{
CHEEVOS_LOG(RCHEEVOS_TAG "address %X not supported\n", address);
CHEEVOS_LOG(RCHEEVOS_TAG "address %X not supported\n", original_address);
return NULL;
}
+129 -21
View File
@@ -3,6 +3,7 @@
#include "hash.h"
#include "util.h"
#include <encodings/utf.h>
#include <formats/jsonsax.h>
#include <string/stdstring.h>
#include <compat/strl.h>
@@ -23,6 +24,7 @@
#define CHEEVOS_JSON_KEY_TOKEN 0x0e2dbd26U
#define CHEEVOS_JSON_KEY_FLAGS 0x0d2e96b2U
#define CHEEVOS_JSON_KEY_LEADERBOARDS 0xf1247d2dU
#define CHEEVOS_JSON_KEY_RICHPRESENCE 0xf18dd230U
#define CHEEVOS_JSON_KEY_MEM 0x0b8807e4U
#define CHEEVOS_JSON_KEY_FORMAT 0xb341208eU
#define CHEEVOS_JSON_KEY_SUCCESS 0x110461deU
@@ -139,7 +141,7 @@ static int rcheevos_get_value(const char* json, unsigned key_hash,
}
/*****************************************************************************
Returns the token of the error message
Returns the token or the error message
*****************************************************************************/
int rcheevos_get_token(const char* json, char* token, size_t length)
@@ -152,6 +154,11 @@ int rcheevos_get_token(const char* json, char* token, size_t length)
return rcheevos_get_value(json, CHEEVOS_JSON_KEY_TOKEN, token, length);
}
int rcheevos_get_json_error(const char* json, char* token, size_t length)
{
return rcheevos_get_value(json, CHEEVOS_JSON_KEY_ERROR, token, length);
}
/*****************************************************************************
Count number of achievements in a JSON file
*****************************************************************************/
@@ -160,6 +167,7 @@ typedef struct
{
int in_cheevos;
int in_lboards;
int has_error;
uint32_t field_hash;
unsigned core_count;
unsigned unofficial_count;
@@ -183,9 +191,11 @@ static int rcheevos_count_key(void* userdata,
ud->field_hash = rcheevos_djb2(name, length);
if (ud->field_hash == CHEEVOS_JSON_KEY_ACHIEVEMENTS)
ud->in_cheevos = 1;
ud->in_cheevos = 1;
else if (ud->field_hash == CHEEVOS_JSON_KEY_LEADERBOARDS)
ud->in_lboards = 1;
ud->in_lboards = 1;
else if (ud->field_hash == CHEEVOS_JSON_KEY_ERROR)
ud->has_error = 1;
return 0;
}
@@ -212,7 +222,7 @@ static int rcheevos_count_number(void* userdata,
static int rcheevos_count_cheevos(const char* json,
unsigned* core_count, unsigned* unofficial_count,
unsigned* lboard_count)
unsigned* lboard_count, int* has_error)
{
static const jsonsax_handlers_t handlers =
{
@@ -234,6 +244,7 @@ static int rcheevos_count_cheevos(const char* json,
rcheevos_countud_t ud;
ud.in_cheevos = 0;
ud.in_lboards = 0;
ud.has_error = 0;
ud.core_count = 0;
ud.unofficial_count = 0;
ud.lboard_count = 0;
@@ -243,6 +254,7 @@ static int rcheevos_count_cheevos(const char* json,
*core_count = ud.core_count;
*unofficial_count = ud.unofficial_count;
*lboard_count = ud.lboard_count;
*has_error = ud.has_error;
return res;
}
@@ -261,7 +273,10 @@ typedef struct
{
int in_cheevos;
int in_lboards;
int is_game_id;
int is_title;
int is_console_id;
int is_richpresence;
unsigned core_count;
unsigned unofficial_count;
unsigned lboard_count;
@@ -273,16 +288,77 @@ typedef struct
rcheevos_rapatchdata_t* patchdata;
} rcheevos_readud_t;
static const char* rcheevos_dupstr(const rcheevos_field_t* field)
static char* rcheevos_unescape_string(const char* string, size_t length)
{
char* string = (char*)malloc(field->length + 1);
const char* end = string + length;
char* buffer = (char*)malloc(length + 1);
char* buffer_it = buffer;
if (!string)
if (buffer == NULL)
return NULL;
memcpy((void*)string, (void*)field->string, field->length);
string[field->length] = 0;
return string;
while (string < end)
{
if (*string == '\\')
{
char escaped_char = string[1];
switch (escaped_char)
{
case 'r': /* Ignore carriage return */
string += 2;
break;
case 'n': /* Accept newlines */
*buffer_it++ = '\n';
string += 2;
break;
case 'u': /* Accept UTF-16 unicode characters */
{
#define MAX_SEQUENCES 16
uint16_t utf16[MAX_SEQUENCES];
char utf8[MAX_SEQUENCES * 4];
uint8_t i, j;
for (i = 1; i < MAX_SEQUENCES - 1; i++)
if (strncmp((string + 6 * i), "\\u", 2))
break;
/* Get escaped hex values and add them to the string */
for (j = 0; j < i; j++)
{
char temp[5];
string += 2;
memcpy(temp, string, 4);
temp[4] = '\0';
utf16[j] = string_hex_to_unsigned(temp);
string += 4;
}
utf16[j] = 0;
if (utf16_to_char_string(utf16, utf8, sizeof(utf8)))
{
memcpy(buffer_it, utf8, strlen(utf8));
buffer_it += strlen(utf8);
}
}
break;
default:
*buffer_it++ = escaped_char;
string += 2;
break;
};
}
else
{
*buffer_it++ = *string++;
}
}
*buffer_it = '\0';
return buffer;
}
static int rcheevos_new_cheevo(rcheevos_readud_t* ud)
@@ -297,10 +373,10 @@ static int rcheevos_new_cheevo(rcheevos_readud_t* ud)
else
return 0;
cheevo->title = rcheevos_dupstr(&ud->title);
cheevo->description = rcheevos_dupstr(&ud->desc);
cheevo->badge = rcheevos_dupstr(&ud->badge);
cheevo->memaddr = rcheevos_dupstr(&ud->memaddr);
cheevo->title = rcheevos_unescape_string(ud->title.string, ud->title.length);
cheevo->description = rcheevos_unescape_string(ud->desc.string, ud->desc.length);
cheevo->badge = rcheevos_unescape_string(ud->badge.string, ud->badge.length);
cheevo->memaddr = rcheevos_unescape_string(ud->memaddr.string, ud->memaddr.length);
cheevo->points = (unsigned)strtol(ud->points.string, NULL, 10);
cheevo->id = (unsigned)strtol(ud->id.string, NULL, 10);
@@ -323,11 +399,11 @@ static int rcheevos_new_lboard(rcheevos_readud_t* ud)
{
rcheevos_ralboard_t* lboard = ud->patchdata->lboards + ud->lboard_count++;
lboard->title = rcheevos_dupstr(&ud->title);
lboard->description = rcheevos_dupstr(&ud->desc);
lboard->format = rcheevos_dupstr(&ud->format);
lboard->mem = rcheevos_dupstr(&ud->memaddr);
lboard->id = (unsigned)strtol(ud->id.string, NULL, 10);
lboard->title = rcheevos_unescape_string(ud->title.string, ud->title.length);
lboard->description = rcheevos_unescape_string(ud->desc.string, ud->desc.length);
lboard->format = rcheevos_unescape_string(ud->format.string, ud->format.length);
lboard->mem = rcheevos_unescape_string(ud->memaddr.string, ud->memaddr.length);
lboard->id = (unsigned)strtol(ud->id.string, NULL, 10);
if ( !lboard->title
|| !lboard->description
@@ -386,9 +462,14 @@ static int rcheevos_read_key(void* userdata,
case CHEEVOS_JSON_KEY_CONSOLE_ID:
ud->is_console_id = 1;
break;
case CHEEVOS_JSON_KEY_RICHPRESENCE:
ud->is_richpresence = 1;
break;
case CHEEVOS_JSON_KEY_ID:
if (common)
ud->field = &ud->id;
else
ud->is_game_id = 1;
break;
case CHEEVOS_JSON_KEY_MEMADDR:
if (ud->in_cheevos)
@@ -401,6 +482,8 @@ static int rcheevos_read_key(void* userdata,
case CHEEVOS_JSON_KEY_TITLE:
if (common)
ud->field = &ud->title;
else
ud->is_title = 1;
break;
case CHEEVOS_JSON_KEY_DESCRIPTION:
if (common)
@@ -451,6 +534,16 @@ static int rcheevos_read_string(void* userdata,
ud->field->string = string;
ud->field->length = length;
}
else if (ud->is_title)
{
ud->patchdata->title = rcheevos_unescape_string(string, length);
ud->is_title = 0;
}
else if (ud->is_richpresence)
{
ud->patchdata->richpresence_script = rcheevos_unescape_string(string, length);
ud->is_richpresence = 0;
}
return 0;
}
@@ -465,6 +558,11 @@ static int rcheevos_read_number(void* userdata,
ud->field->string = number;
ud->field->length = length;
}
else if (ud->is_game_id)
{
ud->patchdata->game_id = (unsigned)strtol(number, NULL, 10);
ud->is_game_id = 0;
}
else if (ud->is_console_id)
{
ud->patchdata->console_id = (unsigned)strtol(number, NULL, 10);
@@ -494,12 +592,13 @@ int rcheevos_get_patchdata(const char* json, rcheevos_rapatchdata_t* patchdata)
rcheevos_readud_t ud;
int res;
int has_error;
/* Count the number of achievements in the JSON file. */
res = rcheevos_count_cheevos(json, &patchdata->core_count,
&patchdata->unofficial_count, &patchdata->lboard_count);
&patchdata->unofficial_count, &patchdata->lboard_count, &has_error);
if (res != JSONSAX_OK)
if (res != JSONSAX_OK || has_error)
return -1;
/* Allocate the achievements. */
@@ -524,10 +623,16 @@ int rcheevos_get_patchdata(const char* json, rcheevos_rapatchdata_t* patchdata)
return -1;
}
patchdata->richpresence_script = NULL;
patchdata->title = NULL;
/* Load the achievements. */
ud.in_cheevos = 0;
ud.in_lboards = 0;
ud.is_game_id = 0;
ud.is_title = 0;
ud.is_console_id = 0;
ud.is_richpresence = 0;
ud.field = NULL;
ud.core_count = 0;
ud.unofficial_count = 0;
@@ -586,7 +691,10 @@ void rcheevos_free_patchdata(rcheevos_rapatchdata_t* patchdata)
CHEEVOS_FREE(patchdata->core);
CHEEVOS_FREE(patchdata->unofficial);
CHEEVOS_FREE(patchdata->lboards);
CHEEVOS_FREE(patchdata->richpresence_script);
CHEEVOS_FREE(patchdata->title);
patchdata->game_id = 0;
patchdata->console_id = 0;
patchdata->core = NULL;
patchdata->unofficial = NULL;
+4
View File
@@ -42,11 +42,14 @@ typedef struct {
} rcheevos_ralboard_t;
typedef struct {
unsigned game_id;
unsigned console_id;
char* title;
rcheevos_racheevo_t* core;
rcheevos_racheevo_t* unofficial;
rcheevos_ralboard_t* lboards;
char* richpresence_script;
unsigned core_count;
unsigned unofficial_count;
@@ -55,6 +58,7 @@ typedef struct {
typedef void (*rcheevos_unlock_cb_t)(unsigned id, void* userdata);
int rcheevos_get_json_error(const char* json, char* token, size_t length);
int rcheevos_get_token(const char* json, char* token, size_t length);
int rcheevos_get_patchdata(const char* json, rcheevos_rapatchdata_t* patchdata);
+4 -3
View File
@@ -180,6 +180,8 @@ enum event_command
CMD_EVENT_DISK_NEXT,
/* Cycle to previous disk. */
CMD_EVENT_DISK_PREV,
/* Switch to specified disk index */
CMD_EVENT_DISK_INDEX,
/* Appends disk image to disk image list. */
CMD_EVENT_DISK_APPEND_IMAGE,
/* Stops rumbling. */
@@ -208,11 +210,10 @@ enum event_command
CMD_EVENT_CHEAT_INDEX_PLUS,
CMD_EVENT_CHEAT_INDEX_MINUS,
CMD_EVENT_CHEAT_TOGGLE,
CMD_EVENT_AI_SERVICE_CALL
CMD_EVENT_AI_SERVICE_CALL,
CMD_EVENT_SAVE_FILES
};
bool command_set_shader(const char *arg);
/**
* command_event:
* @cmd : Command index.
+195 -155
View File
@@ -139,6 +139,11 @@
#define DEFAULT_MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION_ALWAYS
#endif
/* Show/hide navigation bar
* > When hidden, MaterialUI menu navigation
* behaves like RGUI */
#define DEFAULT_MATERIALUI_SHOW_NAV_BAR true
/* Reposition navigation bar to make better use
* of screen space when using landscape layouts */
#define DEFAULT_MATERIALUI_AUTO_ROTATE_NAV_BAR true
@@ -329,7 +334,14 @@
#endif
/* Smooths picture. */
#if defined(_3DS) || defined(GEKKO) || defined(HW_RVL) || defined(PSP) || defined(VITA) || defined(SN_TARGET_PSP2) || defined(PS2) || defined(_XBOX)
#define DEFAULT_VIDEO_SMOOTH true
#else
#define DEFAULT_VIDEO_SMOOTH false
#endif
/* Graphics context specific scaling */
#define DEFAULT_VIDEO_CTX_SCALING false
/* On resize and fullscreen, rendering area will stay 4:3 */
#define DEFAULT_FORCE_ASPECT true
@@ -386,9 +398,9 @@
#define DEFAULT_OVERLAY_AUTO_ROTATE false
#endif
#include "runtime_file.h"
#ifdef HAVE_MENU
#include "menu/menu_driver.h"
#include "menu/menu_animation.h"
#ifdef HAVE_LIBNX
#define DEFAULT_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME true
@@ -397,6 +409,8 @@
#endif
#ifdef HAVE_OZONE
/* Ozone colour theme: 1 == Basic Black */
#define DEFAULT_OZONE_COLOR_THEME 1
#define DEFAULT_OZONE_COLLAPSE_SIDEBAR false
#define DEFAULT_OZONE_TRUNCATE_PLAYLIST_NAME true
#define DEFAULT_OZONE_SCROLL_CONTENT_METADATA false
@@ -448,89 +462,102 @@
#define DEFAULT_QUICK_MENU_SHOW_CLOSE_CONTENT true
static bool quick_menu_show_take_screenshot = true;
static bool quick_menu_show_save_load_state = true;
static bool quick_menu_show_undo_save_load_state = true;
static bool quick_menu_show_add_to_favorites = true;
static bool quick_menu_show_start_recording = true;
static bool quick_menu_show_start_streaming = true;
static bool quick_menu_show_set_core_association = true;
static bool quick_menu_show_reset_core_association = true;
static bool quick_menu_show_options = true;
static bool quick_menu_show_controls = true;
static bool quick_menu_show_cheats = true;
static bool quick_menu_show_shaders = true;
static bool quick_menu_show_information = true;
static bool quick_menu_show_recording = true;
static bool quick_menu_show_streaming = true;
#define DEFAULT_QUICK_MENU_SHOW_TAKE_SCREENSHOT true
static bool quick_menu_show_save_core_overrides = true;
static bool quick_menu_show_save_game_overrides = true;
static bool quick_menu_show_save_content_dir_overrides = true;
#define DEFAULT_QUICK_MENU_SHOW_SAVE_LOAD_STATE true
static bool quick_menu_show_download_thumbnails = true;
#define DEFAULT_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE true
static bool kiosk_mode_enable = false;
static const bool quick_menu_show_add_to_favorites = true;
static const bool quick_menu_show_start_recording = true;
static const bool quick_menu_show_start_streaming = true;
static const bool quick_menu_show_set_core_association = true;
static const bool quick_menu_show_reset_core_association = true;
static const bool quick_menu_show_options = true;
static const bool quick_menu_show_controls = true;
static const bool quick_menu_show_cheats = true;
static const bool quick_menu_show_shaders = true;
static const bool quick_menu_show_information = true;
static const bool quick_menu_show_recording = true;
static const bool quick_menu_show_streaming = true;
static const bool quick_menu_show_save_core_overrides = true;
static const bool quick_menu_show_save_game_overrides = true;
static const bool quick_menu_show_save_content_dir_overrides = true;
#ifdef HAVE_NETWORKING
static const bool quick_menu_show_download_thumbnails = true;
#endif
#define DEFAULT_KIOSK_MODE_ENABLE false
#define DEFAULT_MENU_HORIZONTAL_ANIMATION true
static bool menu_show_online_updater = true;
static bool menu_show_load_core = true;
static bool menu_show_load_content = true;
static const bool menu_show_online_updater = true;
static const bool menu_show_load_core = true;
static const bool menu_show_load_content = true;
#ifdef HAVE_CDROM
static bool menu_show_load_disc = true;
static bool menu_show_dump_disc = true;
static const bool menu_show_load_disc = true;
static const bool menu_show_dump_disc = true;
#endif
static bool menu_show_information = true;
static bool menu_show_configurations = true;
static bool menu_show_help = true;
static bool menu_show_quit_retroarch = true;
static bool menu_show_restart_retroarch = true;
static bool menu_show_reboot = true;
static bool menu_show_shutdown = true;
static const bool menu_show_information = true;
static const bool menu_show_configurations = true;
static const bool menu_show_help = true;
static const bool menu_show_quit_retroarch = true;
static const bool menu_show_restart_retroarch = true;
static const bool menu_show_reboot = true;
static const bool menu_show_shutdown = true;
#if defined(HAVE_LAKKA) || defined(VITA) || defined(_3DS)
static bool menu_show_core_updater = false;
static const bool menu_show_core_updater = false;
#else
static bool menu_show_core_updater = true;
static const bool menu_show_core_updater = true;
#endif
static bool menu_show_legacy_thumbnail_updater = false;
static bool menu_show_sublabels = true;
static const bool menu_show_legacy_thumbnail_updater = false;
static const bool menu_show_sublabels = true;
static unsigned menu_ticker_type = TICKER_TYPE_BOUNCE;
static float menu_ticker_speed = 1.0f;
static const bool menu_scroll_fast = false;
#define DEFAULT_MENU_TICKER_TYPE (TICKER_TYPE_BOUNCE)
static const float menu_ticker_speed = 1.0f;
#define DEFAULT_MENU_TICKER_SMOOTH true
#if defined(HAVE_THREADS)
static bool menu_savestate_resume = true;
static const bool menu_savestate_resume = true;
#else
static bool menu_savestate_resume = false;
static const bool menu_savestate_resume = false;
#endif
static bool content_show_settings = true;
static bool content_show_favorites = true;
#define DEFAULT_MENU_INSERT_DISK_RESUME true
static const bool content_show_settings = true;
static const bool content_show_favorites = true;
#ifdef HAVE_IMAGEVIEWER
static bool content_show_images = true;
static const bool content_show_images = true;
#endif
static bool content_show_music = true;
static const bool content_show_music = true;
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
static bool content_show_video = true;
static const bool content_show_video = true;
#endif
#ifdef HAVE_NETWORKING
static bool content_show_netplay = true;
static const bool content_show_netplay = true;
#endif
static bool content_show_history = true;
static bool content_show_add = true;
static bool content_show_playlists = true;
static const bool content_show_history = true;
static const bool content_show_add = true;
static const bool content_show_playlists = true;
#ifdef HAVE_XMB
static unsigned xmb_alpha_factor = 75;
static unsigned menu_font_color_red = 255;
static unsigned menu_font_color_green = 255;
static unsigned menu_font_color_blue = 255;
static unsigned xmb_menu_layout = 0;
static unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME;
static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE;
static const unsigned xmb_alpha_factor = 75;
static const unsigned menu_font_color_red = 255;
static const unsigned menu_font_color_green = 255;
static const unsigned menu_font_color_blue = 255;
#ifdef HAVE_ODROIDGO2
static const unsigned xmb_menu_layout = 2;
#else
static const unsigned xmb_menu_layout = 0;
#endif
static const unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME;
static const unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE;
#if defined(HAVE_LAKKA) || defined(__arm__) || defined(__PPC64__) || defined(__ppc64__) || defined(__powerpc64__) || defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__)
#define DEFAULT_XMB_SHADOWS_ENABLE false
@@ -539,13 +566,13 @@ static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE;
#endif
#endif
static float menu_framebuffer_opacity = 0.900;
static const float menu_framebuffer_opacity = 0.900;
static float menu_wallpaper_opacity = 0.300;
static const float menu_wallpaper_opacity = 0.300;
static float menu_footer_opacity = 1.000;
static const float menu_footer_opacity = 1.000;
static float menu_header_opacity = 1.000;
static const float menu_header_opacity = 1.000;
#if defined(HAVE_OPENGLES2) || (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__)))
#define DEFAULT_MENU_SHADER_PIPELINE 1
@@ -557,18 +584,18 @@ static float menu_header_opacity = 1.000;
#define DEFAULT_RGUI_COLOR_THEME RGUI_THEME_CLASSIC_GREEN
static bool rgui_inline_thumbnails = false;
static bool rgui_swap_thumbnails = false;
static unsigned rgui_thumbnail_downscaler = RGUI_THUMB_SCALE_POINT;
static unsigned rgui_thumbnail_delay = 0;
static unsigned rgui_internal_upscale_level = RGUI_UPSCALE_NONE;
static bool rgui_full_width_layout = true;
static unsigned rgui_aspect = RGUI_ASPECT_RATIO_4_3;
static unsigned rgui_aspect_lock = RGUI_ASPECT_RATIO_LOCK_NONE;
static bool rgui_shadows = false;
static unsigned rgui_particle_effect = RGUI_PARTICLE_EFFECT_NONE;
static const bool rgui_inline_thumbnails = false;
static const bool rgui_swap_thumbnails = false;
static const unsigned rgui_thumbnail_downscaler = RGUI_THUMB_SCALE_POINT;
static const unsigned rgui_thumbnail_delay = 0;
static const unsigned rgui_internal_upscale_level = RGUI_UPSCALE_NONE;
static const bool rgui_full_width_layout = true;
static const unsigned rgui_aspect = RGUI_ASPECT_RATIO_4_3;
static const unsigned rgui_aspect_lock = RGUI_ASPECT_RATIO_LOCK_NONE;
static const bool rgui_shadows = false;
static const unsigned rgui_particle_effect = RGUI_PARTICLE_EFFECT_NONE;
#define DEFAULT_RGUI_PARTICLE_EFFECT_SPEED 1.0f
static bool rgui_extended_ascii = false;
static const bool rgui_extended_ascii = false;
#endif
#ifdef HAVE_MENU
@@ -580,37 +607,37 @@ static bool rgui_extended_ascii = false;
/* TODO/FIXME - this setting is thread-unsafe right now and can corrupt the stack - default to off */
#define DEFAULT_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST false
static bool default_game_specific_options = true;
static bool default_auto_overrides_enable = true;
static bool default_auto_remaps_enable = true;
static bool default_global_core_options = true;
static bool default_auto_shaders_enable = true;
static const bool default_game_specific_options = true;
static const bool default_auto_overrides_enable = true;
static const bool default_auto_remaps_enable = true;
static const bool default_global_core_options = true;
static const bool default_auto_shaders_enable = true;
static bool default_sort_savefiles_enable = false;
static bool default_sort_savestates_enable = false;
static const bool default_sort_savefiles_enable = false;
static const bool default_sort_savestates_enable = false;
static bool default_savestates_in_content_dir = false;
static bool default_savefiles_in_content_dir = false;
static bool default_systemfiles_in_content_dir = false;
static bool default_screenshots_in_content_dir = false;
static const bool default_savestates_in_content_dir = false;
static const bool default_savefiles_in_content_dir = false;
static const bool default_systemfiles_in_content_dir = false;
static const bool default_screenshots_in_content_dir = false;
#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360) || defined(DINGUX)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
#elif defined(PS2) || defined(PSP)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_HOLD_START;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_HOLD_START;
#elif defined(VITA)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT;
#elif defined(SWITCH) || defined(ORBIS)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT;
#elif TARGET_OS_TV
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_DOWN_Y_L_R;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_DOWN_Y_L_R;
#else
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE;
static const unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE;
#endif
#if defined(VITA)
static unsigned input_backtouch_enable = false;
static unsigned input_backtouch_toggle = false;
static const unsigned input_backtouch_enable = false;
static const unsigned input_backtouch_toggle = false;
#endif
#define DEFAULT_SHOW_PHYSICAL_INPUTS true
@@ -717,7 +744,7 @@ static const bool audio_enable_menu_cancel = false;
static const bool audio_enable_menu_notice = false;
static const bool audio_enable_menu_bgm = false;
#ifdef HAVE_MENU_WIDGETS
#ifdef HAVE_GFX_WIDGETS
#define DEFAULT_MENU_ENABLE_WIDGETS true
#else
#define DEFAULT_MENU_ENABLE_WIDGETS false
@@ -770,9 +797,10 @@ static const bool audio_enable_menu_bgm = false;
#ifdef HAVE_WASAPI
/* WASAPI defaults */
static const bool wasapi_exclusive_mode = true;
static const bool wasapi_float_format = false;
static const int wasapi_sh_buffer_length = -16; /* auto */
#define DEFAULT_WASAPI_EXCLUSIVE_MODE true
#define DEFAULT_WASAPI_FLOAT_FORMAT false
/* auto */
#define DEFAULT_WASAPI_SH_BUFFER_LENGTH -16
#endif
/* MISC */
@@ -856,7 +884,7 @@ static const int netplay_check_frames = 600;
static const bool netplay_use_mitm_server = false;
static const char *netplay_mitm_server = "nyc";
#define DEFAULT_NETPLAY_MITM_SERVER "nyc"
#ifdef HAVE_NETWORKING
static const unsigned netplay_share_digital = RARCH_NETPLAY_SHARE_DIGITAL_NO_PREFERENCE;
@@ -896,10 +924,10 @@ static const bool savestate_thumbnail_enable = false;
#define DEFAULT_RUN_AHEAD_FRAMES 1
/* When using the Run Ahead feature, use a secondary instance of the core. */
static const bool run_ahead_secondary_instance = true;
#define DEFAULT_RUN_AHEAD_SECONDARY_INSTANCE true
/* Hide warning messages when using the Run Ahead feature. */
static const bool run_ahead_hide_warnings = false;
#define DEFAULT_RUN_AHEAD_HIDE_WARNINGS false
/* Enable stdin/network command interface. */
static const bool network_cmd_enable = false;
@@ -940,7 +968,7 @@ static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE
static const unsigned playlist_entry_remove_enable = PLAYLIST_ENTRY_REMOVE_ENABLE_ALL;
#endif
static const bool scan_without_core_match = false;
#define DEFAULT_SCAN_WITHOUT_CORE_MATCH false
#ifdef __WINRT__
/* Be paranoid about WinRT file I/O performance, and leave this disabled by
@@ -950,14 +978,23 @@ static const bool scan_without_core_match = false;
#define DEFAULT_PLAYLIST_SHOW_SUBLABELS true
#endif
static const bool playlist_fuzzy_archive_match = false;
#define DEFAULT_PLAYLIST_FUZZY_ARCHIVE_MATCH false
/* Show Menu start-up screen on boot. */
static const bool default_menu_show_start_screen = true;
#define DEFAULT_MENU_SHOW_START_SCREEN true
/* Default scale factor for non-frambuffer-based menu
* drivers and menu widgets */
/* Default scale factor for non-frambuffer-based display
* drivers and display widgets */
#define DEFAULT_MENU_SCALE_FACTOR 1.0f
/* Specifies whether display widgets should be scaled
* automatically using the default menu scale factor */
#define DEFAULT_MENU_WIDGET_SCALE_AUTO true
/* Default scale factor for display widgets when widget
* auto scaling is disabled (fullscreen mode) */
#define DEFAULT_MENU_WIDGET_SCALE_FACTOR 1.0f
/* Default scale factor for display widgets when widget
* auto scaling is disabled (windowed mode) */
#define DEFAULT_MENU_WIDGET_SCALE_FACTOR_WINDOWED 1.0f
/* Log level for the frontend */
#define DEFAULT_FRONTEND_LOG_LEVEL 1
@@ -977,11 +1014,11 @@ static const bool default_menu_show_start_screen = true;
/* Axis threshold (between 0.0 and 1.0)
* How far an axis must be tilted to result in a button press. */
static const float axis_threshold = 0.5f;
#define DEFAULT_AXIS_THRESHOLD 0.5f
static const float analog_deadzone = 0.0f;
#define DEFAULT_ANALOG_DEADZONE 0.0f
static const float analog_sensitivity = 1.0f;
#define DEFAULT_ANALOG_SENSITIVITY 1.0f
/* Describes speed of which turbo-enabled buttons toggle. */
static const unsigned turbo_period = 6;
@@ -1007,14 +1044,14 @@ static const unsigned input_bind_timeout = 5;
static const unsigned input_bind_hold = 2;
static const unsigned menu_thumbnails_default = 3;
static const unsigned gfx_thumbnails_default = 3;
static const unsigned menu_left_thumbnails_default = 0;
static const unsigned menu_thumbnail_upscale_threshold = 0;
static const unsigned gfx_thumbnail_upscale_threshold = 0;
#ifdef HAVE_MENU
static const unsigned menu_timedate_style = MENU_TIMEDATE_STYLE_DM_HM;
static const unsigned menu_timedate_style = MENU_TIMEDATE_STYLE_DDMM_HM;
#endif
static const bool xmb_vertical_thumbnails = false;
@@ -1033,7 +1070,7 @@ static const bool ui_companion_enable = false;
static const bool ui_companion_toggle = false;
/* Only init the WIMP UI for this session if this is enabled */
static const bool desktop_menu_enable = true;
#define DEFAULT_DESKTOP_MENU_ENABLE true
/* Keep track of how long each core+content has been running for over time */
@@ -1045,22 +1082,25 @@ static const bool desktop_menu_enable = true;
#define DEFAULT_CONTENT_RUNTIME_LOG true
#endif
/* Keep track of how long each content has been running for over time (ignores core) */
static const bool content_runtime_log_aggregate = false;
/* Keep track of how long each content has been running
* for over time (ignores core) */
#define DEFAULT_CONTENT_RUNTIME_LOG_AGGREGATE false
#define DEFAULT_UI_MENUBAR_ENABLE true
#if defined(__QNX__) || defined(_XBOX1) || defined(_XBOX360) || defined(__CELLOS_LV2__) || (defined(__MACH__) && defined(IOS)) || defined(ANDROID) || defined(WIIU) || defined(HAVE_NEON) || defined(GEKKO) || defined(__ARM_NEON__)
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWER;
static const enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWER;
#elif defined(PSP) || defined(_3DS) || defined(VITA) || defined(PS2) || defined(DINGUX)
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWEST;
static const enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWEST;
#else
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL;
static const enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL;
#endif
/* MIDI */
static const char *midi_input = "Off";
static const char *midi_output = "Off";
#define DEFAULT_MIDI_INPUT "Off"
#define DEFAULT_MIDI_OUTPUT "Off"
static const unsigned midi_volume = 100;
/* Only applies to Android 7.0 (API 24) and up */
@@ -1086,100 +1126,100 @@ static const bool enable_device_vibration = false;
#endif
#if defined(HAKCHI)
static char buildbot_server_url[] = "http://hakchicloud.com/Libretro_Cores/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://hakchicloud.com/Libretro_Cores/"
#elif defined(ANDROID)
#if defined(ANDROID_ARM_V7)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi-v7a/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/android/latest/armeabi-v7a/"
#elif defined(ANDROID_ARM)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/android/latest/armeabi/"
#elif defined(ANDROID_AARCH64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/arm64-v8a/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/android/latest/arm64-v8a/"
#elif defined(ANDROID_X86)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/x86/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/android/latest/x86/"
#elif defined(ANDROID_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/x86_64/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/android/latest/x86_64/"
#else
static char buildbot_server_url[] = "";
#define DEFAULT_BUILDBOT_SERVER_URL ""
#endif
#elif defined(__QNX__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/blackberry/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/blackberry/latest/"
#elif defined(IOS)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/ios/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/apple/ios/latest/"
#elif defined(OSX)
#if defined(__x86_64__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/osx/x86_64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/apple/osx/x86_64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__)
static char buildbot_server_url[] = "http://bot.libretro.com/nightly/apple/osx/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://bot.libretro.com/nightly/apple/osx/x86/latest/"
#else
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/osx/ppc/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/apple/osx/ppc/latest/"
#endif
#elif defined(_WIN32) && !defined(_XBOX)
#if _MSC_VER >= 1910
#ifndef __WINRT__
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x86/latest/"
#elif defined(__arm__) || defined(_M_ARM)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/arm/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/arm/latest/"
#elif defined(__aarch64__) || defined(_M_ARM64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/arm64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/arm64/latest/"
#endif
#else
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x86/latest/"
#elif defined(__arm__) || defined(_M_ARM)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/arm/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/arm/latest/"
#elif defined(__aarch64__) || defined(_M_ARM64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/arm64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/arm64/latest/"
#endif
#endif
#elif _MSC_VER == 1600
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2010/x86_64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2010/x86_64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2010/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2010/x86/latest/"
#endif
#elif _MSC_VER == 1400
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2005/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2005/x86/latest/"
#elif _MSC_VER == 1310
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2003/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows-msvc2003/x86/latest/"
#else
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows/x86_64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows/x86_64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/windows/x86/latest/"
#endif
#endif
#elif defined(__linux__)
#if defined(__x86_64__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/linux/x86_64/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/linux/x86_64/latest/"
#elif defined(__i386__) || defined(__i486__) || defined(__i686__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/linux/x86/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/linux/x86/latest/"
#elif defined(__arm__) && __ARM_ARCH == 7 && defined(__ARM_PCS_VFP)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/linux/armhf/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/linux/armhf/latest/"
#else
static char buildbot_server_url[] = "";
#define DEFAULT_BUILDBOT_SERVER_URL ""
#endif
#elif defined(WIIU)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/wiiu/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/nintendo/wiiu/latest/"
#elif defined(HAVE_LIBNX)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/switch/libnx/latest/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://buildbot.libretro.com/nightly/nintendo/switch/libnx/latest/"
#elif defined(__CELLOS_LV2__) && defined(DEX_BUILD)
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/dex-ps3/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/dex-ps3/"
#elif defined(__CELLOS_LV2__) && defined(CEX_BUILD)
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/cex-ps3/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/cex-ps3/"
#elif defined(__CELLOS_LV2__) && defined(ODE_BUILD)
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/ode-ps3/";
#define DEFAULT_BUILDBOT_SERVER_URL "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/ode-ps3/"
#else
static char buildbot_server_url[] = "";
#define DEFAULT_BUILDBOT_SERVER_URL ""
#endif
static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/";
#define DEFAULT_BUILDBOT_ASSETS_SERVER_URL "http://buildbot.libretro.com/assets/"
static char default_discord_app_id[] = "475456035851599874";
#define DEFAULT_DISCORD_APP_ID "475456035851599874"
#define DEFAULT_AI_SERVICE_SOURCE_LANG 0
+8
View File
@@ -71,7 +71,11 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#ifdef HAVE_LAKKA
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#else
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#endif
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
@@ -235,7 +239,11 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, RETROK_f, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#ifdef HAVE_LAKKA
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#else
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#endif
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
+280 -234
View File
@@ -47,6 +47,8 @@
#include "verbosity.h"
#include "lakka.h"
#include "gfx/gfx_animation.h"
#include "tasks/task_content.h"
#include "tasks/tasks_internal.h"
@@ -56,12 +58,6 @@
#include "uwp/uwp_func.h"
#endif
static const char* invalid_filename_chars[] = {
/* https://support.microsoft.com/en-us/help/905231/information-about-the-characters-that-you-cannot-use-in-site-names--fo */
"~", "#", "%", "&", "*", "{", "}", "\\", ":", "[", "]", "?", "/", "|", "\'", "\"",
NULL
};
/* All config related settings go here. */
struct config_bool_setting
@@ -297,7 +293,6 @@ enum osk_driver_enum
enum menu_driver_enum
{
MENU_RGUI = OSK_NULL + 1,
MENU_XUI,
MENU_MATERIALUI,
MENU_XMB,
MENU_STRIPES,
@@ -322,9 +317,9 @@ enum midi_driver_enum
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_METAL;
#elif defined(HAVE_VITA2D)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VITA2D;
#elif (defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__)) && !defined(__WINRT__)
#elif (defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__)) && !defined(__WINRT__) && !defined(__HAIKU__)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL;
#elif defined(HAVE_OPENGL_CORE)
#elif defined(HAVE_OPENGL_CORE) && !defined(__HAIKU__)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL_CORE;
#elif defined(HAVE_OPENGL1)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL1;
@@ -579,11 +574,9 @@ static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL;
#if defined(_3DS) && defined(HAVE_RGUI)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_RGUI;
#else
#if defined(HAVE_XUI)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XUI;
#elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE)
#if defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_MATERIALUI;
#elif defined(HAVE_OZONE) && (defined(HAVE_LIBNX) || TARGET_OS_TV)
#elif defined(HAVE_OZONE)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_OZONE;
#elif defined(HAVE_XMB) && !defined(_XBOX)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XMB;
@@ -629,6 +622,11 @@ static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL;
#define SETTING_OVERRIDE(override_setting) \
tmp[count-1].override = override_setting
/* Forward declarations */
#ifdef HAVE_CONFIGFILE
static void config_parse_file(global_t *global);
#endif
struct defaults g_defaults;
/**
@@ -1089,8 +1087,6 @@ const char *config_get_default_menu(void)
{
case MENU_RGUI:
return "rgui";
case MENU_XUI:
return "xui";
case MENU_OZONE:
return "ozone";
case MENU_MATERIALUI:
@@ -1172,11 +1168,11 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
SETTING_ARRAY("led_driver", settings->arrays.led_driver, false, NULL, true);
SETTING_ARRAY("netplay_mitm_server", settings->arrays.netplay_mitm_server, false, NULL, true);
SETTING_ARRAY("midi_driver", settings->arrays.midi_driver, false, NULL, true);
SETTING_ARRAY("midi_input", settings->arrays.midi_input, true, midi_input, true);
SETTING_ARRAY("midi_output", settings->arrays.midi_output, true, midi_output, true);
SETTING_ARRAY("midi_input", settings->arrays.midi_input, true, DEFAULT_MIDI_INPUT, true);
SETTING_ARRAY("midi_output", settings->arrays.midi_output, true, DEFAULT_MIDI_OUTPUT, true);
SETTING_ARRAY("youtube_stream_key", settings->arrays.youtube_stream_key, true, NULL, true);
SETTING_ARRAY("twitch_stream_key", settings->arrays.twitch_stream_key, true, NULL, true);
SETTING_ARRAY("discord_app_id", settings->arrays.discord_app_id, true, default_discord_app_id, true);
SETTING_ARRAY("discord_app_id", settings->arrays.discord_app_id, true, DEFAULT_DISCORD_APP_ID, true);
SETTING_ARRAY("ai_service_url", settings->arrays.ai_service_url, true, DEFAULT_AI_SERVICE_URL, true);
*size = count;
@@ -1341,11 +1337,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("frame_time_counter_reset_after_load_state", &settings->bools.frame_time_counter_reset_after_load_state, true, false, false);
SETTING_BOOL("frame_time_counter_reset_after_save_state", &settings->bools.frame_time_counter_reset_after_save_state, true, false, false);
SETTING_BOOL("crt_switch_resolution_use_custom_refresh_rate", &settings->bools.crt_switch_custom_refresh_enable, true, false, false);
SETTING_BOOL("automatically_add_content_to_playlist", &settings->bools.automatically_add_content_to_playlist, true, DEFAULT_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, false);
SETTING_BOOL("ui_companion_start_on_boot", &settings->bools.ui_companion_start_on_boot, true, ui_companion_start_on_boot, false);
SETTING_BOOL("ui_companion_enable", &settings->bools.ui_companion_enable, true, ui_companion_enable, false);
SETTING_BOOL("ui_companion_toggle", &settings->bools.ui_companion_toggle, false, ui_companion_toggle, false);
SETTING_BOOL("desktop_menu_enable", &settings->bools.desktop_menu_enable, true, desktop_menu_enable, false);
SETTING_BOOL("desktop_menu_enable", &settings->bools.desktop_menu_enable, true, DEFAULT_DESKTOP_MENU_ENABLE, false);
SETTING_BOOL("video_gpu_record", &settings->bools.video_gpu_record, true, DEFAULT_GPU_RECORD, false);
SETTING_BOOL("input_remap_binds_enable", &settings->bools.input_remap_binds_enable, true, true, false);
SETTING_BOOL("all_users_control_menu", &settings->bools.input_all_users_control_menu, true, DEFAULT_ALL_USERS_CONTROL_MENU, false);
@@ -1393,8 +1388,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, DEFAULT_APPLY_CHEATS_AFTER_TOGGLE, false);
SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, DEFAULT_APPLY_CHEATS_AFTER_LOAD, false);
SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false);
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false);
SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false);
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, DEFAULT_RUN_AHEAD_SECONDARY_INSTANCE, false);
SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, DEFAULT_RUN_AHEAD_HIDE_WARNINGS, false);
SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, DEFAULT_AUDIO_SYNC, false);
SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, DEFAULT_SHADER_ENABLE, false);
SETTING_BOOL("video_shader_watch_files", &settings->bools.video_shader_watch_files, true, DEFAULT_VIDEO_SHADER_WATCH_FILES, false);
@@ -1407,6 +1402,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, DEFAULT_CROP_OVERSCAN, false);
SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, DEFAULT_SCALE_INTEGER, false);
SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, DEFAULT_VIDEO_SMOOTH, false);
SETTING_BOOL("video_ctx_scaling", &settings->bools.video_ctx_scaling, true, DEFAULT_VIDEO_CTX_SCALING, false);
SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, DEFAULT_FORCE_ASPECT, false);
SETTING_BOOL("video_threaded", video_driver_get_threaded(), true, DEFAULT_VIDEO_THREADED, false);
SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, DEFAULT_VIDEO_SHARED_CONTEXT, false);
@@ -1425,7 +1421,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("keyboard_gamepad_enable", &settings->bools.input_keyboard_gamepad_enable, true, true, false);
SETTING_BOOL("core_set_supports_no_game_enable", &settings->bools.set_supports_no_game_enable, true, true, false);
SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, DEFAULT_AUDIO_ENABLE, false);
SETTING_BOOL("menu_enable_widgets", &settings->bools.menu_enable_widgets, true, DEFAULT_MENU_ENABLE_WIDGETS, false);
SETTING_BOOL("menu_enable_widgets", &settings->bools.menu_enable_widgets, true, DEFAULT_MENU_ENABLE_WIDGETS, false);
SETTING_BOOL("menu_widget_scale_auto", &settings->bools.menu_widget_scale_auto, true, DEFAULT_MENU_WIDGET_SCALE_AUTO, false);
SETTING_BOOL("audio_enable_menu", &settings->bools.audio_enable_menu, true, audio_enable_menu, false);
SETTING_BOOL("audio_enable_menu_ok", &settings->bools.audio_enable_menu_ok, true, audio_enable_menu_ok, false);
SETTING_BOOL("audio_enable_menu_cancel", &settings->bools.audio_enable_menu_cancel, true, audio_enable_menu_cancel, false);
@@ -1460,6 +1457,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, DEFAULT_MENU_HORIZONTAL_ANIMATION, false);
SETTING_BOOL("menu_pause_libretro", &settings->bools.menu_pause_libretro, true, true, false);
SETTING_BOOL("menu_savestate_resume", &settings->bools.menu_savestate_resume, true, menu_savestate_resume, false);
SETTING_BOOL("menu_insert_disk_resume", &settings->bools.menu_insert_disk_resume, true, DEFAULT_MENU_INSERT_DISK_RESUME, false);
SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, DEFAULT_MOUSE_ENABLE, false);
SETTING_BOOL("menu_pointer_enable", &settings->bools.menu_pointer_enable, true, DEFAULT_POINTER_ENABLE, false);
SETTING_BOOL("menu_timedate_enable", &settings->bools.menu_timedate_enable, true, true, false);
@@ -1468,6 +1466,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("menu_show_sublabels", &settings->bools.menu_show_sublabels, true, menu_show_sublabels, false);
SETTING_BOOL("menu_dynamic_wallpaper_enable", &settings->bools.menu_dynamic_wallpaper_enable, true, false, false);
SETTING_BOOL("menu_ticker_smooth", &settings->bools.menu_ticker_smooth, true, DEFAULT_MENU_TICKER_SMOOTH, false);
SETTING_BOOL("menu_scroll_fast", &settings->bools.menu_scroll_fast, true, false, false);
SETTING_BOOL("settings_show_drivers", &settings->bools.settings_show_drivers, true, DEFAULT_SETTINGS_SHOW_DRIVERS, false);
SETTING_BOOL("settings_show_video", &settings->bools.settings_show_video, true, DEFAULT_SETTINGS_SHOW_VIDEO, false);
SETTING_BOOL("settings_show_audio", &settings->bools.settings_show_audio, true, DEFAULT_SETTINGS_SHOW_AUDIO, false);
@@ -1493,10 +1492,9 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("quick_menu_show_close_content", &settings->bools.quick_menu_show_close_content, true, DEFAULT_QUICK_MENU_SHOW_CLOSE_CONTENT, false);
SETTING_BOOL("quick_menu_show_recording", &settings->bools.quick_menu_show_recording, true, quick_menu_show_recording, false);
SETTING_BOOL("quick_menu_show_streaming", &settings->bools.quick_menu_show_streaming, true, quick_menu_show_streaming, false);
SETTING_BOOL("quick_menu_show_save_load_state", &settings->bools.quick_menu_show_save_load_state, true, quick_menu_show_save_load_state, false);
SETTING_BOOL("quick_menu_show_take_screenshot", &settings->bools.quick_menu_show_take_screenshot, true, quick_menu_show_take_screenshot, false);
SETTING_BOOL("quick_menu_show_save_load_state", &settings->bools.quick_menu_show_save_load_state, true, quick_menu_show_save_load_state, false);
SETTING_BOOL("quick_menu_show_undo_save_load_state", &settings->bools.quick_menu_show_undo_save_load_state, true, quick_menu_show_undo_save_load_state, false);
SETTING_BOOL("quick_menu_show_save_load_state", &settings->bools.quick_menu_show_save_load_state, true, DEFAULT_QUICK_MENU_SHOW_SAVE_LOAD_STATE, false);
SETTING_BOOL("quick_menu_show_take_screenshot", &settings->bools.quick_menu_show_take_screenshot, true, DEFAULT_QUICK_MENU_SHOW_TAKE_SCREENSHOT, false);
SETTING_BOOL("quick_menu_show_undo_save_load_state", &settings->bools.quick_menu_show_undo_save_load_state, true, DEFAULT_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, false);
SETTING_BOOL("quick_menu_show_add_to_favorites", &settings->bools.quick_menu_show_add_to_favorites, true, quick_menu_show_add_to_favorites, false);
SETTING_BOOL("quick_menu_show_start_recording", &settings->bools.quick_menu_show_start_recording, true, quick_menu_show_start_recording, false);
SETTING_BOOL("quick_menu_show_start_streaming", &settings->bools.quick_menu_show_start_streaming, true, quick_menu_show_start_streaming, false);
@@ -1513,7 +1511,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef HAVE_NETWORKING
SETTING_BOOL("quick_menu_show_download_thumbnails", &settings->bools.quick_menu_show_download_thumbnails, true, quick_menu_show_download_thumbnails, false);
#endif
SETTING_BOOL("kiosk_mode_enable", &settings->bools.kiosk_mode_enable, true, kiosk_mode_enable, false);
SETTING_BOOL("kiosk_mode_enable", &settings->bools.kiosk_mode_enable, true, DEFAULT_KIOSK_MODE_ENABLE, false);
SETTING_BOOL("menu_use_preferred_system_color_theme", &settings->bools.menu_use_preferred_system_color_theme, true, DEFAULT_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, false);
SETTING_BOOL("content_show_settings", &settings->bools.menu_content_show_settings, true, content_show_settings, false);
SETTING_BOOL("content_show_favorites", &settings->bools.menu_content_show_favorites, true, content_show_favorites, false);
@@ -1560,6 +1558,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, DEFAULT_SHOW_ADVANCED_SETTINGS, false);
#ifdef HAVE_MATERIALUI
SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, DEFAULT_MATERIALUI_ICONS_ENABLE, false);
SETTING_BOOL("materialui_show_nav_bar", &settings->bools.menu_materialui_show_nav_bar, true, DEFAULT_MATERIALUI_SHOW_NAV_BAR, false);
SETTING_BOOL("materialui_auto_rotate_nav_bar", &settings->bools.menu_materialui_auto_rotate_nav_bar, true, DEFAULT_MATERIALUI_AUTO_ROTATE_NAV_BAR, false);
SETTING_BOOL("materialui_dual_thumbnail_list_view_enable", &settings->bools.menu_materialui_dual_thumbnail_list_view_enable, true, DEFAULT_MATERIALUI_DUAL_THUMBNAIL_LIST_VIEW_ENABLE, false);
SETTING_BOOL("materialui_thumbnail_background_enable", &settings->bools.menu_materialui_thumbnail_background_enable, true, DEFAULT_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE, false);
@@ -1584,12 +1583,11 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false);
SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false);
SETTING_BOOL("cheevos_leaderboards_enable", &settings->bools.cheevos_leaderboards_enable, true, false, false);
SETTING_BOOL("cheevos_richpresence_enable", &settings->bools.cheevos_richpresence_enable, true, true, false);
SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false);
SETTING_BOOL("cheevos_auto_screenshot", &settings->bools.cheevos_auto_screenshot, true, false, false);
#ifdef HAVE_XMB
SETTING_BOOL("cheevos_badges_enable", &settings->bools.cheevos_badges_enable, true, false, false);
#endif
#endif
#ifdef HAVE_OVERLAY
SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false);
SETTING_BOOL("input_overlay_enable_autopreferred", &settings->bools.input_overlay_enable_autopreferred, true, true, false);
@@ -1623,7 +1621,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("auto_remaps_enable", &settings->bools.auto_remaps_enable, true, default_auto_remaps_enable, false);
SETTING_BOOL("global_core_options", &settings->bools.global_core_options, true, default_global_core_options, false);
SETTING_BOOL("auto_shaders_enable", &settings->bools.auto_shaders_enable, true, default_auto_shaders_enable, false);
SETTING_BOOL("scan_without_core_match", &settings->bools.scan_without_core_match, true, scan_without_core_match, false);
SETTING_BOOL("scan_without_core_match", &settings->bools.scan_without_core_match, true, DEFAULT_SCAN_WITHOUT_CORE_MATCH, false);
SETTING_BOOL("sort_savefiles_enable", &settings->bools.sort_savefiles_enable, true, default_sort_savefiles_enable, false);
SETTING_BOOL("sort_savestates_enable", &settings->bools.sort_savestates_enable, true, default_sort_savestates_enable, false);
SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, DEFAULT_CONFIG_SAVE_ON_EXIT, false);
@@ -1631,8 +1629,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false);
SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false);
#ifdef HAVE_WASAPI
SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, wasapi_exclusive_mode, false);
SETTING_BOOL("audio_wasapi_float_format", &settings->bools.audio_wasapi_float_format, true, wasapi_float_format, false);
SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, DEFAULT_WASAPI_EXCLUSIVE_MODE, false);
SETTING_BOOL("audio_wasapi_float_format", &settings->bools.audio_wasapi_float_format, true, DEFAULT_WASAPI_FLOAT_FORMAT, false);
#endif
SETTING_BOOL("savestates_in_content_dir", &settings->bools.savestates_in_content_dir, true, default_savestates_in_content_dir, false);
@@ -1652,10 +1650,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("playlist_use_old_format", &settings->bools.playlist_use_old_format, true, playlist_use_old_format, false);
SETTING_BOOL("content_runtime_log", &settings->bools.content_runtime_log, true, DEFAULT_CONTENT_RUNTIME_LOG, false);
SETTING_BOOL("content_runtime_log_aggregate", &settings->bools.content_runtime_log_aggregate, true, content_runtime_log_aggregate, false);
SETTING_BOOL("content_runtime_log_aggregate", &settings->bools.content_runtime_log_aggregate, true, DEFAULT_CONTENT_RUNTIME_LOG_AGGREGATE, false);
SETTING_BOOL("playlist_show_sublabels", &settings->bools.playlist_show_sublabels, true, DEFAULT_PLAYLIST_SHOW_SUBLABELS, false);
SETTING_BOOL("playlist_sort_alphabetical", &settings->bools.playlist_sort_alphabetical, true, playlist_sort_alphabetical, false);
SETTING_BOOL("playlist_fuzzy_archive_match", &settings->bools.playlist_fuzzy_archive_match, true, playlist_fuzzy_archive_match, false);
SETTING_BOOL("playlist_fuzzy_archive_match", &settings->bools.playlist_fuzzy_archive_match, true, DEFAULT_PLAYLIST_FUZZY_ARCHIVE_MATCH, false);
SETTING_BOOL("quit_press_twice", &settings->bools.quit_press_twice, true, DEFAULT_QUIT_PRESS_TWICE, false);
SETTING_BOOL("vibrate_on_keypress", &settings->bools.vibrate_on_keypress, true, vibrate_on_keypress, false);
@@ -1701,6 +1699,10 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
#endif
#ifdef HAVE_MENU
SETTING_FLOAT("menu_scale_factor", &settings->floats.menu_scale_factor, true, DEFAULT_MENU_SCALE_FACTOR, false);
SETTING_FLOAT("menu_widget_scale_factor", &settings->floats.menu_widget_scale_factor, true, DEFAULT_MENU_WIDGET_SCALE_FACTOR, false);
#if !(defined(RARCH_CONSOLE) || defined(RARCH_MOBILE))
SETTING_FLOAT("menu_widget_scale_factor_windowed", &settings->floats.menu_widget_scale_factor_windowed, true, DEFAULT_MENU_WIDGET_SCALE_FACTOR_WINDOWED, false);
#endif
SETTING_FLOAT("menu_wallpaper_opacity", &settings->floats.menu_wallpaper_opacity, true, menu_wallpaper_opacity, false);
SETTING_FLOAT("menu_framebuffer_opacity", &settings->floats.menu_framebuffer_opacity, true, menu_framebuffer_opacity, false);
SETTING_FLOAT("menu_footer_opacity", &settings->floats.menu_footer_opacity, true, menu_footer_opacity, false);
@@ -1713,9 +1715,9 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
SETTING_FLOAT("video_font_size", &settings->floats.video_font_size, true, DEFAULT_FONT_SIZE, false);
SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, DEFAULT_FASTFORWARD_RATIO, false);
SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, DEFAULT_SLOWMOTION_RATIO, false);
SETTING_FLOAT("input_axis_threshold", input_driver_get_float(INPUT_ACTION_AXIS_THRESHOLD), true, axis_threshold, false);
SETTING_FLOAT("input_analog_deadzone", &settings->floats.input_analog_deadzone, true, analog_deadzone, false);
SETTING_FLOAT("input_analog_sensitivity", &settings->floats.input_analog_sensitivity, true, analog_sensitivity, false);
SETTING_FLOAT("input_axis_threshold", input_driver_get_float(INPUT_ACTION_AXIS_THRESHOLD), true, DEFAULT_AXIS_THRESHOLD, false);
SETTING_FLOAT("input_analog_deadzone", &settings->floats.input_analog_deadzone, true, DEFAULT_ANALOG_DEADZONE, false);
SETTING_FLOAT("input_analog_sensitivity", &settings->floats.input_analog_sensitivity, true, DEFAULT_ANALOG_SENSITIVITY, false);
SETTING_FLOAT("video_msg_bgcolor_opacity", &settings->floats.video_msg_bgcolor_opacity, true, message_bgcolor_opacity, false);
*size = count;
@@ -1781,11 +1783,11 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("video_overscan_correction_bottom", &settings->uints.video_overscan_correction_bottom, true, DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM, false);
#endif
#ifdef HAVE_MENU
SETTING_UINT("menu_thumbnails", &settings->uints.menu_thumbnails, true, menu_thumbnails_default, false);
SETTING_UINT("menu_thumbnails", &settings->uints.gfx_thumbnails, true, gfx_thumbnails_default, false);
SETTING_UINT("menu_left_thumbnails", &settings->uints.menu_left_thumbnails, true, menu_left_thumbnails_default, false);
SETTING_UINT("menu_thumbnail_upscale_threshold", &settings->uints.menu_thumbnail_upscale_threshold, true, menu_thumbnail_upscale_threshold, false);
SETTING_UINT("menu_thumbnail_upscale_threshold", &settings->uints.gfx_thumbnail_upscale_threshold, true, gfx_thumbnail_upscale_threshold, false);
SETTING_UINT("menu_timedate_style", &settings->uints.menu_timedate_style, true, menu_timedate_style, false);
SETTING_UINT("menu_ticker_type", &settings->uints.menu_ticker_type, true, menu_ticker_type, false);
SETTING_UINT("menu_ticker_type", &settings->uints.menu_ticker_type, true, DEFAULT_MENU_TICKER_TYPE, false);
#ifdef HAVE_RGUI
SETTING_UINT("rgui_menu_color_theme", &settings->uints.menu_rgui_color_theme, true, DEFAULT_RGUI_COLOR_THEME, false);
SETTING_UINT("rgui_thumbnail_downscaler", &settings->uints.menu_rgui_thumbnail_downscaler, true, rgui_thumbnail_downscaler, false);
@@ -1825,7 +1827,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("materialui_landscape_layout_optimization", &settings->uints.menu_materialui_landscape_layout_optimization, true, DEFAULT_MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION, false);
SETTING_UINT("menu_shader_pipeline", &settings->uints.menu_xmb_shader_pipeline, true, DEFAULT_MENU_SHADER_PIPELINE, false);
#ifdef HAVE_OZONE
SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 1, false);
SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, DEFAULT_OZONE_COLOR_THEME, false);
#endif
#endif
SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, DEFAULT_OUTPUT_RATE, false);
@@ -1932,7 +1934,7 @@ static struct config_int_setting *populate_settings_int(settings_t *settings, in
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_CHECK_FRAMES);
#endif
#ifdef HAVE_WASAPI
SETTING_INT("audio_wasapi_sh_buffer_length", &settings->ints.audio_wasapi_sh_buffer_length, true, wasapi_sh_buffer_length, false);
SETTING_INT("audio_wasapi_sh_buffer_length", &settings->ints.audio_wasapi_sh_buffer_length, true, DEFAULT_WASAPI_SH_BUFFER_LENGTH, false);
#endif
SETTING_INT("crt_switch_center_adjust", &settings->ints.crt_switch_center_adjust, false, DEFAULT_CRT_SWITCH_CENTER_ADJUST, false);
#ifdef HAVE_VULKAN
@@ -1986,7 +1988,7 @@ void config_set_defaults(void *data)
const char *def_location = config_get_default_location();
const char *def_record = config_get_default_record();
const char *def_midi = config_get_default_midi();
const char *def_mitm = netplay_mitm_server;
const char *def_mitm = DEFAULT_NETPLAY_MITM_SERVER;
struct config_float_setting *float_settings = populate_settings_float (settings, &float_settings_size);
struct config_bool_setting *bool_settings = populate_settings_bool (settings, &bool_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
@@ -2049,54 +2051,69 @@ void config_set_defaults(void *data)
}
if (def_camera)
strlcpy(settings->arrays.camera_driver,
def_camera, sizeof(settings->arrays.camera_driver));
configuration_set_string(settings,
settings->arrays.camera_driver,
def_camera);
if (def_wifi)
strlcpy(settings->arrays.wifi_driver,
def_wifi, sizeof(settings->arrays.wifi_driver));
configuration_set_string(settings,
settings->arrays.wifi_driver,
def_wifi);
if (def_led)
strlcpy(settings->arrays.led_driver,
def_led, sizeof(settings->arrays.led_driver));
configuration_set_string(settings,
settings->arrays.led_driver,
def_led);
if (def_location)
strlcpy(settings->arrays.location_driver,
def_location, sizeof(settings->arrays.location_driver));
configuration_set_string(settings,
settings->arrays.location_driver,
def_location);
if (def_video)
strlcpy(settings->arrays.video_driver,
def_video, sizeof(settings->arrays.video_driver));
configuration_set_string(settings,
settings->arrays.video_driver,
def_video);
if (def_audio)
strlcpy(settings->arrays.audio_driver,
def_audio, sizeof(settings->arrays.audio_driver));
configuration_set_string(settings,
settings->arrays.audio_driver,
def_audio);
if (def_audio_resampler)
strlcpy(settings->arrays.audio_resampler,
def_audio_resampler, sizeof(settings->arrays.audio_resampler));
configuration_set_string(settings,
settings->arrays.audio_resampler,
def_audio_resampler);
if (def_input)
strlcpy(settings->arrays.input_driver,
def_input, sizeof(settings->arrays.input_driver));
configuration_set_string(settings,
settings->arrays.input_driver,
def_input);
if (def_joypad)
strlcpy(settings->arrays.input_joypad_driver,
def_joypad, sizeof(settings->arrays.input_joypad_driver));
configuration_set_string(settings,
settings->arrays.input_joypad_driver,
def_joypad);
if (def_record)
strlcpy(settings->arrays.record_driver,
def_record, sizeof(settings->arrays.record_driver));
configuration_set_string(settings,
settings->arrays.record_driver,
def_record);
if (def_midi)
strlcpy(settings->arrays.midi_driver,
def_midi, sizeof(settings->arrays.midi_driver));
configuration_set_string(settings,
settings->arrays.midi_driver,
def_midi);
if (def_mitm)
strlcpy(settings->arrays.netplay_mitm_server,
def_mitm, sizeof(settings->arrays.netplay_mitm_server));
configuration_set_string(settings,
settings->arrays.netplay_mitm_server,
def_mitm);
#ifdef HAVE_MENU
if (def_menu)
strlcpy(settings->arrays.menu_driver,
def_menu, sizeof(settings->arrays.menu_driver));
configuration_set_string(settings,
settings->arrays.menu_driver,
def_menu);
#ifdef HAVE_XMB
*settings->paths.path_menu_xmb_font = '\0';
#endif
strlcpy(settings->arrays.discord_app_id,
default_discord_app_id, sizeof(settings->arrays.discord_app_id));
configuration_set_string(settings,
settings->arrays.discord_app_id,
DEFAULT_DISCORD_APP_ID);
strlcpy(settings->arrays.ai_service_url,
DEFAULT_AI_SERVICE_URL, sizeof(settings->arrays.ai_service_url));
configuration_set_string(settings,
settings->arrays.ai_service_url,
DEFAULT_AI_SERVICE_URL);
#ifdef HAVE_MATERIALUI
@@ -2123,8 +2140,9 @@ void config_set_defaults(void *data)
settings->floats.video_refresh_rate = g_defaults.settings.video_refresh_rate;
if (DEFAULT_AUDIO_DEVICE)
strlcpy(settings->arrays.audio_device,
DEFAULT_AUDIO_DEVICE, sizeof(settings->arrays.audio_device));
configuration_set_string(settings,
settings->arrays.audio_device,
DEFAULT_AUDIO_DEVICE);
if (!g_defaults.settings.out_latency)
g_defaults.settings.out_latency = DEFAULT_OUT_LATENCY;
@@ -2137,15 +2155,20 @@ void config_set_defaults(void *data)
#endif
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH);
settings->bools.localap_enable = false;
configuration_set_bool(settings,
settings->bools.ssh_enable, filestream_exists(LAKKA_SSH_PATH));
configuration_set_bool(settings,
settings->bools.samba_enable, filestream_exists(LAKKA_SAMBA_PATH));
configuration_set_bool(settings,
settings->bools.bluetooth_enable, filestream_exists(LAKKA_BLUETOOTH_PATH));
configuration_set_bool(settings, settings->bools.localap_enable, false);
#endif
#ifdef HAVE_MENU
if (first_initialized)
settings->bools.menu_show_start_screen = default_menu_show_start_screen;
configuration_set_bool(settings,
settings->bools.menu_show_start_screen,
DEFAULT_MENU_SHOW_START_SCREEN);
#endif
#ifdef HAVE_CHEEVOS
@@ -2155,7 +2178,9 @@ void config_set_defaults(void *data)
#endif
input_config_reset();
#ifdef HAVE_CONFIGFILE
input_remapping_set_defaults(true);
#endif
input_autoconfigure_reset();
/* Verify that binds are in proper order. */
@@ -2169,10 +2194,11 @@ void config_set_defaults(void *data)
}
}
strlcpy(settings->paths.network_buildbot_url, buildbot_server_url,
sizeof(settings->paths.network_buildbot_url));
strlcpy(settings->paths.network_buildbot_assets_url, buildbot_assets_server_url,
sizeof(settings->paths.network_buildbot_assets_url));
configuration_set_string(settings,
settings->paths.network_buildbot_url, DEFAULT_BUILDBOT_SERVER_URL);
configuration_set_string(settings,
settings->paths.network_buildbot_assets_url,
DEFAULT_BUILDBOT_ASSETS_SERVER_URL);
*settings->arrays.input_keyboard_layout = '\0';
@@ -2263,68 +2289,68 @@ void config_set_defaults(void *data)
video_driver_default_settings();
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]))
strlcpy(settings->paths.directory_dynamic_wallpapers,
g_defaults.dirs[DEFAULT_DIR_WALLPAPERS],
sizeof(settings->paths.directory_dynamic_wallpapers));
configuration_set_string(settings,
settings->paths.directory_dynamic_wallpapers,
g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]))
strlcpy(settings->paths.directory_thumbnails,
g_defaults.dirs[DEFAULT_DIR_THUMBNAILS],
sizeof(settings->paths.directory_thumbnails));
configuration_set_string(settings,
settings->paths.directory_thumbnails,
g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_REMAP]))
strlcpy(settings->paths.directory_input_remapping,
g_defaults.dirs[DEFAULT_DIR_REMAP],
sizeof(settings->paths.directory_input_remapping));
configuration_set_string(settings,
settings->paths.directory_input_remapping,
g_defaults.dirs[DEFAULT_DIR_REMAP]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CACHE]))
strlcpy(settings->paths.directory_cache,
g_defaults.dirs[DEFAULT_DIR_CACHE],
sizeof(settings->paths.directory_cache));
configuration_set_string(settings,
settings->paths.directory_cache,
g_defaults.dirs[DEFAULT_DIR_CACHE]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_ASSETS]))
strlcpy(settings->paths.directory_assets,
g_defaults.dirs[DEFAULT_DIR_ASSETS],
sizeof(settings->paths.directory_assets));
configuration_set_string(settings,
settings->paths.directory_assets,
g_defaults.dirs[DEFAULT_DIR_ASSETS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]))
strlcpy(settings->paths.directory_core_assets,
g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
sizeof(settings->paths.directory_core_assets));
configuration_set_string(settings,
settings->paths.directory_core_assets,
g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]))
strlcpy(settings->paths.directory_playlist,
g_defaults.dirs[DEFAULT_DIR_PLAYLIST],
sizeof(settings->paths.directory_playlist));
configuration_set_string(settings,
settings->paths.directory_playlist,
g_defaults.dirs[DEFAULT_DIR_PLAYLIST]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE]))
fill_pathname_expand_special(settings->paths.directory_libretro,
g_defaults.dirs[DEFAULT_DIR_CORE],
sizeof(settings->paths.directory_libretro));
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]))
strlcpy(settings->paths.directory_audio_filter,
g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER],
sizeof(settings->paths.directory_audio_filter));
configuration_set_string(settings,
settings->paths.directory_audio_filter,
g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]))
strlcpy(settings->paths.directory_video_filter,
g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
sizeof(settings->paths.directory_video_filter));
configuration_set_string(settings,
settings->paths.directory_video_filter,
g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SHADER]))
fill_pathname_expand_special(settings->paths.directory_video_shader,
g_defaults.dirs[DEFAULT_DIR_SHADER],
sizeof(settings->paths.directory_video_shader));
if (!string_is_empty(g_defaults.path.buildbot_server_url))
strlcpy(settings->paths.network_buildbot_url,
g_defaults.path.buildbot_server_url,
sizeof(settings->paths.network_buildbot_url));
configuration_set_string(settings,
settings->paths.network_buildbot_url,
g_defaults.path.buildbot_server_url);
if (!string_is_empty(g_defaults.path.core))
path_set(RARCH_PATH_CORE, g_defaults.path.core);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_DATABASE]))
strlcpy(settings->paths.path_content_database,
g_defaults.dirs[DEFAULT_DIR_DATABASE],
sizeof(settings->paths.path_content_database));
configuration_set_string(settings,
settings->paths.path_content_database,
g_defaults.dirs[DEFAULT_DIR_DATABASE]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CURSOR]))
strlcpy(settings->paths.directory_cursor,
g_defaults.dirs[DEFAULT_DIR_CURSOR],
sizeof(settings->paths.directory_cursor));
configuration_set_string(settings,
settings->paths.directory_cursor,
g_defaults.dirs[DEFAULT_DIR_CURSOR]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CHEATS]))
strlcpy(settings->paths.path_cheat_database,
g_defaults.dirs[DEFAULT_DIR_CHEATS],
sizeof(settings->paths.path_cheat_database));
configuration_set_string(settings,
settings->paths.path_cheat_database,
g_defaults.dirs[DEFAULT_DIR_CHEATS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]))
fill_pathname_expand_special(settings->paths.path_libretro_info,
g_defaults.dirs[DEFAULT_DIR_CORE_INFO],
@@ -2356,9 +2382,9 @@ void config_set_defaults(void *data)
#ifdef HAVE_MENU
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]))
{
strlcpy(settings->paths.directory_menu_config,
g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG],
sizeof(settings->paths.directory_menu_config));
configuration_set_string(settings,
settings->paths.directory_menu_config,
g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]);
#if TARGET_OS_IPHONE
{
char *config_file_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
@@ -2373,14 +2399,14 @@ void config_set_defaults(void *data)
}
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT]))
strlcpy(settings->paths.directory_menu_content,
g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT],
sizeof(settings->paths.directory_menu_content));
configuration_set_string(settings,
settings->paths.directory_menu_content,
g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT]);
#endif
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]))
strlcpy(settings->paths.directory_autoconfig,
g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG],
sizeof(settings->paths.directory_autoconfig));
configuration_set_string(settings,
settings->paths.directory_autoconfig,
g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]))
dir_set(RARCH_DIR_SAVESTATE, g_defaults.dirs[DEFAULT_DIR_SAVESTATE]);
@@ -2389,26 +2415,25 @@ void config_set_defaults(void *data)
dir_set(RARCH_DIR_SAVEFILE, g_defaults.dirs[DEFAULT_DIR_SRAM]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SYSTEM]))
strlcpy(settings->paths.directory_system,
g_defaults.dirs[DEFAULT_DIR_SYSTEM],
sizeof(settings->paths.directory_system));
configuration_set_string(settings,
settings->paths.directory_system,
g_defaults.dirs[DEFAULT_DIR_SYSTEM]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]))
strlcpy(settings->paths.directory_screenshot,
g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
sizeof(settings->paths.directory_screenshot));
configuration_set_string(settings,
settings->paths.directory_screenshot,
g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_RESAMPLER]))
strlcpy(settings->paths.directory_resampler,
g_defaults.dirs[DEFAULT_DIR_RESAMPLER],
sizeof(settings->paths.directory_resampler));
configuration_set_string(settings,
settings->paths.directory_resampler,
g_defaults.dirs[DEFAULT_DIR_RESAMPLER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY]))
strlcpy(settings->paths.directory_content_history,
g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY],
sizeof(settings->paths.directory_content_history));
configuration_set_string(settings,
settings->paths.directory_content_history,
g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS]))
strlcpy(settings->paths.log_dir,
g_defaults.dirs[DEFAULT_DIR_LOGS],
sizeof(settings->paths.log_dir));
configuration_set_string(settings,
settings->paths.log_dir,
g_defaults.dirs[DEFAULT_DIR_LOGS]);
if (!string_is_empty(g_defaults.path.config))
{
@@ -2423,24 +2448,74 @@ void config_set_defaults(void *data)
free(temp_str);
}
if (midi_input)
strlcpy(settings->arrays.midi_input,
midi_input, sizeof(settings->arrays.midi_input));
if (midi_output)
strlcpy(settings->arrays.midi_output,
midi_output, sizeof(settings->arrays.midi_output));
configuration_set_string(settings,
settings->arrays.midi_input,
DEFAULT_MIDI_INPUT);
configuration_set_string(settings,
settings->arrays.midi_output,
DEFAULT_MIDI_OUTPUT);
#ifdef HAVE_CONFIGFILE
/* Avoid reloading config on every content load */
if (DEFAULT_BLOCK_CONFIG_READ)
rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL);
else
rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL);
#endif
#ifdef HAVE_MENU
first_initialized = false;
#endif
}
/**
* config_load:
*
* Loads a config file and reads all the values into memory.
*
*/
void config_load(void *data)
{
global_t *global = (global_t*)data;
config_set_defaults(global);
#ifdef HAVE_CONFIGFILE
config_parse_file(global);
#endif
}
#ifdef HAVE_CONFIGFILE
#if defined(HAVE_MENU) && defined(HAVE_RGUI)
static bool check_menu_driver_compatibility(settings_t *settings)
{
char *video_driver = settings->arrays.video_driver;
char *menu_driver = settings->arrays.menu_driver;
if ( string_is_equal(menu_driver, "rgui") ||
string_is_equal(menu_driver, "null") ||
string_is_equal(video_driver, "null"))
return true;
/* TODO/FIXME - maintenance hazard */
if (string_is_equal(video_driver, "d3d9") ||
string_is_equal(video_driver, "d3d10") ||
string_is_equal(video_driver, "d3d11") ||
string_is_equal(video_driver, "d3d12") ||
string_is_equal(video_driver, "caca") ||
string_is_equal(video_driver, "gdi") ||
string_is_equal(video_driver, "gl") ||
string_is_equal(video_driver, "gl1") ||
string_is_equal(video_driver, "gx2") ||
string_is_equal(video_driver, "vulkan") ||
string_is_equal(video_driver, "glcore") ||
string_is_equal(video_driver, "metal") ||
string_is_equal(video_driver, "ctr") ||
string_is_equal(video_driver, "vita2d"))
return true;
return false;
}
#endif
/**
* open_default_config_file
*
@@ -2650,40 +2725,6 @@ error:
free(app_path);
return NULL;
}
#if defined(HAVE_MENU) && defined(HAVE_RGUI)
static bool check_menu_driver_compatibility(void)
{
settings_t *settings = config_get_ptr();
char *video_driver = settings->arrays.video_driver;
char *menu_driver = settings->arrays.menu_driver;
if (string_is_equal (menu_driver, "rgui") ||
string_is_equal(menu_driver, "null") ||
string_is_equal(video_driver, "null"))
return true;
/* TODO/FIXME - maintenance hazard */
if (string_is_equal(video_driver, "d3d9") ||
string_is_equal(video_driver, "d3d10") ||
string_is_equal(video_driver, "d3d11") ||
string_is_equal(video_driver, "d3d12") ||
string_is_equal(video_driver, "caca") ||
string_is_equal(video_driver, "gdi") ||
string_is_equal(video_driver, "gl") ||
string_is_equal(video_driver, "gl1") ||
string_is_equal(video_driver, "gx2") ||
string_is_equal(video_driver, "vulkan") ||
string_is_equal(video_driver, "glcore") ||
string_is_equal(video_driver, "metal") ||
string_is_equal(video_driver, "ctr") ||
string_is_equal(video_driver, "vita2d"))
return true;
return false;
}
#endif
/**
* config_load:
* @path : path to be read from.
@@ -2792,7 +2833,8 @@ static bool config_load_file(global_t *global,
snprintf(tmp, sizeof(tmp), "network_remote_enable_user_p%u", i + 1);
if (config_get_bool(conf, tmp, &tmp_bool))
settings->bools.network_remote_enable_user[i] = tmp_bool;
configuration_set_bool(settings,
settings->bools.network_remote_enable_user[i], tmp_bool);
}
#endif
if (config_get_bool(conf, "log_verbosity", &tmp_bool))
@@ -2905,7 +2947,8 @@ static bool config_load_file(global_t *global,
}
if (config_get_path(conf, "libretro_directory", tmp_str, path_size))
strlcpy(settings->paths.directory_libretro, tmp_str, sizeof(settings->paths.directory_libretro));
configuration_set_string(settings,
settings->paths.directory_libretro, tmp_str);
#ifndef HAVE_DYNAMIC
if (config_get_path(conf, "libretro_path", tmp_str, path_size))
@@ -2920,9 +2963,9 @@ static bool config_load_file(global_t *global,
if (rarch_ctl(RARCH_CTL_HAS_SET_USERNAME, NULL) && override_username)
{
strlcpy(settings->paths.username,
override_username,
sizeof(settings->paths.username));
configuration_set_string(settings,
settings->paths.username,
override_username);
free(override_username);
}
@@ -3037,8 +3080,8 @@ static bool config_load_file(global_t *global,
if (path_is_directory(path_core))
{
RARCH_WARN("\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n");
strlcpy(settings->paths.directory_libretro, path_core,
sizeof(settings->paths.directory_libretro));
configuration_set_string(settings,
settings->paths.directory_libretro, path_core);
path_clear(RARCH_PATH_CORE);
}
#ifdef RARCH_CONSOLE
@@ -3091,9 +3134,11 @@ static bool config_load_file(global_t *global,
if (string_is_equal(settings->paths.log_dir, "default"))
{
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS]))
strlcpy(settings->paths.log_dir,
g_defaults.dirs[DEFAULT_DIR_LOGS],
sizeof(settings->paths.log_dir));
{
configuration_set_string(settings,
settings->paths.log_dir,
g_defaults.dirs[DEFAULT_DIR_LOGS]);
}
else
*settings->paths.log_dir = '\0';
}
@@ -3107,9 +3152,12 @@ static bool config_load_file(global_t *global,
configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f);
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH);
configuration_set_bool(settings,
settings->bools.ssh_enable, filestream_exists(LAKKA_SSH_PATH));
configuration_set_bool(settings,
settings->bools.samba_enable, filestream_exists(LAKKA_SAMBA_PATH));
configuration_set_bool(settings,
settings->bools.bluetooth_enable, filestream_exists(LAKKA_BLUETOOTH_PATH));
#endif
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL) &&
@@ -3162,8 +3210,9 @@ static bool config_load_file(global_t *global,
config_read_keybinds_conf(conf);
#if defined(HAVE_MENU) && defined(HAVE_RGUI)
if (!check_menu_driver_compatibility())
strlcpy(settings->arrays.menu_driver, "rgui", sizeof(settings->arrays.menu_driver));
if (!check_menu_driver_compatibility(settings))
configuration_set_string(settings,
settings->arrays.menu_driver, "rgui");
#endif
#ifdef HAVE_LIBNX
@@ -3234,7 +3283,7 @@ end:
* Returns: false if there was an error or no action was performed.
*
*/
bool config_load_override(void)
bool config_load_override(void *data)
{
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
char *buf = NULL;
@@ -3243,7 +3292,7 @@ bool config_load_override(void)
char *content_path = NULL;
char *config_directory = NULL;
bool should_append = false;
rarch_system_info_t *system = runloop_get_system_info();
rarch_system_info_t *system = (rarch_system_info_t*)data;
const char *core_name = system ?
system->info.library_name : NULL;
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
@@ -3393,7 +3442,7 @@ bool config_load_override(void)
* since it will be overwritten by the override when reloading. */
path_set(RARCH_PATH_CORE, buf);
runloop_msg_queue_push(msg_hash_to_str(MSG_CONFIG_OVERRIDE_LOADED),
1, 100, true,
1, 100, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
/* Reset save paths. */
@@ -3458,7 +3507,8 @@ bool config_unload_override(void)
*
* Returns: false if there was an error or no action was performed.
*/
bool config_load_remap(const char *directory_input_remapping)
bool config_load_remap(const char *directory_input_remapping,
void *data)
{
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
config_file_t *new_conf = NULL;
@@ -3466,10 +3516,11 @@ bool config_load_remap(const char *directory_input_remapping)
char *core_path = NULL;
char *game_path = NULL;
char *content_path = NULL;
rarch_system_info_t *system = runloop_get_system_info();
rarch_system_info_t *system = (rarch_system_info_t*)data;
const char *core_name = system ? system->info.library_name : NULL;
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
const char *game_name = path_basename(rarch_path_basename);
enum msg_hash_enums msg_remap_loaded = MSG_GAME_REMAP_FILE_LOADED;
char content_dir_name[PATH_MAX_LENGTH];
if (string_is_empty(core_name) || string_is_empty(game_name))
@@ -3520,7 +3571,9 @@ bool config_load_remap(const char *directory_input_remapping)
".rmp",
path_size);
#ifdef HAVE_CONFIGFILE
input_remapping_set_defaults(false);
#endif
/* If a game remap file exists, load it. */
if ((new_conf = config_file_new_from_path_to_string(game_path)))
@@ -3529,6 +3582,8 @@ bool config_load_remap(const char *directory_input_remapping)
if (input_remapping_load_file(new_conf, game_path))
{
rarch_ctl(RARCH_CTL_SET_REMAPS_GAME_ACTIVE, NULL);
/* msg_remap_loaded is set to MSG_GAME_REMAP_FILE_LOADED
* by default - no need to change it here */
goto success;
}
}
@@ -3540,6 +3595,7 @@ bool config_load_remap(const char *directory_input_remapping)
if (input_remapping_load_file(new_conf, content_path))
{
rarch_ctl(RARCH_CTL_SET_REMAPS_CONTENT_DIR_ACTIVE, NULL);
msg_remap_loaded = MSG_DIRECTORY_REMAP_FILE_LOADED;
goto success;
}
}
@@ -3551,6 +3607,7 @@ bool config_load_remap(const char *directory_input_remapping)
if (input_remapping_load_file(new_conf, core_path))
{
rarch_ctl(RARCH_CTL_SET_REMAPS_CORE_ACTIVE, NULL);
msg_remap_loaded = MSG_CORE_REMAP_FILE_LOADED;
goto success;
}
}
@@ -3564,8 +3621,8 @@ bool config_load_remap(const char *directory_input_remapping)
return false;
success:
runloop_msg_queue_push(msg_hash_to_str(
MSG_GAME_REMAP_FILE_LOADED), 1, 100, true,
runloop_msg_queue_push(
msg_hash_to_str(msg_remap_loaded), 1, 100, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
free(content_path);
free(remap_directory);
@@ -3580,9 +3637,8 @@ success:
* Loads a config file and reads all the values into memory.
*
*/
void config_parse_file(void *data)
static void config_parse_file(global_t *global)
{
global_t *global = (global_t*)data;
if (path_is_empty(RARCH_PATH_CONFIG))
{
RARCH_LOG("[config] Loading default config.\n");
@@ -3599,20 +3655,6 @@ void config_parse_file(void *data)
}
}
}
/**
* config_load:
*
* Loads a config file and reads all the values into memory.
*
*/
void config_load(void *data)
{
global_t *global = (global_t*)data;
config_set_defaults(global);
config_parse_file(global);
}
/**
* config_save_autoconf_profile:
* @path : Path that shall be written to.
@@ -3621,6 +3663,11 @@ void config_load(void *data)
**/
bool config_save_autoconf_profile(const char *path, unsigned user)
{
static const char* invalid_filename_chars[] = {
/* https://support.microsoft.com/en-us/help/905231/information-about-the-characters-that-you-cannot-use-in-site-names--fo */
"~", "#", "%", "&", "*", "{", "}", "\\", ":", "[", "]", "?", "/", "|", "\'", "\"",
NULL
};
unsigned i;
config_file_t *conf = NULL;
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
@@ -3639,7 +3686,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
for (i = 0; invalid_filename_chars[i]; i++)
{
while (1)
for (;;)
{
char *tmp = strstr(path_new, invalid_filename_chars[i]);
@@ -3953,7 +4000,7 @@ bool config_save_file(const char *path)
*
* Returns: true (1) on success, otherwise returns false (0).
**/
bool config_save_overrides(int override_type)
bool config_save_overrides(enum override_type type, void *data)
{
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
int tmp_i = 0;
@@ -3988,7 +4035,7 @@ bool config_save_overrides(int override_type)
int size_settings_size = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
int array_settings_size = sizeof(settings->arrays) / sizeof(settings->arrays.placeholder);
int path_settings_size = sizeof(settings->paths) / sizeof(settings->paths.placeholder);
rarch_system_info_t *system = runloop_get_system_info();
rarch_system_info_t *system = (rarch_system_info_t*)data;
const char *core_name = system ? system->info.library_name : NULL;
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
const char *game_name = path_basename(rarch_path_basename);
@@ -4143,23 +4190,21 @@ bool config_save_overrides(int override_type)
ret = false;
switch (override_type)
switch (type)
{
case OVERRIDE_CORE:
/* Create a new config file from core_path */
RARCH_LOG ("[Overrides] path %s\n", core_path);
ret = config_file_write(conf, core_path, true);
break;
case OVERRIDE_GAME:
/* Create a new config file from core_path */
RARCH_LOG ("[Overrides] path %s\n", game_path);
ret = config_file_write(conf, game_path, true);
break;
case OVERRIDE_CONTENT_DIR:
/* Create a new config file from content_path */
RARCH_LOG ("[Overrides] path %s\n", content_path);
ret = config_file_write(conf, content_path, true);
break;
case OVERRIDE_NONE:
default:
break;
}
@@ -4229,3 +4274,4 @@ bool config_replace(bool config_replace_save_on_exit, char *path)
return task_push_start_dummy_core(&content_info);
}
#endif
+33 -22
View File
@@ -53,6 +53,12 @@
var = newvar; \
}
#define configuration_set_string(settings, var, newvar) \
{ \
settings->modified = true; \
strlcpy(var, newvar, sizeof(var)); \
}
enum crt_switch_type
{
CRT_SWITCH_NONE = 0,
@@ -85,6 +91,7 @@ typedef struct settings
bool video_black_frame_insertion;
bool video_vfilter;
bool video_smooth;
bool video_ctx_scaling;
bool video_force_aspect;
bool video_crop_overscan;
bool video_aspect_ratio_auto;
@@ -151,9 +158,11 @@ typedef struct settings
/* Menu */
bool filter_by_current_core;
bool menu_enable_widgets;
bool menu_widget_scale_auto;
bool menu_show_start_screen;
bool menu_pause_libretro;
bool menu_savestate_resume;
bool menu_insert_disk_resume;
bool menu_timedate_enable;
bool menu_battery_level_enable;
bool menu_core_enable;
@@ -168,6 +177,7 @@ typedef struct settings
bool menu_throttle_framerate;
bool menu_linear_filter;
bool menu_horizontal_animation;
bool menu_scroll_fast;
bool menu_show_online_updater;
bool menu_show_core_updater;
bool menu_show_load_core;
@@ -189,6 +199,7 @@ typedef struct settings
bool menu_show_video_layout;
#endif
bool menu_materialui_icons_enable;
bool menu_materialui_show_nav_bar;
bool menu_materialui_auto_rotate_nav_bar;
bool menu_materialui_dual_thumbnail_list_view_enable;
bool menu_materialui_thumbnail_background_enable;
@@ -288,6 +299,7 @@ typedef struct settings
bool cheevos_test_unofficial;
bool cheevos_hardcore_mode_enable;
bool cheevos_leaderboards_enable;
bool cheevos_richpresence_enable;
bool cheevos_badges_enable;
bool cheevos_verbose_enable;
bool cheevos_auto_screenshot;
@@ -360,7 +372,6 @@ typedef struct settings
bool bluetooth_enable;
bool localap_enable;
bool automatically_add_content_to_playlist;
bool video_window_show_decorations;
bool video_window_save_positions;
@@ -405,6 +416,8 @@ typedef struct settings
float video_msg_bgcolor_opacity;
float menu_scale_factor;
float menu_widget_scale_factor;
float menu_widget_scale_factor_windowed;
float menu_wallpaper_opacity;
float menu_framebuffer_opacity;
float menu_footer_opacity;
@@ -527,9 +540,9 @@ typedef struct settings
unsigned accessibility_narrator_speech_speed;
unsigned menu_timedate_style;
unsigned menu_thumbnails;
unsigned gfx_thumbnails;
unsigned menu_left_thumbnails;
unsigned menu_thumbnail_upscale_threshold;
unsigned gfx_thumbnail_upscale_threshold;
unsigned menu_rgui_thumbnail_downscaler;
unsigned menu_rgui_thumbnail_delay;
unsigned menu_rgui_color_theme;
@@ -626,26 +639,23 @@ typedef struct settings
char input_driver[32];
char input_joypad_driver[32];
char midi_driver[32];
char midi_input[32];
char midi_output[32];
char input_keyboard_layout[64];
char audio_device[255];
char camera_device[255];
char netplay_mitm_server[255];
char translation_service_url[2048];
char bundle_assets_src[PATH_MAX_LENGTH];
char bundle_assets_dst[PATH_MAX_LENGTH];
char bundle_assets_dst_subdir[PATH_MAX_LENGTH];
char netplay_mitm_server[255];
char midi_input[32];
char midi_output[32];
char youtube_stream_key[PATH_MAX_LENGTH];
char twitch_stream_key[PATH_MAX_LENGTH];
char discord_app_id[PATH_MAX_LENGTH];
char translation_service_url[2048];
char ai_service_url[PATH_MAX_LENGTH];
} arrays;
@@ -654,12 +664,16 @@ typedef struct settings
char placeholder;
char username[32];
char netplay_password[128];
char netplay_spectate_password[128];
char netplay_server[255];
char network_buildbot_url[255];
char network_buildbot_assets_url[255];
char browse_url[4096];
char path_stream_url[8192];
char path_menu_xmb_font[PATH_MAX_LENGTH];
@@ -809,14 +823,7 @@ const char *config_get_midi_driver_options(void);
const char *config_get_default_record(void);
/**
* config_parse_file:
*
* Loads a config file and reads all the values into memory.
*
*/
void config_parse_file(void *data);
#ifdef HAVE_CONFIGFILE
/**
* config_load_override:
*
@@ -827,7 +834,7 @@ void config_parse_file(void *data);
* Returns: false if there was an error or no action was performed.
*
*/
bool config_load_override(void);
bool config_load_override(void *data);
/**
* config_unload_override:
@@ -847,7 +854,8 @@ bool config_unload_override(void);
* Returns: false if there was an error or no action was performed.
*
*/
bool config_load_remap(const char *directory_input_remapping);
bool config_load_remap(const char *directory_input_remapping,
void *data);
/**
* config_save_autoconf_profile:
@@ -875,17 +883,20 @@ bool config_save_file(const char *path);
*
* Returns: true (1) on success, otherwise returns false (0).
**/
bool config_save_overrides(int override_type);
bool config_save_overrides(enum override_type type, void *data);
/* Replaces currently loaded configuration file with
* another one. Will load a dummy core to flush state
* properly. */
bool config_replace(bool config_save_on_exit, char *path);
#endif
bool config_overlay_enable_default(void);
void config_set_defaults(void *data);
void config_load(void *data);
settings_t *config_get_ptr(void);
RETRO_END_DECLS
+3 -2
View File
@@ -25,6 +25,7 @@
#include "core_type.h"
#include "input/input_defines.h"
#include "disk_control_interface.h"
RETRO_BEGIN_DECLS
@@ -67,8 +68,8 @@ typedef struct rarch_system_info
bool supports_vfs;
struct retro_disk_control_callback disk_control_cb;
struct retro_location_callback location_cb;
disk_control_interface_t disk_control;
struct retro_location_callback location_cb;
struct
{
+74 -51
View File
@@ -21,14 +21,12 @@
#include <file/file_path.h>
#include <lists/dir_list.h>
#include <file/archive_file.h>
#include <streams/file_stream.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "retroarch.h"
#include "verbosity.h"
#include "core_info.h"
#include "file_path_special.h"
@@ -37,16 +35,9 @@
#include "uwp/uwp_func.h"
#endif
#ifdef HAVE_COMPRESSION
static const struct string_list *core_info_tmp_list = NULL;
#endif
static const char *core_info_tmp_path = NULL;
static core_info_t *core_info_current = NULL;
static core_info_list_t *core_info_curr_list = NULL;
enum compare_op
{
COMPARE_OP_EQUAL,
COMPARE_OP_EQUAL = 0,
COMPARE_OP_NOT_EQUAL,
COMPARE_OP_LESS,
COMPARE_OP_LESS_EQUAL,
@@ -54,6 +45,25 @@ enum compare_op
COMPARE_OP_GREATER_EQUAL
};
struct core_info_state
{
#ifdef HAVE_COMPRESSION
const struct string_list *tmp_list;
#endif
const char *tmp_path;
core_info_t *current;
core_info_list_t *curr_list;
};
typedef struct core_info_state core_info_state_t;
static core_info_state_t core_info_st;
static core_info_state_t *coreinfo_get_ptr(void)
{
return &core_info_st;
}
static void core_info_list_resolve_all_extensions(
core_info_list_t *core_info_list)
{
@@ -539,15 +549,18 @@ static bool core_info_does_support_file(
static int core_info_qsort_cmp(const void *a_, const void *b_)
{
const core_info_t *a = (const core_info_t*)a_;
const core_info_t *b = (const core_info_t*)b_;
int support_a = core_info_does_support_file(a, core_info_tmp_path);
int support_b = core_info_does_support_file(b, core_info_tmp_path);
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
const core_info_t *a = (const core_info_t*)a_;
const core_info_t *b = (const core_info_t*)b_;
int support_a = core_info_does_support_file(a,
p_coreinfo->tmp_path);
int support_b = core_info_does_support_file(b,
p_coreinfo->tmp_path);
#ifdef HAVE_COMPRESSION
support_a = support_a ||
core_info_does_support_any_file(a, core_info_tmp_list);
core_info_does_support_any_file(a, p_coreinfo->tmp_list);
support_b = support_b ||
core_info_does_support_any_file(b, core_info_tmp_list);
core_info_does_support_any_file(b, p_coreinfo->tmp_list);
#endif
if (support_a != support_b)
@@ -610,10 +623,7 @@ static bool core_info_list_update_missing_firmware_internal(
info->firmware[i].path, path_size);
info->firmware[i].missing = !path_is_valid(path);
if (info->firmware[i].missing && !info->firmware[i].optional)
{
*set_missing_bios = true;
RARCH_WARN("Firmware missing: %s\n", info->firmware[i].path);
}
}
free(path);
@@ -622,38 +632,44 @@ static bool core_info_list_update_missing_firmware_internal(
void core_info_free_current_core(void)
{
if (core_info_current)
free(core_info_current);
core_info_current = NULL;
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (p_coreinfo->current)
free(p_coreinfo->current);
p_coreinfo->current = NULL;
}
bool core_info_init_current_core(void)
{
core_info_current = (core_info_t*)calloc(1, sizeof(core_info_t));
if (!core_info_current)
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
core_info_t *current = (core_info_t*)calloc(1, sizeof(*current));
if (!current)
return false;
p_coreinfo->current = current;
return true;
}
bool core_info_get_current_core(core_info_t **core)
{
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!core)
return false;
*core = core_info_current;
*core = p_coreinfo->current;
return true;
}
void core_info_deinit_list(void)
{
if (core_info_curr_list)
core_info_list_free(core_info_curr_list);
core_info_curr_list = NULL;
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (p_coreinfo->curr_list)
core_info_list_free(p_coreinfo->curr_list);
p_coreinfo->curr_list = NULL;
}
bool core_info_init_list(const char *path_info, const char *dir_cores,
const char *exts, bool dir_show_hidden_files)
{
if (!(core_info_curr_list = core_info_list_new(dir_cores,
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!(p_coreinfo->curr_list = core_info_list_new(dir_cores,
!string_is_empty(path_info) ? path_info : dir_cores,
exts,
dir_show_hidden_files)))
@@ -663,39 +679,42 @@ bool core_info_init_list(const char *path_info, const char *dir_cores,
bool core_info_get_list(core_info_list_t **core)
{
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!core)
return false;
*core = core_info_curr_list;
*core = p_coreinfo->curr_list;
return true;
}
bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info,
bool *set_missing_bios)
{
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!info)
return false;
return core_info_list_update_missing_firmware_internal(
core_info_curr_list,
p_coreinfo->curr_list,
info->path, info->directory.system,
set_missing_bios);
}
bool core_info_load(core_info_ctx_find_t *info)
{
core_info_t *core_info = NULL;
core_info_t *core_info = NULL;
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!info)
return false;
if (!core_info_current)
if (!p_coreinfo->current)
core_info_init_current_core();
core_info_get_current_core(&core_info);
if (!core_info_curr_list)
if (!p_coreinfo->curr_list)
return false;
if (!core_info_list_get_info(core_info_curr_list,
if (!core_info_list_get_info(p_coreinfo->curr_list,
core_info, info->path))
return false;
@@ -704,9 +723,10 @@ bool core_info_load(core_info_ctx_find_t *info)
bool core_info_find(core_info_ctx_find_t *info, const char *core_path)
{
if (!info || !core_info_curr_list)
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!info || !p_coreinfo->curr_list)
return false;
info->inf = core_info_find_internal(core_info_curr_list, core_path);
info->inf = core_info_find_internal(p_coreinfo->curr_list, core_path);
if (!info->inf)
return false;
return true;
@@ -729,20 +749,21 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list,
const char *path, const core_info_t **infos, size_t *num_infos)
{
size_t i;
size_t supported = 0;
size_t supported = 0;
#ifdef HAVE_COMPRESSION
struct string_list *list = NULL;
struct string_list *list = NULL;
#endif
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (!core_info_list)
return;
core_info_tmp_path = path;
p_coreinfo->tmp_path = path;
#ifdef HAVE_COMPRESSION
if (path_is_compressed_file(path))
list = file_archive_get_file_list(path, NULL);
core_info_tmp_list = list;
p_coreinfo->tmp_list = list;
#endif
/* Let supported core come first in list so we can return
@@ -839,8 +860,9 @@ size_t core_info_list_num_info_files(core_info_list_t *core_info_list)
bool core_info_database_match_archive_member(const char *database_path)
{
char *database = NULL;
const char *new_path = path_basename(database_path);
char *database = NULL;
const char *new_path = path_basename(database_path);
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (string_is_empty(new_path))
return false;
@@ -852,13 +874,13 @@ bool core_info_database_match_archive_member(const char *database_path)
path_remove_extension(database);
if (core_info_curr_list)
if (p_coreinfo->curr_list)
{
size_t i;
for (i = 0; i < core_info_curr_list->count; i++)
for (i = 0; i < p_coreinfo->curr_list->count; i++)
{
const core_info_t *info = &core_info_curr_list->list[i];
const core_info_t *info = &p_coreinfo->curr_list->list[i];
if (!info->database_match_archive_member)
continue;
@@ -880,8 +902,9 @@ error:
bool core_info_database_supports_content_path(
const char *database_path, const char *path)
{
char *database = NULL;
const char *new_path = path_basename(database_path);
char *database = NULL;
const char *new_path = path_basename(database_path);
core_info_state_t *p_coreinfo = coreinfo_get_ptr();
if (string_is_empty(new_path))
return false;
@@ -893,13 +916,13 @@ bool core_info_database_supports_content_path(
path_remove_extension(database);
if (core_info_curr_list)
if (p_coreinfo->curr_list)
{
size_t i;
for (i = 0; i < core_info_curr_list->count; i++)
for (i = 0; i < p_coreinfo->curr_list->count; i++)
{
const core_info_t *info = &core_info_curr_list->list[i];
const core_info_t *info = &p_coreinfo->curr_list->list[i];
if (!string_list_find_elem(info->supported_extensions_list,
path_get_extension(path)))
+48 -28
View File
@@ -94,7 +94,13 @@ static unsigned sw_sws_threads;
static video_buffer_t *video_buffer;
static tpool_t *tpool;
#if LIBAVUTIL_VERSION_MAJOR > 55
/* If libavutil is at least version 55 or higher,
* and if libavcodec is at least version 57.80.100 or higher,
* enable hardware acceleration */
#define ENABLE_HW_ACCEL ((LIBAVUTIL_VERSION_MAJOR > 55) && ENABLE_HW_ACCEL_CHECK2())
#define ENABLE_HW_ACCEL_CHECK2() ((LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR >= 80 && LIBAVCODEC_VERSION_MICRO >= 100) || (LIBAVCODEC_VERSION_MAJOR > 57))
#if ENABLE_HW_ACCEL
static enum AVHWDeviceType hw_decoder;
static bool hw_decoding_enabled;
static enum AVPixelFormat pix_fmt;
@@ -278,11 +284,11 @@ void CORE_PREFIX(retro_get_system_av_info)(struct retro_system_av_info *info)
void CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
{
static const struct retro_variable vars[] = {
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
{ "ffmpeg_hw_decoder", "Use Hardware decoder (restart); off|auto|"
"cuda|d3d11va|drm|dxva2|mediacodec|opencl|qsv|vaapi|vdpau|videotoolbox" },
#endif
{ "ffmpeg_sw_decoder_threads", "Software decoder thread count (restart); auto|1|2|4|8|16" },
{ "ffmpeg_sw_decoder_threads", "Software decoder thread count (restart); auto|1|2|4|6|8|10|12|14|16" },
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
{ "ffmpeg_temporal_interp", "Temporal Interpolation; disabled|enabled" },
#ifdef HAVE_GL_FFT
@@ -409,7 +415,7 @@ static void check_variables(bool firststart)
slock_unlock(decode_thread_lock);
}
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
if (firststart)
{
hw_var.key = "ffmpeg_hw_decoder";
@@ -491,9 +497,6 @@ static void seek_frame(int seek_frames)
}
audio_frames = frame_cnt * media.sample_rate / media.interpolate_fps;
tpool_wait(tpool);
video_buffer_clear(video_buffer);
if (audio_decode_fifo)
fifo_clear(audio_decode_fifo);
scond_signal(fifo_decode_cond);
@@ -506,7 +509,6 @@ static void seek_frame(int seek_frames)
}
slock_unlock(fifo_lock);
}
void CORE_PREFIX(retro_run)(void)
@@ -837,7 +839,7 @@ void CORE_PREFIX(retro_run)(void)
CORE_PREFIX(audio_batch_cb)(audio_buffer, to_read_frames);
}
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
/*
* Try to initialize a specific HW decoder defined by type.
* Optionaly tests the pixel format list for a compatible pixel format.
@@ -936,7 +938,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx,
{
enum AVPixelFormat format = AV_PIX_FMT_NONE;
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
if (!force_sw_decoder)
{
if (hw_decoder == AV_HWDEVICE_TYPE_NONE)
@@ -960,7 +962,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx,
format = fctx->streams[video_stream_index]->codec->pix_fmt;
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
hw_decoding_enabled = false;
}
else
@@ -970,7 +972,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx,
return format;
}
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
/* Callback used by ffmpeg to configure the pixelformat to use. */
static enum AVPixelFormat get_format(AVCodecContext *ctx,
const enum AVPixelFormat *pix_fmts)
@@ -1005,7 +1007,7 @@ static bool open_codec(AVCodecContext **ctx, enum AVMediaType type, unsigned ind
{
video_stream_index = index;
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
vctx->get_format = get_format;
pix_fmt = select_decoder((*ctx), NULL);
#else
@@ -1293,7 +1295,7 @@ static void sws_worker_thread(void *arg)
AVFrame *tmp_frame = NULL;
video_decoder_context_t *ctx = (video_decoder_context_t*) arg;
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
if (hw_decoding_enabled)
tmp_frame = ctx->hw_source;
else
@@ -1336,7 +1338,7 @@ static void sws_worker_thread(void *arg)
#endif
av_frame_unref(ctx->source);
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
av_frame_unref(ctx->hw_source);
#endif
@@ -1357,7 +1359,8 @@ static void decode_video(AVCodecContext *ctx, AVPacket *pkt, size_t frame_size)
{
if (main_sleeping)
{
log_cb(RETRO_LOG_ERROR, "[FFMPEG] Thread: Video deadlock detected.\n");
if (!do_seek)
log_cb(RETRO_LOG_ERROR, "[FFMPEG] Thread: Video deadlock detected.\n");
tpool_wait(tpool);
video_buffer_clear(video_buffer);
return;
@@ -1394,7 +1397,7 @@ static void decode_video(AVCodecContext *ctx, AVPacket *pkt, size_t frame_size)
goto end;
}
#if LIBAVUTIL_VERSION_MAJOR > 55
#if ENABLE_HW_ACCEL
if (hw_decoding_enabled)
/* Copy data from VRAM to RAM */
if ((ret = av_hwframe_transfer_data(decoder_ctx->hw_source, decoder_ctx->source, 0)) < 0)
@@ -1443,7 +1446,7 @@ static int16_t *decode_audio(AVCodecContext *ctx, AVPacket *pkt,
return buffer;
}
while(true)
for (;;)
{
ret = avcodec_receive_frame(ctx, frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
@@ -1530,8 +1533,16 @@ static void decode_thread_seek(double time)
#endif
}
static bool earlier_or_close_enough(double p1, double p2) {
return (p1 <= p2 || (p1-p2) <= 0.001);
/**
* This function makes sure that we don't decode too many
* packets and cause stalls in our decoding pipeline.
* This could happen if we decode too many packets and
* saturate our buffers. We have a window of "still okay"
* to decode, that depends on the media fps.
**/
static bool earlier_or_close_enough(double p1, double p2)
{
return (p1 <= p2 || (p1-p2) < (1.0 / media.interpolate_fps) );
}
static void decode_thread(void *data)
@@ -1643,15 +1654,17 @@ static void decode_thread(void *data)
/*
* Decode audio packet if:
* 1. there is a vido packet for in the buffer
* 2. it's the start of file
* 3. it's audio only media
* 4. EOF
* 1. it's the start of file or it's audio only media
* 2. there is a video packet for in the buffer
* 3. EOF
**/
if (!packet_buffer_empty(audio_packet_buffer) &&
((!eof && earlier_or_close_enough(next_audio_start, next_video_end)) ||
next_video_end == 0.0 ||
eof))
(
next_video_end == 0.0 ||
(!eof && earlier_or_close_enough(next_audio_start, next_video_end)) ||
eof
)
)
{
packet_buffer_get_packet(audio_packet_buffer, pkt);
last_audio_end = audio_timebase * (pkt->pts + pkt->duration);
@@ -1668,7 +1681,12 @@ static void decode_thread(void *data)
* 3. EOF
**/
if (!packet_buffer_empty(video_packet_buffer) &&
((!eof && earlier_or_close_enough(next_video_end, last_audio_end)) || !actx_active || eof ))
(
(!eof && earlier_or_close_enough(next_video_end, last_audio_end)) ||
!actx_active ||
eof
)
)
{
packet_buffer_get_packet(video_packet_buffer, pkt);
@@ -1733,8 +1751,10 @@ static void decode_thread(void *data)
for (i = 0; (int)i < audio_streams_num; i++)
swr_free(&swr[i]);
#if ENABLE_HW_ACCEL
if (vctx && vctx->hw_device_ctx)
av_buffer_unref(&vctx->hw_device_ctx);
#endif
packet_buffer_destroy(audio_packet_buffer);
packet_buffer_destroy(video_packet_buffer);
+2 -2
View File
@@ -16,7 +16,7 @@ struct packet_buffer
packet_buffer_t *packet_buffer_create()
{
packet_buffer_t *b = malloc(sizeof(packet_buffer_t));
packet_buffer_t *b = (packet_buffer_t*)malloc(sizeof(packet_buffer_t));
if (!b)
return NULL;
@@ -99,7 +99,7 @@ void packet_buffer_get_packet(packet_buffer_t *packet_buffer, AVPacket *pkt)
{
AVPacketNode_t *new_tail = NULL;
if (packet_buffer->tail == NULL)
if (!packet_buffer->tail)
return;
av_packet_move_ref(pkt, packet_buffer->tail->data);
+9 -9
View File
@@ -25,14 +25,14 @@ struct video_buffer
video_buffer_t *video_buffer_create(size_t capacity, int frame_size, int width, int height)
{
video_buffer_t *b = malloc(sizeof(video_buffer_t));
video_buffer_t *b = (video_buffer_t*)malloc(sizeof(video_buffer_t));
if (!b)
return NULL;
memset(b, 0, sizeof(video_buffer_t));
b->capacity = capacity;
b->status = malloc(sizeof(enum kbStatus) * capacity);
b->status = (enum kbStatus*)malloc(sizeof(enum kbStatus) * capacity);
if (!b->status)
goto fail;
for (int i = 0; i < capacity; i++)
@@ -44,21 +44,21 @@ video_buffer_t *video_buffer_create(size_t capacity, int frame_size, int width,
if (!b->lock || !b->open_cond || !b->finished_cond)
goto fail;
b->buffer = malloc(sizeof(video_decoder_context_t) * capacity);
b->buffer = (video_decoder_context_t*)malloc(sizeof(video_decoder_context_t) * capacity);
if (!b->buffer)
goto fail;
for (int i = 0; i < capacity; i++)
{
b->buffer[i].index = i;
b->buffer[i].pts = 0;
b->buffer[i].sws = sws_alloc_context();
b->buffer[i].source = av_frame_alloc();
b->buffer[i].index = i;
b->buffer[i].pts = 0;
b->buffer[i].sws = sws_alloc_context();
b->buffer[i].source = av_frame_alloc();
#if LIBAVUTIL_VERSION_MAJOR > 55
b->buffer[i].hw_source = av_frame_alloc();
#endif
b->buffer[i].target = av_frame_alloc();
b->buffer[i].frame_buf = av_malloc(frame_size);
b->buffer[i].target = av_frame_alloc();
b->buffer[i].frame_buf = (uint8_t*)av_malloc(frame_size);
avpicture_fill((AVPicture*)b->buffer[i].target, (const uint8_t*)b->buffer[i].frame_buf,
PIX_FMT_RGB32, width, height);
+1 -1
View File
@@ -24,4 +24,4 @@ void dump_result_value(Result val);
#define PRINTFPOS_STR(X,Y) "\x1b["X";"Y"H"
#define PRINTF_LINE(X) "\x1b["X";0H"
#endif //_CTR_DEBUG_H__
#endif /* _CTR_DEBUG_H__ */
+15 -12
View File
@@ -88,7 +88,9 @@ struct MemPool
last = nullptr;
}
//void Dump(const char* title);
#if 0
void Dump(const char* title);
#endif
u32 GetFreeSpace();
};
@@ -159,25 +161,25 @@ static bool linearInit(void)
void* linearMemAlign(size_t size, size_t alignment)
{
// Enforce minimum alignment
int shift;
/* Enforce minimum alignment */
if (alignment < 16)
alignment = 16;
// Convert alignment to shift amount
int shift;
/* Convert alignment to shift amount */
for (shift = 4; shift < 32; shift ++)
{
if ((1U<<shift) == alignment)
break;
}
if (shift == 32) // Invalid alignment
if (shift == 32) /* Invalid alignment */
return nullptr;
// Initialize the pool if it is not ready
/* Initialize the pool if it is not ready */
if (!sLinearPool.Ready() && !linearInit())
return nullptr;
// Allocate the chunk
/* Allocate the chunk */
MemChunk chunk;
if (!sLinearPool.Allocate(chunk, size, shift))
return nullptr;
@@ -211,23 +213,24 @@ void* linearAlloc(size_t size)
void* linearRealloc(void* mem, size_t size)
{
// TODO
/* TODO */
return NULL;
}
void linearFree(void* mem)
{
auto node = getNode(mem);
if (!node) return;
if (!node)
return;
// Free the chunk
/* Free the chunk */
sLinearPool.Deallocate(node->chunk);
// Free the node
/* Free the node */
delNode(node);
}
u32 linearSpaceFree()
u32 linearSpaceFree(void)
{
return sLinearPool.GetFreeSpace();
}
+2 -3
View File
@@ -17,8 +17,8 @@ u32 ctr_get_linear_unused(void);
u32 ctr_get_stack_free(void)
{
extern u32 __stack_bottom;
uint32_t* stack_bottom_current = (u32*)__stack_bottom;
while(*stack_bottom_current++ == 0xFCFCFCFC);
stack_bottom_current--;
@@ -110,12 +110,11 @@ void ctr_request_free_pages(u32 pages)
void* _sbrk_r(struct _reent *ptr, ptrdiff_t incr)
{
static u32 sbrk_top = 0;
u32 tmp;
if (!sbrk_top)
sbrk_top = __heapBase;
u32 tmp;
int diff = ((sbrk_top + incr + 0xFFF) & ~0xFFF)
- (__heapBase + __heap_size);
+22 -22
View File
@@ -23,7 +23,7 @@ extern void* __service_ptr;
typedef u32(*backdoor_fn)(u32 arg0, u32 arg1);
__attribute((naked))
static u32 svc_7b(backdoor_fn entry_fn, ...) // can pass up to two arguments to entry_fn(...)
static u32 svc_7b(backdoor_fn entry_fn, ...) /* can pass up to two arguments to entry_fn(...) */
{
__asm__ volatile(
"push {r0, r1, r2} \n\t"
@@ -161,19 +161,17 @@ static void target_thread_entry(mch2_thread_args_t* args)
static u32 get_first_free_basemem_page(bool isNew3DS)
{
s64 v1;
int memused_base;
int memused_base_linear; // guessed
memused_base = osGetMemRegionUsed(MEMREGION_BASE);
int memused_base_linear; /* guessed */
int memused_base = osGetMemRegionUsed(MEMREGION_BASE);
svcGetSystemInfo(&v1, 2, 0);
memused_base_linear = 0x6C000 + v1 +
(osGetKernelVersion() > SYSTEM_VERSION(2, 49, 0) ? (isNew3DS ? 0x2000 : 0x1000) : 0x0);
return (osGetKernelVersion() > SYSTEM_VERSION(2, 40, 0) ? 0xE0000000 : 0xF0000000) // kernel FCRAM mapping
+ (isNew3DS ? 0x10000000 : 0x08000000) // FCRAM size
- (memused_base - memused_base_linear) // memory usage for pages allocated without the MEMOP_LINEAR flag
- 0x1000; // skip to the start addr of the next free page
return (osGetKernelVersion() > SYSTEM_VERSION(2, 40, 0) ? 0xE0000000 : 0xF0000000) /* kernel FCRAM mapping */
+ (isNew3DS ? 0x10000000 : 0x08000000) /* FCRAM size */
- (memused_base - memused_base_linear) /* memory usage for pages allocated without the MEMOP_LINEAR flag */
- 0x1000; /* skip to the start addr of the next free page */
}
@@ -280,7 +278,7 @@ static void do_memchunkhax2(void)
u32 alloc_address_kaddr = osConvertVirtToPhys((void*)linear_address) + mch2.kernel_fcram_mapping_offset;
mch2.thread_page_kva = get_first_free_basemem_page(mch2.isNew3DS) - 0x10000; // skip down 16 pages
mch2.thread_page_kva = get_first_free_basemem_page(mch2.isNew3DS) - 0x10000; /* skip down 16 pages */
((u32*)linear_buffer)[0] = 1;
((u32*)linear_buffer)[1] = mch2.thread_page_kva;
((u32*)linear_buffer)[2] = alloc_address_kaddr + (((mch2.alloc_size >> 12) - 3) << 13) + (skip_pages << 12);
@@ -404,8 +402,9 @@ static void gspwn(u32 dst, u32 src, u32 size, u8* flush_buffer)
* *(u32*)val1 = 0x0;
*/
// X-X--X-X
// X-XXXX-X
/* X-X--X-X
* X-XXXX-X
*/
static void memchunkhax1_write_pair(u32 val1, u32 val2)
{
@@ -458,23 +457,24 @@ static void do_memchunkhax1(void)
{
u32 saved_vram_value = *(u32*)0x1F000008;
// 0x1F000000 contains the enable bit for svc 0x7B
/* 0x1F000000 contains the enable bit for svc 0x7B */
memchunkhax1_write_pair(get_thread_page() + THREAD_PAGE_ACL_OFFSET + SVC_ACL_OFFSET(0x7B), 0x1F000000);
write_kaddr(0x1F000008, saved_vram_value);
}
Result get_luma_version(u32 *major, u32 *minor) {
s64 out;
u32 version;
Result get_luma_version(u32 *major, u32 *minor)
{
s64 out;
u32 version;
if (R_FAILED(svcGetSystemInfo(&out, 0x10000, 0)))
return -1;
if (R_FAILED(svcGetSystemInfo(&out, 0x10000, 0)))
return -1;
version = (u32)out;
*major = GET_VERSION_MAJOR(version);
*minor = GET_VERSION_MINOR(version);
return 0;
version = (u32)out;
*major = GET_VERSION_MAJOR(version);
*minor = GET_VERSION_MINOR(version);
return 0;
}
Result svchax_init(bool patch_srv)
+73 -59
View File
@@ -9,75 +9,89 @@ extern const loaderFuncs_s loader_Ninjhax1;
extern const loaderFuncs_s loader_Ninjhax2;
extern const loaderFuncs_s loader_Rosalina;
static void (*launch_3dsx)(const char* path, argData_s* args, executableMetadata_s* em);
static void (*launch_3dsx)(const char* path,
argData_s* args, executableMetadata_s* em);
static int exec_3dsx_actual(const char* path, const char** args, bool appendPath){
struct stat sBuff;
argData_s newProgramArgs;
unsigned int argChars = 0;
unsigned int argNum = 0;
bool fileExists;
bool inited;
static int exec_3dsx_actual(const char* path,
const char** args, bool appendPath)
{
struct stat sBuff;
argData_s newProgramArgs;
unsigned int argChars = 0;
unsigned int argNum = 0;
bool fileExists;
bool inited;
if(path == NULL || path[0] == '\0'){
errno = EINVAL;
return -1;
}
if (!path || path[0] == '\0')
{
errno = EINVAL;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if(!fileExists){
errno = ENOENT;
return -1;
}
else if(S_ISDIR(sBuff.st_mode)){
errno = EINVAL;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if (!fileExists)
{
errno = ENOENT;
return -1;
}
else if (S_ISDIR(sBuff.st_mode))
{
errno = EINVAL;
return -1;
}
//args the string functions write to the passed string, this will cause a write to read only memory sot the string must be cloned
memset(newProgramArgs.buf, '\0', sizeof(newProgramArgs.buf));
newProgramArgs.dst = (char*)&newProgramArgs.buf[1];
if(appendPath){
strcpy(newProgramArgs.dst, path);
newProgramArgs.dst += strlen(path) + 1;
newProgramArgs.buf[0]++;
/* args the string functions write to the passed string,
* this will cause a write to read only memory,
* so the string must be cloned */
memset(newProgramArgs.buf, '\0', sizeof(newProgramArgs.buf));
newProgramArgs.dst = (char*)&newProgramArgs.buf[1];
if (appendPath)
{
strcpy(newProgramArgs.dst, path);
newProgramArgs.dst += strlen(path) + 1;
newProgramArgs.buf[0]++;
}
while(args[argNum] != NULL)
{
strcpy(newProgramArgs.dst, args[argNum]);
newProgramArgs.dst += strlen(args[argNum]) + 1;
newProgramArgs.buf[0]++;
argNum++;
}
}
while(args[argNum] != NULL){
strcpy(newProgramArgs.dst, args[argNum]);
newProgramArgs.dst += strlen(args[argNum]) + 1;
newProgramArgs.buf[0]++;
argNum++;
}
inited = loader_Rosalina.init();
launch_3dsx = loader_Rosalina.launchFile;
inited = loader_Rosalina.init();
launch_3dsx = loader_Rosalina.launchFile;
if (!inited)
{
inited = loader_Ninjhax2.init();
launch_3dsx = loader_Ninjhax2.launchFile;
}
if(!inited){
inited = loader_Ninjhax2.init();
launch_3dsx = loader_Ninjhax2.launchFile;
}
if (!inited)
{
inited = loader_Ninjhax1.init();
launch_3dsx = loader_Ninjhax1.launchFile;
}
if(!inited){
inited = loader_Ninjhax1.init();
launch_3dsx = loader_Ninjhax1.launchFile;
}
if (inited)
{
osSetSpeedupEnable(false);
launch_3dsx(path, &newProgramArgs, NULL);
exit(0);
}
if(inited){
osSetSpeedupEnable(false);
launch_3dsx(path, &newProgramArgs, NULL);
exit(0);
}
//should never be reached
errno = ENOTSUP;
return -1;
/* should never be reached */
errno = ENOTSUP;
return -1;
}
int exec_3dsx(const char* path, const char** args){
return exec_3dsx_actual(path, args, true/*appendPath*/);
int exec_3dsx(const char* path, const char** args)
{
return exec_3dsx_actual(path, args, true/*appendPath*/);
}
int exec_3dsx_no_path_in_args(const char* path, const char** args){
return exec_3dsx_actual(path, args, false/*appendPath*/);
}
int exec_3dsx_no_path_in_args(const char* path, const char** args)
{
return exec_3dsx_actual(path, args, false/*appendPath*/);
}
+8 -3
View File
@@ -1,9 +1,14 @@
#ifndef EXEC_3DSX_H
#define EXEC_3DSX_H
//since 3dsx programs are not guaranteed access to the OS, the 3dsx bootloader run by the exploit must run the next program
//your program must have no extra threads running when this is called, these limits do not apply to exec_cia
/* since 3dsx programs are not guaranteed access to the OS,
* the 3dsx bootloader run by the exploit must run the next program
*
* your program must have no extra threads running when this is called,
* these limits do not apply to exec_cia
*/
int exec_3dsx_no_path_in_args(const char* path, const char** args);
int exec_3dsx(const char* path, const char** args);
#endif
#endif
+164 -147
View File
@@ -13,187 +13,204 @@ typedef struct{
char argvHmac[0x20] = {0x1d, 0x78, 0xff, 0xb9, 0xc5, 0xbc, 0x78, 0xb7, 0xac, 0x29, 0x1d, 0x3e, 0x16, 0xd0, 0xcf, 0x53, 0xef, 0x12, 0x58, 0x83, 0xb6, 0x9e, 0x2f, 0x79, 0x47, 0xf9, 0x35, 0x61, 0xeb, 0x50, 0xd7, 0x67};
static void errorAndQuit(const char* errorStr){
errorConf error;
static void errorAndQuit(const char* errorStr)
{
errorConf error;
errorInit(&error, ERROR_TEXT, CFG_LANGUAGE_EN);
errorText(&error, errorStr);
errorDisp(&error);
exit(0);
errorInit(&error, ERROR_TEXT, CFG_LANGUAGE_EN);
errorText(&error, errorStr);
errorDisp(&error);
exit(0);
}
static int isCiaInstalled(u64 titleId, u16 version){
u32 titlesToRetrieve;
u32 titlesRetrieved;
u64* titleIds;
bool titleExists = false;
AM_TitleEntry titleInfo;
Result failed;
static int isCiaInstalled(u64 titleId, u16 version)
{
u32 titlesToRetrieve;
u32 titlesRetrieved;
u64* titleIds;
bool titleExists = false;
AM_TitleEntry titleInfo;
Result failed;
failed = AM_GetTitleCount(MEDIATYPE_SD, &titlesToRetrieve);
if(R_FAILED(failed))
return -1;
failed = AM_GetTitleCount(MEDIATYPE_SD, &titlesToRetrieve);
if (R_FAILED(failed))
return -1;
titleIds = malloc(titlesToRetrieve * sizeof(uint64_t));
if(titleIds == NULL)
return -1;
titleIds = malloc(titlesToRetrieve * sizeof(uint64_t));
if (!titleIds)
return -1;
failed = AM_GetTitleList(&titlesRetrieved, MEDIATYPE_SD, titlesToRetrieve, titleIds);
if(R_FAILED(failed))
return -1;
failed = AM_GetTitleList(&titlesRetrieved, MEDIATYPE_SD, titlesToRetrieve, titleIds);
if (R_FAILED(failed))
return -1;
for(u32 titlesToCheck = 0; titlesToCheck < titlesRetrieved; titlesToCheck++){
if(titleIds[titlesToCheck] == titleId){
titleExists = true;
break;
}
}
for(u32 titlesToCheck = 0; titlesToCheck < titlesRetrieved; titlesToCheck++)
{
if (titleIds[titlesToCheck] == titleId)
{
titleExists = true;
break;
}
}
free(titleIds);
free(titleIds);
if(titleExists){
failed = AM_GetTitleInfo(MEDIATYPE_SD, 1 /*titleCount*/, &titleId, &titleInfo);
if(R_FAILED(failed))
return -1;
if (titleExists)
{
failed = AM_GetTitleInfo(MEDIATYPE_SD, 1 /*titleCount*/, &titleId, &titleInfo);
if (R_FAILED(failed))
return -1;
if(titleInfo.version == version)
return 1;
}
if (titleInfo.version == version)
return 1;
}
return 0;
return 0;
}
static int installCia(Handle ciaFile){
Result failed;
Handle outputHandle;
u64 fileSize;
u64 fileOffset = 0;
u32 bytesRead;
u32 bytesWritten;
u8 transferBuffer[FILE_CHUNK_SIZE];
static int installCia(Handle ciaFile)
{
Result failed;
Handle outputHandle;
u64 fileSize;
u64 fileOffset = 0;
u32 bytesRead;
u32 bytesWritten;
u8 transferBuffer[FILE_CHUNK_SIZE];
failed = AM_StartCiaInstall(MEDIATYPE_SD, &outputHandle);
if(R_FAILED(failed))
return -1;
failed = AM_StartCiaInstall(MEDIATYPE_SD, &outputHandle);
if (R_FAILED(failed))
return -1;
failed = FSFILE_GetSize(ciaFile, &fileSize);
if(R_FAILED(failed))
return -1;
failed = FSFILE_GetSize(ciaFile, &fileSize);
if (R_FAILED(failed))
return -1;
while(fileOffset < fileSize){
u64 bytesRemaining = fileSize - fileOffset;
failed = FSFILE_Read(ciaFile, &bytesRead, fileOffset, transferBuffer, bytesRemaining < FILE_CHUNK_SIZE ? bytesRemaining : FILE_CHUNK_SIZE);
if(R_FAILED(failed)){
AM_CancelCIAInstall(outputHandle);
return -1;
}
while(fileOffset < fileSize)
{
u64 bytesRemaining = fileSize - fileOffset;
failed = FSFILE_Read(ciaFile, &bytesRead, fileOffset, transferBuffer, bytesRemaining < FILE_CHUNK_SIZE ? bytesRemaining : FILE_CHUNK_SIZE);
if (R_FAILED(failed))
{
AM_CancelCIAInstall(outputHandle);
return -1;
}
failed = FSFILE_Write(outputHandle, &bytesWritten, fileOffset, transferBuffer, bytesRead, 0);
if(R_FAILED(failed)){
AM_CancelCIAInstall(outputHandle);
if(R_DESCRIPTION(failed) == RD_ALREADY_EXISTS)
return 1;
return -1;
}
failed = FSFILE_Write(outputHandle, &bytesWritten, fileOffset, transferBuffer, bytesRead, 0);
if (R_FAILED(failed))
{
AM_CancelCIAInstall(outputHandle);
if (R_DESCRIPTION(failed) == RD_ALREADY_EXISTS)
return 1;
return -1;
}
if(bytesWritten != bytesRead){
AM_CancelCIAInstall(outputHandle);
return -1;
}
if (bytesWritten != bytesRead)
{
AM_CancelCIAInstall(outputHandle);
return -1;
}
fileOffset += bytesWritten;
}
fileOffset += bytesWritten;
}
failed = AM_FinishCiaInstall(outputHandle);
if(R_FAILED(failed))
return -1;
failed = AM_FinishCiaInstall(outputHandle);
if (R_FAILED(failed))
return -1;
return 1;
return 1;
}
int exec_cia(const char* path, const char** args){
struct stat sBuff;
bool fileExists;
bool inited;
int exec_cia(const char* path, const char** args)
{
struct stat sBuff;
bool fileExists;
bool inited;
if(path == NULL || path[0] == '\0'){
errno = EINVAL;
return -1;
}
if (!path || path[0] == '\0')
{
errno = EINVAL;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if(!fileExists){
errno = ENOENT;
return -1;
}
else if(S_ISDIR(sBuff.st_mode)){
errno = EINVAL;;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if (!fileExists)
{
errno = ENOENT;
return -1;
}
else if (S_ISDIR(sBuff.st_mode))
{
errno = EINVAL;
return -1;
}
inited = R_SUCCEEDED(amInit()) && R_SUCCEEDED(fsInit());
if(inited){
Result res;
AM_TitleEntry ciaInfo;
FS_Archive ciaArchive;
Handle ciaFile;
int ciaInstalled;
ciaParam param;
int argsLength;
inited = R_SUCCEEDED(amInit()) && R_SUCCEEDED(fsInit());
if (inited)
{
AM_TitleEntry ciaInfo;
FS_Archive ciaArchive;
Handle ciaFile;
int ciaInstalled;
ciaParam param;
int argsLength;
/* open CIA file */
Result res = FSUSER_OpenArchive(&ciaArchive, ARCHIVE_SDMC, fsMakePath(PATH_EMPTY, ""));
//open cia file
res = FSUSER_OpenArchive(&ciaArchive, ARCHIVE_SDMC, fsMakePath(PATH_EMPTY, ""));
if(R_FAILED(res))
errorAndQuit("Cant open SD FS archive.");
if (R_FAILED(res))
errorAndQuit("Cant open SD FS archive.");
res = FSUSER_OpenFile(&ciaFile, ciaArchive, fsMakePath(PATH_ASCII, path + 5/*skip "sdmc:"*/), FS_OPEN_READ, 0);
if(R_FAILED(res))
errorAndQuit("Cant open CIA file.");
res = FSUSER_OpenFile(&ciaFile, ciaArchive, fsMakePath(PATH_ASCII, path + 5/*skip "sdmc:"*/), FS_OPEN_READ, 0);
if (R_FAILED(res))
errorAndQuit("Cant open CIA file.");
res = AM_GetCiaFileInfo(MEDIATYPE_SD, &ciaInfo, ciaFile);
if(R_FAILED(res))
errorAndQuit("Cant get CIA file info.");
res = AM_GetCiaFileInfo(MEDIATYPE_SD, &ciaInfo, ciaFile);
if (R_FAILED(res))
errorAndQuit("Cant get CIA file info.");
ciaInstalled = isCiaInstalled(ciaInfo.titleID, ciaInfo.version);
if(ciaInstalled == -1){
//error
errorAndQuit("Could not read title id list.");
}
else if(ciaInstalled == 0){
//not installed
int error = installCia(ciaFile);
if(error == -1)
errorAndQuit("Cant install CIA.");
}
ciaInstalled = isCiaInstalled(ciaInfo.titleID, ciaInfo.version);
if (ciaInstalled == -1)
{
/* error */
errorAndQuit("Could not read title ID list.");
}
else if (ciaInstalled == 0)
{
/* not installed */
int error = installCia(ciaFile);
if (error == -1)
errorAndQuit("Cant install CIA.");
}
FSFILE_Close(ciaFile);
FSUSER_CloseArchive(ciaArchive);
FSFILE_Close(ciaFile);
FSUSER_CloseArchive(ciaArchive);
param.argc = 0;
argsLength = 0;
char* argLocation = param.args;
while(args[param.argc] != NULL){
strcpy(argLocation, args[param.argc]);
argLocation += strlen(args[param.argc]) + 1;
argsLength += strlen(args[param.argc]) + 1;
param.argc++;
}
param.argc = 0;
argsLength = 0;
char* argLocation = param.args;
while(args[param.argc] != NULL)
{
strcpy(argLocation, args[param.argc]);
argLocation += strlen(args[param.argc]) + 1;
argsLength += strlen(args[param.argc]) + 1;
param.argc++;
}
res = APT_PrepareToDoApplicationJump(0, ciaInfo.titleID, 0x1);
if(R_FAILED(res))
errorAndQuit("CIA cant run, cant prepare.");
res = APT_PrepareToDoApplicationJump(0, ciaInfo.titleID, 0x1);
if (R_FAILED(res))
errorAndQuit("CIA cant run, cant prepare.");
res = APT_DoApplicationJump(&param, sizeof(param.argc) + argsLength, argvHmac);
if(R_FAILED(res))
errorAndQuit("CIA cant run, cant jump.");
res = APT_DoApplicationJump(&param, sizeof(param.argc) + argsLength, argvHmac);
if (R_FAILED(res))
errorAndQuit("CIA cant run, cant jump.");
//wait for application jump, for some reason its not instant
while(1);
}
/* wait for application jump, for some reason its not instant */
while(1);
}
//should never be reached
amExit();
fsExit();
errno = ENOTSUP;
return -1;
/* should never be reached */
amExit();
fsExit();
errno = ENOTSUP;
return -1;
}
+3 -3
View File
@@ -1,6 +1,6 @@
#pragma once
// C stdlib includes
/* C stdlib includes */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -10,7 +10,7 @@
#include <sys/stat.h>
#include <sys/types.h>
// 3DS includes
/* 3DS includes */
#include <3ds.h>
#define ENTRY_ARGBUFSIZE 0x400
@@ -73,7 +73,7 @@ typedef struct
u32 processAppCodeAddress;
u32 processHookTidLow, processHookTidHigh;
u32 mediatype;
bool capabilities[0x10]; // {socuAccess, csndAccess, qtmAccess, nfcAccess, httpcAccess, reserved...}
bool capabilities[0x10]; /* {socuAccess, csndAccess, qtmAccess, nfcAccess, httpcAccess, reserved...} */
} memmap_header_t;
typedef struct
+15 -15
View File
@@ -2,21 +2,21 @@
Handle launchOpenFile(const char* path)
{
if (strncmp(path, "sdmc:/", 6) == 0)
path += 5;
else if (*path != '/')
return 0;
Handle file;
if (strncmp(path, "sdmc:/", 6) == 0)
path += 5;
else if (*path != '/')
return 0;
// Convert the executable path to UTF-16
static uint16_t __utf16path[PATH_MAX+1];
ssize_t units = utf8_to_utf16(__utf16path, (const uint8_t*)path, PATH_MAX);
if (units < 0 || units >= PATH_MAX) return 0;
__utf16path[units] = 0;
/* Convert the executable path to UTF-16 */
static uint16_t __utf16path[PATH_MAX+1];
ssize_t units = utf8_to_utf16(__utf16path, (const uint8_t*)path, PATH_MAX);
if (units < 0 || units >= PATH_MAX) return 0;
__utf16path[units] = 0;
// Open the file directly
FS_Path apath = { PATH_EMPTY, 1, (u8*)"" };
FS_Path fpath = { PATH_UTF16, (units+1)*2, (u8*)__utf16path };
Handle file;
Result res = FSUSER_OpenFileDirectly(&file, ARCHIVE_SDMC, apath, fpath, FS_OPEN_READ, 0);
return R_SUCCEEDED(res) ? file : 0;
/* Open the file directly */
FS_Path apath = { PATH_EMPTY, 1, (u8*)"" };
FS_Path fpath = { PATH_UTF16, (units+1)*2, (u8*)__utf16path };
Result res = FSUSER_OpenFileDirectly(&file, ARCHIVE_SDMC, apath, fpath, FS_OPEN_READ, 0);
return R_SUCCEEDED(res) ? file : 0;
}
+3 -3
View File
@@ -12,15 +12,15 @@ enum
typedef struct
{
// Mandatory fields
/* Mandatory fields */
const char* name;
u32 flags;
bool (* init)(void);
void (* deinit)(void);
void (* launchFile)(const char* path, argData_s* args, executableMetadata_s* em);
// Optional fields
/* Optional fields */
void (* useTitle)(u64 tid, u8 mediatype);
} loaderFuncs_s;
Handle launchOpenFile(const char* path);
Handle launchOpenFile(const char* path);
+3 -1
View File
@@ -69,5 +69,7 @@ const loaderFuncs_s loader_Ninjhax2 =
.init = init,
.deinit = deinit,
.launchFile = launchFile,
//.useTitle = useTitle,
#if 0
.useTitle = useTitle,
#endif
};
@@ -12,7 +12,7 @@ static Result HBLDR_SetTarget(const char* path)
u32 pathLen = strlen(path) + 1;
u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(2, 0, 2); //0x20002
cmdbuf[0] = IPC_MakeHeader(2, 0, 2); /* 0x20002 */
cmdbuf[1] = IPC_Desc_StaticBuffer(pathLen, 0);
cmdbuf[2] = (u32)path;
@@ -25,7 +25,7 @@ static Result HBLDR_SetArgv(const void* buffer, u32 size)
{
u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(3, 0, 2); //0x30002
cmdbuf[0] = IPC_MakeHeader(3, 0, 2); /* 0x30002 */
cmdbuf[1] = IPC_Desc_StaticBuffer(size, 1);
cmdbuf[2] = (u32)buffer;
+28 -26
View File
@@ -15,9 +15,9 @@
void GPU_Init(Handle *gsphandle)
{
gpuCmdBuf=NULL;
gpuCmdBufSize=0;
gpuCmdBufOffset=0;
gpuCmdBuf = NULL;
gpuCmdBufSize = 0;
gpuCmdBufOffset = 0;
}
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
@@ -27,16 +27,18 @@ void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
void GPU_SetFloatUniform(GPU_SHADER_TYPE type, u32 startreg, u32* data, u32 numreg)
{
if(!data)return;
if(!data)
return;
int regOffset=(type==GPU_GEOMETRY_SHADER)?(-0x30):(0x0);
int regOffset = (type == GPU_GEOMETRY_SHADER) ? (-0x30) : (0x0);
GPUCMD_AddWrite(GPUREG_VSH_FLOATUNIFORM_CONFIG+regOffset, 0x80000000|startreg);
GPUCMD_AddWrites(GPUREG_VSH_FLOATUNIFORM_DATA+regOffset, data, numreg*4);
GPUCMD_AddWrite(GPUREG_VSH_FLOATUNIFORM_CONFIG+regOffset, 0x80000000|startreg);
GPUCMD_AddWrites(GPUREG_VSH_FLOATUNIFORM_DATA+regOffset, data, numreg*4);
}
//takes PAs as arguments
void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u32 h)
/* takes PAs as arguments */
void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer,
u32 x, u32 y, u32 w, u32 h)
{
u32 param[0x4];
float fw=(float)w;
@@ -53,9 +55,9 @@ void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u3
GPUCMD_AddIncrementalWrites(GPUREG_DEPTHBUFFER_LOC, param, 0x00000003);
GPUCMD_AddWrite(GPUREG_RENDERBUF_DIM, f116e);
GPUCMD_AddWrite(GPUREG_DEPTHBUFFER_FORMAT, 0x00000003); //depth buffer format
GPUCMD_AddWrite(GPUREG_COLORBUFFER_FORMAT, 0x00000002); //color buffer format
GPUCMD_AddWrite(GPUREG_FRAMEBUFFER_BLOCK32, 0x00000000); //?
GPUCMD_AddWrite(GPUREG_DEPTHBUFFER_FORMAT, 0x00000003); /* depth buffer format */
GPUCMD_AddWrite(GPUREG_COLORBUFFER_FORMAT, 0x00000002); /* color buffer format */
GPUCMD_AddWrite(GPUREG_FRAMEBUFFER_BLOCK32, 0x00000000); /* ? */
param[0x0]=f32tof24(fw/2);
param[0x1]=f32tof31(2.0f / fw) << 1;
@@ -70,7 +72,7 @@ void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u3
param[0x2]=((h-1)<<16)|((w-1)&0xFFFF);
GPUCMD_AddIncrementalWrites(GPUREG_SCISSORTEST_MODE, param, 0x00000003);
//enable depth buffer
/* enable depth buffer */
param[0x0]=0x0000000F;
param[0x1]=0x0000000F;
param[0x2]=0x00000002;
@@ -136,8 +138,8 @@ void GPU_SetBlendingColor(u8 r, u8 g, u8 b, u8 a)
void GPU_SetTextureEnable(GPU_TEXUNIT units)
{
GPUCMD_AddMaskedWrite(GPUREG_SH_OUTATTR_CLOCK, 0x2, units<<8); // enables texcoord outputs
GPUCMD_AddWrite(GPUREG_TEXUNIT_CONFIG, 0x00011000|units); // enables texture units
GPUCMD_AddMaskedWrite(GPUREG_SH_OUTATTR_CLOCK, 0x2, units<<8); /* enables texcoord outputs */
GPUCMD_AddWrite(GPUREG_TEXUNIT_CONFIG, 0x00011000|units); /* enables texture units */
}
void GPU_SetTexture(GPU_TEXUNIT unit, u32* data, u16 width, u16 height, u32 param, GPU_TEXCOLOR colorType)
@@ -250,24 +252,24 @@ void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16
param[0x1]=(alphaOperands<<12)|(rgbOperands);
param[0x2]=(alphaCombine<<16)|(rgbCombine);
param[0x3]=constantColor;
param[0x4]=0x00000000; // ?
param[0x4]=0x00000000; /* ? */
GPUCMD_AddIncrementalWrites(GPUREG_0000|GPU_TEVID[id], param, 0x00000005);
}
void GPU_DrawArray(GPU_Primitive_t primitive, u32 first, u32 count)
{
//set primitive type
/* set primitive type */
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x2, primitive);
GPUCMD_AddMaskedWrite(GPUREG_RESTART_PRIMITIVE, 0x2, 0x00000001);
//index buffer address register should be cleared (except bit 31) before drawing
/* index buffer address register should be cleared (except bit 31) before drawing */
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000);
//pass number of vertices
/* pass number of vertices */
GPUCMD_AddWrite(GPUREG_NUMVERTICES, count);
//set first vertex
/* set first vertex */
GPUCMD_AddWrite(GPUREG_VERTEX_OFFSET, first);
//all the following except 0x000F022E might be useless
/* all the following except 0x000F022E might be useless */
GPUCMD_AddMaskedWrite(GPUREG_GEOSTAGE_CONFIG2, 0x1, 0x00000001);
GPUCMD_AddMaskedWrite(GPUREG_START_DRAW_FUNC0, 0x1, 0x00000000);
GPUCMD_AddWrite(GPUREG_DRAWARRAYS, 0x00000001);
@@ -278,12 +280,12 @@ void GPU_DrawArray(GPU_Primitive_t primitive, u32 first, u32 count)
void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n)
{
//set primitive type
/* set primitive type */
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x2, primitive);
GPUCMD_AddMaskedWrite(GPUREG_RESTART_PRIMITIVE, 0x2, 0x00000001);
//index buffer (TODO : support multiple types)
/* index buffer (TODO : support multiple types) */
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000|((u32)indexArray));
//pass number of vertices
/* pass number of vertices */
GPUCMD_AddWrite(GPUREG_NUMVERTICES, n);
GPUCMD_AddWrite(GPUREG_VERTEX_OFFSET, 0x00000000);
@@ -296,7 +298,7 @@ void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n)
GPUCMD_AddMaskedWrite(GPUREG_START_DRAW_FUNC0, 0x1, 0x00000001);
GPUCMD_AddWrite(GPUREG_VTX_FUNC, 0x00000001);
// CHECKME: does this one also require GPUREG_FRAMEBUFFER_FLUSH at the end?
/* CHECKME: does this one also require GPUREG_FRAMEBUFFER_FLUSH at the end? */
}
void GPU_FinishDrawing()
@@ -315,7 +317,7 @@ void GPU_Finalize(void)
GPUCMD_Split(NULL, NULL);
#else
GPUCMD_AddWrite(GPUREG_FINALIZE, 0x12345678);
//not the cleanest way of guaranteeing 0x10-byte size but whatever good enough for now
/* not the cleanest way of guaranteeing 0x10-byte size but whatever good enough for now */
GPUCMD_AddWrite(GPUREG_FINALIZE,0x12345678);
#endif
}
-10
View File
@@ -29,7 +29,6 @@
#include "core_info.h"
#include "database_info.h"
#include "verbosity.h"
int database_info_build_query_enum(char *s, size_t len,
enum database_query_type type,
@@ -105,7 +104,6 @@ int database_info_build_query_enum(char *s, size_t len,
add_quotes = false;
break;
case DATABASE_QUERY_NONE:
RARCH_LOG("Unknown type: %d\n", type);
break;
}
@@ -122,10 +120,6 @@ int database_info_build_query_enum(char *s, size_t len,
strlcat(s, "}", len);
#if 0
RARCH_LOG("query: %s\n", s);
#endif
return 0;
}
@@ -289,10 +283,6 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur,
else if (string_is_equal(str, "md5"))
db_info->md5 = bin_to_hex_alloc(
(uint8_t*)val->val.binary.buff, val->val.binary.len);
else
{
RARCH_LOG("Unknown key: %s\n", str);
}
}
rmsgpack_dom_value_free(&item);
+7 -2
View File
@@ -17,8 +17,6 @@
#ifndef _PS3_DEFINES_H
#define _PS3_DEFINES_H
#include <sdk_version.h>
/*============================================================
AUDIO PROTOTYPES
============================================================ */
@@ -71,6 +69,7 @@ extern int audioAddData(uint32_t portNum, float *data, uint32_t frames, float vo
#define sys_semaphore_t sys_sem_t
#else
#include <sdk_version.h>
#include <cell/audio.h>
#include <sys/event.h>
#include <sys/synchronization.h>
@@ -330,6 +329,11 @@ extern int audioAddData(uint32_t portNum, float *data, uint32_t frames, float vo
#define sys_ppu_thread_join sysThreadJoin
#define sys_ppu_thread_exit sysThreadExit
#define sys_process_exit sysProcessExit
#define sys_game_process_exitspawn sysProcessExitSpawn2
#define SYS_PROCESS_PRIMARY_STACK_SIZE_1M SYS_PROCESS_SPAWN_STACK_SIZE_1M
#define SYS_PPU_THREAD_CREATE_JOINABLE 0 /* FIXME - not sure if this is correct */
#elif defined(__CELLOS_LV2__)
#include <sys/ppu_thread.h>
@@ -572,6 +576,7 @@ extern int audioAddData(uint32_t portNum, float *data, uint32_t frames, float vo
#define socketclose close
#define sys_net_initialize_network netInitialize
#define sys_net_finalize_network netFinalizeNetwork
#else
#include <netex/net.h>
#include <np.h>
-92
View File
@@ -1,92 +0,0 @@
---
AccessModifierOffset: -4
AlignAfterOpenBracket: true
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Stroustrup
BreakBeforeInheritanceComma: true
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakStringLiterals: true
ColumnLimit: 100
CommentPragmas: ''
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
FixNamespaceComments: true
ForEachMacros: []
IndentCaseLabels: false
IncludeCategories:
- Regex: '^("|<)stdafx\.h(pp)?("|>)'
Priority: -1
- Regex: '^<(W|w)indows.h>'
Priority: 1
- Regex: '^<'
Priority: 2
- Regex: '.*'
Priority: 3
IncludeIsMainRegex: '(_test|_win|_linux|_mac|_ios|_osx|_null)?$'
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 0
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 9999999
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
---
Language: Cpp
---
Language: ObjC
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: false
---
Language: Java
BasedOnStyle: Google
BreakAfterJavaFieldAnnotations: true
...
-5
View File
@@ -1,5 +0,0 @@
/build*/
/.vscode/
/thirdparty/
.vs/
.DS_Store
-47
View File
@@ -1,47 +0,0 @@
language: cpp
env:
global:
- CLANG_FORMAT_SUFFIX="-dummy" # don't use formatting on Travis, this is
# needed not to use default 3.5 version
# which is too old.
matrix:
include:
- os: linux
env: MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
- os: linux
env: MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
addons:
apt:
sources:
- llvm-toolchain-trusty-4.0
packages:
- clang-4.0
- os: linux
env: MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
packages:
- clang-5.0
- os: osx
osx_image: xcode9
# prevent Travis from overwriting our CXX variables
before_install:
- eval "${MATRIX_EVAL}"
- echo $CXX
script:
- mkdir build
- cd build
- cmake -DCLANG_FORMAT_SUFFIX=$CLANG_FORMAT_SUFFIX --config Release ..
- cmake --build . -- -j2
-56
View File
@@ -1,56 +0,0 @@
cmake_minimum_required (VERSION 3.2.0)
project (DiscordRPC)
include(GNUInstallDirs)
option(BUILD_EXAMPLES "Build example apps" ON)
# format
file(GLOB_RECURSE ALL_SOURCE_FILES
examples/*.cpp examples/*.h examples/*.c
include/*.h
src/*.cpp src/*.h src/*.c
)
# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0
find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX})
if (CLANG_FORMAT_CMD)
add_custom_target(
clangformat
COMMAND ${CLANG_FORMAT_CMD}
-i -style=file -fallback-style=none
${ALL_SOURCE_FILES}
DEPENDS
${ALL_SOURCE_FILES}
)
endif(CLANG_FORMAT_CMD)
# thirdparty stuff
execute_process(
COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
ERROR_QUIET
)
find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
if (NOT RAPIDJSONTEST)
message("no rapidjson, download")
set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/v1.1.0.tar.gz)
file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz ${RJ_TAR_FILE})
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf ${RJ_TAR_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
)
file(REMOVE ${RJ_TAR_FILE})
endif(NOT RAPIDJSONTEST)
find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
add_library(rapidjson STATIC IMPORTED ${RAPIDJSON})
# add subdirs
add_subdirectory(src)
if (BUILD_EXAMPLES)
add_subdirectory(examples/send-presence)
endif(BUILD_EXAMPLES)
-91
View File
@@ -1,91 +0,0 @@
# Discord RPC
This is a library for interfacing your game with a locally running Discord desktop client. It's known to work on Windows, macOS, and Linux. You can use the lib directly if you like, or use it as a guide to writing your own if it doesn't suit your game as is. PRs/feedback welcome if you have an improvement everyone might want, or can describe how this doesn't meet your needs.
Included here are some quick demos that implement the very minimal subset to show current status, and
have callbacks for where a more complete game would do more things (joining, spectating, etc).
## Documentation
The most up to date documentation for Rich Presence can always be found on our [developer site](https://discordapp.com/developers/docs/rich-presence/how-to)! If you're interested in rolling your own native implementation of Rich Presence via IPC sockets instead of using our SDK—hey, you've got free time, right?—check out the ["Hard Mode" documentation](https://github.com/discordapp/discord-rpc/blob/master/documentation/hard-mode.md).
## Basic Usage
Zeroith, you should be set up to build things because you are a game developer, right?
First, head on over to the [Discord developers site](https://discordapp.com/developers/applications/me) and make yourself an app. Keep track of `Client ID` -- you'll need it here to pass to the init function.
### From package
Download a release package for your platform(s) -- they have subdirs with various prebuilt options, select the one you need add `/include` to your compile includes, `/lib` to your linker paths, and link with `discord-rpc`. For the dynamically linked builds, you'll need to ship the associated file along with your game.
### From repo
First-eth, you'll want `CMake`. There's a few different ways to install it on your system, and you should refer to [their website](https://cmake.org/install/). Many package managers provide ways of installing CMake as well.
To make sure it's installed correctly, type `cmake --version` into your flavor of terminal/cmd. If you get a response with a version number, you're good to go!
There's a [CMake](https://cmake.org/download/) file that should be able to generate the lib for you; Sometimes I use it like this:
```sh
cd <path to discord-rpc>
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<path to install discord-rpc to>
cmake --build . --config Release --target install
```
There is a wrapper build script `build.py` that runs `cmake` with a few different options.
Usually, I run `build.py` to get things started, then use the generated project files as I work on things. It does depend on `click` library, so do a quick `pip install click` to make sure you have it if you want to run `build.py`.
There are some CMake options you might care about:
| flag | default | does |
|------|---------|------|
| `ENABLE_IO_THREAD` | `ON` | When enabled, we start up a thread to do io processing, if disabled you should call `Discord_UpdateConnection` yourself.
| `USE_STATIC_CRT` | `OFF` | (Windows) Enable to statically link the CRT, avoiding requiring users install the redistributable package. (The prebuilt binaries enable this option)
| [`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/v3.7/variable/BUILD_SHARED_LIBS.html) | `OFF` | Build library as a DLL
| `WARNINGS_AS_ERRORS` | `OFF` | When enabled, compiles with `-Werror` (on *nix platforms). |
## Continuous Builds
Why do we have three of these? Three times the fun!
| CI | badge |
|----|-------|
| TravisCI | [![Build status](https://travis-ci.org/discordapp/discord-rpc.svg?branch=master)](https://travis-ci.org/discordapp/discord-rpc)
| AppVeyor | [![Build status](https://ci.appveyor.com/api/projects/status/qvkoc0w1c4f4b8tj?svg=true)](https://ci.appveyor.com/project/crmarsh/discord-rpc)
| Buildkite (internal) | [![Build status](https://badge.buildkite.com/e103d79d247f6776605a15246352a04b8fd83d69211b836111.svg)](https://buildkite.com/discord/discord-rpc)
## Sample: send-presence
This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence update on each command.
## Sample: button-clicker
This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button. Run `python build.py unity` in the root directory to build the correct library files and place them in their respective folders.
## Sample: unrealstatus
This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI. Run `python build.py unreal` in the root directory to build the correct library files and place them in their respective folders.
## Wrappers and Implementations
Below is a table of unofficial, community-developed wrappers for and implementations of Rich Presence in various languages. If you would like to have yours added, please make a pull request adding your repository to the table. The repository should include:
- The code
- A brief ReadMe of how to use it
- A working example
###### Rich Presence Wrappers and Implementations
| Name | Language |
|------|----------|
| [DerelictDiscordRPC](https://github.com/voidblaster/DerelictDiscordRPC) | [D](https://dlang.org/) |
| [discord-rpc.jar](https://github.com/Vatuu/discord-rpc "Discord-RPC.jar") | Java |
| [java-discord-rpc](https://github.com/MinnDevelopment/java-discord-rpc) | Java |
| [Discord-IPC](https://github.com/jagrosh/DiscordIPC) | Java |
| [Discord Rich Presence](https://npmjs.org/discord-rich-presence) | JavaScript |
| [drpc4k](https://github.com/Bluexin/drpc4k) | [Kotlin](https://kotlinlang.org/) |
| [lua-discordRPC](https://github.com/pfirsich/lua-discordRPC) | LuaJIT (FFI) |
| [pypresence](https://github.com/qwertyquerty/pypresence) | [Python](https://python.org/) |
| [SwordRPC](https://github.com/Azoy/SwordRPC) | [Swift](https://swift.org) |
-17
View File
@@ -1,17 +0,0 @@
version: '{build}'
install:
- python -m pip install click
build_script:
- mkdir examples\unrealstatus\Plugins\discordrpc\Binaries\ThirdParty\discordrpcLibrary\Win64
- python build.py
artifacts:
- path: builds\install\win32-dynamic
name: win32-dynamic
- path: builds\install\win32-static
name: win32-static
- path: builds\install\win64-dynamic
name: win64-dynamic
- path: builds\install\win64-static
name: win64-static
-304
View File
@@ -1,304 +0,0 @@
#!/usr/bin/env python
import os
import subprocess
import sys
import shutil
import zipfile
from contextlib import contextmanager
import click
def get_platform():
""" a name for the platform """
if sys.platform.startswith('win'):
return 'win'
elif sys.platform == 'darwin':
return 'osx'
elif sys.platform.startswith('linux'):
return 'linux'
raise Exception('Unsupported platform ' + sys.platform)
SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
# we use Buildkite which sets this env variable by default
IS_BUILD_MACHINE = os.environ.get('CI', '') == 'true'
PLATFORM = get_platform()
INSTALL_ROOT = os.path.join(SCRIPT_PATH, 'builds', 'install')
def get_signtool():
""" get path to code signing tool """
if PLATFORM == 'win':
sdk_dir = 'c:\\Program Files (x86)\\Windows Kits\\10' # os.environ['WindowsSdkDir']
return os.path.join(sdk_dir, 'bin', 'x86', 'signtool.exe')
elif PLATFORM == 'osx':
return '/usr/bin/codesign'
@contextmanager
def cd(new_dir):
""" Temporarily change current directory """
if new_dir:
old_dir = os.getcwd()
os.chdir(new_dir)
yield
if new_dir:
os.chdir(old_dir)
def mkdir_p(path):
""" mkdir -p """
if not os.path.isdir(path):
click.secho('Making ' + path, fg='yellow')
os.makedirs(path)
@click.group(invoke_without_command=True)
@click.pass_context
@click.option('--clean', is_flag=True)
def cli(ctx, clean):
""" click wrapper for command line stuff """
if ctx.invoked_subcommand is None:
ctx.invoke(libs, clean=clean)
if IS_BUILD_MACHINE:
ctx.invoke(sign)
ctx.invoke(archive)
@cli.command()
@click.pass_context
def unity(ctx):
""" build just dynamic libs for use in unity project """
ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True)
BUILDS = []
click.echo('--- Copying libs and header into unity example')
UNITY_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'button-clicker', 'Assets', 'Plugins')
if sys.platform.startswith('win'):
LIBRARY_NAME = 'discord-rpc.dll'
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
UNITY_64_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86_64')
BUILDS.append({BUILD_64_BASE_PATH: UNITY_64_DLL_PATH})
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
UNITY_32_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
BUILDS.append({BUILD_32_BASE_PATH: UNITY_32_DLL_PATH})
elif sys.platform == 'darwin':
LIBRARY_NAME = 'discord-rpc.bundle'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
UNITY_DLL_PATH = UNITY_PROJECT_PATH
os.rename(
os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.dylib'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.bundle'))
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
elif sys.platform.startswith('linux'):
LIBRARY_NAME = 'discord-rpc.so'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
UNITY_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
os.rename(os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.so'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.so'))
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
else:
raise Exception('Unsupported platform ' + sys.platform)
for build in BUILDS:
for i in build:
mkdir_p(build[i])
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
@cli.command()
@click.pass_context
def unreal(ctx):
""" build libs and copy them into the unreal project """
ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True)
BUILDS = []
click.echo('--- Copying libs and header into unreal example')
UNREAL_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'unrealstatus', 'Plugins', 'discordrpc')
UNREAL_INCLUDE_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Include')
mkdir_p(UNREAL_INCLUDE_PATH)
shutil.copy(os.path.join(SCRIPT_PATH, 'include', 'discord_rpc.h'), UNREAL_INCLUDE_PATH)
if sys.platform.startswith('win'):
LIBRARY_NAME = 'discord-rpc.lib'
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
UNREAL_64_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64')
BUILDS.append({BUILD_64_BASE_PATH: UNREAL_64_DLL_PATH})
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
UNREAL_32_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win32')
BUILDS.append({BUILD_32_BASE_PATH: UNREAL_32_DLL_PATH})
elif sys.platform == 'darwin':
LIBRARY_NAME = 'libdiscord-rpc.dylib'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Mac')
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
elif sys.platform.startswith('linux'):
LIBRARY_NAME = 'libdiscord-rpc.so'
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Linux')
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
else:
raise Exception('Unsupported platform ' + sys.platform)
for build in BUILDS:
for i in build:
mkdir_p(build[i])
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
def build_lib(build_name, generator, options, just_release):
""" Create a dir under builds, run build and install in it """
build_path = os.path.join(SCRIPT_PATH, 'builds', build_name)
install_path = os.path.join(INSTALL_ROOT, build_name)
mkdir_p(build_path)
mkdir_p(install_path)
with cd(build_path):
initial_cmake = ['cmake', SCRIPT_PATH, '-DCMAKE_INSTALL_PREFIX=%s' % os.path.join('..', 'install', build_name)]
if generator:
initial_cmake.extend(['-G', generator])
for key in options:
val = options[key]
if type(val) is bool:
val = 'ON' if val else 'OFF'
initial_cmake.append('-D%s=%s' % (key, val))
click.echo('--- Building ' + build_name)
subprocess.check_call(initial_cmake)
if not just_release:
subprocess.check_call(['cmake', '--build', '.', '--config', 'Debug'])
subprocess.check_call(['cmake', '--build', '.', '--config', 'Release', '--target', 'install'])
@cli.command()
def archive():
""" create zip of install dir """
click.echo('--- Archiving')
archive_file_path = os.path.join(SCRIPT_PATH, 'builds', 'discord-rpc-%s.zip' % get_platform())
archive_file = zipfile.ZipFile(archive_file_path, 'w', zipfile.ZIP_DEFLATED)
archive_src_base_path = INSTALL_ROOT
archive_dst_base_path = 'discord-rpc'
with cd(archive_src_base_path):
for path, _, filenames in os.walk('.'):
for fname in filenames:
fpath = os.path.join(path, fname)
dst_path = os.path.normpath(os.path.join(archive_dst_base_path, fpath))
click.echo('Adding ' + dst_path)
archive_file.write(fpath, dst_path)
@cli.command()
def sign():
""" Do code signing within install directory using our cert """
tool = get_signtool()
signable_extensions = set()
if PLATFORM == 'win':
signable_extensions.add('.dll')
sign_command_base = [
tool,
'sign',
'/n',
'Discord Inc.',
'/a',
'/tr',
'http://timestamp.digicert.com/rfc3161',
'/as',
'/td',
'sha256',
'/fd',
'sha256',
]
elif PLATFORM == 'osx':
signable_extensions.add('.dylib')
sign_command_base = [
tool,
'--keychain',
os.path.expanduser('~/Library/Keychains/login.keychain'),
'-vvvv',
'--deep',
'--force',
'--sign',
'Developer ID Application: Hammer & Chisel Inc. (53Q6R32WPB)',
]
else:
click.secho('Not signing things on this platform yet', fg='red')
return
click.echo('--- Signing')
for path, _, filenames in os.walk(INSTALL_ROOT):
for fname in filenames:
ext = os.path.splitext(fname)[1]
if ext not in signable_extensions:
continue
fpath = os.path.join(path, fname)
click.echo('Sign ' + fpath)
sign_command = sign_command_base + [fpath]
subprocess.check_call(sign_command)
@cli.command()
@click.option('--clean', is_flag=True)
@click.option('--static', is_flag=True)
@click.option('--shared', is_flag=True)
@click.option('--skip_formatter', is_flag=True)
@click.option('--just_release', is_flag=True)
def libs(clean, static, shared, skip_formatter, just_release):
""" Do all the builds for this platform """
if clean:
shutil.rmtree('builds', ignore_errors=True)
mkdir_p('builds')
if not (static or shared):
static = True
shared = True
static_options = {}
dynamic_options = {
'BUILD_SHARED_LIBS': True,
'USE_STATIC_CRT': True,
}
if skip_formatter or IS_BUILD_MACHINE:
static_options['CLANG_FORMAT_SUFFIX'] = 'none'
dynamic_options['CLANG_FORMAT_SUFFIX'] = 'none'
if IS_BUILD_MACHINE:
just_release = True
static_options['WARNINGS_AS_ERRORS'] = True
dynamic_options['WARNINGS_AS_ERRORS'] = True
if PLATFORM == 'win':
generator32 = 'Visual Studio 14 2015'
generator64 = 'Visual Studio 14 2015 Win64'
if static:
build_lib('win32-static', generator32, static_options, just_release)
build_lib('win64-static', generator64, static_options, just_release)
if shared:
build_lib('win32-dynamic', generator32, dynamic_options, just_release)
build_lib('win64-dynamic', generator64, dynamic_options, just_release)
elif PLATFORM == 'osx':
if static:
build_lib('osx-static', None, static_options, just_release)
if shared:
build_lib('osx-dynamic', None, dynamic_options, just_release)
elif PLATFORM == 'linux':
if static:
build_lib('linux-static', None, static_options, just_release)
if shared:
build_lib('linux-dynamic', None, dynamic_options, just_release)
if __name__ == '__main__':
os.chdir(SCRIPT_PATH)
sys.exit(cli())
-164
View File
@@ -1,164 +0,0 @@
# Hard Mode: Roll Your Own Client
Discord's Rich Presence feature is designed as an obfuscated addition to our existing [RPC infrastructure](https://discordapp.com/developers/docs/topics/rpc). The standalone library and header files make it easy for any dev to drop it into their game.
Our library communicates with Discord over the local Discord RPC socket. We've already done the work in connecting properly, handling disconnects and reconnects, and other RPC intracacies, but those who have done this implementation for our private alpha Voice and Chat SDK can simply make use of the new RPC commands and events to implement Rich Presence.
## Hark! A warning!
By committing to an RPC-only integration, you decide to forego the work our library and header file have done for you in the way of error handling, state storage, disconnecting and reconnecting, and other quality of life abstractions. While simply implementing the new RPC command and events will enable Rich Presence for your game, we highly suggest that you do your best to mimic the functionality of the SDK the most that you can. It ensure not only code quality on your part, but also an excellent experience on the part of your players.
## Application Protocol Registration
One thing that cannot be explicitly done over RPC is registering an application protocol for your game. If you choose to do an RPC-only implementation, you will have to register your application protocol yourself in the format of `discord-[your_app_id]://`. You can use `Discord_Register()` as a good(?) example of how to properly register an application protocol for use with Discord. For OSX and Linux it is probably simpler to handle the protocol registration as part of your install/packaging.
## New RPC Command
The new RPC command for Rich Presence is `SET_ACTIVITY`. The fields are similar to what is outlined in the SDK; we've combined similar fields into objects for the sake of less data on the wire.
The one major difference is the `party.size` field. It is an array with a size of two. The first element is the current party size, `partySize` from the main documentation. The second element is the maximum party size, `partyMax` from the main documentation.
Below is a full example of a `SET_ACTIVITY` command. Field restrictions like size are the same as outlined in the main documentation.
```
{
"cmd": "SET_ACTIVITY",
"args": {
"pid": 9999, // Your application's process id - required field
"activity": {
"state": "In a Group",
"details": "Competitive | In a Match",
"timestamps": {
"start": time(nullptr),
"end": time(nullptr) + ((60 * 5) + 23)
},
"assets": {
"large_image": "numbani_map",
"large_text": "Numbani",
"small_image": "pharah_profile",
"small_text": "Pharah"
},
"party": {
"id": GameEngine.GetPartyId(),
"size": [3, 6]
},
"secrets": {
"join": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f",
"spectate": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0",
"match": "4b2fdce12f639de8bfa7e3591b71a0d679d7c93f"
},
"instance": true
}
},
"nonce": "647d814a-4cf8-4fbb-948f-898abd24f55b"
}
```
## New RPC Events
The three new RPC events for Rich Presence power the ability to join and spectate your friends' games.
First is the `ACTIVITY_JOIN` event:
```json
{
"cmd": "DISPATCH",
"data": {
"secret": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f"
},
"evt": "ACTIVITY_JOIN"
}
```
Second is the `ACTIVITY_SPECTATE` event:
```json
{
"cmd": "DISPATCH",
"data": {
"secret": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0"
},
"evt": "ACTIVITY_SPECTATE"
}
```
And third is the `ACTIVITY_JOIN_REQUEST` event:
```json
{
"cmd": "DISPATCH",
"data": {
"user": {
"id": "53908232506183680",
"username": "Mason",
"discriminator": "1337",
"avatar": "a_bab14f271d565501444b2ca3be944b25"
}
},
"evt": "ACTIVITY_JOIN_REQUEST"
}
```
In order to receive these events, you need to [subscribe](https://discordapp.com/developers/docs/topics/rpc#subscribe) to them like so:
```json
{
"nonce": "be9a6de3-31d0-4767-a8e9-4818c5690015",
"evt": "ACTIVITY_JOIN",
"cmd": "SUBSCRIBE"
}
```
```json
{
"nonce": "ae9qdde3-31d0-8989-a8e9-dnakwy174he",
"evt": "ACTIVITY_SPECTATE",
"cmd": "SUBSCRIBE"
}
```
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-bbb52e9d6afa",
"evt": "ACTIVITY_JOIN_REQUEST",
"cmd": "SUBSCRIBE"
}
```
To unsubscribe from these events, resend with the command `UNSUBSCRIBE`
## Responding
A discord user will request access to the game. If the ACTIVITY_JOIN_REQUEST has been subscribed too, the ACTIVITY_JOIN_REQUEST event will be sent to the host's game. Accept it with following model:
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-15aerg126",
"cmd": "SEND_ACTIVITY_JOIN_INVITE",
"args":
{
"user_id": "53908232506183680"
}
}
```
To reject the request, use `CLOSE_ACTIVITY_REQUEST`:
```json
{
"nonce": "5dc0c062-98c6-47a0-8922-dasg256eafg",
"cmd": "CLOSE_ACTIVITY_REQUEST",
"args":
{
"user_id": "53908232506183680"
}
}
```
## Notes
Here are just some quick notes to help with some common troubleshooting problems.
* IPC will echo back every command you send as a response. Use this as a lock-step feature to avoid flooding messages. Can be used to validate messages such as the Presence or Subscribes.
* The pipe expects for frames to be written in a single byte array. You cannot do multiple `stream.Write(opcode);` `stream.Write(length);` as it will break the pipe. Instead create a buffer, write the data to the buffer, then send the entire buffer to the stream.
* Discord can be on any pipe ranging from `discord-ipc-0` to `discord-ipc-9`. It is a good idea to try and connect to each one and keeping the first one you connect too. For multiple clients (eg Discord and Canary), you might want to add a feature to manually select the pipe so you can more easily debug the application.
* All enums are `lower_snake_case`.
* The opcode and length in the header are `Little Endian Unsigned Integers (32bits)`. In some languages, you must convert them as they can be architecture specific.
* [Discord Rich Presence How-To](https://discordapp.com/developers/docs/rich-presence/how-to) contains a lot of the information this document doesn't. For example, it will tell you about the response payload.
* In the documentation, DISCORD_REPLY_IGNORE is just implemented the same as DISCORD_REPLY_NO.
* You can test the Join / Spectate feature by enabling them in your profile and whitelisting a test account. Use Canary to run 2 accounts on the same machine.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

@@ -1,8 +0,0 @@
/Library/
/Temp/
/obj/
/Assets/Plugins/
/Assets/Plugins.meta
*.sln
*.csproj
*.userprefs
@@ -1,129 +0,0 @@
using UnityEngine;
[System.Serializable]
public class DiscordJoinEvent : UnityEngine.Events.UnityEvent<string> { }
[System.Serializable]
public class DiscordSpectateEvent : UnityEngine.Events.UnityEvent<string> { }
[System.Serializable]
public class DiscordJoinRequestEvent : UnityEngine.Events.UnityEvent<DiscordRpc.DiscordUser> { }
public class DiscordController : MonoBehaviour
{
public DiscordRpc.RichPresence presence = new DiscordRpc.RichPresence();
public string applicationId;
public string optionalSteamId;
public int callbackCalls;
public int clickCounter;
public DiscordRpc.DiscordUser joinRequest;
public UnityEngine.Events.UnityEvent onConnect;
public UnityEngine.Events.UnityEvent onDisconnect;
public UnityEngine.Events.UnityEvent hasResponded;
public DiscordJoinEvent onJoin;
public DiscordJoinEvent onSpectate;
public DiscordJoinRequestEvent onJoinRequest;
DiscordRpc.EventHandlers handlers;
public void OnClick()
{
Debug.Log("Discord: on click!");
clickCounter++;
presence.details = string.Format("Button clicked {0} times", clickCounter);
DiscordRpc.UpdatePresence(presence);
}
public void RequestRespondYes()
{
Debug.Log("Discord: responding yes to Ask to Join request");
DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.Yes);
hasResponded.Invoke();
}
public void RequestRespondNo()
{
Debug.Log("Discord: responding no to Ask to Join request");
DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.No);
hasResponded.Invoke();
}
public void ReadyCallback(ref DiscordRpc.DiscordUser connectedUser)
{
++callbackCalls;
Debug.Log(string.Format("Discord: connected to {0}#{1}: {2}", connectedUser.username, connectedUser.discriminator, connectedUser.userId));
onConnect.Invoke();
}
public void DisconnectedCallback(int errorCode, string message)
{
++callbackCalls;
Debug.Log(string.Format("Discord: disconnect {0}: {1}", errorCode, message));
onDisconnect.Invoke();
}
public void ErrorCallback(int errorCode, string message)
{
++callbackCalls;
Debug.Log(string.Format("Discord: error {0}: {1}", errorCode, message));
}
public void JoinCallback(string secret)
{
++callbackCalls;
Debug.Log(string.Format("Discord: join ({0})", secret));
onJoin.Invoke(secret);
}
public void SpectateCallback(string secret)
{
++callbackCalls;
Debug.Log(string.Format("Discord: spectate ({0})", secret));
onSpectate.Invoke(secret);
}
public void RequestCallback(ref DiscordRpc.DiscordUser request)
{
++callbackCalls;
Debug.Log(string.Format("Discord: join request {0}#{1}: {2}", request.username, request.discriminator, request.userId));
joinRequest = request;
onJoinRequest.Invoke(request);
}
void Start()
{
}
void Update()
{
DiscordRpc.RunCallbacks();
}
void OnEnable()
{
Debug.Log("Discord: init");
callbackCalls = 0;
handlers = new DiscordRpc.EventHandlers();
handlers.readyCallback = ReadyCallback;
handlers.disconnectedCallback += DisconnectedCallback;
handlers.errorCallback += ErrorCallback;
handlers.joinCallback += JoinCallback;
handlers.spectateCallback += SpectateCallback;
handlers.requestCallback += RequestCallback;
DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId);
}
void OnDisable()
{
Debug.Log("Discord: shutdown");
DiscordRpc.Shutdown();
}
void OnDestroy()
{
}
}
@@ -1,12 +0,0 @@
fileFormatVersion: 2
guid: 27f0a5f59ffffa84c86547736e2e730a
timeCreated: 1501697692
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,198 +0,0 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
public class DiscordRpc
{
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void ReadyCallback(ref DiscordUser connectedUser);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void DisconnectedCallback(int errorCode, string message);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void ErrorCallback(int errorCode, string message);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void JoinCallback(string secret);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void SpectateCallback(string secret);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void RequestCallback(ref DiscordUser request);
public struct EventHandlers
{
public ReadyCallback readyCallback;
public DisconnectedCallback disconnectedCallback;
public ErrorCallback errorCallback;
public JoinCallback joinCallback;
public SpectateCallback spectateCallback;
public RequestCallback requestCallback;
}
[Serializable, StructLayout(LayoutKind.Sequential)]
public struct RichPresenceStruct
{
public IntPtr state; /* max 128 bytes */
public IntPtr details; /* max 128 bytes */
public long startTimestamp;
public long endTimestamp;
public IntPtr largeImageKey; /* max 32 bytes */
public IntPtr largeImageText; /* max 128 bytes */
public IntPtr smallImageKey; /* max 32 bytes */
public IntPtr smallImageText; /* max 128 bytes */
public IntPtr partyId; /* max 128 bytes */
public int partySize;
public int partyMax;
public IntPtr matchSecret; /* max 128 bytes */
public IntPtr joinSecret; /* max 128 bytes */
public IntPtr spectateSecret; /* max 128 bytes */
public bool instance;
}
[Serializable]
public struct DiscordUser
{
public string userId;
public string username;
public string discriminator;
public string avatar;
}
public enum Reply
{
No = 0,
Yes = 1,
Ignore = 2
}
[DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
[DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)]
public static extern void Shutdown();
[DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)]
public static extern void RunCallbacks();
[DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
private static extern void UpdatePresenceNative(ref RichPresenceStruct presence);
[DllImport("discord-rpc", EntryPoint = "Discord_ClearPresence", CallingConvention = CallingConvention.Cdecl)]
public static extern void ClearPresence();
[DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
public static extern void Respond(string userId, Reply reply);
[DllImport("discord-rpc", EntryPoint = "Discord_UpdateHandlers", CallingConvention = CallingConvention.Cdecl)]
public static extern void UpdateHandlers(ref EventHandlers handlers);
public static void UpdatePresence(RichPresence presence)
{
var presencestruct = presence.GetStruct();
UpdatePresenceNative(ref presencestruct);
presence.FreeMem();
}
public class RichPresence
{
private RichPresenceStruct _presence;
private readonly List<IntPtr> _buffers = new List<IntPtr>(10);
public string state; /* max 128 bytes */
public string details; /* max 128 bytes */
public long startTimestamp;
public long endTimestamp;
public string largeImageKey; /* max 32 bytes */
public string largeImageText; /* max 128 bytes */
public string smallImageKey; /* max 32 bytes */
public string smallImageText; /* max 128 bytes */
public string partyId; /* max 128 bytes */
public int partySize;
public int partyMax;
public string matchSecret; /* max 128 bytes */
public string joinSecret; /* max 128 bytes */
public string spectateSecret; /* max 128 bytes */
public bool instance;
/// <summary>
/// Get the <see cref="RichPresenceStruct"/> reprensentation of this instance
/// </summary>
/// <returns><see cref="RichPresenceStruct"/> reprensentation of this instance</returns>
internal RichPresenceStruct GetStruct()
{
if (_buffers.Count > 0)
{
FreeMem();
}
_presence.state = StrToPtr(state);
_presence.details = StrToPtr(details);
_presence.startTimestamp = startTimestamp;
_presence.endTimestamp = endTimestamp;
_presence.largeImageKey = StrToPtr(largeImageKey);
_presence.largeImageText = StrToPtr(largeImageText);
_presence.smallImageKey = StrToPtr(smallImageKey);
_presence.smallImageText = StrToPtr(smallImageText);
_presence.partyId = StrToPtr(partyId);
_presence.partySize = partySize;
_presence.partyMax = partyMax;
_presence.matchSecret = StrToPtr(matchSecret);
_presence.joinSecret = StrToPtr(joinSecret);
_presence.spectateSecret = StrToPtr(spectateSecret);
_presence.instance = instance;
return _presence;
}
/// <summary>
/// Returns a pointer to a representation of the given string with a size of maxbytes
/// </summary>
/// <param name="input">String to convert</param>
/// <returns>Pointer to the UTF-8 representation of <see cref="input"/></returns>
private IntPtr StrToPtr(string input)
{
if (string.IsNullOrEmpty(input)) return IntPtr.Zero;
var convbytecnt = Encoding.UTF8.GetByteCount(input);
var buffer = Marshal.AllocHGlobal(convbytecnt + 1);
for (int i = 0; i < convbytecnt + 1; i++)
{
Marshal.WriteByte(buffer, i , 0);
}
_buffers.Add(buffer);
Marshal.Copy(Encoding.UTF8.GetBytes(input), 0, buffer, convbytecnt);
return buffer;
}
/// <summary>
/// Convert string to UTF-8 and add null termination
/// </summary>
/// <param name="toconv">string to convert</param>
/// <returns>UTF-8 representation of <see cref="toconv"/> with added null termination</returns>
private static string StrToUtf8NullTerm(string toconv)
{
var str = toconv.Trim();
var bytes = Encoding.Default.GetBytes(str);
if (bytes.Length > 0 && bytes[bytes.Length - 1] != 0)
{
str += "\0\0";
}
return Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(str));
}
/// <summary>
/// Free the allocated memory for conversion to <see cref="RichPresenceStruct"/>
/// </summary>
internal void FreeMem()
{
for (var i = _buffers.Count - 1; i >= 0; i--)
{
Marshal.FreeHGlobal(_buffers[i]);
_buffers.RemoveAt(i);
}
}
}
}
@@ -1,12 +0,0 @@
fileFormatVersion: 2
guid: b4474a677de9d80409e98c5393ec5b1e
timeCreated: 1501697692
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,101 +0,0 @@
using UnityEditor;
using System.Diagnostics;
using System.IO;
[InitializeOnLoad]
public class ScriptBatch
{
static ScriptBatch()
{
EnsureDLL();
}
public static bool FileExists(string filename)
{
return new FileInfo(filename).Exists;
}
public static bool RunRpcBuildScript()
{
UnityEngine.Debug.Log("Try to run build script");
Process proc = new Process();
#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
proc.StartInfo.UseShellExecute = false;
// brew installs cmake in /usr/local/bin, which Unity seems to strip from PATH?
string newPath = proc.StartInfo.EnvironmentVariables["PATH"] + ":/usr/local/bin";
proc.StartInfo.EnvironmentVariables["PATH"] = newPath;
#endif
proc.StartInfo.FileName = "python";
proc.StartInfo.Arguments = "build.py unity";
proc.StartInfo.WorkingDirectory = "../..";
proc.Start();
proc.WaitForExit();
return proc.ExitCode == 0;
}
public static void EnsureDLL()
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
string[] dstDlls = { "Assets/Plugins/x86/discord-rpc.dll", "Assets/Plugins/x86_64/discord-rpc.dll" };
string[] srcDlls = { "../../builds/install/win64-dynamic/bin/discord-rpc.dll", "../../builds/install/win64-dynamic/bin/discord-rpc.dll" };
#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
string[] dstDirs = { "Assets/Plugins" };
string[] dstDlls = { "Assets/Plugins/discord-rpc.bundle" };
string[] srcDlls = { "../../builds/install/osx-dynamic/lib/libdiscord-rpc.dylib" };
#else
string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
string[] dstDlls = { "Assets/Plugins/discord-rpc.so" };
string[] srcDlls = { "../../builds/install/linux-dynamic/lib/libdiscord-rpc.so" };
#endif
Debug.Assert(dstDlls.Length == srcDlls.Length);
bool exists = true;
foreach (string fname in dstDlls)
{
if (!FileExists(fname))
{
exists = false;
break;
}
}
if (exists)
{
return;
}
exists = true;
foreach (string fname in srcDlls)
{
if (!FileExists(fname))
{
exists = false;
break;
}
}
if (!exists)
{
if (!RunRpcBuildScript())
{
UnityEngine.Debug.LogError("Build failed");
return;
}
}
// make sure the dirs exist
foreach (string dirname in dstDirs)
{
Directory.CreateDirectory(dirname);
}
// Copy dlls
for (int i = 0; i < dstDlls.Length; ++i)
{
FileUtil.CopyFileOrDirectory(srcDlls[i], dstDlls[i]);
}
}
}
@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: e5aecc4633e5f594b85eaa39f49bb402
timeCreated: 1512071254
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large. Load diff
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 3b03d21bb25fa494e8694cd6e4b6d769
timeCreated: 1501696924
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
@@ -1,17 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
m_ObjectHideFlags: 0
m_Volume: 1
Rolloff Scale: 1
Doppler Factor: 1
Default Speaker Mode: 2
m_SampleRate: 0
m_DSPBufferSize: 0
m_VirtualVoiceCount: 512
m_RealVoiceCount: 32
m_SpatializerPlugin:
m_AmbisonicDecoderPlugin:
m_DisableAudio: 0
m_VirtualizeEffects: 1
@@ -1,6 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
m_ObjectHideFlags: 0
m_Inputs: []
@@ -1,20 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
m_ObjectHideFlags: 0
serializedVersion: 3
m_Gravity: {x: 0, y: -9.81, z: 0}
m_DefaultMaterial: {fileID: 0}
m_BounceThreshold: 2
m_SleepThreshold: 0.005
m_DefaultContactOffset: 0.01
m_DefaultSolverIterations: 6
m_DefaultSolverVelocityIterations: 1
m_QueriesHitBackfaces: 0
m_QueriesHitTriggers: 1
m_EnableAdaptiveForce: 0
m_EnablePCM: 1
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_AutoSimulation: 1
m_AutoSyncTransforms: 1
@@ -1,10 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/main.unity
guid: 3b03d21bb25fa494e8694cd6e4b6d769
@@ -1,16 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_ExternalVersionControlSupport: Visible Meta Files
m_SerializationMode: 2
m_DefaultBehaviorMode: 1
m_SpritePackerMode: 4
m_SpritePackerPaddingPower: 1
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
m_ProjectGenerationRootNamespace:
m_UserGeneratedProjectSuffix:
m_CollabEditorSettings:
inProgressEnabled: 1
@@ -1,61 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_Deferred:
m_Mode: 1
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
m_DeferredReflections:
m_Mode: 1
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
m_ScreenSpaceShadows:
m_Mode: 1
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
m_LegacyDeferred:
m_Mode: 1
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
m_DepthNormals:
m_Mode: 1
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
m_MotionVectors:
m_Mode: 1
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
m_LightHalo:
m_Mode: 1
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders:
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}
m_CustomRenderPipeline: {fileID: 0}
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
m_DefaultRenderingPath: 1
m_DefaultMobileRenderingPath: 1
m_TierSettings: []
m_LightmapStripping: 0
m_FogStripping: 0
m_InstancingStripping: 0
m_LightmapKeepPlain: 1
m_LightmapKeepDirCombined: 1
m_LightmapKeepDynamicPlain: 1
m_LightmapKeepDynamicDirCombined: 1
m_LightmapKeepShadowMask: 1
m_LightmapKeepSubtractive: 1
m_FogKeepLinear: 1
m_FogKeepExp: 1
m_FogKeepExp2: 1
m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 0
m_LightsUseColorTemperature: 0
@@ -1,295 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Axes:
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton: a
altPositiveButton: d
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton: s
altPositiveButton: w
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left ctrl
altNegativeButton:
altPositiveButton: mouse 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left alt
altNegativeButton:
altPositiveButton: mouse 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left shift
altNegativeButton:
altPositiveButton: mouse 2
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: space
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse X
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse Y
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Mouse ScrollWheel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 2
joyNum: 0
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 0
type: 2
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 1
type: 2
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 0
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 1
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 2
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 3
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: return
altNegativeButton:
altPositiveButton: joystick button 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: enter
altNegativeButton:
altPositiveButton: space
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Cancel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: escape
altNegativeButton:
altPositiveButton: joystick button 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
@@ -1,89 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
areas:
- name: Walkable
cost: 1
- name: Not Walkable
cost: 1
- name: Jump
cost: 2
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
m_LastAgentTypeID: -887442657
m_Settings:
- serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.75
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
m_SettingNames:
- Humanoid
@@ -1,8 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!149 &1
NetworkManager:
m_ObjectHideFlags: 0
m_DebugLevel: 0
m_Sendrate: 15
m_AssetToPrefab: {}
@@ -1,37 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
m_ObjectHideFlags: 0
serializedVersion: 3
m_Gravity: {x: 0, y: -9.81}
m_DefaultMaterial: {fileID: 0}
m_VelocityIterations: 8
m_PositionIterations: 3
m_VelocityThreshold: 1
m_MaxLinearCorrection: 0.2
m_MaxAngularCorrection: 8
m_MaxTranslationSpeed: 100
m_MaxRotationSpeed: 360
m_BaumgarteScale: 0.2
m_BaumgarteTimeOfImpactScale: 0.75
m_TimeToSleep: 0.5
m_LinearSleepTolerance: 0.01
m_AngularSleepTolerance: 2
m_DefaultContactOffset: 0.01
m_AutoSimulation: 1
m_QueriesHitTriggers: 1
m_QueriesStartInColliders: 1
m_ChangeStopsCallbacks: 0
m_CallbacksOnDisable: 1
m_AutoSyncTransforms: 1
m_AlwaysShowColliders: 0
m_ShowColliderSleep: 1
m_ShowColliderContacts: 0
m_ShowColliderAABB: 0
m_ContactArrowScale: 0.2
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Loaded 100 of 954 files, more files were not shown because too many files have changed in this diff. Show more