Compare commits

...
1421 Commits
Author SHA1 Message Date
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
Twinaphex 16f25c2e06 Update AndroidManifest.xml 2020-01-09 21:36:38 +01:00
Twinaphex 8fea733a1f Update AndroidManifest.xml 2020-01-09 21:36:23 +01:00
Twinaphex bbb09f7557 Update AndroidManifest.xml 2020-01-09 21:36:14 +01:00
Twinaphex 1fc1acd3d0 Update CHANGES.md 2020-01-09 19:54:04 +01:00
twinaphex 0923985516 (GL/WGL) This regression caused cores that required GL to fail
because it would try to erroneously load GLESv2.dll instead of
OpenGL32.dll
2020-01-09 19:26:53 +01:00
twinaphex 2b1d1bc8cb (MaterialUI) Add icons for rooms 2020-01-09 18:21:25 +01:00
twinaphex 38e3cc2087 Update CHANGES.md 2020-01-09 18:11:00 +01:00
twinaphex be3acb902b (Discord) use fill_pathname_application_path 2020-01-09 17:19:00 +01:00
twinaphex 617940fb8d Move midi_null driver to retroarch.c 2020-01-09 17:00:46 +01:00
twinaphex a96ae6e987 (Playlists) Make sure history list can be set to 1 as a bare minimum -
bump up default to 200 for history and favorites lists
2020-01-09 16:49:52 +01:00
twinaphex a65396ba56 Add title for sideload core setting 2020-01-09 16:44:04 +01:00
twinaphex 61c4e3a5e4 Update Makefile.ctr.salamander 2020-01-09 15:49:24 +01:00
twinaphex df8f93e9d5 Split up VFS file_path code into separate file 2020-01-09 15:44:48 +01:00
twinaphex 577e1bd693 Merge branch 'master' of https://github.com/libretro/RetroArch 2020-01-09 15:28:30 +01:00
Twinaphex 1012d07e7f Merge pull request #9973 from jdgleaver/sideload-core-fix
Fix manual core installation
2020-01-09 15:26:53 +01:00
jdgleaver edec9448c4 Fix manual core installation 2020-01-09 14:13:21 +00:00
twinaphex 19ea50843c Merge branch 'master' of https://github.com/libretro/RetroArch 2020-01-09 01:43:12 +01:00
Twinaphex e9db190baa Merge pull request #9970 from hasenbanck/packet-buffer
Implement the packet buffer for the FFMPEG core
2020-01-08 22:06:19 +01:00
twinaphex fd5d9a0710 Merge branch 'packet-buffer' of git://github.com/hasenbanck/RetroArch 2020-01-08 21:56:31 +01:00
Nils Hasenbanck 1f673be3c8 Fixed the video decoder deadlock when using HW decoding. 2020-01-08 21:51:22 +01:00
Nils Hasenbanck a82582e859 Remove an unused struct variable. 2020-01-08 21:06:28 +01:00
Nils Hasenbanck 40ecfbcdfa Fix memory leak in ffmpeg core packet_buffer 2020-01-08 21:02:23 +01:00
Nils Hasenbanck 1e54379141 Implemented the packet buffer.
Simply use two packet_buffers that are double-linked lists of
AVPacket structs. This way we can control which packets to feed
to the decoders at the right time.

This solves the playback problem with the MP4 files.
2020-01-08 20:44:00 +01:00
twinaphex 291012d2a9 (libretro-common) Updates 2020-01-08 19:47:23 +01:00
Twinaphex 5296f4aebd Merge pull request #9968 from fjtrujy/psp/DevelopmentImprovements
Put new makefile options after the commons for PSP
2020-01-08 17:29:46 +01:00
Francisco Javier Trujillo Mata c86de916cb Put new makefile options after the commons for PSP 2020-01-08 16:53:42 +01:00
Twinaphex c014fc20a1 Update Makefile.psp1 2020-01-08 16:42:10 +01:00
Twinaphex 39f089f374 Merge pull request #9967 from jdgleaver/widget-title-fix
(Menu Widgets) Prevent 'looping' of task title text
2020-01-08 16:38:24 +01:00
jdgleaver 1fe7898add (Menu Widgets) Prevent 'looping' of task title text 2020-01-08 14:19:10 +00:00
twinaphex 3b2ec53100 (libretro-common) Update 2020-01-08 04:26:49 +01:00
twinaphex 3a8f12dff3 Update libretro-common 2020-01-08 01:44:58 +01:00
twinaphex 02d1eeb400 (VFS UWP) Get rid of verbosity.h dependency 2020-01-08 00:28:30 +01:00
twinaphex 261f1b72d4 Remove separate null_resampler.c file and move it into audio_resampler.c 2020-01-07 23:03:23 +01:00
Twinaphex 15f7ba4d99 Merge pull request #9963 from natinusala/master
libnx: fix swkbd indefinitely showing up
2020-01-07 21:06:20 +01:00
Twinaphex ea49348db2 Merge pull request #9964 from fjtrujy/psp/DevelopmentImprovements
[Psp] Development improvements
2020-01-07 20:20:04 +01:00
Francisco Javier Trujillo Mata af6208be29 Improve Makefile to make easier Debug in PSP 2020-01-07 20:07:24 +01:00
Francisco Javier Trujillo Mata 5f81200067 Include new action inside of the launch.json 2020-01-07 20:06:47 +01:00
Francisco Javier Trujillo Mata 3901c2d63a Add in libretro-common the psp1 implementation 2020-01-07 20:06:47 +01:00
natinusala b1ad6014f0 libnx: fix swkbd indefinitely showing up 2020-01-07 20:06:20 +01:00
Twinaphex 572611f1ca Merge pull request #9959 from dev-0x7C6/master
Fixed more compiler invokes in configure stage.
2020-01-07 18:52:09 +01:00
Twinaphex 6d4b1b69e5 Merge pull request #9962 from ToadKing/patch-1
fix null check in video_display_server
2020-01-07 16:47:00 +01:00
Michael Lelli dcb6bae868 fix null check in video_display_server 2020-01-07 09:36:32 -06:00
Twinaphex 69208d0fca Update CHANGES.md 2020-01-07 16:27:08 +01:00
Twinaphex 60c8edd39c Merge pull request #9960 from jdgleaver/core-updater-status
Display number of cores updated when updating installed cores
2020-01-07 16:26:46 +01:00
jdgleaver d2e2c289a6 Display number of cores updated when updating installed cores 2020-01-07 14:59:46 +00:00
Bartłomiej Burdukiewicz 562bf11946 Fixed more compiler invokes in configure stage. 2020-01-07 15:38:15 +01:00
twinaphex 3d80838754 Fix display server crashing on some platforms 2020-01-07 11:35:32 +01:00
Twinaphex 85f25574fb Merge pull request #9956 from ToadKing/fix-fullscreen
fix fullscreen button in packaged emscripten build
2020-01-07 11:33:29 +01:00
Twinaphex 2986e9ff37 Merge pull request #9954 from Derynect/fix_dispserv_null
fix null pointer deref in new dispserv_null code
2020-01-07 11:33:04 +01:00
Twinaphex 9b87456d3e Merge pull request #9955 from Derynect/dingux_flag_fix
Fixed flags for dingux target
2020-01-07 11:32:47 +01:00
Michael Lelli 8a64df5763 fix fullscreen button in packaged emscripten build 2020-01-06 21:36:44 -06:00
jovonna 376547044c fix null pointer deref in new dispserv_null code 2020-01-06 21:52:13 -05:00
jovonna 2b22eaa7e6 Fixed flags for dingux target 2020-01-06 21:33:53 -05:00
twinaphex da4c95531e Bump up version 2020-01-06 21:17:17 +01:00
Twinaphex 707aafa1e6 Update CHANGES.md 2020-01-06 20:36:52 +01:00
twinaphex e5169eee71 Remove menu/drivers/null.c - move it into menu/menu_driver.c 2020-01-06 20:23:58 +01:00
twinaphex 665b98bd28 (CTR) Buildfix 2020-01-06 20:09:59 +01:00
Twinaphex 0817fb3d18 Update CHANGES.md 2020-01-06 20:08:36 +01:00
Twinaphex 29e9546b7d Merge pull request #9949 from theheroGAC/patch-46
Update msg_hash_it.h
2020-01-06 20:08:16 +01:00
twinaphex 2653a9bed3 Update CHANGES.md 2020-01-06 19:05:28 +01:00
Twinaphex 72a44078ce Merge pull request #9950 from hasenbanck/sao-paulo
Add Brazil relay server in Sao Paulo.
2020-01-06 18:40:03 +01:00
twinaphex 501954c6f6 Forgot to bump this before 2020-01-06 18:32:58 +01:00
twinaphex fa7859ad13 (Gfx drivers context) Cleanup EGL calls 2020-01-06 18:27:18 +01:00
Nils Hasenbanck 600776012d Add Brazil relay server in Sao Paulo. 2020-01-06 18:14:59 +01:00
theheroGAC 37044dd387 Update msg_hash_it.h 2020-01-06 18:13:20 +01:00
twinaphex a11d955dd8 (INTL) Remove more duplicate English strings 2020-01-06 17:59:13 +01:00
theheroGAC c0daf56963 Update msg_hash_it.h 2020-01-06 17:54:16 +01:00
theheroGAC bbdf586f18 Update msg_hash_it.h 2020-01-06 17:34:12 +01:00
twinaphex 4a93cb2007 (Metal) Update pbxproj 2020-01-06 17:33:20 +01:00
twinaphex 203bea3fe6 (MIDI) Turn bunch of functions static
(Menu) Remove menu_display_null driver
2020-01-06 17:30:09 +01:00
twinaphex 641662d77c Remove led_null.c 2020-01-06 16:29:25 +01:00
twinaphex 2ad394148a Revert "Remove led_null.c"
This reverts commit bef72a19d0.
2020-01-06 16:22:11 +01:00
twinaphex bbd1e6a6a5 Get rid of separate null midi driver file and display server file 2020-01-06 16:06:42 +01:00
twinaphex bef72a19d0 Remove led_null.c 2020-01-06 16:01:05 +01:00
twinaphex 3efa83a646 Get rid of record null file 2020-01-06 15:59:03 +01:00
twinaphex 1d2150cb45 Remove drivers_hid/null_hid.c 2020-01-06 15:52:35 +01:00
twinaphex 56236f7372 Get rid of platform_null.c file 2020-01-06 15:35:35 +01:00
twinaphex 246863279a Get rid of null input and null joypad driver files 2020-01-06 15:28:11 +01:00
twinaphex a986b71947 Remove separate audio / video null driver files 2020-01-06 15:22:21 +01:00
Twinaphex 3eba8da4e9 Update CHANGES.md 2020-01-06 15:09:00 +01:00
Twinaphex 94261da70a Update CHANGES.md 2020-01-06 15:07:54 +01:00
twinaphex 5dcdee5faa Get rid of null camera file and null location file - and buildfix 2020-01-06 14:57:02 +01:00
twinaphex 8386c06e07 Fix issue #9368 on Linux - 'Show desktop menu on startup' does not
launch qt-ui
2020-01-06 14:48:41 +01:00
twinaphex 85d11eac30 Revert "(INTL) Remove duplicate English strings"
This reverts commit 755cc94489.
2020-01-06 14:09:07 +01:00
twinaphex 755cc94489 (INTL) Remove duplicate English strings 2020-01-06 14:06:34 +01:00
Mats A ef2ddf6912 fix breaking changes from the 3.0.0 libnx release 2020-01-06 13:12:00 +01:00
twinaphex f97e557194 (DRM/EGL) Buildfix 2020-01-06 00:33:28 +01:00
twinaphex 0029598822 (ANGLE) Add MINGW32/MINGW64 detection 2020-01-05 21:46:19 +01:00
twinaphex e23cd0e7e7 (Dingux) Build/warning fix 2020-01-05 20:09:30 +01:00
twinaphex 4c9ae245a4 (ANGLE) Add x64 mingw DLLs for libEGL.dll/libGLESv2.dll 2020-01-05 20:03:15 +01:00
twinaphex 4380b73ca6 Add HAVE_DYNAMIC_EGL option 2020-01-05 19:14:47 +01:00
twinaphex fa2a748631 (DSound) Create dsound_set_wavefmt 2020-01-05 17:16:55 +01:00
twinaphex bdc866d6d5 (DSound/WASAPI) Cleanups 2020-01-05 17:08:50 +01:00
Twinaphex 554bbb5fd0 Update CHANGES.md 2020-01-04 20:12:49 +01:00
twinaphex 6e0971fc61 (EGL) Call EGL common calls 2020-01-04 19:58:57 +01:00
twinaphex d5cdfbb7ba Move all EGL functions to egl_common.c file 2020-01-04 19:22:02 +01:00
twinaphex 063986a4b3 (ANGLE) Angle gets separate EXE name 2020-01-04 19:05:23 +01:00
Twinaphex fdb859276b Update CHANGES.md 2020-01-04 18:55:07 +01:00
Twinaphex 9a14c28056 Merge pull request #9944 from dev-0x7C6/master
Fixed compiler invoke in configure stage.
2020-01-04 18:53:59 +01:00
Twinaphex 210833006f Merge pull request #9943 from Derynect/dingux
Initial port to dingux platform
2020-01-04 18:53:05 +01:00
Bartłomiej Burdukiewicz 4ca5af4ac9 Fixed compiler invoke in configure stage. 2020-01-04 18:27:58 +01:00
jovonna decd374c15 Initial port to dingux platform 2020-01-04 12:20:03 -05:00
twinaphex 1216c3ef6d (OSX/Metal) Buildfix 2020-01-04 17:44:33 +01:00
Twinaphex 0f72a07b9e Update CHANGES.md 2020-01-04 16:43:08 +01:00
Twinaphex c4fafaebec Merge pull request #9941 from graciborski/pl_translation_input_names
update Polish translations for input configuration
2020-01-04 16:42:20 +01:00
Twinaphex c0160095fa Merge pull request #9942 from libretro/fix_video_filters
Only use threads when the number > 1
2020-01-04 16:42:12 +01:00
Francisco José García García f559e931cf Only use threads when the number > 1 2020-01-04 16:36:54 +01:00
twinaphex f92a507a9b Change function signature of font_driver_render_msg 2020-01-04 16:24:14 +01:00
Grzegorz Raciborski be7e074856 update Polish translations for input configuration 2020-01-04 16:00:56 +01:00
twinaphex 3e1f56d57f Change function signature of win32_has_focus 2020-01-04 15:49:23 +01:00
Twinaphex aae2e6fd7d Merge pull request #9940 from jdgleaver/xmb-ozone-quick-menu-fix
(XMB/Ozone) Fix 'quick menu' detection
2020-01-04 15:40:27 +01:00
twinaphex 91baea201a Change function signature of win32_show_cursor 2020-01-04 15:40:02 +01:00
jdgleaver cf58c09d6e (XMB/Ozone) Fix 'quick menu' detection 2020-01-04 14:28:30 +00:00
twinaphex 53dbd69751 (EGL) Create egl_bind_api 2020-01-04 15:09:42 +01:00
twinaphex 3d950b2324 Optimize audio_mix_volume_SSE 2020-01-04 14:40:37 +01:00
twinaphex 96395f7d39 (Xenon) Update sound driver 2020-01-04 13:47:50 +01:00
twinaphex e4eb5a9bb9 (menu_networking) remove configuration.h dependency 2020-01-04 13:14:53 +01:00
twinaphex 27c45b1b7a (Menu_thumbnail) Get rid of settings_t dependency 2020-01-04 12:38:33 +01:00
twinaphex 278dc75285 (tasks) Fix samples 2020-01-04 12:07:58 +01:00
twinaphex 9c6c10da22 (Playlist) Get rid of settings_t dependency 2020-01-04 12:04:00 +01:00
twinaphex 1d6f547e7f (Audio) Cleanups 2020-01-04 10:39:33 +01:00
twinaphex ee7051891b (Audio) Update audio drivers to make them more uniform 2020-01-04 10:32:03 +01:00
twinaphex 22b789cca6 (OpenSL) Move nonblock conditional outside of loop 2020-01-04 09:52:10 +01:00
twinaphex 40a6c978ce (DSound) Optimize codepaths
(CoreAudio) Only iOS uses g_interrupted flag, put it behind ifdefs
2020-01-04 09:46:27 +01:00
twinaphex 688629d108 (WASAPI) Get rid of one unnecessary function 2020-01-04 09:09:04 +01:00
twinaphex 65e8b28d02 (WASAPI) Optimize -
- turn blocking variable into nonblocking in line with other audio drivers
- blocking codepath would do numerous conditional checks on
w->buffer, w->exclusive, w->blocking during a loop iteration - get rid
of this
2020-01-04 08:58:27 +01:00
Twinaphex 1561ed8022 Merge pull request #9938 from ToadKing/fix-indexer-permissions
fix file permissions on `indexer` script for emscripten
2020-01-04 00:25:35 +01:00
Michael Lelli 1630affbdd fix file permissions on indexer script for emscripten 2020-01-03 16:41:52 -06:00
twinaphex d88e37a2f1 (Audio resampler/Sinc) Don't do kaiser window check inside hot loop 2020-01-03 22:12:11 +01:00
twinaphex fa00cdba20 (Audio) Update 2020-01-03 21:54:09 +01:00
twinaphex 6c97a7514c (Vulkan) turn superfluous functions in vulkan_common.c into macros
to avoid unnecessary function overhead
2020-01-03 20:20:59 +01:00
Twinaphex 83057301c2 Merge pull request #9934 from ToadKing/fix-emscripten-images
fix images not loading in menu in emscripten
2020-01-03 18:42:59 +01:00
twinaphex 6e6fbc5ad3 (Dsound) Split up dsound_write
(XAudio) Optimize xa_write_nonblock
2020-01-03 14:19:31 +01:00
twinaphex d567b0ca25 (WASAPI) Split up write function - set up the write callback dynamically
based on whether exclusive and blocking is set to true or not
2020-01-03 13:56:45 +01:00
twinaphex 3667690027 Revert "Integer scale fix for windowed mode"
This reverts commit 4ec9fe5a57.
2020-01-03 13:56:44 +01:00
Twinaphex 2936b1940a Update CHANGES.md 2020-01-03 13:36:38 +01:00
Twinaphex 07700d77bd Merge pull request #9933 from driver1998/angle
Win32/UWP: D3D driver get_metrics support, D3D11 -> GL failback
2020-01-03 13:16:50 +01:00
Toad King 776568a429 fix images not loading in menu in emscripten
add changes to work with latest emscripten SDK
2020-01-02 21:29:25 -06:00
GH Cao 8f39fb2adf UWP: Use D3D11 driver by default 2020-01-03 09:46:27 +08:00
GH Cao 91ee8c8ee6 D3D11: Block 9_3 devices, implement gl failback 2020-01-03 09:44:24 +08:00
GH Cao a4e810795c D3D: Add get_metrics 2020-01-03 09:40:41 +08:00
GH Cao 0418e49757 Win32 MSVC2017: Disable ANGLE 2020-01-03 09:29:12 +08:00
Twinaphex 0096b9e6f0 Merge pull request #9929 from theheroGAC/patch-45
Update msg_hash_it.h
2020-01-03 01:55:12 +01:00
Twinaphex 47e1f0f2b1 Merge pull request #9932 from driver1998/angle
UWP: Save config on exit
2020-01-03 01:25:39 +01:00
GH Cao f2a64aa8e7 UWP: Save config on exit 2020-01-03 08:21:58 +08:00
Twinaphex c25e3ab3f9 Merge pull request #9931 from driver1998/angle
UWP: ANGLE prebuilt binaries, copy ANGLE in deployment / packaging
2020-01-02 23:24:07 +01:00
GH Cao b6d01ce448 UWP: Enable ANGLE for all platforms, copy ANGLE on deployment 2020-01-03 06:15:02 +08:00
GH Cao 090919490a UWP: Remove uwp_egl_create_surface
Because of 0e2265, this is not doing anything special anymore.
Remove it entirely and use common EGL surface creation instead.
2020-01-03 06:07:05 +08:00
GH Cao 2ba1f3547c UWP: Add ANGLE prebuilt binaries 2020-01-03 06:04:24 +08:00
theheroGAC 556fa9a499 Update msg_hash_it.h 2020-01-02 22:48:40 +01:00
theheroGAC ec3ab80da8 Update msg_hash_it.h 2020-01-02 22:33:40 +01:00
twinaphex 41e32ea949 (XAudio) If xa->nonblock is true - point write callback to
specialized version of the function
2020-01-02 20:33:21 +01:00
twinaphex 42c3072ff9 (Menu) Cleanups - rewrite code dependent on settings pointer
grabbing
2020-01-02 19:39:37 +01:00
Twinaphex 0b0ac03bed Merge pull request #9928 from Tatsuya79/patch-4
menu_setting increase run ahead frames range
2020-01-02 19:24:03 +01:00
Tatsuya79 ef8427cc23 menu_setting increase run ahead frames range 2020-01-02 19:12:58 +01:00
twinaphex c73daa6a1c (Discord) Remove settings_t dependency 2020-01-02 18:29:30 +01:00
twinaphex 6b6233944b Cleanups 2020-01-02 18:25:37 +01:00
twinaphex a6245185b9 (menu_driver.c) Cleanups 2020-01-02 18:21:43 +01:00
twinaphex bfd283e2a6 (INTL) CHT - Remove duplicate English strings 2020-01-02 18:11:19 +01:00
twinaphex 54675938ce (INTL) VN - Remove duplicate English strings 2020-01-02 18:05:28 +01:00
twinaphex 758a6c76ae Reduce dependence on settings_t struct 2020-01-02 17:52:37 +01:00
twinaphex 05d71ebb67 Start reducing dependency on settings struct 2020-01-02 17:41:52 +01:00
twinaphex 19406af87f Cleanups 2020-01-02 17:17:18 +01:00
twinaphex fa328c1590 (Netplay) Cleanups 2020-01-02 17:07:03 +01:00
twinaphex c4e04a6d09 Cleanups 2020-01-02 16:35:55 +01:00
Twinaphex b1579dd8d9 Update CHANGES.md 2020-01-02 15:41:15 +01:00
twinaphex 6ca24c412d (INTL) EL - Get rid of duplicate English strings 2020-01-02 15:36:31 +01:00
twinaphex fc4a5ad691 Revert "Configurable lobby URL"
This reverts commit cc0b7c42d1.
2020-01-02 15:30:50 +01:00
Twinaphex 4b183f84b2 Merge pull request #9926 from jdgleaver/3ds-race-assets
(3DS) Add build assets for RACE core
2020-01-02 14:23:36 +01:00
jdgleaver bf01a2d6e5 (3DS) Add build assets for RACE core 2020-01-02 12:57:56 +00:00
Twinaphex 4c38228359 Update CHANGES.md 2020-01-02 11:15:15 +01:00
Twinaphex ef9501a40d Merge pull request #9925 from jdgleaver/core-info-init
Ensure core info is always initialised when calling 'drivers_init()'
2020-01-02 11:09:54 +01:00
jdgleaver 195c9f6ab6 Ensure core info is always initialised when calling 'drivers_init()' 2020-01-02 09:49:05 +00:00
twinaphex cc0b7c42d1 Configurable lobby URL 2020-01-02 10:15:21 +01:00
twinaphex 4ec9fe5a57 Integer scale fix for windowed mode 2020-01-02 10:05:18 +01:00
twinaphex 643b3a73a4 (INTL) AR - Remove duplicate English strings 2020-01-02 09:48:55 +01:00
twinaphex dcd5dd6492 (INTL) JP - remove duplicate English strings 2020-01-02 09:41:07 +01:00
twinaphex 39db52b4f4 (Intl) Cleanup duplicate English strings 2020-01-02 09:36:38 +01:00
twinaphex 3955009b08 (Intl) Stat removing duplicate English text 2020-01-02 09:20:53 +01:00
twinaphex f1dc0b6d8e Update Disk Management labels 2020-01-02 08:57:10 +01:00
twinaphex a30e53d911 (Menu) Add password settings to Netplay Hosting submenu 2020-01-02 07:00:27 +01:00
twinaphex 568c55aca2 (Menu) Rearrange Recording settings 2020-01-02 06:58:23 +01:00
Twinaphex 62af393cd8 Update build.gradle 2020-01-02 03:16:32 +01:00
Twinaphex 7ed61ca766 Update build.gradle 2020-01-02 03:16:19 +01:00
twinaphex f9580c245d (Android) Add .ra64 2020-01-01 15:16:23 +01:00
twinaphex 88b28b6458 Add ANGLE UWP x64 DLLs 2020-01-01 11:59:16 +01:00
twinaphex 7c63889b26 Move static inline functions over to input_bind_dialog.c - were
not used elsewhere
2020-01-01 10:53:36 +01:00
twinaphex 55de2803a4 Turn some input functions static 2020-01-01 10:22:29 +01:00
twinaphex 4de34a53e7 Turn input_driver_grab_mouse/input_driver_ungrab_mouse static 2020-01-01 09:22:23 +01:00
twinaphex 0e22651c48 (UWP) Not setting EGLRenderResolutionScaleProperty fixes DPI scaling issues 2020-01-01 00:21:06 +01:00
twinaphex fa6ce5bc68 Add ANGLE UWP x64 libEGL/libGLESv2 static libs 2019-12-31 19:25:58 +01:00
Twinaphex db7431f3fa Merge pull request #9921 from libretro/revert-9898-kivutar/fixprs
Revert "Don't try to import secret certificates during PRs"
2019-12-31 18:29:10 +01:00
Twinaphex 7747e3a6b4 Revert "Don't try to import secret certificates during PRs" 2019-12-31 18:28:59 +01:00
Twinaphex 0d2d8f4d41 Merge pull request #9919 from Stevoisiak/patch-1
Remove unnecessary escape character
2019-12-31 18:16:41 +01:00
Stevoisiak f4f339c4d5 Remove unnecessary escape character
http://eslint.org/docs/rules/no-useless-escape
2019-12-31 12:13:40 -05:00
Twinaphex 48fddcb7bd Merge pull request #9918 from Stevoisiak/posix-undefined-brackets
Replace [[ ]] with [ ] for POSIX compatibility
2019-12-31 17:39:33 +01:00
Stevoisiak 0a6f6cb281 Replace [[ ]] with [ ] for POSIX compatibility
Double brackets are not compatible with all POSIX compliant shells. Replaced with single brackets.

http://mywiki.wooledge.org/BashFAQ/031
2019-12-31 11:31:55 -05:00
Twinaphex eb51b0c383 Update CHANGES.md 2019-12-31 13:47:15 +01:00
Twinaphex 5f1fcf51a6 Merge pull request #9916 from jdgleaver/filebrowser-fix
(Filebrowser) Fix file selection issues when starting from (or navigating to) the top level directory
2019-12-31 13:46:27 +01:00
jdgleaver 569014c5d2 (Filebrowser) Fix file selection issues when starting from (or navigating to) the top level directory 2019-12-31 12:34:03 +00:00
twinaphex 1d6ebacfaa (MSVC 2017 UWP) Start adding separate configurations for ANGLE 2019-12-31 13:21:09 +01:00
Twinaphex 80f494b961 Update CHANGES.md 2019-12-30 17:09:11 +01:00
Twinaphex f4d1732137 Merge pull request #9915 from Jamiras/cheevos_unsupported_core
(cheevos) don't count unsupported achievements as unlocked
2019-12-30 17:08:50 +01:00
Twinaphex 2fc3a6fc1a Update CHANGES.md 2019-12-30 16:56:11 +01:00
Twinaphex dc8f8cd401 Update CHANGES.md 2019-12-30 16:34:26 +01:00
twinaphex 88c331ea99 (Menu) Add missing textures 2019-12-30 15:05:23 +01:00
Twinaphex 9d16264ba1 Merge pull request #9914 from jdgleaver/3ds-buildfix
(3DS) Theodore buildfix
2019-12-30 14:03:04 +01:00
twinaphex d809cc6a31 Buildfix for non-networking targets 2019-12-30 14:02:41 +01:00
jdgleaver 5c0cca9783 (3DS) Theodore buildfix 2019-12-30 12:57:57 +00:00
twinaphex a0e7fe19af (MSVC 2010) Buildfix 2019-12-30 09:47:58 +01:00
Twinaphex 960ff23843 Remove unused variable 2019-12-30 08:27:39 +01:00
twinaphex 0996e13352 Add subsystem settings list to menu_displaylist_build_list 2019-12-30 08:05:14 +01:00
twinaphex 81972149fc Submenu system is now properly hidden 2019-12-30 08:02:13 +01:00
twinaphex 48af253a06 (Menu) This macro is no longer used 2019-12-30 07:48:55 +01:00
twinaphex 1e45692f0b Create HAS_SET_SUBSYSTEMS for rarch_ctl 2019-12-30 07:46:33 +01:00
twinaphex 096a420e7b Update CHANGES.md 2019-12-30 07:04:42 +01:00
twinaphex ecb3301b19 (hosting submenu) Set include_everything to false 2019-12-30 07:01:24 +01:00
twinaphex ad397671a7 Add warning about globals 2019-12-30 06:50:25 +01:00
twinaphex 8b5db9fdaf Add return value to menu_displaylist_netplay_refresh_rooms 2019-12-30 06:48:10 +01:00
twinaphex 4137273002 Move netplay_refresh_rooms_menu to menu_displaylist.c and rename
it menu_displaylist_netplay_refresh_rooms
2019-12-30 06:44:14 +01:00
twinaphex f6db9ce04d Move menu_subsystem_populate to menu_displaylist.c 2019-12-30 05:57:32 +01:00
twinaphex 106c912eb5 (Netplay hosting)
- Remove clear
- Use index offset variable
2019-12-30 05:49:45 +01:00
twinaphex 3fe8806018 (Subsystem Settings) Create separate subsystem settings list - will
be selectively hidden later based on whether subsystems are implemented
for the core
2019-12-30 05:43:48 +01:00
twinaphex f3742a101c Change function signature on subsystem function 2019-12-30 05:17:31 +01:00
Jamiras b09a22360c don't count unsupported achievements as unlocked 2019-12-29 20:50:55 -07:00
Twinaphex f01afe72c6 Update msg_hash_ru.h 2019-12-30 04:47:38 +01:00
twinaphex a2fd581dad Add HAVE_NETWORKING ifdef 2019-12-30 04:43:42 +01:00
twinaphex 2169a25b0a Create Netplay Hosting submenu 2019-12-30 03:01:52 +01:00
twinaphex fdd4915718 Add Network Settings to Netplay tab 2019-12-30 02:22:23 +01:00
Twinaphex 9e9fa1f7df Update CHANGES.md 2019-12-29 22:44:05 +01:00
Twinaphex 5e8ab7b287 Update CHANGES.md 2019-12-29 22:43:40 +01:00
Twinaphex 0e47f4efb8 Update CHANGES.md 2019-12-29 19:17:40 +01:00
Twinaphex 080b3ea184 Update CHANGES.md 2019-12-29 19:17:05 +01:00
Twinaphex 13d44720e0 Update CHANGES.md 2019-12-29 19:16:38 +01:00
Twinaphex 57f5d04126 Merge pull request #9911 from jdgleaver/vulkan-font-fix
(Vulkan) Fix font driver 'vulkan_get_message_width()' function
2019-12-29 17:32:39 +01:00
Twinaphex 463d68163e Merge pull request #9680 from IlDucci/master
Additional revision of the Spanish translation
2019-12-29 17:32:31 +01:00
jdgleaver 7ad4becedb (Vulkan) Fix font driver 'vulkan_get_message_width()' function 2019-12-29 14:44:07 +00:00
Francisco José García García 7fa6247770 (VITA) Re-add online updater 2019-12-29 14:24:17 +01:00
Twinaphex 17c827adfb Merge pull request #9898 from libretro/kivutar/fixprs
Don't try to import secret certificates during PRs
2019-12-29 04:53:56 +01:00
Twinaphex a30a53f12a Update CHANGES.md 2019-12-28 09:53:01 +01:00
Twinaphex 7e83f4a531 Merge pull request #9905 from Jamiras/cheevos_invalid_reset
don't reset triggers/lboards that failed to load
2019-12-28 09:50:58 +01:00
Jamiras 3c3e6978b8 don't reset triggers/lboards that failed to load 2019-12-27 19:03:40 -07:00
Twinaphex 19f53d96a2 Update CHANGES.md 2019-12-27 19:47:35 +01:00
Twinaphex 98618c052b Merge pull request #9900 from CheezeCake/fix-double-free
fix potential double free error
2019-12-27 19:47:08 +01:00
Emmanuel Nicolet 69e5e97bdf fix potential double free error 2019-12-27 12:04:01 +01:00
Twinaphex 99850df96e Update Makefile.vita 2019-12-27 09:39:31 +01:00
Jean-André Santoni dd658a05b4 Don't try to import secret certificates during PRs 2019-12-27 10:16:04 +07:00
Twinaphex 3ce38ffe91 Update CHANGES.md 2019-12-26 18:57:20 +01:00
Twinaphex 89b04d255e Merge pull request #9895 from Jamiras/cheevos_invalid_addaddr
(cheevos) don't disable achievement when AddAddress generates an out-of-range address
2019-12-26 18:56:48 +01:00
Jamiras 410e94aa89 don't disable achievement when AddAddress generates an out-of-range address 2019-12-26 10:15:36 -07:00
Twinaphex 7c8d831497 Merge pull request #9892 from hizzlekizzle/master
make build all/uninstall scripts work with TARGET renaming
2019-12-26 04:59:05 +01:00
hunterk c84d02830c make build all/uninstall scripts work with TARGET renaming 2019-12-25 21:54:34 -06:00
twinaphex b3e8d6e9ca Remove this check - hope it solves the PNG inversion color issues with
VideoCore GPUs
2019-12-26 04:05:51 +01:00
Twinaphex cf97f39cac Update .travis.yml 2019-12-25 21:26:17 +01:00
IlDucci 96fd6f8617 Translated the latest additions to US language into Spanish. 2019-12-25 12:19:10 +01:00
IlDucci cde4ecd08b Update msg_hash_es.h according to the latest changes on the US file. 2019-12-25 12:08:31 +01:00
IlDucci a05ebd4bbc Updating msg_hash_es.h with the latest changes on the US equivalent. 2019-12-25 12:08:31 +01:00
IlDucci 9e749ee63a Update msg_hash_es.h 2019-12-25 12:08:31 +01:00
IlDucci e785bff78d Update msg_hash_es.h
- Added a missing string.
 - Moved the Sunbeam title to the corresponding place.
2019-12-25 12:08:30 +01:00
IlDucci 3aedbe6989 Additional revision of the Spanish translation
- Decided that all instances of "Refresh rate" will be translated as "frecuencia de actualización", not "tasa de refresco". Used Windows' official translation as a reference.
 - Minor typo corrections and tweaks.
 - Unified certain phrasings in the Settings sublabels.
2019-12-25 12:08:30 +01:00
Twinaphex b6a45645d8 Update AndroidManifest.xml 2019-12-25 09:33:43 +01:00
Twinaphex 3d3c848ba7 Update AndroidManifest.xml 2019-12-25 09:33:27 +01:00
twinaphex c98dc7ef34 Update CHANGES.md 2019-12-25 09:15:46 +01:00
twinaphex 586f54a0f7 Fix C89_BUILD 2019-12-25 09:08:50 +01:00
twinaphex 75f3a79aa6 (MaterialUI) Add icons 2019-12-25 08:49:52 +01:00
Twinaphex 27c3c1f684 Update CHANGES.md 2019-12-25 08:37:01 +01:00
Twinaphex 5ee803682f Update CHANGES.md 2019-12-25 08:36:46 +01:00
Twinaphex e52daa8602 - use MIN macro instead of min for portability
- remove unused variable
2019-12-25 08:31:18 +01:00
twinaphex 65cddce865 (OSX/iOS) Forcibly disable Threaded Video until UIWindow/NSWindow
concurrency issues are fixed
2019-12-25 08:28:43 +01:00
twinaphex 973ae36fe5 (MaterialUI) Add missing icons 2019-12-25 08:24:08 +01:00
Twinaphex 7b1819e988 Update CHANGES.md 2019-12-25 07:43:45 +01:00
twinaphex 538f0c534f Backport Added alternate Turbo-Mode 'Single Button' -
For systems supporting only a single button, the turbo-button will toggle firing that button without the need to hold it.
When holding the button turbo will be suspended and resumed when the button is released. Holding the button may have a different function to just tapping it, e.g. charging the beam in R-Type on C64/Amiga.
The original implementation in RA is named 'Classic' because I have no
idea where it originates from.
2019-12-25 07:13:01 +01:00
twinaphex 921e470b05 Bump up to 1.8.2 2019-12-25 07:00:45 +01:00
Twinaphex ea4e5ab9ef Merge pull request #9889 from fpscan/turkish
Turkish language updates
2019-12-24 23:25:04 +01:00
Ömercan Kömür 96d0de4e7c Update msg_hash_tr.h
update for 1.8.2
2019-12-25 00:44:45 +03:00
Ömercan Kömür 04bd684258 Merge pull request #2 from libretro/master
updates
2019-12-25 00:27:33 +03:00
twinaphex 58852ec9bb (Menu) Selectively hide 'Disallow Non-Slave Mode Clients' if 'Allow SLave-Mode
Clients' is disabled
2019-12-24 17:38:07 +01:00
twinaphex e4fcce118c (Menu) Hide 'Show desktop menu on startup' if 'Desktop menu' setting
itself is disabled
2019-12-24 17:24:48 +01:00
twinaphex ef149605cd (Menu) Reimplement Quick Menu - > Shaders -> Watch shader files for
changes - can now be turned on/off through touch
2019-12-24 17:19:23 +01:00
Twinaphex c240449b10 Merge pull request #9888 from hasenbanck/ass-fix
Fix ASS rendering assertion on seeking.
2019-12-24 16:56:32 +01:00
twinaphex 8d63faa74d C89_BUILD fix 2019-12-24 16:53:13 +01:00
Nils Hasenbanck 226f2d52ff Fix ASS rendering assertion on seeking.
ASS needs some locking.
2019-12-24 12:16:52 +01:00
twinaphex 1165f8dfe9 (Menu) Remove duplicates 2019-12-24 08:29:06 +01:00
twinaphex 4e34611d1d (Menu) Add title for Remap Binds Port 2019-12-24 08:10:20 +01:00
twinaphex 0df043aff1 (Menu) Refactor Quick Menu - Controls - each port now has its own
submenu
2019-12-24 07:36:01 +01:00
twinaphex 9573b53390 Put ifdefs around core_updater_list_free_cached for targets
that don't define HAVE_NETWORKING
2019-12-24 05:36:54 +01:00
twinaphex ca0edad8c2 (Menu) don't hide logging settings anymore 2019-12-24 05:29:15 +01:00
twinaphex f47b07e35a (Menu) Quick Menu - Cheats - Delete All no longer requires five
right button presses - this should fix this functionality for mobile
touch users too
2019-12-24 05:13:24 +01:00
Twinaphex 45db2122c9 Merge pull request #9887 from WeedyWeedSmoker/French-update
French update - core updater newest additions!
2019-12-24 04:58:38 +01:00
twinaphex d33624c623 (Menu) Hide Refresh Rate options when Threaded Video is enabled -
these settings do nothing with Threaded Video
2019-12-24 04:29:12 +01:00
twinaphex abb1b28e96 Hide Logging Verbosity levels behind Logging Verbosity 2019-12-24 04:18:38 +01:00
twinaphex a19da4bf22 (Menu) No longer hide Logging behind Advanced 2019-12-24 04:09:34 +01:00
Weedy Weed Smoker 347cb15722 French update - core updater newest additions! 2019-12-24 09:53:57 +07:00
twinaphex 20f3b8d404 Buildfix for non-shader targets 2019-12-24 03:15:51 +01:00
twinaphex 31a7f2b4d9 Add missing ifdef 2019-12-24 02:17:48 +01:00
twinaphex e5a6517897 (MSVC UWP) Generate new pfx key 2019-12-23 23:04:56 +01:00
twinaphex 80f3f99845 Merge branch 'master' of https://github.com/libretro/RetroArch 2019-12-23 20:18:35 +01:00
Twinaphex 4322d0c3fe Merge pull request #9885 from jdgleaver/core-update
(Core Updater) Only download when new core is available + add option to update all installed cores
2019-12-23 20:02:43 +01:00
twinaphex 764f1d846e Merge branch 'master' of https://github.com/libretro/RetroArch 2019-12-23 19:58:42 +01:00
Twinaphex 1d0be580c5 (Menu) Remove unused variables 2019-12-23 19:43:09 +01:00
twinaphex 44f2986665 Merge branch 'master' of https://github.com/libretro/RetroArch 2019-12-23 19:19:26 +01:00
Twinaphex 9d6490e38a Merge pull request #9881 from hasenbanck/no-video-fifo
Remove video fifo in ffmpeg core.
2019-12-23 19:18:59 +01:00
twinaphex 7aa914fde7 Merge branch 'no-video-fifo' of git://github.com/hasenbanck/RetroArch 2019-12-23 19:04:54 +01:00
Twinaphex 0930cd29fb Merge pull request #9884 from WeedyWeedSmoker/French-update
French translation - Latest additions!
2019-12-23 18:56:12 +01:00
jdgleaver 695749f155 (Core Updater) Only download when new core is available + add option to update all installed cores 2019-12-23 17:34:44 +00:00
Weedy Weed Smoker 3ca8623b29 French translation - Latest additions! 2019-12-23 22:41:49 +07:00
Nils Hasenbanck c6309d963d Remove video fifo in ffmpeg core.
The video fifo can be removed, since we have a ring buffer in it's
place. This removes unneeded copy operations and as a positive side
improves overall decoding speed.

Makes 8k60p SW and 4k60p HW decoding possible on my system.

For now the ring buffer is 32 images deep. This limitation will
be removed, once audio and video decoder have their own
packet handling.
2019-12-23 16:07:34 +01:00
twinaphex 305aee2c33 (Menu) Get rid of 'Port Number' label for Port Binds screen 2019-12-23 08:21:44 +01:00
twinaphex cbcdfa572a (Mobile) Should no longer crash when clicking on a cheat entry 2019-12-23 07:49:29 +01:00
twinaphex 2512365012 (Menu) Displaylist - Get rid of global 2019-12-23 06:34:58 +01:00
twinaphex 9988bae6f4 (Shader) Implement shader parameter action OK callbacks 2019-12-23 05:39:10 +01:00
twinaphex 18f2b9c63e Reimplement shader preset parameter functions 2019-12-22 22:45:08 +01:00
twinaphex b5cc71720c (Menu) Move FORCE_SRGB_DISABLE to Video Output 2019-12-22 22:10:45 +01:00
twinaphex 6eed40f80c More warning fixes for non-shader target platforms 2019-12-22 08:18:00 +01:00
twinaphex e93d90bc45 Fix build on platforms that don't have shader support 2019-12-22 08:12:42 +01:00
twinaphex d057d2a202 (Menu) Implement action OK callback for Quick Menu -> Shaders -> Passes 2019-12-22 07:14:20 +01:00
twinaphex cb67ace703 (Menu) Hide Windowed Mode settings selectively 2019-12-22 06:26:42 +01:00
twinaphex 759724facb (Menu) Hide Fullscreen Mode settings if windowed mode is not supported
by context driver
2019-12-22 06:22:05 +01:00
twinaphex 3033491f3d Turn HAVE_EASTEREGG into HAVE_GONG 2019-12-22 03:08:02 +01:00
twinaphex 751ff8f72c (Menu) Selectively hide Network Command Port 2019-12-21 21:08:37 +01:00
twinaphex d6d76a53b9 (Menu) Selectively hide Relay Server Location 2019-12-21 19:56:33 +01:00
twinaphex 3224eefdf1 (Menu) Selectively hide Video Layout 2019-12-21 18:39:34 +01:00
twinaphex 776ae626a6 (Menu) User Interface - selectively hide Kiosk Mode Password 2019-12-21 18:23:25 +01:00
twinaphex 8ad44acc5d (Menu) Action start callback - do a refresh at the end 2019-12-21 18:13:01 +01:00
twinaphex ecbbf1e3bb (Menu) Selectively hide Settings -> Accessibility 2019-12-21 17:59:56 +01:00
twinaphex 2d31377ba8 (Menu) User Interface -> Appearance - Selectively hide XMB Horizontal
Animation setting
2019-12-21 17:49:39 +01:00
twinaphex e55692d74f (Desktop Menu) Prevent hidden settings for desktop menu -
add third parameter that when set to true, will include everything
in the list - this way we can show greyed out settings
2019-12-21 17:33:50 +01:00
twinaphex 6164e33b07 (Menu) Settings -> Playlists - more selective hiding 2019-12-21 17:22:43 +01:00
twinaphex 4850cc0f97 (Menu) Aspect Ratio - implement dropdown box again 2019-12-21 16:54:42 +01:00
twinaphex 5674c46f38 (Menu) Don't hide Config Aspect Ratio for advanced 2019-12-21 16:44:47 +01:00
twinaphex a33280b08e (Menu) Implement touch/OK callbacks 2019-12-21 07:00:27 +01:00
twinaphex 48799b73d5 Standardize function signature for action_select 2019-12-21 06:01:38 +01:00
twinaphex 7c028596fb (Menu) Selectively hide Overlay Settings and Rewind 2019-12-21 05:35:46 +01:00
twinaphex d93200d2eb (Menu) Selectively hide 'Rewind' settings 2019-12-21 05:27:42 +01:00
twinaphex aafee65238 (Menu) Selectively hide 'FPS Update Interval' 2019-12-21 05:22:18 +01:00
twinaphex f5a7504c38 (Menu) Selectively hide Onscreen Notifications BG Color Settings 2019-12-21 05:10:22 +01:00
twinaphex ef4d24600e (Menu) Settings -> Logging - Hide 'Log To File Timestamp' if 'Log To File' is disabled 2019-12-21 04:49:30 +01:00
twinaphex 28ec64e200 (Menu) Video -> Scaling - Hide Custom Viewport X/Y when Integer
Scale is enabled as description indicates
2019-12-21 04:32:56 +01:00
twinaphex 1fcded67ef (Menu) Achievement submenu - selectively hide 2019-12-21 03:10:15 +01:00
twinaphex 3be60539ce (Menu) Aspect ratio - selectively hide/show values based on whether
you have Custom or Config selected
2019-12-21 01:27:28 +01:00
twinaphex 779c0a01d3 Selectively hide Hard Sync 2019-12-21 00:39:30 +01:00
twinaphex e1a5b80ae1 (Menu) Implement selective hiding for VSync and Hard Sync 2019-12-21 00:24:29 +01:00
twinaphex 021102c62d (Menu) Runahead global setting now hides the related options 2019-12-20 23:10:35 +01:00
twinaphex de1e66f7a9 (Menu) Add Input -> Haptic Feedback submenu 2019-12-20 20:49:30 +01:00
twinaphex 13793885f3 (Menu) Add Input -> Menu Controls settings submenu 2019-12-20 19:24:35 +01:00
twinaphex cdeef9dc95 (Menu) Implement action OK for Bind Hold, Turbo Period and Duty Cycle 2019-12-20 15:29:15 +01:00
twinaphex 55400e9b42 (Menu) Max Swapchain Images - implement action OK callback 2019-12-20 15:18:44 +01:00
twinaphex 110bc5abbe (Menu) Settings - Implement action OK callback for custom viewport width/height 2019-12-20 15:14:13 +01:00
twinaphex 21ffbc0cca (Menu) Netplay submenu - don't show 'No Settings found'
(Menu/Misc) Some more icons
2019-12-20 14:37:44 +01:00
twinaphex 559c6df0c3 (Desktop Menu) Cleanups 2019-12-20 14:19:11 +01:00
twinaphex b7b0348c3c (Desktop Menu) Input -> Hotkey Binds refactor 2019-12-20 14:17:16 +01:00
twinaphex 779b8b32cf Move 'Press Quit Twice' and 'Menu Toggle Gamepad Combo' to Input ->
Hotkey Binds
2019-12-20 13:56:31 +01:00
twinaphex a73555f672 (Menu) Add sublabel for Video Output submenu 2019-12-20 13:50:20 +01:00
twinaphex 03d0e0d799 (MaterialUI) Add icons for submenus 2019-12-20 13:48:38 +01:00
twinaphex 64597e47c6 (Menu Usability) If 'Favorites Tab' is disabled, don't show
'Add To Favorites' option in Quick Menu/Playlist menu
2019-12-20 07:21:15 +01:00
twinaphex 6713c6ebed (Menu) If On-Demand Thumbnail Downloader is enabled, hide
'Download Thumbnails' from playlist menu screen
2019-12-20 07:15:04 +01:00
twinaphex 051342cc8b Rewrite win32_get_video_output 2019-12-20 07:15:03 +01:00
Twinaphex 94cf920751 Merge pull request #9879 from Jamiras/cdfs_track_start
proper calculation of offset to track 2 when sector sizes vary
2019-12-20 04:02:53 +01:00
twinaphex dcac9de58b Add Audio Driver setting to Audio -> Output 2019-12-20 02:30:05 +01:00
twinaphex 23ce202d38 (Menu) Add Audio -> Resampler settings 2019-12-20 02:16:31 +01:00
Twinaphex 362dd7241a Merge pull request #9878 from Jamiras/cheevos_segacd_bin_hash
(cheevos) fix hashing of raw bin file for Sega CD
2019-12-20 01:19:13 +01:00
twinaphex 94907678eb (Menu) Add Audio -> output and Audio -> Synchronization 2019-12-20 01:18:28 +01:00
Jamiras 9cb94e00b0 fix hashing of raw bin file for sega cd 2019-12-19 13:19:43 -07:00
Jamiras 3b4e55d0e5 proper calculation of offset to track 2 when sector sizes vary 2019-12-19 13:17:32 -07:00
Twinaphex 8779151fef Merge pull request #9877 from DEX357/patch-49
Update msg_hash_pl.h
2019-12-19 21:04:38 +01:00
twinaphex 923c19356b (ffmpeg) - Fix CXX_BUILD errors - see
https://github.com/ZoneMinder/zoneminder/blob/master/src/zm_ffmpeg.h
(comment on av_err2str)
2019-12-19 20:43:59 +01:00
DEX357 3d95f3c7b1 Update msg_hash_pl.h
Please fix the displayed translations
2019-12-19 20:37:30 +01:00
twinaphex 6f6bd95a84 move Crop Overscan to Video Scaling; add Sync to Exact Content Framerate
option to Video Synchronization
2019-12-19 20:00:19 +01:00
twinaphex aa537310ad (Menu) Create Video -> Synchronization 2019-12-19 19:39:02 +01:00
twinaphex 39ebd6e8d1 (Settings) Add Video -> Output 2019-12-19 19:15:57 +01:00
twinaphex faf8c83f54 (Menu) Set video submenu titles 2019-12-19 19:01:32 +01:00
twinaphex e8babede53 (Menu) Create Settings -> Video -> Fullscreen and Windowed submenus 2019-12-19 18:53:51 +01:00
twinaphex 36af159991 (Menu) Settings - Video - Add Scaling subsection 2019-12-19 18:22:22 +01:00
twinaphex 7150d6ef59 Bind start callback for playlist entries in Playlist Screen 2019-12-19 16:37:39 +01:00
twinaphex 2a500baaca Change start callback signatuer to OK callback signature 2019-12-19 16:30:53 +01:00
twinaphex cb85b3e8dd Put this behind ifdef 2019-12-19 13:24:39 +01:00
Twinaphex ea9d5e3a5e Merge pull request #9875 from negativeExponent/patch-1
Fix heap-use-after-free found when using asan
2019-12-18 23:31:56 +01:00
negativeExponent d96409ff37 Fix heap-use-after-free found when using asan
Fix https://github.com/libretro/RetroArch/issues/9871
2019-12-19 04:44:34 +08:00
Twinaphex 95e11234a7 Merge pull request #9874 from fpscan/3ds-missing-images
3ds missing images
2019-12-18 19:07:41 +01:00
Ömercan Kömür 97329367e4 Merge pull request #1 from fpscan/master
Add files via upload
2019-12-18 20:59:51 +03:00
Ömercan Kömür 4217369709 Add files via upload
@SpardaXV works.
2019-12-18 20:58:03 +03:00
Ömercan Kömür 09832d09fb Update Makefile.cores 2019-12-18 20:56:59 +03:00
twinaphex 168395af74 (libretro-common) Update 2019-12-18 18:25:54 +01:00
twinaphex 60b182b821 Promote tpool as libretro-common component 2019-12-18 18:21:03 +01:00
twinaphex 587a56026e Disable HAVE_UPDATE_CORES for Steam too 2019-12-18 18:13:05 +01:00
twinaphex 3e8e6d35d6 (tpool.c) Code style nits 2019-12-18 18:11:18 +01:00
twinaphex 9a7a8efb39 Hide this setting behind HAVE_UPDATE_CORES 2019-12-18 17:45:14 +01:00
Twinaphex 4db4d5e8bc Merge pull request #9869 from hasenbanck/frame-conversion
FFMPEG core frame based color conversion
2019-12-18 15:55:24 +01:00
Nils Hasenbanck d046594591 Fix ffmpeg core memory leak when using pthreads. 2019-12-18 15:05:01 +01:00
Nils Hasenbanck 417d1b7de7 Color space conversion using frame based MT.
Using a ordered ring buffer and a thread pool, the color space
conversion is not multi-threaded based on frames. I tried
to implement slice based threading, but libswscale did produced
highly distorted pictures without obvious reason.

This approach introduces some more "lag" when decoding and skipping,
but shouldn't be affect the user negatively, since movie
watching is not lag sensitive, as long as the A/V is synchronized.

Change default to software decoding.

SW decoding is the most robust and fasted method of decoding right now.
Users should enable hw based decoding if their system requires it
and it's actually beneficial for them.

Fix deadlocks when seeking and decrease RAM usage.

Decrease memory allocation by reusing AVFrames.
2019-12-18 11:46:49 +01:00
Twinaphex a88e6f4e1f Merge pull request #9867 from jdgleaver/ozone-fullscreen-thumbs
(Ozone) Add fullscreen thumbnail viewer
2019-12-17 22:24:17 +01:00
Hans-Kristian Arntzen 96723c6f70 Vulkan/Android: Workaround weird WSI return codes in landscape mode.
Android WSI wants you to use preTransform, and if it is not used
correctly, Android 10 will return VK_SUBOPTIMAL_KHR, and we would create
a new swapchain every frame.

This workaround just ignores this error, since it's not really an error.
A more "proper" fix is to use prerotate and modify the MVP matrices,
which might help certain devices with crummy display processors.
2019-12-17 19:08:20 +01:00
Twinaphex 5062374c72 Merge pull request #9868 from jdgleaver/database-fix
Fix database entry display
2019-12-17 15:25:26 +01:00
jdgleaver 76bb0031cb Fix database entry display 2019-12-17 14:07:35 +00:00
jdgleaver 8ba17dd985 (Ozone) Add fullscreen thumbnail viewer 2019-12-17 11:41:01 +00:00
Hans-Kristian Arntzen 4437cd1eac Attempt to workaround odd crashes in glslang.
I accidentally managed to reproduce an issue which has been plaguing
users for a while, where glslang throws an assert after closing a game
(and starting a new one).

pthread_setspecific was somehow failing with an EINVAL call, despite the
key never having been freed. I suspect some kind of corruption happening
when dynamic libraries are unloaded, but I doubt this is a bug in either
RetroArch or glslang per-se.

My workaround here is to tear down all TLS use in glslang after we're
done compiling. Somehow this works around the problem for me, and I
don't really see another viable fix. Valgrind does not say anything about the
issue, so doubt it's memory corruption either.

I had to fix a minor TLS leak in glslang as DetachProcess does not free
the PoolIndex TLS.
2019-12-16 22:27:13 +01:00
Twinaphex 3cfed7ba01 Merge pull request #9677 from orbea/travis
travis: Log configure arguments + use before_script.
2019-12-16 14:40:17 +01:00
Twinaphex e9a264217a Merge pull request #9860 from Themaister/master
Android/Vulkan: Recreate swapchain on orientation change.
2019-12-15 16:51:55 +01:00
Themaister 15ffffa835 Android/Vulkan: Recreate swapchain on orientation change.
ANativeWindow getWidth/Height does not detect any changes when using
Vulkan, so use the old onContentRectChanged callback to get notified
when size changed. Use those values instead when figuring out how large
swapchain to create.

Tested trivially on Galaxy S9+ Exynos model.
2019-12-15 16:46:41 +01:00
twinaphex 79ce997156 Fix potential bug with analog deadzones - should be fabs 2019-12-15 16:21:27 +01:00
Twinaphex 15838c2850 Merge pull request #9858 from ToadKing/emscripten-upgrades
fix bug in emscripten input code
2019-12-15 15:40:00 +01:00
Francisco José García García 0545c42db9 (Vita) Fix duplicate symbols with some cores 2019-12-15 11:05:22 +01:00
Toad King f3001c9bba fix bug in emscripten input code 2019-12-14 20:57:10 -06:00
Twinaphex 42aa83b2a5 Merge pull request #9857 from ToadKing/emscripten-upgrades
changes to support upgraded emscripten SDK
2019-12-15 03:32:13 +01:00
Toad King 15e8be4074 changes to support upgraded emscripten SDK 2019-12-14 20:24:41 -06:00
ThePhxRises 3c27300a4e [VITA] Enable touch regardless of MiniVitaTV 2019-12-14 20:50:17 +01:00
ThePhxRises 65f406a39e [VITA] MiniVitaTV Support
Set kernel model manually with sceCtrlIsMultiControllerSupported()
2019-12-14 20:50:17 +01:00
Twinaphex 0d06dfa948 Merge pull request #9854 from frangarcj/upstream
(VITA) Fixes for non working cores and VITA2D (GXM) Improvements
2019-12-14 16:07:03 +01:00
Francisco José García García b4be7b0c74 (Vita) Several improvements to vita2d driver 2019-12-14 14:11:47 +01:00
Francisco José García García 9ad874eef8 (Vita) Add new function to draw textured arrays of vertices 2019-12-14 14:11:47 +01:00
Francisco José García García d52f3ba3e9 (Vita) Fix clipping and reduce number of calls 2019-12-14 14:11:46 +01:00
Francisco José García García 3d44faf6c3 (Vita) New set viewport function 2019-12-14 14:11:46 +01:00
Francisco José García García 8ad3cb14f8 (Vita) Changes for new tint shaders 2019-12-14 14:11:46 +01:00
Francisco José García García 0be7e96437 (Vita) Disable lto 2019-12-14 14:11:46 +01:00
Francisco José García García d1aa7dbedc Disable not compilable sqrtfv_neon 2019-12-14 14:11:46 +01:00
Francisco José García García eef7611cf1 Fix for duplicated error symbol 2019-12-14 14:11:46 +01:00
Francisco José García García 758b3ad2cc (VITA) Make VITA2D the default driver 2019-12-14 14:11:46 +01:00
hizzlekizzle b468aa8c01 Merge pull request #9852 from realnc/swap-interval-drc
Support DRC even when using a vsync swap interval higher than 1
2019-12-13 22:16:25 -06:00
Nikos Chantziaras 31d86e6e78 Update CHANGES.md 2019-12-13 23:29:43 +02:00
Nikos Chantziaras 1617cd7e2a Support DRC even when using a vsync swap interval higher than 1 2019-12-13 23:27:23 +02:00
Twinaphex ac318f2c8c Merge pull request #9851 from rsn8887/master
Fix radial analog deadzone scaling
2019-12-13 20:32:41 +01:00
rsn8887 42d02565af Fix radial analog deadzone scaling 2019-12-13 13:29:28 -06:00
Twinaphex 18d3eba614 Merge pull request #9842 from rsn8887/master
Implement proper analog button deadzone
2019-12-13 19:15:52 +01:00
Twinaphex 3171c71639 Merge pull request #9850 from jdgleaver/dropdown-list-fix
Fix 'currently selected item' indicator in dropdown lists
2019-12-13 12:11:10 +01:00
jdgleaver 32444f8188 Fix 'currently selected item' indicator in dropdown lists 2019-12-13 10:49:52 +00:00
Twinaphex 73729e7a33 Merge pull request #9848 from BarryJRowe/master
Fixed a segfault and an issue with AI Service overlay's image mode.
2019-12-13 07:04:25 +01:00
Barry Rowe c6f55eeb94 Fixed a segfault and an issue with AI Service overlay's image mode. 2019-12-12 16:31:18 -08:00
Twinaphex 5e156b9d73 Merge pull request #9847 from jdgleaver/xmb-fullscreen-thumbs
(XMB) Add fullscreen thumbnail viewer
2019-12-12 20:08:20 +01:00
jdgleaver 004d100ed8 (XMB) Add fullscreen thumbnail viewer 2019-12-12 17:01:37 +00:00
Twinaphex 1f866dbad4 Merge pull request #9844 from Jamiras/cheevos_pce_cd_memory
support for extended PC-Engine memory map
2019-12-11 21:08:46 +01:00
Twinaphex 127e07c210 Merge pull request #9845 from jdgleaver/ozone-thumb-tweaks
(Ozone) Minor thumbnail optimisations
2019-12-11 21:08:34 +01:00
rsn8887 745fb4b40c Implement proper analog button deadzone 2019-12-11 10:06:08 -06:00
Jamiras a96ea2492d support for extended PC-Engine memory map 2019-12-11 08:53:06 -07:00
jdgleaver 3b8e3c613f (Ozone) Minor thumbnail optimisations 2019-12-11 13:44:59 +00:00
Twinaphex f7445bcc98 Merge pull request #9843 from DEX357/patch-48
Update msg_hash_pl.h
2019-12-11 06:19:46 +01:00
DEX357 0fd2cfbab6 Update msg_hash_pl.h 2019-12-10 21:26:19 +01:00
Twinaphex d5d643ca28 Merge pull request #9841 from jdgleaver/xmb-thumbnails
(XMB) Use new 'menu_thumbnail' library for loading/rendering thumbnails
2019-12-10 20:04:54 +01:00
jdgleaver 2dc9616509 (XMB) Use new 'menu_thumbnail' library for loading/rendering thumbnails 2019-12-10 17:03:47 +00:00
Twinaphex 739f7b47fe Update CHANGES.md 2019-12-10 06:12:48 +01:00
Twinaphex 82df0c3aa3 Merge pull request #9838 from dobyrch/master
(Menu) Analog stick controls menu even if autoconfig disabled
2019-12-10 06:12:18 +01:00
twinaphex 3e22d7bbd5 (UWP) Cleanups/build fixes 2019-12-10 06:03:25 +01:00
Douglas Christman b67894586f (Menu) Analog stick controls menu even if autoconfig disabled
Fixes #9089 and #8192
2019-12-09 23:14:47 +08:00
Twinaphex 5e20d16ef8 Merge pull request #9837 from jdgleaver/glui-accessibility-icon
(GLUI) Use default icon for 'Accessibility' settings menu entry
2019-12-09 11:28:29 +01:00
jdgleaver 83235dc484 (GLUI) Use default icon for 'Accessibility' settings menu entry 2019-12-09 10:12:19 +00:00
Twinaphex bd0d8fd8ea Merge pull request #9836 from BarryJRowe/master
Fixed MacOSX defines for accessibility.
2019-12-09 00:47:24 +01:00
Barry Rowe ec7faddd26 Fixed MacOSX defines for accessibility. 2019-12-08 11:12:16 -08:00
twinaphex 6591844b3e (ANGLE) Don't need to link against GLESv2 explicitly 2019-12-07 21:14:37 +01:00
twinaphex 14c5825769 (Qb) Add ANGLE build option - currently requires you to put the required
libs in angle-x64 dir and then have the shared libs inside the main root
dir - after this, we want to try static linking
2019-12-07 21:01:44 +01:00
Twinaphex dfda4f3519 Merge pull request #9830 from WeedyWeedSmoker/french-translation-update
French translation update…
2019-12-07 20:58:12 +01:00
Twinaphex 7117cb8f8e Merge pull request #9833 from hasenbanck/ffmpeg-sw-mt
ffmpeg core implements MT for SW decoding.
2019-12-07 18:39:35 +01:00
Nils Hasenbanck 00f755a822 ffmpeg core implements MT for SW decoding.
This change will activate multi-threading for software based
decoder. Color conversion is still single threaded and also not
being performed by OpenGL.

Since the way ffmpeg inits the HW decoding, we can't 100% valdiate
if a hw decoder will play a file or not. Since we need to know
before calling avcodec_open2() if we want to either multi-thread via
software or HW decode, we will only run single-threaded in case of a
late fallback.

This happens for example in off cases when my AMD vega based graphic
card reports that it could HW decode VP9 video but in reality can't
(which is catched in callback get_format() and after avcodec_open2(().

There is currently no good solution in sight, since we can't
reconfigure the decoding context at that point of time.
2019-12-07 17:45:41 +01:00
twinaphex 328d5bf648 For ANGLE, point the EGL include dir to our copied files on
the repo
2019-12-07 10:52:14 +01:00
twinaphex 7f1c1db651 Now that we can build with ANGLE, we have to take this out 2019-12-07 10:30:28 +01:00
twinaphex b90bd91731 Bake out accessibility for iOS 2019-12-07 09:51:51 +01:00
twinaphex 5aa87c1734 Add HAVE_ANGLE switch 2019-12-07 08:16:00 +01:00
twinaphex 1fd6d024eb More buildfixes for ANGLE 2019-12-07 07:24:20 +01:00
twinaphex c6b325e4d6 Add more headers 2019-12-07 07:17:21 +01:00
twinaphex df588ca422 (ANGLE) Move headers to gfx/include/ANGLE 2019-12-07 07:09:49 +01:00
twinaphex 17a161afa2 Add missing header 2019-12-07 07:04:26 +01:00
Twinaphex 5628d3ba91 Merge pull request #9832 from libretro/angle-headers
Add more required headers
2019-12-07 07:01:45 +01:00
twinaphex 94f82ece4e Add more required headers 2019-12-07 07:01:11 +01:00
Twinaphex 6b2ac3afcd Merge pull request #9831 from libretro/angle-headers
Add EGL headers
2019-12-07 06:55:50 +01:00
twinaphex 1aaf933a1a Add EGL headers 2019-12-07 06:55:16 +01:00
Weedy Weed Smoker 3af86cab07 French update last minute typo…
Now ready to merge!
2019-12-07 12:38:37 +07:00
Weedy Weed Smoker d0ed4e90b3 Style unification for the US file…
Unifies the last lines with the style used throughout the US file
2019-12-07 12:35:32 +07:00
Weedy Weed Smoker 355aaac73a Minor update to french file 2019-12-07 12:31:09 +07:00
Weedy Weed Smoker fbd973147b French translation update…
Implements all the latest additions from the english file!
2019-12-07 12:19:42 +07:00
Twinaphex 6d2b81c6b3 Merge pull request #9828 from BarryJRowe/master
Fixed narrator speed on mac.
2019-12-07 04:08:44 +01:00
Barry Rowe b01b4de91d Fixed narrator speed on mac. 2019-12-06 13:16:30 -08:00
Twinaphex 36e7cc4bbd Merge pull request #9826 from jdgleaver/show-playlists
Enable playlist/add content functionality on platforms without database support
2019-12-06 14:26:39 +01:00
Twinaphex 7429124cd4 Update CHANGES.md 2019-12-06 14:24:40 +01:00
Twinaphex e3658cbc7b Merge pull request #9823 from driver1998/angle
[Win32 & UWP] ANGLE OpenGL ES support
2019-12-06 14:23:53 +01:00
jdgleaver 3031556e73 Enable playlist/add content functionality on platforms without database support 2019-12-06 10:49:27 +00:00
driver1998 105fadd668 [ANGLE] Add HAVE_ANGLE 2019-12-06 15:43:19 +08:00
driver1998 a8a4e60171 [ANGLE] Cleanup 2019-12-06 13:59:22 +08:00
driver1998 bfe167fae8 [UWP] Add ANGLE context 2019-12-06 13:24:18 +08:00
driver1998 7cbdd845ad [Win32] Add ANGLE context 2019-12-06 13:24:17 +08:00
driver1998 de203390be [Windows] Add ANGLE support 2019-12-06 13:24:17 +08:00
Twinaphex 55916a40ab Update CHANGES.md 2019-12-05 23:59:11 +01:00
Twinaphex 002f2ab6e7 Merge pull request #9801 from cmitu/kms-video-mode-selection
KMSDRM: better detection for the current video mode
2019-12-05 23:39:02 +01:00
Twinaphex e61fc4e427 Merge pull request #9822 from driver1998/uwp-fixes
Multiple UWP Fixes
2019-12-05 23:38:47 +01:00
Twinaphex c198c0737a Merge pull request #9825 from hasenbanck/ffmpeg-deps
Fix ffmpeg core build under linux.
2019-12-05 23:37:01 +01:00
Nils Hasenbanck 03b18dbfc4 Disable HW acceleration with ffmpeg 3.4. 2019-12-05 20:11:29 +01:00
Nils Hasenbanck c88f2b31ee Fix ffmpeg core build under linux.
Libass is optional again. This build will also compile with
ffmpeg 3.4 again, but HW acceleration is not guaranteed to work,
since it hasn't been tested well enough.
2019-12-05 19:39:56 +01:00
Twinaphex a01e99aa63 Update .travis.yml 2019-12-05 10:29:32 +01:00
Twinaphex 1ea82b8b5d Merge pull request #9821 from BarryJRowe/master
Removed narrator for emscripten case.
2019-12-05 10:27:04 +01:00
driver1998 4b393eb22a [UWP] Enable menu touch input 2019-12-05 17:15:27 +08:00
driver1998 bb6f13a725 [UWP] Fix keyboard input hang 2019-12-05 17:15:02 +08:00
driver1998 7519d3562b [UWP] Use GLUI on Windows 10 Mobile 2019-12-05 16:32:38 +08:00
driver1998 0f924bd083 [UWP] expand custom.ini to absolute path, prevent crashing 2019-12-05 16:32:38 +08:00
driver1998 004d782323 [UWP] Mouse fix on high DPI, multi touch support 2019-12-05 16:32:38 +08:00
driver1998 1bd9d503f0 [UWP] Add trailing backsplash to default dirs 2019-12-05 16:32:38 +08:00
driver1998 918b08e910 [UWP] Add ARM64 detection in get_os 2019-12-05 16:32:38 +08:00
driver1998 83cb526153 [UWP] Add get_user_language and get_cpu_model_name 2019-12-05 16:32:38 +08:00
driver1998 aa19d5180b [UWP] Move RunAsync out of VFS implementation 2019-12-05 16:32:38 +08:00
Barry Rowe d44d1537d9 Removed narrator for emscripten case. 2019-12-04 22:51:59 -08:00
Twinaphex 1392143d14 Merge pull request #9820 from BarryJRowe/master
Fix to audiomixer ifdef.
2019-12-05 07:47:40 +01:00
Barry Rowe ca03491e63 Fix to audiomixer. 2019-12-04 21:05:44 -08:00
Twinaphex 25fb69a7a5 Update CONTRIBUTING.md 2019-12-05 06:00:02 +01:00
twinaphex c1717fc028 Cleanups 2019-12-05 05:53:36 +01:00
twinaphex 49fb0d7909 Fix --disable-audiomixer 2019-12-05 05:48:26 +01:00
twinaphex 28e88c95ec Fix --disable-menu 2019-12-05 05:44:26 +01:00
Twinaphex 4c198a7cb3 Merge pull request #9819 from BarryJRowe/master
More build fixes.
2019-12-05 05:36:28 +01:00
Barry Rowe e1f8b66c05 More build fixes. 2019-12-04 20:11:02 -08:00
Twinaphex f03f6d6a63 Update CHANGES.md 2019-12-05 04:05:42 +01:00
Twinaphex b06314cda3 Merge pull request #9681 from fpscan/flux
New RGUI theme: Flux
2019-12-05 04:05:03 +01:00
Twinaphex fc6580200a Update CHANGES.md 2019-12-05 04:02:57 +01:00
Twinaphex ed20c14f23 Merge pull request #9816 from jdgleaver/manual-scan-arcade-dat
(Manual Content Scanner) Enable automatic naming of arcade content via DAT files
2019-12-05 04:02:15 +01:00
Twinaphex cbe46dfd99 Merge pull request #9818 from BarryJRowe/master
Removed C99 styled literals.
2019-12-05 03:58:45 +01:00
Barry Rowe 1223f74f5c Removed C99 styled literals. 2019-12-04 16:38:25 -08:00
twinaphex 8c2135f2bb Buildfix 2019-12-04 23:53:02 +01:00
Twinaphex d20dc01aff Merge pull request #9817 from BarryJRowe/master
Accessibility settings and narrator speed.
2019-12-04 23:30:15 +01:00
Barry Rowe cd29485d6e Removed extra prototypes. 2019-12-04 14:19:54 -08:00
Barry Rowe a8430acd66 Merge remote-tracking branch 'upstream/master' 2019-12-04 13:23:08 -08:00
Barry Rowe 3a67e072bb Added in fixes for accessibility feature. 2019-12-04 10:51:50 -08:00
twinaphex 535f2f23f3 Implement remaining accessibility settings 2019-12-04 18:11:25 +01:00
jdgleaver a27ee73622 Manual content scan arcade DAT files: Add support for MAME 'Software List' XML format 2019-12-04 16:19:32 +00:00
jdgleaver 9b012e907a (Manual Content Scanner) Enable automatic naming of arcade content via DAT files 2019-12-04 12:46:04 +00:00
twinaphex ebe9f1861e Implement more settings for Accessibility 2019-12-04 09:24:27 +01:00
twinaphex 9462fd301a (Accessibility) Add the two new Accessibility settings 2019-12-04 08:57:10 +01:00
twinaphex 6992f580e8 (Accessibility) Implement Narrator mode setting 2019-12-04 08:46:51 +01:00
twinaphex 6dd7f65322 (Accessibility) Update 2019-12-04 08:41:20 +01:00
twinaphex 72e6601702 C89 buildfix 2019-12-04 08:25:54 +01:00
twinaphex cab8663713 (Accessibility) Start adding Accessibility settings - empty for now 2019-12-04 08:25:24 +01:00
twinaphex 8d9419128e Add TODO/FIXME comment 2019-12-04 07:35:05 +01:00
twinaphex e3bf70dc10 Fix Linux build 2019-12-04 07:33:33 +01:00
twinaphex 0647e0d2c2 (Cheevos) Turn strncpy functions into strlcpy
(Translation/Accessibility) Turn functions static
2019-12-04 06:21:16 +01:00
twinaphex 2f43a1b5f4 Remove unused variable 2019-12-04 05:20:52 +01:00
twinaphex 831e33739e Replace some usage of strcpy and strcat 2019-12-04 05:17:53 +01:00
twinaphex 90008242eb Put this behind HAVE_TRANSLATE ifdef 2019-12-04 05:12:30 +01:00
twinaphex 43017cb65b Fix targets that don't have HAVE_NETWORKING 2019-12-04 05:10:56 +01:00
Twinaphex 2f17cbaef3 Merge pull request #9768 from BarryJRowe/master
Added in accessibility. (DO NOT MERGE)
2019-12-04 04:06:39 +01:00
twinaphex 688acb1e41 Refactor build_list 2019-12-03 03:26:54 +01:00
twinaphex 7b2d7a9ec7 Cleanups 2019-12-03 03:14:39 +01:00
twinaphex 01e62efb72 move more code to build_list 2019-12-03 02:17:43 +01:00
twinaphex 82391b6ac1 move more code to build_list 2019-12-03 02:09:55 +01:00
twinaphex 2ad2983b25 Move HELP_SCREEN_LIST to build_list 2019-12-03 01:53:00 +01:00
twinaphex 5df0516318 Move these to build_list 2019-12-03 01:50:14 +01:00
twinaphex 56014a6bf7 Change the sublabel for User Binds / Port Binds as well 2019-12-03 00:49:12 +01:00
twinaphex dd923d55f2 Change 'User % Binds' To 'Port % Binds' 2019-12-03 00:37:11 +01:00
twinaphex 3c2d30c510 Move DISPLAYLIST_OPTIONS_REMAPPINGS to build_list 2019-12-03 00:26:39 +01:00
twinaphex a4982cd460 (Menu displaylist) Cleanup 2019-12-02 23:45:21 +01:00
twinaphex e6a3785b01 Cleanups 2019-12-02 23:39:46 +01:00
twinaphex d09ae22147 Fix return values 2019-12-02 23:16:35 +01:00
twinaphex d2e83df498 Refactor menu_displaylist_parse_load_content_settings - should now
properly report count
2019-12-02 22:50:33 +01:00
twinaphex c490b06fe9 (menu_displaylist) build_list - add more entries 2019-12-02 22:35:02 +01:00
twinaphex c9a97d255c (menu_cbs_title) Cleanups 2019-12-02 22:20:36 +01:00
Twinaphex f0a9f4e6a4 Merge pull request #9812 from libretro/menu-actionok-refactors
Menu actionok refactors
2019-12-02 21:11:33 +01:00
twinaphex 177ca956f1 Code de-duplication 2019-12-02 21:08:21 +01:00
twinaphex e13febc82b (menu cbs ok) Code de-duplication 2019-12-02 21:05:04 +01:00
twinaphex 04ee55f202 Add NOTE/TODO about globals 2019-12-02 20:52:23 +01:00
twinaphex ee6c2393c1 (menu_cbs_ok.c) Cut down on some code duplication 2019-12-02 20:47:50 +01:00
Twinaphex 52fe3d2c7d Merge pull request #9810 from hasenbanck/ffmpeg-version
ffmpeg core prints out the ffmpeg library version
2019-12-02 19:41:00 +01:00
Nils Hasenbanck 1dbc7cdc9a ffmpeg core prints out the ffmpeg library version
For better debugging and supporting of the users, we will print
out the library versions that the ffmpeg core is currently using.
2019-12-02 18:50:44 +01:00
twinaphex 07f3abfda1 (madmonkey) Proposed fix for Mali GPUs 2019-12-02 16:28:35 +01:00
Twinaphex a2c7b17cd3 Update CHANGES.md 2019-12-02 16:25:55 +01:00
Twinaphex 56393bd253 Merge pull request #9808 from jdgleaver/manual-scan-archives
(Manual Content Scanner) Add option to scan inside archives
2019-12-02 16:25:27 +01:00
jdgleaver 3d52d7a8f6 (Manual Content Scanner) Add option to scan inside archives 2019-12-02 11:49:41 +00:00
Twinaphex b5958359d2 Update CHANGES.md 2019-12-02 09:27:57 +01:00
Twinaphex e7257c1855 Update CHANGES.md 2019-12-02 07:35:44 +01:00
Twinaphex 6329b28e4a Update CHANGES.md 2019-12-02 07:35:12 +01:00
twinaphex c3743a74f6 Refactor menu_cbs_sublabel.c 2019-12-02 07:20:01 +01:00
twinaphex e7d2e7ebcb Refactor menu_cbs_get_value.c 2019-12-02 06:47:51 +01:00
Twinaphex 71f4ff6b84 Merge pull request #9777 from DEX357/patch-47
FIXME Update msg_hash_pl.h
2019-12-02 06:17:47 +01:00
Twinaphex bfe00ac6f3 Merge pull request #9807 from libretro/deferred-refactors-pt2
(menu_cbs_ok) Cleanups
2019-12-02 06:17:30 +01:00
Twinaphex 2b2d6742e0 Merge pull request #9805 from libretro/deferred-refactors-pt2
Deferred refactors pt2
2019-12-02 06:16:48 +01:00
Twinaphex aa9934a722 Merge pull request #9806 from libretro/revert-9561-patch-6
Revert "iOS - Bump GCC Optimization level to-0s for Release Builds. "
2019-12-02 06:16:38 +01:00
Twinaphex ec4ecb5d34 Revert "iOS - Bump GCC Optimization level to-0s for Release Builds. " 2019-12-02 06:16:28 +01:00
twinaphex 8551d175ab (menu_cbs_ok) Cleanups 2019-12-02 06:10:32 +01:00
twinaphex d0bce8bc9f Refactor menu_cbs_title 2019-12-02 05:50:32 +01:00
Twinaphex 12ae92ef66 Merge pull request #9786 from hasenbanck/ffmpeg-amf
Implement ffmpeg send/receive encoding API
2019-12-02 05:35:37 +01:00
Twinaphex c1a2dd81c7 Merge pull request #9798 from libretro/kivutar/makeosx
[WIP] Allow building using make on OSX
2019-12-02 05:24:29 +01:00
Twinaphex a4d8ecf2b8 Merge pull request #9561 from mrjschulte/patch-6
iOS - Bump GCC Optimization level to-0s for Release Builds.
2019-12-02 05:24:07 +01:00
twinaphex c80d18c446 Refactor DEFERRED_RECORDING_SETTINGS_LIST 2019-12-02 02:33:09 +01:00
twinaphex 2a41f1fb99 Change type to enum - should silence C89 build errors 2019-12-02 01:21:42 +01:00
Twinaphex 901932a8e1 Merge pull request #9804 from libretro/deferred-push-refactor
Refactor deferred push callbacks
2019-12-01 23:23:23 +01:00
Twinaphex e57e4dbf57 Merge branch 'master' into deferred-push-refactor 2019-12-01 23:22:18 +01:00
Twinaphex 00ca7297f3 Merge pull request #9795 from jdgleaver/manual-scan
Add manual content scanner
2019-12-01 23:11:45 +01:00
twinaphex cfc2a15d41 Refactor the other entries as well 2019-12-01 22:57:18 +01:00
twinaphex e8f55e8b24 Refactor deferred push callbacks 2019-12-01 22:38:53 +01:00
Twinaphex c09c4299ba Merge pull request #9803 from libretro/flowchart-controls
Change 'User' terminology to 'Port' for input binding stuff
2019-12-01 21:40:17 +01:00
Twinaphex dda12da672 Merge pull request #9799 from hasenbanck/ffmpeg-hw
FFMPEG Core HW accelerated decoding
2019-12-01 20:32:50 +01:00
Twinaphex 96b6789855 Merge pull request #9800 from Tatsuya79/patch-3
fix dock titles getting cut off
2019-12-01 19:52:58 +01:00
Nils Hasenbanck 17107a1563 Fix decoder switching and context re-usage.
The re-usage of the decoder context is not properly implemented.
Restart options will only be applied when the core is started.
2019-12-01 12:49:37 +01:00
Nils Hasenbanck c3c2f5bfb6 Implement HW based decoding for the ffmpeg core.
The ffmpeg core not support the usage of HW based video decoders.

Core options to configure the HW decoder to use is provided.
Proper fallback to the SW based decoder is implemented.

Currently the decoder loop in single threaded and is limited by
the color conversion that is done in software.
The frame based threading provided by ffmpeg also currently doesn't
seem to provide any benefits in configuring it.
2019-12-01 12:11:14 +01:00
cmitu 3953659901 KMSDRM: better detection for the current video mode 2019-12-01 06:45:43 +00:00
DEX357 c3f2469832 Update msg_hash_pl.h 2019-11-30 22:25:23 +01:00
Tatsuya79 2e0c1daf1b fix dock titles getting cut off 2019-11-30 19:06:59 +01:00
Jean-André Santoni 93df88a5d6 Typo 2019-11-30 14:24:38 +07:00
Jean-André Santoni 3ed2cf7812 CI 2019-11-30 13:01:43 +07:00
Jean-André Santoni c0dfcd2adf Fix Metal build 2019-11-30 12:49:52 +07:00
Jean-André Santoni f349784bd6 Fix the xcode build 2019-11-30 12:43:38 +07:00
Jean-André Santoni ba2c870d95 Allow building using make on OSX 2019-11-30 12:37:58 +07:00
Twinaphex b382ea2a33 Merge pull request #9797 from Tatsuya79/patch-2
fix search dock title
2019-11-29 23:25:45 +01:00
Tatsuya79 b6094d6f3b fix search dock title 2019-11-29 22:48:18 +01:00
jdgleaver 170397456c Add manual content scanner 2019-11-29 17:14:46 +00:00
Twinaphex 944485b9ae Update Makefile.libnx 2019-11-29 05:23:00 +01:00
Twinaphex c8adaaaab2 Merge pull request #9789 from jdgleaver/ozone-thumbnails
(Ozone) Use new 'menu_thumbnail' library for loading/rendering thumbnails
2019-11-28 18:06:06 +01:00
Twinaphex d8ba2839c4 Merge pull request #9794 from Jamiras/cheevos_unsupported_core_hardcore_pause
(cheevos) pause hardcore if core doesn't support achievements
2019-11-28 18:05:53 +01:00
DEX357 576213b048 FIXME 2019-11-27 19:41:17 +01:00
Jamiras 1f97d31f2a pause hardcore if core doesn't support achievements 2019-11-27 07:38:41 -07:00
Barry Rowe 1e6e7a698f Added in accessibility. 2019-11-26 15:19:21 -08:00
jdgleaver 9170bca9b3 (Ozone) Use new 'menu_thumbnail' library for loading/rendering thumbnails 2019-11-25 13:14:25 +00:00
twinaphex 388879da38 Change 'User' terminology to 'Port' for input binding stuff 2019-11-24 20:11:49 +01:00
DEX357 4476d3e971 Update msg_hash_pl.h 2019-11-24 18:32:59 +01:00
Nils Hasenbanck 4e4802e5c6 Implement ffmpeg send/receive encoding API
This is implementing the send/receive encoding API of ffmpeg in the
ffmpeg record backend.

Newer encoder do need the client to use this API to use them (for
example h264_amf and hvec_amf). "Old" encoders should work fine
(Tested x264 and webm profiles).

The biggest change is the handling of the encoded packets, since
the API can return multiple packets in it's queue. As a positive
side-effect the code for flushing is much more easier.
2019-11-24 17:41:22 +01:00
Twinaphex 203a80aeaa Merge pull request #9785 from Jamiras/nds_hash
(cheevos) add hashing for Nintendo DS
2019-11-24 16:59:04 +01:00
Twinaphex 50a50b8519 Merge pull request #9784 from jdgleaver/thumbnail-upscaling-settings-fix
Fix 'Thumbnail Upscaling Threshold' setting drop-down list
2019-11-24 16:58:35 +01:00
DEX357 4203b4fb78 Update msg_hash_pl.h 2019-11-24 16:05:09 +01:00
Jamiras a990c0bca4 add hashing for Nintendo DS 2019-11-24 07:59:59 -07:00
jdgleaver 4eec21b4d1 Fix 'Thumbnail Upscaling Threshold' setting drop-down list 2019-11-24 14:39:08 +00:00
DEX357 6625eff3d8 Update msg_hash_pl.h 2019-11-24 03:56:11 +01:00
DEX357 677f13a2fe Update msg_hash_pl.h 2019-11-24 03:15:54 +01:00
twinaphex ba74747860 (ffmpeg core) Update Makefile 2019-11-23 22:39:50 +01:00
Twinaphex de3ac2c549 Merge pull request #9775 from Jamiras/chd_pregap
(cheevos) fix hash calculation for some PCEngine CHD files
2019-11-23 21:08:47 +01:00
Twinaphex ccaba7d465 Merge pull request #9776 from fjtrujy/psp/PThread
[PSP] Solving issue Exiting RetroArch by HOME button
2019-11-23 12:59:14 +01:00
Francisco Javier Trujillo Mata e553e19996 Call pthread_terminate is if it is NO SALAMANDER 2019-11-23 12:54:45 +01:00
twinaphex ce9ba045ff This can be unreverted after we bake in the pthreads implementation for PSP and Vita
Revert "Call to the terminate function for the pthread on the deinit of the PSP platform"

This reverts commit 1671f16b0c.
2019-11-23 12:36:31 +01:00
Jamiras c69a11a219 better detection of pregap data in file 2019-11-22 19:36:38 -07:00
Twinaphex 4aa936ce33 Merge pull request #9772 from DuMOHsmol/xbox_one_bluetooth_fix
Get rid of 128 byte device name limit for XInput device discover
2019-11-22 19:50:58 +01:00
Twinaphex f09561026a Merge pull request #9771 from jdgleaver/pointer-msgbox-inhibit
(Menu) Ensure pointer input is handled correctly when showing message boxes
2019-11-22 19:50:13 +01:00
Dmitry Sergeenkov 5cdef89b86 Get rid of 128 byte device name limit for XInput device discover 2019-11-22 21:15:58 +03:00
jdgleaver b1d5542d77 (Menu) Ensure pointer input is handled correctly when showing message boxes 2019-11-22 15:10:28 +00:00
Francisco Javier Trujillo Mata 1671f16b0c Call to the terminate function for the pthread on the deinit of the PSP platform 2019-11-21 19:25:02 +01:00
Francisco Javier Trujillo Mata 5a5640155a Call to the terminate function for the pthread on the deinit of the PSP platform 2019-11-21 19:13:33 +01:00
Twinaphex 822eb3bb86 Merge pull request #9759 from Jamiras/rcheevos_81
(cheevos) update rcheevos to v8.1
2019-11-21 16:39:58 +01:00
Twinaphex 3e55d598db Merge pull request #9762 from gblues/gblues/default-asset-directory
Gblues/default asset directory
2019-11-21 15:45:17 +01:00
Twinaphex def1e352d4 Merge pull request #9763 from jdgleaver/glui-fs-thumbs-enable-select
(GLUI) Enable pass-through of [RetroPad A]/[Keyboard Return key] when viewing fullscreen thumbnails
2019-11-21 15:34:30 +01:00
jdgleaver 34b744aff6 (GLUI) Enable pass-through of [RetroPad A]/[Keyboard Return key] when viewing fullscreen thumbnails 2019-11-21 12:45:03 +00:00
Nathan Strong bff8e8204d Automatically rename asset directory
== DETAILS
For users upgrading--particularly via the online updater--we should
smoothly migrate them to the new name. If the "media" directory
exists and the "assets" directory doesn't, then rename "media" to
"assets".

== TESTING
none yet
2019-11-20 23:33:20 -08:00
Nathan Strong 4cd3934610 Change the default asset directory
On every other platform, retroarch uses "assets" but wiiu got stuck with "media"
and it's never been fixed.

So I'm fixing it.
2019-11-20 23:33:20 -08:00
Jean-André Santoni 33206b8847 Wait longer for the notarization server 2019-11-21 11:12:54 +07:00
Jamiras b26fa714a8 more descriptive error string 2019-11-20 18:19:35 -07:00
Jamiras 9983976ddb update rcheevos to v8.1 2019-11-20 14:40:34 -07:00
Twinaphex d3ed02dd87 Update Makefile.common 2019-11-20 20:38:28 +01:00
jdgleaver d392d90a6e (GLUI) Add fullscreen thumbnail viewer (#9758) 2019-11-20 19:09:02 +01:00
Francisco José García García c8067ba0c0 (VITA) Baked math-neon and vitaGL (#9757)
* Squashed 'deps/math-neon/' content from commit 0050735

git-subtree-dir: deps/math-neon
git-subtree-split: 0050735ae8f18281c1e6fbe2dc80546e402b7fc5

* Squashed 'deps/vitaGL/' content from commit 694b387

git-subtree-dir: deps/vitaGL
git-subtree-split: 694b387a6eacf7e179f07ff621e5772ae4253315

* (Vita) Add baked math-neon and vitaGL
2019-11-20 12:13:33 +01:00
Twinaphex 932071952d (OSX) Buildfix 2019-11-20 11:19:18 +01:00
Twinaphex f081cfa314 Merge pull request #9756 from libretro/iosfix
Revert code in hopes iOS works again
2019-11-20 11:11:23 +01:00
twinaphex 861379d8e3 Revert code in hopes iOS works again 2019-11-20 06:25:40 +01:00
Twinaphex 64b23937d3 Merge pull request #9690 from libretro/kivutar/codesign
Code sign OSX release
2019-11-20 05:44:23 +01:00
Jean-André Santoni 11a4a4cffb Code cleaning 2019-11-20 10:45:14 +07:00
Jean-André Santoni 8da54e2349 Uncomment stuff 2019-11-20 10:09:24 +07:00
Jean-André Santoni 87cc90741d Deep sign 2019-11-20 09:59:34 +07:00
Jean-André Santoni 27da1c94f2 Enable hardened runtime for the Qt build 2019-11-20 09:09:27 +07:00
Twinaphex d2d240ecf5 (iOS) Should fix iOS build problems 2019-11-20 02:58:17 +01:00
Twinaphex 540edd7b5d (iOS) Buildfix #1 2019-11-20 02:51:18 +01:00
Twinaphex 81c020d300 Replace g_instance with CocoaView get 2019-11-20 02:24:03 +01:00
twinaphex e3506ed06b Move nsview_get_ptr to cocoa_common 2019-11-20 02:24:03 +01:00
Twinaphex 387e18b528 cocoagl_gfx_ctx_set_video_mode - go through [CocoaView get] here 2019-11-20 02:24:03 +01:00
Twinaphex bac58c99c4 Buildfix 2019-11-20 02:24:03 +01:00
twinaphex 964fcda79a Move glkitview_init to cocoa_common.m 2019-11-20 02:24:02 +01:00
Twinaphex b241b5769b Merge pull request #9754 from realnc/fix-null-deref
Fix null pointer deref
2019-11-19 23:58:23 +01:00
Nikos Chantziaras 376598a6e0 Fix null pointer deref 2019-11-20 00:41:38 +02:00
twinaphex ed8e440b0d Revert "Move update_window_title to main thread - this should resolve some"
This reverts commit 442608981d.
2019-11-19 22:48:35 +01:00
twinaphex 442608981d Move update_window_title to main thread - this should resolve some
concurrency issues on OSX as well
2019-11-19 22:13:51 +01:00
Jean-André Santoni 8191f2775f Add Qt back 2019-11-19 17:46:35 +07:00
Jean-André Santoni f142caea11 Disable some other builds for now 2019-11-19 17:40:01 +07:00
Jean-André Santoni d2f381d121 Try to take qt5 out 2019-11-19 17:39:19 +07:00
Jean-André Santoni 90b56fb487 Move back code signing to travis 2019-11-19 17:38:19 +07:00
Jean-André Santoni 8533512a82 Revert "Remove project changes"
This reverts commit f5dac2859ff029c7e836264cccf6cb28b146c308.
2019-11-19 17:38:19 +07:00
Jean-André Santoni dbe4be7e7f Remove project changes 2019-11-19 17:38:19 +07:00
Jean-André Santoni 912ab4ff00 Fix QT build 2019-11-19 17:38:19 +07:00
Jean-André Santoni 460cfc9efd Fix QT build 2019-11-19 17:38:19 +07:00
Jean-André Santoni 309045e0ac Move the logic to the shell script 2019-11-19 17:38:18 +07:00
Jean-André Santoni 944e89bdc8 Enable hardened runtime 2019-11-19 17:38:18 +07:00
Jean-André Santoni 885eb4f15b Fix signing conflict 2019-11-19 17:38:18 +07:00
Jean-André Santoni 27ecc119e0 Try to set the team ID there 2019-11-19 17:38:18 +07:00
Jean-André Santoni ded406984f Don't codesign this way 2019-11-19 17:38:18 +07:00
Jean-André Santoni 2a7b76249c Use xcode 11.2 and attempt to notarize the .app 2019-11-19 17:38:18 +07:00
Jean-André Santoni e49d505254 Code sign OSX release 2019-11-19 17:38:11 +07:00
twinaphex 79c336b6fd Update dist-cores.sh 2019-11-19 10:04:45 +01:00
Jean-André Santoni 249c73d68c Revert "Try xcode 11.1"
This reverts commit ffda27c8a7.
2019-11-19 15:21:08 +07:00
twinaphex 5d8c566dbc (cores/ffmpeg) Resync 2019-11-19 09:09:52 +01:00
Twinaphex aa2348823c Merge pull request #9749 from libretro/kivutar/removeuselessifdef
Remove useless HAVE_COCOA_METAL ifdef
2019-11-19 09:04:20 +01:00
twinaphex 10a234908f Update libretro-ffmpeg Makefile 2019-11-19 09:01:46 +01:00
twinaphex 6d5104f6d7 (Windows/ffmpeg) Standalone Makefile - Don't set it explicitly to gcc/g++ 2019-11-19 08:55:04 +01:00
twinaphex fbdc53f926 Update ffmpeg Makefile.common - see if it changes anything 2019-11-19 08:54:19 +01:00
Jean-André Santoni 8e028f4db3 Remove useless HAVE_COCOA_METAL ifdef 2019-11-19 14:50:21 +07:00
twinaphex 29ced2a72f Simplify cocoagl_gfx_ctx_get_video_size somewhat 2019-11-19 08:26:12 +01:00
twinaphex 77b05d6078 Add this for OSX 10.7 solution 2019-11-19 08:10:12 +01:00
Twinaphex b351fac466 Merge pull request #9748 from libretro/kivutar/xcode111
Try xcode 11.1
2019-11-19 07:54:11 +01:00
Jean-André Santoni ffda27c8a7 Try xcode 11.1 2019-11-19 13:42:06 +07:00
Twinaphex 72601103ba Merge pull request #9747 from libretro/kivutar/travispr
Prevent duplicate travis jobs
2019-11-19 07:32:14 +01:00
twinaphex 4736bef77b (Apple) Add HAVE_ONLINE_UPDATER 2019-11-19 07:18:16 +01:00
Jean-André Santoni 1581d23a6c Prevent deplicate travis jobs 2019-11-19 13:17:10 +07:00
Twinaphex 15b6da2a17 Merge pull request #9745 from libretro/kivutar/osxmake
Fix building with make on OSX
2019-11-19 07:12:07 +01:00
twinaphex f0784351c4 Update header include - should look in system dir 2019-11-19 06:19:09 +01:00
Twinaphex 9df2a6fd99 Merge pull request #9676 from orbea/qb3
Some minor qb changes.
2019-11-19 06:15:55 +01:00
Twinaphex 8518b4f50b Merge pull request #9673 from orbea/deprecate
qb: Remove deprecated arguments.
2019-11-19 06:15:40 +01:00
Twinaphex 53b7fb2ba2 Remove unused variables 2019-11-19 06:08:54 +01:00
Twinaphex 6a541125aa Silence two issues 2019-11-19 06:01:11 +01:00
Jean-André Santoni 947e15f34f Move WindowListener around 2019-11-19 12:00:24 +07:00
Twinaphex c7ce2c7053 Fix Xcode issue 2019-11-19 05:54:01 +01:00
Jean-André Santoni d5a5380e6d Fix building with make on OSX 2019-11-19 11:38:27 +07:00
Twinaphex 496104005b Merge pull request #9744 from realnc/fix-aspect-ratio-change
Don't omit AR changes when not reinitting video in SET_SYSTEM_AV_INFO
2019-11-19 04:11:46 +01:00
Nikos Chantziaras 33ab147514 Don't omit AR changes when not reinitting video in SET_SYSTEM_AV_INFO 2019-11-19 04:37:03 +02:00
Twinaphex c0bc8d2df2 Update CHANGES.md 2019-11-18 08:22:50 +01:00
Twinaphex d2a1d96f59 Update CHANGES.md 2019-11-18 08:21:29 +01:00
twinaphex 9d0356dd73 Add HAVE_STEAM switch 2019-11-18 08:04:29 +01:00
twinaphex a46027bed7 Remove MENU_LABEL_ONLINE_UPDATER 2019-11-18 07:51:57 +01:00
twinaphex a68e9b5014 Start passing global struct to configuration.c functions 2019-11-18 07:32:01 +01:00
twinaphex 88d4ae6790 Buildfix for Android - this header should not be done as a system
header include
2019-11-18 06:48:15 +01:00
twinaphex 48cca00d91 Revert "(retroarch.c) Cleanups"
This reverts commit db9a067e64.
2019-11-18 06:43:30 +01:00
twinaphex 9555f70440 Cleanup some RARCH_CTL_ actions 2019-11-18 06:32:23 +01:00
twinaphex db9a067e64 (retroarch.c) Cleanups 2019-11-18 06:20:47 +01:00
twinaphex 0aa9bd9c22 (retroarch.c) Cleanups - start getting rid of driver_find_ident
functions
2019-11-18 06:06:59 +01:00
twinaphex aba96fbf03 (Menu) Small cleanups 2019-11-18 04:20:40 +01:00
Twinaphex 2a72d90e8a Merge pull request #9715 from realnc/no-video-reinit
Do not reinit video driver on SET_SYSTEM_AV_INFO unless needed
2019-11-18 00:41:30 +01:00
Twinaphex 479ba58042 Update CHANGES.md 2019-11-17 23:16:44 +01:00
Twinaphex 9c0028c1d1 Merge pull request #9739 from Jamiras/cheevos_init_load_state
(cheevos) prevent loading state while achievements are still being fetched from server
2019-11-17 23:16:21 +01:00
Twinaphex 53d18cf95e Merge pull request #9713 from Rinnegatamante/vitagl
Added gl1 video driver support to Vita build
2019-11-17 23:14:29 +01:00
twinaphex 63e437d58f Rename get_rotation to retroarch_get_rotation 2019-11-17 22:58:52 +01:00
Twinaphex ddd9fbf6ae Merge pull request #9734 from Aethyrion/rotation_fixing
Rotation fixing
2019-11-17 22:53:12 +01:00
Twinaphex 68719ac8d4 Merge pull request #9741 from Jamiras/cheevos_lbl_cleanup
(cheevos) remove unused menu labels
2019-11-17 22:44:36 +01:00
twinaphex 934697b0da Buildfix for no menu 2019-11-17 22:42:15 +01:00
twinaphex cbe68cbf88 Turn the find_handle/find_ident functions static 2019-11-17 22:31:57 +01:00
Jamiras 9e547699c6 remove CHEEVOS_UNLOCKED_ACHIEVEMENTS, CHEEVOS_LOCKED_ACHIEVEMENTS, and CHEEVOS_OLD_ENABLE menu labels 2019-11-17 13:09:55 -07:00
twinaphex f9bc57bcf8 Merge list_special.c into retroarch.c 2019-11-17 21:07:56 +01:00
twinaphex 09b7202c54 Do a fall-through here 2019-11-17 21:01:46 +01:00
twinaphex 8c799f978b Merge paths.c - this is one of the last file we merge - not long after this
we can start splitting up retroarch.c into several files
2019-11-17 21:00:15 +01:00
Rémi 34125a6d14 Remove // comments 2019-11-17 20:46:51 +01:00
twinaphex c252cbe9e0 Strip out rxml and yxml if HAVE_VIDEO_LAYOUT is not defined 2019-11-17 20:43:26 +01:00
Twinaphex 8e6e30370d Merge pull request #9729 from huwpascoe/rxml-fix
Fixed xml parsing
2019-11-17 20:23:07 +01:00
Rémi 154c2d388d Fix CI compilation issues 2019-11-17 20:18:42 +01:00
Nikos Chantziaras e8c027cbc3 Do not reinit video driver on SET_SYSTEM_AV_INFO unless needed
Video reinit causes the core to freeze momentarily, freezing audio and
flashing the window. Cores like dosbox-svn need to change fps quite often
(some DOS games even change fps mid-gameplay) and the video reinit becomes
very annoying.

Change this to not reinit the video driver unless CRT SwitchRes is enabled
or a max width/height change was requested.
2019-11-17 20:29:42 +02:00
Rémi e3a8e28edc Using MAX macro. 2019-11-17 18:34:19 +01:00
Rémi 1c9d0dbf48 Refactoring (still trying to fix CI compilation issue) 2019-11-17 18:03:57 +01:00
Jamiras 939770929f hardcore mode is not dependent on having achievement data 2019-11-17 09:36:39 -07:00
Rémi 756b4636f6 Update Aspect Ratio (1:1 PAR and Custom) when rotating from menu 2019-11-17 17:22:10 +01:00
Twinaphex 80e49531b1 Merge pull request #9738 from libretro/revert-9714-master
Revert "Refactor RetroArch input polling settings"
2019-11-17 16:45:54 +01:00
Twinaphex b6aa9f2fd1 Revert "Refactor RetroArch input polling settings" 2019-11-17 16:45:40 +01:00
Rémi 09a9b7d254 CI compilation issue 2019-11-17 16:26:29 +01:00
Rémi f804e0738f Fix Integer Scaling when rotating 2019-11-17 13:52:28 +01:00
Rémi a28e57e42d Fixing Integer Scaling for Custom Viewport (when rotating) 2019-11-17 13:21:50 +01:00
Rémi 7088281b52 Fixing 1:1 PAR for 270 degree rotation 2019-11-16 23:18:56 +01:00
Rémi ba183cf7a6 Refactoring (get_rotation) 2019-11-16 23:03:15 +01:00
Rémi 9df755bdb4 Fixing 1:1 PAR aspect ratio when video rotated 2019-11-16 22:13:12 +01:00
Huw Pascoe 4eebfa237b Fixed xml parsing 2019-11-16 20:56:12 +00:00
Rémi cc99b9f949 Merge branch 'rotation_fixing' of https://github.com/Aethyrion/RetroArch into rotation_fixing 2019-11-16 19:52:52 +01:00
Rémi 6c47f02bdf Fixing OpenGL shader rotation 2019-11-16 19:52:47 +01:00
Rémi 30f36a30f2 Remove empty line 2019-11-16 19:50:35 +01:00
Rémi b6dc887d52 Fixing OpenGL shader rotation 2019-11-16 19:45:04 +01:00
Twinaphex 9b192dc3c1 Update CHANGES.md 2019-11-16 17:28:09 +01:00
Twinaphex 686a0ce199 Update CHANGES.md 2019-11-16 17:27:01 +01:00
Twinaphex 27f88abb02 Merge pull request #9733 from Jamiras/psx_exe_hash
(cheevos) use PSX.EXE if SYSTEM.CNF cannot be found
2019-11-16 17:26:35 +01:00
Jamiras 3b0cbc1e41 use PSX.EXE if SYSTEM.CNF cannot be found 2019-11-16 08:36:13 -07:00
Twinaphex 0d284c42bc Merge pull request #9714 from rz5/master
Refactor RetroArch input polling settings
2019-11-15 17:18:30 +01:00
Twinaphex 11f054e646 Merge pull request #9725 from guoyunhe/patch-1
Fix comment in freetype.c
2019-11-15 17:16:26 +01:00
Twinaphex 6ec7eddfc9 Merge pull request #9728 from jdgleaver/glui-navigation
(GLUI) Navigation improvements
2019-11-15 16:31:19 +01:00
jdgleaver 7eefec6945 (GLUI) Navigation improvements 2019-11-15 14:53:00 +00:00
Guo Yunhe 95dede9039 Fix comment in freetype.c 2019-11-15 10:18:05 +02:00
rz5 82898ea194 Cast arg to rarch_set_in_put from what it is to enum rarch_poll_type.
Might fix building under clang 6.0
2019-11-15 00:47:46 +00:00
Twinaphex 666ebb0ae1 Update CHANGES.md 2019-11-15 00:59:17 +01:00
Twinaphex 8548771025 Merge pull request #9682 from fpscan/turkish-translation
Update msg_hash_tr.h
2019-11-15 00:58:51 +01:00
Twinaphex 6adfff6995 Update CHANGES.md 2019-11-15 00:56:51 +01:00
Twinaphex 724865a8fc Update freetype.c 2019-11-15 00:53:17 +01:00
Twinaphex eab80384ab Update CHANGES.md 2019-11-15 00:52:11 +01:00
Twinaphex cbf0bc9cfc Merge pull request #9721 from guoyunhe/fix-chinese-font-linux
Correct Droid Sans Fallback font path in Linux
2019-11-15 00:51:07 +01:00
Twinaphex 474110b818 Merge pull request #9720 from Rinnegatamante/master
Some improvements to Italian translation.
2019-11-15 00:50:27 +01:00
Guo Yunhe 52b3a4fe17 Correct Droid Sans Fallback font path 2019-11-14 18:01:46 +02:00
Rinnegatamante 2f7a6fa394 Some improvements to Italian translation. 2019-11-14 13:14:46 +01:00
Rinnegatamante 2a77dc5600 Make code C89 compliant. 2019-11-13 21:44:59 +01:00
Twinaphex d84dfee044 Merge pull request #9711 from WeedyWeedSmoker/French-update
Update french language with the latest additions
2019-11-13 18:31:23 +01:00
Rinnegatamante 616759ed8c [VITA] Implement check_window. 2019-11-13 11:19:51 +01:00
Rinnegatamante 637319c938 [VITA] Implement swap_interval in vita video driver context. 2019-11-13 09:57:03 +01:00
Rinnegatamante d7572399cc [VITA] Make (for now) vita2d renderer the default one. 2019-11-13 09:05:57 +01:00
rz5 2678789bd8 Refactor RetroArch input polling settings
* Refactored the way RetroArch sets the input state/poll callbacks, hopefully it's clearer now.

* The unnamed enum of poll type behaviors in core.h was moved to retroarch.h and is now named rarch_poll_type.
It represents polling behaviors implemented specifically by RetroArch.
First element starts at 1 to match the data encoding of RETRO_ENVIRONMENT_POLL_TYPE_OVERRIDE.

* Created rarch_set_input_cbs - sets different input state/poll callbacks based on a
rarch_poll_type parameter.

* Replaced the static variable core_poll_type_override in retroarch.c with a poll_type_lock flag
inside global_t's menu struct;
RETRO_ENVIRONMENT_POLL_TYPE_OVERRIDE will now call rarch_set_input_cbs and set poll_type_lock,
which blocks the user from changing behaviors from the menu.

* To follow the RETRO_ENVIRONMENT_POLL_TYPE_OVERRIDE spec, we now set poll_type_lock and call
rarch_set_input_cbs after calling unload_game.

* core_set/unset_netplay_callbacks will now set/unset poll_type_lock, preventing the
poll type from being changed by the user;

* The MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR action will now call rarch_set_input_cbs if poll_type_lock
isn't set, which means poll type is changed on-the-fly.
2019-11-13 00:11:05 +00:00
Rinnegatamante 96845f4a7e [VITA] Removing a no more used ifndef. 2019-11-13 00:45:48 +01:00
Twinaphex baaf27c268 Merge pull request #9712 from julianaito/master
OpenBSD/powerpc: fix "undefined reference to __mftb"
2019-11-12 23:11:17 +01:00
Charlène 3038e9e1ce OpenBSD/powerpc: fix "undefined reference to __mftb" 2019-11-12 22:24:35 +01:00
Rinnegatamante a30f7dc79f [VITA/PSP] Fix logging to file not working. 2019-11-12 19:46:37 +01:00
Rinnegatamante 2b20c8d350 [GL1] Fixed core frame renderer. 2019-11-12 19:46:37 +01:00
radius 3f88a49bdc linux frontend: add proper drives 2019-11-12 19:11:51 +01:00
Rinnegatamante bed9847b48 [VITA] Hijacking wrong positioning for UI elements. 2019-11-12 19:06:18 +01:00
Rinnegatamante 66bdf711f4 [VITA] Back to GL_LUMINANCE_ALPHA usage. 2019-11-12 16:33:47 +01:00
Rinnegatamante f3ca57e6f0 [VITA] Add vita video driver context. 2019-11-12 16:33:36 +01:00
Rinnegatamante 6b7673f806 [VITA] Fixing gl1 video driver crashes. 2019-11-12 15:37:37 +01:00
twinaphex 312f143253 Update dist-cores.sh 2019-11-12 14:55:37 +01:00
twinaphex 3a552e08ff Fix dist-cores.sh 2019-11-12 14:54:21 +01:00
Rinnegatamante 1533d618e5 [VITA] Allow usage of null context with gl1. 2019-11-12 13:50:14 +01:00
Rinnegatamante 6394342b9c [VITA] Add gl1 video driver support through vitaGL. 2019-11-12 11:54:00 +01:00
Weedy Weed Smoker 9c27f0e7c3 Update french language with the latest additions 2019-11-12 12:06:25 +07:00
twinaphex a0486c3cd7 Revert "Simplify slang_process.cpp"
This reverts commit 25a417cdd7.
2019-11-12 01:34:03 +01:00
Twinaphex 4cca0c1eb7 Merge pull request #9709 from Tatsuya79/patch-1
French translation fix
2019-11-11 19:58:40 +01:00
Tatsuya79 a75491375c French translation fix 2019-11-11 19:34:36 +01:00
Twinaphex d31dcbed81 Merge pull request #9708 from jdgleaver/glui-thumb-tweaks
(GLUI) Minor thumbnail improvements
2019-11-11 19:20:35 +01:00
twinaphex 25a417cdd7 Simplify slang_process.cpp 2019-11-11 18:55:33 +01:00
jdgleaver df6d65e061 (GLUI) Minor thumbnail improvements 2019-11-11 16:30:42 +00:00
Twinaphex 95f68b0625 Update CHANGES.md 2019-11-11 15:47:53 +01:00
Twinaphex f9f7092370 Update CHANGES.md 2019-11-11 15:47:44 +01:00
Twinaphex 9e2ac1100c Merge pull request #9701 from WeedyWeedSmoker/French-translation-update
Update the french translation
2019-11-11 15:46:16 +01:00
twinaphex 8f492adac3 Fix some errors 2019-11-11 15:05:18 +01:00
twinaphex 0a4795f6d5 Rewrite dist-cores.sh - make it so that we don't exit out of the entire
script when a core fails to compile
2019-11-11 15:03:49 +01:00
Twinaphex 8a26931622 Update CHANGES.md 2019-11-11 14:20:07 +01:00
Twinaphex 52db3779c7 Merge pull request #9706 from Jamiras/cheevos_unsupported
(cheevos) display Unofficial and Unsupported achievement states
2019-11-11 14:19:36 +01:00
Jamiras 84de1ce2f2 display Unofficial and Unsupported achievement states 2019-11-10 19:48:46 -07:00
twinaphex 6443169bac Desktop Menu - hide 'Online Updater' if HAVE_ONLINE_UPDATER is not
defined
2019-11-11 02:06:33 +01:00
twinaphex 08ce33eed0 Add HAVE_ONLINE_UPDATER 2019-11-11 00:22:03 +01:00
Weedy Weed Smoker 1fc1a48bfe Ready to merge! 2019-11-11 06:21:49 +07:00
Weedy Weed Smoker e4bcfa6a2a Missed one translation! Done... 2019-11-11 06:15:31 +07:00
twinaphex cf586b7273 Hide Core Updater properly 2019-11-10 18:12:23 +01:00
twinaphex bc657778fe Add HAVE_UPDATE_CORES - by running ./configure --disable-update_cores
you can strip out the Online Core Updater
2019-11-10 15:55:39 +01:00
Weedy Weed Smoker ad5874b94d Clarify a sublabel... 2019-11-10 04:01:09 +07:00
Weedy Weed Smoker 0e6f33103a Add the new dual-thumbnail option from the US file 2019-11-10 03:54:07 +07:00
twinaphex 455982da91 Silence warning 2019-11-09 18:01:13 +01:00
twinaphex 0c83d2a7cf (Libnx) RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT - return false for libnx 2019-11-09 17:29:49 +01:00
twinaphex dbd1e70410 RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT - turn this off for now
for Switch
2019-11-09 17:16:29 +01:00
Twinaphex c62af7dc49 Merge pull request #9700 from jdgleaver/glui-dual-thumbs
(GLUI) Add dual thumbnail support
2019-11-09 15:19:21 +01:00
Weedy Weed Smoker 946713100a Add english back to the "cutie" color themes 2019-11-09 12:28:19 +07:00
Weedy Weed Smoker a3aef0f3f5 Use the "cutie" reference instead of a translation 2019-11-09 12:26:26 +07:00
Weedy Weed Smoker f3506054a1 Add a plural for the thumbnails... 2019-11-09 07:04:25 +07:00
Weedy Weed Smoker a5f1e9f817 Add a translation for "sunbeam"... 2019-11-09 01:28:59 +07:00
Weedy Weed Smoker ff03272e07 Update the french translation
with the latest additions in the US file!
2019-11-09 01:22:32 +07:00
jdgleaver bba454207e (GLUI) Add dual thumbnail support 2019-11-08 16:45:46 +00:00
Twinaphex f2898f4404 Merge pull request #9697 from BarryJRowe/master
Added fix for ai service overlay still showing when opening the menu.
2019-11-07 23:29:41 +01:00
Barry Rowe a247ee14cd Added fix for ai service overlay still showing when opening the menu. 2019-11-06 09:52:26 -08:00
Ömercan Kömür 42a85938e7 Update msg_hash_tr.h 2019-11-05 23:37:15 +03:00
Twinaphex 4d6555d58b Update CHANGES.md 2019-11-05 17:42:23 +01:00
Twinaphex 0493ecc7a6 Merge pull request #9687 from Jamiras/cheevos_user_agent
(cheevos) pass RetroArch and core versions through User-Agent HTTP header
2019-11-05 17:42:05 +01:00
Twinaphex 44219c00aa Update CHANGES.md 2019-11-05 17:41:33 +01:00
Twinaphex 545996f52e Merge pull request #9693 from altiereslima/master
Update Portuguese Brazilian translation
2019-11-05 17:41:04 +01:00
Twinaphex 16e7fe41dc Update CHANGES.md 2019-11-05 17:40:43 +01:00
Twinaphex 4a4b76111f Merge pull request #9692 from jdgleaver/glui-scroll-fix
(GLUI) Halt scrolling when pointer is pressed/stationary
2019-11-05 17:40:16 +01:00
Twinaphex 38716b518c Merge pull request #9688 from yoshisuga/ios_tvos_update_1_8_1
iOS/tvOS: update default assets.zip to show functional UI on startup;…
2019-11-05 17:02:51 +01:00
altiereslima a28bbf5d14 Update Portuguese Brazilian translation 2019-11-05 11:26:30 -03:00
jdgleaver 6afd684ae5 (GLUI) Halt scrolling when pointer is pressed/stationary 2019-11-05 12:23:09 +00:00
Ömercan Kömür ab56aca3ef Update msg_hash_tr.h
missing text added and translated
missing texts translated
2019-11-05 04:13:34 +03:00
Yoshi Sugawara 7e6ce4e279 iOS/tvOS: update default assets.zip to show functional UI on startup; update version to 1.8.1 2019-11-03 13:40:14 -10:00
Jamiras 67e9fba9d7 generate User-Agent for retroachievement API calls 2019-11-02 21:52:30 -06:00
Ömercan Kömür d326828fd6 Update msg_hash_tr.h
Missing texts translated to Turkish language
2019-11-02 18:00:29 +03:00
Ömercan Kömür 82b31c12c1 Flux
New RGUI Theme
2019-11-02 17:33:51 +03:00
twinaphex bfdc8e6a62 Bump up to 1.8.1 2019-11-02 12:17:03 +01:00
Twinaphex 078961648f Update CHANGES.md 2019-11-02 12:12:00 +01:00
Twinaphex 044851f608 Merge pull request #9616 from fpscan/master
New XMB Menu Color Theme: Sunbeam
2019-11-02 12:07:35 +01:00
Twinaphex dc696ab112 Merge pull request #9679 from IlDucci/master
Small typo correction and adding latest changes on msg_hash_es.h
2019-11-02 10:19:02 +01:00
IlDucci ec4f49d860 Fixed formatting issues with rgui
- Major formatting proofread to ensure no help screen goes past the hard character limits of rgui UI.
 - Tweaked the writing of some dialogues.
2019-11-02 00:00:27 +01:00
IlDucci 73e3620d20 Update msg_hash_es.h
- Fixed a missing accent in "English" language.
 - Translated the latest additions for the thumbnail views.
 - Replaced "landscape" and "portrait" with the extended translation in Spanish: "horizontal" and "vertical".
2019-11-01 22:31:02 +01:00
Twinaphex 112483e824 Turn on 'network on demand thumbnails' for Android/iOS 2019-11-01 20:29:22 +01:00
Twinaphex 36f13e0520 Update CHANGES.md 2019-11-01 20:20:21 +01:00
Twinaphex f0aafce88b Update CHANGES.md 2019-11-01 20:17:16 +01:00
Twinaphex e9643d189b Merge pull request #9659 from DEX357/patch-45
Update msg_hash_pl.h
2019-11-01 20:13:59 +01:00
Twinaphex 79b2b098b1 Update CHANGES.md 2019-11-01 20:13:19 +01:00
Twinaphex e60f72388e Merge pull request #9662 from IlDucci/master
Spanish language revision and update
2019-11-01 20:12:19 +01:00
Twinaphex 26f1e8be95 Merge pull request #9678 from jdgleaver/glui-scroll-position
(GLUI) Fix scroll position calculation
2019-11-01 19:04:27 +01:00
jdgleaver 697d16dd01 (GLUI) Fix scroll position calculation 2019-11-01 17:04:49 +00:00
orbea 841b3d620f travis: Log configure arguments + use before_script. 2019-11-01 09:41:38 -07:00
orbea b427f44908 qb: Update configure checks to print the check before the result.
This is very helpful for debugging in case the check just exits or hangs
unexpectingly.
2019-11-01 09:02:01 -07:00
orbea 98de418b7a qb: Improve the windres check. 2019-11-01 09:01:38 -07:00
orbea 8fc4a788e1 qb: Make the pkgconfig check more simple pt. 2: 2019-11-01 08:38:52 -07:00
orbea b590d0a219 qb: Print ... earlier.
Its better if the ... is printed before the check in case of unexpected
errors where it will look better.
2019-11-01 08:37:27 -07:00
Twinaphex eb2a881d55 Merge pull request #9675 from jdgleaver/glui-thumb-fix
(GLUI) Fix node height bug when showing thumbnails + set new default thumbnail view modes
2019-11-01 12:49:13 +01:00
jdgleaver b8d6e1d2c3 (GLUI) Fix node height bug when showing thumbnails + set new default thumbnail view modes 2019-11-01 11:13:34 +00:00
Twinaphex 72d416d5f2 Merge pull request #9672 from orbea/pkgconf
qb: Make the pkgconfig check more simple.
2019-11-01 11:21:48 +01:00
orbea 98b04b99dc qb: Remove deprecated arguments.
Please use --bindir, --mandir and --sysconfdir now.
2019-10-31 22:53:52 -07:00
orbea 14e159decf qb: Make the pkgconfig check more simple. 2019-10-31 22:36:04 -07:00
Twinaphex 8809932b49 Merge pull request #9670 from jdgleaver/glui-thumbs
(GLUI) Add initial thumbnail support
2019-11-01 01:55:35 +01:00
Twinaphex 5a9f435863 Update CHANGES.md 2019-10-31 18:40:49 +01:00
Twinaphex 72a087384b Merge pull request #9667 from Rinnegatamante/master
[VITA] Added accelerometer and gyroscope support.
2019-10-31 18:40:12 +01:00
jdgleaver c356969c3a (GLUI) Add initial thumbnail support 2019-10-31 17:25:55 +00:00
IlDucci 9ba48d8a4e Fixed some nesting problems. 2019-10-31 18:09:45 +01:00
IlDucci 01bf1c9710 Removing some unknown leftover. I'm not sure what else is left to do. 2019-10-31 17:28:33 +01:00
IlDucci 370c28f0d4 Added a missing component for the C89 workarounds. 2019-10-31 15:20:57 +01:00
IlDucci c10175030f Update msg_hash_es.c 2019-10-31 15:11:46 +01:00
IlDucci 3a8e58ada4 Copypasted fixes from French to solve two strings being too long for the C89 compiler.
Also tweaked some spaces before the "\n" code.
2019-10-31 15:11:31 +01:00
IlDucci d915787c9c Update msg_hash_es.c
Removing an extra "%s" in the virtual controller overlay.
2019-10-31 14:43:13 +01:00
IlDucci 7d5e24806c Adding first batch of fixes 2019-10-31 14:31:17 +01:00
IlDucci ee39d62031 Update to the Spanish revision/overhaul
- Fixed an instance where the term "peer" wasn't using the extended term (cliente).
 - Fixed the ordering of Dynamic Audio Rate Control.
 - Added a translation for the term "frame time".
 - Added the missing revision/proofread of the help messages.
 - Translated the missing help messages.
 - Did a quick cleanup of unneeded line jumps.
2019-10-31 13:59:36 +01:00
Rinnegatamante 064f821cf0 [VITA] Added accelerometer and gyroscope support. 2019-10-31 09:33:16 +01:00
Ömercan Kömür 9a3512df31 Revert "Delete msg_hash_fr.h"
This reverts commit fad8a0f29c.
2019-10-31 04:34:56 +03:00
Ömercan Kömür fad8a0f29c Delete msg_hash_fr.h 2019-10-31 04:23:16 +03:00
Ömercan Kömür 7021a4909e Merge branch 'master' into master 2019-10-31 04:22:33 +03:00
twinaphex d4b7be4ae4 Update libretro-common 2019-10-31 01:25:27 +01:00
twinaphex eb77d84716 Update libretro-common 2019-10-31 01:02:01 +01:00
hizzlekizzle 5639b3ebbd Merge pull request #9664 from alphanu1/master
Fixes for RPI
2019-10-30 14:33:07 -05:00
twinaphex d215d3ff44 Add HAVE_LIBNX conditional 2019-10-30 13:28:04 +01:00
alphanu1 a488876a6a Added missing argument to function (#2) 2019-10-30 08:43:51 +00:00
alphanu1 9c0f4c737e Fixes for RPI (#1)
New Raspberry Pi porch and aspect ratio generation. Added code to fix X offset for Raspberry Pi.
2019-10-30 08:34:02 +00:00
IlDucci 1f56d944ae Spanish language revision and update
Hello there, this is a large update and proofread for RetroArch's Spanish translation.

I have done the following changes:
 - Translated the new strings.
 - Unified the tenses being used for menu entry labels and sublabels (There was a mix of tenses all over the place, so I've decided for now to use infinitive for labels and present's second person in singular for starting sublabels).
 - Unified many terms that were translated in more than one way (frames, for example, had frames and fotogramas all around).
 - Added many missing trailing periods at sublabels and what I think are OSD notifications.
 - Fixed a metric ton of missing accents.
 - Added rewrites on some translations.
 - Updated translations wherever the English texts had substantial changes.

There's one thing that I might have mixed, and that's the Spanish region that the line's being directed. Back when I started this translation, I followed the European Spanish expressions and verbal tenses, but it seems there's been a deviation since then into Latin American Spanish's expressions and verbal usage (video/indice instead of vídeo/índice, encontró instead of ha encontrado... Not sure if it's actually an attempt to do Neutral Spanish).

A decision has to be made about this (Either try to go with Neutral or split the translation into European Spanish and Latin American. I'd personally go with the latter).
2019-10-29 23:12:06 +01:00
twinaphex 7dbd46c978 Add missing header 2019-10-29 21:21:48 +01:00
Twinaphex b854201bc1 Merge pull request #9649 from BarryJRowe/master
AI Service overlay.
2019-10-29 20:53:57 +01:00
Twinaphex 0719f9861c Merge pull request #9657 from p-sam/switch-input-sensor
(Switch) input driver sensor
2019-10-29 20:53:44 +01:00
hizzlekizzle d15f8e0dc5 Merge pull request #9654 from Tatsuya79/master
Cutie, Virtual Boy themes for glui.
2019-10-29 12:02:29 -05:00
DEX357 86a7e500e9 Update msg_hash_pl.h 2019-10-29 16:40:46 +01:00
Barry Rowe d641e67876 AI Service overlay. 2019-10-28 16:48:05 -07:00
Tatsuya79 eb72061b27 Cutie, Virtual Boy themes for glui. 2019-10-29 00:24:34 +01:00
Twinaphex b64289bd5f Merge pull request #9638 from Jamiras/cheevos_pce_cd
(cheevos) update PCEngine-CD hash algorithm
2019-10-28 20:54:05 +01:00
Twinaphex b3df81e791 Update CHANGES.md 2019-10-28 20:53:59 +01:00
Twinaphex eae8470dce Merge pull request #9631 from DEX357/patch-43
Update msg_hash_pl.h
2019-10-28 20:52:12 +01:00
Twinaphex 6456b5dcb1 Merge pull request #9647 from DEX357/patch-44
Update msg_hash_pl.h
2019-10-28 20:49:42 +01:00
Twinaphex 2ebf1a2c67 Merge pull request #9642 from WeedyWeedSmoker/French-translation-update
Update french translation and unifies formatting
2019-10-28 20:22:02 +01:00
Twinaphex 640a2b8991 Merge pull request #9653 from jdgleaver/mali-rotation-fix
Fix menu rendering with Mali GPUs after changing video dimensions
2019-10-28 20:21:49 +01:00
jdgleaver 6b4d76fc26 (GLUI) Minor bug fixes (#9646) 2019-10-28 20:21:37 +01:00
p-sam 49b87724eb (Switch) Implement driver sensor interface 2019-10-28 16:36:46 +00:00
p-sam f7f0499601 Fix mixed indentation 2019-10-28 16:36:46 +00:00
p-sam 0e79aa80d9 wip: merge libretro-common 2019-10-28 16:36:46 +00:00
jdgleaver c9b8164b0c Fix menu rendering with Mali GPUs after changing video dimensions 2019-10-28 14:42:48 +00:00
DEX357 1436dcfb30 Update msg_hash_pl.h 2019-10-27 17:17:54 +01:00
Weedy Weed Smoker 1ccd4d56fa Last typo fixed 2019-10-27 02:05:35 +01:00
Weedy Weed Smoker a4f0176089 Last typos fixed 2019-10-27 02:04:15 +01:00
Weedy Weed Smoker 4a76399583 Remove 2 duplicate entries, this can now be merged 2019-10-27 02:50:00 +02:00
Weedy Weed Smoker 5e2f0428c7 Delete remaining trailing spaces 2019-10-27 02:38:30 +02:00
Weedy Weed Smoker 8d4d69e218 Update french translation and unifies formatting
Update french translation on par with the english files, and unifies formatting...
2019-10-27 02:07:27 +02:00
twinaphex 14f8ee1e40 Update CHANGES.md 2019-10-26 22:03:48 +02:00
Jamiras 0615d655af fix travis error 2019-10-25 20:20:00 -06:00
jdgleaver 45deb2c218 (GLUI) Improve tab icon colours for 'Dark Blue' theme (#9636) 2019-10-25 18:58:45 +02:00
jdgleaver 1194b29c12 (GLUI) Navigation bar improvements (#9635) 2019-10-25 18:28:36 +02:00
Twinaphex b56551e978 Update version.all 2019-10-25 17:09:25 +02:00
twinaphex 32c2ae8278 Bump up version 2019-10-25 16:32:55 +02:00
Jamiras 0b92224c36 update PCEngine-CD hash algorithm; pregap cdfs support for CUE and CHD files 2019-10-24 18:46:43 -06:00
rz5 a723a833a8 (video_driver_frame) Cache frame before converting 0RGB1555 (#9629)
* (video_driver_frame) Don't convert 0RGB1555 when menu is active

Fixes the color cycling that happens when the menu is up and the core's internal pixel format is 0RGB1555.

This happened because video_driver_scaler would keep converting from 0RGB1555 to RGB565, even when the core was paused.

* Update retroarch.c

* Update retroarch.c
2019-10-25 02:15:07 +02:00
twinaphex c78a0da045 Disable this setting 2019-10-24 02:45:05 +02:00
Twinaphex bf122a33e6 Merge pull request #9630 from jdgleaver/glui-updates
(GLUI) Menu improvements (Round 3)
2019-10-24 02:03:26 +02:00
DEX357 37ea3d0cee Update msg_hash_pl.h 2019-10-23 19:43:18 +02:00
jdgleaver 3734ccbcc0 (GLUI) Menu improvements (Round 3) 2019-10-23 15:46:28 +01:00
twinaphex 362b76fd74 Update sthread_get_current_thread_id 2019-10-21 14:01:09 +02:00
twinaphex e968dd85e2 Implement sthread_get_thread_id (functional equivalent for
SDL_GetThreadId) and sthread_get_current_thread_id (functional
equivalent
for SDL_ThreadID)
2019-10-20 23:55:19 +02:00
twinaphex d51b32f662 Implement AI Service Pause 2019-10-19 20:53:17 +02:00
twinaphex 4e78375340 Update AI Service Mode sublabel 2019-10-19 20:39:54 +02:00
twinaphex 1bab26dc3d Add sublabel 2019-10-19 18:58:34 +02:00
twinaphex f678a06b95 Remove xbox 360 fonts 2019-10-19 16:42:39 +02:00
Ömercan Kömür ef464d9785 New XMB Menu Color Theme: Sunbeam 2019-10-19 14:50:58 +03:00
Twinaphex 682775ba83 Merge pull request #9614 from Rinnegatamante/videodrivers_yet_another
Implement the driver switch enable setting.
2019-10-19 00:29:20 +02:00
Rinnegatamante 24c798f550 Implement the driver switch enable setting. 2019-10-18 23:39:13 +02:00
twinaphex 73c853def4 Add setting 'Driver Switch Enable' - not hooked up yet 2019-10-18 23:03:29 +02:00
Twinaphex 38600f4cf3 Merge pull request #9611 from Rinnegatamante/videodrivers4
Re-initializing menu display driver even when widgets are not supported.
2019-10-18 20:54:29 +02:00
Ömercan Kömür e24ee95558 Merge pull request #1 from libretro/master
updates
2019-10-18 21:22:17 +03:00
Rinnegatamante 3cfde6cc45 Re-initializing menu display driver even when widgets are not supported. 2019-10-18 19:58:37 +02:00
Twinaphex 1c8d147d7c Merge pull request #9610 from jdgleaver/glui-refactors
(GLUI) Menu improvements (Round 2)
2019-10-18 19:27:11 +02:00
jdgleaver 37d12c3859 (GLUI) Menu improvements (Round 2) 2019-10-18 17:56:43 +01:00
Twinaphex 8283092367 Merge pull request #9609 from Tatsuya79/master
Add Ozone Dark theme to glui.
2019-10-18 12:53:33 +02:00
Tatsuya79 ed7c3dcff4 Add Ozone Dark theme to glui. 2019-10-17 18:14:48 +02:00
twinaphex 836fb17d0d (libretro-common) Update libretro-common 2019-10-17 01:48:41 +02:00
Twinaphex 564eb6a4a0 Update CHANGES.md 2019-10-17 01:19:25 +02:00
twinaphex 969ed176d6 Update CHANGES.md 2019-10-17 01:11:04 +02:00
twinaphex 8e2be92c72 Fix crash when setting thumbnail directory 2019-10-17 01:07:19 +02:00
Twinaphex f9d9dc8adb Merge pull request #9605 from p-sam/libnx-audren-default
(Switch) Make the audren threaded audio driver default
2019-10-16 20:22:37 +02:00
Twinaphex a127d2bf48 Merge pull request #9607 from jdgleaver/glui-colours
(GLUI) Menu improvements (Round 1)
2019-10-16 19:06:00 +02:00
Twinaphex 5fca67974d Merge pull request #9606 from Rinnegatamante/xrevert
Revert to old x context.
2019-10-16 18:54:45 +02:00
Rinnegatamante 02c35441d6 Revert to old x context. 2019-10-16 18:29:17 +02:00
jdgleaver 10d652a9f7 (GLUI) Menu improvements (round 1) 2019-10-16 17:17:49 +01:00
p-sam 77069b7299 (Switch) Make the audren threaded audio driver default 2019-10-16 15:43:26 +00:00
Twinaphex e34fdedfb4 Merge pull request #9601 from orbea/qb_die
qb: Update the die function.
2019-10-16 15:08:17 +02:00
Twinaphex dea603dcc1 Merge pull request #9602 from Rinnegatamante/videodrivers3
Fix for cached driver not restoring back with vulkan override
2019-10-16 15:08:03 +02:00
Rinnegatamante 011078f991 Fix for cached driver not restoring back to old one with vulkan override. 2019-10-16 14:31:56 +02:00
orbea d0442f4468 qb: Update the die function. 2019-10-15 19:29:29 -07:00
Twinaphex 615c581cd2 Merge pull request #9600 from fjtrujy/psp/CleanUp
PSP1 Some improvements
2019-10-16 01:06:49 +02:00
Francisco Javier Trujillo Mata fd75ae487e Disable the duplication FPS in PSP 2019-10-16 00:46:29 +02:00
Francisco Javier Trujillo Mata c2c3ed6a76 Make logs works again for PSP 2019-10-16 00:46:14 +02:00
Twinaphex 4ac264b1d0 Merge pull request #9591 from Rinnegatamante/videodrivers2
Graceful switching between videodrivers #2.
2019-10-15 22:49:17 +02:00
Twinaphex 65935696c3 Merge pull request #9598 from orbea/travis
travis: Try to fix xcode10.1.
2019-10-15 21:20:47 +02:00
Rinnegatamante 4d9fb951df Make code C90 compliant. 2019-10-15 19:31:27 +02:00
Twinaphex 836aa69f9c Merge pull request #9597 from orbea/wayland
Fix build when SDL2 is not built against wayland.
2019-10-15 19:28:00 +02:00
orbea 253f770259 travis: Try to fix xcode10.1.
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- active_support/core_ext/object/blank (LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Homebrew/Library/Homebrew/global.rb:12:in `<top (required)>'
	from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `require_relative'
	from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `<main>'

The command "brew install --force-bottle qt5" exited with 1.

Source: https://stackoverflow.com/questions/54888582/ruby-cannot-load-such-file-active-support-core-ext-object-blank
2019-10-15 09:48:07 -07:00
Twinaphex 50fbf04df5 Merge pull request #9596 from orbea/networking
Remove redundant conditionals.
2019-10-15 18:36:38 +02:00
orbea 55d123d95a Fix build when SDL2 is not built against wayland.
Fixes https://github.com/libretro/RetroArch/issues/9583.
2019-10-15 09:10:18 -07:00
Rinnegatamante 7fee4ad11b Update libretro-common. 2019-10-15 17:43:50 +02:00
orbea 14308e0b98 Remove redundant conditionals.
HAVE_NETWORK_CMD should never be true when HAVE_NETWORKING is
false.
2019-10-15 08:15:37 -07:00
Twinaphex 6b93b77d0d Merge pull request #9595 from orbea/networking
qb: Fix --disable-networking.
2019-10-15 16:52:44 +02:00
orbea 70fd455b13 qb: Fix --disable-networking.
Fixes https://github.com/libretro/RetroArch/issues/9580.
2019-10-15 07:37:24 -07:00
Rinnegatamante 839747f420 Added RETRO_ENVIRONMENT_GET_PREFERRED_HW_RENDER. 2019-10-15 14:53:10 +02:00
Rinnegatamante d1a74e1b96 Fix for crash on Linux. 2019-10-15 09:07:15 +02:00
twinaphex 89e9bdc413 Buildfix 2019-10-14 01:35:04 +02:00
Twinaphex 87d0bce799 Update FUNDING.yml 2019-10-14 01:33:37 +02:00
twinaphex b29fbbb587 Update CHANGES.md and add another travis target 2019-10-14 00:38:47 +02:00
twinaphex f983519589 Enable HAVE_VIDEO_LAYOUT for OSX/Switch/iOS/Android 2019-10-14 00:36:58 +02:00
twinaphex 4fbf823707 Enable HAVE_VIDEO_LAYOUT by default 2019-10-14 00:31:44 +02:00
Rinnegatamante 26b0bc771d Add vulkan context logging. 2019-10-13 17:47:08 +02:00
Twinaphex 0eff23eeed Update CHANGES.md 2019-10-12 14:54:04 +02:00
Twinaphex 97f0357407 Update CHANGES.md 2019-10-12 14:52:33 +02:00
Twinaphex 92272fe01e Merge pull request #9556 from ToKe79/lakka_wifi_ap
[Lakka] Wi-Fi Access Point in RetroArch Settings
2019-10-12 14:52:12 +02:00
Twinaphex 52c73e6382 Update CHANGES.md 2019-10-12 14:50:22 +02:00
Twinaphex b26a031ca8 Update CHANGES.md 2019-10-12 14:49:18 +02:00
Twinaphex 5309036463 Update CHANGES.md 2019-10-12 14:48:29 +02:00
Twinaphex ca78e1c2bf Update CHANGES.md 2019-10-12 14:47:56 +02:00
Twinaphex 5340387164 Merge pull request #9584 from jdgleaver/menu-scaling
(GLUI) Menu scaling improvements
2019-10-12 14:46:36 +02:00
Twinaphex 912fb252c6 Merge pull request #9589 from Tatsuya79/patch-3
always show advanced sync options in Qt
2019-10-12 14:37:16 +02:00
Tatsuya79 1907deb8de show advanced latency options 2019-10-12 14:26:22 +02:00
Tatsuya79 042783af21 always show advanced sync options 2019-10-12 14:25:02 +02:00
Twinaphex 7bed40d17b Merge pull request #9547 from Rinnegatamante/videodrivers
Graceful switch between video drivers.
2019-10-12 14:21:33 +02:00
Rinnegatamante ff726d212c Fix for video driver config overwrite when video driver was forced by core on exit. 2019-10-11 15:15:18 +02:00
jdgleaver d6d0bb5e4e (GLUI) Add menu scaling workaround for Mac platforms (DPI requests currently cause crashes on Mac) 2019-10-11 13:31:00 +01:00
Twinaphex 2fe4cf6ca5 Merge pull request #9586 from JoeOsborn/patch-1
Fix BSV recording/playback
2019-10-11 13:54:13 +02:00
Joe Osborn ef0eba5c5f Fix BSV recording/playback
Inputs are 16-bit numbers, but the file writing routines were called with just one byte lengths.  This change fixes BSV recording and playback for me.
2019-10-11 07:37:58 -04:00
Rinnegatamante 77d185ba8b Fix video submenu not updating when a driver swap happens.
Thanks to jdgleaver for this.
2019-10-11 13:05:32 +02:00
jdgleaver e47e055508 (GLUI) Menu scaling improvements 2019-10-10 10:01:46 +01:00
Twinaphex 7afbd4632d Merge pull request #9582 from BarryJRowe/master
Added in fix for bmp returns to ai service.  Added in label passing to ai endpoint.
2019-10-09 22:58:23 +02:00
twinaphex cb576b1b95 Move include headers to rglgen_private_headers.h 2019-10-09 22:12:14 +02:00
Barry Rowe 778571e3d0 Added in fix for bmp returns to ai service. Added in label passing to
ai service call.
2019-10-09 12:41:31 -07:00
Twinaphex 9144583fdb Merge pull request #9576 from natinusala/fast-forward-osd
osd: fix fast forward indicator
2019-10-08 15:31:19 +02:00
natinusala e394b439a8 osd: fix fast forward indicator 2019-10-08 10:42:13 +02:00
Twinaphex b12d1d7d8a Merge pull request #9575 from RobLoach/fix/RobLoach/9514--title
Fix window title missing space
2019-10-08 04:26:04 +02:00
Rob Loach c41e2218f7 Fix minus character 2019-10-07 22:16:50 -04:00
Rob Loach f7dba5d331 Fix window title missing space 2019-10-07 22:15:07 -04:00
Twinaphex 4dcd7a0247 Update CHANGES.md 2019-10-07 05:29:59 +02:00
Twinaphex 956d08e9bc Update CHANGES.md 2019-10-07 05:29:19 +02:00
twinaphex 9fe72bfa7b Change this back to how it was before 2019-10-07 05:28:00 +02:00
Twinaphex b6eb048a12 Merge pull request #9560 from mrjschulte/patch-5
iOS - Update project.pbxproj to use 11.0 for all Deployment Targets.
2019-10-07 02:05:19 +02:00
Twinaphex 875ff0e28c Merge pull request #9563 from yoshisuga/fix-main-thread-call
iOS: #9562: wrap call to get app delegate around a gcd main thread async call
2019-10-07 02:05:01 +02:00
Yoshi Sugawara 2b415292c6 iOS: #9562: wrap call to get app delegate around a gcd main thread async call 2019-10-06 09:41:53 -10:00
Twinaphex 0f55f8f12b Silence warning 2019-10-06 21:24:41 +02:00
MrJs 41d3dfc591 Update project.pbxproj
Bump Optimization level to -0s for Release builds
2019-10-06 10:25:34 -07:00
MrJs a02245ade2 Update project.pbxproj
update remaining iOS deployment targets to 11.0
2019-10-06 10:18:49 -07:00
Twinaphex f0bfdbf209 Add header to prevent build failures 2019-10-06 03:43:49 +02:00
Twinaphex 2d769d4bfb Merge pull request #9558 from justinweiss/ctr-gfx-fix-flickering-with-osd
Fix 3DS screen flickering when OSD is enabled
2019-10-06 03:39:23 +02:00
Justin Weiss 64dc3dde40 Fix 3DS screen flickering when OSD is enabled
On the 3DS, for some cores, the screen will flicker if OSD is enabled,
and sometimes when going in and out of the menu.

As far as I can tell, this happens when a frame is dup'd, and we send
0x0 as the frame to the gfx driver. When that happens, we still draw
the OSD, using a vertex shader to transform and render it at the right
size.

When the frame is 0x0, though, the vertex shader uniforms are never
_reset_ to redraw the previous frame, so it's drawn with different
params, and gets drawn the wrong size. It will draw as the correct
size when the correct vertex shader uniforms are set, and the
incorrect size when the incorrect uniforms are set, causing
flickering.

At least, that's what I think is happening. Forcing the vertex shader
to be set regardless of whether the frame data is set fixes it, at
least during some light testing with PCSX.
2019-10-05 14:21:42 -07:00
Twinaphex 385dfdd33d Merge pull request #9557 from yoshisuga/ios-tvos-1-7-9
[iOS/tvOS]: Set version to 1.7.9, Xcode 11 project update
2019-10-05 22:48:58 +02:00
Yoshi Sugawara 777b0a33c3 Set version to 1.7.9, Xcode 11 project update 2019-10-05 10:19:18 -10:00
Twinaphex f8f29fbccf Update CHANGES.md 2019-10-05 19:31:43 +02:00
twinaphex fb6a2ef746 Turn menu_horizontal_animation into macro and actually use it for
default value
2019-10-05 19:11:59 +02:00
twinaphex 7969221919 Remove two unused variables 2019-10-05 19:08:57 +02:00
twinaphex 918b0619d0 (Travis) Add disable audio mixer target 2019-10-05 19:02:29 +02:00
twinaphex 0da68dacf5 Silence unused variable warning 2019-10-05 19:01:05 +02:00
twinaphex 4cf27651ba (Cocoa defines) Guarantee backwards compatibility 2019-10-05 18:58:15 +02:00
twinaphex 7e9e330e99 Add another HAVE_AUDIOMIXER ifdef - use string_is_equal instead
of strcmp
2019-10-05 18:50:28 +02:00
twinaphex 7175c3ec22 FIx another 'may be used uninitialized' warning 2019-10-05 18:43:25 +02:00
twinaphex 221df13250 Cleanups/warning fixes - compilation fix for OSX PPC 2019-10-05 18:38:17 +02:00
Tomas Kelemen (vudiq) 7b4c4efd11 Wi-Fi Access Point in RetroArch Settings
Adds an option to start wireless access point directly from RetroArch
settings menu (Services submenu). This wireless access point can be then
used for local netplay. If not defined in a specific config file
(LAKKA_LOCALAP_PATH), the arbitrary values for SSID/PassKey of the
created access point are LakkaAccessPoint/RetroArch. The menu/option is
added only in case when compiling with HAVE_LAKKA.
2019-10-05 13:18:15 +02:00
Rinnegatamante d18ae6dac6 Removed unused MSG_INCOMPATIBLE_CORE_FOR_VIDEO_DRIVER. 2019-10-05 10:16:48 +02:00
Rinnegatamante b6e6b78843 Properly changing video driver name in settings when a core forces one. 2019-10-04 19:45:49 +02:00
Rinnegatamante eed65a64b2 Removing no more required video context capabilities check at content_load time. 2019-10-04 19:25:05 +02:00
twinaphex 908974dfe4 (Android) Bump up version 2019-10-04 18:16:19 +02:00
Twinaphex 904f0e65e5 Update CHANGES.md 2019-10-04 18:14:45 +02:00
twinaphex 51722b628c Revert "Change detection around for coreaudio3"
This reverts commit 28ab397d60.
2019-10-04 18:13:58 +02:00
twinaphex 28ab397d60 Change detection around for coreaudio3 2019-10-04 18:10:50 +02:00
twinaphex 8a06263ba6 Fix regression with 'Set Core Association' and leave a TODO/FIXME note 2019-10-04 17:41:03 +02:00
Twinaphex 811138221a Fix unused variable warning 2019-10-04 17:34:46 +02:00
twinaphex daa30b1dc8 Use old DPI scaling for now on desktop until we have devised a good solution 2019-10-04 17:27:14 +02:00
Twinaphex d2ec1ba2cc Update CHANGES.md 2019-10-04 17:08:01 +02:00
Twinaphex 6467d24070 Merge pull request #9548 from fjtrujy/ps2MemoryLeaks
[PS2] Fix memory leaks in Font and GFX Driver
2019-10-04 17:07:35 +02:00
Francisco Javier Trujillo Mata eebe0eda48 Disable BUILD_FOR_PCSX2 by default 2019-10-04 16:12:43 +02:00
Twinaphex 419eb5a6c0 Remove unused variables 2019-10-04 16:06:34 +02:00
Twinaphex 0cd1843bc2 Merge pull request #9554 from Rinnegatamante/debug
[VITA] Added debug symbols usage.
2019-10-04 15:29:02 +02:00
Rinnegatamante 8066a6938f [VITA] Added debug symbols usage. 2019-10-04 15:21:37 +02:00
Twinaphex 16a5a69bae Update CHANGES.md 2019-10-04 14:41:47 +02:00
twinaphex eed44eea9c Cache this string too 2019-10-04 14:27:09 +02:00
twinaphex 1788042c9e (Android) dpi_get_density - cache one variable to avoid excessive
system_property_get querying
2019-10-04 14:22:10 +02:00
Twinaphex bf95fa34da Merge pull request #9552 from Rinnegatamante/mem
[VITA] Memory related improvements
2019-10-04 13:54:02 +02:00
Twinaphex 32f7d73835 Merge pull request #9553 from jdgleaver/overlay-auto-rotate
Add option to automatically rotate overlays
2019-10-04 13:53:55 +02:00
Twinaphex 88e56faafa Merge pull request #9551 from jdgleaver/glui-gestures
(GLUI) Add initial gesture support + bug fixes
2019-10-04 13:26:40 +02:00
jdgleaver 1df3e20bdd Add option to automatically rotate overlays 2019-10-04 12:15:57 +01:00
Rinnegatamante 6a5af218c7 [VITA] Implement get_mem_total/free for the frontend. 2019-10-04 12:12:14 +02:00
Rinnegatamante b3316fea35 [VITA] Make newlib heap allocation dynamic. 2019-10-04 12:11:52 +02:00
jdgleaver db030f6472 (GLUI) Add initial gesture support + bug fixes 2019-10-04 09:33:15 +01:00
Francisco Javier Trujillo Mata c48ccdb1fc Fix memory leak in the PS2 GFX and PS2 Font 2019-10-03 23:41:56 +02:00
Twinaphex 9ea18c433b Merge pull request #9545 from libretro/frangarcj-vita-memory
[VITA] More memory
2019-10-03 18:55:17 +02:00
Rinnegatamante 453781af9c Graceful switch between video drivers. 2019-10-03 17:45:59 +02:00
Francisco José García García a529b7b487 [VITA] Add 64Mb of memory 2019-10-03 14:33:33 +02:00
Francisco José García García 690670e2b5 [VITA] More memory 2019-10-03 13:58:23 +02:00
twinaphex 5351b56a0b Add this for Galaxy Store 2019-10-02 17:45:09 +02:00
Twinaphex b757304513 Merge pull request #9527 from monkeyman79/speedup-elf2rpl
Speed up elf2rpl by using maps
2019-10-02 09:40:26 +02:00
Twinaphex cc0ce43a57 Update CHANGES.md 2019-10-01 22:13:28 +02:00
Twinaphex 5904839bc6 Merge pull request #9541 from Rinnegatamante/master
[VITA] Add system language detection.
2019-10-01 20:35:31 +02:00
Rinnegatamante fffc7597fd [VITA] Add system language detection. 2019-10-01 19:55:43 +02:00
Twinaphex 4a7dfba6ee Merge pull request #9540 from SindenLightgun/master
Fixed bug with touchscreen/lightgun
2019-10-01 19:24:22 +02:00
Twinaphex addc75748b Merge pull request #9538 from jdgleaver/swipe-detection
(Menu Input) Re-work pointer 'swipe' detection
2019-10-01 14:14:03 +02:00
jdgleaver ece9851afb (Menu Input) Re-work pointer 'swipe' detection 2019-10-01 13:00:59 +01:00
SindenLightgun 2e480a37ea Fixed bug with touchscreen/
From my analysis I "believe" this is a development bug/typo and is causing issues with mouse and touchscreen input, that would affect touchscreen and lightgun APIs.
2019-10-01 12:26:13 +01:00
Twinaphex 890e076d20 Update CHANGES.md 2019-10-01 03:14:27 +02:00
twinaphex 547f8968aa (GL1) Buildfix + cleanups 2019-10-01 03:14:18 +02:00
Twinaphex b0b3abe775 Merge pull request #9535 from driver1998/gl1-gldirect
Support GLDirect (D3D9 to OGL1.1 wrapper) in gl1 driver
2019-10-01 02:19:45 +02:00
GH Cao 27d2877106 gl1: take care of const 2019-10-01 06:51:29 +08:00
GH Cao 897488862e gl1: adapt C89 2019-10-01 06:24:06 +08:00
driver1998 0212567d75 Support GLDirect (D3D9 to OGL1.1 wrapper) in gl1 driver 2019-10-01 06:02:30 +08:00
Twinaphex 109adf9739 Update CHANGES.md 2019-09-30 19:03:34 +02:00
Twinaphex ca2a4cdb27 Merge pull request #9532 from jdgleaver/pointer-input-updates
(Menu Input) Add mouse/touchscreen gesture support + full gesture support for XMB
2019-09-30 19:02:10 +02:00
jdgleaver 3057c31798 (Menu Input) Add mouse/touchscreen gesture support + full gesture support for XMB 2019-09-30 16:55:41 +01:00
Twinaphex 0a123e8215 Merge pull request #9530 from swingflip/master
Fixed bug with QB regarding lxcb
2019-09-29 23:02:16 +02:00
Twinaphex 1eaf6f54cc Merge pull request #9529 from swingflip/master
SEGA Mini/SNESC update
2019-09-29 22:47:27 +02:00
Ryan 'Swingflip' Hamlin 9be6d265b4 Fixed bug with QB. (Now doesn't look for the x11 client library headers (lxcb) if --disable-x11 is true) 2019-09-29 21:46:22 +01:00
Ryan 'Swingflip' Hamlin 8fff917341 add platform specific to classics 2019-09-29 21:44:58 +01:00
Ryan 'Swingflip' Hamlin adc3c9e36b SEGA Mini/SNESC update
- Replaced crap A7A7 make
- Added better targets and clean targets for Sega Mega Drive Mini and (S)NES Classic
2019-09-29 21:41:13 +01:00
Twinaphex da06dfca0d Update .travis.yml 2019-09-29 20:05:21 +02:00
Twinaphex 030231038c Update CHANGES.md 2019-09-29 19:49:59 +02:00
Twinaphex 38fe58e746 Merge pull request #9521 from Jamiras/segacd_cheevos
(cheevos) support for Sega CD/Saturn; reduce hash calls to server
2019-09-29 19:33:36 +02:00
twinaphex b80b9cd157 CXX_BUILD buildfix 2019-09-29 17:58:02 +02:00
Twinaphex 8a68c620ac Merge pull request #9526 from FreeShippingParty/delete_playlist
Add option to delete playlists
2019-09-29 17:52:00 +02:00
Tadek Kijkowski 4b73879369 Speed up elf2rpl by using maps 2019-09-29 17:36:39 +02:00
Jamiras 1ab81e5711 support for Sega CD/Saturn; reduce hash calls to server 2019-09-29 09:07:16 -06:00
FreeShippingParty 999887bda5 Add option to delete playlists 2019-09-29 10:48:46 -04:00
twinaphex b9a08520ff Move File Manager settings to Settings 2019-09-26 21:01:59 +02:00
twinaphex 1da7baa49d (Android) get_mem_free - different implementation for Android 2019-09-26 20:07:39 +02:00
twinaphex 1b8093513d Bump up to 1.7.9 2019-09-26 19:57:20 +02:00
Twinaphex 2061b465fb Update CHANGES.md 2019-09-26 19:53:46 +02:00
twinaphex 6dd46e6971 Fix database query regression 2019-09-26 13:37:58 +02:00
Twinaphex 6ac8b89601 Update CHANGES.md 2019-09-26 06:12:25 +02:00
Twinaphex 4b586b6496 Merge pull request #9516 from rsn8887/master
Switch/Vita: Set default aspect to core provided instead of 4:3
2019-09-26 06:11:49 +02:00
Twinaphex e8bd94aab8 Merge pull request #9517 from torarnv/improve-metal-debugging
Improve metal debugging
2019-09-26 06:10:17 +02:00
Tor Arne Vestbø b5cf9b639e metal: Improve shader debugging
Having the path to each shader is helpful when debugging the
rendering pipeline. The render command encoder label is limited
to just the filename of the shader, as the graphics debugging
UI in Xcode doesn't handle long names very well.

We don't encode the pass number into the string as the shaders
can be organized in a graph, not just a linked list, so an
indexed order can be misrepresenting the flow.
2019-09-25 22:36:40 +02:00
Tor Arne Vestbø 91caf28bfc metal: Add some missing debug labels and groups 2019-09-25 22:36:40 +02:00
rsn8887 2409831a14 Switch/Vita: Set default aspect to core provided instead of 4:3 2019-09-25 13:59:35 -05:00
Twinaphex bc52b952d7 Update CHANGES.md 2019-09-25 13:43:29 +02:00
Twinaphex 4428b545bb Merge pull request #9510 from jdgleaver/dropdown-list-fixes
Menu drop-down lists: Add proper titles, and remember last postion when navigating core options
2019-09-25 11:53:07 +02:00
Twinaphex fdf3a07b15 Merge pull request #9512 from rsn8887/master
[SWITCH] Fix Switch build
2019-09-25 00:20:30 +02:00
rsn8887 c8c5b69b5e [SWITCH] Fix memory free and memory total reporting 2019-09-24 17:18:23 -05:00
twinaphex 473400902c Buildfix - apparently Switch memory reporting cannot be implemented
correctly
2019-09-25 00:08:28 +02:00
jdgleaver 58ad81f063 Menu drop-down lists: Add proper titles, and remember last postion when navigating core options 2019-09-24 17:41:06 +01:00
twinaphex b01149f068 Cleanups 2019-09-24 16:22:20 +02:00
Twinaphex 89ae74fba6 (MaterialUI) Fix handle float cast overflow 2019-09-24 11:38:47 +02:00
Twinaphex a1f2c6197f Update CHANGES.md 2019-09-24 11:16:04 +02:00
twinaphex f4467d6595 Combine RARCH_LOG/RARCH_ERR messages 2019-09-24 08:24:19 +02:00
Twinaphex 688d1ef81c Merge pull request #9505 from jdgleaver/ozone-metadata-wrap
(Ozone) Add option to toggle between static and scrolling content metadata
2019-09-23 21:54:22 +02:00
Twinaphex 4f2ed12e4f Merge pull request #9504 from Wiimpathy/WiiFreeMem
Wii/GC: free memory instead of used memory
2019-09-23 21:27:32 +02:00
jdgleaver ef710442f1 (Ozone) Add option to toggle between static and scrolling content metadata 2019-09-23 15:33:20 +01:00
benoa 2bd71b55bc Wii/GC: free memory instead of used memory 2019-09-23 16:09:53 +02:00
Twinaphex c78dcbd382 Merge pull request #9488 from justinweiss/enable-luma-svchax
Enable svchax in 3dsx builds when running under Luma3DS 8.0+
2019-09-23 11:14:20 +02:00
Twinaphex 80b62fc635 Merge pull request #9501 from justinweiss/always-define-runtime-shader-preset
Ensure {set,unset}_runtime_shader_preset are always defined
2019-09-23 11:10:34 +02:00
Twinaphex 7d466c8177 Update CHANGES.md 2019-09-23 09:24:54 +02:00
Twinaphex 516bace3ca Update CHANGES.md 2019-09-23 09:24:34 +02:00
twinaphex 3307e65ad3 Fix FPS text in threaded video mode 2019-09-23 09:22:35 +02:00
twinaphex 01dc71f598 (menu_driver.c) Cleanups 2019-09-23 04:49:01 +02:00
twinaphex 17fb07cb85 (Menu) Simplify menu_entries_get_core_title 2019-09-23 04:44:22 +02:00
twinaphex 85d9eeb50d Should fix CXX_BUILD 2019-09-23 04:40:18 +02:00
twinaphex 0314921434 (menu_cbs_deferred_push.c) Cleanups 2019-09-23 04:31:12 +02:00
twinaphex dde7c28730 (menu_shader.c) Cleanups 2019-09-23 04:27:03 +02:00
twinaphex 682b403a9c menu_content.c - This file is no longer necessary 2019-09-23 04:24:00 +02:00
twinaphex 08d3fe8c04 Cleanups 2019-09-23 04:19:52 +02:00
twinaphex 82259a086e Make action_scan_directory safer - fill_pathname_join now doesn't
have the same variable for arguments 1 and 2
2019-09-23 04:14:10 +02:00
twinaphex d045484788 Cleanups of some strings 2019-09-23 02:41:19 +02:00
twinaphex dd522cdc6f Turn function static 2019-09-23 02:23:20 +02:00
Twinaphex ae7d956341 Silence warning 2019-09-23 01:44:53 +02:00
twinaphex b94b9e2adb Go back to plain strlcpy/strlcat - probably best to look at
opportunities to reduce these calls vs. replacing them with
unsafe macros
2019-09-23 00:19:01 +02:00
Justin Weiss 621c79dd3c Ensure {set,unset}_runtime_shader_preset are always defined
These functions are used elsewhere, so they need to be defined. (Or we
could guard every place they're called instead)
2019-09-22 14:39:27 -07:00
Twinaphex 21a2ba3f79 Update CHANGES.md 2019-09-22 23:06:05 +02:00
twinaphex 579c41535a (OSX/Metal) Only set CoreAudio driver as default for non-Metal build 2019-09-22 23:03:14 +02:00
Twinaphex 107b5eec44 (OSX) Simplify 2019-09-22 22:53:57 +02:00
twinaphex 882a66b49a C89_BUILD buildfix 2019-09-22 21:59:17 +02:00
Twinaphex b4e1ca8a2c Merge pull request #9499 from LazyBumHorse/fix_opti
fix path_relative_to()
2019-09-22 21:53:50 +02:00
LazyBumHorse f309c85f92 STRLCAT_CONST_INCR should be at most 1 statement, so single-line if, for etc work 2019-09-22 20:12:56 +02:00
LazyBumHorse db723df879 fix path_relative_to 2019-09-22 16:29:54 +02:00
twinaphex 5f87fa1aca CXX_BUILD buildfix 2019-09-22 14:04:02 +02:00
twinaphex f33264f7a6 (X11) XStoreName is a useless wrapper function around XChangeProperty 2019-09-22 13:00:44 +02:00
twinaphex c5b3428408 Add sdl2_common.c/.h 2019-09-22 12:40:40 +02:00
twinaphex efdc07ab10 (Wayland) update_title function - simplify this function a bit 2019-09-22 12:14:49 +02:00
twinaphex 920a20f060 (GX) Silence more warnings 2019-09-22 11:35:09 +02:00
Twinaphex 2414224df8 (Cocoa) It's only necessary to set the display server userdata for
set_video_mode
2019-09-22 11:29:58 +02:00
Twinaphex 511f43d5cf Move it to cocoa_gl_ctx.m 2019-09-22 11:26:06 +02:00
Twinaphex a6ec5a9831 Should now work 2019-09-22 11:19:54 +02:00
Twinaphex 6fe4559b8e Revert "(Cocoa) See if this works"
This reverts commit 1ddd7ee79d.
2019-09-22 10:54:11 +02:00
Twinaphex 83f1b28f98 Revert "(Cocoa) Move nsview_get_ptr and nsview_set_ptr to cocoa_gl_ctx.m"
This reverts commit 4f564360e7.
2019-09-22 10:54:01 +02:00
twinaphex 4f564360e7 (Cocoa) Move nsview_get_ptr and nsview_set_ptr to cocoa_gl_ctx.m 2019-09-22 10:48:23 +02:00
twinaphex 1ddd7ee79d (Cocoa) See if this works 2019-09-22 10:43:31 +02:00
Twinaphex 23bb1414ff (Metal) Buildfix 2019-09-22 10:30:59 +02:00
twinaphex ad1fb29092 (Metal) Refactor 2019-09-22 10:28:51 +02:00
Twinaphex 6a9feb7978 (OSX) Refactor this so that we always set the userdata
pointer so we can use the new set_title codepaths - will
have to check how to reduce the overhead in nsview_get_ptr
later
2019-09-22 10:19:03 +02:00
Twinaphex ae21bd98aa Update CHANGES.md 2019-09-22 09:23:08 +02:00
Twinaphex eadfb1398a Update CHANGES.md 2019-09-22 09:22:54 +02:00
Twinaphex bbb2bda20a Merge pull request #9497 from BarryJRowe/master
Added in rpng string streaming to ai service.
2019-09-22 09:16:47 +02:00
Barry Rowe 4e155dbc8e Added in rpng string streaming to ai service. 2019-09-21 23:57:59 -07:00
Twinaphex 9f0f53b1d7 (OSX) Correct userdata 2019-09-22 08:16:43 +02:00
twinaphex fbb8a9640c (OSX) Set pointer for HAVE_COCOA_METAL too 2019-09-22 08:00:39 +02:00
twinaphex 2135e86fc7 (Cocoa) Set video display driver userdata for Cocoa 2019-09-22 07:49:43 +02:00
Twinaphex 69a38f9b9f (Cocoa) Pass direct pointer to UI companion driver window title function 2019-09-22 07:41:56 +02:00
twinaphex c7fd375120 Create video_driver_display_userdata_{set/get} 2019-09-22 07:35:05 +02:00
twinaphex 464df18ac2 Add missing prototype 2019-09-22 05:56:04 +02:00
twinaphex 3a39a51f11 (CTR/3DS) Properly report free RAM 2019-09-22 04:42:20 +02:00
Twinaphex c2b26a3cd9 Remove unused variable 2019-09-22 04:40:01 +02:00
twinaphex ed29c6f59c Start going for consistent memory representation - instead of
'memory used' needs to become 'memory free'
2019-09-22 03:57:59 +02:00
Twinaphex a855447d11 Update CHANGES.md 2019-09-22 03:30:37 +02:00
twinaphex 111d666f85 Fix space 2019-09-22 03:30:04 +02:00
twinaphex d356f88fb5 Memory details can now be shown individually without FPS and
frame count
2019-09-22 03:21:36 +02:00
twinaphex 03bddff8e6 Cleanups of update_window_title functions 2019-09-22 03:05:06 +02:00
Twinaphex ccc2bea0c4 Merge pull request #9496 from monkeyman79/fix-elf2rpl
Fixed WiiU compilation randomly failing
2019-09-21 22:31:54 +02:00
Tadek Kijkowski c1504555ac Fixed WiiU compilation randomly failing
- Fixed elf2rpl referencing deleted symbols in relocations
- Added some diagnostics to elf2rpl (activated with -v switch)
2019-09-21 21:31:34 +02:00
Twinaphex 08393b1d0c Update CHANGES.md 2019-09-21 19:57:35 +02:00
Twinaphex 2fca06c994 Merge pull request #9495 from Jamiras/psx_cheevos_fixes
improve handling of line endings when calculating CD hashes for retroachievements
2019-09-21 19:57:12 +02:00
Twinaphex f4feda6323 Merge pull request #9494 from LazyBumHorse/fix_log
fix name of RetroArch's log file
2019-09-21 19:56:42 +02:00
Jamiras c5750da85a improve handling of line endings in m3u and cue files 2019-09-21 08:06:06 -06:00
LazyBumHorse c81d363a6e fix name of retroarch log file 2019-09-21 12:12:45 +02:00
twinaphex 302e2fdc53 Move show memory details outside of the video context driver and
into retroarch.c - avoid lots of code duplication
2019-09-21 07:49:33 +02:00
twinaphex f65e005d97 label_sanitization - change a bunch of functions to static 2019-09-21 03:55:20 +02:00
twinaphex 7cfd996802 Add return value to fill_pathname_noext 2019-09-21 01:41:56 +02:00
twinaphex 1ed38ddb2d Start using return values of fill_pathname_ functions 2019-09-21 00:22:40 +02:00
twinaphex 6d8bc91220 Start returning sizes for file_path functions 2019-09-21 00:01:09 +02:00
twinaphex 2f0a5f48aa Corect small log string 2019-09-20 23:36:29 +02:00
twinaphex 3b057d9605 Start using STRLCAT_CONST_INCR and STRLCPY_CONST 2019-09-20 23:33:17 +02:00
twinaphex 76f4cf5cc5 Start using STRLCAT_CONST/STRLCAT_CONST_INCR/STRLCPY_CONST 2019-09-20 20:39:34 +02:00
Twinaphex 99a3aa8ee1 Update CHANGES.md 2019-09-20 18:28:06 +02:00
Twinaphex 73c63d8768 (Cocoa) Add mouse down events 2019-09-20 18:22:14 +02:00
Twinaphex 3da84396b6 Remove unused variables 2019-09-20 17:34:35 +02:00
Justin Weiss 2e9a793519 Enable svchax in Luma3DS 8.0+ 2019-09-20 08:27:41 -07:00
Twinaphex bcb7e14d0f Merge pull request #9490 from jdgleaver/horiz-mouse-wheel-fix
Improve horizontal mouse wheel (tilt) navigation
2019-09-20 16:16:50 +02:00
Twinaphex 42818a2310 Merge pull request #9489 from jdgleaver/rgui-mouse-drag-fix
(RGUI) Ensure display is always refreshed when pointer input is active
2019-09-20 16:16:39 +02:00
jdgleaver eb72a2e7d2 Improve horizontal mouse wheel (tilt) navigation 2019-09-20 14:16:21 +01:00
jdgleaver dacf9e327a (RGUI) Ensure display is always refreshed when pointer input is active 2019-09-20 11:04:31 +01:00
twinaphex 2a8798b729 Cleanups 2019-09-20 09:31:18 +02:00
Twinaphex 2892abf155 Update CHANGES.md 2019-09-20 08:49:49 +02:00
Twinaphex 3bd585a94e Update CHANGES.md 2019-09-20 08:46:10 +02:00
Twinaphex 2d4236882f Update CHANGES.md 2019-09-20 08:45:29 +02:00
twinaphex ec4bfd7827 Silence some warnings - statement unreachable etc. 2019-09-20 06:17:40 +02:00
twinaphex 7173efe10f (Network/Relay Server Location) RetroArch crashed when pressing
left while Relay Server Location entry was selected - index offset
would set itself to -1 and cause a buffer overflow
2019-09-20 04:14:32 +02:00
twinaphex 43000d2e24 (Networking) Fix memory leak that could happen at exit after a network
operation has ran (menu_driver_data->core_buf gets allocated inside
cb_net_generic_menu and doesn't get freed until the function is ran
again
2019-09-20 04:08:03 +02:00
twinaphex db624a7c99 Start cleaning up the rather messy manual assignment 2019-09-20 02:03:26 +02:00
Twinaphex 72a9d77638 Merge pull request #9484 from Wiimpathy/GCfix
GameCube: Fix build
2019-09-19 20:45:05 +02:00
Twinaphex 36e5909057 Merge pull request #9485 from jdgleaver/input-update
Overhaul menu mouse/touchscreen input handling
2019-09-19 20:44:35 +02:00
jdgleaver 8655038601 Overhaul menu mouse/touchscreen input handling 2019-09-19 16:53:22 +01:00
benoa 9250f649db GameCube: Fix build 2019-09-19 15:13:22 +02:00
twinaphex 71cc43651a (Ozone) Fix regression with sidebar textures 2019-09-19 09:03:07 +02:00
twinaphex e7eb0e2b3e Combine two RARCH_LOGs into one 2019-09-19 09:00:05 +02:00
twinaphex 33353d5cd9 Fix C89_BUILD buildfix 2019-09-19 07:07:03 +02:00
Twinaphex 1149487fbd Update CHANGES.md 2019-09-19 06:27:55 +02:00
twinaphex f192e8618f (Win32) Call the log window 'Logging Console' 2019-09-19 06:23:31 +02:00
twinaphex 4eac009c27 Buffer more before we send text to be logged to stderr/stdout
and the logger interface for help/features/startup
2019-09-19 05:50:26 +02:00
twinaphex 15470596ad Remove 'puts' lines 2019-09-19 04:19:18 +02:00
twinaphex f4c6b06b49 (file_path.c) Remove some strlcpy/strlcat invocations 2019-09-19 03:45:18 +02:00
twinaphex 1d621c412c Add HW_RVL to this - won't compile on Gamecube otherwise 2019-09-19 02:15:18 +02:00
twinaphex 7dc2ca425f (RTGA) Further optimizations 2019-09-18 21:49:18 +02:00
twinaphex 1075522147 (RTGA) Cleanups 2019-09-18 21:13:46 +02:00
twinaphex 9a5b8f0475 (RBMP) Typo fix and some further cleanups 2019-09-18 20:30:39 +02:00
twinaphex bd39d72acd (RBMP) More optimizations 2019-09-18 20:25:15 +02:00
twinaphex b582f1c7c6 (RBMP/RJPEG) Cleanups + optimizations 2019-09-18 19:52:45 +02:00
twinaphex 1027762db5 Remove some trivial string_is_equal calls during parsing of buttons
in config_file
2019-09-18 18:22:31 +02:00
twinaphex ab515daa0c Try to get rid of file_path_str 2019-09-18 18:12:57 +02:00
twinaphex 3a61cfe6ec Cleanup menu_displaylist_parse_content_information 2019-09-18 10:20:06 +02:00
Twinaphex d09362ed6f (OSX) Silence warnings for OSX 2019-09-18 10:04:21 +02:00
twinaphex 6eaf19533b (sublabels) Optimizations 2019-09-18 09:37:32 +02:00
twinaphex 8f8a9863ad Optimize sublabel_playlist_entry by removing snprintf 2019-09-18 09:28:37 +02:00
twinaphex c186747edc (video_shader_parse) avoid some more snprintfs 2019-09-18 09:11:32 +02:00
twinaphex 922680851a (features_cpu) noticed that the buffer wasn't actually being used,
so it can go
2019-09-18 08:37:35 +02:00
twinaphex 3fbeb0617b (glslang_util_cxx.cpp) Get rid of this strlcpy too 2019-09-18 08:03:49 +02:00
twinaphex 306d7f6f8a glsl_find_uniforms_frame - get rid of the remaining strlcats 2019-09-18 07:53:59 +02:00
twinaphex ab60005cdc (GLSL) Avoid snprintf, prefer strlcpy/strlcat where possible 2019-09-18 07:32:06 +02:00
twinaphex f663c64cd4 (MaterialUI/Ozone) Prevent more unnecessary strlcats 2019-09-18 06:43:01 +02:00
twinaphex a9ef8333eb Rewrite menu_entries_get_core_title 2019-09-18 06:35:21 +02:00
twinaphex 6d89bbfe61 (Menu animation) Avoid some strlcat usage here too 2019-09-18 05:54:32 +02:00
twinaphex b0a8f5d775 (menu displaylist) Some more cleanups 2019-09-18 05:40:06 +02:00
twinaphex ed77d46cc9 Cut down on some strlcat usage where not necessary 2019-09-18 04:58:52 +02:00
twinaphex 1ced1b3f73 (Platform unix) Updates 2019-09-18 03:37:25 +02:00
twinaphex 698387e762 (task_screenshot.c) Cleanups - don't use snprintf unless necessary 2019-09-18 02:31:02 +02:00
twinaphex 8928052863 (libretro-common) (VFS implementation) Cleanup 2019-09-18 02:23:25 +02:00
twinaphex 8fa6230426 Cleanups 2019-09-18 02:16:47 +02:00
twinaphex 7dd3939a26 Update CHANGES.md 2019-09-17 08:20:01 +02:00
twinaphex b28c405377 Backport and rebase initial FPGA port that was done in 2017 (port
done for Z-Turn board) - has some outstanding issues such as
very slow framebuffer software rendering output that needs to
be overcome before this becomes usable - community help needed
2019-09-17 08:16:50 +02:00
twinaphex b6a6127509 Replace more snprintf usage 2019-09-17 07:30:29 +02:00
twinaphex 7d58bb9799 Avoid more snprintf usage 2019-09-17 06:34:00 +02:00
twinaphex 65aa939296 task_push_http_transfer_generic - rewrite snprintf usage 2019-09-17 06:10:15 +02:00
twinaphex c3c4638b22 Replace some snprintf usage where not necessary 2019-09-17 05:49:54 +02:00
twinaphex a36d5926d7 Cleanups 2019-09-17 05:30:07 +02:00
twinaphex 6f6b1a8333 (Net HTTP) Avoid unnecessary snprintf 2019-09-17 05:26:00 +02:00
twinaphex 861262ef3a (network gfx) Cleanup 2019-09-17 05:04:57 +02:00
Brad Parker c7c7d0988e initial network video driver, sends raw frames over TCP 2019-09-17 04:18:44 +02:00
twinaphex 712547cb2b C89_BUILD fix 2019-09-17 03:59:59 +02:00
twinaphex 5024b77492 Prevent more strlcats that are quite trivial 2019-09-17 02:43:40 +02:00
twinaphex d01ae6929d Don't use strlcat for basic concatenation of characters
except when absolutely necessary
2019-09-17 02:00:04 +02:00
twinaphex c2cad1f122 (platform_unix) Small cleanups 2019-09-17 01:33:54 +02:00
twinaphex 25f232616b input_config_get_bind_string_joyaxis - replace snprintf 2019-09-17 01:25:39 +02:00
twinaphex 4ea493c86c Turn cheat_manager_free into static function 2019-09-17 01:20:30 +02:00
Twinaphex d526530167 Merge pull request #9474 from yoshisuga/cheevos_fix_set_sublabel
(cheevos) Fix crash when setting sublabel of achievement
2019-09-17 00:26:42 +02:00
Yoshi Sugawara ae6e2f5df5 (cheevos) create a local string var to set the sublabel attribute when calling rcheevos_get_description. This prevents an unintended pointer reassignment and can cause a crash on strlcpy on some platforms 2019-09-16 12:54:03 -07:00
twinaphex 4354ad296d Revert "Cleanup - it shouldn't be necessary to call fill_pathname_slash"
This reverts commit 419fe62da8.
2019-09-16 20:40:08 +02:00
twinaphex 86839db417 set_label_shader_watch_for_changes - simplify 2019-09-16 20:02:49 +02:00
twinaphex b9e8e95498 use fill_pathname_join_delim at key places instead of snprintf 2019-09-16 19:58:56 +02:00
twinaphex 150f4f0f4b More efficient way of adding delimiting characters - proper spacing
as well in title bar
2019-09-16 19:20:03 +02:00
twinaphex 66794d2166 Rewrite input_config_set_device_path 2019-09-16 18:41:46 +02:00
twinaphex 81ec152f10 fill_pathname_slash only used now inside file_path.c 2019-09-16 18:25:02 +02:00
twinaphex 60574f04d2 We don't need the double char variable here 2019-09-16 17:44:14 +02:00
twinaphex 419fe62da8 Cleanup - it shouldn't be necessary to call fill_pathname_slash
after fill_pathname_join
2019-09-16 17:35:15 +02:00
twinaphex aacc544300 Turn cheat_manager_search into static function 2019-09-16 17:04:58 +02:00
twinaphex 9fd4ff7a8d (Cheat manager)
- Cleanups
- Functional improvement: don't attempt to create the 'core directory'
inside the cheats directory for game-specific cheats when we are only
trying to load the cheat - if we are loading and the directory doesn't
exist, that means the cheat file doesn't exist either
2019-09-16 16:57:50 +02:00
twinaphex 352be447df Update CHANGES.md 2019-09-16 16:35:23 +02:00
twinaphex 5ba77289d9 Merge branch 'master' of https://github.com/libretro/RetroArch 2019-09-16 16:32:50 +02:00
Twinaphex 497868ecaf Merge pull request #9473 from Tatsuya79/patch-2
fix gong crash
2019-09-16 16:29:17 +02:00
Tatsuya79 ef216d3010 fix gong crash 2019-09-16 16:27:34 +02:00
twinaphex d2add47f1e Merge branch 'master' of https://github.com/libretro/RetroArch 2019-09-16 05:17:22 +02:00
Twinaphex f45a1d797e Update CHANGES.md 2019-09-16 04:56:08 +02:00
Twinaphex 80311970cf Merge pull request #9469 from yoshisuga/ios_xcode_prep
(iOS/tvOS): Xcode project changes and small tweak
2019-09-16 04:49:45 +02:00
twinaphex 1040d3eedf Merge branch 'master' of https://github.com/libretro/RetroArch 2019-09-16 04:49:34 +02:00
Twinaphex 07c6b4c363 Merge pull request #9470 from Wiimpathy/WiiLightgun
Wii: Add wiimote lightgun support
2019-09-16 04:49:01 +02:00
Twinaphex 454b4ea715 Update CHANGES.md 2019-09-16 04:31:30 +02:00
Twinaphex 7c2d2246fe Update CHANGES.md 2019-09-16 04:30:27 +02:00
Twinaphex 725430994d Update CHANGES.md 2019-09-16 03:20:14 +02:00
Twinaphex ea7e682253 Update AndroidManifest.xml 2019-09-16 03:06:19 +02:00
Twinaphex 97d2be1ff3 Update CHANGES.md 2019-09-16 03:03:17 +02:00
Twinaphex d38dfa60f6 Update CHANGES.md 2019-09-16 03:02:27 +02:00
twinaphex b179dde1e7 Cleanups 2019-09-15 07:46:24 +02:00
twinaphex 4c7beacfe4 (RPNG) rpng_is_valid - cleanup 2019-09-15 07:40:02 +02:00
twinaphex b7fe19b6c8 (libretro-common) RPNG - Cleanup 2019-09-15 02:04:37 +02:00
benoa 744fac6777 Wii: Add wiimote lightgun support 2019-09-15 00:46:02 +02:00
Yoshi Sugawara f0adf90ec0 (iOS/tvOS): add references to some iOS specific source files to xcode project to make it easier to open and search source files; removed call to show native menu when going into the background 2019-09-14 14:16:23 -07:00
Yoshi Sugawara 70b573c951 added apple common ui files 2019-09-14 13:37:01 -07:00
Twinaphex e1a7b82b2e Merge pull request #9468 from yoshisuga/ios_build_fixes
(iOS/tvOS): IOS/tvOS build fixes
2019-09-14 22:05:50 +02:00
Yoshi Sugawara c24caa8f48 (iOS/tvOS): IOS/tvOS build fixes:
- change bundle identifier to match that used in the official releases
- remove code signature assignment
- add a minimal assets.zip so that one can build and run without having to be required to go thru the online updater
- add the tvOS core directory
2019-09-14 12:59:22 -07:00
Twinaphex 753be84ae0 (Apple) Silence some warnings 2019-09-14 17:15:30 +02:00
twinaphex 27ada9b7b2 Buildfixes for --disable-menu 2019-09-14 07:24:26 +02:00
twinaphex 785ed87117 (libnx/switch) Add HAVE_TRANSLATE 2019-09-12 17:59:06 +02:00
Twinaphex 85f07b6f27 Merge pull request #9405 from Jamiras/psx_cheevos_cdfs
add hashing support for PSX cheevos (bin/cue, chd, or real CD)
2019-09-11 23:38:23 +02:00
Twinaphex f004666674 Merge pull request #9456 from jdgleaver/date-format
Menu time/date: Add 12-hour versions of all formats + clean ups
2019-09-10 17:58:11 +02:00
Twinaphex eb012a353a Merge pull request #9460 from jdgleaver/build-fix
'CXX_BUILD=1' build fix
2019-09-10 17:58:01 +02:00
jdgleaver c645d43598 'CXX_BUILD=1' build fix 2019-09-10 16:49:07 +01:00
Twinaphex ef3c83da04 Merge pull request #9459 from jdgleaver/runtime-date-format
Enable customisation of runtime 'last played' display format
2019-09-10 17:35:20 +02:00
jdgleaver a0fd9d21d2 Enable customisation of runtime 'last played' display format 2019-09-10 16:14:38 +01:00
Twinaphex f6d1cbe6b9 Merge pull request #9447 from altiereslima/master
Update Brazilian Portuguese Translation
2019-09-10 06:38:03 +02:00
jdgleaver ac5c03c458 'DISABLE_MENU=1' build fix 2019-09-09 15:15:28 +01:00
jdgleaver 25006cadfe Menu time/date: Add 12-hour versions of all formats + clean ups 2019-09-09 14:06:49 +01:00
Twinaphex d00af57b4a Merge pull request #9451 from meepingsnesroms/master
Remove unfinished translation files
2019-09-09 14:36:03 +02:00
meepingsnesroms 85f46b9899 Remove unfinished translation files 2019-09-08 20:14:23 -07:00
altiereslima 50f2beb15b Update msg_hash_pt_br.h 2019-09-08 21:31:25 -03:00
Twinaphex 561a4cd4bf Update CHANGES.md 2019-09-09 01:22:19 +02:00
altiereslima 1b7e95b1bd Update msg_hash_pt_br.c 2019-09-08 14:05:50 -03:00
altiereslima f382589083 Update msg_hash_pt_br.h 2019-09-08 13:48:16 -03:00
altiereslima 7cdc5c8e93 Update Brazilian Portuguese Translation 2019-09-08 12:35:33 -03:00
Twinaphex 2179c16f60 Update main.cpp 2019-09-08 04:41:03 +02:00
Twinaphex fde7026ac2 Update Makefile 2019-09-08 04:19:58 +02:00
Twinaphex 8520a94b8f Update Makefile 2019-09-08 04:17:43 +02:00
Twinaphex e39f5d7143 Merge pull request #9443 from bmaupin/72-audio-crackles-on-psp
Fix PSP audio conversion code
2019-09-07 12:30:54 +02:00
bmaupin 3047c55121 Fix PSP audio conversion code
Fixes https://github.com/libretro/QuickNES_Core/issues/72
2019-09-06 21:02:37 -04:00
Twinaphex b875a69266 Merge pull request #9439 from jdgleaver/rgui-resize-2
(RGUI) Handle window resize event edge case
2019-09-06 16:26:41 +02:00
jdgleaver 518f1bae20 (RGUI) Handle window resize event edge case 2019-09-06 14:52:33 +01:00
Twinaphex 9edd5eeaeb Update CHANGES.md 2019-09-06 15:49:46 +02:00
Twinaphex b0cc504d7c Merge pull request #9438 from jdgleaver/rgui-resize
(RGUI) Correctly rescale menu when resizing window if aspect ratio lock is enabled
2019-09-06 15:49:20 +02:00
jdgleaver 5d5de8ce51 (RGUI) Ignore window resize events until next menu toggle after accessing video settings 2019-09-06 14:25:57 +01:00
jdgleaver a6ee786a4f (RGUI) Correctly rescale menu when resizing window if aspect ratio lock is enabled 2019-09-06 13:29:59 +01:00
twinaphex 48db589ed2 Update CHANGES.md 2019-09-06 14:11:38 +02:00
twinaphex dec30677d9 Should fix analog remap issues 2019-09-05 20:43:54 +02:00
Twinaphex c566b7eca5 Merge pull request #9432 from losernator/patch-2
Update Korean traslation
2019-09-05 16:44:34 +02:00
Joohan Lee e8df78f508 Update Korean traslation
Update Korean traslation
2019-09-05 16:18:04 +09:00
Twinaphex 7cca6ea394 Merge pull request #9423 from jdgleaver/rgui-glcore-fix
(glcore) Ensure correct scaling of menu texture (RGUI)
2019-09-03 19:58:26 +02:00
jdgleaver 3a680df733 (glcore) Ensure correct scaling of menu texture (RGUI) 2019-09-03 12:52:26 +01:00
Twinaphex 97d91a895c Merge pull request #9419 from torarnv/metal-draw-video-stats-over-overlay
metal: Draw video stats on top of overlay
2019-09-03 12:44:01 +02:00
Twinaphex f4aabd0226 Merge pull request #9404 from fpscan/master
Turkish Language Update for 1.7.8 changes
2019-09-02 20:52:24 +02:00
Tor Arne Vestbø af75ddd04a metal: Draw video stats on top of overlay 2019-09-02 20:02:16 +02:00
Twinaphex 5140bf9bd0 Merge pull request #9417 from torarnv/metal-draw-overlay-with-correct-viewport
Metal draw overlay with correct viewport
2019-09-02 20:01:39 +02:00
Tor Arne Vestbø 204407b64a metal: Set up correct viewport before rendering overlay 2019-09-02 18:02:30 +02:00
Tor Arne Vestbø 48d28aa734 metal: Split menu drawing out from core drawing 2019-09-02 18:02:30 +02:00
Twinaphex 7e50bedd07 Merge pull request #9416 from torarnv/remove-osx-suffix-in-window-title
Remove '_OSX' suffix from RetroArch window title
2019-09-02 15:54:55 +02:00
Twinaphex 7d267d124e Merge pull request #9415 from yoshisuga/tvos_13
(tvOS) tvOS 13 support: Update Xcode project to handle cores built using tvOS SDK
2019-09-02 14:18:09 +02:00
Twinaphex 8b3fcf7740 Merge pull request #9413 from torarnv/metal-use-correct-uniforms-when-blitting-menu-frame
Use correct uniforms when blitting menu frame with Metal
2019-09-02 13:42:17 +02:00
Tor Arne Vestbø 3ac29eb659 Remove '_OSX' suffix from RetroArch window title
There's no need for a platform-specific window title, and if there
was it should be macOS nowadays, not OS X.
2019-09-02 13:31:40 +02:00
Yoshi Sugawara a55a159fb9 (tvOS) Cores are now compiled using tvOS SDK and reside in a separate directory - required for iOS 13 support. Updated code sign script to handle tvOS cores 2019-09-02 01:24:29 -10:00
Tor Arne Vestbø e6227f9898 Use correct uniforms when blitting menu frame with Metal
Fixes broken rgui with the Metal video driver.
2019-09-02 13:01:42 +02:00
Twinaphex a52130e368 Update CHANGES.md 2019-09-02 02:44:23 +02:00
Twinaphex 350eeeebbf Merge pull request #9412 from brenodantas10/master
Soft-Patch any IPS size
2019-09-02 00:41:52 +02:00
brenodantas10 0ab26a1371 Soft-Patch any IPS size (put declarations at beginning) 2019-09-01 18:44:21 -03:00
brenodantas10 49032ae2f2 Soft-Patch any IPS size 2019-09-01 16:01:48 -03:00
Jamiras b1fb7a1c1e add hashing support for PSX cheevos (bin/cue, chd, or real CD) 2019-09-01 11:13:54 -06:00
Twinaphex 2997c26069 Merge pull request #9409 from torarnv/explicitly-invalidate-font-atlas-buffer
Explicitly invalidate atlas buffer when rendering text with Metal
2019-09-01 18:56:24 +02:00
Tor Arne Vestbø a7723ba13f Explicitly invalidate atlas buffer when rendering text with Metal
Fixes #9016
2019-09-01 18:46:26 +02:00
Ömercan Kömür 3fdd7a4b61 Turkish Language Update for 1.7.8 changes 2019-08-31 03:50:00 +03:00
724 changed files with 96651 additions and 52706 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: [twinaphex]
patreon: libretro
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
+41 -4
View File
@@ -1,3 +1,9 @@
# This setting is to prevent travis to launch duplicate builds on PRs
branches:
only:
- master
- /^v.*$/
# Use 'generic' to be able to override CC/CXX for clang
language: generic
@@ -26,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
@@ -36,6 +44,10 @@ matrix:
env: DISABLE_OVERLAY=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
env: DISABLE_CDROM=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
env: DISABLE_VIDEO_LAYOUT=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
env: DISABLE_AUDIOMIXER=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
env: ENABLE_GLES=1 CC=gcc-8 CXX=g++-8
- compiler: gcc
@@ -48,14 +60,28 @@ matrix:
env: CXX_BUILD=1 CC=clang-6.0 CXX=clang++-6.0
- os: osx
env: CC=clang CXX=clang++
- name: OSX OpenGL Make
os: osx
osx_image: xcode11.2
script:
- ./configure --enable-opengl --disable-metal
- make
- os: osx
osx_image: xcode8
script:
- xcodebuild -target RetroArch -configuration Release -project pkg/apple/RetroArch.xcodeproj
- os: osx
osx_image: xcode10.1
osx_image: xcode11.2
script:
- brew update-reset
- brew install --force-bottle qt5
- security create-keychain -p travis build.keychain
- security default-keychain -s build.keychain
- security unlock-keychain -p travis build.keychain
- echo $OSX_CERT | base64 --decode > dev.p12
- security import dev.p12 -k build.keychain -P $OSX_CERT_PASS -T /usr/bin/codesign
- rm dev.p12
- security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k travis build.keychain
- xcodebuild -target RetroArchQt -configuration Release -project pkg/apple/RetroArch_Metal.xcodeproj
deploy:
skip_cleanup: true
@@ -81,7 +107,7 @@ matrix:
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
@@ -93,7 +119,7 @@ before_install:
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
fi
script:
before_script:
- |
if [ -n "$CROSS_COMPILE" ]; then
ARGS="$ARGS --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12"
@@ -110,6 +136,14 @@ script:
if [ -n "$DISABLE_CDROM" ]; then
ARGS="$ARGS --disable-cdrom"
fi
- |
if [ -n "$DISABLE_VIDEO_LAYOUT" ]; then
ARGS="$ARGS --disable-video_layout"
fi
- |
if [ -n "$DISABLE_AUDIOMIXER" ]; then
ARGS="$ARGS --disable-audiomixer"
fi
- |
if [ -n "$ENABLE_GLES" ]; then
ARGS="$ARGS --enable-opengles"
@@ -118,6 +152,9 @@ script:
if [ -n "$ENABLE_GLES3" ]; then
ARGS="$ARGS --enable-opengles3"
fi
- echo "Configure arguments = $ARGS"
script:
- ./configure $ARGS
- |
if [ -n "$C89_BUILD" ]; then
@@ -152,4 +189,4 @@ addons:
build_command: "make"
branch_pattern: coverity_scan
notifications:
email: false
email: true
+26 -1
View File
@@ -40,6 +40,31 @@
}
]
},
{
"name": "PSP-GDB Debugger",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarchpsp.elf",
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"setupCommands": [
{
"text": "symbol-file ${workspaceFolder}/retroarchpsp.elf",
"description": "read symbols for elf file",
"ignoreFailures": true
},
{
"description": "Enable all-exceptions",
"text": "-exec \"catch throw\"",
"ignoreFailures": true
}
],
"showDisplayString": true,
"targetArchitecture": "mips",
"MIMode": "gdb",
"miDebuggerPath": "/usr/local/pspdev/bin/psp-gdb",
"miDebuggerServerAddress": "127.0.0.1:10001",
}
]
}
+290 -1
View File
@@ -1,4 +1,292 @@
# 1.7.9 (future)
# Future
# 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
# 1.8.3
- ANDROID/BUGFIX: Fix 'Install or Restore Core' regression
- BUGFIX: Ensure core info is always initialised when calling 'drivers_init()'. This bug could prevent cores from doing content runtime logging
- BUGFIX/MENU: History size can only be set to 1 at a minimum
- BUGFIX/MENU: (XMB/OZONE) Fix 'quick menu' detection. XMB would not display savestate thumbnails in the quick menu if it was accessed via the main menu
- 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
- CORE UPDATER: Display number of cores updated when updating installed cores
- DINGUX: Initial port
- D3D11: Block FL9_3 devices from D3D11 driver because they don't work anyway (current D3D11 driver uses SM4.0 which requires FL10_0 and up)
- D3D11: Fallback to GL driver when D3D11 fails
- EMSCRIPTEN: Fix assets
- HISTORY/FAVORITES: Bump up default to 200 entries from 100
- FFMPEG CORE: Implement packet buffer, fixes MP4 video playback for many files
- LOCALIZATION: Update Italian translation
- LOCALIZATION: Update Polish translation
- LOCALIZATION: Update Russian translation
- LOCALIZATION: Update Spanish translation
- MENU: Added 'Hosting' menu under Netplay menu
- MENU: Added 'Subsystems' menu
- MENU/FILEBROWSER: Fix file selection issues when starting from (or navigating to) the top level directory
- MENU/WIDGETS: Prevent looping of task title text
- RASPBERRY PI: Fix BGRA8888 color inversion issues in the menu and elsewhere with VideoCore GL drivers
- NETPLAY/RELAY: Add Sao Paulo (Brazil) relay server
- NETPLAY/RELAY: Fix the “spectator” bug when using the relay server – When a player switches into the spectator mode (pressing “i”) while using the relay server, all players will disconnect.
- 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
- VULKAN: Fix font driver 'vulkan_get_message_width()' function
- VIDEO FILTERS: Only use threads when the number exceeds 1. Fixes race conditions with some CPU filters on Vita
- WINDOWS: Add ANGLE support for x64, separate binary (for now?)
# 1.8.2
- BUG/CRASH/GLSLANG: Fix glslang crashing error - managed to reproduce an issue which has been plaguing
users for a while, where glslang throws an assert after closing a game (and starting a new one). This would affect all video drivers that use Slang for shaders, such as D3D10/11/12/Vulkan/Metal
- CHEEVOS: Display Unofficial and Unsupported achievement states
- CHEEVOS: Pass RetroArch and core versions through User-Agent HTTP header
- CHEEVOS: Use PSX.EXE if SYSTEM.CNF cannot be found
- CHEEVOS: Prevent loading state while achievements are still being fetched from server
- CHEEVOS: Pause hardcore if core doesn't support achievements
- CHEEVOS/CRASH: Fix AddressSanitizer + CHD cause hard crash when Cheevos are enabled
- CORE UPDATER: Only download when new core is available
- CORE UPDATER: Add option to update all installed cores
- DRM/KMS: Better detection for the current video mode
- DYNAMIC RATE CONTROL: Support DRC even when using a vsync swap interval higher than 1
- EMSCRIPTEN: Fix bug in Emscripten input code
- EMSCRIPTEN: Changes to support upgraded emscripten SDK
- FFMPEG CORE: Hardware accelerated video decoding
- FFMPEG CORE: Implement send/receive encoding API, will allow for hardware accelerated AMD video encoding
- FFMPEG CORE: The video FIFO can be removed, since we have a ring buffer in its place. This removes unneeded copy operations and as a positive side improves overall decoding speed. Makes 8k60p SW and 4k60p HW decoding feasible on many systems. For now the ring buffer is 32 images deep. This limitation will be removed, once audio and video decoder have their own packet handling.
- INPUT: Fix 'Analog stick controls menu even if autoconfig disabled'
- INPUT/TURBO: Added alternate Turbo-Mode 'Single Button' - For systems supporting only a single button, the turbo-button will toggle firing that button without the need to hold it. When holding the button turbo will be suspended and resumed when the button is released. Holding the button may have a different function to just tapping it.
- IOS: Forcibly disable Threaded Video until UIWindow concurrency issues are fixed
- INPUT/ANALOG: Fix radial analog deadzone scaling
- INPUT/ANALOG: Implement proper analog button deadzone
- INPUT/MENU: Analog stick controls menu even if autoconfig disabled
- LOCALIZATION: Update Italian translation
- LOCALIZATION: Update French translation
- LOCALIZATION: Update Polish translation
- LOCALIZATION: Update Portuguese Brazilian Translation
- LOCALIZATION: Update Turkish translation
- LINUX/LOCALIZATION: Correct Droid Sans Fallback font path in Linux. This should fix Chinese/Korean font display issues on Fedora/RHEL/CentOS/openSUSE/SLE
- MENU/BUGFIX: When using a keyboard/gamepad/mouse wheel to navigate, the menu scroll position is always maintained and updated in a consistent (and expected) fashion
- MENU/BUGFIX: When resizing the window, or changing the orientation of a mobile device, the current scroll position is correctly preserved
- MENU/BUGFIX: All 'normal' pointer input is now inhibited when showing message boxes
- MENU/BUGFIX: The pointer actions 'select' and 'cancel' both now properly close a message box if it is currently being shown
- MENU/BUGFIX: Pointer 'select' and 'cancel' actions are now inhibited when an input bind dialog is active
- MENU/INPUT: Change 'User' terminology to 'Port' for input binding
- MENU/LINUX: Add proper drives to Load Content
- MENU/MATERIALUI: Halt scrolling when pointer is pressed/stationary
- MENU/MATERIALUI: Dual thumbnail view
- MENU/MATERIALUI: Fullscreen thumbnail viewer for boxart
- MENU/MATERIALUI: Scroll rapidly by press and holding the scrollbar
- MENU/RGUI: New theme 'Flux'
- MENU/OZONE: Thumbnails now have a fade-in animation
- MENU/OZONE: Fullscreen thumbnail viewer for boxart and pictures
- MENU/QT/WIMP: Fix dock titles getting cut off
- MENU/XMB: Fullscreen thumbnail viewer for boxart and pictures
- MENU/USABILITY: Selectively hide 'Disallow Non-Slave Mode Clients' if 'Allow Slave-Mode Clients' is disabled
- MENU/USABILITY: Hide 'Show desktop menu on startup' if 'Desktop menu' setting itself is disabled
- MENU/USABILITY: Reimplement Quick Menu - > Shaders -> Watch shader files for changes - can now be turned on/off through touch
- MENU/USABILITY: Refactor Quick Menu - Controls - each port now has its own submenu
- MENU/USABILITY: Quick Menu - Cheats - Delete All no longer requires five right button presses - this should fix this functionality for mobile touch users too
- MENU/USABILITY: Hide Refresh Rate options when Threaded Video is enabled - these settings do nothing with Threaded Video
- MENU/USABILITY: Hide Logging Verbosity levels behind Logging Verbosity
- MENU/USABILITY: Get rid of 'Port Number' label for Port Binds screen
- MENU/USABILITY/MOBILE: Should no longer crash when clicking on a cheat entry
- MENU/USABILITY: Shader parameters now have a dropdown list
- MENU/USABILITY: Shader passes now has a dropdown list
- MENU/USABILITY: Video - Hide Windowed Mode settings selectively
- MENU/USABILITY: Video - Hide Fullscreen Mode settings if windowed mode is not supported by context driver
- MENU/USABILITY: Selectively hide Network Command Port
- MENU/USABILITY: Selectively hide Relay Server Location
- MENU/USABILITY: User Interface -> Appearance - Selectively hide XMB Horizontal Animation setting
- MENU/USABILITY: Playlists - more selective hiding
- MENU/USABILITY: Selectively hide Rewind Settings
- MENU/USABILITY: Selectively hide Overlay Settings
- MENU/USABILITY: Selectively hide FPS Update Interval based on Display Framerate being enabled
- MENU/USABILITY: Selectively hide Onscreen Notifications BG Color Settings
- MENU/USABILITY: Settings -> Logging - Hide 'Log To File Timestamp' if 'Log To File' is disabled
- MENU/USABILITY: Video -> Scaling - Hide Custom Viewport X/Y when Integer Scale is enabled as description indicates
- MENU/USABILITY: Achievement submenu - selectively hide
- MENU/USABILITY: Settings -> Video -> Aspect ratio - selectively hide/show values based on whether you have Custom or Config selected
- MENU/USABILITY: Settings -> Video -> Selectively hide Hard Sync
- MENU/USABILITY: Settings -> Video -> Implement selective hiding for VSync and Hard Sync
- MENU/USABILITY: Selective hiding of Runahead settings based on global setting
- MENU/USABILITY: Add Input -> Haptic Feedback submenu
- MENU/USABILITY: Add Input -> Menu Controls submenu
- MENU/USABILITY: Settings -> Video -> Max Swapchain Images - Add OK action
- MENU/USABILITY: Input - Implement OK action for Bind Hold, Turbo Period and Duty Cycle
- MENU/USABILITY: Input - Hotkey Binds refactor
- MENU/USABILITY: Move 'Press Quit Twice' and 'Menu Toggle Gamepad Combo' to Input -> Hotkey Binds
- MENU/USABILITY: Video - Add sublabel for Video Output submenu
- MENU/USABILITY: If 'Favorites Tab' is disabled, don't show 'Add To Favorites' option in Quick Menu/Playlist menu
- MENU/USABILITY: If On-Demand Thumbnail Downloader is enabled, hide 'Download Thumbnails' from playlist menu screen
- MENU/USABILITY: Add Audio Driver setting to Audio -> Output
- MENU/USABILITY: Add Audio -> Resampler settings
- MENU/USABILITY: Add Audio -> Output and Audio -> Synchronization
- OPENGL: Shaders are now working properly (only in OpenGL) when rotating both from Core API rotation and from menu video rotation. The fix is clearly visible with crt-royale for example
- OPENGL: 1:1 PAR is now correct when rotating (both from Core API rotation and from menu video rotation, as you said, in the latter case you currently have to change Aspect Ratio after menu video rotation for it to work)
- OPENGL: When using Custom Aspect Ratio and rotation (both from Core API rotation and from menu video rotation), Integer Scaling is now working properly (correct multiples of internal resolution). Even when Integer Scaling is not activated, the Custom AR width / height are now correctly labeled using (1x), (2x), ... suffixes. You also have to activate Integer Scaling after menu video rotation for it to work
- OPENGL: For all other Aspect Ratio options, Integer Scaling and rotation (both from Core API rotation and from menu video rotation) are now working properly together (correct multiples of internal resolution). You also have to activate Integer Scaling after menu video rotation for it to work
- OPENBSD/POWERPC: Should build now on OpenBSD PowerPC
- PLAYLISTS: Pressing 'Start' or long touching a playlist will bring you to a Playlist submenu where you can set a default core, setup thumbnail view, delete the playlist, etc
- OSX: Forcibly disable Threaded Video until NSWindow concurrency issues are fixed
- PSP: Solving issue exiting RetroArch by HOME button
- SCANNER: Manual scanner, not dependent on database files
- SCANNER/MANUAL: Add option to scan inside archives
- SCANNER/MANUAL: Enable automatic naming of arcade content via DAT files. This is compatible with DAT files in either Logiqx XML or MAME List XML format.
- VIDEO: Do not reinit video driver on SET_SYSTEM_AV_INFO unless needed
- VIDEO: Support DRC even when using a vsync swap interval higher than 1
- VIDEO LAYOUT: Fixed XML parsing of attributes with spaces, should fix issues with several video layouts
- VITA: GL1 driver support
- VITA/VITA2D: Several improvements to Vita 2D driver - menu widgets implemented
- VITA/VITA2D: Fix clipping and reduce number of calls
- VULKAN/ANDROID: Workaround weird WSI return codes in landscape mode - Android WSI wants you to use preTransform, and if it is not used correctly, Android 10 will return VK_SUBOPTIMAL_KHR, and we would create a new swapchain every frame. This workaround just ignores this error, since it's not really an error. A more "proper" fix is to use prerotate and modify the MVP matrices,
which might help certain devices with crummy display processors
- VULKAN/ANDROID: Recreate swapchain on orientation change. ANativeWindow getWidth/Height does not detect any changes when using
Vulkan, so use the old onContentRectChanged callback to get notified when size changed. Use those values instead when figuring out how large swapchain to create
- WINDOWS/XINPUT: Get rid of 128 byte device name limit for XInput device discover - when device name was too long, it would not be picked up by the XInput driver and would instead fallback to DirectInput
- WINDOWS: ANGLE OpenGL ES 2 support
- UWP: Fix crashes on startup / prompt for folder permissions when trying to load custom.ini
- UWP: Fix - Mouse input is offset on high DPI monitors
- UWP: Fix - Keyboard input hangs sometimes
- UWP: Fix - Multi-touch support
- UWP: Fix - Enable menu touch input by default
- UWP: Fix - Get user language
- UWP: Fix - Get CPU model name
- UWP: Fix - Use GLUI instead of XMB on Windows Mobile 10
- UWP: ANGLE OpenGL ES 2 support
# (1.8.1)
- BUGFIX/MENU: Fix menu rendering with Mali GPUs after changing video dimensions
- CDROM: Adds pregap support to cdfs helper methods
- CHEEVOS: Provides the new PCEngine hashing algorithm for RetroAchievements
- LOCALIZATION: Update French translation
- LOCALIZATION: Update Polish translation
- LOCALIZATION: Update Spanish translation
- MENU/MATERIALUI: Initial thumbnail support
- MENU/MATERIALUI: Cutie / Virtual Boy theme added
- MENU/MATERIALUI: Bugfix - Under certain extreme circumstances, entries with very long sublabel strings could have their text prematurely 'clipped' as the entry is scrolled beyond the top of the screen
- MENU/MATERIALUI: Bugfix - Certain setting value strings were unnecessarily truncated (with a ...) when using smooth ticker text
- MENU/XMB: Sunbeam theme added
- SWITCH: Accelerometer, gyroscope and illuminance sensor support
- VITA: Accelerometer and gyroscope sensor support
# (1.8.0)
- AI SERVICE: Added in fix for BMP returns to AI service. Added in label passing to AI service call
- BSV: Fix BSV recording/playback
- BUGFIX: Fix crash when setting Thumbnail Directory
- BUGFIX/STABILITY: Set "Automatically Add Content to Playlist" to false by default, this was unstable on PS3 and Mac and other platforms potentially as well.
- COMMON: Graceful driver switching for Windows and Linux
- COMMON: Cache frame before converting 0RGB1555
- LAKKA: Wi-Fi Access Point settings
- MENU: Menu scaling improvements
- MENU/MATERIALUI: There are no longer any animation glitches when 'wraparound' scrolling from the last entry in a list to the first, or when performing horizontal swipe navigation gestures on certain settings-type entries
- MENU/MATERIALUI: List entries underneath the title and navigation bars are no longer highlighted when touching the title/navigation bars (this was only a cosmetic issue, but it was annoying...)
- MENU/MATERIALUI: The current menu list is no longer reloaded when pressing the currently active tab on the navigation bar
- MENU/MATERIALUI: The ticker text spacer has been set to a 'bullet' character (same as Ozone)
- MENU/MATERIALUI: The default colour theme has been set to 'Ozone Dark'
- MENU/MATERIALUI: Three new colour themes have been added.
- MENU/MATERIALUI: A new Menu Transition Animation option has been added under User Interface > Appearance. When this is enabled, menu transition events are animated
- MENU/MATERIALUI: The navigation bar is now shown at all times - i.e. it is an actual navigation tool, rather than a 'top-level-menu' curiosity
- MENU/MATERIALUI: Two new context-sensitive buttons have been added to the navigation bar - back button and resume button
- MENU/MATERIALUI: A new Auto-Rotate Navigation Bar option has been added under User Interface > Appearance. When enabled (this is the default setting), the navigation bar is moved to the right hand side of the screen when using landscape screen orientations.
- MENU/MATERIALUI: The playlists tab is now correctly hidden when User Interface > Views > Show Playlist Tabs is disabled
- MENU/MATERIALUI: Material UI now correctly readjusts its layout when screen orientation changes on mobile devices
- MENU/MATERIALUI: Material UI now resizes in real-time when the user manually sets the Menu Scale Factor (this never worked properly with the old DPI override)
- MENU/MATERIALUI: Material UI no longer leaks memory on 'context reset' (fonts were previously never free()'d)
- MENU/MATERIALUI: A new Android-style 'system bar' has been added. This shows current core name, clock and battery level
- MENU/MATERIALUI: A new search icon is shown on the title bar when viewing playlists and file browser lists. Pressing this launches the search interface
- MENU/MATERIALUI: The title bar now uses a larger font, and the sublabel font has also been enlarged a little, to more closely align with Material UI standards
- MENU/MATERIALUI: A number (quite a large number) of layout/spacing issues have been fixed
- MENU/MATERIALUI: The existing colour theme handling code is not fit for purpose, so the whole lot got ripped out and reimplemented. In doing so, also adjusted all the theme colours to better match Material UI standards - with a few liberties taken for aesthetic purposes.
- OSD: Fix fast forward indicator when not using menu widgets
- PSP1: Remove duplicated FPS indicator on the screen
- SWITCH: Make audren threaded audio driver the new default
- VIDEO LAYOUT: Add video layout mame overlay compatibility. Enabled for Windows/Linux/OSX/iOS/Android/libnx. Only works with GL driver for now, no glcore yet
# (1.7.9) (v2)
- 3DS: Fix 3DS screen flickering when OSD is enabled
- IOS: Fix crash that could happen at startup
- MENU/MATERIALUI: Change DPI scaling back to original - too many issues with current implementation, requires a redesign
# (1.7.9)
- AI SERVICE: Image mode is now much faster, it now saves the image in-memory in PNG format then passes it along to the translation service
- BUGFIX: Touch input - When using an overlay to toggle the quick menu on touchscreen devices, we no longer get 'phantom' menu input - i.e. the old bug of hitting the toggle and instantly resuming content (or performing a save state) is fixed
- BUGFIX: Networking - RetroArch crashed when pressing left while Relay Server Location entry was selected
- BUGFIX: Networking - fix memory leak that could happen at exit after a network
operation had run
- CHEEVOS: Improve handling of line endings when calculating CD hashes for retroachievements
- CHEEVOS: Add support for Sega CD/Saturn; reduce hash calls to server
- FPGA: Add initial FPGA port for Z-Turn boards - not really release-ready yet, will need community support to continue. Currently employs naive framebuffer approach, not fullspeed
- GL1: GLDirect (D3D9 to OGL1.1 wrapper) support
- GONG: Stability fixes
- LINUX/UDEV: Fix touchscreen/lightgun issues
- MENU/MATERIALUI: MaterialUI no longer 'forgets' its place when navigating backwards in menus, and navigation in general is 'cleaner'.
- MENU/MATERIALUI: Add initial gesture support
- MENU/MATERIALUI: Improved touch support
- MENU/MATERIALUI: Bugfix - Random' items are no longer automatically highlighted when performing standard up/down 'flick' scrolling through lists (items are only highlighted when you keep the pointer still for > 200 ms)
- MENU/MATERIALUI: Bugfix - The display no longer 'jerks' for one frame when navigating backwards through lists
- MENU/MATERIALUI: Bugfix - The Material UI scaling factor is now based upon the device-reported screen DPI value (previously it relied upon a hard-coded magic number, which was never correct)
- MENU/RGUI: Functional mouse/touchscreen support
- MENU/ONSCREEN KEYBOARD: On-screen keyboard entry via mouse/touchscreen has been tidied up - no more double inputs (or unwanted menu interaction in the background)
- MENU/MOUSE: Mouse wheel up/down is now a proper 'up/down', same as using cursor keys or a dpad
- MENU/MOUSE: Mouse wheel tilt left/right has been wired up to normal 'left/right' commands. Also further improved mouse wheel tilt
- MENU/OZONE: Add option to toggle between static and scrolling content metadata
- MENU/XMB: Add full gesture support
- MENU/OSX: Fixed mouse buttons - mouse down events were not hooked up
- MENU: When navigating backwards from a core options drop-down list (i.e. pressing select or cancel), the last menu position is remembered (instead of resetting back to the first core option item each time)
- MENU: Add mouse/touchscreen gesture support
- MENU: Add option to delete playlists (Settings > Playlists > Playlist Management)
- MOBILE (ANDROID/IOS): Add option to automatically rotate overlays when changing orientation
- OSD: Memory details should now be available on every platform (get_mem_total and get_mem_free need to be implemented in the frontend driver for it to work)
- OSD: Memory details can now be shown individually without FPS and frame count
- PS2: Fix memory leaks in font/video driver
- SWITCH: Set default aspect ratio to core provided instead of 4:3
- THREADED VIDEO: Fix FPS text in threaded video mode
- VITA: Set default aspect ratio to core provided instead of 4:3
- VITA: Add system language detection
- VITA: More memory support
- WIN32: Log window now has title 'Logging Console'
- WII: Add Wiimote lightgun support
# 1.7.8 (v4)
- COMMON: Enable customisation of runtime 'last played' display format.
- CHEEVOS: Add hashing support for PSX (bin/cue, chd, or real CD) (for real this time, got added in the CHANGELOG for v2 then reverted before it hit release)
- IOS: Update for iOS 13, fix the asset packaging issues
- LOCALIZATION: Update Portuguese Brazilian Translation
- MENU: Add 12-hour time/date versions of all formats
- SWITCH: Add 'AI Service' option to Switch (untested)
- SWITCH: Update to newest libnx
# 1.7.8 (v3)
- GLCORE: Ensure correct scaling of menu texture (with RGUI)
- IPS: Soft-Patch any IPS size
- METAL: Fix overlay issue - setup correct viewport before rendering overlay
- METAL/STB: Fix font driver issue with AMD GPUs on MacOS.
- MENU/RGUI: Correctly rescale menu when resizing window if aspect ratio lock is enabled.
- OSX: Remove OSX suffix in window title
- PSP: Fix audio conversion code
- REMAPS: Fix analog remapping regression -analog remapping would break controls
# 1.7.8 (v2)
- 3DS: Fix 3DS startup crash
@@ -880,3 +1168,4 @@ Skipped this one
# 1.4.1
+2 -2
View File
@@ -38,7 +38,7 @@ A pull request may be asked to fix the coding style before submission.
In other cases, a pull request may be followed up with a "style nit commit".
## Non-obvious things:
- Code should be both ISO C99 and ISO C++ compatible. This dual requirement is for XBox360 and MSVC in general. Think of it as a C++ compatible subset of C99.
- Code should be both C89 and ISO C++ compatible. This dual requirement is for XBox360 and MSVC in general. Think of it as a C++ compatible subset of C99.
- Warnings are not allowed (-Wall). Make sure your code is warning-free. Note that warning sensitivity differs a bit across compiler versions.
- Using deprecated APIs is discouraged.
@@ -55,4 +55,4 @@ We value discussing things in "real-time".
# Commit Access
Contributors who show a track record of making good pull requests over time will eventually get commit access to the repo.
This typically happens when the "overhead" of looking through pull requests over time becomes a burden.
This typically happens when the "overhead" of looking through pull requests over time becomes a burden.
+21 -17
View File
@@ -14,7 +14,11 @@ include config.mk
# (It'd be better to put this comment in that file, but .gitignore doesn't work on files that exist in the repo.)
-include Makefile.local
ifeq ($(HAVE_ANGLE), 1)
TARGET = retroarch_angle
else
TARGET = retroarch
endif
OBJ :=
LIBS :=
@@ -53,6 +57,10 @@ ifneq ($(findstring DOS,$(OS)),)
LDFLAGS += -lemu
endif
ifneq ($(findstring FPGA,$(OS)),)
DEFINES += -DHAVE_FPGA
endif
ifneq ($(findstring Win32,$(OS)),)
LDFLAGS += -static-libgcc -lwinmm
endif
@@ -98,10 +106,20 @@ ifneq ($(findstring Win32,$(OS)),)
LDFLAGS += -mwindows
endif
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 += -Wall $(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)
@@ -119,20 +137,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
@@ -199,7 +203,7 @@ endif
SYMBOL_MAP := -Wl,-Map=output.map
retroarch: $(RARCH_OBJ)
$(TARGET): $(RARCH_OBJ)
@$(if $(Q), $(shell echo echo LD $@),)
$(Q)$(LINK) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LIBRARY_DIRS)
@@ -276,7 +280,7 @@ install: $(TARGET)
fi
uninstall:
rm -f $(DESTDIR)$(BIN_DIR)/retroarch
rm -f $(DESTDIR)$(BIN_DIR)/$(TARGET)
rm -f $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
rm -f $(DESTDIR)$(DATA_DIR)/applications/retroarch.desktop
-92
View File
@@ -1,92 +0,0 @@
# This build was put together and is maintained by ModMyClassic.com for Libretro.
# The purpose is to give Libretro a proper "official" build platform for classic consoles.
# If you need any help in building for the classics or have any questions then please visit
# https://modmyclassic.com/comp and we will help in any way possible!
# Building Prerequisites ##############
# arm-linux-gnueabihf-strip
# patchelf
# bc
include version.all
# Classic Readme Variables ############
CLASSIC_ALT_VER := $(shell echo $(RARCH_VERSION) | tr . _)
CLASSIC_MODS_VER := Official_Retroarch_v$(CLASSIC_ALT_VER)
CLASSIC_MODS_NAME := RetroArch v$(RARCH_VERSION) (Official Optimised)
CLASSIC_VERSION := $(RARCH_VERSION)
MOD_CREATOR := Libretro + ModMyClassic
MOD_CATEGORY := RetroArch
GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`")
# Platform dependant Variables ########
HAKCHI_DIR := RA_Platform-Hakchi
HAKCHI_GIT := https://github.com/Classicmods/RA_Platform-Hakchi
# General Shared Variables ############
TARGET := retroarch
# Libretro Defines ####################
#HAVE_CLASSIC = Classic Hook, disable some features
#HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override
#HAVE_HAKCHI = Hakchi Hook, change default configurations etc (TODO)
all: $(TARGET)
retroarch:
#Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7)
patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf)
CFLAGS="-marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord
make HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it
arm-linux-gnueabihf-strip -v retroarch
patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary...
#HAKCHI BUILD (NESC, SNESC)
#FYI this build was originally known as RetroArch 'Neo' for Hakchi.
@echo "** BUILDING CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **"
rm -fr /tmp/$(HAKCHI_DIR)
cd /tmp/; git clone $(HAKCHI_GIT)
cp retroarch /tmp/$(HAKCHI_DIR)/bin/retroarch
echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > /tmp/$(HAKCHI_DIR)/etc/libretro/retroarch_version
cp /tmp/$(HAKCHI_DIR)/readme.md /tmp/$(HAKCHI_DIR)/readme_COPY.md
printf "%s\n" \
"---" \
"Name: $(CLASSIC_MODS_NAME)" \
"Creator: $(MOD_CREATOR)" \
"Category: $(MOD_CATEGORY)" \
"Version: $(CLASSIC_MODS_VER)" \
"Built on: $(shell date)" \
"Git commit: $(GIT_COMMIT)" \
"---" > /tmp/$(HAKCHI_DIR)/readme.md
cat /tmp/$(HAKCHI_DIR)/readme_COPY.md >> /tmp/$(HAKCHI_DIR)/readme.md
rm /tmp/$(HAKCHI_DIR)/readme_COPY.md
@echo "** COMPRESSING $(CLASSIC_MODS_VER) HMOD PACKAGE **"
cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" *
mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod .
@echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **"
rm -fr /tmp/$(HAKCHI_DIR) #clean up tmp
@echo "*********************************************************************"
@echo "*** Classic ARM7 Cortex A7 build and packages built successfully! ***"
@echo "*********************************************************************"
clean:
rm -rf obj-unix
rm -f *.d
rm -f *.o
rm -f audio/*.o
rm -f conf/*.o
rm -f gfx/*.o
rm -f gfx/drivers_font/*.o
rm -f gfx/drivers_font_renderer/*.o
rm -f gfx/drivers_context/*.o
rm -f gfx/py_state/*.o
rm -f compat/*.o
rm -f record/*.o
rm -f input/*.o
rm -f tools/*.o
rm -f $(BINDIR)/retroarch
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
rm -f $(CLASSIC_MODS_VER).hmod
+49
View File
@@ -0,0 +1,49 @@
# This build was put together and is maintained by ModMyClassic.com for Libretro.
# The purpose is to give Libretro a proper "official" build platform for classic consoles.
# If you need any help in building for the classics or have any questions then please visit
# https://modmyclassic.com and we will help in any way possible!
# Building Prerequisites ##############
# arm-linux-gnueabihf-strip
include version.all
# General Shared Variables ############
TARGET := retroarch
# Libretro Defines ####################
#HAVE_CLASSIC = Classic Hook, disable some features
#HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override
#HAVE_SEGAM = Sega Mini Hook, change default configurations etc (TODO)
all: $(TARGET)
retroarch:
#Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7)
patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf)
CFLAGS="-marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" ./configure --host=arm-linux-gnueabihf --disable-wayland --disable-x11 --disable-opengl --disable-opengl1 --disable-opengl_core --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord
make HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_SEGAM=1 -j #Cook it
arm-linux-gnueabihf-strip -v retroarch
@echo "*********************************************************************"
@echo "*** SEGA Mega Drive Mini RetroArch binary built successfully! ***"
@echo "*********************************************************************"
clean:
rm -rf obj-unix
rm -f *.d
rm -f *.o
rm -f audio/*.o
rm -f conf/*.o
rm -f gfx/*.o
rm -f gfx/drivers_font/*.o
rm -f gfx/drivers_font_renderer/*.o
rm -f gfx/drivers_context/*.o
rm -f gfx/py_state/*.o
rm -f compat/*.o
rm -f record/*.o
rm -f input/*.o
rm -f tools/*.o
rm -f $(BINDIR)/retroarch
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
+53
View File
@@ -0,0 +1,53 @@
# This build was put together and is maintained by ModMyClassic.com for Libretro.
# The purpose is to give Libretro a proper "official" build platform for classic consoles.
# If you need any help in building for the classics or have any questions then please visit
# https://modmyclassic.com and we will help in any way possible!
# INFO: THIS BUILD TARGET ALSO COVERS THE NESC!!!
# Building Prerequisites ##############
# arm-linux-gnueabihf-strip
# patchelf
include version.all
# General Shared Variables ############
TARGET := retroarch
# Libretro Defines ####################
#HAVE_CLASSIC = Classic Hook, disable some features
#HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override
#HAVE_HAKCHI = Hakchi Hook, change default configurations etc (TODO)
all: $(TARGET)
retroarch:
#Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7)
patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf)
CFLAGS="-marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" ./configure --host=arm-linux-gnueabihf --disable-wayland --disable-x11 --disable-opengl --disable-opengl1 --disable-opengl_core --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord
make HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it
arm-linux-gnueabihf-strip -v retroarch
patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary...
@echo "*********************************************************************"
@echo "*** NES/SNES Classic RetroArch binary built successfully! ***"
@echo "*********************************************************************"
clean:
rm -rf obj-unix
rm -f *.d
rm -f *.o
rm -f audio/*.o
rm -f conf/*.o
rm -f gfx/*.o
rm -f gfx/drivers_font/*.o
rm -f gfx/drivers_font_renderer/*.o
rm -f gfx/drivers_context/*.o
rm -f gfx/py_state/*.o
rm -f compat/*.o
rm -f record/*.o
rm -f input/*.o
rm -f tools/*.o
rm -f $(BINDIR)/retroarch
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
+115 -38
View File
@@ -7,6 +7,10 @@ ifeq ($(HAVE_STACK_USAGE), 1)
DEF_FLAGS += -fstack-usage
endif
ifeq ($(HAVE_CXX11), 1)
CXXFLAGS += $(CXX11_CFLAGS)
endif
ifeq ($(HAVE_GL_CONTEXT),)
HAVE_GL_CONTEXT = 0
HAVE_GL_MODERN = 0
@@ -153,9 +157,7 @@ ifeq ($(HAVE_DR_MP3), 1)
endif
OBJ += frontend/frontend_driver.o \
frontend/drivers/platform_null.o \
retroarch.o \
paths.o \
msg_hash.o \
intl/msg_hash_us.o \
$(LIBRETRO_COMM_DIR)/queues/task_queue.o \
@@ -164,6 +166,7 @@ OBJ += frontend/frontend_driver.o \
tasks/task_file_transfer.o \
tasks/task_image.o \
tasks/task_playlist_manager.o \
tasks/task_manual_content_scan.o \
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.o \
$(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.o \
$(LIBRETRO_COMM_DIR)/encodings/encoding_base64.o \
@@ -181,7 +184,6 @@ OBJ += frontend/frontend_driver.o \
$(LIBRETRO_COMM_DIR)/lists/string_list.o \
$(LIBRETRO_COMM_DIR)/string/stdstring.o \
$(LIBRETRO_COMM_DIR)/memmap/memalign.o \
list_special.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_stdio.o
ifneq ($(findstring Linux,$(OS)),)
@@ -203,13 +205,13 @@ endif
OBJ += \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_intf.o \
$(LIBRETRO_COMM_DIR)/file/file_path.o \
$(LIBRETRO_COMM_DIR)/file/file_path_io.o \
file_path_special.o \
file_path_str.o \
$(LIBRETRO_COMM_DIR)/hash/rhash.o \
input/common/input_hid_common.o \
input/input_mapper.o \
led/led_driver.o \
led/drivers/led_null.o \
gfx/video_coord_array.o \
gfx/video_display_server.o \
gfx/video_crt_switch.o \
@@ -243,25 +245,13 @@ OBJ += \
$(LIBRETRO_COMM_DIR)/audio/dsp_filter.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/sinc_resampler.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/nearest_resampler.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/null_resampler.o \
$(LIBRETRO_COMM_DIR)/utils/md5.o \
location/drivers/nulllocation.o \
camera/drivers/nullcamera.o \
wifi/drivers/nullwifi.o \
gfx/drivers/nullgfx.o \
gfx/display_servers/dispserv_null.o \
audio/drivers/nullaudio.o \
input/drivers/nullinput.o \
input/drivers_hid/null_hid.o \
input/drivers_joypad/null_joypad.o \
playlist.o \
record/drivers/record_null.o \
$(LIBRETRO_COMM_DIR)/features/features_cpu.o \
performance_counters.o \
verbosity.o \
midi/drivers/null_midi.o \
$(LIBRETRO_COMM_DIR)/playlists/label_sanitization.o
$(LIBRETRO_COMM_DIR)/playlists/label_sanitization.o \
manual_content_scan.o
ifeq ($(HAVE_AUDIOMIXER), 1)
DEFINES += -DHAVE_AUDIOMIXER
@@ -595,7 +585,9 @@ ifeq ($(HAVE_ALSA), 1)
OBJ += audio/drivers/alsa.o
ifneq ($(HAVE_HAKCHI), 1)
OBJ += midi/drivers/alsa_midi.o
ifneq ($(HAVE_SEGAM), 1)
OBJ += midi/drivers/alsa_midi.o
endif
endif
ifeq ($(HAVE_THREADS), 1)
@@ -799,7 +791,6 @@ endif
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/menu_driver.o \
menu/menu_content.o \
menu/menu_setting.o \
menu/widgets/menu_filebrowser.o \
menu/widgets/menu_dialog.o \
@@ -826,9 +817,8 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/menu_displaylist.o \
menu/menu_animation.o \
menu/drivers/menu_generic.o \
menu/drivers/null.o \
menu/menu_thumbnail_path.o \
menu/drivers_display/menu_display_null.o
menu/menu_thumbnail.o
ifeq ($(HAVE_MENU_WIDGETS), 1)
OBJ += menu/widgets/menu_widgets.o
@@ -843,13 +833,14 @@ endif
ifeq ($(HAVE_VIDEO_LAYOUT), 1)
DEFINES += -DHAVE_VIDEO_LAYOUT
OBJ += gfx/video_layout.o \
gfx/video_layout/view.o \
gfx/video_layout/element.o \
gfx/video_layout/component.o \
gfx/video_layout/internal.o \
gfx/video_layout/scope.o \
gfx/video_layout/load.o
OBJ += \
gfx/video_layout.o \
gfx/video_layout/view.o \
gfx/video_layout/element.o \
gfx/video_layout/component.o \
gfx/video_layout/internal.o \
gfx/video_layout/scope.o \
gfx/video_layout/load.o
endif
ifeq ($(HAVE_STB_FONT), 1)
@@ -890,6 +881,7 @@ ifeq ($(HAVE_VITA2D), 1)
$(DEPS_DIR)/libvita2d/shader/color_f_gxp.o \
$(DEPS_DIR)/libvita2d/shader/texture_v_gxp.o \
$(DEPS_DIR)/libvita2d/shader/texture_f_gxp.o \
$(DEPS_DIR)/libvita2d/shader/texture_tint_v_gxp.o \
$(DEPS_DIR)/libvita2d/shader/texture_tint_f_gxp.o
ifeq ($(HAVE_MENU_COMMON),1)
@@ -984,6 +976,12 @@ ifeq ($(HAVE_WAYLAND), 1)
endif
# XML
OBJ += \
$(LIBRETRO_COMM_DIR)/formats/xml/rxml.o \
$(LIBRETRO_COMM_DIR)/formats/logiqx_dat/logiqx_dat.o \
deps/yxml/yxml.o
#Input
ifeq ($(HAVE_DINPUT), 1)
@@ -1129,12 +1127,38 @@ ifeq ($(HAVE_SIXEL), 1)
endif
endif
ifeq ($(HAVE_NETWORK_VIDEO), 1)
ifneq ($(NETWORK_VIDEO_HOST),)
DEFINES += -DNETWORK_VIDEO_HOST=$(NETWORK_VIDEO_HOST)
else
DEFINES += -DNETWORK_VIDEO_HOST=127.0.0.1
endif
ifneq ($(NETWORK_VIDEO_PORT),)
DEFINES += -DNETWORK_VIDEO_PORT=$(NETWORK_VIDEO_PORT)
else
DEFINES += -DNETWORK_VIDEO_PORT=4953
endif
DEFINES += -DHAVE_NETWORK_VIDEO
OBJ += gfx/drivers/network_gfx.o \
gfx/drivers_context/network_ctx.o
endif
ifeq ($(HAVE_PLAIN_DRM), 1)
OBJ += gfx/drivers/drm_gfx.o
INCLUDE_DIRS += -I/usr/include/libdrm
LIBS += -ldrm
endif
ifeq ($(HAVE_VITAGL), 1)
DEFINES += -DHAVE_OPENGL1
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
endif
ifeq ($(HAVE_GL_CONTEXT), 1)
ifeq ($(HAVE_GL_MODERN), 1)
DEFINES += -DHAVE_OPENGL
@@ -1249,13 +1273,20 @@ endif
ifeq ($(HAVE_EGL), 1)
DEFINES += -DHAVE_EGL
DEF_FLAGS += $(EGL_CFLAGS)
LIBS += $(EGL_LIBS)
OBJ += gfx/common/egl_common.o
ifeq ($(HAVE_DYNAMIC_EGL), 1)
DEFINES += -DHAVE_DYNAMIC_EGL
else
LIBS += $(EGL_LIBS)
endif
endif
ifeq ($(HAVE_SDL2), 1)
HAVE_SDL_COMMON = 1
OBJ += gfx/drivers/sdl2_gfx.o
OBJ += gfx/drivers/sdl2_gfx.o \
gfx/common/sdl2_common.o
DEF_FLAGS += $(SDL2_CFLAGS)
LIBS += $(SDL2_LIBS)
else ifeq ($(HAVE_SDL), 1)
@@ -1263,6 +1294,12 @@ else ifeq ($(HAVE_SDL), 1)
OBJ += gfx/drivers/sdl_gfx.o
DEF_FLAGS += $(SDL_CFLAGS)
LIBS += $(SDL_LIBS)
else ifeq ($(HAVE_SDL_DINGUX), 1)
HAVE_SDL_COMMON = 1
DEF_FLAGS += -DHAVE_SDL -DHAVE_SDL_DINGUX
OBJ += gfx/drivers/sdl_dingux_gfx.o
DEF_FLAGS += $(SDL_DINGUX_CFLAGS)
LIBS += $(SDL_DINGUX_LIBS)
endif
ifeq ($(HAVE_SDL_COMMON), 1)
@@ -1695,12 +1732,11 @@ 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/xml/rxml.o \
$(LIBRETRO_COMM_DIR)/formats/image_transfer.o
# Easter Egg
ifeq ($(HAVE_EASTEREGG),1)
DEFINES += -DHAVE_EASTEREGG
# Gong embedded core
ifeq ($(HAVE_GONG),1)
DEFINES += -DHAVE_GONG
OBJ += cores/libretro-gong/gong.o
endif
@@ -1716,6 +1752,11 @@ ifeq ($(HAVE_V4L2),1)
LIBS += $(V4L2_LIBS)
endif
# Accessibility
ifeq ($(HAVE_ACCESSIBILITY), 1)
DEFINES += -DHAVE_ACCESSIBILITY
endif
# Things that depend on network availability
ifeq ($(HAVE_NETWORKING), 1)
@@ -1725,6 +1766,7 @@ ifeq ($(HAVE_NETWORKING), 1)
$(LIBRETRO_COMM_DIR)/net/net_http_parse.o \
$(LIBRETRO_COMM_DIR)/net/net_socket.o \
$(LIBRETRO_COMM_DIR)/net/net_natt.o \
core_updater_list.o \
network/net_http_special.o \
tasks/task_http.o \
tasks/task_netplay_lan_scan.o \
@@ -1734,7 +1776,8 @@ ifeq ($(HAVE_NETWORKING), 1)
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += tasks/task_pl_thumbnail_download.o \
menu/menu_networking.o
tasks/task_core_updater.o \
menu/menu_networking.o
endif
ifeq ($(HAVE_SSL), 1)
@@ -1777,6 +1820,7 @@ ifeq ($(HAVE_NETWORKING), 1)
cheevos-new/fixup.o \
cheevos-new/parser.o \
cheevos-new/hash.o \
$(LIBRETRO_COMM_DIR)/formats/cdfs/cdfs.o \
deps/rcheevos/src/rcheevos/trigger.o \
deps/rcheevos/src/rcheevos/condset.o \
deps/rcheevos/src/rcheevos/condition.o \
@@ -1893,6 +1937,13 @@ ifeq ($(HAVE_NETWORKING), 1)
endif
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
endif
ifneq ($(findstring Win32,$(OS)),)
OBJ += media/rarch.o \
gfx/common/win32_common.o \
@@ -1911,11 +1962,19 @@ ifneq ($(findstring Win32,$(OS)),)
LIBS += -lhid -lsetupapi
endif
ifeq ($(HAVE_ANGLE), 1)
OBJ += gfx/common/angle_common.o
DEFINES += -DHAVE_ANGLE
endif
# Record
ifeq ($(HAVE_FFMPEG), 1)
OBJ += record/drivers/record_ffmpeg.o \
cores/libretro-ffmpeg/ffmpeg_core.o
cores/libretro-ffmpeg/ffmpeg_core.o \
cores/libretro-ffmpeg/packet_buffer.o \
cores/libretro-ffmpeg/video_buffer.o \
$(LIBRETRO_COMM_DIR)/rthreads/tpool.o
LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) $(SWSCALE_LIBS) $(SWRESAMPLE_LIBS) $(FFMPEG_LIBS)
DEFINES += -DHAVE_FFMPEG
@@ -2007,10 +2066,24 @@ ifeq ($(HAVE_RPILED), 1)
OBJ += led/drivers/led_rpi.o
endif
ifeq ($(HAVE_MATH_NEON), 1)
DEFINES += -DHAVE_MATH_NEON
INCLUDE_DIRS += -I$(DEPS_DIR)/math-neon/source
SOURCES := $(DEPS_DIR)/math-neon/source
OBJ += $(patsubst %.c,%.o,$(foreach dir,$(SOURCES), $(wildcard $(dir)/*.c)))
endif
ifeq ($(HAVE_VITAGL), 1)
DEFINES += -DHAVE_VITAGL -DTRANSPOSE_MATRICES
INCLUDE_DIRS += -I$(DEPS_DIR)/vitaGL/source
SOURCES := $(DEPS_DIR)/vitaGL/source $(DEPS_DIR)/vitaGL/source/utils
OBJ += $(patsubst %.c,%.o,$(foreach dir,$(SOURCES), $(wildcard $(dir)/*.c)))
endif
##################################
### Classic Platform specifics ###
###############WIP################
# Help at https://modmyclassic.com/comp
# Help at https://modmyclassic.com
ifeq ($(HAVE_CLASSIC), 1)
DEFINES += -DHAVE_CLASSIC
@@ -2040,4 +2113,8 @@ endif
ifeq ($(HAVE_HAKCHI), 1)
DEFINES += -DHAVE_HAKCHI
endif
ifeq ($(HAVE_SEGAM), 1)
DEFINES += -DHAVE_SEGAM
endif
##################################
+1 -1
View File
@@ -24,11 +24,11 @@ OBJ := ctr/ctr_system.o \
frontend/frontend_salamander.o \
frontend/frontend_driver.o \
frontend/drivers/platform_ctr.o \
frontend/drivers/platform_null.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/file/file_path.o \
libretro-common/file/file_path_io.o \
libretro-common/string/stdstring.o \
libretro-common/lists/string_list.o \
libretro-common/lists/dir_list.o \
+188
View File
@@ -0,0 +1,188 @@
CC = /opt/gcw0-toolchain/usr/bin/mipsel-gcw0-linux-uclibc-gcc
CXX = /opt/gcw0-toolchain/usr/bin/mipsel-gcw0-linux-uclibc-g++
PACKAGE_NAME = retroarch
DEBUG ?= 0
HAVE_7ZIP = 1
HAVE_AL = 1
# this freezes when switching back from menu
HAVE_ALSA = 0
HAVE_BUILTINMBEDTLS = 1
HAVE_BUILTINZLIB = 1
HAVE_C99 = 1
HAVE_CC = 1
HAVE_CC_RESAMPLER = 1
HAVE_CHD = 1
HAVE_CHEEVOS = 1
HAVE_COMMAND = 1
HAVE_CXX = 1
HAVE_DR_MP3 = 1
HAVE_DYNAMIC = 1
HAVE_EGL = 1
HAVE_FREETYPE = 1
HAVE_GDI = 1
HAVE_GETADDRINFO = 1
HAVE_GETOPT_LONG = 1
HAVE_GLSL = 1
HAVE_HID = 1
HAVE_IBXM = 1
HAVE_IMAGEVIEWER = 1
HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_MENU = 1
HAVE_MENU_COMMON = 1
HAVE_MENU_WIDGETS = 1
HAVE_MMAP = 1
HAVE_NETWORKING = 1
HAVE_OPENDINGUX_FBDEV = 1
HAVE_OPENGL = 1
HAVE_OPENGL1 = 0
HAVE_OPENGLES = 1
HAVE_OPENGLES3 = 0
HAVE_OPENGL_CORE = 0
HAVE_OPENSSL = 1
HAVE_OVERLAY = 1
HAVE_RBMP = 1
HAVE_RJPEG = 1
HAVE_RPILED = 1
HAVE_RPNG = 1
HAVE_RUNAHEAD = 1
HAVE_SDL_DINGUX = 1
HAVE_SHADERPIPELINE = 1
HAVE_STB_FONT = 1
HAVE_STB_IMAGE = 1
HAVE_STB_VORBIS = 1
HAVE_STDIN_CMD = 1
HAVE_STRCASESTR = 1
HAVE_THREADS = 1
HAVE_TRANSLATE = 1
HAVE_UDEV = 1
HAVE_VIDEO_LAYOUT = 1
HAVE_XMB = 1
HAVE_ZLIB = 1
OS = Linux
TARGET = retroarch
OPK_NAME = retroarch.opk
OBJ :=
LINK := $(CXX)
DEF_FLAGS := -march=mips32 -mtune=mips32r2 -mhard-float -ffast-math -fomit-frame-pointer -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DDINGUX=1 -MMD
DEF_FLAGS += -Wall -Wno-unused-variable
DEF_FLAGS += -std=gnu99 -D_GNU_SOURCE
LIBS := -ldl -lz -lrt -lcrypto -lssl -ludev -pthread
CFLAGS :=
CXXFLAGS := -fno-exceptions -fno-rtti -std=c++11 -D__STDC_CONSTANT_MACROS
ASFLAGS :=
LDFLAGS := -flto
INCLUDE_DIRS = -I/opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include
LIBRARY_DIRS = -L/opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/lib
DEFINES := -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 -UHAVE_STATIC_DUMMY
DEFINES += -DHAVE_C99=1 -DHAVE_CXX=1 -DHAVE_OPENDINGUX_FBDEV=1
DEFINES += -DHAVE_GETOPT_LONG=1 -DHAVE_STRCASESTR=1 -DHAVE_DYNAMIC=1
DEFINES += -DHAVE_AL=1
DEFINES += -DHAVE_ONLINE_UPDATER=1
DEFINES += -DHAVE_UPDATE_ASSETS=1
DEFINES += -DHAVE_UDEV=1
SDL_DINGUX_CFLAGS := $(shell /opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/bin/sdl-config --cflags)
SDL_DINGUX_LIBS := $(shell /opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/bin/sdl-config --libs)
FREETYPE_CFLAGS := $(shell /opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/bin/freetype-config --cflags)
FREETYPE_LIBS := $(shell /opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/bin/freetype-config --libs)
AL_LIBS := -lopenal
OPENGLES_CFLAGS := -DMESA_EGL_NO_X11_HEADERS
OPENGLES_LIBS := -lGLESv2 -lEGL
MMAP_LIBS = -lc
OBJDIR_BASE := obj-unix
ifeq ($(DEBUG), 1)
OBJDIR := $(OBJDIR_BASE)/debug
DEF_FLAGS += -O0 -g -DDEBUG -D_DEBUG
else
OBJDIR := $(OBJDIR_BASE)/release
DEF_FLAGS += -O2 -DNDEBUG
endif
include Makefile.common
DEF_FLAGS += $(INCLUDE_DIRS)
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS)
HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h)
Q := @
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
define DESKTOP_ENTRY
[Desktop Entry]
Name=retroarch
Comment=Retroarch
Exec=retroarch
Terminal=false
Type=Application
StartupNotify=true
Icon=retroarch
Categories=emulators;
X-OD-NeedsDownscaling=true
endef
export DESKTOP_ENTRY
all: $(TARGET) opk
-include $(RARCH_OBJ:.o=.d)
SYMBOL_MAP := -Wl,-Map=output.map
$(TARGET): $(RARCH_OBJ)
@$(if $(Q), $(shell echo echo LD $@),)
$(LINK) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LIBRARY_DIRS)
$(OBJDIR)/%.o: %.c
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CC $<),)
$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c -o $@ $<
$(OBJDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CXX $<),)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.m
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo OBJC $<),)
$(CXX) $(OBJCFLAGS) $(DEFINES) -MMD -c -o $@ $<
.FORCE:
$(OBJDIR)/git_version.o: git_version.c .FORCE
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo CC $<),)
$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(OBJDIR)/%.o: %.S $(HEADERS)
@mkdir -p $(dir $@)
@$(if $(Q), $(shell echo echo AS $<),)
$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $<
clean:
rm -rf $(OBJDIR_BASE)
rm -f $(TARGET)
rm -f *.d
rm -rf $(OPK_NAME)
opk: $(TARGET)
echo "$$DESKTOP_ENTRY" > default.gcw0.desktop
rm -f $(OPK_NAME)
cp media/ico_src/icon32.png retroarch.png
mksquashfs retroarch default.gcw0.desktop retroarch.png $(OPK_NAME) -all-root -no-xattrs -noappend -no-exports
rm -f default.gcw0.desktop retroarch.png
.PHONY: all clean opk
print-%:
@echo '$*=$($*)'
+6 -6
View File
@@ -30,7 +30,7 @@ HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_STB_FONT = 1
MEMORY = 536870912
MEMORY = 134217728
PRECISE_F32 = 1
@@ -39,8 +39,8 @@ OBJDIR := obj-emscripten
#if you compile with SDL2 flag add this Emscripten flag "-s USE_SDL=2" to LDFLAGS:
LIBS := -s USE_ZLIB=1
LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 -s TOTAL_MEMORY=$(MEMORY) -s NO_EXIT_RUNTIME=0 -s FULL_ES2=1 \
-s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \
LDFLAGS := -L. --no-heap-copy -s $(LIBS) -s TOTAL_MEMORY=$(MEMORY) -s NO_EXIT_RUNTIME=0 -s FULL_ES2=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['callMain']" \
-s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \
--js-library emscripten/library_rwebaudio.js \
--js-library emscripten/library_rwebcam.js \
--js-library emscripten/library_errno_codes.js
@@ -70,16 +70,16 @@ ifeq ($(DEBUG), 1)
LDFLAGS += -O0 -g
CFLAGS += -O0 -g
else
LDFLAGS += -O2 -s WASM=1
LDFLAGS += -O3 -s WASM=1
# WARNING: some optimizations can break some cores (ex: LTO breaks tyrquake)
LDFLAGS += -s PRECISE_F32=$(PRECISE_F32)
ifeq ($(LTO), 1)
LDFLAGS += --llvm-lto 3
endif
CFLAGS += -O2
CFLAGS += -O3
endif
CFLAGS += -DHAVE_RPNG -Wall -I. -Ilibretro-common/include -std=gnu99 -s USE_ZLIB=1 \
CFLAGS += -Wall -I. -Ilibretro-common/include -std=gnu99 $(LIBS) \
-s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_take_screenshot']"
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
+6 -6
View File
@@ -439,7 +439,7 @@ else ifeq ($(platform), windows_msvc2005_x86)
CXX = cl.exe
LD = link.exe
PLATCFLAGS += -D_WIN32 -D_WIN32_WINNT=0x0410 -D__STDC_CONSTANT_MACROS -D_MBCS -DHAVE_EASTEREGG -D__MMX__ -D__SSE__ -DHAVE_OPENGL -DHAVE_OPENGL1 -DHAVE_GLSL -DHAVE_SHADERPIPELINE -DHAVE_OZONE
PLATCFLAGS += -D_WIN32 -D_WIN32_WINNT=0x0410 -D__STDC_CONSTANT_MACROS -D_MBCS -D__MMX__ -D__SSE__ -DHAVE_OPENGL -DHAVE_OPENGL1 -DHAVE_GLSL -DHAVE_SHADERPIPELINE -DHAVE_OZONE
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib msimg32.lib
PATH := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin"):$(PATH)
@@ -491,7 +491,7 @@ else ifneq (,$(findstring windows_msvc2010,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG -DHAVE_CDROM
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DWIN32 -DHAVE_CDROM
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib msimg32.lib
PlatformSuffix = $(subst windows_msvc2010_,,$(platform))
@@ -565,7 +565,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG -DHAVE_CDROM
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DWIN32 -DHAVE_CDROM
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2012_,,$(platform))
@@ -643,7 +643,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG -DHAVE_CDROM
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DWIN32 -DHAVE_CDROM
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2013_,,$(platform))
@@ -722,7 +722,7 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
PLATCFLAGS += -utf-8
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG -DHAVE_CDROM
PLATCFLAGS += -D__i686__ -D__MMX__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DWIN32 -DHAVE_CDROM
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2015_,,$(platform))
@@ -806,7 +806,7 @@ else ifneq (,$(findstring unix,$(platform)))
HAVE_GRIFFIN_CPP := 1
WANT_GLSLANG := 1
PLATCFLAGS += -DHAVE_EASTEREGG -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_UPDATE_ASSETS -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_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
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.
+4 -2
View File
@@ -21,6 +21,8 @@ OBJ :=
DEFINES := -D__SWITCH__=1 -U__linux__ -U__linux -DGLM_FORCE_PURE=1 -DRARCH_CONSOLE -DRARCH_INTERNAL -DGLOBAL_CONFIG_DIR='"/switch"' -DHAVE_STB_VORBIS
HAVE_DR_MP3 = 1
HAVE_TRANSLATE = 1
HAVE_AUDIOMIXER = 1
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
@@ -60,7 +62,7 @@ ifeq ($(HAVE_OPENGL), 1)
HAVE_XMB = 1
HAVE_OZONE = 1
HAVE_OVERLAY = 1
HAVE_VIDEO_LAYOUT = 0
HAVE_VIDEO_LAYOUT = 1
HAVE_GLSL = 1
else
HAVE_RGUI = 1
@@ -116,7 +118,7 @@ ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -mcpu=cortex-a57+crc+fp
CFLAGS := -g -Wall -O3 -ffast-math -ffunction-sections \
$(ARCH) $(DEFINES) $(INCLUDE_DIRS) -I$(LIBNX)/include -I$(PORTLIBS)/include/ -include $(LIBNX)/include/switch.h #$(shell $(PORTLIBS)/bin/freetype-config --cflags)
CFLAGS += $(INCLUDE) -DSWITCH=1 -DHAVE_LIBNX=1 -DNXLINK=1 -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DHAVE_STB_FONT #-DHAVE_FREETYPE
CFLAGS += $(INCLUDE) -DSWITCH=1 -DHAVE_LIBNX=1 -DNXLINK=1 -DHAVE_SHADERPIPELINE -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES -DHAVE_STB_FONT #-DHAVE_FREETYPE
ifeq ($(strip $(HAVE_STATIC_DUMMY)),1)
CFLAGS += -DHAVE_STATIC_DUMMY=1
+4 -1
View File
@@ -1,4 +1,4 @@
BUILD_PRX = 0
BUILD_FOR_PCSX2 = 0
DEBUG = 0
HAVE_KERNEL_PRX = 0
HAVE_LOGGER = 0
@@ -45,6 +45,9 @@ LDFLAGS += -L$(PS2SDK)/ports/lib -L$(PS2DEV)/gsKit/lib -L$(PS2SDK)/ee/lib -L$(CD
LIBS += -lretro_ps2 -lgskit -ldmakit -lgskit_toolkit -laudsrv -lmf -lpadx -lmtap -lmc -lhdd -lsdl -lfileXio -lz
LIBS += -lcdvdfs -lpatches -lpoweroff
ifeq ($(BUILD_FOR_PCSX2), 1)
RARCH_DEFINES += -DBUILD_FOR_PCSX2
endif
ifeq ($(HAVE_THREADS), 1)
RARCH_DEFINES += -DHAVE_THREADS
+1
View File
@@ -71,6 +71,7 @@ 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_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
+1 -1
View File
@@ -45,8 +45,8 @@ PPU_CXXFLAGS := $(PPU_OPTIMIZE_LV) $(INCFLAGS) $(DEFINES)
PPU_SRCS = frontend/frontend_salamander.c \
frontend/frontend_driver.c \
frontend/drivers/platform_ps3.c \
frontend/drivers/platform_null.c \
libretro-common/file/file_path.c \
libretro-common/file/file_path_io.c \
libretro-common/lists/dir_list.c \
libretro-common/lists/string_list.c \
libretro-common/file/retro_dirent.c \
+15
View File
@@ -58,3 +58,18 @@ OBJS = $(PSP_OBJECTS)
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
pspsh-debug:
pspsh -e reset
read -p "Start debugger in VSCode and press any key to continue... \n" -n1 -s
pspsh -e debug ./retroarchpsp.prx
pspsh
pspsh-run:
pspsh -e reset
pspsh -e ./retroarchpsp.prx
pspsh
debug: clean all pspsh-debug
run: clean all pspsh-run
+1 -1
View File
@@ -35,8 +35,8 @@ PSP_EBOOT_PIC1 = pkg/psp1/PIC1.PNG
OBJS = frontend/frontend_salamander.o \
frontend/frontend_driver.o \
frontend/drivers/platform_psp.o \
frontend/drivers/platform_null.o \
libretro-common/file/file_path.o \
libretro-common/file/file_path_io.o \
libretro-common/string/stdstring.o \
libretro-common/lists/string_list.o \
libretro-common/lists/dir_list.o \
+16 -11
View File
@@ -11,21 +11,24 @@ PC_DEVELOPMENT_UDP_PORT =
OBJ :=
DEFINES :=
DEFINES := -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS
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_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_CC_RESAMPLER -DHAVE_UPDATE_ASSETS
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_CC_RESAMPLER
ifeq ($(DEBUG), 1)
DEFINES += -DHAVE_NETLOGGER
endif
INCDIRS += -I. -Ideps/7zip -Ilibretro-common/include -Ilibretro-common/include/compat/zlib -Ideps/stb
else
HAVE_UPDATE_ASSETS := 1
HAVE_ONLINE_UPDATER := 1
HAVE_NEON := 1
HAVE_MATH_NEON := 1
HAVE_FILTERS_BUILTIN := 1
HAVE_LANGEXTRA := 1
HAVE_RPNG := 1
@@ -35,10 +38,12 @@ else
HAVE_ZLIB := 1
HAVE_7ZIP := 1
HAVE_VITA2D := 1
HAVE_VITAGL := 1
HAVE_NETWORKING := 1
HAVE_SOCKET_LEGACY := 1
HAVE_MENU := 1
HAVE_MENU_COMMON := 1
HAVE_MENU_WIDGETS = 1
HAVE_OVERLAY := 1
HAVE_VIDEO_LAYOUT := 0
HAVE_MATERIALUI := 1
@@ -85,18 +90,16 @@ LD := $(CXX)
LIBDIRS := -L.
ARCHFLAGS := -march=armv7-a -mfpu=neon -mfloat-abi=hard -DVITA
CFLAGS += $(ARCHFLAGS) -mword-relocations -fno-optimize-sibling-calls
CFLAGS += $(ARCHFLAGS) -mword-relocations -fno-optimize-sibling-calls -O2
ifeq ($(DEBUG), 1)
CFLAGS += -O2 -g
else
CFLAGS += -O3
CFLAGS += -g
endif
ASFLAGS := $(CFLAGS)
LDFLAGS := -Wl,-q
CFLAGS += -Wall -ffast-math
CFLAGS += -Wall -ffast-math -g
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
@@ -114,9 +117,9 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
endif
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
VITA_LIBS := -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub \
VITA_LIBS := -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub -lSceAppUtil_stub \
-lSceSysmodule_stub -lSceCtrl_stub -lSceHid_stub -lSceTouch_stub -lSceAudio_stub \
-lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub \
-lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub -lSceMotion_stub \
-lSceFiber_stub -lSceMotion_stub -lSceAppMgr_stub -lpthread -lpng -lz
LIBS := $(WHOLE_START) -lretro_vita $(WHOLE_END) $(VITA_LIBS) -lm -lc
@@ -154,17 +157,19 @@ $(TARGET).elf: $(OBJ) libretro_vita.a
$(LD) $(OBJ) $(LDFLAGS) $(LIBDIRS) $(LIBS) -o $@
%.velf: %.elf
cp $< $<.unstripped.elf
$(PREFIX)strip -g $<
vita-elf-create $< $@
%.self: %.velf
vita-make-fself -c -s $< $@
%.vpk: %.self
vita-mksfoex -s TITLE_ID=$(VITA_TITLE_ID) "$(VITA_TITLE_NAME)" param.sfo
vita-mksfoex -s TITLE_ID=$(VITA_TITLE_ID) "$(VITA_TITLE_NAME)" -d ATTRIBUTE2=12 param.sfo
vita-pack-vpk -s param.sfo -b $< $@
clean:
rm -f $(OBJ) $(TARGET).elf $(TARGET).velf $(TARGET).self param.sfo $(TARGET).vpk
rm -f $(OBJ) $(TARGET).elf $(TARGET).elf.unstripped.elf $(TARGET).velf $(TARGET).self param.sfo $(TARGET).vpk
rm -f $(OBJ:.o=.depend)
# Useful for developers
+4 -4
View File
@@ -21,9 +21,9 @@ RARCH_DEFINES = -DVITA -DIS_SALAMANDER -DRARCH_CONSOLE
LIBDIR =
LDFLAGS =
LIBS = -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub\
LIBS = -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub -lSceAppUtil_stub\
-lSceSysmodule_stub -lSceCtrl_stub -lSceHid_stub -lSceAudio_stub -lSceFiber_stub\
-lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub \
-lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub -lSceMotion_stub \
-lSceMotion_stub -lSceAppMgr_stub -lfreetype -lpng -lm -lc
ifeq ($(HAVE_FILE_LOGGER), 1)
@@ -35,8 +35,8 @@ CFLAGS += $(RARCH_DEFINES)
OBJS = frontend/frontend_salamander.o \
frontend/frontend_driver.o \
frontend/drivers/platform_psp.o \
frontend/drivers/platform_null.o \
libretro-common/file/file_path.o \
libretro-common/file/file_path_io.o \
libretro-common/string/stdstring.o \
libretro-common/lists/string_list.o \
libretro-common/lists/dir_list.o \
@@ -55,7 +55,7 @@ OBJS = frontend/frontend_salamander.o \
all: $(TARGET).vpk
%.vpk: eboot.bin
vita-mksfoex -s TITLE_ID=$(TITLE_ID) "$(TARGET)" param.sfo
vita-mksfoex -s TITLE_ID=$(TITLE_ID) "$(TARGET)" -d ATTRIBUTE2=12 param.sfo
vita-pack-vpk -s param.sfo -b eboot.bin $@
eboot.bin: $(TARGET).velf
+1 -1
View File
@@ -55,8 +55,8 @@ OBJ = frontend/frontend_salamander.o \
frontend/frontend_driver.o \
frontend/drivers/platform_gx.o \
frontend/drivers/platform_wii.o \
frontend/drivers/platform_null.o \
libretro-common/file/file_path.o \
libretro-common/file/file_path_io.o \
libretro-common/hash/rhash.o \
libretro-common/string/stdstring.o \
libretro-common/lists/string_list.o \
+3 -1
View File
@@ -53,11 +53,11 @@ ifeq ($(SALAMANDER_BUILD),1)
OBJ += frontend/frontend_salamander.o
OBJ += frontend/frontend_driver.o
OBJ += frontend/drivers/platform_wiiu.o
OBJ += frontend/drivers/platform_null.o
OBJ += libretro-common/encodings/encoding_utf.o
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
@@ -74,7 +74,9 @@ ifeq ($(SALAMANDER_BUILD),1)
else
DEFINES += -DRARCH_INTERNAL
DEFINES += -DHAVE_KEYMAPPER
DEFINES += -DHAVE_ONLINE_UPDATER
DEFINES += -DHAVE_UPDATE_ASSETS
DEFINES += -DHAVE_UPDATE_CORES
DEFINES += -DHAVE_FILTERS_BUILTIN
DEFINES += -DHAVE_SLANG
DEFINES += -DHAVE_SHADERPIPELINE
+22 -17
View File
@@ -1,5 +1,6 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* 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-
@@ -13,25 +14,29 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <compat/strl.h>
#include <retro_assert.h>
#include <streams/file_stream.h>
#include <file/file_path.h>
#include <string/stdstring.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>
#ifdef HAVE_CONFIG_H
#include "../config.h"
#include "config.h"
#endif
#include "menu_content.h"
#include "menu_driver.h"
#include "menu_shader.h"
#include "../core_info.h"
#include "../configuration.h"
#include "../defaults.h"
#include "../playlist.h"
#include "../verbosity.h"
RETRO_BEGIN_DECLS
/* This file should probably be removed, but may need
* to add something to it in the future... */
bool is_accessibility_enabled(void);
bool accessibility_speak_priority(const char* speak_text, int priority);
RETRO_END_DECLS
#endif
+1 -1
View File
@@ -372,7 +372,7 @@ static void *alsa_device_list_new(void *data)
n = hints;
while (*n != NULL)
while (*n)
{
char *name = snd_device_name_get_hint(*n, "NAME");
char *io = snd_device_name_get_hint(*n, "IOID");
+1 -1
View File
@@ -361,7 +361,7 @@ static void *alsa_thread_device_list_new(void *data)
n = hints;
while (*n != NULL)
while (*n)
{
char *name = snd_device_name_get_hint(*n, "NAME");
char *io = snd_device_name_get_hint(*n, "IOID");
+6
View File
@@ -52,7 +52,9 @@ typedef struct coreaudio
size_t buffer_size;
} coreaudio_t;
#if TARGET_OS_IOS
static bool g_interrupted;
#endif
static void coreaudio_free(void *data)
{
@@ -344,7 +346,11 @@ 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 TARGET_OS_IOS
while (!g_interrupted && size > 0)
#else
while (size > 0)
#endif
{
size_t write_avail;
+4 -4
View File
@@ -23,7 +23,7 @@
typedef struct
{
bool nonblocking;
bool nonblock;
bool playing;
int16_t* l;
int16_t* r;
@@ -180,7 +180,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
(((ctr->pos - ctr->playpos ) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)) ||
(((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (size >> 2)))
{
if (ctr->nonblocking)
if (ctr->nonblock)
ctr->pos = (ctr->playpos + (CTR_CSND_AUDIO_COUNT >> 1)) & CTR_CSND_AUDIO_COUNT_MASK;
else
{
@@ -189,7 +189,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
retro_sleep(1);
ctr_csnd_audio_update_playpos(ctr);
}while (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 1)
|| (((ctr->pos - ctr->playpos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)));
|| (((ctr->pos - ctr->playpos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)));
}
}
@@ -265,7 +265,7 @@ static void ctr_csnd_audio_set_nonblock_state(void *data, bool state)
{
ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data;
if (ctr)
ctr->nonblocking = state;
ctr->nonblock = state;
}
static bool ctr_csnd_audio_use_float(void *data)
+3 -3
View File
@@ -22,7 +22,7 @@
typedef struct
{
bool nonblocking;
bool nonblock;
bool playing;
int channel;
ndspWaveBuf dsp_buf;
@@ -102,7 +102,7 @@ static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size)
(((ctr->pos - sample_pos ) & CTR_DSP_AUDIO_COUNT_MASK) < (CTR_DSP_AUDIO_COUNT >> 4)) ||
(((sample_pos - ctr->pos) & CTR_DSP_AUDIO_COUNT_MASK) < (size >> 2)))
{
if (ctr->nonblocking)
if (ctr->nonblock)
ctr->pos = (sample_pos + (CTR_DSP_AUDIO_COUNT >> 1)) & CTR_DSP_AUDIO_COUNT_MASK;
else
{
@@ -173,7 +173,7 @@ static void ctr_dsp_audio_set_nonblock_state(void *data, bool state)
{
ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data;
if (ctr)
ctr->nonblocking = state;
ctr->nonblock = state;
}
static bool ctr_dsp_audio_use_float(void *data)
+66 -36
View File
@@ -94,30 +94,25 @@ struct audio_lock
DWORD size2;
};
static INLINE bool grab_region(dsound_t *ds, uint32_t write_ptr,
struct audio_lock *region)
static bool grab_region(dsound_t *ds, uint32_t write_ptr,
struct audio_lock *region, HRESULT res)
{
HRESULT res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE,
&region->chunk1, &region->size1, &region->chunk2, &region->size2, 0);
if (res == DSERR_BUFFERLOST)
{
#ifdef DEBUG
RARCH_WARN("[DirectSound error]: %s\n", "DSERR_BUFFERLOST");
#endif
if ((res = IDirectSoundBuffer_Restore(ds->dsb)) != DS_OK)
return false;
if ((res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE,
&region->chunk1, &region->size1, &region->chunk2, &region->size2, 0)) != DS_OK)
return false;
}
if (res == DS_OK)
return true;
}
#ifdef DEBUG
switch (res)
{
case DSERR_BUFFERLOST:
RARCH_WARN("[DirectSound error]: %s\n", "DSERR_BUFFERLOST");
break;
case DSERR_INVALIDCALL:
RARCH_WARN("[DirectSound error]: %s\n", "DSERR_INVALIDCALL");
break;
@@ -151,6 +146,7 @@ static DWORD CALLBACK dsound_thread(PVOID data)
while (ds->thread_alive)
{
HRESULT res;
bool is_pull = false;
struct audio_lock region;
DWORD read_ptr, avail, fifo_avail;
@@ -175,11 +171,15 @@ static DWORD CALLBACK dsound_thread(PVOID data)
continue;
}
if (!grab_region(ds, write_ptr, &region))
if ((res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE,
&region.chunk1, &region.size1, &region.chunk2, &region.size2, 0)) != DS_OK)
{
ds->thread_alive = false;
SetEvent(ds->event);
break;
if (!grab_region(ds, write_ptr, &region, res))
{
ds->thread_alive = false;
SetEvent(ds->event);
break;
}
}
if (fifo_avail < CHUNK_SIZE)
@@ -328,6 +328,19 @@ static BOOL CALLBACK enumerate_cb(LPGUID guid, LPCSTR desc, LPCSTR module, LPVOI
return TRUE;
}
static void dsound_set_wavefmt(WAVEFORMATEX *wfx,
unsigned channels, unsigned samplerate)
{
wfx->wFormatTag = WAVE_FORMAT_PCM;
wfx->nBlockAlign = channels * sizeof(int16_t);
wfx->wBitsPerSample = 16;
wfx->nChannels = channels;
wfx->nSamplesPerSec = samplerate;
wfx->nAvgBytesPerSec = wfx->nSamplesPerSec * wfx->nBlockAlign;
wfx->cbSize = 0;
}
static void *dsound_init(const char *dev, unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
@@ -390,12 +403,7 @@ static void *dsound_init(const char *dev, unsigned rate, unsigned latency,
goto error;
#endif
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 2;
wfx.nSamplesPerSec = rate;
wfx.wBitsPerSample = 16;
wfx.nBlockAlign = 2 * sizeof(int16_t);
wfx.nAvgBytesPerSec = rate * 2 * sizeof(int16_t);
dsound_set_wavefmt(&wfx, 2, rate);
ds->buffer_size = (latency * wfx.nAvgBytesPerSec) / 1000;
ds->buffer_size /= CHUNK_SIZE;
@@ -496,27 +504,49 @@ static ssize_t dsound_write(void *data, const void *buf_, size_t size)
if (!ds->thread_alive)
return -1;
while (size > 0)
if (ds->nonblock)
{
size_t avail;
if (size > 0)
{
size_t avail;
EnterCriticalSection(&ds->crit);
avail = fifo_write_avail(ds->buffer);
if (avail > size)
avail = size;
EnterCriticalSection(&ds->crit);
avail = fifo_write_avail(ds->buffer);
if (avail > size)
avail = size;
fifo_write(ds->buffer, buf, avail);
LeaveCriticalSection(&ds->crit);
fifo_write(ds->buffer, buf, avail);
LeaveCriticalSection(&ds->crit);
buf += avail;
size -= avail;
written += avail;
buf += avail;
size -= avail;
written += avail;
}
}
else
{
while (size > 0)
{
size_t avail;
if (ds->nonblock || !ds->thread_alive)
break;
EnterCriticalSection(&ds->crit);
avail = fifo_write_avail(ds->buffer);
if (avail > size)
avail = size;
if (avail == 0)
WaitForSingleObject(ds->event, INFINITE);
fifo_write(ds->buffer, buf, avail);
LeaveCriticalSection(&ds->crit);
buf += avail;
size -= avail;
written += avail;
if (!ds->thread_alive)
break;
if (avail == 0)
WaitForSingleObject(ds->event, INFINITE);
}
}
return written;
+7 -7
View File
@@ -166,7 +166,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
#endif
jd->client = jack_client_open("RetroArch", JackNullOption, NULL);
if (jd->client == NULL)
if (!jd->client)
goto error;
*new_rate = jack_get_sample_rate(jd->client);
@@ -176,14 +176,14 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
jd->ports[0] = jack_port_register(jd->client, "left", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
jd->ports[1] = jack_port_register(jd->client, "right", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
if (jd->ports[0] == NULL || jd->ports[1] == NULL)
if (!jd->ports[0] || !jd->ports[1])
{
RARCH_ERR("[JACK]: Failed to register ports.\n");
goto error;
}
jports = jack_get_ports(jd->client, NULL, NULL, JackPortIsPhysical | JackPortIsInput);
if (jports == NULL)
if (!jports)
{
RARCH_ERR("[JACK]: Failed to get ports.\n");
goto error;
@@ -196,7 +196,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
for (i = 0; i < 2; i++)
{
jd->buffer[i] = jack_ringbuffer_create(bufsize);
if (jd->buffer[i] == NULL)
if (!jd->buffer[i])
{
RARCH_ERR("[JACK]: Failed to create buffers.\n");
goto error;
@@ -229,7 +229,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
error:
for (i = 0; i < parsed; i++)
free(dest_ports[i]);
if (jports != NULL)
if (jports)
jack_free(jports);
free(jd);
return NULL;
@@ -334,14 +334,14 @@ static void ja_free(void *data)
jd->shutdown = true;
if (jd->client != NULL)
if (jd->client)
{
jack_deactivate(jd->client);
jack_client_close(jd->client);
}
for (i = 0; i < 2; i++)
if (jd->buffer[i] != NULL)
if (jd->buffer[i])
jack_ringbuffer_free(jd->buffer[i]);
#ifdef HAVE_THREADS
-96
View File
@@ -1,96 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - 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-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "../../retroarch.h"
#include "../../verbosity.h"
static void *null_audio_init(const char *device, unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
RARCH_ERR("Using the null audio driver. RetroArch will be silent.\n");
(void)device;
(void)rate;
(void)latency;
(void)new_rate;
return (void*)-1;
}
static void null_audio_free(void *data)
{
(void)data;
}
static ssize_t null_audio_write(void *data, const void *buf, size_t size)
{
(void)data;
(void)buf;
return size;
}
static bool null_audio_stop(void *data)
{
(void)data;
return true;
}
static bool null_audio_alive(void *data)
{
(void)data;
return true;
}
static bool null_audio_start(void *data, bool is_shutdown)
{
(void)data;
return true;
}
static void null_audio_set_nonblock_state(void *data, bool state)
{
(void)data;
(void)state;
}
static bool null_audio_use_float(void *data)
{
(void)data;
return true;
}
static size_t null_audio_write_avail(void *data)
{
(void)data;
return 0;
}
audio_driver_t audio_null = {
null_audio_init,
null_audio_write,
null_audio_stop,
null_audio_start,
null_audio_alive,
null_audio_set_nonblock_state,
null_audio_free,
null_audio_use_float,
"null",
NULL,
NULL,
null_audio_write_avail,
NULL
};
+1 -1
View File
@@ -115,7 +115,7 @@ static void *al_init(const char *device, unsigned rate, unsigned latency,
al->buffers = (ALuint*)calloc(al->num_buffers, sizeof(ALuint));
al->res_buf = (ALuint*)calloc(al->num_buffers, sizeof(ALuint));
if (al->buffers == NULL || al->res_buf == NULL)
if (!al->buffers || !al->res_buf)
goto error;
alGenSources(1, &al->source);
+56 -26
View File
@@ -238,45 +238,75 @@ 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_;
while (size)
if (sl->nonblock)
{
size_t avail_write;
if (sl->nonblock)
while (size)
{
size_t avail_write;
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
}
else
{
while (size)
{
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)
{
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)
if (avail_write)
{
RARCH_ERR("[OpenSL]: Failed to write! (Error: 0x%x)\n", (unsigned)res);
return -1;
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;
}
}
}
}
+7 -9
View File
@@ -29,7 +29,8 @@
typedef struct ps2_audio
{
bool nonblocking;
/* TODO/FIXME - nonblock is not implemented */
bool nonblock;
bool running;
} ps2_audio_t;
@@ -39,11 +40,11 @@ static void audioConfigure(ps2_audio_t *ps2, unsigned rate)
int err;
struct audsrv_fmt_t format;
format.bits = AUDIO_BITS;
format.freq = rate;
format.bits = AUDIO_BITS;
format.freq = rate;
format.channels = AUDIO_CHANNELS;
err = audsrv_set_format(&format);
err = audsrv_set_format(&format);
if (err)
{
@@ -82,15 +83,12 @@ static void ps2_audio_free(void *data)
static ssize_t ps2_audio_write(void *data, const void *buf, size_t size)
{
int bytes_sent;
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (!ps2->running)
return -1;
bytes_sent = audsrv_play_audio(buf, size);
return bytes_sent;
return audsrv_play_audio(buf, size);
}
static bool ps2_audio_alive(void *data)
@@ -134,7 +132,7 @@ static void ps2_audio_set_nonblock_state(void *data, bool toggle)
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (ps2)
ps2->nonblocking = toggle;
ps2->nonblock = toggle;
}
static bool ps2_audio_use_float(void *data)
+3 -3
View File
@@ -29,7 +29,7 @@
typedef struct
{
uint32_t audio_port;
bool nonblocking;
bool nonblock;
bool started;
volatile bool quit_thread;
fifo_buffer_t *buffer;
@@ -150,7 +150,7 @@ static ssize_t ps3_audio_write(void *data, const void *buf, size_t size)
{
ps3_audio_t *aud = data;
if (aud->nonblocking)
if (aud->nonblock)
{
if (fifo_write_avail(aud->buffer) < size)
return 0;
@@ -200,7 +200,7 @@ static void ps3_audio_set_nonblock_state(void *data, bool toggle)
{
ps3_audio_t *aud = data;
if (aud)
aud->nonblocking = toggle;
aud->nonblock = toggle;
}
static void ps3_audio_free(void *data)
+7 -7
View File
@@ -44,7 +44,7 @@
typedef struct psp_audio
{
bool nonblocking;
bool nonblock;
uint32_t* buffer;
uint32_t* zeroBuffer;
@@ -167,7 +167,7 @@ static void *psp_audio_init(const char *device,
psp->cond_lock = slock_new();
psp->cond = scond_new();
psp->nonblocking = false;
psp->nonblock = false;
psp->running = true;
psp->worker_thread = sthread_create(audioMainLoop, psp);
@@ -202,18 +202,18 @@ static void psp_audio_free(void *data)
static ssize_t psp_audio_write(void *data, const void *buf, size_t size)
{
psp_audio_t* psp = (psp_audio_t*)data;
psp_audio_t* psp = (psp_audio_t*)data;
uint16_t write_pos = psp->write_pos;
uint16_t sampleCount = size / sizeof(uint32_t);
if (!psp->running)
return -1;
if (psp->nonblocking)
if (psp->nonblock)
{
if (AUDIO_BUFFER_SIZE - ((uint16_t)
(psp->write_pos - psp->read_pos) & AUDIO_BUFFER_SIZE_MASK) < size)
return 0;
(psp->write_pos - psp->read_pos) & AUDIO_BUFFER_SIZE_MASK) < size)
return 0;
}
slock_lock(psp->cond_lock);
@@ -287,7 +287,7 @@ static void psp_audio_set_nonblock_state(void *data, bool toggle)
{
psp_audio_t* psp = (psp_audio_t*)data;
if (psp)
psp->nonblocking = toggle;
psp->nonblock = toggle;
}
static bool psp_audio_use_float(void *data)
+1 -1
View File
@@ -165,7 +165,7 @@ static bool rs_stop(void *data)
static void rs_set_nonblock_state(void *data, bool state)
{
rsd_t *rsd = (rsd_t*)data;
rsd_t *rsd = (rsd_t*)data;
rsd->nonblock = state;
}
+14 -16
View File
@@ -92,27 +92,25 @@ static ssize_t switch_audio_write(void *data, const void *buf, size_t size)
if (!swa->current_buffer)
{
if (swa->blocking)
/* no buffer, nonblocking... */
if (!swa->blocking)
return 0;
while (!swa->current_buffer)
{
while(swa->current_buffer == NULL)
{
uint32_t handle_idx = 0;
num = 0;
uint32_t handle_idx = 0;
num = 0;
#ifdef HAVE_LIBNX
if (audoutWaitPlayFinish(&swa->current_buffer, &num, U64_MAX) != 0) { }
if (audoutWaitPlayFinish(&swa->current_buffer, &num, U64_MAX) != 0) { }
#else
svcWaitSynchronization(&handle_idx, &swa->event, 1, 33333333);
svcResetSignal(swa->event);
svcWaitSynchronization(&handle_idx, &swa->event, 1, 33333333);
svcResetSignal(swa->event);
if (switch_audio_ipc_output_get_released_buffer(swa, num) != 0)
return -1;
if (switch_audio_ipc_output_get_released_buffer(swa, num) != 0)
return -1;
#endif
}
}
else
/* no buffer, nonblocking... */
return 0;
}
swa->current_buffer->data_size = 0;
@@ -297,7 +295,7 @@ static void *switch_audio_init(const char *device,
swa->buffers[i].data_offset = 0;
swa->buffers[i].buffer = memalign(0x1000, switch_audio_buffer_size(NULL));
if (swa->buffers[i].buffer == NULL)
if (!swa->buffers[i].buffer)
goto fail_audio_output;
memset(swa->buffers[i].buffer, 0, switch_audio_buffer_size(NULL));
@@ -306,7 +304,7 @@ static void *switch_audio_init(const char *device,
swa->buffers[i].unknown = 0;
swa->buffers[i].sample_data = alloc_pages(sample_buffer_size, switch_audio_buffer_size(NULL), NULL);
if (swa->buffers[i].sample_data == NULL)
if (!swa->buffers[i].sample_data)
goto fail_audio_output;
#endif
+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) \
+42 -35
View File
@@ -42,7 +42,8 @@ static const AudioRendererConfig audio_renderer_config =
.num_mix_buffers = 2,
};
typedef struct {
typedef struct
{
AudioDriver drv;
void* mempool;
AudioDriverWaveBuf wavebufs[BUFFER_COUNT];
@@ -52,10 +53,11 @@ typedef struct {
size_t buffer_size;
size_t samples;
Mutex update_lock;
bool nonblocking;
bool nonblock;
} libnx_audren_t;
static void *libnx_audren_audio_init(const char *device, unsigned rate, unsigned latency,
static void *libnx_audren_audio_init(
const char *device, unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
@@ -79,14 +81,14 @@ static void *libnx_audren_audio_init(const char *device, unsigned rate, unsigned
real_latency = MAX(5, latency);
RARCH_LOG("[Audio]: real_latency is %u\n", real_latency);
aud->nonblocking = !block_frames;
aud->buffer_size = (real_latency * sample_rate / 1000);
aud->samples = (aud->buffer_size / num_channels / sizeof(int16_t));
aud->nonblock = !block_frames;
aud->buffer_size = (real_latency * sample_rate / 1000);
aud->samples = (aud->buffer_size / num_channels / sizeof(int16_t));
aud->current_size = 0;
*new_rate = sample_rate;
*new_rate = sample_rate;
mempool_size = (aud->buffer_size * BUFFER_COUNT + (AUDREN_MEMPOOL_ALIGNMENT-1)) &~ (AUDREN_MEMPOOL_ALIGNMENT-1);
aud->mempool = memalign(AUDREN_MEMPOOL_ALIGNMENT, mempool_size);
mempool_size = (aud->buffer_size * BUFFER_COUNT + (AUDREN_MEMPOOL_ALIGNMENT-1)) &~ (AUDREN_MEMPOOL_ALIGNMENT-1);
aud->mempool = memalign(AUDREN_MEMPOOL_ALIGNMENT, mempool_size);
if (!aud->mempool)
{
RARCH_ERR("[Audio]: mempool alloc failed\n");
@@ -94,14 +96,14 @@ static void *libnx_audren_audio_init(const char *device, unsigned rate, unsigned
}
rc = audrenInitialize(&audio_renderer_config);
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrenInitialize: %x\n", rc);
goto fail;
}
rc = audrvCreate(&aud->drv, &audio_renderer_config, num_channels);
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrvCreate: %x\n", rc);
goto fail_init;
@@ -123,7 +125,7 @@ static void *libnx_audren_audio_init(const char *device, unsigned rate, unsigned
audrvDeviceSinkAdd(&aud->drv, AUDREN_DEFAULT_DEVICE_NAME, num_channels, sink_channels);
rc = audrenStartAudioRenderer();
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrenStartAudioRenderer: %x\n", rc);
}
@@ -150,9 +152,7 @@ fail:
if (aud)
{
if (aud->mempool)
{
free(aud->mempool);
}
free(aud);
}
@@ -176,24 +176,25 @@ static ssize_t libnx_audren_audio_get_free_wavebuf_idx(libnx_audren_t* aud)
for (i = 0; i < BUFFER_COUNT; i++)
{
if (aud->wavebufs[i].state == AudioDriverWaveBufState_Free
if (
aud->wavebufs[i].state == AudioDriverWaveBufState_Free
|| aud->wavebufs[i].state == AudioDriverWaveBufState_Done)
{
return i;
}
}
return -1;
}
static size_t libnx_audren_audio_append(libnx_audren_t* aud, const void *buf, size_t size)
static size_t libnx_audren_audio_append(
libnx_audren_t* aud, const void *buf, size_t size)
{
void *dstbuf = NULL;
ssize_t free_idx = -1;
if(!aud->current_wavebuf)
if (!aud->current_wavebuf)
{
free_idx = libnx_audren_audio_get_free_wavebuf_idx(aud);
if(free_idx == -1)
if (free_idx == -1)
return 0;
aud->current_wavebuf = &aud->wavebufs[free_idx];
@@ -201,18 +202,16 @@ static size_t libnx_audren_audio_append(libnx_audren_t* aud, const void *buf, si
aud->current_size = 0;
}
if(size > aud->buffer_size - aud->current_size)
{
if (size > aud->buffer_size - aud->current_size)
size = aud->buffer_size - aud->current_size;
}
void *dstbuf = aud->current_pool_ptr + aud->current_size;
dstbuf = aud->current_pool_ptr + aud->current_size;
memcpy(dstbuf, buf, size);
armDCacheFlush(dstbuf, size);
aud->current_size += size;
if(aud->current_size == aud->buffer_size)
if (aud->current_size == aud->buffer_size)
{
audrvVoiceAddWaveBuf(&aud->drv, 0, aud->current_wavebuf);
@@ -231,24 +230,32 @@ static size_t libnx_audren_audio_append(libnx_audren_t* aud, const void *buf, si
return size;
}
static ssize_t libnx_audren_audio_write(void *data, const void *buf, size_t size)
static ssize_t libnx_audren_audio_write(void *data,
const void *buf, size_t size)
{
libnx_audren_t *aud = (libnx_audren_t*)data;
size_t written = 0;
size_t written = 0;
if (!aud)
return -1;
while(written < size)
if (aud->nonblock)
{
written += libnx_audren_audio_append(aud, buf + written, size - written);
if(written != size)
while(written < size)
{
if(aud->nonblocking)
{
written += libnx_audren_audio_append(
aud, buf + written, size - written);
if (written != size)
break;
}
else
}
}
else
{
while(written < size)
{
written += libnx_audren_audio_append(
aud, buf + written, size - written);
if (written != size)
{
mutexLock(&aud->update_lock);
audrvUpdate(&aud->drv);
@@ -341,7 +348,7 @@ static void libnx_audren_audio_set_nonblock_state(void *data, bool state)
if (!aud)
return;
aud->nonblocking = state;
aud->nonblock = state;
}
audio_driver_t audio_switch_libnx_audren = {
@@ -43,13 +43,14 @@ static const AudioRendererConfig audio_renderer_config =
.num_mix_buffers = 2,
};
typedef struct {
typedef struct
{
AudioDriver drv;
void* mempool;
AudioDriverWaveBuf wavebufs[BUFFER_COUNT];
size_t buffer_size;
size_t samples;
bool nonblocking;
bool nonblock;
fifo_buffer_t* fifo;
Mutex fifo_lock;
@@ -63,21 +64,21 @@ typedef struct {
static void thread_job(void* data)
{
libnx_audren_thread_t *aud = (libnx_audren_thread_t*)data;
size_t available = 0;
size_t current_size = 0;
size_t written_tmp = 0;
AudioDriverWaveBuf* current_wavebuf = NULL;
void* current_pool_ptr = NULL;
void* dstbuf = NULL;
unsigned i;
libnx_audren_thread_t *aud = (libnx_audren_thread_t*)data;
size_t available = 0;
size_t current_size = 0;
size_t written_tmp = 0;
AudioDriverWaveBuf* current_wavebuf = NULL;
void* current_pool_ptr = NULL;
void* dstbuf = NULL;
if (!aud)
return;
while(aud->running)
while (aud->running)
{
if(!current_wavebuf)
if (!current_wavebuf)
{
for (i = 0; i < BUFFER_COUNT; i++)
{
@@ -92,19 +93,17 @@ static void thread_job(void* data)
}
}
if(current_wavebuf)
if (current_wavebuf)
{
mutexLock(&aud->fifo_lock);
available = aud->paused ? 0 : fifo_read_avail(aud->fifo);
written_tmp = MIN(available, aud->buffer_size - current_size);
dstbuf = current_pool_ptr + current_size;
if(written_tmp > 0)
{
if (written_tmp > 0)
fifo_read(aud->fifo, dstbuf, written_tmp);
}
mutexUnlock(&aud->fifo_lock);
if(written_tmp > 0)
if (written_tmp > 0)
{
condvarWakeAll(&aud->fifo_condvar);
@@ -112,7 +111,7 @@ static void thread_job(void* data)
armDCacheFlush(dstbuf, written_tmp);
}
if(current_size == aud->buffer_size)
if (current_size == aud->buffer_size)
{
audrvVoiceAddWaveBuf(&aud->drv, 0, current_wavebuf);
@@ -157,17 +156,19 @@ static void *libnx_audren_thread_audio_init(const char *device, unsigned rate, u
goto fail;
}
real_latency = MAX(latency, 5);
real_latency = MAX(latency, 5);
RARCH_LOG("[Audio]: real_latency is %u\n", real_latency);
aud->running = true;
aud->paused = false;
aud->nonblocking = !block_frames;
aud->running = true;
aud->paused = false;
aud->nonblock = !block_frames;
aud->buffer_size = (real_latency * sample_rate / 1000);
aud->samples = (aud->buffer_size / num_channels / sizeof(int16_t));
aud->samples = (aud->buffer_size / num_channels / sizeof(int16_t));
mempool_size = (aud->buffer_size * BUFFER_COUNT +
(AUDREN_MEMPOOL_ALIGNMENT-1)) &~ (AUDREN_MEMPOOL_ALIGNMENT-1);
aud->mempool = memalign(AUDREN_MEMPOOL_ALIGNMENT, mempool_size);
mempool_size = (aud->buffer_size * BUFFER_COUNT + (AUDREN_MEMPOOL_ALIGNMENT-1)) &~ (AUDREN_MEMPOOL_ALIGNMENT-1);
aud->mempool = memalign(AUDREN_MEMPOOL_ALIGNMENT, mempool_size);
if (!aud->mempool)
{
RARCH_ERR("[Audio]: mempool alloc failed\n");
@@ -175,43 +176,44 @@ static void *libnx_audren_thread_audio_init(const char *device, unsigned rate, u
}
rc = audrenInitialize(&audio_renderer_config);
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrenInitialize: %x\n", rc);
goto fail;
}
rc = audrvCreate(&aud->drv, &audio_renderer_config, num_channels);
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrvCreate: %x\n", rc);
goto fail_init;
}
for(i = 0; i < BUFFER_COUNT; i++)
for (i = 0; i < BUFFER_COUNT; i++)
{
aud->wavebufs[i].data_raw = aud->mempool;
aud->wavebufs[i].size = mempool_size;
aud->wavebufs[i].data_raw = aud->mempool;
aud->wavebufs[i].size = mempool_size;
aud->wavebufs[i].start_sample_offset = i * aud->samples;
aud->wavebufs[i].end_sample_offset = aud->wavebufs[i].start_sample_offset + aud->samples;
aud->wavebufs[i].end_sample_offset = aud->wavebufs[i].start_sample_offset + aud->samples;
}
mpid = audrvMemPoolAdd(&aud->drv, aud->mempool, mempool_size);
audrvMemPoolAttach(&aud->drv, mpid);
audrvDeviceSinkAdd(&aud->drv, AUDREN_DEFAULT_DEVICE_NAME, num_channels, sink_channels);
audrvDeviceSinkAdd(&aud->drv, AUDREN_DEFAULT_DEVICE_NAME,
num_channels, sink_channels);
rc = audrenStartAudioRenderer();
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: audrenStartAudioRenderer: %x\n", rc);
}
audrvVoiceInit(&aud->drv, 0, num_channels, PcmFormat_Int16, sample_rate);
audrvVoiceSetDestinationMix(&aud->drv, 0, AUDREN_FINAL_MIX_ID);
for(i = 0; i < num_channels; i++)
for (i = 0; i < num_channels; i++)
{
for(j = 0; j < num_channels; j++)
for (j = 0; j < num_channels; j++)
{
audrvVoiceSetMixFactor(&aud->drv, 0, i == j ? 1.0f : 0.0f, i, j);
}
@@ -229,15 +231,17 @@ static void *libnx_audren_thread_audio_init(const char *device, unsigned rate, u
mutexInit(&aud->fifo_condlock);
svcGetThreadPriority(&thread_priority, CUR_THREAD_HANDLE);
rc = threadCreate(&aud->thread, &thread_job, (void*)aud, thread_stack_size, thread_priority - 1, thread_preferred_cpu);
if(R_FAILED(rc))
rc = threadCreate(&aud->thread, &thread_job,
(void*)aud, NULL, thread_stack_size,
thread_priority - 1, thread_preferred_cpu);
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: threadCreate: %x\n", rc);
goto fail_drv;
}
rc = threadStart(&aud->thread);
if(R_FAILED(rc))
if (R_FAILED(rc))
{
RARCH_ERR("[Audio]: threadStart: %x\n", rc);
threadClose(&aud->thread);
@@ -258,9 +262,7 @@ fail:
if (aud)
{
if (aud->mempool)
{
free(aud->mempool);
}
free(aud);
}
@@ -278,7 +280,8 @@ static size_t libnx_audren_thread_audio_buffer_size(void *data)
return aud->buffer_size;
}
static ssize_t libnx_audren_thread_audio_write(void *data, const void *buf, size_t size)
static ssize_t libnx_audren_thread_audio_write(void *data,
const void *buf, size_t size)
{
libnx_audren_thread_t *aud = (libnx_audren_thread_t*)data;
size_t available, written, written_tmp;
@@ -286,18 +289,16 @@ static ssize_t libnx_audren_thread_audio_write(void *data, const void *buf, size
if (!aud || !aud->running)
return -1;
if(aud->paused)
if (aud->paused)
return 0;
if(aud->nonblocking)
if (aud->nonblock)
{
mutexLock(&aud->fifo_lock);
available = fifo_write_avail(aud->fifo);
written = MIN(available, size);
if(written > 0)
{
if (written > 0)
fifo_write(aud->fifo, buf, written);
}
mutexUnlock(&aud->fifo_lock);
}
else
@@ -307,7 +308,7 @@ static ssize_t libnx_audren_thread_audio_write(void *data, const void *buf, size
{
mutexLock(&aud->fifo_lock);
available = fifo_write_avail(aud->fifo);
if(available)
if (available)
{
written_tmp = MIN(size - written, available);
fifo_write(aud->fifo, (const char*)buf + written, written_tmp);
@@ -419,7 +420,7 @@ static void libnx_audren_thread_audio_set_nonblock_state(void *data, bool state)
if (!aud)
return;
aud->nonblocking = state;
aud->nonblock = state;
}
audio_driver_t audio_switch_libnx_audren_thread = {
+6 -6
View File
@@ -53,7 +53,7 @@ typedef struct
size_t fifoSize;
volatile bool running;
bool nonblocking;
bool nonblock;
bool is_paused;
compat_audio_out_buffer buffers[AUDIO_BUFFER_COUNT];
@@ -152,7 +152,7 @@ static void *switch_thread_audio_init(const char *device, unsigned rate, unsigne
return NULL;
swa->running = true;
swa->nonblocking = true;
swa->nonblock = true;
swa->is_paused = true;
swa->latency = MAX(latency, 8);
@@ -217,7 +217,7 @@ static void *switch_thread_audio_init(const char *device, unsigned rate, unsigne
swa->buffers[i].data_size = swa->buffers[i].buffer_size;
swa->buffers[i].buffer = memalign(0x1000, swa->buffers[i].buffer_size);
if (swa->buffers[i].buffer == NULL)
if (!swa->buffers[i].buffer)
goto fail;
memset(swa->buffers[i].buffer, 0, swa->buffers[i].buffer_size);
@@ -228,7 +228,7 @@ static void *switch_thread_audio_init(const char *device, unsigned rate, unsigne
swa->buffers[i].data_size = swa->buffers[i].buffer_size;
swa->buffers[i].sample_data = alloc_pages(swa->buffers[i].buffer_size, swa->buffers[i].buffer_size, NULL);
if (swa->buffers[i].sample_data == NULL)
if (!swa->buffers[i].sample_data)
goto fail_audio_output;
memset(swa->buffers[i].sample_data, 0, swa->buffers[i].buffer_size);
@@ -345,7 +345,7 @@ static ssize_t switch_thread_audio_write(void *data, const void *buf, size_t siz
if (!swa || !swa->running)
return 0;
if (swa->nonblocking)
if (swa->nonblock)
{
compat_mutex_lock(&swa->fifoLock);
avail = fifo_write_avail(swa->fifo);
@@ -397,7 +397,7 @@ static void switch_thread_audio_set_nonblock_state(void *data, bool state)
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (swa)
swa->nonblocking = state;
swa->nonblock = state;
}
static bool switch_thread_audio_use_float(void *data)
+6 -6
View File
@@ -808,7 +808,7 @@ static unsigned int pcm_get_channels(const struct pcm *pcm)
* */
static const struct pcm_config * pcm_get_config(const struct pcm *pcm)
{
if (pcm == NULL)
if (!pcm)
return NULL;
return &pcm->config;
}
@@ -929,7 +929,7 @@ static int pcm_set_config(struct pcm *pcm, const struct pcm_config *config)
struct snd_pcm_sw_params sparams;
struct snd_pcm_hw_params params;
if (pcm == NULL)
if (!pcm)
return -EFAULT;
if (config)
@@ -1293,7 +1293,7 @@ static int pcm_get_htimestamp(struct pcm *pcm, unsigned int *avail,
*/
static int pcm_is_ready(const struct pcm *pcm)
{
if (pcm != NULL)
if (pcm)
return pcm->fd >= 0;
return 0;
}
@@ -1582,7 +1582,7 @@ static const struct pcm_mask *pcm_params_get_mask(const struct pcm_params *pcm_p
{
int p;
struct snd_pcm_hw_params *params = (struct snd_pcm_hw_params *)pcm_params;
if (params == NULL)
if (!params)
return NULL;
p = pcm_param_to_alsa(param);
@@ -2185,7 +2185,7 @@ static void * tinyalsa_init(const char *devicestr, unsigned rate,
RARCH_LOG("[TINYALSA]: Using card: %u, device: %u.\n", card, device);
tinyalsa->params = pcm_params_get(card, device, PCM_OUT);
if (tinyalsa->params == NULL)
if (!tinyalsa->params)
{
RARCH_ERR("[TINYALSA]: params: Cannot open audio device.\n");
goto error;
@@ -2224,7 +2224,7 @@ static void * tinyalsa_init(const char *devicestr, unsigned rate,
tinyalsa->pcm = pcm_open(card, device, PCM_OUT, &config);
if (tinyalsa->pcm == NULL)
if (!tinyalsa->pcm)
{
RARCH_ERR("[TINYALSA]: Failed to allocate memory for pcm.\n");
goto error;
+109 -64
View File
@@ -29,7 +29,7 @@
typedef struct
{
bool exclusive;
bool blocking;
bool nonblock;
bool running;
size_t frame_size; /* 4 or 8 only */
size_t engine_buffer_size;
@@ -575,7 +575,7 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
if (FAILED(hr))
goto error;
w->running = true;
w->blocking = settings->bools.audio_sync;
w->nonblock = !settings->bools.audio_sync;
return w;
@@ -596,16 +596,15 @@ static bool wasapi_flush(wasapi_t * w, const void * data, size_t size)
{
BYTE *dest = NULL;
UINT32 frame_count = size / w->frame_size;
HRESULT hr = _IAudioRenderClient_GetBuffer(
w->renderer, frame_count, &dest);
if (FAILED(hr))
if (FAILED(_IAudioRenderClient_GetBuffer(
w->renderer, frame_count, &dest)))
return false;
memcpy(dest, data, size);
hr = _IAudioRenderClient_ReleaseBuffer(
w->renderer, frame_count,
0);
if (FAILED(hr))
if (FAILED(_IAudioRenderClient_ReleaseBuffer(
w->renderer, frame_count,
0)))
return false;
return true;
@@ -615,25 +614,76 @@ static bool wasapi_flush_buffer(wasapi_t * w, size_t size)
{
BYTE *dest = NULL;
UINT32 frame_count = size / w->frame_size;
HRESULT hr = _IAudioRenderClient_GetBuffer(
w->renderer, frame_count, &dest);
if (FAILED(hr))
if (FAILED(_IAudioRenderClient_GetBuffer(
w->renderer, frame_count, &dest)))
return false;
fifo_read(w->buffer, dest, size);
hr = _IAudioRenderClient_ReleaseBuffer(
if (FAILED(_IAudioRenderClient_ReleaseBuffer(
w->renderer, frame_count,
0);
if (FAILED(hr))
0)))
return false;
return true;
}
static ssize_t wasapi_write_sh_buffer(wasapi_t *w, const void * data, size_t size)
{
ssize_t written = -1;
UINT32 padding = 0;
size_t write_avail = fifo_write_avail(w->buffer);
if (!write_avail)
{
size_t read_avail = 0;
if (!(WaitForSingleObject(w->write_event, INFINITE) == WAIT_OBJECT_0))
return -1;
if (FAILED(_IAudioClient_GetCurrentPadding(w->client, &padding)))
return -1;
read_avail = fifo_read_avail(w->buffer);
write_avail = w->engine_buffer_size - padding * w->frame_size;
written = read_avail < write_avail ? read_avail : write_avail;
if (written)
if (!wasapi_flush_buffer(w, written))
return -1;
}
write_avail = fifo_write_avail(w->buffer);
written = size < write_avail ? size : write_avail;
if (written)
fifo_write(w->buffer, data, written);
return written;
}
static ssize_t wasapi_write_sh(wasapi_t *w, const void * data, size_t size)
{
DWORD ir;
HRESULT hr;
size_t write_avail = 0;
ssize_t written = -1;
UINT32 padding = 0;
if (!(WaitForSingleObject(w->write_event, INFINITE) == WAIT_OBJECT_0))
return -1;
if (FAILED(_IAudioClient_GetCurrentPadding(w->client, &padding)))
return -1;
write_avail = w->engine_buffer_size - padding * w->frame_size;
if (!write_avail)
return 0;
written = size < write_avail ? size : write_avail;
if (written)
if (!wasapi_flush(w, data, written))
return -1;
return written;
}
static ssize_t wasapi_write_sh_nonblock(wasapi_t *w, const void * data, size_t size)
{
size_t write_avail = 0;
ssize_t written = -1;
UINT32 padding = 0;
@@ -644,16 +694,7 @@ static ssize_t wasapi_write_sh(wasapi_t *w, const void * data, size_t size)
if (!write_avail)
{
size_t read_avail = 0;
if (w->blocking)
{
ir = WaitForSingleObject(w->write_event, INFINITE);
if (!(ir == WAIT_OBJECT_0))
return -1;
}
hr = _IAudioClient_GetCurrentPadding(w->client, &padding);
if (FAILED(hr))
if (FAILED(_IAudioClient_GetCurrentPadding(w->client, &padding)))
return -1;
read_avail = fifo_read_avail(w->buffer);
@@ -671,19 +712,10 @@ static ssize_t wasapi_write_sh(wasapi_t *w, const void * data, size_t size)
}
else
{
if (w->blocking)
{
ir = WaitForSingleObject(w->write_event, INFINITE);
if (!(ir == WAIT_OBJECT_0))
return -1;
}
hr = _IAudioClient_GetCurrentPadding(w->client, &padding);
if (FAILED(hr))
if (FAILED(_IAudioClient_GetCurrentPadding(w->client, &padding)))
return -1;
write_avail = w->engine_buffer_size - padding * w->frame_size;
if (!write_avail)
if (!(write_avail = w->engine_buffer_size - padding * w->frame_size))
return 0;
written = size < write_avail ? size : write_avail;
@@ -695,21 +727,15 @@ static ssize_t wasapi_write_sh(wasapi_t *w, const void * data, size_t size)
return written;
}
static ssize_t wasapi_write_ex(wasapi_t *w, const void * data, size_t size)
static ssize_t wasapi_write_ex(wasapi_t *w, const void * data, size_t size, DWORD ms)
{
ssize_t written = 0;
size_t write_avail = fifo_write_avail(w->buffer);
if (!write_avail)
{
DWORD ir = WaitForSingleObject(
w->write_event, w->blocking ? INFINITE : 0);
if (ir != WAIT_OBJECT_0)
{
if (w->blocking)
return -1;
return 0;
}
if (WaitForSingleObject(w->write_event, ms) != WAIT_OBJECT_0)
return -1;
if (!wasapi_flush_buffer(w, w->engine_buffer_size))
return -1;
@@ -725,26 +751,48 @@ static ssize_t wasapi_write_ex(wasapi_t *w, const void * data, size_t size)
static ssize_t wasapi_write(void *wh, const void *data, size_t size)
{
size_t written;
wasapi_t *w = (wasapi_t*)wh;
size_t written = 0;
wasapi_t *w = (wasapi_t*)wh;
if (w->blocking)
if (w->nonblock)
{
if (w->exclusive)
return wasapi_write_ex(w, data, size, 0);
return wasapi_write_sh_nonblock(w, data, size);
}
if (w->exclusive)
{
ssize_t ir;
for (written = 0, ir = -1; written < size; written += ir)
for (ir = -1; written < size; written += ir)
{
if (w->exclusive)
ir = wasapi_write_ex(w, (char*)data + written, size - written);
else
ir = wasapi_write_sh(w, (char*)data + written, size - written);
ir = wasapi_write_ex(w, (char*)data + written, size - written, INFINITE);
if (ir == -1)
return -1;
}
}
else if (w->exclusive)
written = wasapi_write_ex(w, data, size);
else
written = wasapi_write_sh(w, data, size);
{
ssize_t ir;
if (w->buffer)
{
for (ir = -1; written < size; written += ir)
{
ir = wasapi_write_sh_buffer(w, (char*)data + written, size - written);
if (ir == -1)
return -1;
}
}
else
{
for (ir = -1; written < size; written += ir)
{
ir = wasapi_write_sh(w, (char*)data + written, size - written);
if (ir == -1)
return -1;
}
}
}
return written;
}
@@ -752,8 +800,7 @@ static ssize_t wasapi_write(void *wh, const void *data, size_t size)
static bool wasapi_stop(void *wh)
{
wasapi_t *w = (wasapi_t*)wh;
HRESULT hr = _IAudioClient_Stop(w->client);
if (FAILED(hr))
if (FAILED(_IAudioClient_Stop(w->client)))
return !w->running;
w->running = false;
@@ -790,7 +837,7 @@ static void wasapi_set_nonblock_state(void *wh, bool nonblock)
RARCH_LOG("[WASAPI]: Sync %s.\n", nonblock ? "off" : "on");
w->blocking = !nonblock;
w->nonblock = nonblock;
}
static void wasapi_free(void *wh)
@@ -838,15 +885,13 @@ static void wasapi_device_list_free(void *u, void *slp)
static size_t wasapi_write_avail(void *wh)
{
HRESULT hr;
wasapi_t *w = (wasapi_t*)wh;
UINT32 padding = 0;
if (w->buffer)
return fifo_write_avail(w->buffer);
hr = _IAudioClient_GetCurrentPadding(w->client, &padding);
if (FAILED(hr))
if (FAILED(_IAudioClient_GetCurrentPadding(w->client, &padding)))
return 0;
return w->engine_buffer_size - padding * w->frame_size;
+43 -39
View File
@@ -31,7 +31,7 @@ typedef struct
AXMVoice* mvoice;
uint16_t* buffer_l;
uint16_t* buffer_r;
bool nonblocking;
bool nonblock;
uint32_t pos;
uint32_t written;
@@ -56,17 +56,19 @@ typedef struct
static volatile ax_audio_t *wiiu_cb_ax = NULL;
void wiiu_ax_callback(void)
{
ax_audio_t *ax = NULL;
/*possibly called before unregister */
if(wiiu_cb_ax == NULL)
if (!wiiu_cb_ax)
return;
ax_audio_t *ax = (ax_audio_t*)wiiu_cb_ax;
if(AXIsMultiVoiceRunning(ax->mvoice))
ax = (ax_audio_t*)wiiu_cb_ax;
if (AXIsMultiVoiceRunning(ax->mvoice))
{
if(OSUninterruptibleSpinLock_Acquire(&ax->spinlock))
if (OSUninterruptibleSpinLock_Acquire(&ax->spinlock))
{
/* Buffer underrun, stop playback to let it fill up */
if(ax->written < AX_AUDIO_SAMPLE_MIN)
if (ax->written < AX_AUDIO_SAMPLE_MIN)
AXSetMultiVoiceState(ax->mvoice, AX_VOICE_STATE_STOPPED);
ax->written -= AX_AUDIO_SAMPLE_COUNT;
OSUninterruptibleSpinLock_Release(&ax->spinlock);
@@ -100,7 +102,7 @@ static void* ax_audio_init(const char* device, unsigned rate, unsigned latency,
return NULL;
}
ax->buffer_l = MEM1_alloc(AX_AUDIO_SIZE, 0x100);
ax->buffer_l = MEM1_alloc(AX_AUDIO_SIZE, 0x100);
ax->buffer_r = MEM1_alloc(AX_AUDIO_SIZE, 0x100);
memset(ax->buffer_l,0,AX_AUDIO_SIZE);
memset(ax->buffer_r,0,AX_AUDIO_SIZE);
@@ -166,9 +168,9 @@ static bool ax_audio_stop(void* data)
static int ax_audio_limit(int in)
{
if(in < 0)
if (in < 0)
in += AX_AUDIO_COUNT;
else if(in >= AX_AUDIO_COUNT)
else if (in >= AX_AUDIO_COUNT)
in -= AX_AUDIO_COUNT;
return in;
}
@@ -183,57 +185,58 @@ static bool ax_audio_start(void* data, bool is_shutdown)
return true;
/* Set back to playing on enough buffered data */
if(ax->written > AX_AUDIO_SAMPLE_LOAD)
if (ax->written > AX_AUDIO_SAMPLE_LOAD)
{
AXSetMultiVoiceCurrentOffset(ax->mvoice, ax_audio_limit(ax->pos - ax->written));
AXSetMultiVoiceState(ax->mvoice, AX_VOICE_STATE_PLAYING);
}
return true;
}
static ssize_t ax_audio_write(void* data, const void* buf, size_t size)
{
uint32_t i;
size_t countAvail = 0;
size_t count_avail = 0;
ax_audio_t* ax = (ax_audio_t*)data;
const uint16_t* src = buf;
size_t count = size >> 2;
if(!size || (size & 0x3))
if (!size || (size & 0x3))
return 0;
if(count > AX_AUDIO_MAX_FREE)
if (count > AX_AUDIO_MAX_FREE)
count = AX_AUDIO_MAX_FREE;
countAvail = ((ax->written > AX_AUDIO_MAX_FREE) ? 0 : (AX_AUDIO_MAX_FREE - ax->written));
count_avail = ((ax->written > AX_AUDIO_MAX_FREE) ? 0 : (AX_AUDIO_MAX_FREE - ax->written));
if (ax->nonblocking)
if (ax->nonblock)
{
/* Not enough available for 3ms of data */
if(countAvail < AX_AUDIO_SAMPLE_COUNT)
if (count_avail < AX_AUDIO_SAMPLE_COUNT)
count = 0;
}
else if(countAvail < count)
else if (count_avail < count)
{
/* Sync, wait for free memory */
while(AXIsMultiVoiceRunning(ax->mvoice) && (countAvail < count))
while(AXIsMultiVoiceRunning(ax->mvoice) && (count_avail < count))
{
OSYieldThread(); /* Gives threads with same priority time to run */
countAvail = (ax->written > AX_AUDIO_MAX_FREE ? 0 : (AX_AUDIO_MAX_FREE - ax->written));
count_avail = (ax->written > AX_AUDIO_MAX_FREE ? 0 : (AX_AUDIO_MAX_FREE - ax->written));
}
}
/* Over available space, do as much as possible */
if(count > countAvail)
count = countAvail;
if (count > count_avail)
count = count_avail;
/* make sure we have input size */
if(count > 0)
if (count > 0)
{
/* write in new data */
size_t startPos = ax->pos;
int flushP2needed = 0;
int flushP2 = 0;
size_t start_pos = ax->pos;
int flush_p2_needed = 0;
int flush_p2 = 0;
for (i = 0; i < (count << 1); i += 2)
{
@@ -242,30 +245,31 @@ static ssize_t ax_audio_write(void* data, const void* buf, size_t size)
ax->pos = ax_audio_limit(ax->pos + 1);
/* wrapped around, make sure to store cache */
if(ax->pos == 0)
if (ax->pos == 0)
{
flushP2needed = 1;
flushP2 = ((count << 1) - i);
DCStoreRangeNoSync(ax->buffer_l+startPos, (AX_AUDIO_COUNT-startPos) << 1);
DCStoreRangeNoSync(ax->buffer_r+startPos, (AX_AUDIO_COUNT-startPos) << 1);
flush_p2_needed = 1;
flush_p2 = ((count << 1) - i);
DCStoreRangeNoSync(ax->buffer_l + start_pos,
(AX_AUDIO_COUNT - start_pos) << 1);
DCStoreRangeNoSync(ax->buffer_r + start_pos, (AX_AUDIO_COUNT - start_pos) << 1);
}
}
/* standard cache store case */
if(!flushP2needed)
if (!flush_p2_needed)
{
DCStoreRangeNoSync(ax->buffer_l+startPos, count << 1);
DCStoreRange(ax->buffer_r+startPos, count << 1);
DCStoreRangeNoSync(ax->buffer_l + start_pos, count << 1);
DCStoreRange(ax->buffer_r + start_pos, count << 1);
}
/* store the rest after wrap */
else if(flushP2 > 0)
else if (flush_p2 > 0)
{
DCStoreRangeNoSync(ax->buffer_l, flushP2);
DCStoreRange(ax->buffer_r, flushP2);
DCStoreRangeNoSync(ax->buffer_l, flush_p2);
DCStoreRange(ax->buffer_r, flush_p2);
}
/* add in new audio data */
if(OSUninterruptibleSpinLock_Acquire(&ax->spinlock))
if (OSUninterruptibleSpinLock_Acquire(&ax->spinlock))
{
ax->written += count;
OSUninterruptibleSpinLock_Release(&ax->spinlock);
@@ -276,7 +280,7 @@ static ssize_t ax_audio_write(void* data, const void* buf, size_t size)
*
* checks if it can be started
*/
if(!AXIsMultiVoiceRunning(ax->mvoice))
if (!AXIsMultiVoiceRunning(ax->mvoice))
ax_audio_start(ax, false);
/* return what was actually copied */
@@ -294,7 +298,7 @@ static void ax_audio_set_nonblock_state(void* data, bool state)
ax_audio_t* ax = (ax_audio_t*)data;
if (ax)
ax->nonblocking = state;
ax->nonblock = state;
}
static bool ax_audio_use_float(void* data)
+8 -7
View File
@@ -869,26 +869,27 @@ static INLINE HRESULT XAudio2Create(_Outptr_ IXAudio2** ppXAudio2,
typedef HRESULT(__stdcall *XAudio2CreateWithVersionInfoFunc)(_Outptr_ IXAudio2**, UINT32, XAUDIO2_PROCESSOR, DWORD);
typedef HRESULT(__stdcall *XAudio2CreateInfoFunc)(_Outptr_ IXAudio2**, UINT32, XAUDIO2_PROCESSOR);
static HMODULE s_dllInstance = NULL;
static XAudio2CreateWithVersionInfoFunc s_pfnAudio2CreateWithVersion = NULL;
static XAudio2CreateWithVersionInfoFunc
s_pfnAudio2CreateWithVersion = NULL;
static XAudio2CreateInfoFunc s_pfnAudio2Create = NULL;
static HMODULE s_dllInstance = NULL;
if (s_dllInstance == NULL)
if (!s_dllInstance)
{
s_dllInstance = LoadLibraryEx(XAUDIO2_DLL, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (s_dllInstance == NULL)
if (!s_dllInstance)
return HRESULT_FROM_WIN32(GetLastError());
s_pfnAudio2CreateWithVersion = (XAudio2CreateWithVersionInfoFunc)(void*)GetProcAddress(s_dllInstance, "XAudio2CreateWithVersionInfo");
if (s_pfnAudio2CreateWithVersion == NULL)
if (!s_pfnAudio2CreateWithVersion)
{
s_pfnAudio2Create = (XAudio2CreateInfoFunc)(void*)GetProcAddress(s_dllInstance, "XAudio2Create");
if (s_pfnAudio2Create == NULL)
if (!s_pfnAudio2Create)
return HRESULT_FROM_WIN32(GetLastError());
}
}
if (s_pfnAudio2CreateWithVersion != NULL)
if (s_pfnAudio2CreateWithVersion)
return (*s_pfnAudio2CreateWithVersion)(ppXAudio2, Flags, XAudio2Processor, NTDDI_VERSION);
return (*s_pfnAudio2Create)(ppXAudio2, Flags, XAudio2Processor);
}
+9 -9
View File
@@ -66,7 +66,15 @@ static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size)
for (i = 0; i < (size >> 2); i++)
xa->buffer[i] = bswap_32(in_buf[i]);
if (!xa->nonblock)
if (xa->nonblock)
{
if (xenon_sound_get_unplayed() < MAX_BUFFER)
{
xenon_sound_submit(xa->buffer, size);
written = size;
}
}
else
{
while (xenon_sound_get_unplayed() >= MAX_BUFFER)
{
@@ -78,14 +86,6 @@ static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size)
xenon_sound_submit(xa->buffer, size);
written = size;
}
else
{
if (xenon_sound_get_unplayed() < MAX_BUFFER)
{
xenon_sound_submit(xa->buffer, size);
written = size;
}
}
return written;
}
+11 -4
View File
@@ -4,9 +4,11 @@
#include <psp2/kernel/sysmem.h>
#include <psp2/kernel/threadmgr.h>
static int _newlib_heap_memblock;
static unsigned _newlib_heap_size;
static char *_newlib_heap_base, *_newlib_heap_end, *_newlib_heap_cur;
#define RAM_THRESHOLD 0x1000000 // Memory left to the system for threads and other internal stuffs
int _newlib_heap_memblock;
unsigned _newlib_heap_size;
char *_newlib_heap_base, *_newlib_heap_end, *_newlib_heap_cur;
static char _newlib_sbrk_mutex[32] __attribute__ ((aligned (8)));
static int _newlib_vm_memblock;
@@ -50,11 +52,16 @@ void _init_vita_heap(void) {
if (sceKernelCreateLwMutex((struct SceKernelLwMutexWork*)_newlib_sbrk_mutex, "sbrk mutex", 0, 0, 0) < 0) {
goto failure;
}
// Always allocating the max avaliable USER_RW mem on the system
SceKernelFreeMemorySizeInfo info;
info.size = sizeof(SceKernelFreeMemorySizeInfo);
sceKernelGetFreeMemorySize(&info);
if (&_newlib_heap_size_user != NULL) {
_newlib_heap_size = _newlib_heap_size_user;
}else{
_newlib_heap_size = 192 * 1024 * 1024;
_newlib_heap_size = info.size_user - RAM_THRESHOLD;
}
_newlib_heap_size -= _newlib_vm_size;
-60
View File
@@ -1,60 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2012-2015 - Michael Lelli
* Copyright (C) 2011-2017 - 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-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "../../retroarch.h"
static void *nullcamera_init(const char *device, uint64_t caps,
unsigned width, unsigned height)
{
(void)device;
return (void*)-1;
}
static void nullcamera_free(void *data)
{
(void)data;
}
static bool nullcamera_start(void *data)
{
(void)data;
return true;
}
static void nullcamera_stop(void *data)
{
(void)data;
}
static bool nullcamera_poll(void *data,
retro_camera_frame_raw_framebuffer_t frame_raw_cb,
retro_camera_frame_opengl_texture_t frame_gl_cb)
{
(void)data;
(void)frame_raw_cb;
(void)frame_gl_cb;
return true;
}
camera_driver_t camera_null = {
nullcamera_init,
nullcamera_free,
nullcamera_start,
nullcamera_stop,
nullcamera_poll,
"null",
};
+955 -326
View File
File diff suppressed because it is too large. Load diff
+30 -6
View File
@@ -168,9 +168,30 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
}
else if (console == RC_CONSOLE_PC_ENGINE)
{
/* RAM. */
CHEEVOS_LOG(RCHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x1f0000);
address += 0x1f0000;
if (address < 0x002000)
{
/* RAM. */
CHEEVOS_LOG(RCHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x1f0000);
address += 0x1f0000;
}
else if (address < 0x012000)
{
/* CD-ROM RAM. */
CHEEVOS_LOG(RCHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x100000 - 0x002000);
address += 0x100000 - 0x002000;
}
else if (address < 0x042000)
{
/* Super System Card RAM. */
CHEEVOS_LOG(RCHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x0d0000 - 0x012000);
address += 0x0d0000 - 0x012000;
}
else
{
/* CD-ROM battery backed RAM. */
CHEEVOS_LOG(RCHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x1ee000 - 0x042000);
address += 0x1ee000 - 0x042000;
}
}
else if (console == RC_CONSOLE_SUPER_NINTENDO)
{
@@ -215,6 +236,7 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
else
{
unsigned i;
unsigned addr = address;
for (i = 0; i < 4; i++)
{
@@ -238,9 +260,10 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console)
core_get_memory(&meminfo);
if (address < meminfo.size)
if (addr < meminfo.size)
{
pointer = meminfo.data;
address = addr;
break;
}
@@ -249,14 +272,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)
address -= 0x6000;
addr -= 0x6000;
else
address -= meminfo.size;
addr -= meminfo.size;
}
}
if (pointer == NULL)
{
CHEEVOS_LOG(RCHEEVOS_TAG "address %X not supported\n", address);
return NULL;
}
+2
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. */
+106 -26
View File
@@ -89,11 +89,17 @@
#define DEFAULT_MAX_PADS 4
#elif defined(HAVE_XINPUT) && !defined(HAVE_DINPUT)
#define DEFAULT_MAX_PADS 4
#elif defined(DINGUX)
#define DEFAULT_MAX_PADS 2
#else
#define DEFAULT_MAX_PADS 16
#endif
#if defined(RARCH_MOBILE) || defined(HAVE_LIBNX)
#if defined(GEKKO)
#define DEFAULT_MOUSE_SCALE 1
#endif
#if defined(RARCH_MOBILE) || defined(HAVE_LIBNX) || defined(__WINRT__)
#define DEFAULT_POINTER_ENABLE true
#else
#define DEFAULT_POINTER_ENABLE false
@@ -110,9 +116,54 @@
#endif
#ifdef HAVE_MATERIALUI
/* Show icons to the left of each menu entry */
#define DEFAULT_MATERIALUI_ICONS_ENABLE true
#endif
/* Material UI colour theme */
#define DEFAULT_MATERIALUI_THEME MATERIALUI_THEME_OZONE_DARK
/* Type of animation to use when performing menu transitions
* > 'Auto' follows Material UI standards:
* - Slide when switching between parent menus (tabs)
* - Fade when changing levels in a menu
* Note: Not wrapping this with a HAVE_MATERIALUI ifdef
* because there's too much baggage involved... */
#define DEFAULT_MATERIALUI_TRANSITION_ANIM MATERIALUI_TRANSITION_ANIM_AUTO
/* Adjust menu padding etc. to better fit the
* screen when using landscape layouts */
#if defined(RARCH_MOBILE)
#define DEFAULT_MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION_DISABLED
#else
#define DEFAULT_MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION_ALWAYS
#endif
/* Reposition navigation bar to make better use
* of screen space when using landscape layouts */
#define DEFAULT_MATERIALUI_AUTO_ROTATE_NAV_BAR true
/* Default portrait/landscape playlist view modes
* (when thumbnails are enabled) */
#define DEFAULT_MATERIALUI_THUMBNAIL_VIEW_PORTRAIT MATERIALUI_THUMBNAIL_VIEW_PORTRAIT_LIST_SMALL
#define DEFAULT_MATERIALUI_THUMBNAIL_VIEW_LANDSCAPE MATERIALUI_THUMBNAIL_VIEW_LANDSCAPE_LIST_MEDIUM
/* Enable second thumbnail when using 'list view'
* thumbnail views
* Note: Second thumbnail will only be drawn if
* display has sufficient horizontal real estate */
#if defined(RARCH_MOBILE)
#define DEFAULT_MATERIALUI_DUAL_THUMBNAIL_LIST_VIEW_ENABLE false
#else
#define DEFAULT_MATERIALUI_DUAL_THUMBNAIL_LIST_VIEW_ENABLE true
#endif
/* Draw solid colour 4:3 background when rendering
* thumbnails
* > Helps to unify menu appearance when viewing
* thumbnails of different sizes */
#define DEFAULT_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE true
#define DEFAULT_CRT_SWITCH_RESOLUTION CRT_SWITCH_NONE
#define DEFAULT_CRT_SWITCH_RESOLUTION_SUPER 2560
@@ -123,6 +174,12 @@
#define DEFAULT_PLAYLIST_ENTRY_RENAME true
#define DEFAULT_ACCESSIBILITY_ENABLE false
#define DEFAULT_ACCESSIBILITY_NARRATOR_SPEECH_SPEED 5
#define DEFAULT_DRIVER_SWITCH_ENABLE true
#define DEFAULT_USER_LANGUAGE 0
#if (defined(_WIN32) && !defined(_XBOX)) || (defined(__linux) && !defined(ANDROID) && !defined(HAVE_LAKKA)) || (defined(__MACH__) && !defined(IOS)) || defined(EMSCRIPTEN)
@@ -152,7 +209,13 @@
/* Fullscreen */
/* To start in Fullscreen, or not. */
#ifdef HAVE_STEAM
/* Start in fullscreen mode for Steam build */
#define DEFAULT_FULLSCREEN true
#else
#define DEFAULT_FULLSCREEN false
#endif
/* To use windowed mode or not when going fullscreen. */
#define DEFAULT_WINDOWED_FULLSCREEN true
@@ -293,12 +356,7 @@
#if defined(__CELLOS_LV2) || defined(_XBOX360)
#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_16_9
#elif defined(PSP)
#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE
#elif defined(_3DS)
/* Previously defaulted to ASPECT_RATIO_4_3.
* Non-4:3 content looks dreadful when stretched
* to 4:3 on the 3DS screen... */
#elif defined(PSP) || defined(_3DS) || defined(HAVE_LIBNX) || defined(VITA)
#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE
#elif defined(RARCH_CONSOLE)
#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_4_3
@@ -322,6 +380,12 @@
#define DEFAULT_INPUT_OVERLAY_OPACITY 0.7f
#endif
#if defined(RARCH_MOBILE)
#define DEFAULT_OVERLAY_AUTO_ROTATE true
#else
#define DEFAULT_OVERLAY_AUTO_ROTATE false
#endif
#ifdef HAVE_MENU
#include "menu/menu_driver.h"
#include "menu/menu_animation.h"
@@ -335,6 +399,7 @@
#ifdef HAVE_OZONE
#define DEFAULT_OZONE_COLLAPSE_SIDEBAR false
#define DEFAULT_OZONE_TRUNCATE_PLAYLIST_NAME true
#define DEFAULT_OZONE_SCROLL_CONTENT_METADATA false
#endif
#define DEFAULT_SETTINGS_SHOW_DRIVERS true
@@ -403,11 +468,14 @@ 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;
#ifdef HAVE_NETWORKING
static bool quick_menu_show_download_thumbnails = true;
#endif
static bool kiosk_mode_enable = false;
static bool menu_horizontal_animation = true;
#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;
@@ -441,6 +509,8 @@ static bool menu_savestate_resume = true;
static bool menu_savestate_resume = false;
#endif
#define DEFAULT_MENU_INSERT_DISK_RESUME true
static bool content_show_settings = true;
static bool content_show_favorites = true;
#ifdef HAVE_IMAGEVIEWER
@@ -454,13 +524,10 @@ static bool content_show_video = true;
static bool content_show_netplay = true;
#endif
static bool content_show_history = true;
#ifdef HAVE_LIBRETRODB
static bool content_show_add = true;
#endif
static bool content_show_playlists = true;
#ifdef HAVE_XMB
static unsigned xmb_scale_factor = 100;
static unsigned xmb_alpha_factor = 75;
static unsigned menu_font_color_red = 255;
static unsigned menu_font_color_green = 255;
@@ -514,7 +581,8 @@ static bool rgui_extended_ascii = false;
#define DEFAULT_BLOCK_CONFIG_READ false
#endif
#define DEFAULT_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST true
/* 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;
@@ -530,7 +598,7 @@ static bool default_savefiles_in_content_dir = false;
static bool default_systemfiles_in_content_dir = false;
static bool default_screenshots_in_content_dir = false;
#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360)
#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360) || defined(DINGUX)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
#elif defined(PS2) || defined(PSP)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_HOLD_START;
@@ -569,7 +637,12 @@ static unsigned input_backtouch_toggle = false;
#define DEFAULT_CROP_OVERSCAN true
/* Font size for on-screen messages. */
#if defined(DINGUX)
#define DEFAULT_FONT_SIZE 12
#else
#define DEFAULT_FONT_SIZE 32
#endif
/* Offset for where messages will be placed on-screen.
* Values are in range [0.0, 1.0]. */
@@ -839,14 +912,18 @@ static const bool stdin_cmd_enable = false;
static const uint16_t network_remote_base_port = 55400;
#if defined(ANDROID) || defined(IOS)
static const bool network_on_demand_thumbnails = true;
#else
static const bool network_on_demand_thumbnails = false;
#endif
/* Number of entries that will be kept in content history playlist file. */
static const unsigned default_content_history_size = 100;
static const unsigned default_content_history_size = 200;
/* Number of entries that will be kept in content favorites playlist file.
* -1 == 'unlimited' (99999) */
static const int default_content_favorites_size = 100;
static const int default_content_favorites_size = 200;
/* Sort all playlists (apart from histories) alphabetically */
static const bool playlist_sort_alphabetical = true;
@@ -861,6 +938,9 @@ static const unsigned playlist_show_inline_core_name = PLAYLIST_INLINE_CORE_DISP
/* Specifies which runtime record to use on playlist sublabels */
static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE;
/* Specifies time/date display format for runtime 'last played' data */
#define DEFAULT_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE PLAYLIST_LAST_PLAYED_STYLE_YMD_HMS
static const unsigned playlist_entry_remove_enable = PLAYLIST_ENTRY_REMOVE_ENABLE_ALL;
#endif
@@ -879,15 +959,9 @@ static const bool playlist_fuzzy_archive_match = false;
/* Show Menu start-up screen on boot. */
static const bool default_menu_show_start_screen = true;
#define DEFAULT_MENU_DPI_OVERRIDE_ENABLE false
#ifdef RARCH_MOBILE
#define DEFAULT_MENU_DPI_OVERRIDE_VALUE 72
#elif defined(__CELLOS_LV2__)
#define DEFAULT_MENU_DPI_OVERRIDE_VALUE 360
#else
#define DEFAULT_MENU_DPI_OVERRIDE_VALUE 200
#endif
/* Default scale factor for non-frambuffer-based menu
* drivers and menu widgets */
#define DEFAULT_MENU_SCALE_FACTOR 1.0f
/* Log level for the frontend */
#define DEFAULT_FRONTEND_LOG_LEVEL 1
@@ -916,6 +990,8 @@ static const float analog_sensitivity = 1.0f;
/* Describes speed of which turbo-enabled buttons toggle. */
static const unsigned turbo_period = 6;
static const unsigned turbo_duty_cycle = 3;
static const unsigned turbo_mode = 0;
static const unsigned turbo_default_btn = RETRO_DEVICE_ID_JOYPAD_B;
/* Enable input auto-detection. Will attempt to autoconfigure
* gamepads, plug-and-play style. */
@@ -941,7 +1017,9 @@ static const unsigned menu_left_thumbnails_default = 0;
static const unsigned menu_thumbnail_upscale_threshold = 0;
static const unsigned menu_timedate_style = 5;
#ifdef HAVE_MENU
static const unsigned menu_timedate_style = MENU_TIMEDATE_STYLE_DM_HM;
#endif
static const bool xmb_vertical_thumbnails = false;
@@ -978,7 +1056,7 @@ static const bool content_runtime_log_aggregate = false;
#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;
#elif defined(PSP) || defined(_3DS) || defined(VITA) || defined(PS2)
#elif defined(PSP) || defined(_3DS) || defined(VITA) || defined(PS2) || defined(DINGUX)
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWEST;
#else
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL;
@@ -1113,6 +1191,8 @@ static char default_discord_app_id[] = "475456035851599874";
#define DEFAULT_AI_SERVICE_ENABLE true
#define DEFAULT_AI_SERVICE_PAUSE false
#define DEFAULT_AI_SERVICE_MODE 1
#define DEFAULT_AI_SERVICE_URL "http://localhost:4404/"
+82
View File
@@ -105,6 +105,88 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_RECORDING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_STREAMING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_AI_SERVICE, MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#elif defined(DINGUX)
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_LALT, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_LSHIFT, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_RETURN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UP, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_LCTRL, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_SPACE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_TAB, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_BACKSPACE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_PAGEUP, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_PAGEDOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_KP_DIVIDE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_KP_PERIOD, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_TRIGGER, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_RELOAD, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_AUX_A, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_AUX_B, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_AUX_C, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_START, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_DPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_DPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_DPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_LIGHTGUN_DPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SLOWMOTION_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SLOWMOTION_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ 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 },
{ 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 },
{ 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 },
{ true, RARCH_BSV_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_UI_COMPANION_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_HOME, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_RECORDING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_STREAMING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RARCH_AI_SERVICE, MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
#else
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_z, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_a, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
+1 -1
View File
@@ -50,7 +50,7 @@
#define SUPPORTS_LIBUSB false
#endif
#ifdef HAVE_SDL
#if defined(HAVE_SDL)
#define SUPPORTS_SDL true
#else
#define SUPPORTS_SDL false
+78 -90
View File
@@ -144,6 +144,7 @@ enum video_driver_enum
VIDEO_XVIDEO,
VIDEO_SDL,
VIDEO_SDL2,
VIDEO_SDL_DINGUX,
VIDEO_EXT,
VIDEO_WII,
VIDEO_WIIU,
@@ -166,6 +167,7 @@ enum video_driver_enum
VIDEO_CACA,
VIDEO_GDI,
VIDEO_VGA,
VIDEO_FPGA,
VIDEO_NULL
};
@@ -318,7 +320,9 @@ enum midi_driver_enum
#if defined(HAVE_METAL)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_METAL;
#elif defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__)
#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__)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL;
#elif defined(HAVE_OPENGL_CORE)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL_CORE;
@@ -344,8 +348,6 @@ static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D9;
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D8;
#elif defined(HAVE_VG)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VG;
#elif defined(HAVE_VITA2D)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VITA2D;
#elif defined(PSP)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_PSP1;
#elif defined(PS2)
@@ -356,14 +358,18 @@ static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_CTR;
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SWITCH;
#elif defined(HAVE_XVIDEO)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XVIDEO;
#elif defined(HAVE_SDL)
#elif defined(HAVE_SDL) && !defined(HAVE_SDL_DINGUX)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL;
#elif defined(HAVE_SDL2)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL2;
#elif defined(HAVE_SDL_DINGUX)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL_DINGUX;
#elif defined(_WIN32) && !defined(_XBOX)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GDI;
#elif defined(DJGPP)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VGA;
#elif defined(HAVE_FPGA)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_FPGA;
#elif defined(HAVE_DYLIB) && !defined(ANDROID)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_EXT;
#else
@@ -400,7 +406,7 @@ static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_AUDIOIO;
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_OSS;
#elif defined(HAVE_JACK)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_JACK;
#elif defined(HAVE_COREAUDIO)
#elif defined(HAVE_COREAUDIO) && !defined(HAVE_COCOA_METAL)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_COREAUDIO;
#elif defined(HAVE_COREAUDIO3)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_COREAUDIO3;
@@ -444,7 +450,7 @@ static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_NULL;
#ifdef HAVE_WINMM
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_WINMM;
#elif defined(HAVE_ALSA) && !defined(HAVE_HAKCHI)
#elif defined(HAVE_ALSA) && !defined(HAVE_HAKCHI) && !defined(HAVE_SEGAM)
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_ALSA;
#else
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_NULL;
@@ -696,7 +702,7 @@ const char *config_get_default_audio(void)
return "dsp";
case AUDIO_SWITCH:
#if defined(HAVE_LIBNX)
return "switch_thread";
return "switch_audren_thread";
#else
return "switch";
#endif
@@ -805,6 +811,8 @@ const char *config_get_default_video(void)
return "switch";
case VIDEO_XVIDEO:
return "xvideo";
case VIDEO_SDL_DINGUX:
return "sdl_dingux";
case VIDEO_SDL:
return "sdl";
case VIDEO_SDL2:
@@ -827,6 +835,8 @@ const char *config_get_default_video(void)
return "gdi";
case VIDEO_VGA:
return "vga";
case VIDEO_FPGA:
return "fpga";
case VIDEO_NULL:
break;
}
@@ -1325,6 +1335,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
struct config_bool_setting *tmp = (struct config_bool_setting*)calloc(1, (*size + 1) * sizeof(struct config_bool_setting));
unsigned count = 0;
SETTING_BOOL("accessibility_enable", &settings->bools.accessibility_enable, true, DEFAULT_ACCESSIBILITY_ENABLE, false);
SETTING_BOOL("driver_switch_enable", &settings->bools.driver_switch_enable, true, DEFAULT_DRIVER_SWITCH_ENABLE, false);
SETTING_BOOL("frame_time_counter_reset_after_fastforwarding", &settings->bools.frame_time_counter_reset_after_fastforwarding, true, false, false);
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);
@@ -1445,10 +1457,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false);
SETTING_BOOL("menu_throttle_framerate", &settings->bools.menu_throttle_framerate, true, true, false);
SETTING_BOOL("menu_linear_filter", &settings->bools.menu_linear_filter, true, true, false);
SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, true, false);
SETTING_BOOL("dpi_override_enable", &settings->bools.menu_dpi_override_enable, true, DEFAULT_MENU_DPI_OVERRIDE_ENABLE, false);
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);
@@ -1517,9 +1529,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("content_show_netplay", &settings->bools.menu_content_show_netplay, true, content_show_netplay, false);
#endif
SETTING_BOOL("content_show_history", &settings->bools.menu_content_show_history, true, content_show_history, false);
#ifdef HAVE_LIBRETRODB
SETTING_BOOL("content_show_add", &settings->bools.menu_content_show_add, true, content_show_add, false);
#endif
SETTING_BOOL("content_show_playlists", &settings->bools.menu_content_show_playlists, true, content_show_playlists, false);
SETTING_BOOL("menu_show_load_core", &settings->bools.menu_show_load_core, true, menu_show_load_core, false);
SETTING_BOOL("menu_show_load_content", &settings->bools.menu_show_load_content, true, menu_show_load_content, false);
@@ -1551,6 +1561,9 @@ 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_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);
#endif
#ifdef HAVE_RGUI
SETTING_BOOL("rgui_background_filler_thickness_enable", &settings->bools.menu_rgui_background_filler_thickness_enable, true, true, false);
@@ -1584,6 +1597,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("input_overlay_show_physical_inputs", &settings->bools.input_overlay_show_physical_inputs, true, false, false);
SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, DEFAULT_OVERLAY_HIDE_IN_MENU, false);
SETTING_BOOL("input_overlay_show_mouse_cursor", &settings->bools.input_overlay_show_mouse_cursor, true, DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR, false);
SETTING_BOOL("input_overlay_auto_rotate", &settings->bools.input_overlay_auto_rotate, true, DEFAULT_OVERLAY_AUTO_ROTATE, false);
#endif
#ifdef HAVE_VIDEO_LAYOUT
SETTING_BOOL("video_layout_enable", &settings->bools.video_layout_enable, true, true, false);
@@ -1651,11 +1665,13 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef HAVE_OZONE
SETTING_BOOL("ozone_collapse_sidebar", &settings->bools.ozone_collapse_sidebar, true, DEFAULT_OZONE_COLLAPSE_SIDEBAR, false);
SETTING_BOOL("ozone_truncate_playlist_name", &settings->bools.ozone_truncate_playlist_name, true, DEFAULT_OZONE_TRUNCATE_PLAYLIST_NAME, false);
SETTING_BOOL("ozone_scroll_content_metadata",&settings->bools.ozone_scroll_content_metadata, true, DEFAULT_OZONE_SCROLL_CONTENT_METADATA, false);
#endif
SETTING_BOOL("log_to_file", &settings->bools.log_to_file, true, DEFAULT_LOG_TO_FILE, false);
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_LOG_TO_FILE);
SETTING_BOOL("log_to_file_timestamp", &settings->bools.log_to_file_timestamp, true, DEFAULT_LOG_TO_FILE_TIMESTAMP, false);
SETTING_BOOL("ai_service_enable", &settings->bools.ai_service_enable, DEFAULT_AI_SERVICE_ENABLE, false, false);
SETTING_BOOL("ai_service_pause", &settings->bools.ai_service_pause, true, DEFAULT_AI_SERVICE_PAUSE, false);
*size = count;
@@ -1685,6 +1701,7 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false);
#endif
#ifdef HAVE_MENU
SETTING_FLOAT("menu_scale_factor", &settings->floats.menu_scale_factor, true, DEFAULT_MENU_SCALE_FACTOR, false);
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);
@@ -1715,6 +1732,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
if (!tmp)
return NULL;
SETTING_UINT("accessibility_narrator_speech_speed", &settings->uints.accessibility_narrator_speech_speed, true, DEFAULT_ACCESSIBILITY_NARRATOR_SPEECH_SPEED, false);
#ifdef HAVE_NETWORKING
SETTING_UINT("streaming_mode", &settings->uints.streaming_mode, true, STREAMING_MODE_TWITCH, false);
#endif
@@ -1723,9 +1741,14 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("input_bind_hold", &settings->uints.input_bind_hold, true, input_bind_hold, false);
SETTING_UINT("input_turbo_period", &settings->uints.input_turbo_period, true, turbo_period, false);
SETTING_UINT("input_duty_cycle", &settings->uints.input_turbo_duty_cycle, true, turbo_duty_cycle, false);
SETTING_UINT("input_turbo_mode", &settings->uints.input_turbo_mode, true, turbo_mode, false);
SETTING_UINT("input_turbo_default_button", &settings->uints.input_turbo_default_button, true, turbo_default_btn, false);
SETTING_UINT("input_max_users", input_driver_get_uint(INPUT_ACTION_MAX_USERS), true, input_max_users, false);
SETTING_UINT("fps_update_interval", &settings->uints.fps_update_interval, true, DEFAULT_FPS_UPDATE_INTERVAL, false);
SETTING_UINT("input_menu_toggle_gamepad_combo", &settings->uints.input_menu_toggle_gamepad_combo, true, menu_toggle_gamepad_combo, false);
#ifdef GEKKO
SETTING_UINT("input_mouse_scale", &settings->uints.input_mouse_scale, true, DEFAULT_MOUSE_SCALE, false);
#endif
SETTING_UINT("audio_latency", &settings->uints.audio_latency, false, 0 /* TODO */, false);
SETTING_UINT("audio_resampler_quality", &settings->uints.audio_resampler_quality, true, audio_resampler_quality_level, false);
SETTING_UINT("audio_block_frames", &settings->uints.audio_block_frames, true, 0, false);
@@ -1759,7 +1782,6 @@ 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("dpi_override_value", &settings->uints.menu_dpi_override_value, true, DEFAULT_MENU_DPI_OVERRIDE_VALUE, false);
SETTING_UINT("menu_thumbnails", &settings->uints.menu_thumbnails, true, menu_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);
@@ -1789,7 +1811,6 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("menu_xmb_animation_horizontal_highlight", &settings->uints.menu_xmb_animation_horizontal_highlight, true, 0 /* TODO/FIXME - implement */, false);
SETTING_UINT("menu_xmb_animation_move_up_down", &settings->uints.menu_xmb_animation_move_up_down, true, 0 /* TODO/FIXME - implement */, false);
SETTING_UINT("xmb_alpha_factor", &settings->uints.menu_xmb_alpha_factor, true, xmb_alpha_factor, false);
SETTING_UINT("xmb_scale_factor", &settings->uints.menu_xmb_scale_factor, true, xmb_scale_factor, false);
SETTING_UINT("xmb_layout", &settings->uints.menu_xmb_layout, true, xmb_menu_layout, false);
SETTING_UINT("xmb_theme", &settings->uints.menu_xmb_theme, true, xmb_icon_theme, false);
SETTING_UINT("xmb_menu_color_theme", &settings->uints.menu_xmb_color_theme, true, xmb_theme, false);
@@ -1798,7 +1819,11 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("menu_font_color_blue", &settings->uints.menu_font_color_blue, true, menu_font_color_blue, false);
SETTING_UINT("menu_xmb_thumbnail_scale_factor", &settings->uints.menu_xmb_thumbnail_scale_factor, true, xmb_thumbnail_scale_factor, false);
#endif
SETTING_UINT("materialui_menu_color_theme", &settings->uints.menu_materialui_color_theme, true, MATERIALUI_THEME_BLUE, false);
SETTING_UINT("materialui_menu_color_theme", &settings->uints.menu_materialui_color_theme, true, DEFAULT_MATERIALUI_THEME, false);
SETTING_UINT("materialui_menu_transition_animation", &settings->uints.menu_materialui_transition_animation, true, DEFAULT_MATERIALUI_TRANSITION_ANIM, false);
SETTING_UINT("materialui_thumbnail_view_portrait", &settings->uints.menu_materialui_thumbnail_view_portrait, true, DEFAULT_MATERIALUI_THUMBNAIL_VIEW_PORTRAIT, false);
SETTING_UINT("materialui_thumbnail_view_landscape", &settings->uints.menu_materialui_thumbnail_view_landscape, true, DEFAULT_MATERIALUI_THUMBNAIL_VIEW_LANDSCAPE, false);
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);
@@ -1827,7 +1852,11 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("netplay_share_analog", &settings->uints.netplay_share_analog, true, netplay_share_analog, false);
#endif
#ifdef HAVE_LANGEXTRA
#ifdef VITA
SETTING_UINT("user_language", msg_hash_get_uint(MSG_HASH_USER_LANGUAGE), true, frontend_driver_get_user_language(), false);
#else
SETTING_UINT("user_language", msg_hash_get_uint(MSG_HASH_USER_LANGUAGE), true, DEFAULT_USER_LANGUAGE, false);
#endif
#endif
SETTING_UINT("bundle_assets_extract_version_current", &settings->uints.bundle_assets_extract_version_current, true, 0, false);
SETTING_UINT("bundle_assets_extract_last_version", &settings->uints.bundle_assets_extract_last_version, true, 0, false);
@@ -1867,6 +1896,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("playlist_entry_remove_enable", &settings->uints.playlist_entry_remove_enable, true, playlist_entry_remove_enable, false);
SETTING_UINT("playlist_show_inline_core_name", &settings->uints.playlist_show_inline_core_name, true, playlist_show_inline_core_name, false);
SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, playlist_sublabel_runtime_type, false);
SETTING_UINT("playlist_sublabel_last_played_style", &settings->uints.playlist_sublabel_last_played_style, true, DEFAULT_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, false);
#endif
*size = count;
@@ -1930,12 +1960,13 @@ static struct config_int_setting *populate_settings_int(settings_t *settings, in
*
* Set 'default' configuration values.
**/
void config_set_defaults(void)
void config_set_defaults(void *data)
{
unsigned i, j;
#ifdef HAVE_MENU
static bool first_initialized = true;
#endif
global_t *global = (global_t*)data;
settings_t *settings = config_get_ptr();
int bool_settings_size = sizeof(settings->bools) / sizeof(settings->bools.placeholder);
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
@@ -2110,6 +2141,7 @@ void config_set_defaults(void)
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;
#endif
#ifdef HAVE_MENU
@@ -2193,14 +2225,10 @@ void config_set_defaults(void)
rarch_ctl(RARCH_CTL_UNSET_BPS_PREF, NULL);
rarch_ctl(RARCH_CTL_UNSET_IPS_PREF, NULL);
if (global)
{
global_t *global = global_get_ptr();
if (global)
{
*global->record.output_dir = '\0';
*global->record.config_dir = '\0';
}
*global->record.output_dir = '\0';
*global->record.config_dir = '\0';
}
*settings->paths.path_core_options = '\0';
@@ -2666,7 +2694,8 @@ static bool check_menu_driver_compatibility(void)
* Loads a config file and reads all the values into memory.
*
*/
static bool config_load_file(const char *path, settings_t *settings)
static bool config_load_file(global_t *global,
const char *path, settings_t *settings)
{
unsigned i;
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
@@ -3092,8 +3121,6 @@ static bool config_load_file(const char *path, settings_t *settings)
else if (path_is_directory(tmp_str))
{
global_t *global = global_get_ptr();
dir_set(RARCH_DIR_SAVEFILE, tmp_str);
if (global)
@@ -3102,7 +3129,7 @@ static bool config_load_file(const char *path, settings_t *settings)
sizeof(global->name.savefile));
fill_pathname_dir(global->name.savefile,
path_get(RARCH_PATH_BASENAME),
file_path_str(FILE_PATH_SRM_EXTENSION),
".srm",
sizeof(global->name.savefile));
}
}
@@ -3117,8 +3144,6 @@ static bool config_load_file(const char *path, settings_t *settings)
dir_set(RARCH_DIR_SAVESTATE, g_defaults.dirs[DEFAULT_DIR_SAVESTATE]);
else if (path_is_directory(tmp_str))
{
global_t *global = global_get_ptr();
dir_set(RARCH_DIR_SAVESTATE, tmp_str);
if (global)
@@ -3127,7 +3152,7 @@ static bool config_load_file(const char *path, settings_t *settings)
sizeof(global->name.savestate));
fill_pathname_dir(global->name.savestate,
path_get(RARCH_PATH_BASENAME),
file_path_str(FILE_PATH_STATE_EXTENSION),
".state",
sizeof(global->name.savestate));
}
}
@@ -3252,19 +3277,19 @@ bool config_load_override(void)
fill_pathname_join_special_ext(game_path,
config_directory, core_name,
game_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
fill_pathname_join_special_ext(content_path,
config_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
fill_pathname_join_special_ext(core_path,
config_directory, core_name,
core_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
free(config_directory);
@@ -3361,7 +3386,8 @@ bool config_load_override(void)
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL);
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL);
if (!config_load_file(path_get(RARCH_PATH_CONFIG), config_get_ptr()))
if (!config_load_file(global_get_ptr(),
path_get(RARCH_PATH_CONFIG), config_get_ptr()))
goto error;
/* Restore the libretro_path we're using
@@ -3407,7 +3433,8 @@ bool config_unload_override(void)
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL);
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL);
if (!config_load_file(path_get(RARCH_PATH_CONFIG), config_get_ptr()))
if (!config_load_file(global_get_ptr(),
path_get(RARCH_PATH_CONFIG), config_get_ptr()))
return false;
RARCH_LOG("[Overrides] configuration overrides unloaded, original configuration restored.\n");
@@ -3479,19 +3506,19 @@ bool config_load_remap(const char *directory_input_remapping)
fill_pathname_join_special_ext(core_path,
remap_directory, core_name,
core_name,
file_path_str(FILE_PATH_REMAP_EXTENSION),
".rmp",
path_size);
fill_pathname_join_special_ext(content_path,
remap_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_REMAP_EXTENSION),
".rmp",
path_size);
fill_pathname_join_special_ext(game_path,
remap_directory, core_name,
game_name,
file_path_str(FILE_PATH_REMAP_EXTENSION),
".rmp",
path_size);
input_remapping_set_defaults(false);
@@ -3554,8 +3581,9 @@ success:
* Loads a config file and reads all the values into memory.
*
*/
void config_parse_file(void)
void config_parse_file(void *data)
{
global_t *global = (global_t*)data;
if (path_is_empty(RARCH_PATH_CONFIG))
{
RARCH_LOG("[config] Loading default config.\n");
@@ -3565,7 +3593,7 @@ void config_parse_file(void)
const char *config_path = path_get(RARCH_PATH_CONFIG);
RARCH_LOG("[config] loading config from: %s.\n", config_path);
if (!config_load_file(config_path, config_get_ptr()))
if (!config_load_file(global, config_path, config_get_ptr()))
{
RARCH_ERR("[config] couldn't find config at path: \"%s\"\n",
config_path);
@@ -3579,10 +3607,11 @@ void config_parse_file(void)
* Loads a config file and reads all the values into memory.
*
*/
void config_load(void)
void config_load(void *data)
{
config_set_defaults();
config_parse_file();
global_t *global = (global_t*)data;
config_set_defaults(global);
config_parse_file(global);
}
/**
@@ -3635,7 +3664,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
fill_pathname_join(buf_new, buf,
path, path_size);
fill_pathname_noext(autoconf_file, buf_new,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
free(buf_new);
@@ -3645,7 +3674,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
fill_pathname_join(buf, autoconf_dir,
path, path_size);
fill_pathname_noext(autoconf_file, buf,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
}
@@ -3994,26 +4023,27 @@ bool config_save_overrides(int override_type)
fill_pathname_join_special_ext(game_path,
config_directory, core_name,
game_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
fill_pathname_join_special_ext(content_path,
config_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
fill_pathname_join_special_ext(core_path,
config_directory, core_name,
core_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
".cfg",
path_size);
if (!conf)
conf = config_file_new_alloc();
/* Load the original config file in memory */
config_load_file(path_get(RARCH_PATH_CONFIG), settings);
config_load_file(global_get_ptr(),
path_get(RARCH_PATH_CONFIG), settings);
bool_settings = populate_settings_bool(settings, &bool_settings_size);
tmp_i = sizeof(settings->bools) / sizeof(settings->bools.placeholder);
@@ -4050,88 +4080,46 @@ bool config_save_overrides(int override_type)
for (i = 0; i < (unsigned)bool_settings_size; i++)
{
if ((*bool_settings[i].ptr) != (*bool_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
bool_settings[i].ident, (*bool_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
bool_overrides[i].ident, (*bool_overrides[i].ptr));
config_set_bool(conf, bool_overrides[i].ident,
(*bool_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)int_settings_size; i++)
{
if ((*int_settings[i].ptr) != (*int_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
int_settings[i].ident, (*int_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
int_overrides[i].ident, (*int_overrides[i].ptr));
config_set_int(conf, int_overrides[i].ident,
(*int_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)uint_settings_size; i++)
{
if ((*uint_settings[i].ptr) != (*uint_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
uint_settings[i].ident, (*uint_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
uint_overrides[i].ident, (*uint_overrides[i].ptr));
config_set_int(conf, uint_overrides[i].ident,
(*uint_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)size_settings_size; i++)
{
if ((*size_settings[i].ptr) != (*size_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
size_settings[i].ident, (*size_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
size_overrides[i].ident, (*size_overrides[i].ptr));
config_set_int(conf, size_overrides[i].ident,
(int)(*size_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)float_settings_size; i++)
{
if ((*float_settings[i].ptr) != (*float_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%f\n",
float_settings[i].ident, *float_settings[i].ptr);
RARCH_LOG(" override: %s=%f\n",
float_overrides[i].ident, *float_overrides[i].ptr);
config_set_float(conf, float_overrides[i].ident,
*float_overrides[i].ptr);
}
}
for (i = 0; i < (unsigned)array_settings_size; i++)
{
if (!string_is_equal(array_settings[i].ptr, array_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%s\n",
array_settings[i].ident, array_settings[i].ptr);
RARCH_LOG(" override: %s=%s\n",
array_overrides[i].ident, array_overrides[i].ptr);
config_set_string(conf, array_overrides[i].ident,
array_overrides[i].ptr);
}
}
for (i = 0; i < (unsigned)path_settings_size; i++)
{
if (!string_is_equal(path_settings[i].ptr, path_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%s\n",
path_settings[i].ident, path_settings[i].ptr);
RARCH_LOG(" override: %s=%s\n",
path_overrides[i].ident, path_overrides[i].ptr);
config_set_path(conf, path_overrides[i].ident,
path_overrides[i].ptr);
}
}
for (i = 0; i < MAX_USERS; i++)
+30 -6
View File
@@ -110,6 +110,9 @@ typedef struct settings
bool video_layout_enable;
#endif
/* Accessibility */
bool accessibility_enable;
/* Audio */
bool audio_enable;
bool audio_enable_menu;
@@ -130,6 +133,7 @@ typedef struct settings
bool input_overlay_hide_in_menu;
bool input_overlay_show_physical_inputs;
bool input_overlay_show_mouse_cursor;
bool input_overlay_auto_rotate;
bool input_descriptor_label_show;
bool input_descriptor_hide_unbound;
bool input_all_users_control_menu;
@@ -150,6 +154,7 @@ typedef struct settings
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;
@@ -160,7 +165,6 @@ typedef struct settings
bool menu_pointer_enable;
bool menu_navigation_wraparound_enable;
bool menu_navigation_browser_filter_supported_extensions_enable;
bool menu_dpi_override_enable;
bool menu_show_advanced_settings;
bool menu_throttle_framerate;
bool menu_linear_filter;
@@ -186,6 +190,9 @@ typedef struct settings
bool menu_show_video_layout;
#endif
bool menu_materialui_icons_enable;
bool menu_materialui_auto_rotate_nav_bar;
bool menu_materialui_dual_thumbnail_list_view_enable;
bool menu_materialui_thumbnail_background_enable;
bool menu_rgui_background_filler_thickness_enable;
bool menu_rgui_border_filler_thickness_enable;
bool menu_rgui_border_filler_enable;
@@ -303,6 +310,9 @@ typedef struct settings
bool bundle_finished;
bool bundle_assets_extract_enable;
/* Driver */
bool driver_switch_enable;
/* Misc. */
bool discord_enable;
bool threaded_data_runloop_enable;
@@ -349,6 +359,7 @@ typedef struct settings
bool ssh_enable;
bool samba_enable;
bool bluetooth_enable;
bool localap_enable;
bool automatically_add_content_to_playlist;
bool video_window_show_decorations;
@@ -368,6 +379,7 @@ typedef struct settings
bool enable_device_vibration;
bool ozone_collapse_sidebar;
bool ozone_truncate_playlist_name;
bool ozone_scroll_content_metadata;
bool log_to_file;
bool log_to_file_timestamp;
@@ -375,6 +387,7 @@ typedef struct settings
bool scan_without_core_match;
bool ai_service_enable;
bool ai_service_pause;
} bools;
struct
@@ -392,6 +405,7 @@ typedef struct settings
float video_msg_color_b;
float video_msg_bgcolor_opacity;
float menu_scale_factor;
float menu_wallpaper_opacity;
float menu_framebuffer_opacity;
float menu_footer_opacity;
@@ -451,10 +465,14 @@ typedef struct settings
unsigned input_turbo_period;
unsigned input_turbo_duty_cycle;
unsigned input_turbo_mode;
unsigned input_turbo_default_button;
unsigned input_bind_timeout;
unsigned input_bind_hold;
#ifdef GEKKO
unsigned input_mouse_scale;
#endif
unsigned input_menu_toggle_gamepad_combo;
unsigned input_keyboard_gamepad_mapping_type;
unsigned input_poll_type_behavior;
@@ -506,25 +524,30 @@ typedef struct settings
#endif
unsigned video_shader_delay;
/* Accessibility */
unsigned accessibility_narrator_speech_speed;
unsigned menu_timedate_style;
unsigned menu_thumbnails;
unsigned menu_left_thumbnails;
unsigned menu_thumbnail_upscale_threshold;
unsigned menu_rgui_thumbnail_downscaler;
unsigned menu_rgui_thumbnail_delay;
unsigned menu_dpi_override_value;
unsigned menu_rgui_color_theme;
unsigned menu_xmb_animation_opening_main_menu;
unsigned menu_xmb_animation_horizontal_highlight;
unsigned menu_xmb_animation_move_up_down;
unsigned menu_xmb_layout;
unsigned menu_xmb_shader_pipeline;
unsigned menu_xmb_scale_factor;
unsigned menu_xmb_alpha_factor;
unsigned menu_xmb_theme;
unsigned menu_xmb_color_theme;
unsigned menu_xmb_thumbnail_scale_factor;
unsigned menu_materialui_color_theme;
unsigned menu_materialui_transition_animation;
unsigned menu_materialui_thumbnail_view_portrait;
unsigned menu_materialui_thumbnail_view_landscape;
unsigned menu_materialui_landscape_layout_optimization;
unsigned menu_ozone_color_theme;
unsigned menu_font_color_red;
unsigned menu_font_color_green;
@@ -538,6 +561,7 @@ typedef struct settings
unsigned playlist_entry_remove_enable;
unsigned playlist_show_inline_core_name;
unsigned playlist_sublabel_runtime_type;
unsigned playlist_sublabel_last_played_style;
unsigned camera_width;
unsigned camera_height;
@@ -792,7 +816,7 @@ const char *config_get_default_record(void);
* Loads a config file and reads all the values into memory.
*
*/
void config_parse_file(void);
void config_parse_file(void *data);
/**
* config_load_override:
@@ -861,7 +885,7 @@ bool config_replace(bool config_save_on_exit, char *path);
bool config_overlay_enable_default(void);
void config_set_defaults(void);
void config_set_defaults(void *data);
settings_t *config_get_ptr(void);
+2 -4
View File
@@ -228,9 +228,7 @@ static config_file_t *core_info_list_iterate(
}
#endif
strlcat(info_path_base,
file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
info_path_base_size);
strlcat(info_path_base, ".info", info_path_base_size);
info_path = (char*)malloc(info_path_base_size);
fill_pathname_join(info_path,
@@ -1136,7 +1134,7 @@ bool core_info_hw_api_supported(core_info_t *info)
if (string_is_empty(cur_api))
continue;
cur_api_len = strlen(cur_api);
cur_api_len = (int)strlen(cur_api);
for (j = 0; j < cur_api_len; j++)
{
+797
View File
@@ -0,0 +1,797 @@
/* Copyright (C) 2010-2019 The RetroArch team
*
* ---------------------------------------------------------------------------------------
* The following license statement only applies to this file (core_updater_list.c).
* ---------------------------------------------------------------------------------------
*
* Permission is hereby granted, free of charge,
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <file/file_path.h>
#include <string/stdstring.h>
#include <lists/string_list.h>
#include <net/net_http.h>
#include <retro_miscellaneous.h>
#include "file_path_special.h"
#include "core_info.h"
#include "core_updater_list.h"
/* Holds all entries in a core updater list */
struct core_updater_list
{
size_t size;
size_t capacity;
core_updater_list_entry_t *entries;
};
/* Cached ('global') core updater list */
static core_updater_list_t *core_list_cached = NULL;
/**************************************/
/* Initialisation / De-Initialisation */
/**************************************/
/* Frees contents of specified core updater
* list entry */
static void core_updater_list_free_entry(core_updater_list_entry_t *entry)
{
if (!entry)
return;
if (entry->remote_filename)
{
free(entry->remote_filename);
entry->remote_filename = NULL;
}
if (entry->remote_core_path)
{
free(entry->remote_core_path);
entry->remote_core_path = NULL;
}
if (entry->local_core_path)
{
free(entry->local_core_path);
entry->local_core_path = NULL;
}
if (entry->local_info_path)
{
free(entry->local_info_path);
entry->local_info_path = NULL;
}
if (entry->display_name)
{
free(entry->display_name);
entry->display_name = NULL;
}
}
/* Creates a new, empty core updater list.
* Returns a handle to a new core_updater_list_t object
* on success, otherwise returns NULL. */
core_updater_list_t *core_updater_list_init(size_t max_size)
{
core_updater_list_t *core_list = NULL;
core_updater_list_entry_t *entries = NULL;
/* Sanity check */
if (max_size < 1)
return NULL;
/* Create core updater list */
core_list = (core_updater_list_t*)calloc(1, sizeof(*core_list));
if (!core_list)
return NULL;
/* Create entries array */
entries = (core_updater_list_entry_t*)calloc(max_size, sizeof(*entries));
if (!entries)
{
free(core_list);
return NULL;
}
/* Initial configuration */
core_list->size = 0;
core_list->capacity = max_size;
core_list->entries = entries;
return core_list;
}
/* Resets (removes all entries of) specified core
* updater list */
void core_updater_list_reset(core_updater_list_t *core_list)
{
size_t i;
if (!core_list)
return;
for (i = 0; i < core_list->size; i++)
{
core_updater_list_entry_t *entry = &core_list->entries[i];
if (entry)
core_updater_list_free_entry(entry);
}
core_list->size = 0;
}
/* Frees specified core updater list */
void core_updater_list_free(core_updater_list_t *core_list)
{
size_t i;
if (!core_list)
return;
for (i = 0; i < core_list->size; i++)
{
core_updater_list_entry_t *entry = &core_list->entries[i];
if (entry)
core_updater_list_free_entry(entry);
}
free(core_list->entries);
core_list->entries = NULL;
free(core_list);
}
/***************/
/* Cached List */
/***************/
/* Creates a new, empty cached core updater list
* (i.e. 'global' list).
* Returns false in the event of an error. */
bool core_updater_list_init_cached(size_t max_size)
{
/* Free any existing cached core updater list */
if (core_list_cached)
{
core_updater_list_free(core_list_cached);
core_list_cached = NULL;
}
core_list_cached = core_updater_list_init(max_size);
if (!core_list_cached)
return false;
return true;
}
/* Fetches cached core updater list */
core_updater_list_t *core_updater_list_get_cached(void)
{
if (core_list_cached)
return core_list_cached;
return NULL;
}
/* Frees cached core updater list */
void core_updater_list_free_cached(void)
{
core_updater_list_free(core_list_cached);
core_list_cached = NULL;
}
/***********/
/* Getters */
/***********/
/* Returns number of entries in core updater list */
size_t core_updater_list_size(core_updater_list_t *core_list)
{
if (!core_list)
return 0;
return core_list->size;
}
/* Returns maximum allowed number of entries in core
* updater list */
size_t core_updater_list_capacity(core_updater_list_t *core_list)
{
if (!core_list)
return 0;
return core_list->capacity;
}
/* Fetches core updater list entry corresponding
* to the specified entry index.
* Returns false if index is invalid. */
bool core_updater_list_get_index(
core_updater_list_t *core_list,
size_t idx,
const core_updater_list_entry_t **entry)
{
if (!core_list || !entry)
return false;
if (idx >= core_list->size)
return false;
if (entry)
*entry = &core_list->entries[idx];
return true;
}
/* Fetches core updater list entry corresponding
* to the specified remote core filename.
* Returns false if core is not found. */
bool core_updater_list_get_filename(
core_updater_list_t *core_list,
const char *remote_filename,
const core_updater_list_entry_t **entry)
{
size_t i;
if (!core_list || string_is_empty(remote_filename))
return false;
if (core_list->size < 1)
return false;
/* Search for specified filename */
for (i = 0; i < core_list->size; i++)
{
core_updater_list_entry_t *current_entry = &core_list->entries[i];
if (string_is_empty(current_entry->remote_filename))
continue;
if (string_is_equal(remote_filename, current_entry->remote_filename))
{
if (entry)
*entry = current_entry;
return true;
}
}
return false;
}
/* Fetches core updater list entry corresponding
* to the specified core.
* Returns false if core is not found. */
bool core_updater_list_get_core(
core_updater_list_t *core_list,
const char *local_core_path,
const core_updater_list_entry_t **entry)
{
size_t i;
char real_core_path[PATH_MAX_LENGTH];
real_core_path[0] = '\0';
if (!core_list || !entry || string_is_empty(local_core_path))
return false;
if (core_list->size < 1)
return false;
/* Resolve absolute pathname of local_core_path */
strlcpy(real_core_path, local_core_path, sizeof(real_core_path));
path_resolve_realpath(real_core_path, sizeof(real_core_path), true);
if (string_is_empty(real_core_path))
return false;
/* Search for specified core */
for (i = 0; i < core_list->size; i++)
{
core_updater_list_entry_t *current_entry = &core_list->entries[i];
if (string_is_empty(current_entry->local_core_path))
continue;
#ifdef _WIN32
/* Handle case-insensitive operating systems*/
if (string_is_equal_noncase(real_core_path, current_entry->local_core_path))
{
#else
if (string_is_equal(real_core_path, current_entry->local_core_path))
{
#endif
if (entry)
*entry = current_entry;
return true;
}
}
return false;
}
/***********/
/* Setters */
/***********/
/* Parses date string and adds contents to
* specified core updater list entry */
static bool core_updater_list_set_date(
core_updater_list_entry_t *entry, const char *date_str)
{
struct string_list *date_list = NULL;
if (!entry || string_is_empty(date_str))
goto error;
/* Split date string into component values */
date_list = string_split(date_str, "-");
if (!date_list)
goto error;
/* Date string must have 3 values:
* [year] [month] [day] */
if (date_list->size < 3)
goto error;
/* Convert date string values */
entry->date.year = string_to_unsigned(date_list->elems[0].data);
entry->date.month = string_to_unsigned(date_list->elems[1].data);
entry->date.day = string_to_unsigned(date_list->elems[2].data);
/* Clean up */
string_list_free(date_list);
return true;
error:
if (date_list)
string_list_free(date_list);
return false;
}
/* Parses crc string and adds value to
* specified core updater list entry */
static bool core_updater_list_set_crc(
core_updater_list_entry_t *entry, const char *crc_str)
{
uint32_t crc;
if (!entry || string_is_empty(crc_str))
return false;
crc = (uint32_t)string_hex_to_unsigned(crc_str);
if (crc == 0)
return false;
entry->crc = crc;
return true;
}
/* Parses core filename string and adds all
* associated paths to the specified core
* updater list entry */
static bool core_updater_list_set_paths(
core_updater_list_entry_t *entry,
const char *path_dir_libretro,
const char *path_libretro_info,
const char *network_buildbot_url,
const char *filename_str)
{
char *last_underscore = NULL;
char *tmp_url = NULL;
char remote_core_path[PATH_MAX_LENGTH];
char local_core_path[PATH_MAX_LENGTH];
char local_info_path[PATH_MAX_LENGTH];
char display_name[255];
bool is_archive;
remote_core_path[0] = '\0';
local_core_path[0] = '\0';
local_info_path[0] = '\0';
display_name[0] = '\0';
if (!entry || string_is_empty(filename_str))
return false;
if (string_is_empty(path_dir_libretro) ||
string_is_empty(path_libretro_info) ||
string_is_empty(network_buildbot_url))
return false;
/* Check whether remote file is an archive */
is_archive = path_is_compressed_file(filename_str);
/* remote_filename */
if (entry->remote_filename)
{
free(entry->remote_filename);
entry->remote_filename = NULL;
}
entry->remote_filename = strdup(filename_str);
/* remote_core_path */
fill_pathname_join(
remote_core_path,
network_buildbot_url,
filename_str,
sizeof(remote_core_path));
/* > Apply proper URL encoding (messy...) */
tmp_url = strdup(remote_core_path);
remote_core_path[0] = '\0';
net_http_urlencode_full(
remote_core_path, tmp_url, sizeof(remote_core_path));
if (tmp_url)
free(tmp_url);
if (entry->remote_core_path)
{
free(entry->remote_core_path);
entry->remote_core_path = NULL;
}
entry->remote_core_path = strdup(remote_core_path);
/* local_core_path */
fill_pathname_join(
local_core_path,
path_dir_libretro,
filename_str,
sizeof(local_core_path));
if (is_archive)
path_remove_extension(local_core_path);
path_resolve_realpath(local_core_path, sizeof(local_core_path), true);
if (entry->local_core_path)
{
free(entry->local_core_path);
entry->local_core_path = NULL;
}
entry->local_core_path = strdup(local_core_path);
/* local_info_path */
fill_pathname_join_noext(
local_info_path,
path_libretro_info,
filename_str,
sizeof(local_info_path));
if (is_archive)
path_remove_extension(local_info_path);
/* > Remove any non-standard core filename
* additions (i.e. info files end with
* '_libretro' but core files may have
* a platform specific addendum,
* e.g. '_android')*/
last_underscore = (char*)strrchr(local_info_path, '_');
if (!string_is_empty(last_underscore))
{
if (string_is_not_equal_fast(last_underscore, "_libretro", 9))
*last_underscore = '\0';
}
/* > Add proper file extension */
strlcat(
local_info_path,
file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
sizeof(local_info_path));
if (entry->local_info_path)
{
free(entry->local_info_path);
entry->local_info_path = NULL;
}
entry->local_info_path = strdup(local_info_path);
/* display_name
* > Note: It's a bit rubbish that we have to
* read the actual core info files here...
* Would be better to cache this globally
* (at present, we only cache info for
* *installed* cores...) */
if (path_is_valid(local_info_path))
if (!core_info_get_display_name(
local_info_path, display_name, sizeof(display_name)))
display_name[0] = '\0';
/* > If info file does not exist, just use
* core filename */
if (string_is_empty(display_name))
strlcpy(display_name, filename_str, sizeof(display_name));
if (entry->display_name)
{
free(entry->display_name);
entry->display_name = NULL;
}
entry->display_name = strdup(display_name);
return true;
}
/* Adds entry to the end of the specified core
* updater list
* NOTE: Entry string values are passed by
* reference - *do not free the entry passed
* to this function* */
static bool core_updater_list_push_entry(
core_updater_list_t *core_list, core_updater_list_entry_t *entry)
{
core_updater_list_entry_t *list_entry = NULL;
if (!core_list || !entry)
return false;
/* Ensure there is enough space for the new entry */
if (core_list->capacity <= core_list->size)
return false;
/* Get handle of new entry inside list */
list_entry = &core_list->entries[core_list->size];
if (!list_entry)
return false;
/* Ensure list entry is empty */
core_updater_list_free_entry(list_entry);
/* Assign paths */
list_entry->remote_filename = entry->remote_filename;
list_entry->remote_core_path = entry->remote_core_path;
list_entry->local_core_path = entry->local_core_path;
list_entry->local_info_path = entry->local_info_path;
list_entry->display_name = entry->display_name;
/* Copy crc */
list_entry->crc = entry->crc;
/* Copy date */
memcpy(&list_entry->date, &entry->date, sizeof(core_updater_list_date_t));
/* Increment list size */
core_list->size++;
return true;
}
/* Parses the contents of a single buildbot
* core listing and adds it to the specified
* core updater list */
static void core_updater_list_add_entry(
core_updater_list_t *core_list,
const char *path_dir_libretro,
const char *path_libretro_info,
const char *network_buildbot_url,
struct string_list *network_core_entry_list)
{
const char *date_str = NULL;
const char *crc_str = NULL;
const char *filename_str = NULL;
core_updater_list_entry_t entry = {0};
if (!core_list || !network_core_entry_list)
goto error;
/* > Listings must have 3 entries:
* [date] [crc] [filename] */
if (network_core_entry_list->size < 3)
goto error;
/* Get handles of the individual listing strings */
date_str = network_core_entry_list->elems[0].data;
crc_str = network_core_entry_list->elems[1].data;
filename_str = network_core_entry_list->elems[2].data;
if (string_is_empty(date_str) ||
string_is_empty(crc_str) ||
string_is_empty(filename_str))
goto error;
/* Check whether core file is already included
* in the list (this is *not* an error condition,
* it just means we can skip the current listing) */
if (core_updater_list_get_filename(core_list, filename_str, NULL))
goto error;
/* Parse individual listing strings */
if (!core_updater_list_set_date(&entry, date_str))
goto error;
if (!core_updater_list_set_crc(&entry, crc_str))
goto error;
if (!core_updater_list_set_paths(
&entry,
path_dir_libretro,
path_libretro_info,
network_buildbot_url,
filename_str))
goto error;
/* Add entry to list */
if (!core_updater_list_push_entry(core_list, &entry))
goto error;
return;
error:
/* This is not a *fatal* error - it just
* means one of the following:
* - The current line of entry text received
* from the buildbot is broken somehow
* (could be the case that the network buffer
* wasn't large enough to cache the entire
* string, so the last line was truncated)
* - The core updater list struct is at capacity
* In either case, the current entry is discarded
* and we move on to the next one
* (network transfers are fishy business, so we
* choose to ignore this sort of error - don't
* want the whole fetch to fail because of a
* trivial glitch...) */
core_updater_list_free_entry(&entry);
}
/* Core updater list qsort helper function */
static int core_updater_list_qsort_func(
const core_updater_list_entry_t *a, const core_updater_list_entry_t *b)
{
if (!a || !b)
return 0;
if (string_is_empty(a->display_name) || string_is_empty(b->display_name))
return 0;
return strcasecmp(a->display_name, b->display_name);
}
/* Sorts core updater list into alphabetical order */
static void core_updater_list_qsort(core_updater_list_t *core_list)
{
if (!core_list)
return;
if (core_list->size < 2)
return;
qsort(
core_list->entries,
core_list->size,
sizeof(core_updater_list_entry_t),
(int (*)(const void *, const void *))
core_updater_list_qsort_func);
}
/* Reads the contents of a buildbot core list
* network request into the specified
* core_updater_list_t object.
* Returns false in the event of an error. */
bool core_updater_list_parse_network_data(
core_updater_list_t *core_list,
const char *path_dir_libretro,
const char *path_libretro_info,
const char *network_buildbot_url,
const char *data, size_t len)
{
struct string_list *network_core_list = NULL;
struct string_list *network_core_entry_list = NULL;
char *data_buf = NULL;
size_t i;
/* Sanity check */
if (!core_list || string_is_empty(data) || (len < 1))
goto error;
/* We're populating a list 'from scratch' - remove
* any existing entries */
core_updater_list_reset(core_list);
/* Input data string is not terminated - have
* to copy it to a temporary buffer... */
data_buf = (char*)malloc((len + 1) * sizeof(char));
if (!data_buf)
goto error;
memcpy(data_buf, data, len * sizeof(char));
data_buf[len] = '\0';
/* Split network listing request into lines */
network_core_list = string_split(data_buf, "\n");
if (!network_core_list)
goto error;
if (network_core_list->size < 1)
goto error;
/* Temporary data buffer is no longer required */
free(data_buf);
data_buf = NULL;
/* Loop over lines */
for (i = 0; i < network_core_list->size; i++)
{
const char *line = network_core_list->elems[i].data;
if (string_is_empty(line))
continue;
/* Split line into listings info components */
network_core_entry_list = string_split(line, " ");
/* Parse listings info and add to core updater
* list */
core_updater_list_add_entry(
core_list,
path_dir_libretro,
path_libretro_info,
network_buildbot_url,
network_core_entry_list);
/* Clean up */
string_list_free(network_core_entry_list);
network_core_entry_list = NULL;
}
/* Sanity check */
if (core_list->size < 1)
goto error;
/* Clean up */
string_list_free(network_core_list);
/* Sort completed list */
core_updater_list_qsort(core_list);
return true;
error:
if (network_core_list)
string_list_free(network_core_list);
if (network_core_entry_list)
string_list_free(network_core_entry_list);
if (data_buf)
free(data_buf);
return false;
}
+147
View File
@@ -0,0 +1,147 @@
/* Copyright (C) 2010-2019 The RetroArch team
*
* ---------------------------------------------------------------------------------------
* The following license statement only applies to this file (core_updater_list.h).
* ---------------------------------------------------------------------------------------
*
* Permission is hereby granted, free of charge,
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __CORE_UPDATER_LIST_H
#define __CORE_UPDATER_LIST_H
#include <retro_common_api.h>
#include <libretro.h>
#include <boolean.h>
RETRO_BEGIN_DECLS
/* Default maximum number of entries in
* a core updater list */
#define CORE_UPDATER_LIST_SIZE 9999
/* Holds all date info for a core file
* on the buildbot */
typedef struct
{
unsigned year;
unsigned month;
unsigned day;
} core_updater_list_date_t;
/* Holds all info related to a core
* file on the buildbot */
typedef struct
{
char *remote_filename;
char *remote_core_path;
char *local_core_path;
char *local_info_path;
char *display_name;
uint32_t crc;
core_updater_list_date_t date;
} core_updater_list_entry_t;
/* Prevent direct access to core_updater_list_t
* members */
typedef struct core_updater_list core_updater_list_t;
/**************************************/
/* Initialisation / De-Initialisation */
/**************************************/
/* Creates a new, empty core updater list with a
* maximum number of 'max_size' entries.
* Returns a handle to a new core_updater_list_t object
* on success, otherwise returns NULL. */
core_updater_list_t *core_updater_list_init(size_t max_size);
/* Resets (removes all entries of) specified core
* updater list */
void core_updater_list_reset(core_updater_list_t *core_list);
/* Frees specified core updater list */
void core_updater_list_free(core_updater_list_t *core_list);
/***************/
/* Cached List */
/***************/
/* Creates a new, empty cached core updater list
* (i.e. 'global' list).
* Returns false in the event of an error. */
bool core_updater_list_init_cached(size_t max_size);
/* Fetches cached core updater list */
core_updater_list_t *core_updater_list_get_cached(void);
/* Frees cached core updater list */
void core_updater_list_free_cached(void);
/***********/
/* Getters */
/***********/
/* Returns number of entries in core updater list */
size_t core_updater_list_size(core_updater_list_t *core_list);
/* Returns maximum allowed number of entries in core
* updater list */
size_t core_updater_list_capacity(core_updater_list_t *core_list);
/* Fetches core updater list entry corresponding
* to the specified entry index.
* Returns false if index is invalid. */
bool core_updater_list_get_index(
core_updater_list_t *core_list,
size_t idx,
const core_updater_list_entry_t **entry);
/* Fetches core updater list entry corresponding
* to the specified remote core filename.
* Returns false if core is not found. */
bool core_updater_list_get_filename(
core_updater_list_t *core_list,
const char *remote_filename,
const core_updater_list_entry_t **entry);
/* Fetches core updater list entry corresponding
* to the specified core.
* Returns false if core is not found. */
bool core_updater_list_get_core(
core_updater_list_t *core_list,
const char *local_core_path,
const core_updater_list_entry_t **entry);
/***********/
/* Setters */
/***********/
/* Reads the contents of a buildbot core list
* network request into the specified
* core_updater_list_t object.
* Returns false in the event of an error. */
bool core_updater_list_parse_network_data(
core_updater_list_t *core_list,
const char *path_dir_libretro,
const char *path_libretro_info,
const char *network_buildbot_url,
const char *data, size_t len);
RETRO_END_DECLS
#endif
+1 -1
View File
@@ -360,7 +360,7 @@ size_t libretro_videoprocessor_retro_get_memory_size(unsigned id);
#endif
#ifdef HAVE_EASTEREGG
#ifdef HAVE_GONG
/* Internal gong core. */
void libretro_gong_retro_init(void);
+17 -4
View File
@@ -75,6 +75,11 @@ endif
TARGET_NAME := ffmpeg
GIT_VERSION ?= " $(shell git rev-parse --short HEAD || echo unknown)"
ifneq ($(GIT_VERSION)," unknown")
CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
endif
ifneq (,$(findstring unix,$(platform)))
ARCH_X86 = 1
TARGET := $(TARGET_NAME)_libretro.so
@@ -123,7 +128,7 @@ else ifneq (,$(findstring ios,$(platform)))
TARGET := $(TARGET_NAME)_libretro_ios.dylib
fpic := -fPIC
SHARED := -dynamiclib
CFLAGS += -I. -I.. -DHAVE_FMINF -DIOS
CFLAGS += -I. -I.. -DHAVE_FMINF -DIOS -DHAVE_UNISTD_H
ifeq ($(OPENGL),1)
HAVE_OPENGL = 1
GLES = 1
@@ -140,11 +145,16 @@ ifeq ($(IOSSDK),)
IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
endif
ifeq ($(platform),ios-arm64)
CC = cc -arch arm64 -isysroot $(IOSSDK)
CXX = c++ -arch arm64 -isysroot $(IOSSDK)
else
CC = cc -arch armv7 -isysroot $(IOSSDK)
CXX = c++ -arch armv7 -isysroot $(IOSSDK)
LD = armv7-apple-darwin11-ld
endif
ifeq ($(platform),ios9)
ifeq ($(platform),$(filter $(platform),ios9 ios-arm64))
CC += -miphoneos-version-min=8.0
CFLAGS += -miphoneos-version-min=8.0
else
@@ -177,20 +187,23 @@ else ifeq ($(platform), emscripten)
else
ARCH_X86 = 1
CC = gcc
CXX = g++
TARGET := $(TARGET_NAME)_libretro.dll
SHARED := -shared -static-libgcc -static-libstdc++ -s -Wl,--version-script=link.T -Wl,--no-undefined
CFLAGS += -Iffmpeg
ifeq ($(OPENGL),1)
GL_LIB := -lopengl32
CFLAGS += -DHAVE_OPENGL
HAVE_OPENGL = 1
HAVE_GL_FFT := 1
WIN32_PLATFORM := 1
endif
LIBS += -L.
endif
ifeq ($(LIBRETRO_SWITCH), 1)
CFLAGS += -DUPSTREAM_VERSION=\"$(shell cat ../RELEASE)\"
endif
CFLAGS += -D__LIBRETRO__
include Makefile.common
+4 -1
View File
@@ -19,10 +19,13 @@ SWRESAMPLE_DIR := $(BASE_DIR)/libswresample
INCFLAGS += -I$(BASE_DIR) -I$(CORE_DIR) -I$(LIBRETRO_COMM_DIR)/include -I$(LIBRETRO_COMM_DIR)/include/compat
LIBRETRO_SOURCE += $(CORE_DIR)/ffmpeg_core.c \
$(CORE_DIR)/packet_buffer.c \
$(CORE_DIR)/video_buffer.c \
$(LIBRETRO_COMM_DIR)/rthreads/tpool.c \
$(LIBRETRO_COMM_DIR)/queues/fifo_queue.c \
$(LIBRETRO_COMM_DIR)/rthreads/rthreads.c
ifeq ($(LIBRETRO_SWITCH),1)
ifeq ($(LIBRETRO_SWITCH), 1)
DEFINES += -DLIBRETRO_SWITCH=1
INTERNAL_LIBAVCODEC = 1
INTERNAL_LIBAVFORMAT = 1
+1
View File
@@ -5,6 +5,7 @@ ifeq ($(INTERNAL_ZLIB),0)
HAVE_ZLIB = 1
else
HAVE_ZLIB = 1
DEFINES += -DWANT_ZLIB
INCFLAGS += -I$(DEPS_DIR)/libz
DEPS_SOURCE += $(wildcard $(DEPS_DIR)/libz/*.c)
endif
File diff suppressed because it is too large. Load diff
+135
View File
@@ -0,0 +1,135 @@
#include "packet_buffer.h"
struct AVPacketNode {
AVPacket *data;
struct AVPacketNode *next;
struct AVPacketNode *previous;
};
typedef struct AVPacketNode AVPacketNode_t;
struct packet_buffer
{
AVPacketNode_t *head;
AVPacketNode_t *tail;
size_t size;
};
packet_buffer_t *packet_buffer_create()
{
packet_buffer_t *b = malloc(sizeof(packet_buffer_t));
if (!b)
return NULL;
memset(b, 0, sizeof(packet_buffer_t));
return b;
}
void packet_buffer_destroy(packet_buffer_t *packet_buffer)
{
AVPacketNode_t *node;
if (!packet_buffer)
return;
if (packet_buffer->head)
{
node = packet_buffer->head;
while (node)
{
AVPacketNode_t *next = node->next;
av_packet_free(&node->data);
free(node);
node = next;
}
}
free(packet_buffer);
}
void packet_buffer_clear(packet_buffer_t **packet_buffer)
{
if (!packet_buffer)
return;
packet_buffer_destroy(*packet_buffer);
*packet_buffer = packet_buffer_create();
}
bool packet_buffer_empty(packet_buffer_t *packet_buffer)
{
if (!packet_buffer)
return true;
return packet_buffer->size == 0;
}
size_t packet_buffer_size(packet_buffer_t *packet_buffer)
{
if (!packet_buffer)
return 0;
return packet_buffer->size;
}
void packet_buffer_add_packet(packet_buffer_t *packet_buffer, AVPacket *pkt)
{
AVPacketNode_t *new_head = (AVPacketNode_t *) malloc(sizeof(AVPacketNode_t));
new_head->data = av_packet_alloc();
av_packet_move_ref(new_head->data, pkt);
if (packet_buffer->head)
{
new_head->next = packet_buffer->head;
packet_buffer->head->previous = new_head;
}
else
{
new_head->next = NULL;
packet_buffer->tail = new_head;
}
packet_buffer->head = new_head;
packet_buffer->head->previous = NULL;
packet_buffer->size++;
}
void packet_buffer_get_packet(packet_buffer_t *packet_buffer, AVPacket *pkt)
{
AVPacketNode_t *new_tail = NULL;
if (packet_buffer->tail == NULL)
return;
av_packet_move_ref(pkt, packet_buffer->tail->data);
if (packet_buffer->tail->previous)
{
new_tail = packet_buffer->tail->previous;
new_tail->next = NULL;
}
else
packet_buffer->head = NULL;
av_packet_free(&packet_buffer->tail->data);
free(packet_buffer->tail);
packet_buffer->tail = new_tail;
packet_buffer->size--;
}
int64_t packet_buffer_peek_start_pts(packet_buffer_t *packet_buffer)
{
if (!packet_buffer->tail)
return 0;
return packet_buffer->tail->data->pts;
}
int64_t packet_buffer_peek_end_pts(packet_buffer_t *packet_buffer)
{
if (!packet_buffer->tail)
return 0;
return packet_buffer->tail->data->pts + packet_buffer->tail->data->duration;
}
+110
View File
@@ -0,0 +1,110 @@
#ifndef __LIBRETRO_SDK_PACKETBUFFER_H__
#define __LIBRETRO_SDK_PACKETBUFFER_H__
#include <retro_common_api.h>
#include <boolean.h>
#include <stdint.h>
#include <libavcodec/avcodec.h>
#include <retro_miscellaneous.h>
RETRO_BEGIN_DECLS
/**
* packet_buffer
*
* Just a simple double linked list for AVPackets.
*
*/
struct packet_buffer;
typedef struct packet_buffer packet_buffer_t;
/**
* packet_buffer_create:
*
* Create a packet_buffer.
*
* Returns: A packet buffer.
*/
packet_buffer_t *packet_buffer_create();
/**
* packet_buffer_destroy:
* @packet_buffer : packet buffer
*
* Destroys a packet buffer.
*
**/
void packet_buffer_destroy(packet_buffer_t *packet_buffer);
/**
* packet_buffer_clear:
* @packet_buffer : packet buffer
*
* Clears a packet buffer by re-creating it.
*
**/
void packet_buffer_clear(packet_buffer_t **packet_buffer);
/**
* packet_buffer_empty:
* @packet_buffer : packet buffer
*
* Return true if the buffer is empty;
*
**/
bool packet_buffer_empty(packet_buffer_t *packet_buffer);
/**
* packet_buffer_size:
* @packet_buffer : packet buffer
*
* Returns the number of AVPackets the buffer currently
* holds.
*
**/
size_t packet_buffer_size(packet_buffer_t *packet_buffer);
/**
* packet_buffer_add_packet:
* @packet_buffer : packet buffer
* @pkt : packet
*
* Copies the given packet into the selected buffer.
*
**/
void packet_buffer_add_packet(packet_buffer_t *packet_buffer, AVPacket *pkt);
/**
* packet_buffer_get_packet:
* @packet_buffer : packet buffer
* @pkt : packet
*
* Get the next packet. User needs to unref the packet with av_packet_unref().
*
**/
void packet_buffer_get_packet(packet_buffer_t *packet_buffer, AVPacket *pkt);
/**
* packet_buffer_peek_start_pts:
* @packet_buffer : packet buffer
*
* Returns the start pts of the next packet in the buffer.
*
**/
int64_t packet_buffer_peek_start_pts(packet_buffer_t *packet_buffer);
/**
* packet_buffer_peek_end_pts:
* @packet_buffer : packet buffer
*
* Returns the end pts of the next packet in the buffer.
*
**/
int64_t packet_buffer_peek_end_pts(packet_buffer_t *packet_buffer);
RETRO_END_DECLS
#endif
+241
View File
@@ -0,0 +1,241 @@
#include <libavformat/avformat.h>
#include <rthreads/rthreads.h>
#include "video_buffer.h"
enum kbStatus
{
KB_OPEN,
KB_IN_PROGRESS,
KB_FINISHED
};
struct video_buffer
{
video_decoder_context_t *buffer;
enum kbStatus *status;
size_t capacity;
slock_t *lock;
scond_t *open_cond;
scond_t *finished_cond;
int64_t head;
int64_t tail;
};
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));
if (!b)
return NULL;
memset(b, 0, sizeof(video_buffer_t));
b->capacity = capacity;
b->status = malloc(sizeof(enum kbStatus) * capacity);
if (!b->status)
goto fail;
for (int i = 0; i < capacity; i++)
b->status[i] = KB_OPEN;
b->lock = slock_new();
b->open_cond = scond_new();
b->finished_cond = scond_new();
if (!b->lock || !b->open_cond || !b->finished_cond)
goto fail;
b->buffer = 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();
#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);
avpicture_fill((AVPicture*)b->buffer[i].target, (const uint8_t*)b->buffer[i].frame_buf,
PIX_FMT_RGB32, width, height);
if (!b->buffer[i].sws ||
!b->buffer[i].source ||
#if LIBAVUTIL_VERSION_MAJOR > 55
!b->buffer[i].hw_source ||
#endif
!b->buffer[i].target ||
!b->buffer[i].frame_buf)
goto fail;
}
return b;
fail:
video_buffer_destroy(b);
return NULL;
}
void video_buffer_destroy(video_buffer_t *video_buffer)
{
if (!video_buffer)
return;
slock_free(video_buffer->lock);
scond_free(video_buffer->open_cond);
scond_free(video_buffer->finished_cond);
free(video_buffer->status);
if (video_buffer->buffer)
for (int i = 0; i < video_buffer->capacity; i++)
{
#if LIBAVUTIL_VERSION_MAJOR > 55
av_frame_free(&video_buffer->buffer[i].hw_source);
#endif
av_frame_free(&video_buffer->buffer[i].source);
av_frame_free(&video_buffer->buffer[i].target);
av_freep(&video_buffer->buffer[i].frame_buf);
sws_freeContext(video_buffer->buffer[i].sws);
}
free(video_buffer->buffer);
free(video_buffer);
}
void video_buffer_clear(video_buffer_t *video_buffer)
{
if (!video_buffer)
return;
slock_lock(video_buffer->lock);
scond_signal(video_buffer->open_cond);
scond_signal(video_buffer->finished_cond);
video_buffer->head = 0;
video_buffer->tail = 0;
for (int i = 0; i < video_buffer->capacity; i++)
video_buffer->status[i] = KB_OPEN;
slock_unlock(video_buffer->lock);
}
void video_buffer_get_open_slot(video_buffer_t *video_buffer, video_decoder_context_t **context)
{
slock_lock(video_buffer->lock);
if (video_buffer->status[video_buffer->head] == KB_OPEN)
{
*context = &video_buffer->buffer[video_buffer->head];
video_buffer->status[video_buffer->head] = KB_IN_PROGRESS;
video_buffer->head++;
video_buffer->head %= video_buffer->capacity;
}
slock_unlock(video_buffer->lock);
}
void video_buffer_return_open_slot(video_buffer_t *video_buffer, video_decoder_context_t *context)
{
slock_lock(video_buffer->lock);
if (video_buffer->status[context->index] == KB_IN_PROGRESS)
{
video_buffer->status[context->index] = KB_OPEN;
video_buffer->head--;
video_buffer->head %= video_buffer->capacity;
}
slock_unlock(video_buffer->lock);
}
void video_buffer_open_slot(video_buffer_t *video_buffer, video_decoder_context_t *context)
{
slock_lock(video_buffer->lock);
if (video_buffer->status[context->index] == KB_FINISHED)
{
video_buffer->status[context->index] = KB_OPEN;
video_buffer->tail++;
video_buffer->tail %= (video_buffer->capacity);
scond_signal(video_buffer->open_cond);
}
slock_unlock(video_buffer->lock);
}
void video_buffer_get_finished_slot(video_buffer_t *video_buffer, video_decoder_context_t **context)
{
slock_lock(video_buffer->lock);
if (video_buffer->status[video_buffer->tail] == KB_FINISHED)
*context = &video_buffer->buffer[video_buffer->tail];
slock_unlock(video_buffer->lock);
}
void video_buffer_finish_slot(video_buffer_t *video_buffer, video_decoder_context_t *context)
{
slock_lock(video_buffer->lock);
if (video_buffer->status[context->index] == KB_IN_PROGRESS)
{
video_buffer->status[context->index] = KB_FINISHED;
scond_signal(video_buffer->finished_cond);
}
slock_unlock(video_buffer->lock);
}
bool video_buffer_wait_for_open_slot(video_buffer_t *video_buffer)
{
slock_lock(video_buffer->lock);
while (video_buffer->status[video_buffer->head] != KB_OPEN)
scond_wait(video_buffer->open_cond, video_buffer->lock);
slock_unlock(video_buffer->lock);
return true;
}
bool video_buffer_wait_for_finished_slot(video_buffer_t *video_buffer)
{
slock_lock(video_buffer->lock);
while (video_buffer->status[video_buffer->tail] != KB_FINISHED)
scond_wait(video_buffer->finished_cond, video_buffer->lock);
slock_unlock(video_buffer->lock);
return true;
}
bool video_buffer_has_open_slot(video_buffer_t *video_buffer)
{
bool ret = false;
slock_lock(video_buffer->lock);
if (video_buffer->status[video_buffer->head] == KB_OPEN)
ret = true;
slock_unlock(video_buffer->lock);
return ret;
}
bool video_buffer_has_finished_slot(video_buffer_t *video_buffer)
{
bool ret = false;
slock_lock(video_buffer->lock);
if (video_buffer->status[video_buffer->tail] == KB_FINISHED)
ret = true;
slock_unlock(video_buffer->lock);
return ret;
}
+195
View File
@@ -0,0 +1,195 @@
#ifndef __LIBRETRO_SDK_VIDEOBUFFER_H__
#define __LIBRETRO_SDK_VIDEOBUFFER_H__
#include <retro_common_api.h>
#include <boolean.h>
#include <stdint.h>
#ifdef HAVE_SSA
#include <ass/ass.h>
#endif
#include <libavutil/frame.h>
#include <libswscale/swscale.h>
#include <retro_miscellaneous.h>
RETRO_BEGIN_DECLS
#ifndef PIX_FMT_RGB32
#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32
#endif
/**
* video_decoder_context
*
* Context object for the sws worker threads.
*
*/
struct video_decoder_context
{
int index;
int64_t pts;
struct SwsContext *sws;
AVFrame *source;
#if LIBAVUTIL_VERSION_MAJOR > 55
AVFrame *hw_source;
#endif
AVFrame *target;
#ifdef HAVE_SSA
ASS_Track *ass_track_active;
#endif
uint8_t *frame_buf;
};
typedef struct video_decoder_context video_decoder_context_t;
/**
* video_buffer
*
* The video buffer is a ring buffer, that can be used as a
* buffer for many workers while keeping the order.
*
* It is thread safe in a sensem that it is designed to work
* with one work coordinator, that allocates work slots for
* workers threads to work on and later collect the work
* product in the same order, as the slots were allocated.
*
*/
struct video_buffer;
typedef struct video_buffer video_buffer_t;
/**
* video_buffer_create:
* @capacity : Size of the buffer.
* @frame_size : Size of the target frame.
* @width : Width of the target frame.
* @height : Height of the target frame.
*
* Create a video buffer.
*
* Returns: A video buffer.
*/
video_buffer_t *video_buffer_create(size_t capacity, int frame_size, int width, int height);
/**
* video_buffer_destroy:
* @video_buffer : video buffer.
*
* Destroys a video buffer.
*
* Does also free the buffer allocated with video_buffer_create().
* User has to shut down any external worker threads that may have
* a reference to this video buffer.
*
**/
void video_buffer_destroy(video_buffer_t *video_buffer);
/**
* video_buffer_clear:
* @video_buffer : video buffer.
*
* Clears a video buffer.
*
**/
void video_buffer_clear(video_buffer_t *video_buffer);
/**
* video_buffer_get_open_slot:
* @video_buffer : video buffer.
* @context : sws context.
*
* Returns the next open context inside the ring buffer
* and it's index. The status of the slot will be marked as
* 'in progress' until slot is marked as finished with
* video_buffer_finish_slot();
*
**/
void video_buffer_get_open_slot(video_buffer_t *video_buffer, video_decoder_context_t **context);
/**
* video_buffer_return_open_slot:
* @video_buffer : video buffer.
* @context : sws context.
*
* Marks the given sws context that is "in progress" as "open" again.
*
**/
void video_buffer_return_open_slot(video_buffer_t *video_buffer, video_decoder_context_t *context);
/**
* video_buffer_open_slot:
* @video_buffer : video buffer.
* @context : sws context.
*
* Sets the status of the given context from "finished" to "open".
* The slot is then available for producers to claim again with video_buffer_get_open_slot().
**/
void video_buffer_open_slot(video_buffer_t *video_buffer, video_decoder_context_t *context);
/**
* video_buffer_get_finished_slot:
* @video_buffer : video buffer.
* @context : sws context.
*
* Returns a reference for the next context inside
* the ring buffer. User needs to use video_buffer_open_slot()
* to open the slot in the ringbuffer for the next
* work assignment. User is free to re-allocate or
* re-use the context.
*/
void video_buffer_get_finished_slot(video_buffer_t *video_buffer, video_decoder_context_t **context);
/**
* video_buffer_finish_slot:
* @video_buffer : video buffer.
* @context : sws context.
*
* Sets the status of the given context from "in progress" to "finished".
* This is normally done by a producer. User can then retrieve the finished work
* context by calling video_buffer_get_finished_slot().
*/
void video_buffer_finish_slot(video_buffer_t *video_buffer, video_decoder_context_t *context);
/**
* video_buffer_wait_for_open_slot:
* @video_buffer : video buffer.
*
* Blocks until open slot is available.
*
* Returns true if the buffer has a open slot available.
*/
bool video_buffer_wait_for_open_slot(video_buffer_t *video_buffer);
/**
* video_buffer_wait_for_finished_slot:
* @video_buffer : video buffer.
*
* Blocks until finished slot is available.
*
* Returns true if the buffers next slot is finished and a
* context available.
*/
bool video_buffer_wait_for_finished_slot(video_buffer_t *video_buffer);
/**
* bool video_buffer_has_open_slot(video_buffer_t *video_buffer)
:
* @video_buffer : video buffer.
*
* Returns true if the buffer has a open slot available.
*/
bool video_buffer_has_open_slot(video_buffer_t *video_buffer);
/**
* video_buffer_has_finished_slot:
* @video_buffer : video buffer.
*
* Returns true if the buffers next slot is finished and a
* context available.
*/
bool video_buffer_has_finished_slot(video_buffer_t *video_buffer);
RETRO_END_DECLS
#endif
+1 -1
View File
@@ -386,7 +386,7 @@ void GONG_CORE_PREFIX(retro_init)(void)
else
GONG_CORE_PREFIX(log_cb) = NULL;
video_buf = (unsigned char*)calloc(1, WIDTH * HEIGHT * sizeof(unsigned char));
video_buf = (unsigned char*)calloc(1, WIDTH * HEIGHT * sizeof(unsigned));
game_buffer.width = WIDTH;
game_buffer.height = HEIGHT;
+1
View File
@@ -8,6 +8,7 @@ image_core.so: image_core.c
../../libretro-common/compat/compat_strcasestr.c \
../../libretro-common/compat/compat_strl.c \
../../libretro-common/file/file_path.c \
../../libretro-common/file/file_path_io.c \
../../libretro-common/file/retro_dirent.c \
../../libretro-common/lists/dir_list.c \
../../libretro-common/lists/string_list.c \
+22 -6
View File
@@ -464,6 +464,19 @@ static void do_memchunkhax1(void)
write_kaddr(0x1F000008, saved_vram_value);
}
Result get_luma_version(u32 *major, u32 *minor) {
s64 out;
u32 version;
if (R_FAILED(svcGetSystemInfo(&out, 0x10000, 0)))
return -1;
version = (u32)out;
*major = GET_VERSION_MAJOR(version);
*minor = GET_VERSION_MINOR(version);
return 0;
}
Result svchax_init(bool patch_srv)
{
bool isNew3DS;
@@ -475,12 +488,15 @@ Result svchax_init(bool patch_srv)
{
if (__service_ptr)
{
if (kver > SYSTEM_VERSION(2, 50, 11))
return -1;
else if (kver > SYSTEM_VERSION(2, 46, 0))
do_memchunkhax2();
else
do_memchunkhax1();
u32 luma_major, luma_minor;
if (kver > SYSTEM_VERSION(2, 50, 11) &&
(R_FAILED(get_luma_version(&luma_major, &luma_minor) || luma_major < 8)))
return -1;
else if (kver > SYSTEM_VERSION(2, 46, 0) && kver <= SYSTEM_VERSION(2, 50, 11))
do_memchunkhax2();
else if (kver <= SYSTEM_VERSION(2, 46, 0))
do_memchunkhax1();
}
svc_7b((backdoor_fn)k_enable_all_svcs, isNew3DS);
+8 -10
View File
@@ -38,8 +38,7 @@ int database_info_build_query_enum(char *s, size_t len,
bool add_quotes = true;
bool add_glob = false;
string_add_bracket_open(s, len);
string_add_single_quote(s, len);
strlcpy(s, "{'", len);
switch (type)
{
@@ -51,7 +50,7 @@ int database_info_build_query_enum(char *s, size_t len,
break;
case DATABASE_QUERY_ENTRY_DEVELOPER:
strlcat(s, "developer", len);
add_glob = true;
add_glob = true;
add_quotes = false;
break;
case DATABASE_QUERY_ENTRY_ORIGIN:
@@ -110,19 +109,18 @@ int database_info_build_query_enum(char *s, size_t len,
break;
}
string_add_single_quote(s, len);
string_add_colon(s, len);
strlcat(s, "':", len);
if (add_glob)
string_add_glob_open(s, len);
strlcat(s, "glob('*", len);
if (add_quotes)
string_add_quote(s, len);
strlcat(s, "\"", len);
strlcat(s, path, len);
if (add_glob)
string_add_glob_close(s, len);
strlcat(s, "*')", len);
if (add_quotes)
string_add_quote(s, len);
strlcat(s, "\"", len);
string_add_bracket_close(s, len);
strlcat(s, "}", len);
#if 0
RARCH_LOG("query: %s\n", s);
+21 -4
View File
@@ -21,6 +21,7 @@
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <mutex>
#include "../../verbosity.h"
@@ -31,18 +32,33 @@ struct SlangProcess
{
public:
SlangProcess();
TBuiltInResource& GetResources() { return Resources; }
~SlangProcess() { FinalizeProcess(); }
private:
TBuiltInResource Resources;
};
// We don't use glslang from multiple threads, but to be sure.
// Initializing TLS and freeing it for glslang works around a really bizarre issue
// where the TLS key is suddenly corrupted *somehow*.
static std::mutex glslang_global_lock;
struct SlangProcessHolder
{
SlangProcessHolder()
{
glslang_global_lock.lock();
InitializeProcess();
}
~SlangProcessHolder()
{
FinalizeProcess();
glslang_global_lock.unlock();
}
};
SlangProcess::SlangProcess()
{
InitializeProcess();
char DefaultConfig[] =
"MaxLights 32\n"
"MaxClipPlanes 6\n"
@@ -337,6 +353,7 @@ SlangProcess::SlangProcess()
bool glslang::compile_spirv(const string &source, Stage stage, std::vector<uint32_t> *spirv)
{
static SlangProcess process;
SlangProcessHolder process_holder;
TProgram program;
EShLanguage language;
@@ -158,6 +158,7 @@ bool DetachProcess()
OS_FreeTLSIndex(ThreadInitializeIndex);
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
DeinitializePoolIndex();
return success;
}
@@ -38,6 +38,7 @@
namespace glslang {
bool InitializePoolIndex();
bool DeinitializePoolIndex();
} // end namespace glslang
@@ -65,6 +65,15 @@ bool InitializePoolIndex()
return true;
}
bool DeinitializePoolIndex()
{
if (PoolIndex == OS_INVALID_TLS_INDEX)
return false;
OS_FreeTLSIndex(PoolIndex);
PoolIndex = OS_INVALID_TLS_INDEX;
return true;
}
//
// Implement the functionality of the TPoolAllocator class, which
// is documented in PoolAlloc.h.
@@ -1312,6 +1312,7 @@ int __fastcall ShFinalize()
glslang::HlslScanContext::deleteKeywordMap();
#endif
DetachProcess();
return 1;
}
+2 -1
View File
@@ -8,10 +8,11 @@ extern SceGxmVertexProgram *_vita2d_colorVertexProgram;
extern SceGxmFragmentProgram *_vita2d_colorFragmentProgram;
extern SceGxmVertexProgram *_vita2d_textureVertexProgram;
extern SceGxmFragmentProgram *_vita2d_textureFragmentProgram;
extern SceGxmVertexProgram *_vita2d_textureTintVertexProgram;
extern SceGxmFragmentProgram *_vita2d_textureTintFragmentProgram;
extern const SceGxmProgramParameter *_vita2d_colorWvpParam;
extern const SceGxmProgramParameter *_vita2d_textureWvpParam;
extern const SceGxmProgramParameter *_vita2d_textureTintColorParam;
extern const SceGxmProgramParameter *_vita2d_textureTintWvpParam;
#endif
+15 -1
View File
@@ -31,6 +31,18 @@ typedef struct vita2d_texture_vertex {
float v;
} vita2d_texture_vertex;
typedef struct vita2d_texture_tint_vertex {
float x;
float y;
float z;
float u;
float v;
float r;
float g;
float b;
float a;
} vita2d_texture_tint_vertex;
typedef struct vita2d_texture {
SceGxmTexture gxm_tex;
SceUID data_UID;
@@ -77,6 +89,7 @@ int vita2d_get_clipping_enabled();
void vita2d_set_clip_rectangle(int x_min, int y_min, int x_max, int y_max);
void vita2d_get_clip_rectangle(int *x_min, int *y_min, int *x_max, int *y_max);
void vita2d_set_blend_mode_add(int enable);
void vita2d_set_viewport(int x, int y, int width, int height);
void *vita2d_pool_malloc(unsigned int size);
void *vita2d_pool_memalign(unsigned int size, unsigned int alignment);
@@ -120,13 +133,14 @@ void vita2d_draw_texture_part_scale_rotate(const vita2d_texture *texture, float
void vita2d_draw_texture_tint(const vita2d_texture *texture, float x, float y, unsigned int color);
void vita2d_draw_texture_tint_rotate(const vita2d_texture *texture, float x, float y, float rad, unsigned int color);
void vita2d_draw_texture_tint_rotate_hotspot(const vita2d_texture *texture, float x, float y, float rad, float center_x, float center_y, unsigned int color);
void vita2d_draw_texture_tint_scale(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, unsigned int color);
void vita2d_draw_texture_tint_scale(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, const float *color);
void vita2d_draw_texture_tint_part(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, unsigned int color);
void vita2d_draw_texture_tint_part_scale(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale, unsigned int color);
void vita2d_draw_texture_tint_scale_rotate_hotspot(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, float rad, float center_x, float center_y, unsigned int color);
void vita2d_draw_texture_tint_scale_rotate(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, float rad, unsigned int color);
void vita2d_draw_texture_part_tint_scale_rotate(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale, float rad, unsigned int color);
void vita2d_draw_array_textured(const vita2d_texture *texture, SceGxmPrimitiveType mode, const vita2d_texture_vertex *vertices, size_t count, unsigned int color);
void vita2d_draw_array_textured_mat(const vita2d_texture *texture, const vita2d_texture_tint_vertex *vertices, size_t count, float *mat);
/** ADVANCED **/
void vita2d_texture_set_wvp(float x, float y, float width, float height);
+20 -22
View File
@@ -1,24 +1,22 @@
/* Generated by bin2c, do not edit manually */
/* Contents of file texture_tint_f.gxp */
const long int texture_tint_f_gxp_size = 288;
// Imported from file 'shader_f.gxp'
const unsigned char texture_tint_f_gxp[288] = {
0x47, 0x58, 0x50, 0x00, 0x01, 0x04, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00, 0xEA, 0xFC, 0xA0, 0xCB,
0x79, 0x0C, 0xE6, 0xA5, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00,
0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x40, 0x09, 0x00, 0xF8,
0x02, 0x80, 0x99, 0xAF, 0xBC, 0x0D, 0xC0, 0x40, 0x3C, 0x00, 0x04, 0xCF, 0x84, 0x47, 0xA4, 0x08,
0x00, 0xBC, 0x19, 0x20, 0x7E, 0x0D, 0x81, 0x40, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x20, 0x00, 0x00, 0x00, 0x01, 0xE4, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1B, 0x00, 0x00, 0x00, 0x02, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x75, 0x54, 0x69, 0x6E, 0x74, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x74, 0x65, 0x78, 0x00, 0x00
0x47,0x58,0x50,0x00,0x01,0x05,0x10,0x03,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x05,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x00,0x00,
0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x74,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0xc0,0x3c,0x03,0x00,
0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x01,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
0x00,0xa9,0xd0,0x0e,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x44,0xfa,0x00,0x00,0x00,0x00,
0x40,0x09,0x00,0xf8,0x02,0x80,0x99,0xaf,0xbc,0x0d,0xc0,0x40,0x06,0x82,0xb9,0xaf,
0xbc,0x0d,0x80,0x40,0x7c,0x0f,0x04,0x00,0x86,0x47,0xa4,0x10,0x30,0x00,0x00,0x00,
0x02,0x04,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x00
};
const unsigned int texture_tint_f_gxp_size = 288;
+28
View File
@@ -0,0 +1,28 @@
// Imported from file 'shader_v.gxp'
const unsigned char texture_tint_v_gxp[384] = {
0x47,0x58,0x50,0x00,0x01,0x05,0x10,0x03,0x7f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x0c,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0b,0x00,0x00,0x00,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,0xc0,0x3c,0x03,0x00,
0x00,0x00,0x00,0x00,0xa4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa4,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x0f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x0a,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x44,0xfa,0x01,0x0e,0x01,0x01,0x02,0x00,0x10,0xfa,
0x80,0x00,0x08,0x83,0x21,0x25,0x80,0x38,0x01,0x01,0x01,0x01,0x00,0x00,0x14,0xfa,
0x02,0x80,0x81,0xaf,0x9c,0x0d,0xc0,0x40,0x0e,0x86,0xb9,0xff,0xbc,0x0d,0xc0,0x40,
0x04,0x11,0x49,0xcf,0x80,0x8f,0xb1,0x18,0x02,0x11,0x45,0xcf,0x80,0x8f,0xb1,0x18,
0x00,0x11,0x01,0xc0,0x81,0x81,0xb1,0x18,0x01,0xd1,0x42,0xc0,0x81,0x81,0xb1,0x18,
0x00,0x00,0x20,0xa0,0x00,0x50,0x27,0xfb,0x0e,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3a,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x34,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x2b,0x00,0x00,0x00,0x01,0xe4,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x61,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x61,0x54,0x65,0x78,0x63,0x6f,
0x6f,0x72,0x64,0x00,0x61,0x43,0x6f,0x6c,0x6f,0x72,0x00,0x77,0x76,0x70,0x00,0x00
};
const unsigned int texture_tint_v_gxp_size = 384;
+78 -5
View File
@@ -39,6 +39,7 @@ extern const SceGxmProgram color_v_gxp;
extern const SceGxmProgram color_f_gxp;
extern const SceGxmProgram texture_v_gxp;
extern const SceGxmProgram texture_f_gxp;
extern const SceGxmProgram texture_tint_v_gxp;
extern const SceGxmProgram texture_tint_f_gxp;
/* Static variables */
@@ -51,6 +52,7 @@ static const SceGxmProgram *const colorVertexProgramGxp = &color_v_gxp;
static const SceGxmProgram *const colorFragmentProgramGxp = &color_f_gxp;
static const SceGxmProgram *const textureVertexProgramGxp = &texture_v_gxp;
static const SceGxmProgram *const textureFragmentProgramGxp = &texture_f_gxp;
static const SceGxmProgram *const textureTintVertexProgramGxp = &texture_tint_v_gxp;
static const SceGxmProgram *const textureTintFragmentProgramGxp = &texture_tint_f_gxp;
static int vita2d_initialized = 0;
@@ -95,6 +97,7 @@ static SceGxmShaderPatcherId colorVertexProgramId;
static SceGxmShaderPatcherId colorFragmentProgramId;
static SceGxmShaderPatcherId textureVertexProgramId;
static SceGxmShaderPatcherId textureFragmentProgramId;
static SceGxmShaderPatcherId textureTintVertexProgramId;
static SceGxmShaderPatcherId textureTintFragmentProgramId;
static SceUID patcherBufferUid;
@@ -113,11 +116,12 @@ SceGxmVertexProgram *_vita2d_colorVertexProgram = NULL;
SceGxmFragmentProgram *_vita2d_colorFragmentProgram = NULL;
SceGxmVertexProgram *_vita2d_textureVertexProgram = NULL;
SceGxmFragmentProgram *_vita2d_textureFragmentProgram = NULL;
SceGxmVertexProgram *_vita2d_textureTintVertexProgram = NULL;
SceGxmFragmentProgram *_vita2d_textureTintFragmentProgram = NULL;
const SceGxmProgramParameter *_vita2d_clearClearColorParam = NULL;
const SceGxmProgramParameter *_vita2d_colorWvpParam = NULL;
const SceGxmProgramParameter *_vita2d_textureWvpParam = NULL;
const SceGxmProgramParameter *_vita2d_textureTintColorParam = NULL;
const SceGxmProgramParameter *_vita2d_textureTintWvpParam = NULL;
typedef struct vita2d_fragment_programs {
SceGxmFragmentProgram *color;
@@ -208,7 +212,7 @@ static void _vita2d_make_fragment_programs(vita2d_fragment_programs *out,
SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4,
msaa,
blend_info,
textureVertexProgramGxp,
textureTintVertexProgramGxp,
&out->textureTint);
VITA2D_DEBUG("texture_tint sceGxmShaderPatcherCreateFragmentProgram(): 0x%08X\n", err);
@@ -442,6 +446,8 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
VITA2D_DEBUG("texture_v sceGxmProgramCheck(): 0x%08X\n", err);
err = sceGxmProgramCheck(textureFragmentProgramGxp);
VITA2D_DEBUG("texture_f sceGxmProgramCheck(): 0x%08X\n", err);
err = sceGxmProgramCheck(textureTintVertexProgramGxp);
VITA2D_DEBUG("texture_v sceGxmProgramCheck(): 0x%08X\n", err);
err = sceGxmProgramCheck(textureTintFragmentProgramGxp);
VITA2D_DEBUG("texture_tint_f sceGxmProgramCheck(): 0x%08X\n", err);
@@ -464,6 +470,9 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
err = sceGxmShaderPatcherRegisterProgram(shaderPatcher, textureFragmentProgramGxp, &textureFragmentProgramId);
VITA2D_DEBUG("texture_f sceGxmShaderPatcherRegisterProgram(): 0x%08X\n", err);
err = sceGxmShaderPatcherRegisterProgram(shaderPatcher, textureTintVertexProgramGxp, &textureTintVertexProgramId);
VITA2D_DEBUG("texture_v sceGxmShaderPatcherRegisterProgram(): 0x%08X\n", err);
err = sceGxmShaderPatcherRegisterProgram(shaderPatcher, textureTintFragmentProgramGxp, &textureTintFragmentProgramId);
VITA2D_DEBUG("texture_tint_f sceGxmShaderPatcherRegisterProgram(): 0x%08X\n", err);
@@ -630,6 +639,52 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
VITA2D_DEBUG("texture sceGxmShaderPatcherCreateVertexProgram(): 0x%08X\n", err);
const SceGxmProgramParameter *paramTextureTintPositionAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aPosition");
VITA2D_DEBUG("aPosition sceGxmProgramFindParameterByName(): %p\n", paramTextureTintPositionAttribute);
const SceGxmProgramParameter *paramTextureTintTexcoordAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aTexcoord");
VITA2D_DEBUG("aTexcoord sceGxmProgramFindParameterByName(): %p\n", paramTextureTintTexcoordAttribute);
const SceGxmProgramParameter *paramTextureTintColorAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aColor");
VITA2D_DEBUG("aColor sceGxmProgramFindParameterByName(): %p\n", paramTextureTintColorAttribute);
// create texture vertex format
SceGxmVertexAttribute textureTintVertexAttributes[3];
SceGxmVertexStream textureTintVertexStreams[1];
/* x,y,z: 3 float 32 bits */
textureTintVertexAttributes[0].streamIndex = 0;
textureTintVertexAttributes[0].offset = 0;
textureTintVertexAttributes[0].format = SCE_GXM_ATTRIBUTE_FORMAT_F32;
textureTintVertexAttributes[0].componentCount = 3; // (x, y, z)
textureTintVertexAttributes[0].regIndex = sceGxmProgramParameterGetResourceIndex(paramTextureTintPositionAttribute);
/* u,v: 2 floats 32 bits */
textureTintVertexAttributes[1].streamIndex = 0;
textureTintVertexAttributes[1].offset = 12; // (x, y, z) * 4 = 12 bytes
textureTintVertexAttributes[1].format = SCE_GXM_ATTRIBUTE_FORMAT_F32;
textureTintVertexAttributes[1].componentCount = 2; // (u, v)
textureTintVertexAttributes[1].regIndex = sceGxmProgramParameterGetResourceIndex(paramTextureTintTexcoordAttribute);
/* r,g,b,a: 4 floats 32 bits */
textureTintVertexAttributes[2].streamIndex = 0;
textureTintVertexAttributes[2].offset = 20; // (u, v) * 4 = 8 bytes
textureTintVertexAttributes[2].format = SCE_GXM_ATTRIBUTE_FORMAT_F32;
textureTintVertexAttributes[2].componentCount = 4; // (r, g, b, a)
textureTintVertexAttributes[2].regIndex = sceGxmProgramParameterGetResourceIndex(paramTextureTintColorAttribute);
// 16 bit (short) indices
textureTintVertexStreams[0].stride = sizeof(vita2d_texture_tint_vertex);
textureTintVertexStreams[0].indexSource = SCE_GXM_INDEX_SOURCE_INDEX_16BIT;
// create texture shaders
err = sceGxmShaderPatcherCreateVertexProgram(
shaderPatcher,
textureTintVertexProgramId,
textureTintVertexAttributes,
3,
textureTintVertexStreams,
1,
&_vita2d_textureTintVertexProgram);
VITA2D_DEBUG("texture sceGxmShaderPatcherCreateVertexProgram(): 0x%08X\n", err);
// Create variations of the fragment program based on blending mode
_vita2d_make_fragment_programs(&_vita2d_fragmentPrograms.blend_mode_normal, &blend_info, msaa);
_vita2d_make_fragment_programs(&_vita2d_fragmentPrograms.blend_mode_add, &blend_info_add, msaa);
@@ -647,8 +702,8 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
_vita2d_textureWvpParam = sceGxmProgramFindParameterByName(textureVertexProgramGxp, "wvp");
VITA2D_DEBUG("texture wvp sceGxmProgramFindParameterByName(): %p\n", _vita2d_textureWvpParam);
_vita2d_textureTintColorParam = sceGxmProgramFindParameterByName(textureTintFragmentProgramGxp, "uTintColor");
VITA2D_DEBUG("texture wvp sceGxmProgramFindParameterByName(): %p\n", _vita2d_textureWvpParam);
_vita2d_textureTintWvpParam = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "wvp");
VITA2D_DEBUG("texture tint wvp sceGxmProgramFindParameterByName(): %p\n", _vita2d_textureTintWvpParam);
// Allocate memory for the memory pool
pool_size = temp_pool_size;
@@ -743,7 +798,8 @@ int vita2d_fini()
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, colorVertexProgramId);
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureFragmentProgramId);
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureTintFragmentProgramId);
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureVertexProgramId);
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureTintVertexProgramId);
sceGxmShaderPatcherUnregisterProgram(shaderPatcher, textureVertexProgramId);
sceGxmShaderPatcherDestroy(shaderPatcher);
fragment_usse_free(patcherFragmentUsseUid);
@@ -877,12 +933,16 @@ int vita2d_get_clipping_enabled()
void vita2d_set_clip_rectangle(int x_min, int y_min, int x_max, int y_max)
{
vita2d_set_viewport(0,0,DISPLAY_WIDTH,DISPLAY_HEIGHT);
clipping_enabled = 1;
clip_rect_x_min = x_min;
clip_rect_y_min = y_min;
clip_rect_x_max = x_max;
clip_rect_y_max = y_max;
// we can only draw during a scene, but we can cache the values since they're not going to have any visible effect till the scene starts anyways
if(drawing) {
sceGxmSetFrontDepthWriteEnable(_vita2d_context,
SCE_GXM_DEPTH_WRITE_DISABLED);
// clear the stencil buffer to 0
sceGxmSetFrontStencilFunc(
_vita2d_context,
@@ -903,6 +963,8 @@ void vita2d_set_clip_rectangle(int x_min, int y_min, int x_max, int y_max)
0xFF,
0xFF);
vita2d_draw_rectangle(x_min, y_min, x_max - x_min, y_max - y_min, 0);
sceGxmSetFrontDepthWriteEnable(_vita2d_context,
SCE_GXM_DEPTH_WRITE_ENABLED);
if(clipping_enabled) {
// set the stencil function to only accept pixels where the stencil is 1
sceGxmSetFrontStencilFunc(
@@ -1035,4 +1097,15 @@ void vita2d_set_blend_mode_add(int enable)
_vita2d_colorFragmentProgram = in->color;
_vita2d_textureFragmentProgram = in->texture;
_vita2d_textureTintFragmentProgram = in->textureTint;
}
void vita2d_set_viewport(int x, int y, int width, int height){
static float vh = DISPLAY_HEIGHT;
float sw = width / 2.;
float sh = height / 2.;
float x_scale = sw;
float x_port = x + sw;
float y_scale = -(sh);
float y_port = vh - y - sh;
sceGxmSetViewport(_vita2d_context, x_port, x_scale, y_port, y_scale, -0.5f, 0.5f);
}
+127 -27
View File
@@ -271,7 +271,7 @@ static inline void set_texture_program()
static inline void set_texture_tint_program()
{
sceGxmSetVertexProgram(_vita2d_context, _vita2d_textureVertexProgram);
sceGxmSetVertexProgram(_vita2d_context, _vita2d_textureTintVertexProgram);
sceGxmSetFragmentProgram(_vita2d_context, _vita2d_textureTintFragmentProgram);
}
@@ -282,21 +282,11 @@ static inline void set_texture_wvp_uniform()
sceGxmSetUniformDataF(vertex_wvp_buffer, _vita2d_textureWvpParam, 0, 16, _vita2d_ortho_matrix);
}
static inline void set_texture_tint_color_uniform(unsigned int color)
static inline void set_texture_tint_wvp_uniform()
{
void *texture_tint_color_buffer;
sceGxmReserveFragmentDefaultUniformBuffer(_vita2d_context, &texture_tint_color_buffer);
float *tint_color = vita2d_pool_memalign(
4 * sizeof(float), // RGBA
sizeof(float));
tint_color[0] = ((color >> 8*0) & 0xFF)/255.0f;
tint_color[1] = ((color >> 8*1) & 0xFF)/255.0f;
tint_color[2] = ((color >> 8*2) & 0xFF)/255.0f;
tint_color[3] = ((color >> 8*3) & 0xFF)/255.0f;
sceGxmSetUniformDataF(texture_tint_color_buffer, _vita2d_textureTintColorParam, 0, 4, tint_color);
void *vertex_wvp_buffer;
sceGxmReserveVertexDefaultUniformBuffer(_vita2d_context, &vertex_wvp_buffer);
sceGxmSetUniformDataF(vertex_wvp_buffer, _vita2d_textureTintWvpParam, 0, 16, _vita2d_ortho_matrix);
}
static inline void draw_texture_generic(const vita2d_texture *texture, float x, float y)
@@ -350,7 +340,6 @@ void vita2d_draw_texture_tint(const vita2d_texture *texture, float x, float y, u
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_generic(texture, x, y);
}
@@ -430,7 +419,6 @@ void vita2d_draw_texture_tint_rotate_hotspot(const vita2d_texture *texture, floa
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_rotate_hotspot_generic(texture, x, y, rad, center_x, center_y);
}
@@ -474,6 +462,54 @@ static inline void draw_texture_scale_generic(const vita2d_texture *texture, flo
sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), 4);
}
static inline void draw_texture_tint_scale_generic(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, const float *color)
{
vita2d_texture_tint_vertex *vertices = (vita2d_texture_tint_vertex *)vita2d_pool_memalign(
4 * sizeof(vita2d_texture_tint_vertex), // 4 vertices
sizeof(vita2d_texture_tint_vertex));
const float w = x_scale * vita2d_texture_get_width(texture);
const float h = y_scale * vita2d_texture_get_height(texture);
vertices[0].x = x;
vertices[0].y = y;
vertices[0].z = +0.5f;
vertices[0].u = 0.0f;
vertices[0].v = 0.0f;
vertices[1].x = x + w;
vertices[1].y = y;
vertices[1].z = +0.5f;
vertices[1].u = 1.0f;
vertices[1].v = 0.0f;
vertices[2].x = x;
vertices[2].y = y + h;
vertices[2].z = +0.5f;
vertices[2].u = 0.0f;
vertices[2].v = 1.0f;
vertices[3].x = x + w;
vertices[3].y = y + h;
vertices[3].z = +0.5f;
vertices[3].u = 1.0f;
vertices[3].v = 1.0f;
for(int n = 0; n < 4; n++){
int k = (n + 2) % 4 ;
vertices[n].r = color[4*k+0];
vertices[n].g = color[4*k+1];
vertices[n].b = color[4*k+2];
vertices[n].a = color[4*k+3];
}
// Set the texture to the TEXUNIT0
sceGxmSetFragmentTexture(_vita2d_context, 0, &texture->gxm_tex);
sceGxmSetVertexStream(_vita2d_context, 0, vertices);
sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), 4);
}
void vita2d_draw_texture_scale(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale)
{
set_texture_program();
@@ -481,12 +517,11 @@ void vita2d_draw_texture_scale(const vita2d_texture *texture, float x, float y,
draw_texture_scale_generic(texture, x, y, x_scale, y_scale);
}
void vita2d_draw_texture_tint_scale(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, unsigned int color)
void vita2d_draw_texture_tint_scale(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, const float *color)
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_scale_generic(texture, x, y, x_scale, y_scale);
set_texture_tint_wvp_uniform();
draw_texture_tint_scale_generic(texture, x, y, x_scale, y_scale, color);
}
@@ -546,7 +581,6 @@ void vita2d_draw_texture_tint_part(const vita2d_texture *texture, float x, float
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_part_generic(texture, x, y, tex_x, tex_y, tex_w, tex_h);
}
@@ -598,6 +632,61 @@ static inline void draw_texture_part_scale_generic(const vita2d_texture *texture
sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), 4);
}
static inline void draw_texture_tint_part_scale_generic(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale, unsigned int color)
{
vita2d_texture_tint_vertex *vertices = (vita2d_texture_tint_vertex *)vita2d_pool_memalign(
4 * sizeof(vita2d_texture_tint_vertex), // 4 vertices
sizeof(vita2d_texture_tint_vertex));
const float w = vita2d_texture_get_width(texture);
const float h = vita2d_texture_get_height(texture);
const float u0 = tex_x/w;
const float v0 = tex_y/h;
const float u1 = (tex_x+tex_w)/w;
const float v1 = (tex_y+tex_h)/h;
tex_w *= x_scale;
tex_h *= y_scale;
vertices[0].x = x;
vertices[0].y = y;
vertices[0].z = +0.5f;
vertices[0].u = u0;
vertices[0].v = v0;
vertices[1].x = x + tex_w;
vertices[1].y = y;
vertices[1].z = +0.5f;
vertices[1].u = u1;
vertices[1].v = v0;
vertices[2].x = x;
vertices[2].y = y + tex_h;
vertices[2].z = +0.5f;
vertices[2].u = u0;
vertices[2].v = v1;
vertices[3].x = x + tex_w;
vertices[3].y = y + tex_h;
vertices[3].z = +0.5f;
vertices[3].u = u1;
vertices[3].v = v1;
for(int n = 0; n < 4; n++){
vertices[n].r = ((color >> 8*0) & 0xFF)/255.0f;
vertices[n].g = ((color >> 8*1) & 0xFF)/255.0f;
vertices[n].b = ((color >> 8*2) & 0xFF)/255.0f;
vertices[n].a = ((color >> 8*3) & 0xFF)/255.0f;
}
// Set the texture to the TEXUNIT0
sceGxmSetFragmentTexture(_vita2d_context, 0, &texture->gxm_tex);
sceGxmSetVertexStream(_vita2d_context, 0, vertices);
sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), 4);
}
void vita2d_draw_texture_part_scale(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale)
{
set_texture_program();
@@ -609,8 +698,7 @@ void vita2d_draw_texture_tint_part_scale(const vita2d_texture *texture, float x,
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_part_scale_generic(texture, x, y, tex_x, tex_y, tex_w, tex_h, x_scale, y_scale);
draw_texture_tint_part_scale_generic(texture, x, y, tex_x, tex_y, tex_w, tex_h, x_scale, y_scale, color);
}
static inline void draw_texture_scale_rotate_hotspot_generic(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, float rad, float center_x, float center_y)
@@ -684,7 +772,6 @@ void vita2d_draw_texture_tint_scale_rotate_hotspot(const vita2d_texture *texture
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_scale_rotate_hotspot_generic(texture, x, y, x_scale, y_scale,
rad, center_x, center_y);
}
@@ -769,7 +856,6 @@ void vita2d_draw_texture_part_tint_scale_rotate(const vita2d_texture *texture, f
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
draw_texture_part_scale_rotate_generic(texture, x, y,
tex_x, tex_y, tex_w, tex_h, x_scale, y_scale, rad);
}
@@ -778,7 +864,6 @@ void vita2d_draw_array_textured(const vita2d_texture *texture, SceGxmPrimitiveTy
{
set_texture_tint_program();
set_texture_wvp_uniform();
set_texture_tint_color_uniform(color);
sceGxmSetBackPolygonMode(_vita2d_context, SCE_GXM_POLYGON_MODE_TRIANGLE_FILL);
@@ -788,3 +873,18 @@ void vita2d_draw_array_textured(const vita2d_texture *texture, SceGxmPrimitiveTy
sceGxmSetVertexStream(_vita2d_context, 0, vertices);
sceGxmDraw(_vita2d_context, mode, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), count);
}
void vita2d_draw_array_textured_mat(const vita2d_texture *texture, const vita2d_texture_tint_vertex *vertices, size_t count, float *mat)
{
set_texture_tint_program();
void *vertex_wvp_buffer;
sceGxmReserveVertexDefaultUniformBuffer(_vita2d_context, &vertex_wvp_buffer);
sceGxmSetUniformDataF(vertex_wvp_buffer, _vita2d_textureWvpParam, 0, 16, mat);
// Set the texture to the TEXUNIT0
sceGxmSetFragmentTexture(_vita2d_context, 0, &texture->gxm_tex);
sceGxmSetVertexStream(_vita2d_context, 0, vertices);
sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), count);
}
+17
View File
@@ -0,0 +1,17 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
+26
View File
@@ -0,0 +1,26 @@
*.o
*.a
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
# =========================
# Operating System Files
# =========================
+29
View File
@@ -0,0 +1,29 @@
TARGET := libmathneon
SOURCES := source
LIBS = -lc -lm -lSceGxm_stub -lSceDisplay_stub
CFILES := $(foreach dir,$(SOURCES), $(wildcard $(dir)/*.c))
CGFILES := $(foreach dir,$(SHADERS), $(wildcard $(dir)/*.cg))
HEADERS := $(CGFILES:.cg=.h)
OBJS := $(CFILES:.c=.o)
PREFIX = arm-vita-eabi
CC = $(PREFIX)-gcc
AR = $(PREFIX)-gcc-ar
CFLAGS = -g -Wl,-q -O2 -ffast-math -mtune=cortex-a9 -mfpu=neon -flto -ftree-vectorize
ASFLAGS = $(CFLAGS)
all: $(TARGET).a
$(TARGET).a: $(OBJS)
$(AR) -rc $@ $^
clean:
@rm -rf $(TARGET).a $(TARGET).elf $(OBJS)
install: $(TARGET).a
@mkdir -p $(VITASDK)/$(PREFIX)/lib/
cp $(TARGET).a $(VITASDK)/$(PREFIX)/lib/
@mkdir -p $(VITASDK)/$(PREFIX)/include/
cp source/math_neon.h $(VITASDK)/$(PREFIX)/include/
+169
View File
@@ -0,0 +1,169 @@
Library: MATH-NEON
By: Lachlan Tychsen-Smith
Licence: MIT (expat)
=======================================================================================
This project implements the cmath functions and some optimised matrix functions
with the aim of increasing the floating point performance of ARM Cortex A-8
based platforms. As well as implementing the functions in ARM NEON assembly,
they sacrifice error checking and some accuracy to achieve better performance.
Function Errors:
=======================================================================================
The measurement and characterisations of the inaccuracies present within these
functions is really a field within itself. For the benchmark i provide the
maximum absolute, maximum relative and root mean squared error compared to the
cmath implementations over the specified range. However these values can be
misleading, especially for functions which quickly go to infinity. So its always a
good idea to test it within your actual program. In general, this library will not
be as accurate as cmath, however for many functions it is close enough to be
negilible.
Notes:
=======================================================================================
- The *_c functions are c implementations of the *_neon code.
- Like cmath, The errors present in the functions are very dependent on the
range which your operating in. So you should test them first.
- Look in the "math_neon.h" file for discriptions of the functions. In some
function files there are also notes on the specific implementation.
- The *_neon functions make certain assumptions about the location of arguments
that is incompatible with inlining.
Contact:
=======================================================================================
Name: Lachlan Tychsen-Smith
Email: [email protected]
PSVITA performances test results:
RUNFAST: Enabled
------------------------------------------------------------------------------------------------------
MATRIX FUNCTION TESTS
------------------------------------------------------------------------------------------------------
matmul2_c =
|-7.16, 9.42|
|17.86, -10.70|
matmul2_neon =
|-7.16, 9.42|
|17.86, -10.70|
matmul2: c=183985 neon=87480 rate=2.10
matvec2_c = |-7.16, 17.86|
matvec2_neon = |-7.16, 17.86|
matvec2: c=98178 neon=66040 rate=1.49
matmul3_c =
|11.14, -0.78, -3.98|
|16.56, 17.96, 23.58|
|8.73, -0.18, 1.57|
matmul3_neon =
|11.14, -0.78, -3.98|
|16.56, 17.96, 23.58|
|8.73, -0.18, 1.57|
matmul3: c=551838 neon=340292 rate=1.62
matvec3_c = |11.14, 16.56, 8.73|
matvec3_neon = |11.14, 16.56, 8.73|
matvec3: c=98178 neon=66040 rate=1.49
matmul4_c =
|17.91, -23.96, 1.86, 16.53|
|4.10, -18.16, 4.17, 29.06|
|6.92, -1.60, 3.12, 27.81|
|-15.13, -7.46, -17.91, 22.49|
matmul4_neon =
|17.91, -23.96, 1.86, 16.53|
|4.10, -18.16, 4.17, 29.06|
|6.92, -1.60, 3.12, 27.81|
|-15.13, -7.46, -17.91, 22.49|
matmul4: c=1316131 neon=315444 rate=4.17
matvec4_c = |17.91, 4.10, 6.92, -15.126419|
matvec4_neon = |17.91, 4.10, 6.92, -15.126419|
matvec4: c=98178 neon=66040 rate=1.49
dot2_c = 5.804099
dot2_neon = 5.804099
dot2: c=291526 neon=307025 rate=0.95
normalize2_c = [0.97, 0.24]
normalize2_neon = [0.97, 0.24]
normalize2: c=1058588 neon=965696 rate=1.10
dot3_c = -0.817487
dot3_neon = -0.817487
dot3: c=322094 neon=444834 rate=0.72
normalize3_c = [0.50, 0.12, -0.86]
normalize3_neon = [0.50, 0.12, -0.86]
normalize3: c=1257201 neon=1134375 rate=1.11
cross3_c = [-13.16, -17.29, -10.19]
cross3_neon = [-13.16, -17.29, -10.19]
cross3: c=705298 neon=766477 rate=0.92
dot4_c = -7.880241
dot4_neon = -7.880241
dot4: c=414431 neon=506460 rate=0.82
normalize4_c = [0.45, 0.11, -0.77, -0.44]
normalize4_neon = [0.45, 0.11, -0.77, -0.44]
normalize4: c=1410727 neon=1102802 rate=1.28
------------------------------------------------------------------------------------------------------
CMATH FUNCTION TESTS
------------------------------------------------------------------------------------------------------
Function Range Number ABS Max Error REL Max Error RMS Error Time Rate
------------------------------------------------------------------------------------------------------
sinf [-3.14, 3.14] 500000 0.00e+00 0.00e+00% 0.00e+00 647042739 x1.00
sinf_c [-3.14, 3.14] 500000 7.75e-07 1.00e+02% 4.09e-07 646276691 x1.00
sinf_neon [-3.14, 3.14] 500000 1.00e+00 1.00e+02% 7.07e-01 645546381 x1.00
cosf [-3.14, 3.14] 500000 0.00e+00 0.00e+00% 0.00e+00 644742077 x1.00
cosf_c [-3.14, 3.14] 500000 7.75e-07 6.74e-01% 4.15e-07 643957358 x1.00
cosf_neon [-3.14, 3.14] 500000 1.00e+00 1.00e+02% 7.06e-01 643211256 x1.00
tanf [-0.79, 0.79] 500000 0.00e+00 0.00e+00% 0.00e+00 642444112 x1.00
tanf_c [-0.79, 0.79] 500000 2.98e-06 7.94e-04% 1.31e-06 641628507 x1.00
tanf_neon [-0.79, 0.79] 500000 1.00e+00 1.00e+02% nan 640740514 x1.00
asinf [-1.00, 1.00] 500000 0.00e+00 0.00e+00% 0.00e+00 639560380 x1.00
asinf_c [-1.00, 1.00] 500000 5.54e-05 1.06e-02% nan 638453383 x1.00
asinf_neon [-1.00, 1.00] 500000 1.57e+00 1.00e+02% 6.84e-01 637349653 x1.00
acosf [-1.00, 1.00] 500000 0.00e+00 0.00e+00% 0.00e+00 636078992 x1.00
acosf_c [-1.00, 1.00] 500000 5.56e-05 6.46e-03% nan 634934201 x1.00
acosf_neon [-1.00, 1.00] 500000 1.57e+00 1.02e+05% 6.84e-01 633793585 x1.00
atanf [-1.00, 1.00] 500000 0.00e+00 0.00e+00% 0.00e+00 632835241 x1.00
atanf_c [-1.00, 1.00] 500000 1.67e-04 2.12e-02% 7.40e-05 632142823 x1.00
atanf_neon [-1.00, 1.00] 500000 7.85e-01 0.00e+00% nan 631387330 x1.00
sinhf [-3.14, 3.14] 500000 0.00e+00 0.00e+00% 0.00e+00 630142014 x1.00
sinhf_c [-3.14, 3.14] 500000 1.91e-06 1.52e-01% 1.85e-07 628992714 x1.00
sinhf_neon [-3.14, 3.14] 500000 1.15e+01 1.00e+02% 4.55e+00 627998454 x1.00
coshf [-3.14, 3.14] 500000 0.00e+00 0.00e+00% 0.00e+00 626869866 x1.00
coshf_c [-3.14, 3.14] 500000 9.54e-07 2.38e-05% 1.64e-07 625829657 x1.00
coshf_neon [-3.14, 3.14] 500000 1.06e+01 9.14e+01% 3.92e+00 624873969 x1.00
tanhf [-3.14, 3.14] 500000 0.00e+00 0.00e+00% 0.00e+00 623689093 x1.00
tanhf_c [-3.14, 3.14] 500000 1.20e-05 2.48e-01% 5.48e-06 622547097 x1.00
tanhf_neon [-3.14, 3.14] 500000 9.96e-01 1.00e+02% 8.26e-01 621506812 x1.00
expf [0.00, 10.00] 500000 0.00e+00 0.00e+00% 0.00e+00 620497304 x1.00
expf_c [0.00, 10.00] 500000 9.77e-03 6.15e-05% 1.64e-03 619569554 x1.00
expf_neon [0.00, 10.00] 500000 2.20e+04 1.00e+02% 4.92e+03 618761400 x1.00
logf [1.00, 1000.00] 500000 0.00e+00 0.00e+00% 0.00e+00 617882765 x1.00
logf_c [1.00, 1000.00] 500000 6.20e-06 1.62e-02% 9.83e-07 617087810 x1.00
logf_neon [1.00, 1000.00] 500000 9.49e+01 inf% 9.39e+01 616388420 x1.00
log10f [1.00, 1000.00] 500000 0.00e+00 0.00e+00% 0.00e+00 615405364 x1.00
log10f_c [1.00, 1000.00] 500000 2.86e-06 6.68e-03% 4.79e-07 614442585 x1.00
log10f_neon [1.00, 1000.00] 500000 4.12e+01 inf% 4.07e+01 613671782 x1.00
floorf [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 611113689 x1.00
floorf_c [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 608159325 x1.00
floorf_neon [1.00, 1000.00] 5000000 2.00e+00 2.00e+02% 1.42e-02 604769008 x1.01
ceilf [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 601342443 x1.00
ceilf_c [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 598387998 x1.00
ceilf_neon [1.00, 1000.00] 5000000 2.00e+00 1.00e+02% 1.02e+00 594959710 x1.01
fabsf [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 592068236 x1.00
fabsf_c [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 589808748 x1.00
fabsf_neon [1.00, 1000.00] 5000000 0.00e+00 0.00e+00% 0.00e+00 587712180 x1.01
sqrtf [1.00, 1000.00] 500000 0.00e+00 0.00e+00% 0.00e+00 586496654 x1.00
sqrtf_c [1.00, 1000.00] 500000 2.33e-04 1.06e-03% 8.69e-05 585470866 x1.00
sqrtf_neon [1.00, 1000.00] 500000 0.00e+00 0.00e+00% nan 584594551 x1.00
invsqrtf [1.00, 1000.00] 500000 0.00e+00 0.00e+00% 0.00e+00 583492213 x1.00
invsqrtf_c [1.00, 1000.00] 500000 4.35e-06 4.78e-04% 2.00e-07 582448164 x1.00
invsqrtf_neon [1.00, 1000.00] 500000 0.00e+00 0.00e+00% nan 581642365 x1.00
atan2f [0.10, 10.00] 10000 0.00e+00 0.00e+00% 0.00e+00 83594269 x1.00
atan2f_c [0.10, 10.00] 10000 1.73e-04 2.23e-02% 0.00e+00 85383651 x0.98
atan2f_neon [0.10, 10.00] 10000 0.00e+00 0.00e+00% 0.00e+00 87387055 x0.96
powf [1.00, 10.00] 10000 0.00e+00 0.00e+00% 0.00e+00 93430489 x1.00
powf_c [1.00, 10.00] 10000 1.08e+05 4.37e-03% 0.00e+00 96726976 x0.97
powf_neon [1.00, 10.00] 10000 9.97e+09 1.00e+02% 0.00e+00 100185753 x0.93
fmodf [1.00, 10.00] 10000 0.00e+00 0.00e+00% 0.00e+00 101653673 x1.00
fmodf_c [1.00, 10.00] 10000 9.90e+00 8.06e-02% 0.00e+00 103177551 x0.99
fmodf_neon [1.00, 10.00] 10000 9.99e+00 1.00e+02% 0.00e+00 104771240 x0.97
+67
View File
@@ -0,0 +1,67 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math.h"
#include "math_neon.h"
/*
Test func : acosf(x)
Test Range: -1.0 < x < 1.0
Peak Error: ~0.005%
RMS Error: ~0.001%
*/
const float __acosf_pi_2 = M_PI_2;
float acosf_c(float x)
{
return __acosf_pi_2 - asinf_c(x);
}
float acosf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asinf_neon_hfp(x);
asm volatile (
"vdup.f32 d1, %0 \n\t" //d1 = {pi/2, pi/2};
"vsub.f32 d0, d1, d0 \n\t" //d0 = d1 - d0;
::"r"(__acosf_pi_2):
);
#endif
}
float acosf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
acosf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return acosf_c(x);
#endif
}
+183
View File
@@ -0,0 +1,183 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math.h"
#include "math_neon.h"
/*
Test func : asinf(x)
Test Range: -1.0 < x < 1.0
Peak Error: ~0.005%
RMS Error: ~0.001%
*/
const float __asinf_lut[4] = {
0.105312459675071, //p7
0.169303418571894, //p3
0.051599985887214, //p5
0.999954835104825 //p1
};
const float __asinf_pi_2 = M_PI_2;
float asinf_c(float x)
{
float a, b, c, d, r, ax;
int m;
union {
float f;
int i;
} xx;
ax = fabs(x);
d = 0.5;
d = d - ax*0.5;
//fast invsqrt approx
xx.f = d;
xx.i = 0x5F3759DF - (xx.i >> 1); //VRSQRTE
c = d * xx.f;
b = (3.0f - c * xx.f) * 0.5; //VRSQRTS
xx.f = xx.f * b;
c = d * xx.f;
b = (3.0f - c * xx.f) * 0.5;
xx.f = xx.f * b;
//fast inverse approx
d = xx.f;
m = 0x3F800000 - (xx.i & 0x7F800000);
xx.i = xx.i + m;
xx.f = 1.41176471f - 0.47058824f * xx.f;
xx.i = xx.i + m;
b = 2.0 - xx.f * d;
xx.f = xx.f * b;
b = 2.0 - xx.f * d;
xx.f = xx.f * b;
//if |x|>0.5 -> x = sqrt((1-x)/2)
xx.f = xx.f - ax;
a = (ax > 0.5f);
d = __asinf_pi_2 * a;
c = 1.0f - 3.0f * a;
ax = ax + xx.f * a;
//polynomial evaluation
xx.f = ax * ax;
a = (__asinf_lut[0] * ax) * xx.f + (__asinf_lut[2] * ax);
b = (__asinf_lut[1] * ax) * xx.f + (__asinf_lut[3] * ax);
xx.f = xx.f * xx.f;
r = b + a * xx.f;
r = d + c * r;
a = r + r;
b = (x < 0.0f);
r = r - a * b;
return r;
}
float asinf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vdup.f32 d0, d0[0] \n\t" //d0 = {x, x};
"vdup.f32 d4, %1 \n\t" //d4 = {pi/2, pi/2};
"vmov.f32 d6, d0 \n\t" //d6 = d0;
"vabs.f32 d0, d0 \n\t" //d0 = fabs(d0) ;
"vmov.f32 d5, #0.5 \n\t" //d5 = 0.5;
"vmls.f32 d5, d0, d5 \n\t" //d5 = d5 - d0*d5;
//fast invsqrt approx
"vmov.f32 d1, d5 \n\t" //d1 = d5
"vrsqrte.f32 d5, d5 \n\t" //d5 = ~ 1.0 / sqrt(d5)
"vmul.f32 d2, d5, d1 \n\t" //d2 = d5 * d1
"vrsqrts.f32 d3, d2, d5 \n\t" //d3 = (3 - d5 * d2) / 2
"vmul.f32 d5, d5, d3 \n\t" //d5 = d5 * d3
"vmul.f32 d2, d5, d1 \n\t" //d2 = d5 * d1
"vrsqrts.f32 d3, d2, d5 \n\t" //d3 = (3 - d5 * d3) / 2
"vmul.f32 d5, d5, d3 \n\t" //d5 = d5 * d3
//fast reciporical approximation
"vrecpe.f32 d1, d5 \n\t" //d1 = ~ 1 / d5;
"vrecps.f32 d2, d1, d5 \n\t" //d2 = 2.0 - d1 * d5;
"vmul.f32 d1, d1, d2 \n\t" //d1 = d1 * d2;
"vrecps.f32 d2, d1, d5 \n\t" //d2 = 2.0 - d1 * d5;
"vmul.f32 d5, d1, d2 \n\t" //d5 = d1 * d2;
//if |x| > 0.5 -> ax = sqrt((1-ax)/2), r = pi/2
"vsub.f32 d5, d0, d5 \n\t" //d5 = d0 - d5;
"vmov.f32 d2, #0.5 \n\t" //d2 = 0.5;
"vcgt.f32 d3, d0, d2 \n\t" //d3 = (d0 > d2);
"vmov.f32 d1, #3.0 \n\t" //d5 = 3.0;
"vshr.u32 d3, #31 \n\t" //d3 = d3 >> 31;
"vmov.f32 d16, #1.0 \n\t" //d16 = 1.0;
"vcvt.f32.u32 d3, d3 \n\t" //d3 = (float) d3;
"vmls.f32 d0, d5, d3[0] \n\t" //d0 = d0 - d5 * d3[0];
"vmul.f32 d7, d4, d3[0] \n\t" //d7 = d5 * d4;
"vmls.f32 d16, d1, d3[0] \n\t" //d16 = d16 - d1 * d3;
//polynomial:
"vmul.f32 d2, d0, d0 \n\t" //d2 = d0*d0 = {ax^2, ax^2}
"vld1.32 {d4, d5}, [%0] \n\t" //d4 = {p7, p3}, d5 = {p5, p1}
"vmul.f32 d3, d2, d2 \n\t" //d3 = d2*d2 = {x^4, x^4}
"vmul.f32 q0, q2, d0[0] \n\t" //q0 = q2 * d0[0] = {p7x, p3x, p5x, p1x}
"vmla.f32 d1, d0, d2[0] \n\t" //d1 = d1 + d0*d2[0] = {p5x + p7x^3, p1x + p3x^3}
"vmla.f32 d1, d3, d1[0] \n\t" //d1 = d1 + d3*d1[0] = {..., p1x + p3x^3 + p5x^5 + p7x^7}
"vmla.f32 d7, d1, d16 \n\t" //d7 = d7 + d1*d16
"vadd.f32 d2, d7, d7 \n\t" //d2 = d7 + d7
"vclt.f32 d3, d6, #0 \n\t" //d3 = (d6 < 0)
"vshr.u32 d3, #31 \n\t" //d3 = d3 >> 31;
"vcvt.f32.u32 d3, d3 \n\t" //d3 = (float) d3
"vmls.f32 d7, d2, d3[0] \n\t" //d7 = d7 - d2 * d3[0];
"vmov.f32 s0, s15 \n\t" //s0 = s3
:: "r"(__asinf_lut), "r"(__asinf_pi_2)
: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"
);
#endif
}
float asinf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
asinf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return asinf_c(x);
#endif
}
+170
View File
@@ -0,0 +1,170 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math.h"
#include "math_neon.h"
const float __atan2f_lut[4] = {
-0.0443265554792128, //p7
-0.3258083974640975, //p3
+0.1555786518463281, //p5
+0.9997878412794807 //p1
};
const float __atan2f_pi_2 = M_PI_2;
float atan2f_c(float y, float x)
{
float a, b, c, r, xx;
int m;
union {
float f;
int i;
} xinv;
//fast inverse approximation (2x newton)
xx = fabs(x);
xinv.f = xx;
m = 0x3F800000 - (xinv.i & 0x7F800000);
xinv.i = xinv.i + m;
xinv.f = 1.41176471f - 0.47058824f * xinv.f;
xinv.i = xinv.i + m;
b = 2.0 - xinv.f * xx;
xinv.f = xinv.f * b;
b = 2.0 - xinv.f * xx;
xinv.f = xinv.f * b;
c = fabs(y * xinv.f);
//fast inverse approximation (2x newton)
xinv.f = c;
m = 0x3F800000 - (xinv.i & 0x7F800000);
xinv.i = xinv.i + m;
xinv.f = 1.41176471f - 0.47058824f * xinv.f;
xinv.i = xinv.i + m;
b = 2.0 - xinv.f * c;
xinv.f = xinv.f * b;
b = 2.0 - xinv.f * c;
xinv.f = xinv.f * b;
//if |x| > 1.0 -> ax = -1/ax, r = pi/2
xinv.f = xinv.f + c;
a = (c > 1.0f);
c = c - a * xinv.f;
r = a * __atan2f_pi_2;
//polynomial evaluation
xx = c * c;
a = (__atan2f_lut[0] * c) * xx + (__atan2f_lut[2] * c);
b = (__atan2f_lut[1] * c) * xx + (__atan2f_lut[3] * c);
xx = xx * xx;
r = r + a * xx;
r = r + b;
//determine quadrant and test for small x.
b = M_PI;
b = b - 2.0f * r;
r = r + (x < 0.0f) * b;
b = (fabs(x) < 0.000001f);
c = !b;
r = c * r;
r = r + __atan2f_pi_2 * b;
b = r + r;
r = r - (y < 0.0f) * b;
return r;
}
float atan2f_neon_hfp(float y, float x)
{
#ifdef __MATH_NEON
asm volatile (
"vdup.f32 d17, d0[1] \n\t" //d17 = {x, x};
"vdup.f32 d16, d0[0] \n\t" //d16 = {y, y};
//1.0 / x
"vrecpe.f32 d18, d17 \n\t" //d16 = ~ 1 / d1;
"vrecps.f32 d19, d18, d17 \n\t" //d17 = 2.0 - d16 * d1;
"vmul.f32 d18, d18, d19 \n\t" //d16 = d16 * d17;
"vrecps.f32 d19, d18, d17 \n\t" //d17 = 2.0 - d16 * d1;
"vmul.f32 d18, d18, d19 \n\t" //d16 = d16 * d17;
//y * (1.0 /x)
"vmul.f32 d0, d16, d18 \n\t" //d0 = d16 * d18;
"vdup.f32 d4, %1 \n\t" //d4 = {pi/2, pi/2};
"vmov.f32 d6, d0 \n\t" //d6 = d0;
"vabs.f32 d0, d0 \n\t" //d0 = fabs(d0) ;
//fast reciporical approximation
"vrecpe.f32 d1, d0 \n\t" //d1 = ~ 1 / d0;
"vrecps.f32 d2, d1, d0 \n\t" //d2 = 2.0 - d1 * d0;
"vmul.f32 d1, d1, d2 \n\t" //d1 = d1 * d2;
"vrecps.f32 d2, d1, d0 \n\t" //d2 = 2.0 - d1 * d0;
"vmul.f32 d1, d1, d2 \n\t" //d1 = d1 * d2;
//if |x| > 1.0 -> ax = 1/ax, r = pi/2
"vadd.f32 d1, d1, d0 \n\t" //d1 = d1 + d0;
"vmov.f32 d2, #1.0 \n\t" //d2 = 1.0;
"vcgt.f32 d3, d0, d2 \n\t" //d3 = (d0 > d2);
"vcvt.f32.u32 d3, d3 \n\t" //d3 = (float) d3;
"vmls.f32 d0, d1, d3 \n\t" //d0 = d0 - d1 * d3;
"vmul.f32 d7, d3, d4 \n\t" //d7 = d3 * d4;
//polynomial:
"vmul.f32 d2, d0, d0 \n\t" //d2 = d0*d0 = {ax^2, ax^2}
"vld1.32 {d4, d5}, [%0] \n\t" //d4 = {p7, p3}, d5 = {p5, p1}
"vmul.f32 d3, d2, d2 \n\t" //d3 = d2*d2 = {x^4, x^4}
"vmul.f32 q0, q2, d0[0] \n\t" //q0 = q2 * d0[0] = {p7x, p3x, p5x, p1x}
"vmla.f32 d1, d0, d2[0] \n\t" //d1 = d1 + d0*d2[0] = {p5x + p7x^3, p1x + p3x^3}
"vmla.f32 d1, d3, d1[0] \n\t" //d1 = d1 + d3*d1[0] = {..., p1x + p3x^3 + p5x^5 + p7x^7}
"vadd.f32 d1, d1, d7 \n\t" //d1 = d1 + d7
"vadd.f32 d2, d1, d1 \n\t" //d2 = d1 + d1
"vclt.f32 d3, d6, #0 \n\t" //d3 = (d6 < 0)
"vcvt.f32.u32 d3, d3 \n\t" //d3 = (float) d3
"vmls.f32 d1, d3, d2 \n\t" //d1 = d1 - d2 * d3;
"vmov.f32 s0, s3 \n\t" //s0 = s3
:: "r"(__atan2f_lut), "r"(__atan2f_pi_2)
: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"
);
#endif
}
float atan2f_neon_sfp(float x, float y)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
asm volatile ("vmov.f32 s1, r1 \n\t");
atan2f_neon_hfp(x, y);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return atan2f_c(y, x);
#endif
};
+149
View File
@@ -0,0 +1,149 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math.h"
#include "math_neon.h"
const float __atanf_lut[4] = {
-0.0443265554792128, //p7
-0.3258083974640975, //p3
+0.1555786518463281, //p5
+0.9997878412794807 //p1
};
const float __atanf_pi_2 = M_PI_2;
float atanf_c(float x)
{
float a, b, r, xx;
int m;
union {
float f;
int i;
} xinv, ax;
ax.f = fabs(x);
//fast inverse approximation (2x newton)
xinv.f = ax.f;
m = 0x3F800000 - (xinv.i & 0x7F800000);
xinv.i = xinv.i + m;
xinv.f = 1.41176471f - 0.47058824f * xinv.f;
xinv.i = xinv.i + m;
b = 2.0 - xinv.f * ax.f;
xinv.f = xinv.f * b;
b = 2.0 - xinv.f * ax.f;
xinv.f = xinv.f * b;
//if |x| > 1.0 -> ax = -1/ax, r = pi/2
xinv.f = xinv.f + ax.f;
a = (ax.f > 1.0f);
ax.f = ax.f - a * xinv.f;
r = a * __atanf_pi_2;
//polynomial evaluation
xx = ax.f * ax.f;
a = (__atanf_lut[0] * ax.f) * xx + (__atanf_lut[2] * ax.f);
b = (__atanf_lut[1] * ax.f) * xx + (__atanf_lut[3] * ax.f);
xx = xx * xx;
b = b + a * xx;
r = r + b;
//if x < 0 -> r = -r
a = 2 * r;
b = (x < 0.0f);
r = r - a * b;
return r;
}
float atanf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vdup.f32 d0, d0[0] \n\t" //d0 = {x, x};
"vdup.f32 d4, %1 \n\t" //d4 = {pi/2, pi/2};
"vmov.f32 d6, d0 \n\t" //d6 = d0;
"vabs.f32 d0, d0 \n\t" //d0 = fabs(d0) ;
//fast reciporical approximation
"vrecpe.f32 d1, d0 \n\t" //d1 = ~ 1 / d0;
"vrecps.f32 d2, d1, d0 \n\t" //d2 = 2.0 - d1 * d0;
"vmul.f32 d1, d1, d2 \n\t" //d1 = d1 * d2;
"vrecps.f32 d2, d1, d0 \n\t" //d2 = 2.0 - d1 * d0;
"vmul.f32 d1, d1, d2 \n\t" //d1 = d1 * d2;
//if |x| > 1.0 -> ax = -1/ax, r = pi/2
"vadd.f32 d1, d1, d0 \n\t" //d1 = d1 + d0;
"vmov.f32 d2, #1.0 \n\t" //d2 = 1.0;
"vcgt.f32 d3, d0, d2 \n\t" //d3 = (d0 > d2);
"vshr.u32 d3, #31 \n\t" //d3 = (d0 > d2);
"vcvt.f32.u32 d3, d3 \n\t" //d5 = (float) d3;
"vmls.f32 d0, d1, d3[0] \n\t" //d0 = d0 - d1 * d3[0];
"vmul.f32 d7, d4, d3[0] \n\t" //d7 = d5 * d4;
//polynomial:
"vmul.f32 d2, d0, d0 \n\t" //d2 = d0*d0 = {ax^2, ax^2}
"vld1.32 {d4, d5}, [%0] \n\t" //d4 = {p7, p3}, d5 = {p5, p1}
"vmul.f32 d3, d2, d2 \n\t" //d3 = d2*d2 = {x^4, x^4}
"vmul.f32 q0, q2, d0[0] \n\t" //q0 = q2 * d0[0] = {p7x, p3x, p5x, p1x}
"vmla.f32 d1, d0, d2[0] \n\t" //d1 = d1 + d0*d2[0] = {p5x + p7x^3, p1x + p3x^3}
"vmla.f32 d1, d3, d1[0] \n\t" //d1 = d1 + d3*d1[0] = {..., p1x + p3x^3 + p5x^5 + p7x^7}
"vadd.f32 d1, d1, d7 \n\t" //d1 = d1 + d7
"vadd.f32 d2, d1, d1 \n\t" //d2 = d1 + d1
"vclt.f32 d3, d6, #0 \n\t" //d3 = (d6 < 0)
"vshr.u32 d3, #31 \n\t" //d3 = (d0 > d2);
"vcvt.f32.u32 d3, d3 \n\t" //d3 = (float) d3
"vmls.f32 d1, d3, d2 \n\t" //d1 = d1 - d2 * d3;
"vmov.f32 s0, s3 \n\t" //s0 = s3
:: "r"(__atanf_lut), "r"(__atanf_pi_2)
: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"
);
#endif
}
float atanf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vdup.f32 d0, r0 \n\t");
atanf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return atanf_c(x);
#endif
};
+71
View File
@@ -0,0 +1,71 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
/*
Assumes the floating point value |x| < 2147483648
*/
#include "math.h"
#include "math_neon.h"
float ceilf_c(float x)
{
int n;
float r;
n = (int) x;
r = (float) n;
r = r + (x > r);
return r;
}
float ceilf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vcvt.s32.f32 d1, d0 \n\t" //d1 = (int) d0;
"vcvt.f32.s32 d1, d1 \n\t" //d1 = (float) d1;
"vcgt.f32 d0, d0, d1 \n\t" //d0 = (d0 > d1);
"vshr.u32 d0, #31 \n\t" //d0 = d0 >> 31;
"vcvt.f32.u32 d0, d0 \n\t" //d0 = (float) d0;
"vadd.f32 d0, d1, d0 \n\t" //d0 = d1 + d0;
::: "d0", "d1"
);
#endif
}
float ceilf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
ceilf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return ceilf_c(x);
#endif
};
+50
View File
@@ -0,0 +1,50 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math_neon.h"
float cosf_c(float x)
{
return sinf_c(x + M_PI_2);
}
float cosf_neon_hfp(float x)
{
#ifdef __MATH_NEON
float xx = x + M_PI_2;
return sinf_neon_hfp(xx);
#endif
}
float cosf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vdup.f32 d0, r0 \n\t");
cosf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return cosf_c(x);
#endif
};
+120
View File
@@ -0,0 +1,120 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math.h"
#include "math_neon.h"
const float __coshf_rng[2] = {
1.442695041f,
0.693147180f
};
const float __coshf_lut[16] = {
0.00019578093328483123, //p7
0.00019578093328483123, //p7
0.0014122663401803872, //p6
0.0014122663401803872, //p6
0.008336936973260111, //p5
0.008336936973260111, //p5
0.04165989275009526, //p4
0.04165989275009526, //p4
0.16666570253074878, //p3
0.16666570253074878, //p3
0.5000006143673624, //p2
0.5000006143673624, //p2
1.000000059694879, //p1
1.000000059694879, //p1
0.9999999916728642, //p0
0.9999999916728642 //p0
};
float coshf_c(float x)
{
float a, b, xx;
xx = -x;
a = expf_c(x);
b = expf_c(xx);
a = a * 0.5f;
a = a + 0.5f * b;
return a;
}
float coshf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vdup.f32 d0, d0[0] \n\t" //d0 = {x, x}
"fnegs s1, s1 \n\t" //s1 = -s1
//Range Reduction:
"vld1.32 d2, [%0] \n\t" //d2 = {invrange, range}
"vld1.32 {d16, d17}, [%1]! \n\t"
"vmul.f32 d6, d0, d2[0] \n\t" //d6 = d0 * d2[0]
"vcvt.s32.f32 d6, d6 \n\t" //d6 = (int) d6
"vld1.32 {d18}, [%1]! \n\t"
"vcvt.f32.s32 d1, d6 \n\t" //d1 = (float) d6
"vld1.32 {d19}, [%1]! \n\t"
"vmls.f32 d0, d1, d2[1] \n\t" //d0 = d0 - d1 * d2[1]
"vld1.32 {d20}, [%1]! \n\t"
//polynomial:
"vmla.f32 d17, d16, d0 \n\t" //d17 = d17 + d16 * d0;
"vld1.32 {d21}, [%1]! \n\t"
"vmla.f32 d18, d17, d0 \n\t" //d18 = d18 + d17 * d0;
"vld1.32 {d22}, [%1]! \n\t"
"vmla.f32 d19, d18, d0 \n\t" //d19 = d19 + d18 * d0;
"vld1.32 {d23}, [%1]! \n\t"
"vmla.f32 d20, d19, d0 \n\t" //d20 = d20 + d19 * d0;
"vmla.f32 d21, d20, d0 \n\t" //d21 = d21 + d20 * d0;
"vmla.f32 d22, d21, d0 \n\t" //d22 = d22 + d21 * d0;
"vmla.f32 d23, d22, d0 \n\t" //d23 = d23 + d22 * d0;
//multiply by 2 ^ m
"vshl.i32 d6, d6, #23 \n\t" //d6 = d6 << 23
"vadd.i32 d0, d23, d6 \n\t" //d0 = d22 + d6
"vdup.f32 d2, d0[1] \n\t" //d2 = s1
"vmov.f32 d1, #0.5 \n\t" //d1 = 0.5
"vadd.f32 d0, d0, d2 \n\t" //d0 = d0 + d2
"vmul.f32 d0, d1 \n\t" //d0 = d0 * d1
:: "r"(__coshf_rng), "r"(__coshf_lut)
: "d0", "d1", "q1", "q2", "d6"
);
#endif
}
float coshf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
coshf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return coshf_c(x);
#endif
};
+135
View File
@@ -0,0 +1,135 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
/*
Based on:
e ^ x = (1+m) * (2^n)
x = log(1+m) + n * log(2)
n = (int) (x * 1.0 / log(2))
(1+m) = e ^ (x - n * log(2))
(1+m) = Poly(x - n * log(2))
where Poly(x) is the Minimax approximation of e ^ x over the
range [-Log(2), Log(2)]
Test func : expf(x)
Test Range: 0 < x < 50
Peak Error: ~0.00024%
RMS Error: ~0.00007%
*/
#include "math.h"
#include "math_neon.h"
const float __expf_rng[2] = {
1.442695041f,
0.693147180f
};
const float __expf_lut[8] = {
0.9999999916728642, //p0
0.04165989275009526, //p4
0.5000006143673624, //p2
0.0014122663401803872, //p6
1.000000059694879, //p1
0.008336936973260111, //p5
0.16666570253074878, //p3
0.00019578093328483123 //p7
};
float expf_c(float x)
{
float a, b, c, d, xx;
int m;
union {
float f;
int i;
} r;
//Range Reduction:
m = (int) (x * __expf_rng[0]);
x = x - ((float) m) * __expf_rng[1];
//Taylor Polynomial (Estrins)
a = (__expf_lut[4] * x) + (__expf_lut[0]);
b = (__expf_lut[6] * x) + (__expf_lut[2]);
c = (__expf_lut[5] * x) + (__expf_lut[1]);
d = (__expf_lut[7] * x) + (__expf_lut[3]);
xx = x * x;
a = a + b * xx;
c = c + d * xx;
xx = xx* xx;
r.f = a + c * xx;
//multiply by 2 ^ m
m = m << 23;
r.i = r.i + m;
return r.f;
}
float expf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vdup.f32 d0, d0[0] \n\t" //d0 = {x, x}
//Range Reduction:
"vld1.32 d2, [%0] \n\t" //d2 = {invrange, range}
"vmul.f32 d6, d0, d2[0] \n\t" //d6 = d0 * d2[0]
"vcvt.s32.f32 d6, d6 \n\t" //d6 = (int) d6
"vcvt.f32.s32 d1, d6 \n\t" //d1 = (float) d6
"vmls.f32 d0, d1, d2[1] \n\t" //d0 = d0 - d1 * d2[1]
//polynomial:
"vmul.f32 d1, d0, d0 \n\t" //d1 = d0*d0 = {x^2, x^2}
"vld1.32 {d2, d3, d4, d5}, [%1] \n\t" //q1 = {p0, p4, p2, p6}, q2 = {p1, p5, p3, p7} ;
"vmla.f32 q1, q2, d0[0] \n\t" //q1 = q1 + q2 * d0[0]
"vmla.f32 d2, d3, d1[0] \n\t" //d2 = d2 + d3 * d1[0]
"vmul.f32 d1, d1, d1 \n\t" //d1 = d1 * d1 = {x^4, x^4}
"vmla.f32 d2, d1, d2[1] \n\t" //d2 = d2 + d1 * d2[1]
//multiply by 2 ^ m
"vshl.i32 d6, d6, #23 \n\t" //d6 = d6 << 23
"vadd.i32 d0, d2, d6 \n\t" //d0 = d2 + d6
:: "r"(__expf_rng), "r"(__expf_lut)
: "d0", "d1", "q1", "q2", "d6"
);
#endif
}
float expf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
expf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return expf_c(x);
#endif
};
+58
View File
@@ -0,0 +1,58 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "math_neon.h"
float fabsf_c(float x)
{
union {
int i;
float f;
} xx;
xx.f = x;
xx.i = xx.i & 0x7FFFFFFF;
return xx.f;
}
float fabsf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"fabss s0, s0 \n\t" //s0 = fabs(s0)
);
#endif
}
float fabsf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"bic r0, r0, #0x80000000 \n\t" //r0 = r0 & ~(1 << 31)
);
#else
return fabsf_c(x);
#endif
}
+66
View File
@@ -0,0 +1,66 @@
/*
The MIT License (MIT)
Copyright (c) 2015 Lachlan Tychsen-Smith (lachlan.ts@gmail.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
/*
Assumes the floating point value |x| < 2147483648
*/
#include "math.h"
#include "math_neon.h"
float floorf_c(float x)
{
int n;
float r;
n = (int) x;
r = (float) n;
r = r - (r > x);
return r;
}
float floorf_neon_hfp(float x)
{
#ifdef __MATH_NEON
asm volatile (
"vcvt.s32.f32 d1, d0 \n\t" //d1 = (int) d0;
"vcvt.f32.s32 d1, d1 \n\t" //d1 = (float) d1;
"vcgt.f32 d0, d1, d0 \n\t" //d0 = (d1 > d0);
"vshr.u32 d0, #31 \n\t" //d0 = d0 >> 31;
"vcvt.f32.u32 d0, d0 \n\t" //d0 = (float) d0;
"vsub.f32 d0, d1, d0 \n\t" //d0 = d1 - d0;
::: "d0", "d1"
);
#endif
}
float floorf_neon_sfp(float x)
{
#ifdef __MATH_NEON
asm volatile ("vmov.f32 s0, r0 \n\t");
floorf_neon_hfp(x);
asm volatile ("vmov.f32 r0, s0 \n\t");
#else
return floorf_c(x);
#endif
};
Loaded 100 of 724 files, more files were not shown because too many files have changed in this diff. Show more