Compare commits

...
1152 Commits
Author SHA1 Message Date
twinaphex b2ceb50897 Update to 1.7.3 2018-05-04 05:45:22 +02:00
Twinaphex 6c95cbb6b4 Merge pull request #6716 from cubtekki/cubtekki-patch-0
Updated readme file
2018-05-04 05:07:02 +02:00
cubtekki cbd8f83288 Update README.md
Corrected some spelling errors.
2018-05-03 20:02:22 -07:00
cubtekki bcb7a7a6c8 Update README.md
Corrected some spelling errors.
2018-05-03 19:55:30 -07:00
Brad Parker 19f6798947 Qt: make sure we are inited before calling into the driver 2018-05-03 21:47:21 -04:00
Twinaphex 756320755b Update CHANGES.md 2018-05-04 03:31:45 +02:00
Twinaphex ed9ce033d8 Update CHANGES.md 2018-05-04 03:30:43 +02:00
Twinaphex 5c59e7f523 Update CHANGES.md 2018-05-04 03:23:01 +02:00
Twinaphex ad7ccf6d7b Update CHANGES.md 2018-05-04 03:21:51 +02:00
Twinaphex 66dfae2234 Merge pull request #6713 from orbea/make
Makefile: Try to fix logic.
2018-05-04 01:16:35 +02:00
orbea 14bb035026 Makefile: Try to fix logic. 2018-05-03 15:50:11 -07:00
twinaphex 6c09195f5e (D3D8/D3D9) Updates 2018-05-03 22:08:14 +02:00
twinaphex 6d019284f8 Get rid of some of the casts 2018-05-03 22:06:04 +02:00
twinaphex 82ebb9576f Create d3d9_video_t and d3d8_video_t 2018-05-03 22:03:12 +02:00
twinaphex c4a03b6b45 (xdk360_fonts.cpp) Cleanups 2018-05-03 21:39:25 +02:00
twinaphex 9f80092bbb Updates 2018-05-03 21:29:58 +02:00
Twinaphex 4a1fc9b598 Merge pull request #6701 from orbea/cxx
qb: Fix checking the CXX compiler
2018-05-03 21:28:47 +02:00
orbea 8f861d438b qb: Fix checking the CXX compiler
This does the following.

1. Fixes checking if the CXX compiler works on platforms other than windows.
2. Turns the error when the CXX compiler is missing or doesn't work into a warning.
3. Adds HAVE_CC and HAVE_CXX.
4. Only adds CC and CXX to config.mk when HAVE_CC or HAVE_CXX are true.
5. Disables Qt companion, Vulkan, CXX_BUILD and NEED_CXX_LINKER if HAVE_CXX is false.
6. Explicitly errors when the CXX compiler is broken or missing and Qt or vulkan support is enabled.
7. No longer explicitly links with the CXX compiler on windows since this should no longer be needed.

This also adds the function `check_enabled` to `qb/qb.lib.sh` which
can be used to dynamically disable any libraries that require C++
support.
2018-05-03 12:24:32 -07:00
Twinaphex de1bf58997 Buildfix 2018-05-03 20:39:03 +02:00
twinaphex 3796e52018 (OSX) Go back to old code - connect handler was broken 2018-05-03 20:31:28 +02:00
Twinaphex 356cd47ce8 Silence some unused variable warnings 2018-05-03 19:35:27 +02:00
twinaphex dd8a2df253 Cleanup 2018-05-03 19:17:13 +02:00
Brad Parker 05404f9104 fix buffer overflow in url encoding (affecting msvc2010/2013) 2018-05-03 12:57:23 -04:00
Twinaphex 803373bb09 Merge pull request #6712 from Dwedit/msvc_qt_project
Add QT builds to MSVC2017 project
2018-05-03 17:47:10 +02:00
Dwedit 00c116051f Add QT builds to MSVC2017 project
Fix missing line in griffin_cpp.cpp, and normalize end of line to LF
2018-05-03 10:32:32 -05:00
Twinaphex 909ffd4de4 Update input_driver.c 2018-05-03 15:28:26 +02:00
twinaphex 7bc66ae710 Buildfixes for MSVC 2015 2018-05-03 15:20:06 +02:00
twinaphex 268baca939 (MSVC 2013) Add /bigobj for griffin_glslang.cpp 2018-05-03 14:52:37 +02:00
Twinaphex 171bf76100 Merge pull request #6711 from Tatsuya79/patch-4
QT restore preferences if they exist
2018-05-03 14:07:11 +02:00
Tatsuya79 49177bdd93 QT restore preferences if they exist 2018-05-03 13:42:25 +02:00
twinaphex 4fac2b339c Remove unused variable 2018-05-03 13:20:05 +02:00
twinaphex 28025802da Try to fix build failure 2018-05-03 13:11:38 +02:00
Twinaphex c9744c5ba4 Merge pull request #6704 from Dwedit/fix-win32-bug
Fix __stdcall calling convention for Win32 32-bit builds
2018-05-03 12:20:08 +02:00
Twinaphex 78d571239c Merge pull request #6710 from alphanu1/patch-2
Fix screen position for CRT user
2018-05-03 12:19:40 +02:00
Twinaphex 9feb9ec37c Merge pull request #6709 from alphanu1/patch-1
Fix incorrect menu sizing for CRT
2018-05-03 12:19:27 +02:00
Twinaphex d877bccde5 Merge pull request #6706 from fr500/fixes
fix #6700
2018-05-03 12:19:12 +02:00
alphanu1 7dab5b9ae3 Fix screen position for CRT user 2018-05-03 09:42:53 +01:00
alphanu1 c3beeb3ca9 Fix incorrect menu sizing for CRT 2018-05-03 09:36:37 +01:00
radius 7bdbd005a8 fix #6700 2018-05-02 23:32:40 -05:00
Dwedit 81457d74d3 Use WINAPI instead of __stdcall, not sure what keywords I can use or not, so I'll just use the macro instead of the keyword 2018-05-02 22:09:20 -05:00
Dwedit 0d2f9b9b11 Fix __stdcall calling convention for Win32 32-bit builds 2018-05-02 21:59:07 -05:00
twinaphex 896ac3c89f Add sublabel 2018-05-03 03:42:22 +02:00
twinaphex 27b399521f (MaterialUI) Fix icon label for Mixer Settings 2018-05-03 02:14:12 +02:00
twinaphex d45002779d Fix one label 2018-05-03 02:12:16 +02:00
twinaphex 4c212d460f Make Mixer Stream values translatable 2018-05-03 02:08:21 +02:00
twinaphex 1ab1d12398 Add sublabels to 'Add To Mixer' 2018-05-03 02:02:28 +02:00
twinaphex 965149d425 Add sublabels for mixer actions 2018-05-03 01:47:52 +02:00
twinaphex 7b1d61da3d (QuickMenu) Added Configuration Override submenu 2018-05-03 00:04:19 +02:00
twinaphex ea77fbbd38 Increase max streams from 8 to 16 2018-05-02 23:42:39 +02:00
twinaphex cdc60481cf Fix label 2018-05-02 21:56:45 +02:00
twinaphex ab360ae3ac (Audio mixer) Add Sequential playback mode 2018-05-02 21:43:16 +02:00
twinaphex b480cdbe26 Add 'Add To Mixer And Play' 2018-05-02 21:09:53 +02:00
twinaphex 0d36993ceb Remove name when sound is done 2018-05-02 21:02:45 +02:00
twinaphex 68a2f18bfb Cleanups 2018-05-02 20:52:06 +02:00
Twinaphex 44e935c64d Merge pull request #6702 from orbea/cxx_linker
Makefile.common: Fix vulkan builds on 32-bit linux.
2018-05-02 20:49:54 +02:00
twinaphex 5e32f7ab40 Add To Mixer and Add To Mixer And Play actions 2018-05-02 20:39:55 +02:00
twinaphex 90c1ce8fcc Add Add To Mixer And Play labels 2018-05-02 20:27:01 +02:00
twinaphex 51374fd2d1 Add better title for stream 2018-05-02 20:21:20 +02:00
twinaphex 9fbfd503af Add value descriptions for audio mixer streams 2018-05-02 20:13:13 +02:00
orbea 2fce9127d0 Makefile.common: Fix vulkan builds on 32-bit linux. 2018-05-02 10:44:45 -07:00
twinaphex eff75a3bcd Move nbio_buf_t to task_audio_mixer.c 2018-05-02 19:30:06 +02:00
Twinaphex 468b41f7bc Merge pull request #6695 from orbea/cxx
qb: Always print CC and CXX variables if set.
2018-05-02 16:57:26 +02:00
Twinaphex 3bdbe22e27 Merge pull request #6697 from altiereslima/master
Update Portuguese Brazilian translation
2018-05-02 14:53:43 +02:00
altiereslima 212e857656 Update Portuguese Brazilian translation 2018-05-02 09:38:24 -03:00
twinaphex eac899f573 Try to fix build for targets that don't have HAvE_OVERLAY defined 2018-05-02 13:52:27 +02:00
Brad Parker 4785893847 Qt: select the first visible item, which may not be row 0 2018-05-02 01:16:17 -04:00
Brad Parker 0ed2a5307d Qt: always free string list 2018-05-02 01:16:17 -04:00
orbea 237a705a82 qb: Always print CC and CXX variables if set. 2018-05-01 17:47:14 -07:00
Twinaphex 6588969bb4 Merge pull request #6690 from fr500/fixes
fix #6631
2018-05-02 02:36:37 +02:00
Twinaphex d68266d92e Merge pull request #6688 from altiereslima/master
Update Portuguese Brazilian translation
2018-05-02 01:46:43 +02:00
Brad Parker 99e4271f29 fix null dereference when there is no runahead save state list 2018-05-01 19:19:35 -04:00
radius 3304dad729 fix #6631 2018-05-01 18:09:04 -05:00
twinaphex 95278d39f7 Buildfix for MSVC 2003 2018-05-02 01:03:40 +02:00
Brad Parker 17524d5681 add loglevel tag back 2018-05-01 18:45:43 -04:00
altiereslima d5e62b731b update 2018-05-01 19:25:17 -03:00
altiereslima eba3a1b72d Update Portuguese Brazilian translation 2018-05-01 19:21:14 -03:00
Brad Parker eb549fdc17 Qt: can't get core info if there isn't any 2018-05-01 18:17:28 -04:00
Twinaphex b247962115 Merge pull request #6686 from bparker06/qt_defer_init
Qt: only init new UI the first time it is about to be shown
2018-05-01 23:49:09 +02:00
Brad Parker e3712182bd Qt: only init new UI the first time it is about to be shown 2018-05-01 17:47:12 -04:00
Twinaphex f0d25d2fd9 Merge pull request #6685 from alphanu1/master
Fix for exit error on Linux when CRT mode inactive
2018-05-01 23:01:20 +02:00
alphanu1 92e3e6c337 Merge pull request #61 from alphanu1/alphanu1-patch-59
Fix for Linux users exit error when CRT disabled
2018-05-01 21:43:23 +01:00
alphanu1 d1b834a301 Fix for Linux users exit error when CRT disabled 2018-05-01 21:42:29 +01:00
Twinaphex 511039330e Merge pull request #6684 from alphanu1/master
Fix for native low res in Linux
2018-05-01 22:13:13 +02:00
alphanu1 87a45160f0 Merge pull request #60 from alphanu1/alphanu1-patch-58
Removed static from function to share aspect changing
2018-05-01 21:08:26 +01:00
alphanu1 82a2fb955e Removed static from function to share aspect changing 2018-05-01 21:07:52 +01:00
alphanu1 53ee0a2cb3 Merge pull request #59 from alphanu1/alphanu1-patch-57
Fix for native low res in Linux
2018-05-01 20:56:48 +01:00
alphanu1 97630d7fb1 Fix for native low res in Linux 2018-05-01 20:56:30 +01:00
alphanu1 cf1d9274d2 Merge pull request #58 from alphanu1/alphanu1-patch-56
Fix for native low res in Linux
2018-05-01 20:56:03 +01:00
alphanu1 c9d89e234a Fix for native low res in Linux 2018-05-01 20:55:24 +01:00
Twinaphex cd8ae4d7d3 Merge pull request #6678 from altiereslima/master
Update Portuguese Brazilian translation
2018-05-01 21:46:07 +02:00
twinaphex 33c1d55801 GetDisplayConfigBufferSizes and QueryDisplayConfig now go
through function pointers for backwards compatibility
2018-05-01 21:44:10 +02:00
alphanu1 65a0427471 Merge pull request #55 from alphanu1/alphanu1-patch-53
res fix
2018-05-01 20:32:49 +01:00
alphanu1 8584e27a81 res fix 2018-05-01 20:32:34 +01:00
alphanu1 11374ddf12 Merge pull request #54 from alphanu1/alphanu1-patch-52
Linux resolution improvements for CRT
2018-05-01 20:28:22 +01:00
alphanu1 11b0fe2a97 Linux resolution improvements for CRT 2018-05-01 20:28:01 +01:00
alphanu1 ab6acd1115 Merge pull request #53 from libretro/master
update
2018-05-01 20:26:09 +01:00
Twinaphex 402b1432ee Merge pull request #6681 from orbea/indent
Silence -Wmisleading-indentation warning
2018-05-01 20:13:26 +02:00
orbea b2f508d72e qb: Improve moc detection (#6680) 2018-05-01 13:40:42 -04:00
alphanu1 533f762e52 Merge pull request #52 from libretro/master
update
2018-05-01 18:39:20 +01:00
orbea e33a12c18f Silence -Wmisleading-indentation warning
gfx/video_crt_switch.c: In function ‘crt_screen_setup_aspect’:
gfx/video_crt_switch.c:95:7: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
       if (width < 1920)
       ^~
gfx/video_crt_switch.c:97:10: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
          height = 480;
          ^~~~~~
2018-05-01 10:17:19 -07:00
Brad Parker 20cb92c185 qb: allow building without Qt 2018-05-01 16:24:19 +00:00
Brad Parker 6639d0ed89 qb: don't fail if moc is missing 2018-05-01 08:51:57 -07:00
altiereslima 974a04e692 Update Portuguese Brazilian translation 2018-05-01 12:30:49 -03:00
Twinaphex eb498f56a6 Merge pull request #6674 from Brunnis/fix-incorrect-dialog-label
Fix incorrect labels on dialogs due to incorrect macro
2018-05-01 13:31:23 +02:00
Twinaphex 12d72e26cc Merge pull request #6673 from alphanu1/master
Tweaks to modeline genorator
2018-05-01 13:24:40 +02:00
alphanu1 dcb7dd12c8 Merge pull request #51 from alphanu1/alphanu1-patch-51
Better startup resolution for CRT
2018-05-01 12:14:53 +01:00
alphanu1 4b8fbf8682 Better startup resolution for CRT 2018-05-01 12:14:25 +01:00
alphanu1 2279870235 Merge pull request #50 from alphanu1/master-4
modeline tweaks, better porches
2018-05-01 12:10:58 +01:00
alphanu1 cc1024ddd0 modeline tweaks, better porches 2018-05-01 12:10:32 +01:00
alphanu1 50751e3f43 Merge pull request #49 from libretro/master
update
2018-05-01 12:08:27 +01:00
Mikael Brunnhede b2187d4b10 Fix incorrect labels on dialogs due to incorrect macro. 2018-05-01 12:17:36 +02:00
Brad Parker 791aaa00e1 qb: detect Qt automatically 2018-04-30 22:11:55 -07:00
Twinaphex 9ba9f9e8bd Merge pull request #6671 from altiereslima/master
Update Brazilian Portuguese translation
2018-05-01 04:55:49 +02:00
altiereslima 0058d734a2 Update Brazilian Portuguese translation
based in english file: msg_hash_us.h
2018-04-30 23:48:21 -03:00
twinaphex b650d484f4 (Qt) Change label to Clear 2018-05-01 04:35:02 +02:00
Brad Parker cc94cafa8f update Japanese translation 2018-04-30 22:06:32 -04:00
Brad Parker 4df26353dd Qt: add option (off by default) to suggest the currently loaded core first 2018-04-30 20:33:28 -04:00
Brad Parker f2f37a3309 Qt: refocus UI when unloading core/content 2018-04-30 19:52:21 -04:00
twinaphex bf084da088 (ui_companion_driver) cleanups 2018-05-01 01:29:17 +02:00
Brad Parker 71257adb8e Qt: add setting in User Interface to enable use of the desktop menu in general (disabling it may improve startup time if desktop menu is not being used) 2018-04-30 19:11:38 -04:00
Twinaphex fc28edd821 Merge pull request #6670 from Tatsuya79/patch-3
small text style change
2018-04-30 23:09:56 +02:00
Tatsuya79 dbdef08a90 small text style change 2018-04-30 23:02:18 +02:00
twinaphex b7ceedd891 Qt GUI won't work for C89 2018-04-30 21:03:47 +02:00
Twinaphex 62256b77c3 Merge pull request #6668 from bparker06/qt_wimp_squash
Qt WIMP GUI
2018-04-30 20:51:30 +02:00
Brad Parker a1aefc901c Qt WIMP GUI 2018-04-30 14:33:05 -04:00
Twinaphex 4e057edb1e Merge pull request #6666 from alphanu1/master
Fixed incorrect variable assignment.
2018-04-30 19:47:07 +02:00
alphanu1 93bdb5c4f4 Merge pull request #48 from alphanu1/alphanu1-patch-48
Fix incorrect variable
2018-04-30 18:41:40 +01:00
alphanu1 2226dec436 Fix incorrect variable 2018-04-30 18:41:20 +01:00
Twinaphex 97ccfdf020 Merge pull request #6665 from alphanu1/master
Windows hz bug fix
2018-04-30 19:27:49 +02:00
alphanu1 34ecc81484 Merge pull request #47 from alphanu1/alphanu1-patch-47
Moved variable back to the top
2018-04-30 17:54:20 +01:00
alphanu1 675da4692e Moved variable back to the top 2018-04-30 17:54:00 +01:00
alphanu1 3e17cbd2e1 Merge pull request #46 from alphanu1/alphanu1-patch-46
Variable rename
2018-04-30 17:51:51 +01:00
alphanu1 9400754a2b Variable rename 2018-04-30 17:51:28 +01:00
alphanu1 fdddbb713d Merge pull request #45 from alphanu1/alphanu1-patch-45
Variable rename
2018-04-30 17:50:36 +01:00
alphanu1 db751b4241 Variable rename 2018-04-30 17:50:13 +01:00
alphanu1 73b5aff2e1 Merge pull request #44 from alphanu1/alphanu1-patch-44
bug fix with hz switching
2018-04-30 17:15:38 +01:00
alphanu1 11b7f76526 bug fix with hz switching 2018-04-30 17:14:19 +01:00
Twinaphex 54f54fce28 Merge pull request #6664 from meleu/patch-21
don't allow slow motion if cheevos enabled
2018-04-30 18:13:28 +02:00
twinaphex 6ba2e72a3b Add title for mixer stream settings 2018-04-30 18:12:22 +02:00
twinaphex 1f2a543232 Change logging back to 0 2018-04-30 17:53:07 +02:00
twinaphex 5aeab54ab7 (Audio mixer) Ability to individually set volume per stream 2018-04-30 17:51:01 +02:00
alphanu1 9474b4be74 Merge pull request #43 from alphanu1/master-3
Linux / Windows hz bug fix and Linux low res modeline generator fix
2018-04-30 16:50:58 +01:00
alphanu1 f672c7dc5c Linux / Windows hz bug fix and Linux low res modeline generator fix
when merging Linux CRT refresh rate hz was dealt with in floats for Linux but ints for windows.
2018-04-30 16:49:22 +01:00
alphanu1 3edd7a6ac8 Merge pull request #42 from alphanu1/alphanu1-patch-41
Linux / windows hz bug fix
2018-04-30 16:41:04 +01:00
alphanu1 af3eb9e851 Linux / windows hz bug fix
when merging Linux CRT refresh rate hz was dealt with in floats for Linux but ints for windows.
2018-04-30 16:40:27 +01:00
alphanu1 e6dd809c8a Merge pull request #41 from libretro/master
RA update
2018-04-30 16:30:57 +01:00
meleu e57d0049f3 disable slow motion if cheevos enabled 2018-04-30 12:27:35 -03:00
twinaphex 01e85b321b Improve audio_driver_menu_sample 2018-04-30 15:44:12 +02:00
twinaphex 0cea2cf158 Remove two Coverity warnings 2018-04-30 15:32:28 +02:00
twinaphex 1c90866070 Refactor this a bit and document it 2018-04-30 15:24:40 +02:00
twinaphex 25a7cb0f66 (Menu) Rename hack_shader_pass to scratchpad.unsigned_var 2018-04-30 15:19:54 +02:00
twinaphex 49341bac26 Add Play/Play (Looped) actions 2018-04-30 15:04:29 +02:00
twinaphex eb4ee2d57c Merge branch 'master' of https://github.com/libretro/RetroArch 2018-04-30 14:34:48 +02:00
twinaphex 965859ddcb Start adding mixer controls - ability to stop and remove loaded tracks 2018-04-30 14:34:25 +02:00
Twinaphex 22e55e61de Merge pull request #6656 from gblues/master
WIIU: Disable screen-dimming while core is running
2018-04-30 02:25:05 +02:00
gblues 162d1fbfb5 WIIU: Disable screen-dimming while core is running
== DETAILS
In my extended testing, I found that the HID device inputs don't get factored
into resetting things like the burn-in protection and automatic power down.

The automatic power-down can't be changed in software, but the screen dimming
can!

This patch disables the screen dimming while the core is running, but turns
it back on while the menu is displayed. This way, users who want the screen
dimming functionality to kick in need to simply enter the RA menu.
2018-04-29 16:26:14 -07:00
Twinaphex 05ea2cff96 Update CHANGES.md 2018-04-29 18:49:51 +02:00
Twinaphex e19b6faa7e Update CHANGES.md 2018-04-29 18:49:23 +02:00
Twinaphex bf64c1cf23 Merge pull request #6655 from alphanu1/master
Linux switching for CRT
2018-04-29 18:41:54 +02:00
Twinaphex 2285d19b90 Merge pull request #6653 from RobLoach/wbfs
Add Wii Backup File WBFS scanning
2018-04-29 17:21:37 +02:00
Twinaphex 29b8c47577 Merge pull request #6654 from theheroGAC/patch-30
Update msg_hash_it.h with the translations of the new strings
2018-04-29 16:54:18 +02:00
alphanu1 896041f468 Add files via upload 2018-04-29 15:47:32 +01:00
alphanu1 db2eaf97e4 Merge pull request #40 from alphanu1/alphanu1-patch-40
Linux switching CRT
2018-04-29 15:44:29 +01:00
alphanu1 16ccbbc75a Linux switching CRT 2018-04-29 15:44:08 +01:00
alphanu1 ec3ab4031b Merge pull request #39 from alphanu1/alphanu1-patch-39
Code clean up and Linux switching
2018-04-29 15:39:52 +01:00
alphanu1 a0b46d9a38 Code clean up and Linux switching 2018-04-29 15:38:16 +01:00
theheroGAC 51d1baa646 Update msg_hash_it.h 2018-04-29 15:54:19 +02:00
Rob Loach 00092eb5ea feat: Add Wii Backup File WBFS scanning 2018-04-29 09:51:38 -04:00
alphanu1 ff928ddb7c Merge pull request #38 from alphanu1/alphanu1-patch-38
Linux switching incorporation
2018-04-29 13:51:44 +01:00
alphanu1 7d53e6a16f Linux switching incorporation 2018-04-29 13:51:18 +01:00
alphanu1 d17ce844d5 Merge pull request #37 from alphanu1/alphanu1-patch-37
Linux switching incorporation
2018-04-29 13:50:08 +01:00
alphanu1 0498ab6b86 Linux switching incorporation 2018-04-29 13:49:32 +01:00
alphanu1 8aa4d52367 Merge pull request #36 from alphanu1/alphanu1-patch-36
Linux switching incorporation
2018-04-29 13:48:56 +01:00
alphanu1 a930afce31 Linux switching incorporation 2018-04-29 13:48:08 +01:00
twinaphex 4380bc52bd (MSVC) Buildfixes 2018-04-29 14:47:57 +02:00
alphanu1 2d36a32bcd Merge pull request #35 from alphanu1/alphanu1-patch-35
Linux switching incorporation
2018-04-29 13:47:26 +01:00
alphanu1 1eedb0406b Linux switching incorporation 2018-04-29 13:46:43 +01:00
Twinaphex 6cd046a42a Merge pull request #6650 from alphanu1/master
Restore resolution fix
2018-04-29 13:49:14 +02:00
alphanu1 c73b4b26ba Merge pull request #34 from alphanu1/alphanu1-patch-34
Changes to stop unwanted resolution change for non CRT users
2018-04-29 01:42:50 +01:00
alphanu1 1f8540ca9d Changes to stop unwanted resolution change for non CRT users 2018-04-29 01:41:38 +01:00
twinaphex d36026575e Remove obsolete diff 2018-04-29 01:12:54 +02:00
twinaphex 91fcb49270 (Menu audio) Fix situation where a libretro core is running
in the background and menu audio is playing - we don't want
audio_driver_menu_sample called then
2018-04-29 01:05:04 +02:00
twinaphex b0ef193117 Add 'Enable menu audio' setting 2018-04-29 00:41:53 +02:00
twinaphex 773fc1ebad Create audio_driver_menu_sample 2018-04-29 00:06:54 +02:00
alphanu1 90d62fd0cc Restore resolution fix 2018-04-28 20:53:39 +01:00
alphanu1 b51c8d62e7 Restore resolution fix 2018-04-28 20:52:58 +01:00
alphanu1 6aa072b6cf Restore resolution fix 2018-04-28 20:52:24 +01:00
alphanu1 46afabee6a Merge pull request #33 from libretro/master
MME Update 172
2018-04-28 20:51:51 +01:00
twinaphex 686faa2407 Add experimental-audio.diff 2018-04-28 21:40:36 +02:00
twinaphex b6df41d808 (audio_driver.c) Cleanups 2018-04-28 20:06:07 +02:00
twinaphex 5a80a6046f (Android) Remove no longer needed machine/cpu-features.h 2018-04-28 19:29:30 +02:00
Twinaphex 80b480e855 Merge pull request #6648 from fr500/master
fix #6644
2018-04-28 19:07:54 +02:00
radius 7b82c8a9bc fix #6644 2018-04-28 11:56:21 -05:00
radius 5e1a698fa2 fix #6644 2018-04-28 11:42:48 -05:00
twinaphex f14735961a (libFLAC) turn into relative path header includes 2018-04-28 15:14:53 +02:00
twinaphex 238091f182 (OSX/Android) Add Dr. Flac/Dr. Mp3 support to Android/OSX 2018-04-28 14:33:48 +02:00
twinaphex e3ce768ad0 (dr_mp3.h) Fix C89_BUILD issues 2018-04-28 14:32:10 +02:00
twinaphex 3583e1e501 Update 2018-04-28 14:22:42 +02:00
twinaphex e7272ddefa (Audio mixer) Add MP3 support as well 2018-04-28 14:18:04 +02:00
twinaphex 64f31f1ddd Update libretro-common 2018-04-28 13:52:54 +02:00
Twinaphex 2439673dcf Merge pull request #6646 from RobLoach/gfx-context
Fix missing division in mali fbdev
2018-04-28 13:26:20 +02:00
twinaphex 381f14fa9a (dr_flac.h) Silence warnings 2018-04-28 13:13:22 +02:00
twinaphex 9a6e069d6f (dr_flac.h) Assume stdint.h presence 2018-04-28 12:44:52 +02:00
twinaphex 89d765d6c7 Define DR_FLAC_NO_STDIO 2018-04-28 12:44:25 +02:00
twinaphex 437c4fbc0a (dr_flac.h) C89_BUILD fixes 2018-04-28 12:37:50 +02:00
twinaphex 3f7c318e3f (Audio mixer) Add FLAC support to audio mixer 2018-04-28 11:17:37 +02:00
Rob Loach 71c031099b Fix missing division in mali fbdev 2018-04-27 22:44:53 -04:00
twinaphex faa99bd323 Start adding FLAC hooks 2018-04-27 23:45:06 +02:00
twinaphex 714f7b7b13 Cleanups 2018-04-27 23:21:44 +02:00
twinaphex 958602d328 HAVE_BUILTINFLAC no longer needs to be excluded for C89 2018-04-27 23:17:28 +02:00
twinaphex 1f2ef858ab Update libretro-common 2018-04-27 23:12:24 +02:00
Twinaphex b693d76ebb Merge pull request #6638 from bearoso/fixmali
Fix typo in mali fbdev driver.
2018-04-27 19:57:56 +02:00
Twinaphex 6ad624f5bd Merge pull request #6639 from bearoso/travis
Adjust travis build to only use libraries the build-server supports.
2018-04-27 19:57:45 +02:00
Brandon Wright c7f04102c7 Adjust travis build to only use libraries the build-server supports. 2018-04-27 12:48:58 -05:00
Brandon Wright 0e013ced75 Fix typo in mali fbdev driver. 2018-04-27 12:42:46 -05:00
Twinaphex e52bb69b35 Merge pull request #6637 from orbea/flac
Makefile.common: Fix segfaults with --disable-builtinflac.
2018-04-27 19:02:09 +02:00
orbea 76b4b426af Makefile.common: Fix segfaults with --disable-builtinflac. 2018-04-27 09:54:05 -07:00
twinaphex 80025692c1 (Android) Bump up version code 2018-04-26 21:25:38 +02:00
Twinaphex 97215d5c8a Merge pull request #6625 from gblues/master
Fix WaveBird support for the Wii U GCA
2018-04-26 20:46:23 +02:00
twinaphex f1d707a043 Running gl_check_capability from gl_get_flags resulted in a crash
on some Android systems, so unfortunately we cannot selectively hide
away GPU Hard Sync for now
2018-04-26 20:45:01 +02:00
twinaphex 37b1c9e8e9 Add NULL entry 2018-04-26 16:05:57 +02:00
Twinaphex a097d5f6ac Merge pull request #6630 from gingerbeardman/patch-1
changed APP_UNIQUE_ID to next free & valid HEX number
2018-04-26 14:55:32 +02:00
Matt Sephton c6d6bb26c3 changed APP_UNIQUE_ID to next free & valid HEX number
was 0xBAC1G
2018-04-26 13:54:23 +01:00
twinaphex c482aff8b2 No idea where this character came from 2018-04-26 13:38:45 +02:00
Twinaphex 68a93e67e9 Merge pull request #6624 from fr500/master
prevent crashing in cores that don't range check retro_set_controller…
2018-04-26 13:33:21 +02:00
gblues f378e2bfcf Fix WaveBird support for the Wii U GCA
== DETAILS
Thanks to JacobM at GBAtemp for helping me test this.

The WaveBird wasn't being properly picked up due to the port status byte
being different from normal GC controllers. (Why? who knows. Probably
so games could detect the WB and show WB-specific OSDs).

This implementation should be more future-proof, to handle any other
unexpected status bytes.
2018-04-25 21:28:33 -07:00
radius 0964444e06 prevent crashing in cores that don't range check retro_set_controller_port 2018-04-25 19:51:55 -05:00
Twinaphex f0e057c8d0 Merge pull request #6623 from leiradel/master
Remove logging from cheevos
2018-04-25 23:52:40 +02:00
Twinaphex 6ac4032735 Merge pull request #6580 from gblues/gblues/hid
Working HID driver for Wii U [TESTING NEEDED]
2018-04-25 23:10:39 +02:00
twinaphex 9663f5199e (Switch) Enable HAVE_RUNAHEAD for Switch 2018-04-25 22:20:48 +02:00
Twinaphex 09394198b2 Update CHANGES.md 2018-04-25 22:10:04 +02:00
Andre Leiradella f04548a95d Fixed warning about unused STUB_LOG; removed unused debug functions 2018-04-25 18:02:31 +01:00
Andre Leiradella 029ba3d2f6 Mute cheevos logging, define CHEEVOS_VERBOSE in cheevos.h to enable 2018-04-25 17:56:15 +01:00
twinaphex 023e280319 win32_get_refresh_rate not available on Xbox 2018-04-25 14:20:37 +02:00
twinaphex 9a7ca5fe57 C89 buildfix 2018-04-25 12:02:35 +02:00
twinaphex 7b1ad55b20 Try to use snprintf instead of sprintf 2018-04-25 11:31:50 +02:00
Twinaphex 77b092ffc3 Merge pull request #6619 from Tatsuya79/patch-1
XMB fix crash with scale factor under 100
2018-04-25 10:55:19 +02:00
Tatsuya79 0737b90080 XMB fix crash with scale factor under 100 2018-04-25 10:54:04 +02:00
twinaphex 2fd9373c05 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-04-25 10:44:04 +02:00
twinaphex fee49f0e7e Update libretro-common 2018-04-25 10:43:19 +02:00
Twinaphex a58f80cc09 Update CHANGES.md 2018-04-25 10:42:50 +02:00
Twinaphex 8e1c2e48c4 Update CHANGES.md 2018-04-25 10:42:50 +02:00
Celerizer 212d7bfbe1 [Cheevos] Store only login token, not password 2018-04-25 10:42:50 +02:00
twinaphex 2178f7b8ce Update libretro-common 2018-04-25 10:21:26 +02:00
Twinaphex 7902a60669 Update CHANGES.md 2018-04-25 10:15:40 +02:00
Twinaphex 134c1e6083 Merge pull request #6618 from celerizer/master
[Cheevos] Store only login token, not password
2018-04-25 10:14:25 +02:00
Twinaphex 6344162900 Update CHANGES.md 2018-04-25 10:13:57 +02:00
twinaphex de111ea903 Should fix some zip archives potentially not working on Linux; the
stream member of zlib was being set to random memory, so it was
attempted
 to be freed on line 73 of trans_stream_zlib.c
2018-04-25 10:10:22 +02:00
gblues 07864aebb4 Add fault-tolerance to kpad driver
== DETAILS

So, the KPadRead function will sometimes return 0, but this doesn't mean
the wiimote is actually disconnected. It's usually something transient, like
the BT chip has nothing to send or whatever. I don't know.

So, I added a buffer so that it won't disconnect the pad without 5
consecutive 0-reads.

This is a temporary hack; a proper solution will use the Wii U's callback
mechanisms to do wiimote detection. But that's a separate project. This at
least prevents OSD spam.

== TESTING

Tested locally. Verified that connecting/disconnecting nunchuk during play
still works properly.
2018-04-24 21:46:42 -07:00
gblues f33fa3d566 Fix pad leak in kpad (wiimote) driver
== DETAILS

This is the wiimote version of the same bug I previously fixed in the HID
driver, where disconnected pads didn't actually invoke the unregister task.

This has an extra wrinkle, in that we *also* need to invoke the unregister
task when the wiimote device changes (e.g. user plugs in a nunchuk or
classic controller).

Now, there's still the problem of the "disconnect" detection being broken; so
a consequence of this commit is OSD spam. However, the actual wiimote input
is processed successfully and there's no noticeable issues in the pad
handling.

== TESTING

Using Mario 3, I played a level in which I started as bare wiimote, then
hot-plugged the nunchuk, and the input switched automatically. At  the
end of the level, I hot-unplugged the nunchuk and it automatically reverted
to horizontal layout; and the pad remained 100% responsive the entire time.
2018-04-24 21:20:08 -07:00
Celerizer ca4f70db22 [Cheevos] Store only login token, not password 2018-04-24 21:31:07 -05:00
bparker06 2160f185f1 Update CHANGES.md 2018-04-24 19:34:31 -04:00
Twinaphex d65b387d0f Update AndroidManifest.xml 2018-04-24 19:03:57 +02:00
twinaphex ea69340130 Update 2018-04-24 18:36:35 +02:00
twinaphex c92142cdbd Duplicate latency settings 2018-04-24 18:33:38 +02:00
Twinaphex f2527b3a3c Merge pull request #6616 from Tatsuya79/master
Fix console layout case.
2018-04-24 18:21:02 +02:00
Tatsuya79 d851cbf3d5 Fix console layout case. 2018-04-24 18:14:18 +02:00
Twinaphex 485825fcd1 Merge pull request #6615 from Tatsuya79/master
XMB PSP layout thumbnail scaling.
2018-04-24 18:09:07 +02:00
Twinaphex bd01ab80ca Merge pull request #6614 from Dwedit/copy_load_info_bugfix
Two fixes for copy_load_info.c
2018-04-24 18:08:27 +02:00
Tatsuya79 31415f760a XMB PSP layout thumbnail scaling. 2018-04-24 17:47:02 +02:00
twinaphex b2e9a328cd Add User Interface -> Views -> Quick Menu -> Show
Overlays/Remaps/Latency
2018-04-24 17:46:49 +02:00
Dwedit dd6eb92352 Two fixes for copy_load_info.c
* Additional check before copying data in clone_retro_game_info
* Sizes the dest string list in string_list_clone to capacity rather than size
2018-04-24 10:32:31 -05:00
twinaphex b907ee2503 Add sublabels for CRT SwitchRes 2018-04-24 17:08:43 +02:00
twinaphex 65fe25f03c (RGUI) Add background border filler thickness enable 2018-04-24 16:45:06 +02:00
twinaphex ee421fcaa8 Add RGUI Border Filler Enable 2018-04-24 16:01:51 +02:00
gblues f6b33b1d30 missing file 2018-04-24 06:37:02 -07:00
twinaphex 68c9cf4cb9 update CHANGES.md 2018-04-24 15:27:12 +02:00
twinaphex 6b31bd8b48 Only show Menu Linear Filter for RGUI and only show it for
video drivers that implement it
2018-04-24 15:14:06 +02:00
twinaphex c506f489df (D3D8) Hook up Menu Linear Filter 2018-04-24 14:49:58 +02:00
twinaphex a75e7ede0d (D3D9) Implement Menu Linear Filter 2018-04-24 14:47:21 +02:00
twinaphex 77d97d2407 (menu_displaylist.c) Cleanups 2018-04-24 14:24:25 +02:00
twinaphex f228b26755 Cleanups 2018-04-24 14:08:38 +02:00
twinaphex 757d1baa8d Cleanups 2018-04-24 13:51:27 +02:00
twinaphex 5164e62172 User Interface -> Views - show 'no entries to display' instead
of getting locked in
2018-04-24 13:46:14 +02:00
twinaphex 381bc28530 Update CHANGES.md 2018-04-24 13:19:37 +02:00
twinaphex 64bdf7e48e Prevent collision 2018-04-24 08:33:14 +02:00
gblues 1d84c0eca1 Fix analog for DS3, plus some cleanups
== DETAILS

- DS3 analog wasn't working mainly because I forgot to actually declare the
  axes in input/input_autoconfig.c when declaring the pad. Whoops.
- I also moved the axis decoding logic to a more central place, because it
  clearly is not Wii U specific.
- Removed some dead commented-out code

== TESTING

Can use analog inputs on both GCA and DS3. Tested in Mario 3 on Nestopia core.

Haven't tested with any actual analog games, but I did confirm via logging
that the correct ranges are produced.
2018-04-23 23:22:27 -07:00
twinaphex 265ae728dd (XMB) Add XMB menu layout - ability to switch between PS3 (Console)
and PSP (Handheld) layouts
2018-04-24 07:38:53 +02:00
twinaphex af351932bd (XMB) Cleanups 2018-04-24 07:19:29 +02:00
twinaphex 72428a23c5 (shader_vulkan.cpp) Move some functions to vulkan_common.c 2018-04-24 07:07:58 +02:00
twinaphex a482c90222 (dynamic.c) Cleanups 2018-04-24 04:49:02 +02:00
twinaphex 2760586086 Cleanups 2018-04-24 04:46:13 +02:00
Twinaphex 17cbc80a9b Merge pull request #6609 from RobLoach/patch-32
Disable Travis email notifications
2018-04-24 03:35:16 +02:00
Rob Loach 431d15746e test: Disable Travis email notifications
@twinaphex reported that he was getting a lot of Travis email notifications. These are not needed, as the build status is reported on both Pull Requests, and the Status Badge.
2018-04-23 17:08:43 -04:00
twinaphex a93289e311 (materialui) add icons 2018-04-23 22:47:50 +02:00
twinaphex ebfa4bdcdc Implement two stub functions 2018-04-23 18:34:23 +02:00
twinaphex d6c17178a3 Add some logging for shader backend setup 2018-04-23 18:25:41 +02:00
twinaphex 77d815a572 Get rid of warning 2018-04-23 17:48:31 +02:00
twinaphex c90c98dcaa Silence warnings 2018-04-23 17:37:37 +02:00
twinaphex 789ef63dee (360) Don't bake in HAVE_XUI anymore; buildfixes for C++ 2018-04-23 17:35:36 +02:00
twinaphex fec8d3294c Cleanup 2018-04-23 17:23:14 +02:00
twinaphex 95ecbc0859 Update 2018-04-23 17:22:02 +02:00
twinaphex 830068e5bd Create d3d9x_constant_table_set_float_array 2018-04-23 17:20:08 +02:00
twinaphex a6fcd9dae0 Create d3d9x_constant_table_set_defaults 2018-04-23 17:09:11 +02:00
twinaphex bd3f39b005 Remove SetMatrix macro 2018-04-23 17:04:59 +02:00
twinaphex 0e5ccd7c15 Create d3d9x_constant_table_set_matrix 2018-04-23 17:04:30 +02:00
twinaphex dbb9a43abe (HLSL) Cleanups 2018-04-23 15:59:09 +02:00
twinaphex 8d02343b53 (HLSL) Cleanups 2018-04-23 15:58:00 +02:00
twinaphex d7fa70927c (HLSL) Cleanups 2018-04-23 15:55:26 +02:00
twinaphex d03ff06cf3 (HLSL) Cleanups 2018-04-23 15:51:24 +02:00
twinaphex 282b4ba21b (d3d9_common.c) Cleanups 2018-04-23 15:40:43 +02:00
twinaphex 0c4a3a83ce (HLSL) Fix implicit declaration 2018-04-23 15:32:47 +02:00
twinaphex af734939ee More HLSL work 2018-04-23 15:26:35 +02:00
twinaphex 32c92a9a22 Rename d3dxbuffer_release 2018-04-23 15:04:19 +02:00
twinaphex 45cea92ba2 Remove null_renderchain 2018-04-23 14:57:37 +02:00
twinaphex 871f04e19a (slang) Cleanups 2018-04-23 14:56:02 +02:00
twinaphex e54cb1b121 Only show black frame insertion for the video drivers/context drivers
that support it
2018-04-23 14:15:21 +02:00
twinaphex ee621ba476 Silence Coverity warning 2018-04-23 14:07:10 +02:00
twinaphex f1fa1d4879 Previously, GPU Hard Sync options would only show up if the
video driver was explicitly set to the GL driver; now, it can be
dynamically shown for more video drivers if there are going to be
more drivers supporting this feature other than GL
2018-04-23 13:42:09 +02:00
twinaphex c4c8699ee3 Only show max swapchain images if supported by video driver and/or
context driver
2018-04-23 13:34:30 +02:00
twinaphex 6f4fd8859a Add customizable swapchain images flag to VC EGL context 2018-04-23 13:12:00 +02:00
twinaphex b1a2d1991c (d3d10.c) Cleanups 2018-04-23 13:09:05 +02:00
twinaphex 6f3003554e (D3D10/D3D11/D3D12) Don't load menu pipeline shaders unless XMB
is selected
2018-04-23 12:59:28 +02:00
twinaphex 5370c59201 Cleanups/style nits 2018-04-23 12:03:50 +02:00
twinaphex bac0d22ce9 Create menu_display_osk_ptr_at_pos 2018-04-23 11:58:18 +02:00
twinaphex 8bc3283bd5 Create menu_display_draw_keyboard 2018-04-23 11:42:55 +02:00
twinaphex f8ccf50fd4 Make materialui_render_keyboard and xmb_render_keyboard identical 2018-04-23 11:36:15 +02:00
twinaphex 54ec4e47e8 Silence another warning 2018-04-23 11:31:39 +02:00
twinaphex eb69025ca8 Cleanups 2018-04-23 11:30:38 +02:00
twinaphex c18d2e0432 Silence warnings 2018-04-23 10:49:36 +02:00
Twinaphex b41c4ed624 Update 2018-04-23 10:22:54 +02:00
gblues f7135bcee6 Fix analog reading on GCA
== DETAILS
After a little trial and error, I got analog input working for the
Wii U GC adapter.

DS3 might work, but it's untested.
2018-04-22 23:47:07 -07:00
gblues ed742c48e0 Fix hotplugging
== DETAILS
So, it turns out that there *is* a autoconfig disconnect handler. Took digging
through tasks/task_autodetect.c to find it!

So, I added a call to the handler when the pad gets disconnected.

This seems to solve the problem of the pad not disappearing from the menu.

(At the very least, the user's pad index reverts to "none" which is still
an improvement)

== TESTING
Tested manually, made sure it didn't crash or leak slots.
2018-04-22 17:34:20 -07:00
twinaphex 997c24ae0c Make FLAC, zlib and LZMA support in libchdr optional 2018-04-22 20:19:07 +02:00
twinaphex fc169cf4fe Split up libchdr_chd.c into several files 2018-04-22 19:50:14 +02:00
twinaphex 8e2dfa6184 Cleanups 2018-04-22 19:19:27 +02:00
twinaphex 8a1f2f5cf2 Update libretro-common 2018-04-22 18:36:30 +02:00
twinaphex 7bef8746a3 Add chd_precache code to libchdr 2018-04-22 18:04:45 +02:00
twinaphex 1fd2cf1ff5 Update libchdr chd 2018-04-22 17:43:57 +02:00
twinaphex 5dc916f0b3 Take out another header include 2018-04-22 15:45:56 +02:00
twinaphex 04fa4871f0 Create d3d_translate_filter and get rid of duplicate functions 2018-04-22 15:45:11 +02:00
twinaphex 88387ccbde (D3D8) Cleanups 2018-04-22 15:34:08 +02:00
twinaphex 3a93377811 D3D8 buildfix 2018-04-22 14:55:15 +02:00
twinaphex 9e741019f3 (menu_display_d3d8.c) Buildfix 2018-04-22 14:46:20 +02:00
twinaphex 2a655116a6 Set #define CINTERFACE in these files 2018-04-22 14:27:39 +02:00
twinaphex 80fdd6d2a1 Less pointer/variable casting going on 2018-04-22 14:20:59 +02:00
twinaphex ca8829fe3c (D3D9) Simplifications 2018-04-22 14:00:32 +02:00
twinaphex a7e40ea3f4 (d3d8_common.c) Define CINTERFACE, get rid of C++ versions 2018-04-22 13:34:05 +02:00
twinaphex 5ee6cdf753 (d3d9_common.c) Cleanups 2018-04-22 13:26:58 +02:00
twinaphex 8de03fe843 (D3D9 common) Define CINTERFACE and get rid of C++ ifdefs 2018-04-22 13:18:56 +02:00
twinaphex 58623d7540 (d3d_common.h) Cleanups 2018-04-22 13:09:03 +02:00
twinaphex 3033dda866 (x11_common.c) Cleanups 2018-04-22 13:05:40 +02:00
twinaphex 4c941d3ada (gl2_renderchain) Try to prevent warning 2018-04-22 12:57:38 +02:00
twinaphex db314ff82f Uniquely namespace libchdr source files 2018-04-22 12:10:15 +02:00
twinaphex ca9dd89975 Revert "(3DS/Emscripten/Vita/Wiiu) Add HAVE_CHD support"
This reverts commit d4c691527a.
2018-04-22 12:02:40 +02:00
twinaphex d4c691527a (3DS/Emscripten/Vita/Wiiu) Add HAVE_CHD support 2018-04-22 11:58:11 +02:00
Twinaphex 8c400ce6ab Merge pull request #6603 from meleu/patch-20
Fixing cheevos hardcore mode description
2018-04-22 08:56:19 +02:00
meleu e325c68748 fixing cheevos hardcore mode description
Removing fast-forward as something that is disabled when in Hardcore mode is enabled.
Fast-forwarding is allowed even in hardcore mode.
2018-04-22 01:14:03 -03:00
twinaphex 248f1242dc Some warning fixes 2018-04-21 18:14:19 +02:00
twinaphex 1526c8a15d (PS3) Should fix PS3 build with context driver 2018-04-21 18:05:25 +02:00
Twinaphex f4c83157af Fix CocoaGL context driver 2018-04-21 18:06:14 +02:00
twinaphex 413914a1cf Add Rewind/Latency/Overlay Settings to Quick Menu 2018-04-21 15:55:05 +02:00
twinaphex dae0f36a20 Some cleanups 2018-04-21 15:00:35 +02:00
gblues ef36744859 Start implementing fall-back to async read
== DETAILS

The Wii U GC adapter doesn't seem to like doing async reads if it is connected
via a USB hub. It seems to be device-specific, though, because my DS3 works
just fine through the same hub.

I tried creating a fallback to synchronous reads, but it resulted in a hard
lock of the system. So, for the time being, it's going to be a known
limitation. Might be solved by using a powered USB hub.

Learned that the cache alignment is 64, not 32, so the alignment math has
been updated. Thanks, @aliaspider for that info.
2018-04-20 21:58:45 -07:00
gblues 0c92fab0b9 Fix GameCube button detection
This should fix the issue where R/L buttons didn't register when doing
input detection.

This also brings the GC pad in line with the rest of the gamepads in
input_autodetect_builtin.c.

Also fixed a really stupid bug that was part of why analog inputs aren't
being read. Analog still isn't working, mind, but it's a lot closer to
working now that it's actually getting down into the pad driver level!
2018-04-20 00:00:33 -07:00
gblues 53738e4a0d Allow Wii U GCA to work without 2nd cable attached
=== DETAILS

So, the GCA has 2 USB connections; one is the data connection, and the
second is used to drive rumble.

Due to a driver bug, if the second cable wasn't attached, the pads wouldn't
get detected.

I fixed that bug.
2018-04-18 23:12:45 -07:00
twinaphex 16df2ceb4e Fix Xbox OG 2018-04-17 11:39:59 +02:00
twinaphex d8fd499f3d Update count 2018-04-19 23:41:15 +02:00
twinaphex 4d64a94cb2 Updates 2018-04-19 22:28:17 +02:00
twinaphex 835e491c62 Use int64_t type for feeding to filestream_read 2018-04-19 22:26:40 +02:00
Twinaphex 037c47eaf1 Merge pull request #6597 from fr500/master
fix #6596
2018-04-19 18:06:56 +02:00
radius d8b5fea374 fix coverity warnings 2018-04-19 10:07:59 -05:00
radius 8198e5c0b2 fix #6596 2018-04-19 09:54:16 -05:00
twinaphex 74d4bc80d9 (libretro-common) Updates 2018-04-19 09:43:21 +02:00
twinaphex 1c66905f0d Updates 2018-04-19 08:01:07 +02:00
twinaphex 4914c164fa Update file_stream_transforms 2018-04-19 07:56:57 +02:00
twinaphex a7ad6e2024 (XMB) Add icons for shader/shader presets 2018-04-18 08:22:01 +02:00
twinaphex 070ee2fb40 (dispserv_win32.c) Simplify code 2018-04-18 08:03:34 +02:00
twinaphex 9532a77b4f Buildfix 2018-04-18 07:53:25 +02:00
Twinaphex ba25d90cc8 Merge pull request #6593 from Dwedit/silly_bug_fix
Fix a silly bug in the code that tries to copy the DLL 30 times
2018-04-18 06:44:53 +02:00
twinaphex e17c3d869d Avoid warnings on gx2_common.h 2018-04-18 06:43:21 +02:00
Dwedit af87a19675 Fix a silly bug in the code that tries copying the dll to 30 random files (should not return true at the end) 2018-04-17 23:25:26 -05:00
twinaphex b0e62f3ec6 (D3D11) Add more feature levels
(D3D11) If CreateDeviceAndSwapchain fails, error out gracefully
2018-04-17 21:29:02 +02:00
Twinaphex a4f1c6b602 Merge pull request #6592 from Ryunam/playlist-work
Add toggle to show/hide Playlist tabs on XMB
2018-04-17 19:09:03 +02:00
Ryunam 712a2fcc1d Add toggle to show/hide Playlist tabs 2018-04-17 17:53:24 +02:00
twinaphex 710570a408 (MSVC 2013) Buildfix 2018-04-17 11:37:00 +02:00
twinaphex 30c824c30a Try to fix MSVC warning 2018-04-21 08:54:57 +02:00
twinaphex 6d7ffef316 (gl2_renderchain.c) Update 2018-04-21 08:52:38 +02:00
twinaphex c52f53aada Some minor refactors 2018-04-21 08:47:09 +02:00
twinaphex df5586570f Make gl2_renderchain_deinit_fbo safer 2018-04-21 08:42:57 +02:00
twinaphex 88d62c7766 Update 2018-04-21 06:31:07 +02:00
twinaphex e5d90eebd7 Updates to libretro-common 2018-04-21 06:29:56 +02:00
twinaphex 6929db9fb6 (D3D10/D3D11) Compile shaders with SM 4.0 instead of 5.0 2018-04-21 05:36:59 +02:00
twinaphex 832cc4e945 (MSVC) Silence warnings 2018-04-21 05:20:22 +02:00
twinaphex e0b57843aa Enable HAVE_D3D10 now for main Windows build 2018-04-21 05:14:50 +02:00
twinaphex 8848b2837b Add D3D10 to slang supported checks 2018-04-21 05:11:24 +02:00
Twinaphex 0cf6b83b63 Merge pull request #6601 from aliaspider/master
update D3D10 driver.
2018-04-21 05:02:45 +02:00
aliaspider b78dcf9f4c update D3D10 driver. 2018-04-21 03:56:19 +01:00
twinaphex 7515c3d7c3 (D3D10) Switch to shader model 4.0 2018-04-21 03:33:08 +02:00
twinaphex 8e52fcff96 Add D3D10 entry 2018-04-21 03:30:34 +02:00
twinaphex 9f2b56a929 Update Direct3D 10 driver 2018-04-21 03:27:41 +02:00
Twinaphex 919a441089 Merge pull request #6590 from fr500/master
fix #6589
2018-04-17 05:24:49 +02:00
radius 3755003d33 remap-redux: unify menu displaylist 2018-04-16 21:26:43 -05:00
twinaphex d7d5dfdc73 Add display_server_get_current_resolution 2018-04-17 03:37:56 +02:00
twinaphex f050104740 Change return type of content_get_subsystem_rom_id 2018-04-17 03:19:35 +02:00
twinaphex 3f8ea809de (360) Buildfix 2018-04-17 03:14:20 +02:00
Twinaphex 8113d2067f Merge pull request #6391 from meleu/patch-13
decreasing verbosity in Achievements menu
2018-04-17 01:49:35 +02:00
Twinaphex 029019b757 Merge pull request #6586 from bearoso/refresh_rate
Refresh rate polling updates
2018-04-17 01:27:05 +02:00
Twinaphex a1f50ba847 Merge pull request #6587 from meleu/patch-19
CHANGES.md: fixed NGP cheevos incompatibilities
2018-04-17 01:26:38 +02:00
meleu 9933eb004b CHANGES.md: fixed NGP cheevos incompatibilities 2018-04-16 20:23:59 -03:00
Twinaphex b7990bc63d Merge pull request #6585 from Ryunam/latency-settings
Implement "Latency" list under Settings and group all latency-related options together
2018-04-17 00:56:58 +02:00
Twinaphex eb4049397f Merge pull request #6584 from meleu/patch-19
cheevos/var.c: removed unnecessary memory adjustment for NeoGeo Pocket
2018-04-17 00:56:21 +02:00
Brandon Wright 6aa33c8710 Add some X11 error checking. 2018-04-16 16:56:36 -05:00
Brandon Wright c4f818599c Add some fbdev refresh rate polls. Also Xv. 2018-04-16 16:23:59 -05:00
Ryunam 2cf76a192f Add Latency list under Settings and move relevant functions 2018-04-16 23:21:14 +02:00
Brandon Wright 95f8205fd1 Add DRM interface for refresh rate. 2018-04-16 15:36:46 -05:00
meleu 3fb2484869 removed unnecessary memory adjustment 2018-04-16 17:01:43 -03:00
Brandon Wright 64b2830889 Fix Win32 build. Set Windows header API to Win7. 2018-04-16 14:51:38 -05:00
twinaphex be7eb4de1c Update libretro-common 2018-04-16 08:57:17 +02:00
twinaphex 7a4c468730 Update libretro-common 2018-04-16 08:34:34 +02:00
twinaphex ec2267daa6 Cleanups 2018-04-16 04:35:23 +02:00
twinaphex d46011ae14 Cleanups 2018-04-16 04:20:24 +02:00
twinaphex 4cc3cf7344 Only restore resolution through resolution switch if CRT
switch mode was ever actually used
2018-04-16 03:19:33 +02:00
Twinaphex de29f0ce62 Merge pull request #6583 from bearoso/refresh_rate
Show actual refresh rate and allow setting from video menu
2018-04-16 03:14:49 +02:00
Brandon Wright df5528b1d0 Divide Wayland rate by 1000 instead of multiply. 2018-04-15 20:00:14 -05:00
Brandon Wright e049605359 Add refresh rate polling to Win32 >= Windows 7. 2018-04-15 19:33:38 -05:00
Brandon Wright 20d87347f7 Add menu item showing and allowing to automatically set precise refresh rate. 2018-04-15 17:56:12 -05:00
Brandon Wright 533f898132 Add get refresh rate context function. Implement for X11 and Wayland. 2018-04-15 17:56:12 -05:00
Brandon Wright 7a00534378 Add poke interface for get_refresh_rate. 2018-04-15 17:56:11 -05:00
twinaphex 6d00810716 Simplify video_driver_monitor_adjust_system_rates 2018-04-15 19:38:01 +02:00
twinaphex 953172f05b This header include can go now 2018-04-15 19:29:07 +02:00
twinaphex c692f457c2 Add switch_resolution to display_server interface 2018-04-15 19:25:00 +02:00
twinaphex bed4214059 Turn int variables to unsigned 2018-04-15 18:59:58 +02:00
twinaphex 311c156e08 Turn width/height into unsigned 2018-04-15 18:55:16 +02:00
twinaphex 4d87772f4a (video_crt_switch.c) Turn a whole bunch of functions static 2018-04-15 18:52:38 +02:00
twinaphex 1c6a6c80f4 Try to prevent another memory leak - this time in miniupnpc 2018-04-15 18:42:25 +02:00
twinaphex bb05af0d92 (libchdr) Prevent memory leak 2018-04-15 18:39:42 +02:00
twinaphex dc7c4fea2d Prevent Coverity warning 2018-04-15 18:31:46 +02:00
twinaphex 359de5c84b Create win32_change_display_settings 2018-04-15 17:55:37 +02:00
twinaphex 87cf910396 (CRT switch) Cleanups 2018-04-15 17:12:28 +02:00
Twinaphex a2516d23a3 Merge pull request #6469 from alphanu1/master
CRT Switchres Capabilities
2018-04-15 16:56:15 +02:00
Twinaphex c6849bf267 Merge pull request #6581 from QuarkTheAwesome/master
[WiiU] Add build information to exception handler
2018-04-15 16:48:58 +02:00
Ash 8e1437ad86 [WiiU] Add build information to exception handler 2018-04-15 17:19:39 +10:00
gblues 6eebbe4213 Build fix for PC
== DETAILS
Hooray for conditional compile directives.

Moving things around broke things in unexpected ways on non-WiiU builds.

Well, not *completely* unexpected. But still.

Changes:

- Move some typedefs around to avoid circular include dependencies
- Include the file where the HID driver definition got moved to

== TESTING
- verified build for Wii U still runs successfully
- did a local build without any errors (some weird warnings, but since they
  happen in code I didn't change, I'm assuming they're pre-existing?)
2018-04-15 00:04:49 -07:00
gblues 4cd301bd92 Add pad unregistration
== DETAILS

I think this will fix the problem with duplicate pads--pads weren't properly
de-initializing and registering as disconnected. When a pad is disconnected,
the slot should properly release now.
2018-04-14 21:30:44 -07:00
gblues 6ab91a422e Small cleanup to adapt to upstream code changes
retro_bits_t turned into input_bits_t and there were parts of my
code that needed to update.

== TESTING
No idea if upstream changes broke anything, but it compiles cleanly
now.
2018-04-14 14:34:13 -07:00
gblues fb5b31faf3 Merge branch 'master' into gblues/hid 2018-04-14 14:18:03 -07:00
gblues 97e09d179f Fix deadlocks when device is unplugged
== DETAILS
TIL that it's bad to call synchronization code from callbacks.

To avoid that, I made the following changes:

- Implemented an atomic swap (see previous commit) to avoid explicit
  locking when working with the event list
- ensure locks are only acquired in either the main thread or the
  I/O polling thread
- use an explicit polling loop; we still use async reads, but the
  read doesn't immediately re-invoke itself.
- remove the sleep in the polling thread.
- remove unnecessary locking in the thread cleanup call--verified that
  the list can't be modified while it is being executed.

== TESTING
I tested locally, and was able to disconnect/reconnect USB devices several times without the worker thread getting deadlocked.
2018-04-14 13:30:34 -07:00
Twinaphex 79071bd11b Merge pull request #6577 from Stevoisiak/settings-rename-ui
retroarch.cfg: Rename "UI" to "User Interface"
2018-04-14 21:20:15 +02:00
Steven M. Vascellaro 9d352af3a8 retroarch.cfg: Rename "UI" to "User Interface"
Use full name for UI to match the terminology when changing settings in RGUI.
2018-04-14 15:17:40 -04:00
Twinaphex a20d53202d Merge pull request #6576 from RobLoach/patch-30
libretro-db: Show missing key match warning once
2018-04-14 20:47:53 +02:00
Twinaphex 3c7c8871d7 Merge pull request #6575 from RobLoach/patch-29
libretro-db: Ignore compiled binaries
2018-04-14 20:47:39 +02:00
Rob Loach d44f9467e4 libretro-db: Fix whitespace 2018-04-14 14:10:40 -04:00
Rob Loach d3bbdb2e06 libretro-db: Show missing key match warning once
Before, the "missing match" warning would appear for every entry. This change makes it show that it only displays the warning once.
2018-04-14 14:09:46 -04:00
Rob Loach b0a2df41dd libretro-db: Ignore compiled binaries
This makes it so that the compiled libretro-db binaries are ignored from git.
2018-04-14 14:08:28 -04:00
gblues dca36ebaf8 Add small snippet for atomic value swapping
Fortunately, the gcc port implements the builtins and, from basic
testing, they seem to work.

This is only really useful on Wii U--other platforms have more
robust atomic operations, or aren't using gcc to build.
2018-04-14 01:26:26 -07:00
twinaphex 6f7b8aac8c Add input/input_mapper.c always 2018-04-14 03:25:58 +02:00
Twinaphex 7c5e44ead0 Merge pull request #6568 from nurupo/cxxdoesntlag
CXXLAGS -> CXXFLAGS
2018-04-13 18:49:36 +02:00
Twinaphex 4c39a7fd78 Merge pull request #6571 from hiddenasbestos/retro_opendir_r2
retro_opendir - Improved fix for bad input
2018-04-13 18:47:02 +02:00
David Walters adf4ed960e Handle null and empty string calls to retro_opendir with a consistent null return. 2018-04-13 10:31:21 +01:00
Maxim Biro 6f9c2da807 CXXLAGS -> CXXFLAGS
C++ definitely doesn't lag!
2018-04-13 03:35:33 -04:00
Twinaphex 8fe51864a6 Merge pull request #6566 from gingerbeardman/graphics
3DS icon and banner update
2018-04-13 03:04:31 +02:00
gingerbeardman e1637ffa20 icon changes 2018-04-13 01:29:15 +01:00
gingerbeardman f8b75482e9 icon and banner update and refresh
new icons: freeintv
redrawn icons: 81, nekop2, np2kai
tweaked icons: fceumm,  mednafen_pce_fast, nestopia, o2em, picodrive
new banners: freeintv
tweaked banners: 81

all images have also been optimised
2018-04-13 01:15:26 +01:00
twinaphex dc61e23a21 Update libretro-common 2018-04-13 01:10:10 +02:00
Twinaphex bd2b913bc6 Silence more warnings 2018-04-13 00:52:52 +02:00
twinaphex 041670fe02 Get rid of multitude of casting warnings 2018-04-13 00:47:42 +02:00
twinaphex 1751f4a0af Make it possible to read bigger files by replacing ssize_t with int64_t
and size_t with uint64_t
2018-04-13 00:18:11 +02:00
twinaphex 70abbbf4fb Revert "Revert "(PS3) Set GCC for PS3""
This reverts commit 249abcd108.
2018-04-12 23:46:41 +02:00
Twinaphex ff18a55f06 Merge pull request #6565 from fr500/master
remap-redux: try to fix more warnings
2018-04-12 21:39:46 +02:00
twinaphex 6761ec471d Silence some Coverity warnings 2018-04-12 21:39:31 +02:00
radius 9a355b8f2e remap-redux: try to fix more warnings 2018-04-12 14:20:38 -05:00
twinaphex 6e4cf412f0 (menu_entry_playlist_start_entry) This code seems to be unnecessary now? 2018-04-12 21:02:54 +02:00
twinaphex e7bed050bc Fix memory leak 2018-04-12 20:54:06 +02:00
twinaphex 249abcd108 Revert "(PS3) Set GCC for PS3"
This reverts commit 5486894e3b.
2018-04-12 20:30:35 +02:00
twinaphex 5486894e3b (PS3) Set GCC for PS3 2018-04-12 20:16:58 +02:00
Twinaphex 38525e1e8f Merge pull request #6564 from Tatsuya79/patch-1
MUI Scale mouse cursor like icons.
2018-04-12 18:58:50 +02:00
Tatsuya79 3f77a6a320 MUI Scale mouse cursor like icons. 2018-04-12 18:56:54 +02:00
Twinaphex c5c41efc0f Merge pull request #6563 from hiddenasbestos/retro_opendir
patch retro_opendir to handle nullptr and empty-string input
2018-04-12 16:38:51 +02:00
David Walters 801ecb019a patch retro_opendir to handle nullptr and empty-string input 2018-04-12 12:44:42 +01:00
Twinaphex 872c364f34 Merge pull request #6561 from Dwedit/br_encoding_fix
Change encoding of msg_hash_pt_br.h from Windows-1252 to UTF-8
2018-04-12 02:28:10 +02:00
twinaphex 97cf6613da (XMB/Shaders) Reimplement menu shader loading for GLSL/Cg/HLSL backends - if
XMB is selected, it will compile the shader pipelines in
advance
2018-04-12 02:20:17 +02:00
Dwedit 9252c56142 Change Windows-1252 encoded file back to UTF-8 2018-04-11 17:10:46 -05:00
twinaphex 74a3677eb5 Silence warning 2018-04-11 06:14:55 +02:00
twinaphex abad1b3134 Revert "(menu) Start passing menu_handle to action_ok callback"
This reverts commit d2a1c39f4b.
2018-04-11 06:12:26 +02:00
twinaphex 1836d08b33 Revert "Start passing around menu_driver_data around properly"
This reverts commit 7c314a9165.
2018-04-11 06:12:14 +02:00
twinaphex b540ae3d4d Revert "Update"
This reverts commit 21ede63df2.
2018-04-11 06:12:08 +02:00
twinaphex 146c94a86a Revert "(iOS) Buildfix"
This reverts commit 15142fd0a9.
2018-04-11 06:12:01 +02:00
twinaphex 6c99acb23e Revert "Pass around void pointer data - menu handle"
This reverts commit b4a2bd5156.
2018-04-11 06:11:54 +02:00
twinaphex fdffb7059d Revert "Less pointer grabbbing - reduce usage of RARCH_MENU_CTL_DRIVER_DATA_GET"
This reverts commit fbf03df8be.
2018-04-11 06:11:45 +02:00
twinaphex a276710877 Revert "(Menu) More refactors"
This reverts commit f0285ef792.
2018-04-11 06:11:38 +02:00
twinaphex a07ada7af6 Revert "More cleanups - getting rid of RARCH_MENU_CTL_DRIVER_DATA_GET"
This reverts commit a8f7d99aba.
2018-04-11 06:11:23 +02:00
twinaphex 21244c6ec7 Revert "(Menu) Get rid of more RARCH_MENU_CTL_DRIVER_DATA_GET calls"
This reverts commit cb3b5d72ab.
2018-04-11 06:11:18 +02:00
twinaphex 87c9d9eb9a Revert "Cleanups"
This reverts commit 8632a92568.
2018-04-11 06:11:10 +02:00
twinaphex 4993630e10 Revert "Cleanups"
This reverts commit 8d6067b1d4.
2018-04-11 06:11:04 +02:00
twinaphex 13d7e2bed2 Revert "(Zarch) Buildfix"
This reverts commit a3175a8fa3.
2018-04-11 06:10:59 +02:00
twinaphex 372603858d Revert "(Menu) Update menu code"
This reverts commit f481924f1e.
2018-04-11 06:10:51 +02:00
Twinaphex ba96aac2da Merge pull request #6556 from fr500/master
remap-redux: fix potential overrun
2018-04-11 05:03:37 +02:00
radius 13a9d11a2c remap-redux: fix potential overrun 2018-04-10 21:52:27 -05:00
Twinaphex ad671a153a Merge pull request #6496 from i30817/fix-scan-dot-in-directories
fix scanner skipping directories with dots
2018-04-11 04:08:12 +02:00
twinaphex 40d45c9451 Manually merge PT BR 2018-04-11 04:03:26 +02:00
Twinaphex f62ad312eb Merge pull request #6555 from i30817/patch-1
Serial magic should only match on full match
2018-04-11 03:26:44 +02:00
twinaphex f481924f1e (Menu) Update menu code 2018-04-11 03:04:58 +02:00
i30817 7da45bc789 Serial magic should only match on full match
As was mentioned on the wii dual layer disc issue, this line is comparing binary sequences as strings, which fails very obviously because neither of the 'strings' tested are strings and it's very likely both start with \0.
2018-04-11 01:37:35 +01:00
twinaphex a3175a8fa3 (Zarch) Buildfix 2018-04-10 22:12:58 +02:00
twinaphex 8d6067b1d4 Cleanups 2018-04-10 22:03:29 +02:00
twinaphex 8632a92568 Cleanups 2018-04-10 21:59:36 +02:00
twinaphex cb3b5d72ab (Menu) Get rid of more RARCH_MENU_CTL_DRIVER_DATA_GET calls 2018-04-10 21:53:44 +02:00
twinaphex a8f7d99aba More cleanups - getting rid of RARCH_MENU_CTL_DRIVER_DATA_GET
calls
2018-04-10 21:49:25 +02:00
twinaphex f0285ef792 (Menu) More refactors 2018-04-10 21:27:57 +02:00
twinaphex fbf03df8be Less pointer grabbbing - reduce usage of RARCH_MENU_CTL_DRIVER_DATA_GET 2018-04-10 19:57:33 +02:00
twinaphex b4a2bd5156 Pass around void pointer data - menu handle 2018-04-10 19:32:50 +02:00
twinaphex 15142fd0a9 (iOS) Buildfix 2018-04-10 19:22:39 +02:00
twinaphex 21ede63df2 Update 2018-04-10 19:20:50 +02:00
twinaphex 7c314a9165 Start passing around menu_driver_data around properly 2018-04-10 19:17:51 +02:00
twinaphex d2a1c39f4b (menu) Start passing menu_handle to action_ok callback 2018-04-10 18:39:03 +02:00
twinaphex 6e299065ce Remove RARCH_MENU_CTL_PLAYLIST_ calls - use playlist_init_cached,
playlist_get_cached, and playlist_free_cached from now on (defined
in playlist.h) - no more menu dependencies on cached playlists
2018-04-10 17:51:40 +02:00
twinaphex bce7742745 Create playlist_cached functions inside playlist.c 2018-04-10 17:40:29 +02:00
twinaphex 00da860681 Cleanup 2018-04-10 16:34:33 +02:00
twinaphex ac511120d4 (retroarch.c) Cleanups 2018-04-10 07:19:27 +02:00
twinaphex 86ea98605d (MSVC 2010) Buildfix 2018-04-10 06:50:47 +02:00
twinaphex 5697a24946 (samples/tasks/database) Define -DHAVE_COMPRESSION 2018-04-10 05:28:58 +02:00
twinaphex 25ab35b7d0 (samples/tasks/database) Add hardcoded extensions for OSX 2018-04-10 05:26:47 +02:00
twinaphex 639152e291 Hardcode exts for now - we assume this standalone program will
only be used on Windows/OSX/Linux systems for now
2018-04-10 05:20:19 +02:00
twinaphex c24179dc63 Scanning should now work in standalone program 2018-04-10 05:16:33 +02:00
twinaphex d66b8fa882 Start implementing main function 2018-04-10 04:53:12 +02:00
twinaphex c9e48cd9de Cleanups / get rid of more dependencies 2018-04-10 04:31:19 +02:00
twinaphex 6f0fc2426d (database_info/task_database) Get rid of list_special dependencies 2018-04-10 04:13:45 +02:00
twinaphex 3016edce0a Move retroarch.h dependencies out of core_info.c 2018-04-10 04:00:01 +02:00
twinaphex 00cc4ca7aa (samples) Gets close to linking now 2018-04-10 03:53:46 +02:00
twinaphex 6e46d1deb1 Buildfix 2018-04-10 03:07:28 +02:00
twinaphex 8ca8f92aeb No more configuration.h dependencies in core_info.c 2018-04-10 03:02:10 +02:00
twinaphex 7ccecc80c1 Update samples/tasks/database 2018-04-10 02:43:35 +02:00
twinaphex 06bafe3cc3 Fix typo 2018-04-10 02:41:09 +02:00
twinaphex 47a6f0bb7a Create extension_to_file_hash_type 2018-04-10 02:00:38 +02:00
twinaphex be0c118c87 (task_database.c) Don't use msg_hash_calcualte and msg_hash_to_file_type 2018-04-10 01:18:40 +02:00
twinaphex 445f176e24 (Xbox) Enable HAVE_RUNAHEAD for Xbox OG/360 2018-04-10 00:14:23 +02:00
twinaphex 867981b74b Include this header include 2018-04-10 00:07:37 +02:00
twinaphex 8b4b5e88ce Update 2018-04-09 22:20:51 +02:00
twinaphex 86c826350e Start moving dependencies out of certain files 2018-04-09 22:18:25 +02:00
twinaphex 908de15e7b Start adding samples - not done yet 2018-04-09 22:12:59 +02:00
twinaphex 22e5d000c2 Cleanups 2018-04-09 19:30:36 +02:00
twinaphex fdec9c50e0 (task_database.c) Add some RARCH_INTERNAL ifdefs 2018-04-09 19:26:49 +02:00
twinaphex f3e0a627af Get rid of one MSVC warning 2018-04-09 19:11:06 +02:00
twinaphex b6764c43db Buildfix 2018-04-09 19:09:00 +02:00
twinaphex afe77527cd Some cleanups for C89_BUILD 2018-04-09 18:57:39 +02:00
twinaphex 260cd62482 Cleanup some CXX_BUILD warnings 2018-04-09 18:53:26 +02:00
twinaphex ff9aebedca Some more Clang warning fixes 2018-04-09 17:48:11 +02:00
twinaphex 8e7b1ede7f Silence Clang warnings 2018-04-09 17:35:27 +02:00
twinaphex 9381d27f1f (miniupnpc) Get rid of warning - value computed is not used 2018-04-09 17:07:43 +02:00
twinaphex f00a75ec84 Get rid of some spurious code in XMB - catched by Clang 2018-04-09 17:02:44 +02:00
twinaphex 50edd0d467 Remove unused variable 2018-04-09 16:45:44 +02:00
twinaphex f071e8b440 Solve more Clang static analysis warnings 2018-04-09 16:42:12 +02:00
twinaphex e82882a1ab Silence some Clang static analysis warnings 2018-04-09 16:33:46 +02:00
twinaphex 88e7c03e1b filebrowser_parse - cleanups 2018-04-09 16:27:37 +02:00
twinaphex 0fb766b921 Move variables 2018-04-09 16:15:31 +02:00
Twinaphex 08a54e45f2 Get rid of a lot of implicit conversions 2018-04-09 15:56:45 +02:00
Twinaphex 91ba0765e6 (libchdr) Silnces xcode warning 2018-04-09 05:58:32 +02:00
Twinaphex f2c23970a3 (font_driver.c) silences the xcode warnings 2018-04-09 05:56:58 +02:00
twinaphex 4db665130c Start moving callback functions to their dedicated files 2018-04-09 03:48:08 +02:00
twinaphex be5057eafc Cleanups 2018-04-09 00:38:44 +02:00
twinaphex a5c7b79842 Move BIT256_CLEAR_ALL_PTR outside of function 2018-04-09 00:34:07 +02:00
twinaphex 7b5a0bf706 Move clear operation outside of keys_pressed functions 2018-04-09 00:31:03 +02:00
Andrés 47a528801d Merge pull request #6547 from fr500/master
add comment
2018-04-08 17:22:32 -05:00
twinaphex 2cb14e730f Initialize to false by default 2018-04-09 00:21:22 +02:00
radius 215868f755 add comment 2018-04-08 17:21:17 -05:00
Twinaphex d5860a4f79 Merge pull request #6546 from fr500/master
cleanup
2018-04-09 00:04:42 +02:00
radius 066d181535 cleanup 2018-04-08 16:58:48 -05:00
twinaphex d0b735735c Update libretro-common 2018-04-08 23:23:01 +02:00
twinaphex 4cd4de3bd3 Simplify input_overlay_add_inputs_inner 2018-04-08 23:20:06 +02:00
Twinaphex 8dc63653e5 Remove unused variables 2018-04-08 23:17:45 +02:00
twinaphex 3a4d094277 MSVC buildfix 2018-04-08 23:13:20 +02:00
twinaphex bc70477005 (input_mapper.c) Some more refactors 2018-04-08 23:08:21 +02:00
Twinaphex 4052ffe08e Update CHANGES.md 2018-04-08 22:40:02 +02:00
Twinaphex e056c1e835 Merge pull request #6543 from orbea/core_delete
Hide the 'Core delete' option if the 'Core updater' is also hidden.
2018-04-08 22:39:40 +02:00
twinaphex a646fd3e65 (input_mapper.c) Small non-functional cleanups 2018-04-08 22:36:48 +02:00
Twinaphex 019e2acd92 Merge pull request #6545 from fr500/master
remap-redux: allow the menu to display manual keybinds
2018-04-08 21:55:14 +02:00
radius 968c692a04 remap-redux: allow the menu to display manual keybinds 2018-04-08 14:50:30 -05:00
twinaphex 1dd73f86b7 Simplify this code somewhat 2018-04-08 21:45:10 +02:00
twinaphex 9bcaac1abc Simplify input_mapper_state 2018-04-08 21:38:57 +02:00
twinaphex 24b694d674 Grab joypad_driver only once 2018-04-08 21:07:04 +02:00
twinaphex 30090db941 Simplify input_get_state_for_port for analogs 2018-04-08 21:04:42 +02:00
twinaphex 0ed69fd170 Simplify input_state analog code remapping somewhat 2018-04-08 20:49:02 +02:00
twinaphex 368becbc42 (wiiu) Potential build fix 2018-04-08 20:29:07 +02:00
twinaphex 1ce19f9573 Include header 2018-04-08 20:26:47 +02:00
twinaphex 460182fc63 Update runahead headers 2018-04-08 20:25:43 +02:00
twinaphex a82bb0ec94 Create special type input_bits_t 2018-04-08 20:21:12 +02:00
Twinaphex be1bca4ce4 Merge pull request #6485 from fr500/master
remap-redux part 2
2018-04-08 19:31:30 +02:00
radius 2b9b829459 remap-redux part2: fix saving, loading and set defaults 2018-04-08 12:13:51 -05:00
radius f517ca3b56 remap-redux part2: fix right stick 2018-04-08 12:13:50 -05:00
radius 72065aee0b remap-redux part2: analog to analog input rules are working for left stick to left stick and left stick to right, for some reason not for right stick to right
stick
(inverting axes) or right stick to left...
2018-04-08 12:13:50 -05:00
radius c608951ff8 remap-redux part2:
- remapping analogs to buttons works 100%
    - remapping to analogs needs the "new input rules written" based on the value and the new axis
2018-04-08 12:13:50 -05:00
radius 0ed9f05571 remap-redux part2:
- remapping analogs to buttons works 100%
- remapping analogs to other analogs still messed up for some reason
- need to reset input of the original axis in input_driver.c still
2018-04-08 12:13:49 -05:00
radius f662d9f65f remap-redux part2: start adding analog remapping 2018-04-08 12:13:49 -05:00
radius 06860bf704 remap-redux part2: rewrite keymapper to work like gamepad mapper 2018-04-08 12:13:49 -05:00
radius 3792a5e502 remap-redux part2: cleanup 2018-04-08 12:13:49 -05:00
radius fa3dfd5f63 remap-redux part2: finally user 2 mapping works! 2018-04-08 12:13:48 -05:00
radius 4260423e48 remap-redux part2: let's use this function instead, add logging 2018-04-08 12:13:48 -05:00
radius 1fa28f0e31 remap-redux part2: let's use this function instead, add logging 2018-04-08 12:13:47 -05:00
radius d8d22a9c40 remap-redux part2: simplify this code a bit, still not working 2018-04-08 12:13:47 -05:00
radius e42e79db28 remap-redux part2: rename variable 2018-04-08 12:13:47 -05:00
radius 2415f821af remap-redux part2: hide analogs for now 2018-04-08 12:13:47 -05:00
radius 958216ede9 remap-redux part2: change remap file labels because old ones are incompatible 2018-04-08 12:13:46 -05:00
radius e130afff73 remap-redux part2: cleanup 2018-04-08 12:13:46 -05:00
radius 5efba1c257 remap-redux part2: better wraparound, skip analogs, add RARCH_UNMAPPED 2018-04-08 12:13:46 -05:00
radius 23331aa484 remap-redux part2: wraparound 2018-04-08 12:13:45 -05:00
radius 59da4b880e remap-redux part2: add empty description to analogs that are currently not remappable 2018-04-08 12:13:45 -05:00
radius 058b4cea79 remap-redux part2: add empty description to analogs that are currently not implemented 2018-04-08 12:13:45 -05:00
radius 921a30da88 remap-redux part2: add empty description 2018-04-08 12:13:44 -05:00
radius e71826e3d6 remap-redux part2: clean up gamepad mapper callbacks 2018-04-08 12:13:44 -05:00
radius f7b94e5f66 remap-redux part2: clean up gamepad mapper callbacks 2018-04-08 12:13:44 -05:00
radius be2c648596 remap-redux part2: after 60 attempsts, new mapper works, N:1 mapping too 2018-04-08 12:13:43 -05:00
radius 7f5fe5ebff remap-redux part 2: add controller sublabel 2018-04-08 12:13:43 -05:00
radius 052887d8b0 remap-redux part 2: fix redefinition of key_descriptors 2018-04-08 12:13:43 -05:00
radius c4754815b6 remap-redux part 2: fix small issue with keymapper 2018-04-08 12:13:43 -05:00
radius 34649d1abf remap-redux part 2: start inverting the gamepad mapper columns 2018-04-08 12:13:42 -05:00
radius 51edf47ed2 remap-redux part 2: cleanup keymapper code 2018-04-08 12:13:42 -05:00
radius db5f3d7a75 remap-redux part 2: add keymapper sublabels 2018-04-08 12:13:42 -05:00
radius f6ee035011 remap-redux part 2: only add items for devices set to RETRO_DEVICE_KEYBOARD (or a subclass) 2018-04-08 12:13:41 -05:00
radius daf262da96 remap-redux part 2: reimplement saving 2018-04-08 12:13:41 -05:00
radius c57f8722e5 remap-redux part 2: restore original var names 2018-04-08 12:13:41 -05:00
radius 2bfb5ec0df remap-redux part 2: fix nits, hookup left/right callbacks 2018-04-08 12:13:40 -05:00
radius ed334cd1dd remap-redux part 2: allow multiple gamepads to work for the keymapper 2018-04-08 12:13:40 -05:00
twinaphex 9639389a66 Uniquely name crc32.c to avoid collissions with statically linked
builds
2018-04-08 17:58:10 +02:00
twinaphex 816d805f58 (wiiu) Only build these files in for non-Griffin build 2018-04-08 17:26:34 +02:00
orbea 63c99363bd Hide the 'Core delete' option if the 'Core updater' is also hidden. 2018-04-08 08:02:47 -07:00
twinaphex 23096e00a3 (wiiu) Add HAVE_RUNAHEAD object files 2018-04-08 07:15:59 +02:00
twinaphex c570d461af Cleanups 2018-04-08 02:01:37 +02:00
twinaphex d58c425e43 Cleanups 2018-04-08 01:56:06 +02:00
twinaphex 2ca52bd08c Remove memcpy_alloc 2018-04-08 01:41:41 +02:00
twinaphex 4f32eb9cc1 (runahead) Style nits - no more '== NULL' 2018-04-08 01:36:30 +02:00
twinaphex 8e4df27305 (runahead) Cleanups 2018-04-08 01:28:17 +02:00
twinaphex 9e07e1a57f (runahead) Buildfix 2018-04-08 01:20:55 +02:00
twinaphex 360bea85b9 (PS3) Silence more warnings 2018-04-08 01:09:31 +02:00
twinaphex f069eeb017 (Wii/WiiU) Add HAVE_RUNAHEAD 2018-04-08 00:48:27 +02:00
Twinaphex 9a97c73dc2 Merge pull request #6285 from orbea/sysconfdir
qb: Add --sysconfdir
2018-04-07 22:54:30 +02:00
Twinaphex 2201e27593 Merge pull request #6528 from Tatsuya79/master
XMB thumbnails vertical disposition.
2018-04-07 04:17:32 +02:00
Twinaphex c1c328d265 Merge pull request #6538 from Dwedit/master
Runahead: Fix build errors on machines without HAVE_DYNAMIC
2018-04-07 04:17:17 +02:00
Dwedit cb74af60c9 one line typo 2018-04-06 20:14:29 -05:00
Dwedit ee0afec787 Fix build errors on machines without HAVE_DYNAMIC 2018-04-06 20:08:18 -05:00
Tatsuya79 299c808e22 Shorten text when 2nd thumb is on the right. 2018-04-06 22:47:49 +02:00
Tatsuya79 de080151cc Remove excessive blend calling. 2018-04-06 16:25:32 +02:00
gblues 4433cbebc6 Get digital inputs for Sony DualShock 3 working
== DETAILS

- fix the bitshift math
- read the right bytes out of the ds3 data packet
- remove verbose logging in critical path
- stop caring about errors in the hid read loop -- seems to just
  be benign "device not ready" -- or at least, that's what I'm assuming
  given that the read eventually succeeds.

== TESTING
Played Mario 3 with the DS3 with no issues.
2018-04-05 23:03:38 -07:00
Tatsuya79 1fadc2e148 Fix image preview sometimes on both thumbs. 2018-04-06 00:59:35 +02:00
Twinaphex 3e699cf00b Merge pull request #6532 from Dwedit/master
Runahead: Move Callback Init calls to after load content (fixes Mesen crashing)
2018-04-05 23:25:55 +02:00
Dwedit f37ed2f7e1 Move callback init calls to before set_controller_port_device calls. 2018-04-05 15:42:20 -05:00
Dwedit e42edbf032 Move Callback Init calls to after load content (fixes Mesen crashing) 2018-04-05 15:34:27 -05:00
Twinaphex 9c5a7a7453 Merge pull request #6531 from altiereslima/master
Updated Portuguese-BR translation
2018-04-05 17:20:35 +02:00
Tatsuya79 e78aedbb6c undo copyright change 2018-04-05 17:08:33 +02:00
altiereslima 1315e26ffa update 2018-04-05 11:46:11 -03:00
altiereslima dc901f6e1e Updated Portuguese-BR translation 2018-04-05 11:41:52 -03:00
Tatsuya79 ad0a36b825 XMB thumbnails vertical disposition. 2018-04-05 00:52:46 +02:00
gblues 46dad14d5f Merge branch 'master' into gblues/hid 2018-04-03 20:30:06 -07:00
Twinaphex cc177d9622 Merge pull request #6523 from hiddenasbestos/msvc
Fix several issues with building using Visual Studio 2015 and 2017
2018-04-03 20:00:08 +02:00
David Walters b5b906bc5a Fix for fatal error C1128 in 64-bit Debug builds (by adding /bigobj to command line) 2018-04-03 18:41:34 +01:00
David Walters c8a9f5eded Compile fix for _vsnprintf_s, missing standard library header. 2018-04-03 18:33:48 +01:00
David Walters 7adec98cd8 Fix MSVC2015 project/solution build config associations 2018-04-03 18:25:23 +01:00
David Walters 852c8735e6 Fix solution file to be Visual Studio 14 / "2015" format. 2018-04-03 18:21:10 +01:00
Twinaphex 2d2094575e Merge pull request #6520 from retro-wertz/patch-1
Fix false [ERROR] when closing content
2018-04-03 13:14:16 +02:00
gblues af08e5015a More work on Dual Shock 3 driver
== DETAILS

- update to not try starting the read loop until after the device
  is successfully initialized
- add new HID wrapper macros needed by ds3 driver
- add some debug logging to help with troubleshooting
- add button map for DS3

== TESTING
Tested with local build. DS3 init is not working.
2018-04-02 23:16:49 -07:00
retro-wertz 55450a5d73 Fix false [ERROR] when closing content
filestream_delete() returns 0 on success, and -1 on failure.
This PR removes this false error when closing content.

e.g.
[ERROR] Failed to remove temporary file: /EMULATORS/ConsoleRoms/Nintendo - Nintendo Entertainment System/Super Mario Bros. (World).nes.
2018-04-03 12:08:53 +08:00
Twinaphex 0b62a0f6e2 Merge pull request #6519 from bearoso/master
Add workarounds based on window manager for override-redirect.
2018-04-03 04:05:26 +02:00
twinaphex 00a3aba480 Define HAVE_RUNAHEAD for dynamic linked iOS 2018-04-03 03:48:59 +02:00
Brandon Wright 9f15e39114 Also use the original fallback designed for older window managers. 2018-04-02 20:21:32 -05:00
Brandon Wright 0a5e65dc06 Add workarounds based on window manager for override-redirect. 2018-04-02 20:01:14 -05:00
gblues 9bc5a15c2d Enable pads to register in any order
== DETAILS

Whereas the last commit had a hack (that disabled the wiimote
driver in the process), this has.. well, a *different* hack that
allows pads to register in any order.

Note that due to the initialization routines, the gamepad will still
likely always get slot 0. Not sure if this can be overridden via config
or not.

== TESTING

Tested locally with GC adapter
2018-04-01 18:52:26 -07:00
Twinaphex ab00d587d8 Merge pull request #6510 from bearoso/master
Add back override-redirect to allow G-SYNC
2018-04-02 01:57:27 +02:00
Twinaphex 19a6375ec6 Merge pull request #6509 from Dwedit/master
Make RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE work on the secondary core
2018-04-02 01:56:43 +02:00
Dwedit a275242aef C89 compliance and line spacing rules 2018-04-01 17:54:03 -05:00
Brandon Wright 8356300c3e Apply the same fix to xegl_ctx.c 2018-04-01 17:47:47 -05:00
Brandon Wright 64686d8106 Set override-redirect on true fullscreen, but after window is mapped. 2018-04-01 17:47:27 -05:00
Dwedit 78c8a9b197 Make RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE work on the secondary core 2018-04-01 17:34:54 -05:00
twinaphex 015facee70 (XMB) Cleanups 2018-04-01 18:23:37 +02:00
gblues 2cf89feb86 Code clean-up
== DETAILS

Now that I have a working implementation, it's time to tidy up a bit:

- there was no need for the HID subsystem's object data to have a reference
  to the global hid state (since it's global), so removed it.
- refactored the users of that member to use the global state, defining
  reusable macros.
- reorganized the information in *.h files
- removing the hid state also made the constructor changes to the hid driver
  unneeded, so I reverted those changes.

== TESTING
Confirmed clean build. Haven't tested the build yet to make sure everything
still works, though.
2018-03-31 22:25:30 -07:00
alphanu1 950719797d Merge pull request #32 from alphanu1/alphanu1-patch-33
Add files via upload
2018-04-01 00:34:36 +01:00
alphanu1 cf23ff7a88 Add files via upload
Fixes, merged changes and additions to remove extra files.
2018-04-01 00:29:46 +01:00
alphanu1 ca55f3198e Delete video_crt_linux.h
outdated, not needed
2018-04-01 00:27:04 +01:00
alphanu1 79eb3e6b8c Delete video_crt_win.h
outdated, not needed
2018-04-01 00:26:44 +01:00
alphanu1 752eddbb95 Delete video_crt_linux.c
outdated, not needed
2018-04-01 00:26:24 +01:00
alphanu1 b676167ef6 Delete video_crt_win.c
outdated, not needed
2018-04-01 00:26:06 +01:00
alphanu1 d5085c8831 Merge pull request #31 from alphanu1/alphanu1-patch-32
Add files via upload
2018-04-01 00:24:50 +01:00
alphanu1 dd78622d30 Add files via upload
added files for compile
2018-04-01 00:24:26 +01:00
alphanu1 5d7e31d2f3 Merge pull request #30 from alphanu1/alphanu1-patch-31
Add files via upload
2018-04-01 00:23:32 +01:00
alphanu1 6a6150bb03 Add files via upload
Removed obsolete/unneeded .o
2018-04-01 00:23:05 +01:00
Twinaphex 28b9a38d7d Merge pull request #6504 from Dwedit/secondary_core_bug_fix
Fixed initializing controller port map.
2018-03-31 21:09:02 +02:00
Dwedit 80b8410b0f Forgot to initialize controller port map, this caused VBA-M to crash when creating the secondary core. Now fixed. 2018-03-31 12:15:14 -05:00
alphanu1 a0c9ef55cb Merge pull request #29 from alphanu1/alphanu1-patch-30
Add files via upload
2018-03-31 15:19:03 +01:00
alphanu1 9524203051 Add files via upload
Amended braces and function calls.
2018-03-31 15:17:55 +01:00
alphanu1 38fc89fbfc Merge pull request #28 from alphanu1/alphanu1-patch-29
Add files via upload
2018-03-31 15:16:34 +01:00
alphanu1 64ebf62959 Add files via upload
Amended tabbing with spaces
2018-03-31 15:15:35 +01:00
Twinaphex 611cc52661 Merge pull request #6500 from Tatsuya79/master
XMB Right Thumbnail rework.
2018-03-31 14:13:25 +02:00
Twinaphex f7fa5844f2 Merge pull request #6502 from Dwedit/master
Runahead: Stop savestate transmission in netplay
2018-03-31 11:36:46 +02:00
gblues 39e4167df6 Start work on DualShock 3 driver
== DETAILS

The WiiU GC adapter is working!

Next up: DualShock 3

I have the skeleton of the driver started, need to work out the
activation packet.

== TESTING

The DS3 driver is broke as hell right now.
2018-03-30 23:00:14 -07:00
Dwedit 6b77a66298 get rid of the unnecessary typedef 2018-03-31 00:55:37 -05:00
Dwedit 15472eb184 Stop savestate transmission in netplay 2018-03-31 00:45:20 -05:00
Twinaphex a869cb5a7d Merge pull request #6501 from Dwedit/fast_savestate_flag_2
Fast Savestate and Hard Audio Disable flags in RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE
2018-03-31 04:54:09 +02:00
twinaphex 9164bcc244 Add HAVE_RUNAHEAD to Android 2018-03-31 04:22:18 +02:00
gblues d65bd90e67 Fix GC pad button mapping 2018-03-30 18:57:34 -07:00
Dwedit 36d33deb30 Add message about load state expected to succeed. 2018-03-30 20:41:52 -05:00
Dwedit ec6d6e58d6 Fast Savestate and Hard Audio Disable flags 2018-03-30 20:35:52 -05:00
Tatsuya79 0c0cad8630 XMB Right Thumbnail rework. 2018-03-30 23:53:16 +02:00
twinaphex cf4ab13281 Revert "Silence some Clang static analyzer warnings"
This reverts commit 2c882a01c1.
2018-03-30 19:28:37 +02:00
twinaphex b24433a9f2 Hack - make diagonal 5.0f for mobile, 6.5f for desktop 2018-03-30 16:05:45 +02:00
twinaphex 92b46a8275 Some cleanups 2018-03-30 15:50:27 +02:00
Twinaphex 0ff5631649 Merge pull request #6499 from Tatsuya79/patch-1
Make MUI auto dpi a bit bigger for low dpi phones
2018-03-30 15:47:17 +02:00
Tatsuya79 74d4e6043a Make MUI auto dpi a bit bigger for low dpi phones 2018-03-30 15:44:39 +02:00
twinaphex 8acc085dec (input_overlay.c) Get rid of some forward declarations 2018-03-30 13:57:50 +02:00
twinaphex 94254e4c79 (IOHIDManager) Cleanups 2018-03-30 11:49:25 +02:00
Twinaphex 86bfd8f4fc Merge pull request #6497 from ceb33/master
fix to have a deterministic HID device registration
2018-03-30 11:40:24 +02:00
ceb33 c6d6fc7098 fix memory leak 2018-03-30 11:00:38 +02:00
ceb33 82e2cc7c73 set hid device registration deterministic (sorting by ascending location_id), this solve the issue where game with same vid and pid where sometime swapped by the OS 2018-03-30 10:43:54 +02:00
gblues 5060c2aac4 More fixes, GC pad kinda sorta works
== DETAILS

- Added a new method to the joypad_connection_t interface for
  getting a single button
- wired everything into the hidpad driver
- for testing purposes, hacking the top-level joypad driver
  so that kpad isn't used
- add a new RARCH_LOG_BUFFER method to verbosity for logging the
  contents of a binary buffer (useful for writing/debugging pad drivers)
- fix a few bugs in the wiiu GC pad driver

The button mapping isn't quite right, and I'm not sure what's
going wrong.
2018-03-29 23:37:11 -07:00
gblues 89c1ba7929 Keep HID pads from clobbering gamepad/wiimotes
== DETAILS

Trying to do weird pad math just wasn't working so I bit the bullet and just
let it allocate all 16 pads in the slot list, then just mark 0-4 as
connected so that the slot allocator would start at 5.

I can see it detect the pad, but no idea if it works. Out of time for
today.
2018-03-29 23:37:11 -07:00
gblues 1eea48d0c8 Fix crash on exit bug
== DETAILS

Turns out freeing memory that's already been freed is.. bad.

Fix two double-free instances; one due to over-freeing and the other
due to wrong order-of-operations causing a double free.

Also updated logging a little.

== TESTING

The GC adapter still clobbers slot 0, but the "emergency exit" sequence
works to quit RA cleanly.
2018-03-29 23:37:11 -07:00
gblues 6b43defc98 Less verbose logging 2018-03-29 23:37:11 -07:00
gblues 8a4c5086fb Finish HID implementation for WiiU GCA adapter
== DETAILS

(I think)

- Uncomment the call in the read loop to start feeding packets to the
  driver
- implement the GCA packet driver
- implement the pad interface
- fix indentations in GCA driver

== TESTING
Compiles. Haven't tested yet.
2018-03-29 23:37:11 -07:00
gblues 180d6a28bf Fix up HID device driver initialization
== DETAILS
Turns out the cause of the crash was a bad cast, resulting in a
function call to nowhere.

Also, I think the DSI exception handler only works on the primary core;
when this was happening in the background thread, I got a black
screen error instead.

Next up: finishing up the GCA driver.
2018-03-29 23:37:11 -07:00
gblues dc6f4c23ed Rename hid_driver_instance members for clarity 2018-03-29 23:37:11 -07:00
gblues 4b9d5c0ab7 Start implementing "detach" code path
== DETAILS
We're at a point where we need to do more than just
clean up a local data structure, so I've started
implementing the "detach" part of the code so that
everything gets cleaned up properly.

Also, added error handling inside the polling
thread.

== TESTING

Have not tested yet.
2018-03-29 23:37:11 -07:00
gblues 0100d58ffb WIP: evolve driver implementation
== DETAILS

I've created the concept of a hid_driver_instance_t which is basically
a central place to store the hid pad driver, hid subsystem driver,
the pad list, and the instance data for the above in a central location.

The HID pad device drivers can use it to perform HID operations in a
generic manner.

This is more-or-less a pause point so I can catch up with upstream.

== TESTING

Haven't tested this yet. Compiles without warnings though!
2018-03-29 23:37:11 -07:00
gblues 41ce8853d7 Add name for hid device; implement detect
== DETAILS

- detect() methods in device_* files now check for VID/PID
  instead of just returning false
- add "name" field on hid device, mainly for logging purposes

== TESTING
Verified my WiiU GC adapter detected properly
2018-03-29 23:37:11 -07:00
gblues ae19eed00f implement hid device search 2018-03-29 23:37:11 -07:00
i30817 7e43db9cf1 fix scanner skipping directories with dots 2018-03-30 06:15:10 +01:00
Brad Parker ecd42f1aa8 C89 buildfix, correct spacing 2018-03-29 22:15:16 -04:00
Twinaphex 05e34654c6 Update CHANGES.md 2018-03-30 03:03:03 +02:00
Twinaphex 50f19630bd Update CHANGES.md 2018-03-30 03:00:58 +02:00
twinaphex 58df2e6427 update 2018-03-30 02:50:18 +02:00
Twinaphex 12bf69fa29 Update CHANGES.md 2018-03-30 02:44:06 +02:00
Twinaphex 33d9eee436 Update CHANGES.md 2018-03-30 02:41:40 +02:00
Twinaphex e8a77e6b91 Update CHANGES.md 2018-03-30 02:41:09 +02:00
Twinaphex d8787ef805 Update CHANGES.md 2018-03-30 02:37:07 +02:00
twinaphex 008900e73d (D3D11/D3D12) Fix crashes with completely black or white thumbnail
textures in XMB
2018-03-30 02:30:56 +02:00
Twinaphex be5e0dfb1f Merge pull request #6493 from bearoso/master
Prioritize _NET_WM_STATE_FULLSCREEN in true fullscreen mode
2018-03-30 01:52:45 +02:00
Brandon Wright 3bbff3c689 Use _NET_WM_STATE_FULLSCREEN as a first measure, only falling back to override-redirect when not supported. 2018-03-29 17:13:51 -05:00
Twinaphex 9ca3d40018 Merge pull request #6491 from bearoso/master
Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR
2018-03-29 22:59:39 +02:00
Twinaphex 3c3f1a2661 Merge pull request #6481 from alfrix/right_thumb
Right thumbnail auto size
2018-03-29 22:55:08 +02:00
twinaphex ef039c2c08 Cleanups 2018-03-29 22:39:41 +02:00
Brandon Wright 5da1aa0af7 Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR.
Note: KWin doesn't bypass compositor on override-redirect windows, so enabling windowed fullscreen is necessary.
2018-03-29 15:20:14 -05:00
Twinaphex dca622b4a8 Merge pull request #6490 from Dwedit/runahead_submission_4
more cleanup, remove malloc_zero, remove free_ptr
2018-03-29 21:14:27 +02:00
Dwedit dd392dcdfb Remove malloc_zero, replace with calloc
Replace free_ptr with FREE macro
2018-03-29 13:22:20 -05:00
twinaphex d04d1c0214 (Runahead) Fix for mingw as suggested by Dwedit 2018-03-29 20:01:34 +02:00
twinaphex 1103f4f630 (input_overlay.c) Cleanups 2018-03-29 19:43:04 +02:00
twinaphex 54636ea5f3 (OSX PPC) Define HAVE_RUNAHEAD 2018-03-29 19:35:26 +02:00
alfrix 647abd6aba Buildfix 2018-03-29 14:07:22 -03:00
alphanu1 1377b2e7cf Merge pull request #27 from alphanu1/alphanu1-patch-28
Add files via upload
2018-03-29 17:56:56 +01:00
alphanu1 d06386d0a5 Add files via upload
Variables removed from headers.
2018-03-29 17:54:46 +01:00
alphanu1 0fe838bfcd Merge pull request #26 from alphanu1/alphanu1-patch-27
Add files via upload
2018-03-29 17:46:24 +01:00
alfrix 0777a6d625 Do not draw the thumbnail if there is no space available 2018-03-29 13:45:54 -03:00
alfrix 5076569c81 Limit right thumb width 2018-03-29 13:45:54 -03:00
twinaphex 25e99ba75b Cleanups 2018-03-29 18:41:19 +02:00
alphanu1 6d536974d8 Add files via upload
Removed comments
2018-03-29 17:37:39 +01:00
twinaphex 65909fd1db free_file no longer necessary 2018-03-29 18:36:53 +02:00
twinaphex 8703ad8374 Get rid of free_str 2018-03-29 18:29:25 +02:00
Twinaphex 2db0c21f52 Fix C11 typedef redefinition issues 2018-03-29 18:10:28 +02:00
twinaphex e85f11ea38 (runahead) Remove unused variable 2018-03-29 18:05:52 +02:00
Twinaphex 425e1d9043 (OSX) Define HAVE_RUNAHEAD 2018-03-29 18:04:15 +02:00
twinaphex 8819b2a2f6 (MSVC 2005/2010/2013/2015/2017) Add HAVE_RUNAHEAD 2018-03-29 18:02:18 +02:00
twinaphex adb2274fc6 - Enable HAVE_RUNAHEAD for MSVC 2003
- Remove some unreferenced labels
2018-03-29 17:55:06 +02:00
Twinaphex 254932af04 Merge pull request #6488 from Tatsuya79/master
XMB Left thumb dynamic positioning and scaling.
2018-03-29 17:47:29 +02:00
twinaphex 0712c0ba99 Fix call to filestream_write to filestream_write_file 2018-03-29 17:45:25 +02:00
twinaphex 67c3fd88f4 Buildfixes - wrong function names were used 2018-03-29 17:35:28 +02:00
Twinaphex 039820f367 Merge pull request #6487 from Dwedit/runahead_submission_3
Runahead cleanup
2018-03-29 17:17:22 +02:00
Dwedit cbc18c74ea resolve conflicts 2018-03-29 09:52:14 -05:00
Tatsuya79 8859fa0213 XMB Left thumb dynamic positioning and scaling. 2018-03-29 16:39:38 +02:00
Dwedit 77f2b7d326 Replace the file handling code from secondary_core.c with the file streams
Hide secondary instance menu item if dynamic libraries are not supported
Remove unlink_utf8 stuff
Fix a compiler warning
2018-03-29 09:37:35 -05:00
twinaphex 77f7e1da8c Make menu_driver_load_image a static function 2018-03-29 16:27:19 +02:00
twinaphex a8b810760b (runahead) Get rid of a bunch of unnnecessary forward declarations 2018-03-29 16:18:45 +02:00
twinaphex b4859cde59 Update copyright attributions as said to PR OP 2018-03-29 16:12:56 +02:00
Twinaphex abdad9bc16 Merge pull request #6471 from alfrix/left_thumb
Left thumbnails
2018-03-29 16:12:32 +02:00
twinaphex c5ec1885f2 Don't use malloc.h anymore 2018-03-29 15:52:49 +02:00
twinaphex 40594a3059 Buildfix 2018-03-29 15:51:20 +02:00
twinaphex 76b025d70e malloc.h not available on OSX 2018-03-29 15:49:39 +02:00
twinaphex 4347517604 Buildfixes 2018-03-29 15:46:39 +02:00
twinaphex ca7c374303 Fix OSX compilation 2018-03-29 15:41:02 +02:00
alfrix a84facf636 Add Left Thumbnails
Fix behaviour when right thumb is off and use as fallback in filebrowser
Remove update_left_thumbnail_path
Fix dual image in imageviewer
Remove xmb_left_thumbnails_ident
Requested Changes
Fix last warning and button not switching thumb
Better scaling
Limit vertical size without changing position
Change thumb cycling behaviour
Remove update_left_thumbnail_image it was causing problems
2018-03-29 10:38:23 -03:00
twinaphex c041470bb0 Add HAVE_RUNAHEAD ifdef 2018-03-29 15:38:22 +02:00
twinaphex 6e662a8064 (D3D12) Buildfix 2018-03-29 15:29:36 +02:00
twinaphex ef5830b233 Silence some CXX_BUILD warnings 2018-03-29 15:27:30 +02:00
twinaphex 4372db491a Cleanup some warnings for C89_BUILD 2018-03-29 15:20:43 +02:00
twinaphex 1b0420807b (Griffin/MSVC) buildfixes 2018-03-29 15:15:47 +02:00
twinaphex 2bdfd2e1d0 (Runahead) Cleanups / style nits / etc. 2018-03-29 15:13:33 +02:00
Twinaphex eeb2a0a934 Merge pull request #6484 from Dwedit/runahead_submission
Runahead system
2018-03-29 14:46:04 +02:00
twinaphex 3fe6ecbce7 More static analyzer warning fixes 2018-03-29 14:19:24 +02:00
twinaphex 2c882a01c1 Silence some Clang static analyzer warnings 2018-03-29 14:11:52 +02:00
bparker06 265b0560b3 travis: disable all d3d versions for windows 2018-03-28 20:16:59 -04:00
Dwedit bc3d0b2acd Fix some static declarations 2018-03-28 17:41:45 -05:00
Dwedit ff0a2d4f57 Add files to the makefile 2018-03-28 17:32:37 -05:00
Dwedit 361152000d Added the missing file 2018-03-28 17:14:20 -05:00
Dwedit f5e0346fc2 Runahead system 2018-03-28 14:22:07 -05:00
twinaphex 2143540c8c (MSVC 2013/2015/2017) Add HAVE_CHEEVOS support 2018-03-28 18:33:31 +02:00
twinaphex 994ca6b3f8 Enable HAVE_CHEEVOS for MSVC 2003 target too 2018-03-28 18:07:31 +02:00
twinaphex 163be3ccfd (vulkan_common.c) Prevent some more collissions in the future 2018-03-28 17:41:04 +02:00
Twinaphex 02ce39869c Merge pull request #6480 from Dwedit/fix_d3d_duplicate
Rename "cached_device" to "cached_device_d3d11" to avoid a name conflict on griffin builds
2018-03-28 17:38:11 +02:00
Dwedit 2c1cb6cf55 Rename "cached_device" to "cached_device_d3d11" avoid a name conflict on griffin builds 2018-03-28 10:33:37 -05:00
Twinaphex 8c6f05e715 Merge pull request #6479 from Dwedit/fix_command_line
Fix invalid long command line options causing infinite loop on Windows (issue #6477)
2018-03-28 17:19:46 +02:00
Dwedit 86d24a0fc4 Fix invalid long command line options causing infinite loop on Windows (issue #6477) 2018-03-28 10:08:57 -05:00
Twinaphex 55157506a8 Merge pull request #6478 from alfrix/polish
Update Polish translation (DEX357)
2018-03-28 17:08:27 +02:00
alfrix d4558774df Update Polish translation (DEX357) 2018-03-28 11:55:20 -03:00
twinaphex e71f56d4a3 Update libretro-common 2018-03-28 16:45:05 +02:00
twinaphex 89e912087b Put RARCH_INTERNAL ifdef around this 2018-03-28 16:41:37 +02:00
twinaphex d17eee9cca We can actually disable DPI override by default now 2018-03-28 16:33:19 +02:00
twinaphex 5a7c37b819 Revert "(OpenSL) Fix issues with cores using threaded audio - audio thread"
This reverts commit 54708a944a.
2018-03-28 16:26:53 +02:00
Twinaphex 942121462d Merge pull request #6463 from Tatsuya79/patch-2
MUI New dpi calculation. (needs improvement)
2018-03-28 16:22:52 +02:00
twinaphex 167b977c4d Fix some build errors with MSVC 2003/2005 cores 2018-03-28 16:22:35 +02:00
twinaphex bb86387986 Re-enable HAVE_CHEEVOS for MSVC 2010 2018-03-28 14:57:27 +02:00
Twinaphex c30fd2a035 Merge pull request #6475 from meleu/patch-18
CHANGES: cheevos for NeoGeo, CPS1, CPS2 and CPS3
2018-03-28 12:44:13 +02:00
meleu 51f0e6f9d3 CHANGES: cheevos for NeoGeo, CPS1, CPS2 and CPS3
The fbalpha core supports cheevos for these drivers.

Thanks to @barbudreadmon for adding this support ;)
2018-03-28 00:30:01 -03:00
twinaphex d8e382c585 (Cheevos) Take out cheevos support for MSVC 2010 again, CORO_YIELD
macro does not work with MSVC 2010
2018-03-28 01:28:15 +02:00
alphanu1 d8c5718a6e Update README.md
incorrect spelling
2018-03-27 23:01:09 +01:00
alphanu1 e8d90500de Merge pull request #25 from alphanu1/alphanu1-patch-26
Add files via upload
2018-03-27 20:20:04 +01:00
alphanu1 46500e119c Add files via upload
native switch fix
2018-03-27 20:18:31 +01:00
twinaphex 1cfc8a5fc8 (Coverity) Fix some memory leaks 2018-03-27 17:03:36 +02:00
twinaphex 923ab3b6f4 (DRM Ctx) Buildfix 2018-03-27 14:19:36 +02:00
alphanu1 fc173eafab Update README.md 2018-03-27 00:12:46 +01:00
alphanu1 7f3b2474a9 Update README.md 2018-03-27 00:08:59 +01:00
alphanu1 9ce592b648 Update README.md 2018-03-26 23:58:54 +01:00
alphanu1 e55323daa9 Merge pull request #23 from alphanu1/alphanu1-patch-24
Add files via upload
2018-03-26 23:52:28 +01:00
alphanu1 b1fca8fc7e Add files via upload
Removed debug info
2018-03-26 23:51:40 +01:00
alphanu1 9cf0f19c12 Merge pull request #22 from alphanu1/alphanu1-patch-23
Add files via upload
2018-03-26 23:50:47 +01:00
alphanu1 d7d1d1d5b8 Add files via upload
Fixed errors after variable changes
2018-03-26 23:49:33 +01:00
alphanu1 cf422226e6 Merge pull request #21 from alphanu1/alphanu1-patch-22
Add files via upload
2018-03-26 21:25:36 +01:00
alphanu1 316e1ebf66 Add files via upload
Missing var in Linux placeholder
2018-03-26 21:25:16 +01:00
alphanu1 94ea7dde50 Merge pull request #20 from alphanu1/alphanu1-patch-21
Add files via upload
2018-03-26 21:22:38 +01:00
alphanu1 0ef6455c61 Add files via upload
Windows / Linux deps fix
2018-03-26 21:22:19 +01:00
alphanu1 4932b95777 Merge pull request #19 from alphanu1/alphanu1-patch-20
Add files via upload
2018-03-26 21:14:55 +01:00
alphanu1 80e295505e Add files via upload 2018-03-26 21:14:27 +01:00
alphanu1 e9ccb86b09 Merge pull request #18 from alphanu1/alphanu1-patch-19
Add files via upload
2018-03-26 21:08:01 +01:00
alphanu1 2ed38a8481 Add files via upload
Includes Linux place holder
2018-03-26 21:07:22 +01:00
alphanu1 06efb30c46 Merge pull request #17 from alphanu1/alphanu1-patch-18
Add files via upload
2018-03-26 21:03:05 +01:00
alphanu1 2243d7641b Add files via upload
Windows driver
2018-03-26 21:02:50 +01:00
alphanu1 62a0d378dd Merge pull request #16 from alphanu1/alphanu1-patch-17
Add files via upload
2018-03-26 21:02:09 +01:00
alphanu1 ce2d4af103 Add files via upload
Added Linux place holder
2018-03-26 21:01:13 +01:00
alphanu1 7e64052dc8 Merge pull request #14 from alphanu1/alphanu1-patch-16
Add files via upload
2018-03-26 20:29:57 +01:00
alphanu1 024b23aa2c Add files via upload 2018-03-26 20:29:34 +01:00
alphanu1 b2d45beb10 Merge pull request #13 from alphanu1/alphanu1-patch-15
Add files via upload
2018-03-26 20:24:38 +01:00
alphanu1 3b9036cc79 Add files via upload
Requested changes
2018-03-26 20:22:35 +01:00
alphanu1 a44f4d1489 Add files via upload
Change requests
2018-03-26 18:15:18 +01:00
Twinaphex 4b3c37494a Merge pull request #6470 from aliaspider/master
D3D11: hwrender: add support for cache_context.
2018-03-26 18:47:37 +02:00
aliaspider 97ecba8575 D3D11: hwrender: add support for cache_context. 2018-03-26 17:44:08 +01:00
alphanu1 dcc416ca46 Update README.md 2018-03-26 17:41:09 +01:00
alphanu1 d919e93013 Update README.md 2018-03-26 17:39:51 +01:00
alphanu1 e6c1704789 Merge pull request #12 from alphanu1/alphanu1-patch-14
Add files via upload
2018-03-26 17:23:38 +01:00
alphanu1 f6ab07f3fc Add files via upload
Changed variable names and comments
2018-03-26 17:21:37 +01:00
alphanu1 dd8beb48b6 Add files via upload
Changed variable names
2018-03-26 17:19:35 +01:00
alphanu1 51276a682f Add files via upload
Changed variable names
2018-03-26 17:18:43 +01:00
alphanu1 ff68b9244d Merge pull request #11 from alphanu1/alphanu1-patch-13
Add files via upload
2018-03-26 17:17:57 +01:00
alphanu1 540b15d6ef Add files via upload
Changed variable names
2018-03-26 17:17:23 +01:00
alphanu1 43205baa9a Update README.md 2018-03-26 16:20:22 +01:00
alphanu1 7f6f95c215 Merge pull request #10 from alphanu1/alphanu1-patch-11
CRT
2018-03-26 16:09:28 +01:00
alphanu1 b30aca2d6d CRT 2018-03-26 16:08:29 +01:00
alphanu1 af7f1da9fb Update README.md 2018-03-26 15:54:23 +01:00
alphanu1 670216d021 Update README.md 2018-03-26 15:48:53 +01:00
alphanu1 2783a26b97 Merge pull request #9 from alphanu1/alphanu1-patch-10
CRT
2018-03-26 15:40:43 +01:00
alphanu1 71578a43f6 CRT 2018-03-26 15:40:17 +01:00
alphanu1 b297f391ad Merge pull request #8 from alphanu1/alphanu1-patch-9
CRT
2018-03-26 15:37:12 +01:00
alphanu1 2967283b29 CRT 2018-03-26 15:36:53 +01:00
alphanu1 8e5a00d66b Merge pull request #7 from alphanu1/alphanu1-patch-8
CRT SwitchRes
2018-03-26 15:36:18 +01:00
alphanu1 b33cb14ba0 CRT SwitchRes 2018-03-26 15:35:30 +01:00
alphanu1 56bc1757ed CRT SwitchRes 2018-03-26 15:07:46 +01:00
alphanu1 8ce7703970 Merge pull request #5 from alphanu1/alphanu1-patch-5
CRT SwitchRes
2018-03-26 15:07:04 +01:00
alphanu1 99645e2cd7 CRT SwitchRes 2018-03-26 15:06:39 +01:00
alphanu1 2fc350828c Merge pull request #4 from alphanu1/alphanu1-patch-4
CRT SwitchRes
2018-03-26 15:05:38 +01:00
alphanu1 d207986a74 CRT SwitchRes 2018-03-26 15:05:12 +01:00
alphanu1 7eec1f3a24 Merge pull request #3 from alphanu1/alphanu1-patch-3
CRT SwitchRes
2018-03-26 15:04:10 +01:00
alphanu1 635b3b7670 CRT SwitchRes 2018-03-26 15:03:46 +01:00
alphanu1 8eb34f2544 Merge pull request #2 from alphanu1/alphanu1-patch-2
CRT SwitchRes
2018-03-26 15:01:57 +01:00
alphanu1 030b11c372 CRT SwitchRes 2018-03-26 15:01:09 +01:00
alphanu1 697e158d7a Merge pull request #1 from alphanu1/master-1
Add files via upload
2018-03-26 14:56:53 +01:00
alphanu1 9d23af5299 Add files via upload 2018-03-26 14:56:23 +01:00
Twinaphex a32d7d974c Update CHANGES.md 2018-03-26 00:40:48 +02:00
Twinaphex 1ff798b8a5 Merge pull request #6464 from aliaspider/master
add experimental D3D11 hwrender support.
2018-03-26 00:24:38 +02:00
aliaspider 3d96cacd71 add experimental D3D11 hwrender support. 2018-03-25 23:14:14 +01:00
aliaspider 88d1c1fdca msvc build fix. 2018-03-25 23:11:31 +01:00
twinaphex 826a7d199a Remove useless struct 2018-03-25 19:16:39 +02:00
Tatsuya79 8ecba8b2a3 MUI New dpi calculation. 2018-03-25 18:40:22 +02:00
twinaphex aa5525f670 Move core_len/core_buf to menu_handle_t 2018-03-25 17:35:46 +02:00
Twinaphex a130dce708 Update CHANGES.md 2018-03-25 17:09:51 +02:00
Twinaphex 814810aeaf Merge pull request #6462 from theheroGAC/patch-29
Fix and update msg_hash_it.h
2018-03-25 17:07:52 +02:00
twinaphex a2295af556 Make these variables a part of menu_handle_t 2018-03-25 17:02:30 +02:00
theheroGAC 30074b4404 Update msg_hash_it.h 2018-03-25 16:47:31 +02:00
Twinaphex 8a63a0ac52 Update CHANGES.md 2018-03-25 14:47:04 +02:00
twinaphex ae4b604a6f Update 2018-03-25 12:17:05 +02:00
Twinaphex 8bc04f90fe Merge pull request #6456 from fr500/master
Fixes #6453
2018-03-25 12:16:06 +02:00
Twinaphex ad37bc530e Merge pull request #6460 from yoshisuga/ios_config_fix
[iOS]: fixed configuration file path
2018-03-25 12:15:53 +02:00
Yoshi Sugawara baf7aa239d [iOS]: fixed configuration file path to be the retroarch cfg file instead of the config path 2018-03-24 23:47:24 -10:00
Twinaphex 20a73209b6 Merge pull request #6457 from Tatsuya79/patch-1
XMB scale the mouse cursor too.
2018-03-25 09:32:05 +02:00
radius 94e4357fd4 return early in case path is null and move vars to the top 2018-03-24 19:11:07 -05:00
Tatsuya79 1aaaa116d1 XMB scale the mouse cursor too. 2018-03-25 00:48:05 +01:00
twinaphex 02bf41a686 (task_content.c) Minor cleanup 2018-03-25 00:14:35 +01:00
twinaphex 3c6490d828 Update 2018-03-25 00:09:57 +01:00
Twinaphex b1c054e9a5 Merge pull request #6455 from Tatsuya79/master
Fix XMB thumbnail height limit again.
2018-03-24 23:58:10 +01:00
radius 51c9ac4f7a fix crash related to achievements on non-fullpath cores 2018-03-24 17:52:23 -05:00
Tatsuya79 35ae907899 Fix XMB thumbnail height limit again. 2018-03-24 23:22:42 +01:00
Twinaphex 75d2813d47 Merge pull request #6452 from meepingsnesroms/master
Add PokeMini index for 3ds
2018-03-24 20:27:44 +01:00
meepingsnesroms 9c47e24a84 Add PokeMini index for 3ds 2018-03-24 12:10:54 -07:00
Twinaphex ce40bc6446 Merge pull request #6451 from Tatsuya79/master
Fix XMB thumbnail height limit.
2018-03-24 20:05:08 +01:00
Tatsuya79 a32880fd22 Fix XMB thumbnail height limit. 2018-03-24 18:43:15 +01:00
twinaphex e4b955d4d4 Fix sample count reporting 2018-03-24 16:29:39 +01:00
Twinaphex eaf1e1474e Merge pull request #6450 from Tatsuya79/patch-1
Update CHANGES.md
2018-03-24 16:12:28 +01:00
twinaphex df58d5a7d9 Fix C89_BUILD 2018-03-24 16:11:10 +01:00
Tatsuya79 07aa350d7e Update CHANGES.md 2018-03-24 15:47:44 +01:00
twinaphex 875450e228 Statistics - add sample count 2018-03-24 15:42:45 +01:00
twinaphex 33d99fe75b Add fps / ms metrics to statistics 2018-03-24 15:39:02 +01:00
Twinaphex 1818552aeb Merge pull request #6449 from markwkidd/core-association-warning
Core association warning
2018-03-24 15:19:59 +01:00
Twinaphex ea1df738a7 Update CHANGES.md 2018-03-24 15:18:47 +01:00
Twinaphex 131418e371 Update CHANGES.md 2018-03-24 15:18:10 +01:00
markwkidd 007829654e cast and dereference pointer without compiler warn 2018-03-24 10:16:34 -04:00
markwkidd b984abb371 pass address of unsigned index 2018-03-24 10:15:41 -04:00
twinaphex defcde0d1e (OpenSL) buf_count - make sure it can never be lower than 2 (with
current code) - was an issue when setting audio latency to much
lower values
2018-03-24 14:50:59 +01:00
twinaphex 54708a944a (OpenSL) Fix issues with cores using threaded audio - audio thread
would freeze waiting for a signal while toggling the menu
2018-03-24 14:48:58 +01:00
twinaphex 1fb7d14b36 Add audio statistics 2018-03-24 12:38:25 +01:00
twinaphex 9343eacc0a Create public function compute_audio_buffer_statistics 2018-03-24 12:25:52 +01:00
twinaphex 647f1a48a6 Add max size to statistics 2018-03-24 12:08:43 +01:00
twinaphex 9b8713aebd Fix Coverity defects 2018-03-24 11:59:01 +01:00
twinaphex 9057ffbde4 use boolean.h instead of stdbool.h 2018-03-24 11:45:50 +01:00
twinaphex 70f598c619 Use boolean.h instead of stdbool.h 2018-03-24 11:41:17 +01:00
Twinaphex 473d978d78 Merge pull request #6444 from Dwedit/original_suggestion
Functions to suspend and resume audio and video, and environment function for core to query status of enabled/disabled audio and video
2018-03-24 09:54:47 +01:00
Twinaphex 2b1979c3b7 Merge pull request #6447 from markwkidd/patch-1
revert change to core association to fix regression
2018-03-24 09:54:06 +01:00
markwkidd 512dc7fef5 revert change to core association to fix regression 2018-03-23 22:17:43 -04:00
Dwedit 3297900543 Add the early return to audio_driver_sample_batch 2018-03-23 17:22:00 -05:00
Dwedit fbd4900031 Add documentation for RETRO_ENVIRONMENT_GET_AUDIO_VIDEO_ENABLE to the header file 2018-03-23 16:33:51 -05:00
Dwedit 575265ff06 Remove early return from audio_driver_flush 2018-03-23 14:46:32 -05:00
Dwedit 7deeb6d2fa Functions to enable and disable audio and video, and an environment function to query status of audio and video enables 2018-03-23 14:12:05 -05:00
twinaphex 4d1b4f905f Start adding OSD statistics - doesn't work yet for SDL2/SDL 2018-03-23 17:43:49 +01:00
twinaphex 0ece3d8397 Start implementing frame_time/frame_count to video_info 2018-03-23 13:30:30 +01:00
twinaphex 85d3be1245 Update libretro-common 2018-03-23 11:17:56 +01:00
Twinaphex e179a39491 Merge pull request #6442 from yoshisuga/small_fixes
[iOS]: Some small fixes
2018-03-23 10:02:39 +01:00
Yoshi Sugawara c44dd39dd6 Fixed crash when opening content using "open in..", support for keyboard mapper 2018-03-22 22:43:20 -10:00
markwkidd e9822e0ac7 Update menu_cbs_ok.c (#6439) 2018-03-22 19:46:02 -04:00
Twinaphex 5c82ef3ee3 Merge pull request #6423 from markwkidd/playlist-core-reset
"reset associated core" feature for playlists
2018-03-22 21:40:19 +01:00
twinaphex be796566bc Add HAVE_CHEEVOS support for MSVC 2005 2018-03-22 20:45:35 +01:00
twinaphex f597fd7a11 Add HAVE_CHEEVOS support for MSVC 2010 2018-03-22 20:42:06 +01:00
markwkidd e373d82a58 cherry-pick menu code for core association reset 2018-03-22 13:27:37 -04:00
Twinaphex 0be2b76892 Update slang_process.cpp 2018-03-22 15:24:03 +01:00
twinaphex c318d05803 Fix buffer overlap - pointed out by @leo150, thanks 2018-03-22 15:22:17 +01:00
Twinaphex dac6f11547 Merge pull request #6435 from GregorR/netplay-device-availability-bug
Fix a bug in remembering device availability for netplay
2018-03-22 12:29:20 +01:00
Gregor Richards 06b402bc14 Fix a bug in remembering device availability for netplay
Really silly bug had netplay forgetting to unset device availability
when a client goes to spectator mode. As a consequence, in certain
configurations, later joins would automatically choose the wrong device,
and you'd have to manually specify a device to get the right one. This
fixes that.
2018-03-21 19:24:58 -04:00
Twinaphex 59bf897561 Merge pull request #6431 from meleu/patch-17
cheevos.c: getting the hash from ROM's filename
2018-03-21 20:33:18 +01:00
meleu d2d8f00b29 cheevos.c: getting the hash from ROM's filename
This is the method we'll use for arcade games.
2018-03-21 11:21:33 -03:00
Twinaphex c29ff4304c Merge pull request #6428 from GregorR/fix-appendconfig
Fix --appendconfig conflict with load order
2018-03-21 05:29:22 +01:00
Twinaphex 4fa50d14ea Merge pull request #6429 from orbea/snow
Fix apitrace shader compiler warning.
2018-03-21 05:28:59 +01:00
orbea 7526b12338 Fix apitrace shader compiler warning.
2418: message: major shader compiler issue 2: 0:3(311): warning: `atime' used uninitialized
  2418 @0 glCompileShader(shader = 27)
  2418: warning: 0:3(311): warning: `atime' used uninitialized
2018-03-20 17:39:33 -07:00
Gregor Richards ea85727b3c Fix --appendconfig conflict with load order
I'd previously changed the load order of command line options to make
overrides work with less hassle. I didn't notice --appendconfig, which,
as a where-is-the-config-file option, needs to come before config file
loading. This fixes that.
2018-03-20 18:48:51 -04:00
hizzlekizzle 813c7ad1f7 Merge pull request #6425 from vickychenglau/README.md-edits
Edited README.md for grammar and formatting
2018-03-20 08:36:01 -05:00
Vicky C Lau 7928c03e3c Edited for grammar and formatting 2018-03-20 00:54:23 -07:00
twinaphex 319d87cf6f Bump up version 2018-03-20 08:35:17 +01:00
Twinaphex ab672c4394 Merge pull request #6424 from fr500/staging
try to fix building SPIRV on android yet again
2018-03-20 08:03:56 +01:00
radius e9fdfd2334 try to fix building yet again 2018-03-20 01:46:30 -05:00
Andrés 8e3fb86115 Merge pull request #6421 from fr500/master
subsystem part 5: show subsystem roms within archives
2018-03-19 19:28:05 -05:00
radius caafe61f07 show subsystem roms within archives 2018-03-19 18:44:15 -05:00
twinaphex f78f5c27ce Try to silence more Coverity warnings 2018-03-19 14:18:39 +01:00
Twinaphex 719a3e52c7 Merge pull request #6400 from altiereslima/master
Update Translation (Portuguese Brazilian)
2018-03-19 13:51:09 +01:00
twinaphex 6bf011a700 Silence another warning 2018-03-19 12:25:56 +01:00
twinaphex 72dc03a1c6 Try to fix Coverity warnings 2018-03-19 06:58:36 +01:00
Twinaphex 62d2b9a54e Merge pull request #6417 from Tatsuya79/patch-1
xmb_scale_factor min limit to 20
2018-03-19 03:46:50 +01:00
Twinaphex a357198bda Merge pull request #6418 from bearoso/master
Fix multi-line text spacing in menus with Vulkan driver.
2018-03-19 03:46:35 +01:00
Brandon Wright eb6d04d430 With X context set vk.swapchain to VK_NULL_HANDLE when failing to create swapchain so Vulkan common functions don't try and use it and crash. 2018-03-18 19:31:25 -05:00
Andrés c7f070113a Merge pull request #6419 from fr500/master
reset retroarch.cfg
2018-03-18 19:06:37 -05:00
radius 9b022c5904 reset retroarch.cfg 2018-03-18 19:06:07 -05:00
Brandon Wright 1f472db2aa Fix multi-line text spacing in menus with Vulkan driver. 2018-03-18 18:57:24 -05:00
Tatsuya79 ac556e0b7c xmb_scale_factor min limit to 20 2018-03-18 23:05:57 +01:00
markwkidd 1354526345 fix whitespace typo 2018-03-18 16:43:20 -04:00
markwkidd 4312c11d31 demonstration of core association reset
fix .cfg:

tweak
2018-03-18 16:41:49 -04:00
Twinaphex adc4f27eb9 Merge pull request #6416 from fr500/staging
try to fix android compilation issues
2018-03-18 19:12:07 +01:00
Twinaphex 4d8d6478f4 Merge pull request #6415 from fr500/master
fix potential crash on task_push_http_transfer
2018-03-18 19:11:42 +01:00
radius fd9d8c9512 fix potential crash on task_push_http_transfer 2018-03-18 12:52:04 -05:00
radius eb1d3f612f try to fix android compilation issues 2018-03-18 11:55:54 -05:00
Andrés a8fc4b204a Merge pull request #6413 from fr500/staging
remove task_push_http_transfer_raw, encode before sending data to the…
2018-03-18 11:13:03 -05:00
Twinaphex 3e3b24bbaf Merge pull request #6414 from bearoso/master
Fix X11 Vulkan bug from Wayland driver.
2018-03-18 04:41:32 +01:00
Brandon Wright e8de264b75 Fix X11 Vulkan bug from Wayland driver. 2018-03-17 19:45:01 -05:00
Twinaphex 8f0c94a322 Merge pull request #6412 from fr500/master
Fix #6411
2018-03-17 22:47:19 +01:00
radius 05b6c4eafa update CHANGES.md 2018-03-17 15:04:55 -05:00
radius 1a4db72e82 shader left / right fixes and cleanup 2018-03-17 14:56:34 -05:00
radius c52fdc469f remove task_push_http_transfer_raw, encode before sending data to the task 2018-03-16 22:38:21 -05:00
Twinaphex 9721c7c4be Merge pull request #6407 from QuarkTheAwesome/master
[WiiU] Fix OOB read/write in keyboard driver
2018-03-17 03:36:47 +01:00
Ash aeea0e6ca8 [WiiU] Fix OOB read/write in keyboard driver
This code used a keyboardState size of 256 and indexed it with a
retro_key, which can be any value (RETROK_RALT is 307). This fixes
that by using RETROK_LAST as the array size.

Should fix #6322.
2018-03-17 13:00:47 +11:00
meleu 176cde31fc decreasing verbosity in Achievements menu 2018-03-16 21:04:56 -03:00
twinaphex fb011f8377 Fix MSVC 2013 build 2018-03-16 22:04:34 +01:00
Brad Parker 450fc90a15 griffin: add vc2015 Makefile target 2018-03-16 21:03:58 +00:00
Brad Parker 614521b238 fix building on windows without dinput 2018-03-16 21:03:43 +00:00
twinaphex ffbb439fb5 Fix MSVC 2015 solution 2018-03-16 21:45:14 +01:00
Brad Parker 3d378fd772 add back missing UTF8 BOMs 2018-03-16 16:21:19 -04:00
Twinaphex 65c903de3c Merge pull request #6403 from fr500/staging
fix shader parameter increase decrease
2018-03-16 19:24:10 +01:00
radius 6b150ba38d fix shader parameter increase decrease 2018-03-16 09:32:22 -05:00
altiereslima 24783b21cf Update Translation (Portuguese Brazilian) 2018-03-16 02:35:29 -03:00
Twinaphex aa4ded4bc7 Merge pull request #6399 from meleu/patch-16
fixing cheevos (broken after #6389)
2018-03-16 05:12:26 +01:00
meleu eb5a69ded3 fixing cheevos (broken after #6389) 2018-03-16 01:03:57 -03:00
Twinaphex 29a057ac98 Merge pull request #6397 from meleu/patch-11
cheevos: console ID for Game Gear
2018-03-15 21:39:35 +01:00
meleu ca6df1ae32 Support Game Gear
The Console ID 15 was changed to Game Gear at RetroAchievements database.

http://retroachievements.org/gameList.php?c=15
2018-03-15 16:40:19 -03:00
Twinaphex 83fae86b6f Merge pull request #6395 from RobLoach/achievement-list
cheevos: Rename "Achievement List" to "Achievements"
2018-03-15 18:03:58 +01:00
Rob Loach 518ff36ed4 cheevos: Rename 'Achievement List' to 'Achievements' 2018-03-15 12:56:20 -04:00
Twinaphex 1c045de7a6 Merge pull request #6392 from meleu/patch-15
Update CHANGES.md
2018-03-15 16:42:31 +01:00
Twinaphex e07be500ee Merge pull request #6390 from aliaspider/master
(Vulkan) add missing queue locks when calling vkQueueWaitIdle.
2018-03-15 16:41:33 +01:00
meleu d02d48da24 Update CHANGES.md 2018-03-15 07:52:03 -03:00
aliaspider b948cf46e7 (Vulkan) add missing queue locks when calling vkQueueWaitIdle. 2018-03-15 09:21:23 +01:00
Twinaphex ee809abf6b Merge pull request #6388 from meleu/patch-12
added cheevos_auto_screenshot
2018-03-15 06:42:10 +01:00
twinaphex 6653818dc8 Revert "(input_overlay.c) Cleanups"
This reverts commit 56389466aa.
2018-03-15 06:39:06 +01:00
Twinaphex 1eaa902b6d Merge pull request #6389 from fr500/master
make sure to always encode urls, also change the PS3 default urls
2018-03-15 06:36:40 +01:00
radius b01e63e2cd make sure to always encode urls, also change the PS3 default urls 2018-03-14 23:04:50 -05:00
meleu 6346f18133 added cheevos_auto_screenshot 2018-03-14 22:41:51 -03:00
twinaphex 6bf34c36ed Update net_http_test 2018-03-15 00:38:30 +01:00
twinaphex 9cac3175c3 Buildfix 2018-03-15 00:31:29 +01:00
twinaphex 32b2808fe0 Revert "Turn scaler_ctx_scale_direct into inline function"
This reverts commit d51edd8239.
2018-03-14 23:48:47 +01:00
twinaphex e5eeed688e Add some stuff to net sample Makefile 2018-03-14 23:48:29 +01:00
twinaphex fd206a7dd0 Update https links 2018-03-14 19:09:05 +01:00
Twinaphex 0d4833fb76 Merge pull request #6385 from meleu/patch-11
Update CHANGES.md
2018-03-14 06:32:40 +01:00
meleu a419c524f7 Update CHANGES.md
- CHEEVOS: Support Atari 2600, Virtual Boy, Neo Geo (Arcade).
- VITA: Bugfix for 'PS Vita takes many time to start to accept input' issue.
2018-03-13 23:08:25 -03:00
Twinaphex d170cb5469 Merge pull request #6379 from RobLoach/morningblue
xmb: Add Morning Blue theme
2018-03-12 02:49:51 +01:00
Rob Loach ddb0f81cf2 xmb: Add Morning Blue theme 2018-03-11 20:37:49 -04:00
twinaphex d51edd8239 Turn scaler_ctx_scale_direct into inline function 2018-03-11 18:14:17 +01:00
twinaphex d6eda2502d Improve scaler_ctx_scale_direct macro 2018-03-11 17:46:39 +01:00
Twinaphex 4552002945 Merge pull request #6375 from GregorR/override-load-order
Make command-line overrides (somewhat) clearer
2018-03-11 01:32:14 +01:00
Twinaphex 173f6a23e3 Merge pull request #6377 from Ryunam/master
Implement Slow motion toggle under Input Hotkey Binds
2018-03-10 22:15:04 +01:00
Ryunam c5775fd73c Implement Slow motion toggle 2018-03-10 18:42:45 +01:00
Gregor Richards 2be56942da Since directories can't be post-overridden, that case still needs to be handled separately. 2018-03-09 17:33:41 -05:00
Gregor Richards b33d29aecf Make command-line overrides (somewhat) clearer
This commit:

(1) Changes the order of command-line loading so that config loading
happens before command line overrides. This way, config loading does not
itself have to be concerned with being pre-overridden.

(2) Adds overrides to the data structures that configuration saving uses
to save configuration blocks of the same type, so that they can easily
be added in the future.

(3) Corrects some (all?) existing problems with command-line overrides
being ignored.
2018-03-09 17:23:34 -05:00
twinaphex d991c7d471 Fix warning 2018-03-09 15:44:11 +01:00
twinaphex 96e154cb8f Fixes PS3 build hopefully 2018-03-09 15:39:10 +01:00
Twinaphex 6d8544c26d Merge pull request #6373 from ajefr/patch-2
declaration error
2018-03-09 04:02:16 +01:00
ajefr 1da67cecf3 declaration error 2018-03-08 21:44:26 +01:00
Andrés 07ecc641fe Merge pull request #6372 from ajefr/patch-1
typo
2018-03-08 15:25:06 -05:00
ajefr 98f8ed637c typo
stati -> static
2018-03-08 21:19:00 +01:00
twinaphex 7a99694a1a Update PS3 buildbot URLs 2018-03-08 03:45:55 +01:00
meleu d5503e9e7c fix a bad in_addr manipulation on VITA - fixes #6127 (#6366)
added VITA condition
2018-03-07 22:11:30 +01:00
Twinaphex 1bccf5cf27 Merge pull request #6365 from Tatsuya79/patch-3
Fix MaterialUI scaling bug in long lists, lower res devices.
2018-03-07 16:07:16 +01:00
Tatsuya79 5dda583a94 Fix MaterialUI scaling bug in long lists, lower res devices. 2018-03-07 12:17:10 +01:00
Twinaphex d532f108fc Merge pull request #6364 from reswitched/master
[NSW] Graphics driver speed improvements/fixes and audio driver improvement
2018-03-07 06:35:39 +01:00
misson20000 35f796d65d NSW(audio): use alloc_pages to acquire buffers instead of using ones in bss 2018-03-06 21:18:42 -08:00
misson20000 e934f11065 NSW: skip frames if we can't acquire a buffer (newer libtransistors use three buffers, making this very unlikely to happen) 2018-03-06 20:55:40 -08:00
misson20000 4a4de74518 NSW(gfx): clear image row-by row for better caching (it's seriously a LOT faster), do pixel format conversion in scalers, and remove timing debug messages 2018-03-06 19:52:03 -08:00
misson20000 dd53be15ae let scalers output in ABGR8888 2018-03-06 19:52:03 -08:00
Twinaphex 82fb34a3ce Merge pull request #6327 from ramiro/add-arab-lang-name-en-literal
Add "Arabic" to intl/msg_hash_us.h missed in 45580cb9a8.
2018-03-06 20:52:31 +01:00
twinaphex 82213266e6 (PS3) Change back to SNC 2018-03-06 19:03:51 +01:00
twinaphex 2b300b96e2 Update Makefile.ps3.cobra too 2018-03-06 18:32:00 +01:00
twinaphex 3e6ffe3983 See if this fixes PS3 builds 2018-03-06 18:31:25 +01:00
twinaphex 14e6d42935 (XMB) Get rid of some unnecessary pointer passing 2018-03-06 15:55:06 +01:00
twinaphex aa57331569 (MaterialUI) Attempt to make things more readable 2018-03-06 15:34:58 +01:00
Twinaphex b815c64814 Merge pull request #6355 from 777sha/master
More french translations
2018-03-06 15:33:41 +01:00
Twinaphex 2e61eecbdd Merge pull request #6363 from reswitched/master
NSW: Menu toggle combo, build fix, graphics driver fixes
2018-03-06 12:57:42 +01:00
misson20000 90c36c52ce NSW: fix graphics driver colors for rgb32 and don't break aspect ratio when scaling menu texture 2018-03-05 23:45:28 -08:00
misson20000 22c95b31ea NSW: cpu_features_get_time_usec: put SWITCH block before POSIX_MONOTONIC_CLOCK block 2018-03-05 20:23:49 -08:00
misson20000 7487d938b3 NSW: remove global state in graphics driver, as it is no longer necessary 2018-03-05 20:14:52 -08:00
Lubosz Sarnecki be64bf08e4 config.def.h: Toggle menu with start & select (- & +) on Switch. 2018-03-05 20:03:56 -08:00
Twinaphex a4e2c8c75c Update Makefile.ps3.salamander 2018-03-06 04:47:58 +01:00
Twinaphex 34ec4b9dcb Update Makefile.ps3.cobra 2018-03-06 04:47:34 +01:00
Twinaphex 7d8e8291ec Update Makefile.ps3 2018-03-06 04:47:16 +01:00
Twinaphex 333ef62e25 Merge pull request #6362 from aliaspider/master
update SPIRV-Cross.
2018-03-06 04:47:01 +01:00
aliaspider bb972a6dab (spirv) set flip_vert_y to true when emitting HLSL. 2018-03-06 04:12:58 +01:00
aliaspider ff6d24cbef (SPIRV-Cross) Merge commit 'f48c1800c0122e8e7957f572c359e4594932cd4c' 2018-03-06 04:11:59 +01:00
aliaspider f48c1800c0 Squashed 'deps/SPIRV-Cross/' changes from 33c5cd9..c9516fa
c9516fa Fix OSX Travis.
94cd777 Move `rename_interface_variable` to util
467c956 Merge pull request #480 from KhronosGroup/fix-476
1e4db56 Run format_all.sh.
eecbeaa Take execution model into account for entry point methods.
337150f Merge pull request #479 from KhronosGroup/fix-477
3c1b147 Support Invariant for BuiltInPosition.
cae1722 Merge pull request #475 from KhronosGroup/fix-convert-cast
e69b1ae Fix implicit conversion bug.
b39c063 Merge pull request #474 from KhronosGroup/fix-pointer-overload
fda36f8 Fix function overload when SPIR-V overloads on pointer type.
a61e728 Merge pull request #472 from KhronosGroup/fix-446
6a12ff7 Fix multiple declaration of spvDet2x2 on MSL.
b380a21 Implement MatrixInverse on HLSL.
6066fe4 Merge pull request #471 from KhronosGroup/fix-462
f6d08e6 Add workaround for PointCoord builtin on HLSL.
fb196c2 Merge pull request #470 from KhronosGroup/fix-459
dd603ea Support spec constant array size in blocks.
32b1c7d Merge pull request #469 from KhronosGroup/fix-454
a04bdcc Handle overloaded functions which share the same OpName.
f887b20 Merge pull request #468 from KhronosGroup/fix-461
4543dac Run format_all.sh.
047ad7d Support special float constants (NaN/Inf).
3f64f56 Merge pull request #465 from KhronosGroup/fix-445
0673f27 Fix incorrect loop range.
114c2c5 Add clip/cull-distance support to HLSL.
fb3f92a Overhaul clip/cull distance support in GLSL.
11bbccb Merge pull request #464 from billhollings/master
50ef6cd CompilerMSL remove incorrect packing of non-interface type-aliased structs.
3925fe8 Merge pull request #460 from KhronosGroup/fix-424
47b3742 Run format_all.sh.
1a2e4de Add test for texelFetch without sampler.
4db7061 Begin implementing texelFetch(texture2D) workaround on GLSL.
d871a89 Remove "EXPERIMENTAL" tag from MSL/HLSL.
218b0a5 Merge pull request #455 from KhronosGroup/fix-452
8a3bef2 Add OpFRem tests.
54a065b Run format_all.sh.
3fa6cc8 Implement FRem.
a9a6bca Merge pull request #453 from KhronosGroup/fix-444
843e34b Add IsFrontFace support to HLSL.
3d0c61f Merge pull request #451 from KhronosGroup/fix-437
636cc30 Fix case where hoisted temporaries were used before being declared.
4d1c5ad Merge pull request #450 from jodavis42/OpCopyMemoryCrash
b4b629b Null crash fix in OpCopyMemory.
6a0f698 Set width when creating NumWorkgroups buffer.
2bda0d5 Merge pull request #449 from billhollings/master
2964e32 CompilerMSL support gl_SampleMask and convert it to scalar uint from array.
64d3083 Merge pull request #448 from billhollings/master
b453348 Merge branch 'master' of https://github.com/billhollings/SPIRV-Cross
607b0d6 CompilerMSL support smaller offsets for 3-row row-major matrices.
7be30aa Merge pull request #442 from KhronosGroup/fix-435
a3104e9 Also check that type we load is an image.
a3ae861 Fix depth image usage in MSL for separate image/samplers.
702e086 Support passing implicit frag_coord arguments down to functions.
0912427 Begin implementing subpassLoad in MSL.
18a594a Implement subpass input support in HLSL.
f4bce68 Merge pull request #433 from KhronosGroup/fix-428
c9db3e5 Overload on constant storage.
b2c9487 Attempt to deduce constant/thread storage.
1a9c960 MSL cannot declare inline arrays except in certain cases.
156dd90 Implicit return value takes thread storage.
d89b790 Fix wrong function declaration in MSL.
00ccd59 Return arrays in HLSL/MSL by writing to an output variable instead.
9fa91f7 Support returning arrays from functions in GLSL/MSL.
ed6b775 Merge pull request #417 from msiglreith/root_constants_overwrite
369f5f6 Add missing include
d096f5c hlsl: Support custom root constant layout
4b58f65 Merge pull request #438 from zeux/msvc-warning-fix
24cf308 Fix MSVC 2015 warning
8b53b70 Merge pull request #434 from KhronosGroup/fix-429
18e8833 Support gl_NumWorkgroups in HLSL.
181a5fa Fix formatting after merge.
e3f4041 Fixes MSVC 2013 compilation
ef33770 Merge pull request #431 from twinaphex/master
59a12c7 Uniquely name these static functions

git-subtree-dir: deps/SPIRV-Cross
git-subtree-split: c9516fa91709b68ac20fa614625e85e0ced3f23f
2018-03-06 04:10:13 +01:00
Twinaphex c104a232fd Merge pull request #6361 from FIX94/master
(GX) allow audio output rate to be changed in the settings
2018-03-05 20:45:12 +01:00
FIX94 13a2246c50 (GX) allow audio output rate to be changed in the settings between 32khz and 48khz 2018-03-05 20:17:51 +01:00
Hugo Sha 810be0cea5 More fixes 2018-03-04 23:25:50 +01:00
Hugo Sha 7c1ee8b24b Added changes recommended by Tatsuya79 3 2018-03-04 22:33:33 +01:00
Twinaphex d51048b0df Merge pull request #6358 from fr500/subsystem
subsystem part 4: set savestates properly
2018-03-04 21:09:56 +01:00
Hugo Sha f3c3bc9f6e Some more changes 2018-03-04 19:59:28 +01:00
Hugo Sha 29c75105d4 Added changes recommended by Tatsuya79 2 2018-03-04 19:44:55 +01:00
Hugo Sha fc4a24e4c9 Added changes recommended by Tatsuya79 2018-03-04 19:34:57 +01:00
radius 7b0c0b63c9 subsystem part 4: set savestates properly 2018-03-04 12:34:51 -05:00
Twinaphex 32bf9cd716 Merge pull request #6356 from GregorR/netplay-no-double-check
Remove an incorrect double-check
2018-03-04 05:46:11 +01:00
Gregor Richards a39bff6e03 Remove an incorrect double-check
Netplay sync incorrectly checked whether the replay pointer was behind
the unread pointer twice, when in the second check it should only have
been checking if it was behind the current execution pointer. Because of
how resimulation works with device sharing, I THINK this could affect
sync. Even if it can't, it's wrong.
2018-03-03 23:03:35 -05:00
Twinaphex 112600e0db Merge pull request #6354 from Tatsuya79/patch-1
Move variable.
2018-03-04 02:51:24 +01:00
Hugo Sha 03e0d0fe99 More french translations 2 2018-03-04 02:26:01 +01:00
Tatsuya79 4c561a2de1 Move variable. 2018-03-04 01:56:29 +01:00
Twinaphex 340a368465 Merge pull request #6340 from Tatsuya79/master
XMB Dynamic Scaling Mod. (For Testing)
2018-03-04 01:08:59 +01:00
Tatsuya79 28a7357fca Thumbnails height limitation. Linear Image scaling. 2018-03-04 01:06:02 +01:00
twinaphex 1d1acc8940 Cleanup 2018-03-03 16:33:49 +01:00
Hugo Sha 1212b88bae More french translations 1 2018-03-03 16:21:32 +01:00
twinaphex 542cd6b6bf Uniquely name variables 2018-03-03 15:51:00 +01:00
twinaphex 63823b339a Buildfix for D3D8 2018-03-03 15:34:21 +01:00
twinaphex 858af5fbe2 Fix Griffin build 2018-03-03 15:30:35 +01:00
twinaphex b4a743fff4 Split up menu display drivers for D3D8/D3D9 into separate drivers;
split up d3d_common into separate files
2018-03-03 15:28:58 +01:00
twinaphex 0566b056a5 Take out d3d_common function call from d3d_w32_font.c 2018-03-03 05:42:14 +01:00
twinaphex 59dae251b0 Change to system dir include 2018-03-02 18:34:29 +01:00
twinaphex 64b36ef5d8 (MSVC) Buildfix for Cg renderchain 2018-03-02 18:32:14 +01:00
twinaphex 3f1ae25713 (D3D8) Buildfix 2 2018-03-02 17:44:48 +01:00
twinaphex ed67653086 (D3D8) Buildfix 2018-03-02 17:43:58 +01:00
twinaphex 371b6a604e (Xbox) Buildfix 2018-03-02 17:43:18 +01:00
twinaphex 588707f543 Cleanups 2018-03-02 17:30:21 +01:00
twinaphex 0ec5ce8cfe Get rid of d3d context drivers 2018-03-02 17:23:43 +01:00
twinaphex 95371cbda1 (Xbox 360) Buildfix 2018-03-02 17:05:30 +01:00
twinaphex dfdbc00a84 Cleanup Xbox 360 code from d3d_ctx 2018-03-02 17:03:34 +01:00
twinaphex dbf2fae5c1 (D3D9) Get rid of context driver 2018-03-02 17:00:11 +01:00
twinaphex fc9e018534 Implement d3d9_set_video_mode 2018-03-02 16:53:15 +01:00
twinaphex 7c599b715e Implement d3d9_has_windowed 2018-03-02 16:46:32 +01:00
twinaphex 9606db6f79 Start untangling more functions from context driver 2018-03-02 16:38:57 +01:00
twinaphex af5a2f61a1 (D3D9) Start getting rid of context driver for D3D9 driver 2018-03-02 15:30:39 +01:00
Twinaphex 0a1bcab732 Update CHANGES.md 2018-03-02 02:18:49 +01:00
twinaphex 9f33ba8607 (Vulkan/D3D11/D3D12) Add HAVE_GLSLANG now to both Android and MSVC solutions - shaders
should work now
2018-03-02 02:14:29 +01:00
twinaphex 3cd2018cc1 Update video_shader_parse.c 2018-03-02 01:41:05 +01:00
twinaphex df7f47d00a Create string_is_equal_case_insensitive 2018-03-01 23:16:34 +01:00
twinaphex 2f457af8bf Buildfix 2018-03-01 22:51:43 +01:00
twinaphex 25b7e54bdb Fix mistake 2018-03-01 22:44:27 +01:00
twinaphex 7a7902c4ac string_is_equal_noncase has issues in video_shader_get_type_from_ext 2018-03-01 22:42:03 +01:00
Twinaphex ae6e410de1 Remove unused variables 2018-03-01 22:28:26 +01:00
twinaphex 4c08bdc0e9 Add GFX_CTX_GX_API 2018-03-01 22:22:13 +01:00
Brad Parker 6329eca684 add patch to enable gdb/debugging on android 2018-03-01 16:01:04 -05:00
twinaphex 9d45d26f56 Update 2018-03-01 21:26:32 +01:00
twinaphex 13b6a016fc Fix d3d swap buffers call 2018-03-01 21:23:15 +01:00
twinaphex 16c1bd7a03 Create context get_api function 2018-03-01 21:16:54 +01:00
twinaphex ba0e6bcdea Get rid of warning that is inaccurate 2018-03-01 18:17:04 +01:00
twinaphex 128dff15ab Add better fallback in case current_video_context_api is none 2018-03-01 18:15:04 +01:00
twinaphex c8028f3150 Set current_video_context_api for GL and Vulkan 2018-03-01 17:51:55 +01:00
Twinaphex a22131b452 Update CHANGES.md 2018-03-01 17:35:49 +01:00
twinaphex c72a68faf8 Disable XMB shadow icons by default for PowerPC and ARM for performance
reasons
2018-03-01 17:34:08 +01:00
twinaphex 7da491d009 * menu_shader.c - cleanup
* Nothing uses HAVE_SHADERS define anymore, so get rid of it* Nothing
uses HAVE_SHADERS define anymore, so get rid of it* Nothing uses
HAVE_SHADERS define anymore, so get rid of it* Nothing uses HAVE_SHADERS
define anymore, so get rid of it* Nothing uses HAVE_SHADERS define
anymore, so get rid of it* Nothing uses HAVE_SHADERS define anymore, so
get rid of it* Nothing uses HAVE_SHADERS define anymore, so get rid of
it* Nothing uses HAVE_SHADERS define anymore, so get rid of it
2018-03-01 17:19:19 +01:00
twinaphex 8b8b08aefd - Simplify video_shader_parse_type
- Fix welcome screen
2018-03-01 15:58:06 +01:00
twinaphex 0de23512e7 Should fix APK extraction (hopefully) 2018-03-01 14:59:37 +01:00
twinaphex b3d3cbd4e1 sthread_isself - make Win32 codepath use GetCurrentThreadId instead 2018-02-28 16:18:48 +01:00
twinaphex 18d27468ae Set handles_transform for 3DS/D3D11/D3D12/Vita/WiiU menu
display drivers - this skips a bunch of costly matrix calculations
for menu display drivers that have a geometry shader or something
similar
2018-02-28 04:52:47 +01:00
Tatsuya79 4ab8fb9423 Dynamic Scaling Mod. 2018-02-27 19:01:15 +01:00
twinaphex f0f3df3043 Get rid of some menu shader functions 2018-02-27 05:07:34 +01:00
Twinaphex 502f3ddc74 Update CHANGES.md 2018-02-26 19:42:48 +01:00
twinaphex 7e8b9135c3 (Cg) If GL context is GLES2/3/Core context, Cg shaders are unavailable 2018-02-26 19:39:42 +01:00
twinaphex fbead501f3 Move SHADER_DIR_INIT to end of video driver init function 2018-02-26 19:33:27 +01:00
twinaphex 826ca302ca video_shader_get_type_from_ext - the switch now covers the APIs
that support the shader type, not the ones that don't
2018-02-26 19:04:01 +01:00
twinaphex 88ab8ceb24 Conditionally build up shader list 2018-02-26 18:56:56 +01:00
Twinaphex 4dc9c408d4 Merge pull request #6329 from markand/fix-vid-pid
Use EVIOCGID's ioctl to get vendor/product id, #6325
2018-02-26 18:39:33 +01:00
twinaphex bf22eeff21 Update CHANGES.md 2018-02-26 18:37:14 +01:00
twinaphex f2e80fd8e8 hide cg and glsl for D3D10/11/12 drivers 2018-02-26 18:36:10 +01:00
twinaphex a34c066e07 Hide glsl/cg shaders from Vulkan driver 2018-02-26 18:35:16 +01:00
twinaphex e9d0834a39 Selectively filter away slang/slangp shaders for now with GL driver 2018-02-26 18:32:22 +01:00
twinaphex 2f241d10d4 Update CHANGELOG 2018-02-26 18:17:19 +01:00
twinaphex d45189b853 Prevent crashes from occurring if we have the GL video driver
in use and we try to skip to a slang shader through next/previous
hotkeys
2018-02-26 18:15:38 +01:00
twinaphex 696fa900a1 Refactor macro functions which were unsafe 2018-02-26 18:08:17 +01:00
twinaphex b67777f664 Update d3d9_hlsl_renderchainc. 2018-02-26 17:52:38 +01:00
twinaphex 5b79d2b942 Refactor video_shader_driver_set_parameters 2018-02-26 17:51:52 +01:00
twinaphex 5665e27324 Nits 2018-02-26 15:12:19 +01:00
twinaphex b4733fd6c2 Cleanups 2018-02-26 00:13:01 +01:00
twinaphex 826a5009b0 Cleanups 2018-02-25 23:54:46 +01:00
twinaphex d8498d0de7 Cleanups 2018-02-25 23:49:00 +01:00
twinaphex 8dbe653e9f Cleanup 2018-02-25 23:24:21 +01:00
twinaphex e75992a66f Get rid of HAVE_SHADER_MANAGER 2018-02-25 23:03:39 +01:00
twinaphex 7bc9e5260e Start getting rid of HAVE_SHADER_MANAGER ifdefs 2018-02-25 22:54:17 +01:00
twinaphex 7a3d7e784a (menu_generic.c) Get rid of hashes 2018-02-25 22:27:05 +01:00
twinaphex dd91373f35 Remove unused function 2018-02-25 22:08:16 +01:00
twinaphex b4ea072ce7 (database_info.c) Cleanups 2018-02-25 21:58:52 +01:00
twinaphex 33f0009a11 Fix UNIX build 2018-02-25 20:49:44 +01:00
twinaphex 8d7911976c Refactor menu_shader.c 2018-02-25 20:42:44 +01:00
twinaphex b4a9ac37ff Get rid of more unnecessary hashing 2018-02-25 18:07:29 +01:00
twinaphex 366a1d58f8 (menu) Get rid of name_hash 2018-02-25 18:04:32 +01:00
twinaphex 78406bef69 (platform_unix.c) Remove lots of hashes 2018-02-25 17:58:36 +01:00
twinaphex d6d89e10ba Get rid of msg_hash dependency 2018-02-25 17:48:00 +01:00
twinaphex fa40be2aa5 Simplify sorting 2018-02-25 17:47:36 +01:00
twinaphex 071476174d database_info.c - get rid of hashes 2018-02-25 17:43:12 +01:00
twinaphex 74309e6e1c shader code - Get rid of more hashes 2018-02-25 17:20:22 +01:00
twinaphex f00d194ae3 Get rid of more hashes 2018-02-25 16:32:54 +01:00
Twinaphex b2c3a2c2db Merge pull request #6333 from r-type/patch-1
Update imports.h
2018-02-25 15:21:06 +01:00
not6 af8559bc19 Update imports.h
add OSGetCurrentThread and OSExitThread.
2018-02-25 13:53:57 +00:00
twinaphex b0f29a6743 (platform_unix.c) Remove more hashes 2018-02-25 13:16:17 +01:00
twinaphex fae9223641 Remove hashes from task_overlay 2018-02-25 13:03:54 +01:00
twinaphex 938f6cc26e Get rid of hashes in shader_gl_cg 2018-02-25 01:13:34 +01:00
twinaphex 016e24e5a5 (video_shader_parse) Get rid of hashes 2018-02-25 01:07:14 +01:00
twinaphex 8d9fbf4a62 Cleanups 2018-02-25 00:50:01 +01:00
twinaphex 36f9d359c2 Combine menu_list and menu_entries 2018-02-25 00:39:20 +01:00
twinaphex 2a6af87d23 Remove unused function 2018-02-25 00:28:31 +01:00
twinaphex 865fec4282 Update libretro-mpv core - only use dlopen for HAVE_OPENGLES builds 2018-02-23 14:40:31 +01:00
Ramiro Morales 7a0428fc76 Add "Arabic" to intl/msg_hash_us.h missed in 45580cb9a8. 2018-02-23 08:17:13 -03:00
David Demelier e99049a8ff Use EVIOCGID's ioctl to get vendor/product id, #6325
The current code get the USB vendor/product controller, in case of
bluetooth connection this means that you get the bluetooth dongle ids
instead of gamepads. This is not fine as we match gamepads using their
product and vendor ids.

Credits go to SDL which helped me to figure out this issue.

http://hg.libsdl.org/SDL/file/f7c6b974d5af/src/joystick/linux/SDL_sysjoystick.c#l208
2018-02-23 09:19:43 +01:00
Twinaphex cf7785d784 Merge pull request #6318 from fr500/master
nitpicking fix: makes shader next start at the first shader
2018-02-20 09:04:15 +01:00
radius 2f25ec6f8b nitpicking fix: makes shader next start at the first shader 2018-02-19 20:01:23 -05:00
orbea 72a02b7647 qb: Add --sysconfdir
This also deprecates --global-config-dir.
2018-02-11 09:54:57 -08:00
936 changed files with 50915 additions and 18719 deletions

No files matched your search

+4 -2
View File
@@ -10,7 +10,7 @@ matrix:
- g++-mingw-w64-i686
- mingw-w64-i686-dev
script:
- CROSS_COMPILE=i686-w64-mingw32- ./configure --disable-d3d9 && make HAVE_ZLIB=1 HAVE_BUILTINZLIB=1 HAVE_RPNG=1
- CROSS_COMPILE=i686-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501" ./configure --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 && make HAVE_ZLIB=1 HAVE_BUILTINZLIB=1 HAVE_RPNG=1
- compiler: mingw-x64
addons:
apt:
@@ -18,7 +18,7 @@ matrix:
- g++-mingw-w64-x86-64
- mingw-w64-x86-64-dev
script:
- CROSS_COMPILE=x86_64-w64-mingw32- ./configure --disable-d3d9 && make HAVE_ZLIB=1 HAVE_BUILTINZLIB=1 HAVE_RPNG=1
- CROSS_COMPILE=x86_64-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501" ./configure --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 && make HAVE_ZLIB=1 HAVE_BUILTINZLIB=1 HAVE_RPNG=1
- compiler: gcc
- compiler: clang
addons:
@@ -64,3 +64,5 @@ addons:
build_command_prepend: "./configure; make clean"
build_command: "make"
branch_pattern: coverity_scan
notifications:
email: false
+126 -124
View File
@@ -1,125 +1,127 @@
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw32",
"includePath": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw64",
"includePath": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17"
},
{
"name": "msys2-mingw32",
"includePath": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw64",
"includePath": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}
+20 -23
View File
@@ -5,44 +5,41 @@
"version": "0.2.0",
"configurations": [
{
"name": "msys2-mingw64 debug",
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarch.exe",
"args": [],
"args": ["-v"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "msys2-mingw32 debug",
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "launch",
"request": "attach",
"program": "${workspaceFolder}/retroarch.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw32\\bin\\gdb.exe",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
},
]
}
+1
View File
@@ -14,4 +14,5 @@
"*.in": "c",
"*.rh": "c"
},
"C_Cpp.dimInactiveRegions": false,
}
+89 -5
View File
@@ -1,4 +1,89 @@
# 1.7.2 (future)
# 1.7.4 (future)
# 1.7.3
- AUDIO: Audio mixer supports FLAC/MP3 file types now!
- COMMON: Fixed bug 'crashing in cores that don't range check retro_set_controller_type'. Some people were having crashes when device is set to RETRO_DEVICE_NONE and the cores don't check the number of ports, in VBAM's case it was overflowing and crashing. QuickNES was crashing too.
- COMMON: Fixed buffer overflow in url encoding (affecting MSVC2010/2013).
- COMMON: (QuickMenu) Added Configuration Override submenu.
- HID: Merge new HID subsystem.
- HID: Fix WaveBird support for the Wii U GCA.
- HID/OSX: Fix regression with IODHIDManager - gamepads which are connected later would not be autoconfigured.
- LOCALIZATION: Update Italian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Portuguese translation.
- MENU: Audio mixer now works in the menu without any cores loaded. You have to enable the setting 'Enable menu audio' for this to work.
- REMAPPING/OVERLAYS: Fix regression - overlays could no longer be remapped.
- SCANNER: Add Wii Backup File WBFS support.
- X11: CRT SwitchRes support for X11/Linux.
# 1.7.2
- ANDROID/OPENSL: Prevent crashes when setting audio latency too low (buffer count can never be lower than 2 now).
- CRT: Added CRT SwitchRes.
- COMMON: Hide the 'Core delete' option if the 'Core updater' is also hidden.
- COMMON: Add way to reset core association for playlist entry.
- COMMON: Fix invalid long command line options causing infinite loop on Windows
- COMMON: Add OSD statistics for video/audio/core.
- COMMON: Added runahead system; allows you to drive down latency even further.
- COMMON: Fix buggy behavior that could happen with ZIP file reading on some platforms as a result of not initializing struct.
- CHEEVOS: Support Atari 2600, Virtual Boy, and Arcade (only Neo Geo, CPS-1, CPS-2 and CPS-3 and only with fbalpha core).
- CHEEVOS: Add option to automatically take a screenshot when an achievement is triggered.
- CHEEVOS: Fixed incompatibilities with Neo Geo Pocket achievement sets.
- CHEEVOS: Store only login token, not password.
- D3D10: Added D3D10 driver to release build. Has working shaders (Slang), overlay, and menu display driver support. Should be on par capabilities wise
with D3D11 driver except for there being no hardware rendering right now.
- D3D11: Experimental hardware renderer. Allows for libretro cores to use D3D11 for hardware rendering. First core to use this is PPSSPP.
- D3D11: Increase backwards compatibility, shaders compile with Shader Model 4.0 now, added support for more feature levels.
- D3D10/D3D11/D3D12: Fix crashes with completely black or white thumbnail textures in XMB.
- GUI: Support disabling window decorations on Windows and Linux.
- LIBRETRO: Addition - Functions to enable and disable audio and video, and an environment function to query status of audio and video enables.
- LOCALIZATION: Update Italian translation.
- LOCALIZATION: Update Polish translation.
- MENU: Add Rewind/Latency/Overlay settings to Quick Menu, add options to show/hide them (User Interface -> Views -> Quick Menu)
- MENU/RGUI: Only show Menu Linear Filter for RGUI and only show it for
video drivers that implement it (D3D8/9/10/11/12/GL)
- MENU/RGUI: Add User Interface -> Appearance options.
- MENU/RGUI: D3D8/D3D9: Hookup Menu Linear Filter
- MENU/XMB: Disable XMB shadow icons by default for PowerPC and ARM for performance reasons.
- MENU/XMB: Left/right thumbnails are now automatically scaled according to layout.
- MENU/XMB: Add Left Thumbnails (additional to the right).
- MENU/XMB: Fixed left/right tab regression.
- MENU/XMB: Fix scaling of tall images that were cut on bottom previously.
- MENU/XMB: Menu scale factor setting now changes texts length, image scaling and margins.
- MENU/XMB: Mouse cursor scales correctly now.
- MENU/XMB: Add toggle to show/hide Playlist tabs.
- MENU/XMB: Add menu layout - can switch between Desktop, Handheld and Auto.
- MENU/XMB: Don't load menu pipeline shaders unless XMB is selected (D3D10/D3D11/D3D12/GL/Vulkan)
- MENU/VIDEO: Only show black frame insertion for the video drivers/context drivers
that support it (so far this includes - D3D8/D3D9, OpenGL, Vulkan)
- MENU/VIDEO: Only show max swapchain images if supported by video driver and/or context driver (so far this includes - DRM EGL context driver, VideoCore EGL context driver, Vulkan)
- MENU/MaterialUI: Automatic DPI Scaling should be much improved now, now scales as expected at 1440p and 4K resolutions.
- MENU/MaterialUI: Fix wrong calculation of an entry height causing long playlists to end up outside of screen range. This also could cause crashes on low DPI screens.
- IOS: Fixed crash when opening downloaded roms from Safari or using the "Open in.." functionality. Added the compiler flag to support keyboard remapping to controls.
- IOS: Fixed buffer overlap that caused a crash while trying to download GLSL shaders from the buildbot.
- PS3: fix URLS
- REMAPS: Mapping keyboard keys from more than one gamepad (works with dosbox)
- REMAPS: Mapping more than one button to the same action
- REMAPS: Unmapping buttons
- REMAPS: Unmapping analogs
- REMAPS: Mapping a button to trigger an analog response (tested with mupen, can run on SM64 with the d-pad now, triggers a full analog tilt)
- REMAPS: Mapping an analog to another analog (having more than one analog mapped to the same output causes issues)
- REMAPS: Mapping an analog to produce a button response
- SCANNER: Should be able to scan dual-layer Wii disc images now, filestream code now supports files larger than 4GB.
- SHADERS/SLANG: Slang shaders should work again on Android version and MSVC versions (basically all the Griffin-based versions).
- SHADERS: If GL context is GLES2/3/Core context, Cg shaders are unavailable. Applies to shader list too.
- SHADERS: Hide cg/glsl shaders from being able to be selected if D3D8/9/10/11/Vulkan video drivers are selected.
- SHADERS: Hide slang shaders from being able to be selected if D3D8/9/OpenGL video drivers are selected.
- SHADERS: Prevent crashes from occurring if we have the GL video driver in use and we try to skip to a slang shader through next/previous hotkeys
- SHADERS: Fix shader parameter increase / decrease functions
- SUBSYSTEM: handle savestates properly (cart1 + cart2.state0)
- VULKAN/X11: Fix X11 Vulkan bug from Wayland driver.
- VULKAN: Fix multi-line text spacing in menus with Vulkan driver.
- WINDOWS XP: Add Cheevos support.
- WINDOWS/MSVC 2003/2005/2010/2013/2015/2017: Add Cheevos support.
- VITA: Bugfix for 'PS Vita takes many time to start to accept input' issue.
- X11: Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR
- X11: Prioritize _NET_WM_STATE_FULLSCREEN_ in true fullscreen mode
- WIIU: Fix OOB read/write in keyboard driver.
# 1.7.1
- 3DS: Now correctly reports amount of CPU cores.
@@ -38,9 +123,8 @@
- LOCALIZATION: Update Spanish translation.
- NETPLAY: Add menu option to select different MITM (relay) server locations.
- OSX: Modify HID buttons detection algorithm.
- QB: Added --datarootdir.
- QB: Added --bindir and --mandir and deprecated --with-bin_dir and --with-man_dir.
- QB: Added --docdir.
- QB: Added --datarootdir, --sysconfdir, --bindir, --docdir and --mandir.
- QB: Deprecated --global-config-dir, --with-bin_dir and --with-man_dir.
- SHADERS: Allow saving of shader presets based on the parent directory (Saving one for */foo/bar/mario.sfc* would result in *shaders/presets/corename/bar.ext*). We decided it's safer to still isolate the presets to a single core because different cores may treat video output differently.
- SHADERS: Don't save the path to the current preset to the main config. This was causing weird behavior, instead it will try to load *currentconfig.ext* and it will save a preset with that name when select *apply shader preset*. The resulting shader will restore properly after restarting and even after core/parent/game specific presets are loaded
- SOLARIS: Initial port.
@@ -279,7 +363,7 @@ Skipped this one.
- MISC: Various frontend optimizations.
- NET: Fix bug #4703 (https://github.com/libretro/RetroArch/issues/4703)
- OSX/MACOS: Fixes serious memory leak
- THUMBNAILS: Thumbnails show up now in Load Content -> Collection, Information -> Database
- THUMBNAILS: Thumbnails show up now in Load Content -> Collection, Information -> Database
- VIDEO: Fix threaded video regression; tickering of menu entries would no longer work.
- VITA: Fix 30fps menu (poke into input now instead of reading the entire input buffer which apparently is slow)
- VITA: Fix frame throttle
+38 -13
View File
@@ -46,7 +46,7 @@ endif
include Makefile.common
ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang"),1)
DEFINES += -Wno-invalid-source-encoding
DEFINES += -Wno-invalid-source-encoding -Wno-incompatible-ms-struct
endif
ifeq ($(shell $(CC) -v 2>&1 | grep -c "tcc"),1)
@@ -92,21 +92,22 @@ APPEND_CFLAGS := $(CFLAGS)
CXXFLAGS += $(APPEND_CFLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS
OBJCFLAGS := $(CFLAGS) -D__STDC_CONSTANT_MACROS
ifeq ($(CXX_BUILD), 1)
LINK = $(CXX)
CFLAGS := $(CXXFLAGS) -xc++
CFLAGS += -DCXX_BUILD
CXXFLAGS += -DCXX_BUILD
else
ifeq ($(NEED_CXX_LINKER),1)
ifeq ($(HAVE_CXX), 1)
ifeq ($(CXX_BUILD), 1)
LINK = $(CXX)
CFLAGS := $(CXXFLAGS) -xc++
CFLAGS += -DCXX_BUILD
CXXFLAGS += -DCXX_BUILD
else ifeq ($(NEED_CXX_LINKER),1)
LINK = $(CXX)
else ifeq ($(findstring Win32,$(OS)),)
LINK = $(CC)
else
# directx-related code is c++
LINK = $(CXX)
LINK = $(CC)
endif
else
LINK = $(CC)
endif
ifneq ($(CXX_BUILD), 1)
ifneq ($(GNU90_BUILD), 1)
ifneq ($(findstring icc,$(CC)),)
CFLAGS += -std=c99 -D_GNU_SOURCE
@@ -133,7 +134,7 @@ RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
ifneq ($(X86),)
CFLAGS += -m32
CXXLAGS += -m32
CXXFLAGS += -m32
LDFLAGS += -m32
endif
@@ -150,8 +151,29 @@ ifneq ($(findstring $(GPERFTOOLS),tcmalloc),)
LIBS += -ltcmalloc
endif
# Qt MOC generation, required for QObject-derived classes
ifneq ($(MOC_HEADERS),)
# prefix moc_ to base filename of paths and change extension from h to cpp, so a/b/foo.h becomes a/b/moc_foo.cpp
MOC_SRC := $(join $(addsuffix moc_,$(addprefix $(OBJDIR)/,$(dir $(MOC_HEADERS)))), $(notdir $(MOC_HEADERS:.h=.cpp)))
MOC_OBJ := $(patsubst %.cpp,%.o,$(MOC_SRC))
RARCH_OBJ += $(MOC_OBJ)
endif
all: $(TARGET) config.mk
$(MOC_SRC):
@$(if $(Q), $(shell echo echo MOC $<),)
$(eval MOC_TMP := $(patsubst %.h,%_moc.cpp,$@))
$(Q)$(MOC) -o $(MOC_TMP) $<
$(foreach x,$(join $(addsuffix :,$(MOC_SRC)),$(MOC_HEADERS)),$(eval $x))
$(MOC_OBJ):
@$(if $(Q), $(shell echo echo CXX $<),)
$(Q)$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $<
$(foreach x,$(join $(addsuffix :,$(MOC_OBJ)),$(MOC_SRC)),$(eval $x))
ifeq ($(MAKECMDGOALS),clean)
config.mk:
else
@@ -250,3 +272,6 @@ clean:
rm -f *.d
.PHONY: all install uninstall clean
print-%:
@echo '$*=$($*)'
+81 -47
View File
@@ -147,6 +147,8 @@ ifneq ($(GIT_VERSION),)
endif
# General object files
DEFINES += -DHAVE_DR_MP3
CFLAGS += -DHAVE_DR_MP3
OBJ += frontend/frontend.o \
frontend/frontend_driver.o \
@@ -198,12 +200,15 @@ OBJ += frontend/frontend.o \
$(LIBRETRO_COMM_DIR)/hash/rhash.o \
audio/audio_driver.o \
$(LIBRETRO_COMM_DIR)/audio/audio_mixer.o \
input/common/input_common.o \
input/input_driver.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_driver.o \
gfx/video_crt_switch.o \
camera/camera_driver.o \
wifi/wifi_driver.o \
location/location_driver.o \
@@ -258,7 +263,18 @@ OBJ += frontend/frontend.o \
record/drivers/record_null.o \
$(LIBRETRO_COMM_DIR)/features/features_cpu.o \
performance_counters.o \
verbosity.o
verbosity.o \
ifeq ($(HAVE_RUNAHEAD), 1)
DEFINES += -DHAVE_RUNAHEAD
OBJ += runahead/copy_load_info.o \
runahead/dirty_input.o \
runahead/mem_util.o \
runahead/mylist.o \
runahead/run_ahead.o \
runahead/secondary_core.o
endif
ifeq ($(HAVE_CC_RESAMPLER), 1)
@@ -308,23 +324,27 @@ DEFINES += -DHAVE_IMAGEVIEWER
OBJ += cores/libretro-imageviewer/image_core.o
endif
# Qt
ifeq ($(HAVE_QT_WRAPPER), 1)
OBJ += ui/drivers/ui_qt.o
LIBS += -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -L./ui/drivers/qt/build/release/
LIBS += -lwrapper
endif
# Qt WIMP GUI
ifeq ($(HAVE_QT), 1)
OBJ += ui/drivers/ui_qt.o \
ui/drivers/qt/ui_qt_application.o \
ui/drivers/qt/ui_qt_window.o \
ui/drivers/qt/ui_qt_browser_window.o \
ui/drivers/qt/ui_qt_load_core_window.o \
ui/drivers/qt/ui_qt_msg_window.o
MOC_HEADERS += ui/drivers/ui_qt.h \
ui/drivers/qt/ui_qt_load_core_window.h
DEFINES += $(QT5CORE_CFLAGS) $(QT5GUI_CFLAGS) $(QT5WIDGETS_CFLAGS) -DHAVE_MAIN
#DEFINES += $(QT5WEBENGINE_CFLAGS)
LIBS += $(QT5CORE_LIBS) $(QT5GUI_LIBS) $(QT5WIDGETS_LIBS)
#LIBS += $(QT5WEBENGINE_LIBS)
NEED_CXX_LINKER = 1
ifneq ($(findstring Linux,$(OS)),)
DEFINES += -I/usr/include/qt -fPIC
DEFINES += -fPIC
endif
endif
@@ -767,7 +787,6 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/widgets/menu_input_dialog.o \
menu/widgets/menu_input_bind_dialog.o \
menu/widgets/menu_entry.o \
menu/widgets/menu_list.o \
menu/widgets/menu_osk.o \
menu/menu_cbs.o \
menu/cbs/menu_cbs_ok.o \
@@ -1023,9 +1042,6 @@ ifeq ($(HAVE_PLAIN_DRM), 1)
LIBS += -ldrm
endif
OBJ += \
gfx/drivers_renderchain/null_renderchain.o
ifeq ($(HAVE_GL_CONTEXT), 1)
DEFINES += -DHAVE_OPENGL -DHAVE_GLSL
OBJ += gfx/drivers/gl.o \
@@ -1173,7 +1189,7 @@ ifeq ($(HAVE_VULKAN), 1)
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_vulkan.o
endif
LIBS += -lstdc++
NEED_CXX_LINKER = 1
DEFINES += -DHAVE_VULKAN
INCLUDE_DIRS += -Igfx/include
@@ -1249,18 +1265,23 @@ endif
ifeq ($(HAVE_HLSL), 1)
OBJ += gfx/drivers_renderchain/d3d9_hlsl_renderchain.o \
gfx/drivers_shader/shader_hlsl.o
gfx/drivers_shader/shader_hlsl.o
endif
endif
ifeq ($(HAVE_D3D10), 1)
OBJ += gfx/drivers/d3d10.o gfx/common/d3d10_common.o
OBJ += gfx/drivers/d3d10.o \
gfx/common/d3d10_common.o \
gfx/drivers_font/d3d10_font.o \
menu/drivers_display/menu_display_d3d10.o
DEFINES += -DHAVE_D3D10
endif
ifeq ($(HAVE_D3D11), 1)
OBJ += gfx/drivers/d3d11.o gfx/common/d3d11_common.o \
gfx/drivers_font/d3d11_font.o menu/drivers_display/menu_display_d3d11.o
OBJ += gfx/drivers/d3d11.o \
gfx/common/d3d11_common.o \
gfx/drivers_font/d3d11_font.o \
menu/drivers_display/menu_display_d3d11.o
DEFINES += -DHAVE_D3D11
HAVE_SLANG = 1
HAVE_GLSLANG = 1
@@ -1268,8 +1289,10 @@ ifeq ($(HAVE_D3D11), 1)
endif
ifeq ($(HAVE_D3D12), 1)
OBJ += gfx/drivers/d3d12.o gfx/common/d3d12_common.o \
gfx/drivers_font/d3d12_font.o menu/drivers_display/menu_display_d3d12.o
OBJ += gfx/drivers/d3d12.o \
gfx/common/d3d12_common.o \
gfx/drivers_font/d3d12_font.o \
menu/drivers_display/menu_display_d3d12.o
DEFINES += -DHAVE_D3D12
HAVE_SLANG = 1
HAVE_GLSLANG = 1
@@ -1278,8 +1301,8 @@ endif
ifneq ($(findstring 1, $(HAVE_D3D10) $(HAVE_D3D11) $(HAVE_D3D12)),)
INCLUDE_DIRS += -isystemgfx/include/dxsdk
OBJ += gfx/common/d3dcompiler_common.o
OBJ += gfx/common/dxgi_common.o
OBJ += gfx/common/d3dcompiler_common.o \
gfx/common/dxgi_common.o
CFLAGS += -Wno-unknown-pragmas
endif
@@ -1301,23 +1324,27 @@ endif
ifeq ($(HAVE_D3D8), 1)
DEFINES += -DHAVE_D3D8
OBJ += gfx/drivers/d3d9.o
OBJ += gfx/drivers/d3d8.o
OBJ += gfx/common/d3d8_common.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d8.o
endif
endif
ifeq ($(HAVE_D3D9), 1)
DEFINES += -DHAVE_D3D9
OBJ += gfx/drivers/d3d9.o
OBJ += gfx/common/d3d9_common.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d9.o
endif
endif
ifeq ($(HAVE_D3D_COMMON), 1)
DEFINES += -DHAVE_D3D
OBJ += \
gfx/common/d3d_common.o \
gfx/drivers_context/d3d_ctx.o
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_d3d.o
endif
OBJ += gfx/common/d3d_common.o
endif
ifeq ($(HAVE_SLANG),1)
@@ -1416,6 +1443,8 @@ endif
ifeq ($(HAVE_BUILTINFLAC),1)
HAVE_FLAC = 1
DEFINES += -DHAVE_DR_FLAC -I$(DEPS_DIR)
CFLAGS += -DHAVE_DR_FLAC
CFLAGS += -DHAVE_FLAC -I$(DEPS_DIR)/libFLAC/include
DEFINES += -DHAVE_STDINT_H -DHAVE_LROUND -DFLAC__HAS_OGG=0 \
-DFLAC_PACKAGE_VERSION="\"retroarch\""
@@ -1442,7 +1471,8 @@ ifeq ($(HAVE_BUILTINFLAC),1)
endif
OBJ += $(FLACOBJ)
else ifeq ($(HAVE_FLAC),1)
LIBS += $(FLAC_LIBS)
DEFINES += -DHAVE_FLAC
LIBS += $(FLAC_LIBS)
endif
ifeq ($(HAVE_ZLIB), 1)
@@ -1453,7 +1483,7 @@ ifeq ($(HAVE_ZLIB), 1)
ifeq ($(HAVE_BUILTINZLIB), 1)
OBJ += $(DEPS_DIR)/libz/adler32.o \
$(DEPS_DIR)/libz/compress.o \
$(DEPS_DIR)/libz/crc32.o \
$(DEPS_DIR)/libz/libz-crc32.o \
$(DEPS_DIR)/libz/deflate.o \
$(DEPS_DIR)/libz/gzclose.o \
$(DEPS_DIR)/libz/gzlib.o \
@@ -1472,19 +1502,27 @@ ifeq ($(HAVE_ZLIB), 1)
endif
endif
ifeq ($(HAVE_FLAC), 1)
ifeq ($(HAVE_7ZIP), 1)
ifeq ($(HAVE_ZLIB), 1)
DEFINES += -DHAVE_CHD -DWANT_SUBCODE -DWANT_RAW_DATA_SECTOR
ifeq ($(HAVE_CHD), 1)
CFLAGS += -I$(LIBRETRO_COMM_DIR)/formats/libchdr
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/bitstream.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/cdrom.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/chd.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/flac.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/huffman.o \
DEFINES += -DHAVE_CHD -DWANT_SUBCODE -DWANT_RAW_DATA_SECTOR
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_bitstream.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_cdrom.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_chd.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_huffman.o \
$(LIBRETRO_COMM_DIR)/streams/chd_stream.o
endif
endif
ifeq ($(HAVE_FLAC), 1)
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_flac.o \
$(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_flac_codec.o
endif
ifeq ($(HAVE_7ZIP), 1)
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_lzma.o
endif
ifeq ($(HAVE_ZLIB), 1)
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/libchdr_zlib.o
endif
endif
ifeq ($(HAVE_RTGA), 1)
@@ -1586,10 +1624,6 @@ ifeq ($(HAVE_NETWORKING), 1)
$(LIBRETRO_COMM_DIR)/utils/md5.o
endif
ifeq ($(HAVE_KEYMAPPER), 1)
OBJ += input/input_mapper.o
endif
ifeq ($(HAVE_NETWORKGAMEPAD), 1)
OBJ += input/input_remote.o \
cores/libretro-net-retropad/net_retropad_core.o
+101
View File
@@ -11,6 +11,13 @@ PC_DEVELOPMENT_UDP_PORT = 3490
RARCH_CONSOLE = 0
USBGECKO = 0
SPACE :=
SPACE := $(SPACE) $(SPACE)
BACKSLASH :=
BACKSLASH := \$(BACKSLASH)
filter_out1 = $(filter-out $(firstword $1),$1)
filter_out2 = $(call filter_out1,$(call filter_out1,$1))
UNAME_ARCH = $(shell uname -m)
ifeq ($(UNAME_ARCH),x86_64)
@@ -171,6 +178,7 @@ else ifeq ($(libogc_platform), 1)
CFLAGS += -DGEKKO -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int
HAVE_RUNAHEAD := 1
HAVE_FILTERS_BUILTIN := 1
HAVE_THREADS := 1
HAVE_RPNG := 1
@@ -654,6 +662,95 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
export INCLUDE := $(INCLUDE);$(WindowsSdkDir)\Include\um;$(WindowsSdkDir)\Include\shared;libretro-common\include;libretro-common\include\compat\msvc;gfx\include;deps;deps\stb
export LIB := $(LIB);$(WindowsSdkDir)\$(PlatLib)
endif
else ifneq (,$(findstring windows_msvc2015,$(platform)))
HAVE_RPNG := 1
HAVE_RJPEG := 1
HAVE_RBMP := 1
HAVE_RTGA := 1
HAVE_ZLIB := 1
WANT_ZLIB := 1
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
HAVE_STB_FONT := 1
HAVE_THREADS := 1
HAVE_LIBRETRODB := 1
HAVE_COMMAND := 1
HAVE_STDIN_CMD := 1
HAVE_CMD := 1
HAVE_DYLIB := 1
HAVE_DYNAMIC := 1
HAVE_GRIFFIN_CPP := 1
HAVE_DIRECTX ?= 1
EXT_TARGET := $(TARGET_NAME).exe
EXT_INTER_TARGET := $(TARGET_NAME).exe
CC = cl.exe
CXX = cl.exe
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -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
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2015_,,$(platform))
ifneq (,$(findstring x64,$(PlatformSuffix)))
ifeq ($(HOST_ARCH),x86)
# cross-compile for x64 from x86 host
PATH := $(shell IFS=$$'\n'; cygpath "$(VS140COMNTOOLS)../../VC/bin/x86_amd64"):$(PATH)
else
PATH := $(shell IFS=$$'\n'; cygpath "$(VS140COMNTOOLS)../../VC/bin/amd64"):$(PATH)
endif
LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS140COMNTOOLS)../../VC/lib/amd64")
WinArch = x64
PlatLib = um\x64
VCLib = amd64
else ifneq (,$(findstring arm,$(PlatformSuffix)))
PATH := $(shell IFS=$$'\n'; cygpath "$(VS140COMNTOOLS)../../VC/bin/x86_arm"):$(PATH)
LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS140COMNTOOLS)../../VC/lib/arm")
HAVE_DIRECTX = 0
WinArch = arm
PlatLib = um\arm
VCLib = arm
else
PATH := $(shell IFS=$$'\n'; cygpath "$(VS140COMNTOOLS)../../VC/bin"):$(PATH)
LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS140COMNTOOLS)../../VC/lib")
WinArch = x86
PlatLib = um\x86
VCLib =
endif
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS140COMNTOOLS)../IDE")
INCLUDE := $(shell IFS=$$'\n'; cygpath -w "$(VS140COMNTOOLS)../../VC/include")
reg_query = $(call filter_out2,$(subst $2,,$(shell reg query "$2" -v "$1" 2>nul)))
fix_path = $(subst $(SPACE),\ ,$(subst \,/,$1))
WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0)
WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0)
WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0)
WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_CURRENT_USER\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0)
WindowsSdkDir := $(WindowsSdkDir)
WindowsSDKVersion ?= $(firstword $(foreach folder,$(subst $(subst \,/,$(WindowsSdkDir)Include/),,$(wildcard $(call fix_path,$(WindowsSdkDir)Include\*))),$(if $(wildcard $(call fix_path,$(WindowsSdkDir)Include/$(folder)/um/Windows.h)),$(folder),)))$(BACKSLASH)
WindowsSDKVersion := $(WindowsSDKVersion)
export INCLUDE := $(INCLUDE);$(VCINSTALLDIR)INCLUDE;$(VCINSTALLDIR)ATLMFC\INCLUDE;$(WindowsSdkDir)include\$(WindowsSDKVersion)ucrt;$(WindowsSdkDir)include\$(WindowsSDKVersion)shared;$(WindowsSdkDir)include\$(WindowsSDKVersion)um
export LIB := $(LIB);$(VCINSTALLDIR)LIB$(VCLib);$(VCINSTALLDIR)ATLMFC\LIB$(VCLib);$(WindowsSdkDir)lib\$(WindowsSDKVersion)ucrt\$(WinArch);$(WindowsSdkDir)lib\$(WindowsSDKVersion)$(PlatLib)
ifeq ($(HAVE_DIRECTX), 1)
PLATCFLAGS += -DHAVE_DINPUT -DHAVE_DSOUND -DHAVE_D3D -DHAVE_D3D9 -DHAVE_XAUDIO -DHAVE_XINPUT
DXSDK_DIR := $(DXSDK_DIR:\=)
export INCLUDE := $(INCLUDE);$(DXSDK_DIR)\Include;libretro-common\include;libretro-common\include\compat\msvc;gfx\include;deps;deps\stb
export LIB := $(LIB);$(DXSDK_DIR)\Lib\$(WinArch)
else
export INCLUDE := $(INCLUDE);libretro-common\include;libretro-common\include\compat\msvc;gfx\include;deps;deps\stb
export LIB := $(LIB)
endif
endif
ifneq (,$(findstring msvc,$(platform)))
@@ -744,6 +841,10 @@ ifeq ($(HAVE_IMAGEVIEWER), 1)
CFLAGS += -DHAVE_IMAGEVIEWER
endif
ifeq ($(HAVE_RUNAHEAD), 1)
CFLAGS += -DHAVE_RUNAHEAD
endif
ifeq ($(HAVE_7ZIP), 1)
CFLAGS += -DHAVE_7ZIP
endif
-1
View File
@@ -53,7 +53,6 @@ HAVE_NETWORK_CMD := 1
HAVE_OVERLAY := 1
HAVE_LANGEXTRA := 1
HAVE_CHEEVOS := 1
HAVE_KEYMAPPER := 1
HAVE_SHADERPIPELINE := 1
HAVE_IMAGEVIEWER := 1
+4 -5
View File
@@ -4,7 +4,7 @@ include version.all
#set to GCC for debug builds for use with debugger
CELL_BUILD_TOOLS = SNC
CELL_GPU_TYPE = RSX
CELL_PSGL_VERSION = ultra-opt
CELL_PSGL_VERSION = opt
ASSETS_DIR := media/assets
@@ -63,7 +63,7 @@ endif
PPU_SRCS = griffin/griffin.c
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
@@ -96,8 +96,7 @@ ifeq ($(CELL_BUILD_TOOLS), SNC)
PPU_CXXLD = $(CELL_SDK)/host-win32/sn/bin/ps3ppuld.exe
PPU_CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
PPU_CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
else
ifneq($(system_platform), win)
else ifneq ($(system_platform), win)
PPU_CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe
PPU_CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe
PPU_CXXLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe
@@ -120,7 +119,7 @@ DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_LA
ifeq ($(DEBUG), 1)
PPU_OPTIMIZE_LV := -O0 -g
else
PPU_OPTIMIZE_LV := -O3 -g
PPU_OPTIMIZE_LV := -O2 -g
endif
ifeq ($(HAVE_LOGGER), 1)
+2 -3
View File
@@ -2,7 +2,7 @@ include version.all
#which compiler to build with - GCC or SNC
#set to GCC for debug builds for use with debugger
CELL_BUILD_TOOLS = SNC
CELL_BUILD_TOOLS = GCC
CELL_GPU_TYPE = RSX
CELL_PSGL_VERSION = ultra-opt
@@ -94,8 +94,7 @@ ifeq ($(CELL_BUILD_TOOLS), SNC)
PPU_CXXLD = $(CELL_SDK)/host-win32/sn/bin/ps3ppuld.exe
PPU_CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
PPU_CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
else
ifneq($(system_platform), win)
else ifneq($(system_platform), win)
PPU_CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe
PPU_CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe
PPU_CXXLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe
+1 -1
View File
@@ -1,4 +1,4 @@
CELL_BUILD_TOOLS = SNC
CELL_BUILD_TOOLS = GCC
CELL_SDK ?= /usr/local/cell
HAVE_LOGGER = 0
CELL_MK_DIR ?= $(CELL_SDK)/samples/mk
+2
View File
@@ -12,6 +12,7 @@ ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_NEON -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB
DEFINES += -DHAVE_RUNAHEAD
else
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
@@ -29,6 +30,7 @@ else
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_RUNAHEAD = 1
include Makefile.common
BLACKLIST :=
+1 -1
View File
@@ -16,7 +16,7 @@ DEFINES :=
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_NEON -DHAVE_MENU -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB DEFINES -DHAVE_KEYMAPPER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER
ifeq ($(DEBUG), 1)
DEFINES += -DHAVE_NETLOGGER
+12 -11
View File
@@ -6,7 +6,8 @@ DEBUG = 0
GRIFFIN_BUILD = 0
SALAMANDER_BUILD = 0
WHOLE_ARCHIVE_LINK = 0
WIIU_HID = 0
WIIU_HID = 1
HAVE_RUNAHEAD = 1
WIIU_LOG_RPX = 0
BUILD_DIR = objs/wiiu
PC_DEVELOPMENT_IP_ADDRESS ?=
@@ -32,6 +33,7 @@ OBJ += wiiu/input/wpad_driver.o
OBJ += wiiu/input/kpad_driver.o
OBJ += wiiu/input/pad_functions.o
OBJ += wiiu/system/memory.o
OBJ += wiiu/system/atomic.o
OBJ += wiiu/system/exception_handler.o
OBJ += wiiu/fs/sd_fat_devoptab.o
OBJ += wiiu/fs/fs_utils.o
@@ -48,15 +50,11 @@ ifeq ($(WIIU_HID),1)
OBJ += wiiu/input/hidpad_driver.o
OBJ += wiiu/input/wiiu_hid.o
OBJ += input/connect/joypad_connection.o \
input/connect/connect_ps2adapter.o \
input/connect/connect_psxadapter.o \
input/connect/connect_ps3.o \
input/connect/connect_ps4.o \
input/connect/connect_wii.o \
input/connect/connect_nesusb.o \
input/connect/connect_snesusb.o \
input/connect/connect_wiiupro.o \
input/connect/connect_wiiugca.o
input/common/hid/hid_device_driver.o \
input/common/hid/device_wiiu_gca.o \
input/common/hid/device_ds3.o \
input/common/hid/device_ds4.o \
input/common/hid/device_null.o
endif
ifeq ($(SALAMANDER_BUILD),1)
@@ -88,6 +86,10 @@ else
DEFINES += -DHAVE_SLANG
DEFINES += -DHAVE_SHADERPIPELINE
ifeq ($(HAVE_RUNAHEAD),1)
DEFINES += -DHAVE_RUNAHEAD
endif
OBJ += wiiu/system/missing_libc_functions.o
OBJ += wiiu/shader_utils.o
OBJ += gfx/drivers/gx2_shaders/tex.o
@@ -120,7 +122,6 @@ else
HAVE_ZLIB = 1
HAVE_7ZIP = 1
HAVE_BUILTINZLIB = 1
HAVE_KEYMAPPER = 1
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 1
+120 -8
View File
@@ -4,7 +4,7 @@
# RetroArch
RetroArch is the reference frontend for the libretro API.
Popular examples of implementations for this API includes videogame system emulators and game engines, but also
Popular examples of implementations for this API includes video game system emulators and game engines as well as
more generalized 3D programs.
These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".
@@ -18,7 +18,7 @@ These programs are instantiated as dynamic libraries. We refer to these as "libr
[libretro](http://libretro.com) is an API that exposes generic audio/video/input callbacks.
A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle.
A libretro core written in portable C or C++ can run seamlessly on many platforms with very little/no porting effort.
A libretro core written in portable C or C++ can run seamlessly on many platforms with very little to no porting effort.
While RetroArch is the reference frontend for libretro, several other projects have used the libretro
interface to include support for emulators and/or game engines. libretro is completely open and free for anyone to use.
@@ -49,7 +49,7 @@ More developer-centric stuff is found [here](https://github.com/libretro/libretr
## Philosophy
RetroArch attempts to be small and lean,
RetroArch attempts to be small and lean
while still having all the useful core features expected from an emulator.
It is designed to be very portable and features a gamepad-centric UI.
It also has a full-featured command-line interface.
@@ -79,7 +79,7 @@ RetroArch has been ported to the following platforms:
- Original Microsoft Xbox
- Microsoft Xbox 360 (Libxenon/XeXDK)
- Nintendo Wii, GameCube (Libogc)
- Nintendo WiiU
- Nintendo Wii U
- Nintendo 3DS
- Nintendo Switch
- Raspberry Pi
@@ -121,7 +121,7 @@ RetroArch needs at least one of these audio driver libraries:
- DirectSound (Win32, Xbox 1)
- CoreAudio (OSX, iOS)
To run properly, RetroArch requires a libretro implementation present, however, as it's typically loaded
To run properly, RetroArch requires a libretro implementation present; however, as it's typically loaded
dynamically, it's not required at build time.
## Dependencies (Console ports, mobile)
@@ -131,12 +131,12 @@ anything other than what the respective SDKs provide.
## Configuring
The default configuration is defined in config.def.h.
The default configuration is defined in `config.def.h`.
It is not recommended to change this unless you know what you're doing.
These can later be tweaked by using a config file.
A sample configuration file is installed to /etc/retroarch.cfg. This is the system-wide config file.
A sample configuration file is installed to `/etc/retroarch.cfg`. This is the system-wide config file.
RetroArch will on startup create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg if doesn't exist.
RetroArch will on startup create a config file in `$XDG\_CONFIG\_HOME/retroarch/retroarch.cfg` if it does not exist.
Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h.
To configure joypads, use the built-in menu or the `retroarch-joyconfig` command-line tool.
@@ -144,3 +144,115 @@ To configure joypads, use the built-in menu or the `retroarch-joyconfig` command
## Compiling and installing
Instructions for compiling and installing RetroArch can be found in the [Libretro/RetroArch Documentation Center](https://docs.libretro.com/).
## CRT 15Khz Resolution Switching
CRT Switch res will turn on, on the fly. However, you will need to restart retroarch to disable it. With CRT SwitchRes enable Retroarch will start in 2560 x 480 @ 60.
If you are running windows, before enabling the CRT SwitchRes options please make sure you have installed CRTEmudriver and installed some modelines. The minimum modelins for all games to switch correctly are:
- 2560 x 192 @ 60.000000
- 2560 x 200 @ 60.000000
- 2560 x 240 @ 60.000000
- 2560 x 224 @ 60.000000
- 2560 x 237 @ 60.000000
- 2560 x 256 @ 50.000000
- 2560 x 254 @ 55.000000
- 2560 x 448 @ 60.000000
- 2560 x 480 @ 60.000000
Install these modelines replacing 2560 with your desired super resolution. The above resolutions are NTSC only so if you would be playing any PAL content please add pal modelines:
- 2560 x 192 @ 50.000000
- 2560 x 200 @ 50.000000
- 2560 x 240 @ 50.000000
- 2560 x 224 @ 50.000000
- 2560 x 288 @ 50.000000
- 2560 x 237 @ 50.000000
- 2560 x 254 @ 55.000000
- 2560 x 448 @ 50.000000
- 2560 x 480 @ 50.000000
Some games will require higher PAL resolutions which should also be installed:
- 2560 x 512 @ 50.000000
- 2560 x 576 @ 50.000000
Ideally install all these modelines and everything will work great.
## Super Resolutions
The default super resolution is 2560. It is displayed just under the CRT switch option, which can be found in video settings. This can be changed within the retroarch.cfg. The only compatible resolutions are 1920, 2560 and 3840. Any other resolutions will be ignored and native switching will be activated.
## Native Resolutions
If native resolutions are activated you will need a whole new set of modelines:
- 512 x 240 @ 50.006977 SNESpal
- 512 x 224 @ 50.006977 SNESpal
- 512 x 448 @ 50.006977 SNESpal
- 512 x 240 @ 60.098812 SNESntsc
- 512 x 224 @ 60.098812 SNESntsc
- 512 x 448 @ 60.098812 SNESntsc
- 256 x 240 @ 50.006977 SNESpal
- 256 x 448 @ 50.006977 SNESpal
- 256 x 240 @ 60.098812 SNESntsc
- 256 x 448 @ 60.098812 SNESntsc
- 320 x 240 @ 59.922745 MDntsc
- 320 x 448 @ 59.922745 MDntp
- 320 x 480 @ 59.922745 MDntsc
- 256 x 192 @ 59.922745 MDntsc
- 320 x 224 @ 59.922745 MDntsc
- 256 x 224 @ 59.922745 MDntsc
- 320 x 288 @ 49.701458 MDpal
- 320 x 576 @ 49.701458 MDpal
- 256 x 192 @ 49.701458 MDpal
- 320 x 224 @ 49.701458 MDpal
- 320 x 240 @ 49.701458 MDpal
- 320 x 448 @ 49.701458 MDpal
- 320 x 480 @ 49.701458 MDpal
- 256 x 224 @ 49.701458 MDpal
- 256 x 288 @ 49.701458 MSYSpal
- 256 x 240 @ 60.098812 NESntsc
- 256 x 240 @ 50.006977 NESpal
- 640 x 480 @ 60.130001 N64ntsc
- 640 x 237 @ 60.130001 N64ntsc
- 640 x 240 @ 60.130001 N64ntsc
- 640 x 480 @ 50.000000 N64pal
- 640 x 576 @ 50.000000 n64pal
- 640 x 288 @ 50.000000 n64pal
- 256 x 252 @ 49.759998 PSXpal
- 384 x 252 @ 49.759998 PSXpal
- 640 x 540 @ 49.759998 PSXpal
- 320 x 252 @ 49.759998 PSXpal
- 640 x 252 @ 49.759998 PSXpal
- 384 x 240 @ 59.941002 PSXntsc
- 256 x 480 @ 59.941002 PSXntsc
- 352 x 240 @ 59.820000 Saturn/SGFX_NTSCp
- 704 x 240 @ 59.820000 SaturnNTSCp
- 352 x 480 @ 59.820000 SaturnNTSCi
- 704 x 480 @ 59.820000 SaturnNTSCi
- 352 x 288 @ 49.701458 SaturnPALp
- 704 x 288 @ 49.701458 SaturnPALp
- 352 x 576 @ 49.701458 SaturnPALi
- 704 x 576 @ 49.701458 SaturnPALi
- 240 x 160 @ 59.730000 GBA
- 320 x 200 @ 60.000000 Doom
// Arcade
- 400 x 254 @ 54.706841 MK
- 384 x 224 @ 59.637405 CPS1
These modelines are more accurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution changes on the original hardware. For the best results super resolutions are the way to go.
## CRT resolution switching & Mame
Some arcade resolutions can be a lot different. There is resolution detection to ensure mame games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the mame game will look just like the original hardware.
Mame roms that run in a vertical aspect like DoDonPachi need to be rotated within mame before resolution switching and aspect correction will work. Do this before enabling CRT switchRes so that Retroarch will run in your desktop resolution. Once you have roted any games that may need it switch CRT SwitchRes on.
+384 -125
View File
@@ -45,7 +45,15 @@
#define AUDIO_BUFFER_FREE_SAMPLES_COUNT (8 * 1024)
#define AUDIO_MIXER_MAX_STREAMS 8
/**
* db_to_gain:
* @db : Decibels.
*
* Converts decibels to voltage gain.
*
* Returns: voltage gain value.
**/
#define db_to_gain(db) (powf(10.0f, (db) / 20.0f))
static const audio_driver_t *audio_drivers[] = {
#ifdef HAVE_ALSA
@@ -122,18 +130,6 @@ static const audio_driver_t *audio_drivers[] = {
NULL,
};
struct audio_mixer_stream
{
audio_mixer_sound_t *handle;
audio_mixer_voice_t *voice;
audio_mixer_stop_cb_t stop_cb;
enum audio_mixer_state state;
float volume;
void *buf;
size_t bufsize;
};
static unsigned audio_mixer_current_max_idx = 0;
static struct audio_mixer_stream audio_mixer_streams[AUDIO_MIXER_MAX_STREAMS] = {{0}};
static size_t audio_driver_chunk_size = 0;
@@ -146,10 +142,8 @@ static size_t audio_driver_rewind_size = 0;
static int16_t *audio_driver_rewind_buf = NULL;
static int16_t *audio_driver_output_samples_conv_buf = NULL;
#ifdef DEBUG
static unsigned audio_driver_free_samples_buf[AUDIO_BUFFER_FREE_SAMPLES_COUNT];
static uint64_t audio_driver_free_samples_count = 0;
#endif
static size_t audio_driver_buffer_size = 0;
static size_t audio_driver_data_ptr = 0;
@@ -183,6 +177,13 @@ static void *audio_driver_resampler_data = NULL;
static const audio_driver_t *current_audio = NULL;
static void *audio_driver_context_audio_data = NULL;
static bool audio_suspended = false;
static void audio_mixer_play_stop_sequential_cb(
audio_mixer_sound_t *sound, unsigned reason);
static void audio_mixer_play_stop_cb(
audio_mixer_sound_t *sound, unsigned reason);
enum resampler_quality audio_driver_get_resampler_quality(void)
{
settings_t *settings = config_get_ptr();
@@ -193,18 +194,31 @@ enum resampler_quality audio_driver_get_resampler_quality(void)
return (enum resampler_quality)settings->uints.audio_resampler_quality;
}
#ifdef DEBUG
audio_mixer_stream_t *audio_driver_mixer_get_stream(unsigned i)
{
if (i > (AUDIO_MIXER_MAX_STREAMS-1))
return NULL;
return &audio_mixer_streams[i];
}
const char *audio_driver_mixer_get_stream_name(unsigned i)
{
if (i > (AUDIO_MIXER_MAX_STREAMS-1))
return "N/A";
if (!string_is_empty(audio_mixer_streams[i].name))
return audio_mixer_streams[i].name;
return "N/A";
}
/**
* compute_audio_buffer_statistics:
*
* Computes audio buffer statistics.
*
**/
static void compute_audio_buffer_statistics(void)
bool compute_audio_buffer_statistics(audio_statistics_t *stats)
{
unsigned i, low_water_size, high_water_size, avg, stddev;
float avg_filled = 0.0f;
float deviation = 0.0f;
uint64_t accum = 0;
uint64_t accum_var = 0;
unsigned low_water_count = 0;
@@ -213,9 +227,21 @@ static void compute_audio_buffer_statistics(void)
(unsigned)audio_driver_free_samples_count,
AUDIO_BUFFER_FREE_SAMPLES_COUNT);
if (samples < 3)
return;
if (!stats || samples < 3)
return false;
stats->samples = (unsigned)audio_driver_free_samples_count;
#ifdef WARPUP
/* uint64 to double not implemented, fair chance
* signed int64 to double doesn't exist either */
/* https://forums.libretro.com/t/unsupported-platform-help/13903/ */
(void)stddev;
#elif defined(_MSC_VER) && _MSC_VER <= 1200
/* FIXME: error C2520: conversion from unsigned __int64
* to double not implemented, use signed __int64 */
(void)stddev;
#else
for (i = 1; i < samples; i++)
accum += audio_driver_free_samples_buf[i];
@@ -223,24 +249,17 @@ static void compute_audio_buffer_statistics(void)
for (i = 1; i < samples; i++)
{
int diff = avg - audio_driver_free_samples_buf[i];
accum_var += diff * diff;
int diff = avg - audio_driver_free_samples_buf[i];
accum_var += diff * diff;
}
#ifdef WARPUP
/* uint64 to double not implemented, fair chance signed int64 to double doesn't exist either */
/* https://forums.libretro.com/t/unsupported-platform-help/13903/ */
(void)stddev; (void)avg_filled; (void)deviation;
#elif defined(_MSC_VER) && _MSC_VER <= 1200
/* FIXME: error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64 */
(void)stddev; (void)avg_filled; (void)deviation;
#else
stddev = (unsigned)sqrt((double)accum_var / (samples - 2));
avg_filled = 1.0f - (float)avg / audio_driver_buffer_size;
deviation = (float)stddev / audio_driver_buffer_size;
stddev = (unsigned)
sqrt((double)accum_var / (samples - 2));
RARCH_LOG("[Audio]: Average audio buffer saturation: %.2f %%, standard deviation (percentage points): %.2f %%.\n",
avg_filled * 100.0, deviation * 100.0);
stats->average_buffer_saturation = (1.0f - (float)avg
/ audio_driver_buffer_size) * 100.0;
stats->std_deviation_percentage = ((float)stddev
/ audio_driver_buffer_size) * 100.0;
#endif
low_water_size = (unsigned)(audio_driver_buffer_size * 3 / 4);
@@ -254,11 +273,29 @@ static void compute_audio_buffer_statistics(void)
high_water_count++;
}
RARCH_LOG("[Audio]: Amount of time spent close to underrun: %.2f %%. Close to blocking: %.2f %%.\n",
(100.0 * low_water_count) / (samples - 1),
(100.0 * high_water_count) / (samples - 1));
stats->close_to_underrun = (100.0 * low_water_count) / (samples - 1);
stats->close_to_blocking = (100.0 * high_water_count) / (samples - 1);
return true;
}
static void report_audio_buffer_statistics(void)
{
audio_statistics_t audio_stats = {0.0f};
if (!compute_audio_buffer_statistics(&audio_stats))
return;
#ifdef DEBUG
RARCH_LOG("[Audio]: Average audio buffer saturation: %.2f %%,"
" standard deviation (percentage points): %.2f %%.\n"
"[Audio]: Amount of time spent close to underrun: %.2f %%."
" Close to blocking: %.2f %%.\n",
audio_stats.average_buffer_saturation,
audio_stats.std_deviation_percentage,
audio_stats.close_to_underrun,
audio_stats.close_to_blocking);
#endif
}
/**
* audio_driver_find_handle:
@@ -343,13 +380,17 @@ static bool audio_driver_deinit_internal(void)
command_event(CMD_EVENT_DSP_FILTER_DEINIT, NULL);
#ifdef DEBUG
compute_audio_buffer_statistics();
#endif
report_audio_buffer_statistics();
return true;
}
static void audio_driver_mixer_init(unsigned out_rate)
{
audio_mixer_init(out_rate);
}
static bool audio_driver_init_internal(bool audio_cb_inited)
{
unsigned new_rate = 0;
@@ -506,7 +547,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
{
audio_driver_buffer_size =
current_audio->buffer_size(audio_driver_context_audio_data);
audio_driver_control = true;
audio_driver_control = true;
}
else
RARCH_WARN("Audio rate control was desired, but driver does not support needed features.\n");
@@ -514,11 +555,9 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
command_event(CMD_EVENT_DSP_FILTER_INIT, NULL);
#ifdef DEBUG
audio_driver_free_samples_count = 0;
#endif
audio_mixer_init(settings->uints.audio_out_rate);
audio_driver_mixer_init(settings->uints.audio_out_rate);
/* Threaded driver is initially stopped. */
if (
@@ -560,20 +599,17 @@ void audio_driver_set_nonblocking_state(bool enable)
static void audio_driver_flush(const int16_t *data, size_t samples)
{
struct resampler_data src_data;
bool is_perfcnt_enable = false;
bool is_paused = false;
bool is_idle = false;
bool is_slowmotion = false;
const void *output_data = NULL;
unsigned output_frames = 0;
float audio_volume_gain = !audio_driver_mute_enable ?
bool is_perfcnt_enable = false;
bool is_paused = false;
bool is_idle = false;
bool is_slowmotion = false;
const void *output_data = NULL;
unsigned output_frames = 0;
float audio_volume_gain = !audio_driver_mute_enable ?
audio_driver_volume_gain : 0.0f;
src_data.data_in = NULL;
src_data.data_out = NULL;
src_data.input_frames = 0;
src_data.output_frames = 0;
src_data.ratio = 0.0f;
src_data.data_out = NULL;
src_data.output_frames = 0;
if (recording_data)
recording_push_audio(data, samples);
@@ -581,8 +617,8 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
runloop_get_status(&is_paused, &is_idle, &is_slowmotion,
&is_perfcnt_enable);
if ( is_paused ||
!audio_driver_active ||
if ( is_paused ||
!audio_driver_active ||
!audio_driver_input_data ||
!audio_driver_output_samples_buf)
return;
@@ -590,8 +626,8 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
convert_s16_to_float(audio_driver_input_data, data, samples,
audio_volume_gain);
src_data.data_in = audio_driver_input_data;
src_data.input_frames = samples >> 1;
src_data.data_in = audio_driver_input_data;
src_data.input_frames = samples >> 1;
if (audio_driver_dsp)
@@ -626,13 +662,11 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
int delta_mid = avail - half_size;
double direction = (double)delta_mid / half_size;
double adjust = 1.0 + audio_driver_rate_control_delta * direction;
#ifdef DEBUG
unsigned write_idx = audio_driver_free_samples_count++ &
(AUDIO_BUFFER_FREE_SAMPLES_COUNT - 1);
audio_driver_free_samples_buf
[write_idx] = avail;
#endif
audio_source_ratio_current =
audio_source_ratio_original * adjust;
@@ -648,7 +682,7 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
#endif
}
src_data.ratio = audio_source_ratio_current;
src_data.ratio = audio_source_ratio_current;
if (is_slowmotion)
{
@@ -661,7 +695,7 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
if (audio_mixer_active)
{
bool override = audio_driver_mixer_mute_enable ? true :
(audio_driver_mixer_volume_gain != 0.0f) ? true : false;
(audio_driver_mixer_volume_gain != 1.0f) ? true : false;
float mixer_gain = !audio_driver_mixer_mute_enable ?
audio_driver_mixer_volume_gain : 0.0f;
audio_mixer_mix(audio_driver_output_samples_buf,
@@ -696,6 +730,9 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
**/
void audio_driver_sample(int16_t left, int16_t right)
{
if (audio_suspended)
return;
audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = left;
audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = right;
@@ -708,6 +745,22 @@ void audio_driver_sample(int16_t left, int16_t right)
audio_driver_data_ptr = 0;
}
void audio_driver_menu_sample(void)
{
static int16_t samples_buf[1024] = {0};
struct retro_system_av_info
*av_info = video_viewport_get_system_av_info();
const struct retro_system_timing *info =
(const struct retro_system_timing*)&av_info->timing;
unsigned sample_count = (info->sample_rate / info->fps) * 2;
while (sample_count > 1024)
{
audio_driver_flush(samples_buf, 1024);
sample_count -= 1024;
}
audio_driver_flush(samples_buf, sample_count);
}
/**
* audio_driver_sample_batch:
* @data : pointer to audio buffer.
@@ -723,6 +776,9 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1))
frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1;
if (audio_suspended)
return frames;
audio_driver_flush(data, frames << 1);
return frames;
@@ -820,13 +876,13 @@ void audio_driver_monitor_adjust_system_rates(void)
{
float timing_skew;
settings_t *settings = config_get_ptr();
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
float video_refresh_rate = settings->floats.video_refresh_rate;
float max_timing_skew = settings->floats.audio_max_timing_skew;
const struct retro_system_timing *info = av_info ?
(const struct retro_system_timing*)&av_info->timing : NULL;
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
const struct retro_system_timing *info =
(const struct retro_system_timing*)&av_info->timing;
if (!info || info->sample_rate <= 0.0)
if (info->sample_rate <= 0.0)
return;
timing_skew = fabs(1.0f - info->fps / video_refresh_rate);
@@ -956,6 +1012,12 @@ bool audio_driver_mixer_extension_supported(const char *ext)
string_list_append(str_list, "mod", attr);
string_list_append(str_list, "s3m", attr);
string_list_append(str_list, "xm", attr);
#endif
#ifdef HAVE_DR_FLAC
string_list_append(str_list, "flac", attr);
#endif
#ifdef HAVE_DR_MP3
string_list_append(str_list, "mp3", attr);
#endif
string_list_append(str_list, "wav", attr);
@@ -1001,18 +1063,16 @@ static void audio_mixer_play_stop_cb(
{
unsigned i = (unsigned)idx;
#if 0
if (audio_mixer_streams[i].buf != NULL)
free(audio_mixer_streams[i].buf);
#endif
if (!string_is_empty(audio_mixer_streams[i].name))
free(audio_mixer_streams[i].name);
audio_mixer_streams[i].name = NULL;
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
audio_mixer_streams[i].volume = 0.0f;
audio_mixer_streams[i].buf = NULL;
audio_mixer_streams[i].stop_cb = NULL;
audio_mixer_streams[i].handle = NULL;
audio_mixer_streams[i].voice = NULL;
audio_mixer_current_max_idx--;
}
break;
case AUDIO_MIXER_SOUND_STOPPED:
@@ -1022,15 +1082,75 @@ static void audio_mixer_play_stop_cb(
}
}
static void audio_mixer_play_stop_sequential_cb(
audio_mixer_sound_t *sound, unsigned reason)
{
int idx = audio_mixer_find_index(sound);
switch (reason)
{
case AUDIO_MIXER_SOUND_FINISHED:
audio_mixer_destroy(sound);
if (idx >= 0)
{
unsigned i = (unsigned)idx;
if (!string_is_empty(audio_mixer_streams[i].name))
free(audio_mixer_streams[i].name);
audio_mixer_streams[i].name = NULL;
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
audio_mixer_streams[i].volume = 0.0f;
audio_mixer_streams[i].buf = NULL;
audio_mixer_streams[i].stop_cb = NULL;
audio_mixer_streams[i].handle = NULL;
audio_mixer_streams[i].voice = NULL;
i++;
for (; i < AUDIO_MIXER_MAX_STREAMS; i++)
{
if (audio_mixer_streams[i].state == AUDIO_STREAM_STATE_STOPPED)
{
audio_driver_mixer_play_stream_sequential(i);
break;
}
}
}
break;
case AUDIO_MIXER_SOUND_STOPPED:
break;
case AUDIO_MIXER_SOUND_REPEATED:
break;
}
}
bool audio_driver_mixer_get_free_stream_slot(unsigned *id)
{
unsigned i;
for (i = 0; i < AUDIO_MIXER_MAX_STREAMS; i++)
{
if (audio_mixer_streams[i].state == AUDIO_STREAM_STATE_NONE)
{
*id = i;
return true;
}
}
return false;
}
bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
{
unsigned free_slot = 0;
audio_mixer_voice_t *voice = NULL;
audio_mixer_sound_t *handle = NULL;
audio_mixer_stop_cb_t stop_cb = audio_mixer_play_stop_cb;
bool looped = false;
void *buf = NULL;
if (audio_mixer_current_max_idx >= AUDIO_MIXER_MAX_STREAMS)
if (!audio_driver_mixer_get_free_stream_slot(&free_slot))
return false;
if (params->state == AUDIO_STREAM_STATE_NONE)
@@ -1054,9 +1174,18 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
case AUDIO_MIXER_TYPE_MOD:
handle = audio_mixer_load_mod(buf, (int32_t)params->bufsize);
break;
case AUDIO_MIXER_TYPE_FLAC:
#ifdef HAVE_DR_FLAC
handle = audio_mixer_load_flac(buf, (int32_t)params->bufsize);
#endif
break;
case AUDIO_MIXER_TYPE_MP3:
#ifdef HAVE_DR_MP3
handle = audio_mixer_load_mp3(buf, (int32_t)params->bufsize);
#endif
break;
case AUDIO_MIXER_TYPE_NONE:
free(buf);
return false;
break;
}
if (!handle)
@@ -1065,74 +1194,193 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
return false;
}
if (params->state == AUDIO_STREAM_STATE_PLAYING)
switch (params->state)
{
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
audio_set_bool(AUDIO_ACTION_MIXER, true);
}
else if (params->state == AUDIO_STREAM_STATE_PLAYING_LOOPED)
{
looped = true;
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
audio_set_bool(AUDIO_ACTION_MIXER, true);
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
looped = true;
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
break;
case AUDIO_STREAM_STATE_PLAYING:
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
break;
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
stop_cb = audio_mixer_play_stop_sequential_cb;
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
break;
default:
break;
}
audio_mixer_streams[audio_mixer_current_max_idx].buf = buf;
audio_mixer_streams[audio_mixer_current_max_idx].handle = handle;
audio_mixer_streams[audio_mixer_current_max_idx].voice = voice;
audio_mixer_streams[audio_mixer_current_max_idx].state = params->state;
audio_mixer_streams[audio_mixer_current_max_idx].volume = params->volume;
audio_mixer_streams[audio_mixer_current_max_idx].stop_cb = stop_cb;
audio_mixer_active = true;
audio_mixer_current_max_idx++;
audio_mixer_streams[free_slot].name = !string_is_empty(params->basename) ? strdup(params->basename) : NULL;
audio_mixer_streams[free_slot].buf = buf;
audio_mixer_streams[free_slot].handle = handle;
audio_mixer_streams[free_slot].voice = voice;
audio_mixer_streams[free_slot].state = params->state;
audio_mixer_streams[free_slot].volume = params->volume;
audio_mixer_streams[free_slot].stop_cb = stop_cb;
return true;
}
static void audio_driver_mixer_remove_stream(unsigned i)
enum audio_mixer_state audio_driver_mixer_get_stream_state(unsigned i)
{
audio_mixer_sound_t *handle = audio_mixer_streams[i].handle;
audio_mixer_voice_t *voice = audio_mixer_streams[i].voice;
if (i >= AUDIO_MIXER_MAX_STREAMS)
return AUDIO_STREAM_STATE_NONE;
return audio_mixer_streams[i].state;
}
static void audio_driver_mixer_play_stream_internal(unsigned i, unsigned type)
{
bool set_state = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
return;
switch (audio_mixer_streams[i].state)
{
case AUDIO_STREAM_STATE_STOPPED:
audio_mixer_streams[i].voice = audio_mixer_play(audio_mixer_streams[i].handle,
(type == AUDIO_STREAM_STATE_PLAYING_LOOPED) ? true : false,
1.0f, audio_mixer_streams[i].stop_cb);
set_state = true;
break;
case AUDIO_STREAM_STATE_PLAYING:
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
case AUDIO_STREAM_STATE_NONE:
break;
}
if (set_state)
audio_mixer_streams[i].state = (enum audio_mixer_state)type;
}
void audio_driver_mixer_play_stream(unsigned i)
{
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_cb;
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING);
}
void audio_driver_mixer_play_stream_looped(unsigned i)
{
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_cb;
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING_LOOPED);
}
void audio_driver_mixer_play_stream_sequential(unsigned i)
{
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_sequential_cb;
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL);
}
float audio_driver_mixer_get_stream_volume(unsigned i)
{
if (i >= AUDIO_MIXER_MAX_STREAMS)
return 0.0f;
return audio_mixer_streams[i].volume;
}
void audio_driver_mixer_set_stream_volume(unsigned i, float vol)
{
audio_mixer_voice_t *voice = NULL;
if (i >= AUDIO_MIXER_MAX_STREAMS)
return;
audio_mixer_streams[i].volume = vol;
voice = audio_mixer_streams[i].voice;
if (voice)
audio_mixer_voice_set_volume(voice, db_to_gain(vol));
}
void audio_driver_mixer_stop_stream(unsigned i)
{
bool set_state = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
return;
switch (audio_mixer_streams[i].state)
{
case AUDIO_STREAM_STATE_PLAYING:
if (voice)
audio_mixer_stop(voice);
if (handle)
audio_mixer_destroy(handle);
break;
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
if (voice)
audio_mixer_stop(voice);
if (handle)
audio_mixer_destroy(handle);
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
set_state = true;
break;
case AUDIO_STREAM_STATE_STOPPED:
if (handle)
audio_mixer_destroy(handle);
case AUDIO_STREAM_STATE_NONE:
break;
}
if (set_state)
{
audio_mixer_voice_t *voice = audio_mixer_streams[i].voice;
if (voice)
audio_mixer_stop(voice);
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_STOPPED;
audio_mixer_streams[i].volume = 1.0f;
}
}
void audio_driver_mixer_remove_stream(unsigned i)
{
bool destroy = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
return;
switch (audio_mixer_streams[i].state)
{
case AUDIO_STREAM_STATE_PLAYING:
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
audio_driver_mixer_stop_stream(i);
destroy = true;
break;
case AUDIO_STREAM_STATE_STOPPED:
destroy = true;
break;
case AUDIO_STREAM_STATE_NONE:
break;
}
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
audio_mixer_streams[i].volume = 0.0f;
audio_mixer_streams[i].stop_cb = NULL;
audio_mixer_streams[i].handle = NULL;
audio_mixer_streams[i].voice = NULL;
if (destroy)
{
audio_mixer_sound_t *handle = audio_mixer_streams[i].handle;
if (handle)
audio_mixer_destroy(handle);
if (!string_is_empty(audio_mixer_streams[i].name))
free(audio_mixer_streams[i].name);
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
audio_mixer_streams[i].stop_cb = NULL;
audio_mixer_streams[i].volume = 0.0f;
audio_mixer_streams[i].handle = NULL;
audio_mixer_streams[i].voice = NULL;
audio_mixer_streams[i].name = NULL;
}
}
static void audio_driver_mixer_deinit(void)
{
unsigned i;
audio_set_bool(AUDIO_ACTION_MIXER, false);
audio_mixer_active = false;
for (i = 0; i < AUDIO_MIXER_MAX_STREAMS; i++)
{
audio_driver_mixer_stop_stream(i);
audio_driver_mixer_remove_stream(i);
}
audio_mixer_current_max_idx = 0;
audio_mixer_done();
}
@@ -1286,11 +1534,31 @@ bool audio_driver_owns_driver(void)
return audio_driver_data_own;
}
void audio_driver_suspend(void)
{
audio_suspended = true;
}
bool audio_driver_is_suspended(void)
{
return audio_suspended;
}
void audio_driver_resume(void)
{
audio_suspended = false;
}
void audio_driver_set_active(void)
{
audio_driver_active = true;
}
bool audio_driver_is_active(void)
{
return audio_driver_active;
}
void audio_driver_destroy(void)
{
audio_driver_active = false;
@@ -1311,15 +1579,6 @@ void audio_set_bool(enum audio_action action, bool val)
}
}
/**
* db_to_gain:
* @db : Decibels.
*
* Converts decibels to voltage gain.
*
* Returns: voltage gain value.
**/
#define db_to_gain(db) (powf(10.0f, (db) / 20.0f))
void audio_set_float(enum audio_action action, float val)
{
+65 -8
View File
@@ -35,6 +35,8 @@ RETRO_BEGIN_DECLS
#define AUDIO_MAX_RATIO 16
#define AUDIO_MIXER_MAX_STREAMS 16
enum audio_action
{
AUDIO_ACTION_NONE = 0,
@@ -46,6 +48,36 @@ enum audio_action
AUDIO_ACTION_MIXER
};
enum audio_mixer_state
{
AUDIO_STREAM_STATE_NONE = 0,
AUDIO_STREAM_STATE_STOPPED,
AUDIO_STREAM_STATE_PLAYING,
AUDIO_STREAM_STATE_PLAYING_LOOPED,
AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL
};
typedef struct audio_mixer_stream
{
audio_mixer_sound_t *handle;
audio_mixer_voice_t *voice;
audio_mixer_stop_cb_t stop_cb;
enum audio_mixer_state state;
float volume;
void *buf;
char *name;
size_t bufsize;
} audio_mixer_stream_t;
typedef struct audio_statistics
{
float average_buffer_saturation;
float std_deviation_percentage;
float close_to_underrun;
float close_to_blocking;
unsigned samples;
} audio_statistics_t;
typedef struct audio_driver
{
/* Creates and initializes handle to audio driver.
@@ -128,20 +160,13 @@ typedef struct audio_driver
size_t (*buffer_size)(void *data);
} audio_driver_t;
enum audio_mixer_state
{
AUDIO_STREAM_STATE_NONE = 0,
AUDIO_STREAM_STATE_STOPPED,
AUDIO_STREAM_STATE_PLAYING,
AUDIO_STREAM_STATE_PLAYING_LOOPED
};
typedef struct audio_mixer_stream_params
{
float volume;
enum audio_mixer_type type;
enum audio_mixer_state state;
void *buf;
char *basename;
size_t bufsize;
audio_mixer_stop_cb_t cb;
} audio_mixer_stream_params_t;
@@ -152,8 +177,16 @@ void audio_driver_set_own_driver(void);
void audio_driver_unset_own_driver(void);
void audio_driver_suspend(void);
bool audio_driver_is_suspended(void);
void audio_driver_resume(void);
void audio_driver_set_active(void);
bool audio_driver_is_active(void);
void audio_driver_destroy(void);
void audio_driver_deinit_resampler(void);
@@ -254,10 +287,34 @@ bool audio_driver_deinit(void);
bool audio_driver_init(void);
void audio_driver_menu_sample(void);
audio_mixer_stream_t *audio_driver_mixer_get_stream(unsigned i);
bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params);
void audio_driver_mixer_play_stream(unsigned i);
void audio_driver_mixer_play_stream_sequential(unsigned i);
void audio_driver_mixer_play_stream_looped(unsigned i);
void audio_driver_mixer_stop_stream(unsigned i);
float audio_driver_mixer_get_stream_volume(unsigned i);
void audio_driver_mixer_set_stream_volume(unsigned i, float vol);
void audio_driver_mixer_remove_stream(unsigned i);
enum resampler_quality audio_driver_get_resampler_quality(void);
enum audio_mixer_state audio_driver_mixer_get_stream_state(unsigned i);
const char *audio_driver_mixer_get_stream_name(unsigned i);
bool compute_audio_buffer_statistics(audio_statistics_t *stats);
extern audio_driver_t audio_rsound;
extern audio_driver_t audio_oss;
extern audio_driver_t audio_alsa;
+3 -2
View File
@@ -83,12 +83,13 @@ static void *gx_audio_init(const char *device,
AIInit(NULL);
AIRegisterDMACallback(dma_callback);
if (rate < 33000)
//ranges 0-32000 (default low) and 40000-47999 (in settings going down from 48000) -> set to 32000 hz
if (rate <= 32000 || (rate >= 40000 && rate < 48000))
{
AISetDSPSampleRate(AI_SAMPLERATE_32KHZ);
*new_rate = 32000;
}
else
else //ranges 32001-39999 (in settings going up from 32000) and 48000-max (default high) -> set to 48000 hz
{
AISetDSPSampleRate(AI_SAMPLERATE_48KHZ);
*new_rate = 48000;
+3
View File
@@ -133,6 +133,9 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency,
sl->buf_count = (latency * 4 * rate + 500) / 1000;
sl->buf_count = (sl->buf_count + sl->buf_size / 2) / sl->buf_size;
if (sl->buf_count < 2)
sl->buf_count = 2;
sl->buffer = (uint8_t**)calloc(sizeof(uint8_t*), sl->buf_count);
if (!sl->buffer)
goto error;
+5 -7
View File
@@ -18,6 +18,7 @@
#include <stdint.h>
#include<libtransistor/nx.h>
#include<libtransistor/alloc_pages.h>
#include "../audio_driver.h"
#include "../../verbosity.h"
@@ -27,12 +28,6 @@ static const int max_num_samples = sample_rate;
static const int num_channels = 2;
static const size_t sample_buffer_size = ((max_num_samples * num_channels * sizeof(uint16_t)) + 0xfff) & ~0xfff;
/* don't think this can be in mapped memory, since samples get DMA'd out of it */
static uint16_t __attribute__((aligned(0x1000))) sample_buffer_1[sample_buffer_size/sizeof(uint16_t)];
static uint16_t __attribute__((aligned(0x1000))) sample_buffer_2[sample_buffer_size/sizeof(uint16_t)];
static uint16_t __attribute__((aligned(0x1000))) sample_buffer_3[sample_buffer_size/sizeof(uint16_t)];
static uint16_t *sample_buffers[3] = {sample_buffer_1, sample_buffer_2, sample_buffer_3};
typedef struct
{
audio_output_t output;
@@ -254,11 +249,14 @@ static void *switch_audio_init(const char *device,
for(i = 0; i < 3; i++)
{
swa->buffers[i].ptr = &swa->buffers[i].sample_data;
swa->buffers[i].sample_data = sample_buffers[i];
swa->buffers[i].sample_data = alloc_pages(sample_buffer_size, sample_buffer_size, NULL);
swa->buffers[i].buffer_size = sample_buffer_size;
swa->buffers[i].data_size = sample_buffer_size;
swa->buffers[i].unknown = 0;
if(swa->buffers[i].sample_data == NULL)
goto fail_audio_output;
if (audio_ipc_output_append_buffer(&swa->output, &swa->buffers[i]) != RESULT_OK)
goto fail_audio_output;
}
+205 -454
View File
File diff suppressed because it is too large. Load diff
+15 -1
View File
@@ -38,6 +38,20 @@ End of setup
#define CHEEVOS_TAG "[CHEEVOS]: "
#ifdef CHEEVOS_VERBOSE
#define CHEEVOS_LOG RARCH_LOG
#define CHEEVOS_ERR RARCH_ERR
#else
void cheevos_log(const char *fmt, ...);
#define CHEEVOS_LOG cheevos_log
#define CHEEVOS_ERR cheevos_log
#endif
typedef struct cheevos_ctx_desc
{
unsigned idx;
@@ -64,7 +78,7 @@ typedef enum
CHEEVOS_CONSOLE_PLAYSTATION = 12,
CHEEVOS_CONSOLE_ATARI_LYNX = 13,
CHEEVOS_CONSOLE_NEOGEO_POCKET = 14,
CHEEVOS_CONSOLE_XBOX_360 = 15,
CHEEVOS_CONSOLE_GAME_GEAR = 15,
CHEEVOS_CONSOLE_GAMECUBE = 16,
CHEEVOS_CONSOLE_ATARI_JAGUAR = 17,
CHEEVOS_CONSOLE_NINTENDO_DS = 18,
+1 -4
View File
@@ -65,7 +65,7 @@ static cheevos_cond_op_t cheevos_cond_parse_operator(const char** memaddr)
}
else
{
RARCH_ERR(CHEEVOS_TAG "unknown operator %c\n.", *str);
CHEEVOS_ERR(CHEEVOS_TAG "unknown operator %c\n.", *str);
op = CHEEVOS_COND_OP_EQUALS;
}
@@ -168,9 +168,6 @@ void cheevos_cond_parse_in_set(cheevos_cond_t* cond, const char* memaddr, unsign
if (index == which)
{
cheevos_cond_parse(cond, &memaddr);
#ifdef CHEEVOS_VERBOSE
/*cheevos_log_cond(cond);*/
#endif
cond++;
}
else
+1 -18
View File
@@ -24,17 +24,6 @@
#include "../core.h"
#include "../verbosity.h"
static void STUB_LOG(const char *fmt, ...)
{
(void)fmt;
}
#ifdef CHEEVOS_VERBOSE
#define CHEEVOS_LOG RARCH_LOG
#else
#define CHEEVOS_LOG STUB_LOG
#endif
/*****************************************************************************
Parsing
*****************************************************************************/
@@ -191,12 +180,6 @@ void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console)
var->value -= 0x2000;
}
}
else if (console == CHEEVOS_CONSOLE_NEOGEO_POCKET)
{
if (var->value >= 0x4000 && var->value <= 0x7fff)
CHEEVOS_LOG(CHEEVOS_TAG "NGP memory address %X adjusted to %X\n", var->value, var->value - 0x004000);
var->value -= 0x4000;
}
if (system->mmaps.num_descriptors != 0)
{
@@ -333,7 +316,7 @@ uint8_t* cheevos_var_get_memory(const cheevos_var_t* var)
meminfo.id = RETRO_MEMORY_RTC;
break;
default:
RARCH_ERR(CHEEVOS_TAG "invalid bank id: %s\n", var->bank_id);
CHEEVOS_ERR(CHEEVOS_TAG "invalid bank id: %s\n", var->bank_id);
break;
}
+75 -47
View File
@@ -140,6 +140,8 @@ static const struct cmd_action_map action_map[] = {
static const struct cmd_map map[] = {
{ "FAST_FORWARD", RARCH_FAST_FORWARD_KEY },
{ "FAST_FORWARD_HOLD", RARCH_FAST_FORWARD_HOLD_KEY },
{ "SLOWMOTION", RARCH_SLOWMOTION_KEY },
{ "SLOWMOTION_HOLD", RARCH_SLOWMOTION_HOLD_KEY },
{ "LOAD_STATE", RARCH_LOAD_STATE_KEY },
{ "SAVE_STATE", RARCH_SAVE_STATE_KEY },
{ "FULLSCREEN_TOGGLE", RARCH_FULLSCREEN_TOGGLE_KEY },
@@ -160,7 +162,6 @@ static const struct cmd_map map[] = {
{ "MUTE", RARCH_MUTE },
{ "OSK", RARCH_OSK },
{ "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH },
{ "SLOWMOTION", RARCH_SLOWMOTION },
{ "VOLUME_UP", RARCH_VOLUME_UP },
{ "VOLUME_DOWN", RARCH_VOLUME_DOWN },
{ "OVERLAY_NEXT", RARCH_OVERLAY_NEXT },
@@ -168,6 +169,7 @@ static const struct cmd_map map[] = {
{ "DISK_NEXT", RARCH_DISK_NEXT },
{ "DISK_PREV", RARCH_DISK_PREV },
{ "GRAB_MOUSE_TOGGLE", RARCH_GRAB_MOUSE_TOGGLE },
{ "UI_COMPANION_TOGGLE", RARCH_UI_COMPANION_TOGGLE },
{ "GAME_FOCUS_TOGGLE", RARCH_GAME_FOCUS_TOGGLE },
{ "MENU_TOGGLE", RARCH_MENU_TOGGLE },
{ "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP },
@@ -219,26 +221,13 @@ static bool command_reply(const char * data, size_t len)
bool command_set_shader(const char *arg)
{
char msg[256];
enum rarch_shader_type type = RARCH_SHADER_NONE;
struct video_shader *shader = menu_shader_get();
bool is_preset = false;
struct video_shader *shader = menu_shader_get();
enum rarch_shader_type type = video_shader_get_type_from_ext(
path_get_extension(arg), &is_preset);
switch (msg_hash_to_file_type(msg_hash_calculate(path_get_extension(arg))))
{
case FILE_TYPE_SHADER_GLSL:
case FILE_TYPE_SHADER_PRESET_GLSLP:
type = RARCH_SHADER_GLSL;
break;
case FILE_TYPE_SHADER_CG:
case FILE_TYPE_SHADER_PRESET_CGP:
type = RARCH_SHADER_CG;
break;
case FILE_TYPE_SHADER_SLANG:
case FILE_TYPE_SHADER_PRESET_SLANGP:
type = RARCH_SHADER_SLANG;
break;
default:
return false;
}
if (type == RARCH_SHADER_NONE)
return false;
snprintf(msg, sizeof(msg), "Shader: \"%s\"", arg);
runloop_msg_queue_push(msg, 1, 120, true);
@@ -255,8 +244,7 @@ static bool command_read_ram(const char *arg)
{
cheevos_var_t var;
unsigned i;
unsigned nbytes;
char reply[256];
char reply[256] = {0};
const uint8_t * data = NULL;
char *reply_at = NULL;
@@ -290,7 +278,6 @@ static bool command_read_ram(const char *arg)
static bool command_write_ram(const char *arg)
{
int i;
cheevos_var_t var;
unsigned nbytes = 0;
uint8_t *data = NULL;
@@ -1029,7 +1016,7 @@ static void command_event_init_controllers(void)
/* Ideally these checks shouldn't be required but if we always
* call core_set_controller_port_device input won't work on
* cores that don't set port information properly */
if (info && info->ports.size != 0 && i < info->ports.size)
if (info && info->ports.size != 0)
set_controller = true;
break;
default:
@@ -1043,7 +1030,7 @@ static void command_event_init_controllers(void)
break;
}
if (set_controller)
if (set_controller && i < info->ports.size)
{
pad.device = device;
pad.port = i;
@@ -1714,31 +1701,28 @@ void command_playlist_push_write(
void command_playlist_update_write(
void *data,
size_t idx,
const char *core_display_name,
const char *path,
const char *label,
const char *path)
const char *core_path,
const char *core_display_name,
const char *crc32,
const char *db_name)
{
playlist_t *plist = (playlist_t*)data;
playlist_t *playlist = NULL;
playlist_t *playlist = plist ? plist : playlist_get_cached();
if (plist)
playlist = plist;
#ifdef HAVE_MENU
else
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist);
#endif
if (!playlist)
return;
playlist_update(
playlist,
idx,
label,
NULL,
path,
label,
core_path,
core_display_name,
NULL,
NULL);
crc32,
db_name);
playlist_write_file(playlist);
}
@@ -1804,10 +1788,11 @@ bool command_event(enum event_command cmd, void *data)
return false;
#endif
libretro_get_system_info(
if (!libretro_get_system_info(
core_path,
system,
&system_info->load_no_content);
&system_info->load_no_content))
return false;
info_find.path = core_path;
if (!core_info_load(&info_find))
@@ -1820,11 +1805,17 @@ bool command_event(enum event_command cmd, void *data)
}
break;
case CMD_EVENT_LOAD_CORE:
command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
{
bool success = command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
#ifndef HAVE_DYNAMIC
command_event(CMD_EVENT_QUIT, NULL);
#else
if (!success)
return false;
#endif
break;
}
case CMD_EVENT_LOAD_STATE:
/* Immutable - disallow savestate load when
* we absolutely cannot change game state. */
@@ -1942,7 +1933,7 @@ bool command_event(enum event_command cmd, void *data)
cheevos_toggle_hardcore_mode();
#endif
break;
/* this fallthrough is on purpose, it should do
/* this fallthrough is on purpose, it should do
a CMD_EVENT_REINIT too */
case CMD_EVENT_REINIT_FROM_TOGGLE:
retroarch_unset_forced_fullscreen();
@@ -2027,7 +2018,7 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_AUTOSAVE_INIT:
command_event(CMD_EVENT_AUTOSAVE_DEINIT, NULL);
#ifdef HAVE_THREADS
{
{
#ifdef HAVE_NETWORKING
/* Only enable state manager if netplay is not underway
TODO: Add a setting for these tweaks */
@@ -2041,7 +2032,7 @@ TODO: Add a setting for these tweaks */
else
runloop_unset(RUNLOOP_ACTION_AUTOSAVE);
}
}
}
#endif
break;
case CMD_EVENT_AUTOSAVE_STATE:
@@ -2213,11 +2204,22 @@ TODO: Add a setting for these tweaks */
break;
case CMD_EVENT_CORE_INFO_INIT:
{
char ext_name[255];
settings_t *settings = config_get_ptr();
ext_name[0] = '\0';
command_event(CMD_EVENT_CORE_INFO_DEINIT, NULL);
if (!frontend_driver_get_core_extension(ext_name, sizeof(ext_name)))
return false;
if (!string_is_empty(settings->paths.directory_libretro))
core_info_init_list();
core_info_init_list(settings->paths.path_libretro_info,
settings->paths.directory_libretro,
ext_name,
settings->bools.show_hidden_files
);
}
break;
case CMD_EVENT_CORE_DEINIT:
@@ -2312,7 +2314,7 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_RESUME:
rarch_menu_running_finished();
if (ui_companion_is_on_foreground())
ui_companion_driver_toggle();
ui_companion_driver_toggle(false);
break;
case CMD_EVENT_ADD_TO_FAVORITES:
{
@@ -2340,6 +2342,27 @@ TODO: Add a setting for these tweaks */
);
runloop_msg_queue_push(msg_hash_to_str(MSG_ADDED_TO_FAVORITES), 1, 180, true);
break;
}
case CMD_EVENT_RESET_CORE_ASSOCIATION:
{
const char *core_name = "DETECT";
const char *core_path = "DETECT";
size_t *playlist_index = (size_t*)data;
command_playlist_update_write(
NULL,
*playlist_index,
NULL,
NULL,
core_path,
core_name,
NULL,
NULL);
runloop_msg_queue_push(msg_hash_to_str(MSG_RESET_CORE_ASSOCIATION), 1, 180, true);
break;
}
case CMD_EVENT_RESTART_RETROARCH:
if (!frontend_driver_set_fork(FRONTEND_FORK_RESTART))
@@ -2562,7 +2585,7 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_FULLSCREEN_TOGGLE:
{
settings_t *settings = config_get_ptr();
bool new_fullscreen_state = !settings->bools.video_fullscreen
bool new_fullscreen_state = !settings->bools.video_fullscreen
&& !retroarch_is_forced_fullscreen();
if (!video_driver_has_windowed())
return false;
@@ -2721,6 +2744,11 @@ TODO: Add a setting for these tweaks */
video_driver_show_mouse();
}
break;
case CMD_EVENT_UI_COMPANION_TOGGLE:
{
ui_companion_driver_toggle(true);
break;
}
case CMD_EVENT_GAME_FOCUS_TOGGLE:
{
static bool game_focus_state = false;
+9 -2
View File
@@ -138,6 +138,8 @@ enum event_command
CMD_EVENT_RESUME,
/* Add a playlist entry to favorites. */
CMD_EVENT_ADD_TO_FAVORITES,
/* Reset playlist entry associated core to DETECT */
CMD_EVENT_RESET_CORE_ASSOCIATION,
/* Toggles pause. */
CMD_EVENT_PAUSE_TOGGLE,
/* Pauses RetroArch. */
@@ -216,6 +218,8 @@ enum event_command
CMD_EVENT_GRAB_MOUSE_TOGGLE,
/* Toggles game focus. */
CMD_EVENT_GAME_FOCUS_TOGGLE,
/* Toggles desktop menu. */
CMD_EVENT_UI_COMPANION_TOGGLE,
/* Toggles fullscreen mode. */
CMD_EVENT_FULLSCREEN_TOGGLE,
CMD_EVENT_PERFCNT_REPORT_FRONTEND_LOG,
@@ -269,9 +273,12 @@ void command_playlist_push_write(
void command_playlist_update_write(
void *data,
size_t idx,
const char *core_display_name,
const char *path,
const char *label,
const char *path);
const char *core_path,
const char *core_display_name,
const char *crc32,
const char *db_name);
RETRO_END_DECLS
+28 -8
View File
@@ -67,6 +67,10 @@ static bool bundle_assets_extract_enable = false;
static bool materialui_icons_enable = true;
#endif
static const bool crt_switch_resolution = false;
static const int crt_switch_resolution_super = 2560;
static const bool def_history_list_enable = true;
static const bool def_playlist_entry_remove = true;
static const bool def_playlist_entry_rename = true;
@@ -293,6 +297,7 @@ 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;
@@ -300,9 +305,10 @@ static unsigned xmb_alpha_factor = 75;
static unsigned menu_font_color_red = 255;
static unsigned menu_font_color_green = 255;
static unsigned menu_font_color_blue = 255;
static unsigned xmb_menu_layout = 0;
static unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME;
static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE;
#ifdef HAVE_LAKKA
#if defined(HAVE_LAKKA) || defined(__arm__) || defined(__PPC64__) || defined(__ppc64__) || defined(__powerpc64__) || defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__)
static bool xmb_shadows_enable = false;
#else
static bool xmb_shadows_enable = true;
@@ -352,6 +358,8 @@ static bool default_screenshots_in_content_dir = false;
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
#elif defined(VITA)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT;
#elif defined(SWITCH)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT;
#else
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE;
#endif
@@ -587,6 +595,12 @@ static const float slowmotion_ratio = 3.0;
/* Maximum fast forward ratio. */
static const float fastforward_ratio = 0.0;
/* Run core logic one or more frames ahead then load the state back to reduce perceived input lag. */
static const unsigned run_ahead_frames = 1;
/* When using the Run Ahead feature, use a secondary instance of the core. */
static const bool run_ahead_secondary_instance = true;
/* Enable stdin/network command interface. */
static const bool network_cmd_enable = false;
static const uint16_t network_cmd_port = 55355;
@@ -599,11 +613,7 @@ static const unsigned default_content_history_size = 100;
/* Show Menu start-up screen on boot. */
static const bool default_menu_show_start_screen = true;
#ifdef RARCH_MOBILE
static const bool menu_dpi_override_enable = false;
#else
static const bool menu_dpi_override_enable = true;
#endif
#ifdef RARCH_MOBILE
static const unsigned menu_dpi_override_value = 72;
@@ -648,6 +658,10 @@ static const unsigned input_bind_timeout = 5;
static const unsigned menu_thumbnails_default = 3;
static const unsigned menu_left_thumbnails_default = 0;
static const bool xmb_vertical_thumbnails = false;
#ifdef IOS
static const bool ui_companion_start_on_boot = false;
#else
@@ -656,6 +670,12 @@ static const bool ui_companion_start_on_boot = true;
static const bool ui_companion_enable = false;
/* Currently only used to show the WIMP UI on startup */
static const bool ui_companion_toggle = false;
/* Only init the WIMP UI for this session if this is enabled */
static const bool desktop_menu_enable = true;
#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)
@@ -717,11 +737,11 @@ static char buildbot_server_url[] = "";
#elif defined(WIIU)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/wiiu/latest/";
#elif defined(__CELLOS_LV2__) && defined(DEX_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/dex-ps3/";
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/dex-ps3/";
#elif defined(__CELLOS_LV2__) && defined(CEX_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/cex-ps3/";
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/cex-ps3/";
#elif defined(__CELLOS_LV2__) && defined(ODE_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/ode-ps3/";
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/ode-ps3/";
#else
static char buildbot_server_url[] = "";
#endif
+6 -2
View File
@@ -66,6 +66,8 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ 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 },
{ true, RARCH_SLOWMOTION_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_HOLD_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -86,7 +88,6 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -96,6 +97,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_UI_COMPANION_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_SPACE, NO_BTN, NO_BTN, 0, AXIS_NONE },
#else
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_z, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -140,6 +142,8 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, RETROK_e, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -160,7 +164,6 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_e, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -170,6 +173,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_SCROLLOCK, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_UI_COMPANION_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, RETROK_F5, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_F1, NO_BTN, NO_BTN, 0, AXIS_NONE },
#endif
};
+103 -99
View File
@@ -67,6 +67,7 @@ struct config_bool_setting
bool def_enable;
bool def;
bool handle;
enum rarch_override_setting override;
};
struct config_int_setting
@@ -76,6 +77,7 @@ struct config_int_setting
bool def_enable;
int def;
bool handle;
enum rarch_override_setting override;
};
struct config_uint_setting
@@ -85,6 +87,7 @@ struct config_uint_setting
bool def_enable;
unsigned def;
bool handle;
enum rarch_override_setting override;
};
struct config_float_setting
@@ -94,6 +97,7 @@ struct config_float_setting
bool def_enable;
float def;
bool handle;
enum rarch_override_setting override;
};
struct config_array_setting
@@ -103,6 +107,7 @@ struct config_array_setting
bool def_enable;
const char *def;
bool handle;
enum rarch_override_setting override;
};
struct config_path_setting
@@ -535,6 +540,9 @@ static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL;
#define SETTING_ARRAY(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_array_setting, handle_setting)
#define SETTING_OVERRIDE(override_setting) \
tmp[count-1].override = override_setting
struct defaults g_defaults;
static settings_t *configuration_settings = NULL;
@@ -1025,6 +1033,7 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
#ifdef HAVE_CHEEVOS
SETTING_ARRAY("cheevos_username", settings->arrays.cheevos_username, false, NULL, true);
SETTING_ARRAY("cheevos_password", settings->arrays.cheevos_password, false, NULL, true);
SETTING_ARRAY("cheevos_token", settings->arrays.cheevos_token, false, NULL, true);
#endif
SETTING_ARRAY("video_context_driver", settings->arrays.video_context_driver, false, NULL, true);
SETTING_ARRAY("audio_driver", settings->arrays.audio_driver, false, NULL, true);
@@ -1171,6 +1180,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("automatically_add_content_to_playlist", &settings->bools.automatically_add_content_to_playlist, true, automatically_add_content_to_playlist, false);
SETTING_BOOL("ui_companion_start_on_boot", &settings->bools.ui_companion_start_on_boot, true, ui_companion_start_on_boot, false);
SETTING_BOOL("ui_companion_enable", &settings->bools.ui_companion_enable, true, ui_companion_enable, false);
SETTING_BOOL("ui_companion_toggle", &settings->bools.ui_companion_toggle, false, ui_companion_toggle, false);
SETTING_BOOL("desktop_menu_enable", &settings->bools.desktop_menu_enable, true, desktop_menu_enable, false);
SETTING_BOOL("video_gpu_record", &settings->bools.video_gpu_record, true, gpu_record, false);
SETTING_BOOL("input_remap_binds_enable", &settings->bools.input_remap_binds_enable, true, true, false);
SETTING_BOOL("all_users_control_menu", &settings->bools.input_all_users_control_menu, true, all_users_control_menu, false);
@@ -1181,6 +1192,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("netplay_allow_slaves", &settings->bools.netplay_allow_slaves, true, netplay_allow_slaves, false);
SETTING_BOOL("netplay_require_slaves", &settings->bools.netplay_require_slaves, true, netplay_require_slaves, false);
SETTING_BOOL("netplay_stateless_mode", &settings->bools.netplay_stateless_mode, true, netplay_stateless_mode, false);
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_STATELESS_MODE);
SETTING_BOOL("netplay_use_mitm_server", &settings->bools.netplay_use_mitm_server, true, netplay_use_mitm_server, false);
SETTING_BOOL("netplay_request_device_p1", &settings->bools.netplay_request_devices[0], true, false, false);
SETTING_BOOL("netplay_request_device_p2", &settings->bools.netplay_request_devices[1], true, false, false);
@@ -1206,10 +1218,13 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("builtin_mediaplayer_enable", &settings->bools.multimedia_builtin_mediaplayer_enable, false, false /* TODO */, false);
SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false);
SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, false, false);
SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, false, false);
SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, true, false);
SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false);
SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false);
SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false);
SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false);
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false);
SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, audio_sync, false);
SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, shader_enable, false);
SETTING_BOOL("video_shader_watch_files", &settings->bools.video_shader_watch_files, true, video_shader_watch_files, false);
@@ -1232,6 +1247,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, vsync, false);
SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, hard_sync, false);
SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, black_frame_insertion, false);
SETTING_BOOL("crt_switch_resolution", &settings->bools.crt_switch_resolution, true, crt_switch_resolution, false);
SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, disable_composition, false);
SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, pause_nonactive, false);
SETTING_BOOL("video_gpu_screenshot", &settings->bools.video_gpu_screenshot, true, gpu_screenshot, false);
@@ -1239,6 +1255,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("keyboard_gamepad_enable", &settings->bools.input_keyboard_gamepad_enable, true, true, false);
SETTING_BOOL("core_set_supports_no_game_enable", &settings->bools.set_supports_no_game_enable, true, true, false);
SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, audio_enable, false);
SETTING_BOOL("audio_enable_menu", &settings->bools.audio_enable_menu, true, false, false);
SETTING_BOOL("audio_mute_enable", audio_get_bool_ptr(AUDIO_ACTION_MUTE_ENABLE), true, false, false);
SETTING_BOOL("audio_mixer_mute_enable", audio_get_bool_ptr(AUDIO_ACTION_MIXER_MUTE_ENABLE), true, false, false);
SETTING_BOOL("location_allow", &settings->bools.location_allow, true, false, false);
@@ -1299,10 +1316,14 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#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);
SETTING_BOOL("menu_show_information", &settings->bools.menu_show_information, true, menu_show_information, false);
SETTING_BOOL("menu_show_configurations", &settings->bools.menu_show_configurations, true, menu_show_configurations, false);
SETTING_BOOL("menu_show_latency", &settings->bools.menu_show_latency, true, true, false);
SETTING_BOOL("menu_show_rewind", &settings->bools.menu_show_rewind, true, true, false);
SETTING_BOOL("menu_show_overlays", &settings->bools.menu_show_overlays, true, true, false);
SETTING_BOOL("menu_show_help", &settings->bools.menu_show_help, true, menu_show_help, false);
SETTING_BOOL("menu_show_quit_retroarch", &settings->bools.menu_show_quit_retroarch, true, menu_show_quit_retroarch, false);
SETTING_BOOL("menu_show_reboot", &settings->bools.menu_show_reboot, true, menu_show_reboot, false);
@@ -1317,8 +1338,14 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef HAVE_MATERIALUI
SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, materialui_icons_enable, false);
#endif
#ifdef HAVE_RGUI
SETTING_BOOL("rgui_background_filler_thickness_enable", &settings->bools.menu_rgui_background_filler_thickness_enable, true, true, false);
SETTING_BOOL("rgui_border_filler_thickness_enable", &settings->bools.menu_rgui_border_filler_thickness_enable, true, true, false);
SETTING_BOOL("rgui_border_filler_enable", &settings->bools.menu_rgui_border_filler_enable, true, true, false);
#endif
#ifdef HAVE_XMB
SETTING_BOOL("xmb_shadows_enable", &settings->bools.menu_xmb_shadows_enable, true, xmb_shadows_enable, false);
SETTING_BOOL("xmb_vertical_thumbnails", &settings->bools.menu_xmb_vertical_thumbnails, true, xmb_vertical_thumbnails, false);
#endif
#endif
#ifdef HAVE_CHEEVOS
@@ -1326,10 +1353,11 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false);
SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false);
SETTING_BOOL("cheevos_leaderboards_enable", &settings->bools.cheevos_leaderboards_enable, true, false, false);
SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false);
SETTING_BOOL("cheevos_auto_screenshot", &settings->bools.cheevos_auto_screenshot, true, false, false);
#ifdef HAVE_XMB
SETTING_BOOL("cheevos_badges_enable", &settings->bools.cheevos_badges_enable, true, false, false);
#endif
SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false);
#endif
#ifdef HAVE_OVERLAY
SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false);
@@ -1344,9 +1372,6 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef HAVE_NETWORKGAMEPAD
SETTING_BOOL("network_remote_enable", &settings->bools.network_remote_enable, false, false /* TODO */, false);
#endif
#ifdef HAVE_KEYMAPPER
SETTING_BOOL("keymapper_enable", &settings->bools.keymapper_enable, true, true /* TODO */, false);
#endif
#ifdef HAVE_NETWORKING
SETTING_BOOL("netplay_nat_traversal", &settings->bools.netplay_nat_traversal, true, true, false);
#endif
@@ -1451,9 +1476,6 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
#ifdef HAVE_NETWORKGAMEPAD
SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, network_remote_base_port, false);
#endif
#ifdef HAVE_KEYMAPPER
SETTING_UINT("keymapper_port", &settings->uints.keymapper_port, true, 0, false);
#endif
#ifdef GEKKO
SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, video_viwidth, false);
#endif
@@ -1461,8 +1483,10 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false);
SETTING_UINT("menu_thumbnails", &settings->uints.menu_thumbnails, true, menu_thumbnails_default, false);
#ifdef HAVE_XMB
SETTING_UINT("menu_left_thumbnails", &settings->uints.menu_left_thumbnails, true, menu_left_thumbnails_default, 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);
SETTING_UINT("menu_font_color_red", &settings->uints.menu_font_color_red, true, menu_font_color_red, false);
@@ -1474,6 +1498,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
#endif
SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, out_rate, false);
SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false);
SETTING_UINT("crt_switch_resolution_super", &settings->uints.crt_switch_resolution_super, true, crt_switch_resolution_super, false);
SETTING_UINT("custom_viewport_height", &settings->video_viewport_custom.height, false, 0 /* TODO */, false);
SETTING_UINT("custom_viewport_x", (unsigned*)&settings->video_viewport_custom.x, false, 0 /* TODO */, false);
SETTING_UINT("custom_viewport_y", (unsigned*)&settings->video_viewport_custom.y, false, 0 /* TODO */, false);
@@ -1486,6 +1511,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("aspect_ratio_index", &settings->uints.video_aspect_ratio_idx, true, aspect_ratio_idx, false);
#ifdef HAVE_NETWORKING
SETTING_UINT("netplay_ip_port", &settings->uints.netplay_port, true, RARCH_DEFAULT_PORT, false);
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT);
SETTING_UINT("netplay_input_latency_frames_min",&settings->uints.netplay_input_latency_frames_min, true, 0, false);
SETTING_UINT("netplay_input_latency_frames_range",&settings->uints.netplay_input_latency_frames_range, true, 0, false);
SETTING_UINT("netplay_share_digital", &settings->uints.netplay_share_digital, true, netplay_share_digital, false);
@@ -1501,6 +1527,8 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("video_msg_bgcolor_green", &settings->uints.video_msg_bgcolor_green, true, message_bgcolor_green, false);
SETTING_UINT("video_msg_bgcolor_blue", &settings->uints.video_msg_bgcolor_blue, true, message_bgcolor_blue, false);
SETTING_UINT("run_ahead_frames", &settings->uints.run_ahead_frames, true, 1, false);
*size = count;
return tmp;
@@ -1509,11 +1537,12 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
static struct config_int_setting *populate_settings_int(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_int_setting *tmp = (struct config_int_setting*)malloc((*size + 1) * sizeof(struct config_int_setting));
struct config_int_setting *tmp = (struct config_int_setting*)calloc((*size + 1), sizeof(struct config_int_setting));
SETTING_INT("state_slot", &settings->ints.state_slot, false, 0 /* TODO */, false);
#ifdef HAVE_NETWORKING
SETTING_INT("netplay_check_frames", &settings->ints.netplay_check_frames, true, netplay_check_frames, false);
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_CHECK_FRAMES);
#endif
#ifdef HAVE_WASAPI
SETTING_INT("audio_wasapi_sh_buffer_length", &settings->ints.audio_wasapi_sh_buffer_length, true, wasapi_sh_buffer_length, false);
@@ -1699,6 +1728,7 @@ static void config_set_defaults(void)
#ifdef HAVE_CHEEVOS
*settings->arrays.cheevos_username = '\0';
*settings->arrays.cheevos_password = '\0';
*settings->arrays.cheevos_token = '\0';
#endif
input_config_reset();
@@ -1727,8 +1757,7 @@ static void config_set_defaults(void)
{
settings->uints.input_joypad_map[i] = i;
settings->uints.input_analog_dpad_mode[i] = ANALOG_DPAD_NONE;
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i))
input_config_set_device(i, RETRO_DEVICE_JOYPAD);
input_config_set_device(i, RETRO_DEVICE_JOYPAD);
settings->uints.input_mouse_index[i] = 0;
}
@@ -1742,8 +1771,7 @@ static void config_set_defaults(void)
dir_clear(RARCH_DIR_SAVESTATE);
*settings->paths.path_libretro_info = '\0';
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY, NULL))
*settings->paths.directory_libretro = '\0';
*settings->paths.directory_libretro = '\0';
*settings->paths.directory_cursor = '\0';
*settings->paths.directory_resampler = '\0';
*settings->paths.directory_screenshot = '\0';
@@ -1764,12 +1792,9 @@ static void config_set_defaults(void)
*settings->paths.directory_video_filter = '\0';
*settings->paths.directory_audio_filter = '\0';
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF, NULL))
rarch_ctl(RARCH_CTL_UNSET_UPS_PREF, NULL);
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF, NULL))
rarch_ctl(RARCH_CTL_UNSET_BPS_PREF, NULL);
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF, NULL))
rarch_ctl(RARCH_CTL_UNSET_IPS_PREF, NULL);
rarch_ctl(RARCH_CTL_UNSET_UPS_PREF, NULL);
rarch_ctl(RARCH_CTL_UNSET_BPS_PREF, NULL);
rarch_ctl(RARCH_CTL_UNSET_IPS_PREF, NULL);
{
global_t *global = global_get_ptr();
@@ -1897,8 +1922,14 @@ static void config_set_defaults(void)
g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG],
sizeof(settings->paths.directory_menu_config));
#if TARGET_OS_IPHONE
path_set(RARCH_PATH_CONFIG,
settings->paths.directory_menu_config);
{
char *config_file_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
size_t config_file_path_size = PATH_MAX_LENGTH * sizeof(char);
fill_pathname_join(config_file_path, settings->paths.directory_menu_config, file_path_str(FILE_PATH_MAIN_CONFIG), config_file_path_size);
path_set(RARCH_PATH_CONFIG,
config_file_path);
}
#endif
}
@@ -1912,12 +1943,10 @@ static void config_set_defaults(void)
g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG],
sizeof(settings->paths.directory_autoconfig));
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL) &&
!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]))
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]))
dir_set(RARCH_DIR_SAVESTATE, g_defaults.dirs[DEFAULT_DIR_SAVESTATE]);
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL) &&
!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SRAM]))
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SRAM]))
dir_set(RARCH_DIR_SAVEFILE, g_defaults.dirs[DEFAULT_DIR_SRAM]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SYSTEM]))
@@ -2365,9 +2394,6 @@ static bool config_load_file(const char *path, bool set_defaults,
unsigned msg_color = 0;
config_file_t *conf = NULL;
char *override_username = NULL;
#ifdef HAVE_NETWORKING
char *override_netplay_ip_address = NULL;
#endif
const char *path_core = NULL;
const char *path_config = NULL;
const char *shader_ext = NULL;
@@ -2445,11 +2471,6 @@ static bool config_load_file(const char *path, bool set_defaults,
if (rarch_ctl(RARCH_CTL_HAS_SET_USERNAME, NULL))
override_username = strdup(settings->paths.username);
#ifdef HAVE_NETWORKING
if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS, NULL))
override_netplay_ip_address = strdup(settings->paths.netplay_server);
#endif
/* Boolean settings */
for (i = 0; i < (unsigned)bool_settings_size; i++)
@@ -2472,15 +2493,12 @@ static bool config_load_file(const char *path, bool set_defaults,
settings->bools.network_remote_enable_user[i] = tmp_bool;
}
#endif
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_VERBOSITY, NULL))
if (config_get_bool(conf, "log_verbosity", &tmp_bool))
{
if (config_get_bool(conf, "log_verbosity", &tmp_bool))
{
if (tmp_bool)
verbosity_enable();
else
verbosity_disable();
}
if (tmp_bool)
verbosity_enable();
else
verbosity_disable();
}
{
char tmp[64];
@@ -2513,14 +2531,6 @@ static bool config_load_file(const char *path, bool set_defaults,
*uint_settings[i].ptr = tmp;
}
#ifdef HAVE_NETWORKING
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_STATELESS_MODE, NULL))
CONFIG_GET_BOOL_BASE(conf, settings, bools.netplay_stateless_mode, "netplay_stateless_mode");
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_CHECK_FRAMES, NULL))
CONFIG_GET_INT_BASE(conf, settings, ints.netplay_check_frames, "netplay_check_frames");
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT, NULL))
CONFIG_GET_INT_BASE(conf, settings, uints.netplay_port, "netplay_ip_port");
#endif
for (i = 0; i < MAX_USERS; i++)
{
char buf[64];
@@ -2536,11 +2546,8 @@ static bool config_load_file(const char *path, bool set_defaults,
snprintf(buf, sizeof(buf), "input_player%u_mouse_index", i + 1);
CONFIG_GET_INT_BASE(conf, settings, uints.input_mouse_index[i], buf);
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i))
{
snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1);
CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], buf);
}
snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1);
CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], buf);
}
/* LED map for use by the led driver */
@@ -2606,11 +2613,8 @@ static bool config_load_file(const char *path, bool set_defaults,
strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH);
}
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY, NULL))
{
if (config_get_path(conf, "libretro_directory", tmp_str, path_size))
strlcpy(settings->paths.directory_libretro, tmp_str, sizeof(settings->paths.directory_libretro));
}
if (config_get_path(conf, "libretro_directory", tmp_str, path_size))
strlcpy(settings->paths.directory_libretro, tmp_str, sizeof(settings->paths.directory_libretro));
#ifndef HAVE_DYNAMIC
if (config_get_path(conf, "libretro_path", tmp_str, path_size))
@@ -2631,16 +2635,6 @@ static bool config_load_file(const char *path, bool set_defaults,
free(override_username);
}
#ifdef HAVE_NETWORKING
if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS, NULL))
{
strlcpy(settings->paths.netplay_server,
override_netplay_ip_address,
sizeof(settings->paths.netplay_server));
free(override_netplay_ip_address);
}
#endif
if (settings->uints.video_hard_sync_frames > 3)
settings->uints.video_hard_sync_frames = 3;
@@ -2949,7 +2943,7 @@ bool config_load_override(void)
config_file_t *new_conf = NULL;
bool should_append = false;
rarch_system_info_t *system = runloop_get_system_info();
const char *core_name = system ?
const char *core_name = system ?
system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
@@ -3037,7 +3031,7 @@ bool config_load_override(void)
if (!should_append)
goto error;
/* Re-load the configuration with any overrides
/* Re-load the configuration with any overrides
* that might have been found */
buf[0] = '\0';
@@ -3122,7 +3116,7 @@ bool config_unload_override(void)
bool config_load_remap(void)
{
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
char *remap_directory = NULL;
char *remap_directory = NULL;
char *core_path = NULL;
char *game_path = NULL;
config_file_t *new_conf = NULL;
@@ -3142,12 +3136,12 @@ bool config_load_remap(void)
/* path to the directory containing retroarch.cfg (prefix) */
remap_directory = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
/* final path for core-specific configuration (prefix+suffix) */
/* final path for core-specific configuration (prefix+suffix) */
core_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
/* final path for game-specific configuration (prefix+suffix) */
game_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
malloc(PATH_MAX_LENGTH * sizeof(char));
remap_directory[0] = core_path[0] = game_path[0] = '\0';
strlcpy(remap_directory,
@@ -3249,7 +3243,7 @@ bool config_load_shader_preset(void)
char *parent_path = NULL;
settings_t *settings = config_get_ptr();
rarch_system_info_t *system = runloop_get_system_info();
const char *core_name = system
const char *core_name = system
? system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
@@ -3534,14 +3528,14 @@ static void save_keybind_mbutton(config_file_t *conf,
const char *base,
const struct retro_keybind *bind, bool save_empty)
{
char key[64];
char key[64];
key[0] = '\0';
key[0] = '\0';
fill_pathname_join_delim_concat(key, prefix,
base, '_', "_mbtn", sizeof(key));
fill_pathname_join_delim_concat(key, prefix,
base, '_', "_mbtn", sizeof(key));
switch ( bind->mbutton )
switch ( bind->mbutton )
{
case RETRO_DEVICE_ID_MOUSE_LEFT:
config_set_uint64(conf, key, 1);
@@ -3787,8 +3781,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
error:
free(buf);
free(autoconf_file);
if (path_new)
free(path_new);
free(path_new);
return false;
}
@@ -3864,9 +3857,11 @@ bool config_save_file(const char *path)
if (array_settings && (array_settings_size > 0))
{
for (i = 0; i < (unsigned)array_settings_size; i++)
config_set_string(conf,
array_settings[i].ident,
array_settings[i].ptr);
if (!array_settings[i].override ||
!retroarch_override_setting_is_set(array_settings[i].override, NULL))
config_set_string(conf,
array_settings[i].ident,
array_settings[i].ptr);
free(array_settings);
}
@@ -3875,9 +3870,11 @@ bool config_save_file(const char *path)
if (float_settings && (float_settings_size > 0))
{
for (i = 0; i < (unsigned)float_settings_size; i++)
config_set_float(conf,
float_settings[i].ident,
*float_settings[i].ptr);
if (!float_settings[i].override ||
!retroarch_override_setting_is_set(float_settings[i].override, NULL))
config_set_float(conf,
float_settings[i].ident,
*float_settings[i].ptr);
free(float_settings);
}
@@ -3886,9 +3883,11 @@ bool config_save_file(const char *path)
if (int_settings && (int_settings_size > 0))
{
for (i = 0; i < (unsigned)int_settings_size; i++)
config_set_int(conf,
int_settings[i].ident,
*int_settings[i].ptr);
if (!int_settings[i].override ||
!retroarch_override_setting_is_set(int_settings[i].override, NULL))
config_set_int(conf,
int_settings[i].ident,
*int_settings[i].ptr);
free(int_settings);
}
@@ -3896,9 +3895,11 @@ bool config_save_file(const char *path)
if (uint_settings && (uint_settings_size > 0))
{
for (i = 0; i < (unsigned)uint_settings_size; i++)
config_set_int(conf,
uint_settings[i].ident,
*uint_settings[i].ptr);
if (!uint_settings[i].override ||
!retroarch_override_setting_is_set(uint_settings[i].override, NULL))
config_set_int(conf,
uint_settings[i].ident,
*uint_settings[i].ptr);
free(uint_settings);
}
@@ -3925,8 +3926,10 @@ bool config_save_file(const char *path)
if (bool_settings && (bool_settings_size > 0))
{
for (i = 0; i < (unsigned)bool_settings_size; i++)
config_set_bool(conf, bool_settings[i].ident,
*bool_settings[i].ptr);
if (!bool_settings[i].override ||
!retroarch_override_setting_is_set(bool_settings[i].override, NULL))
config_set_bool(conf, bool_settings[i].ident,
*bool_settings[i].ptr);
free(bool_settings);
}
@@ -3943,6 +3946,7 @@ bool config_save_file(const char *path)
}
#endif
/* Verbosity isn't in bool_settings since it needs to be loaded differently */
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_VERBOSITY, NULL))
{
config_set_bool(conf, "log_verbosity",
@@ -4189,28 +4193,28 @@ bool config_save_overrides(int override_type)
char cfg[64];
cfg[0] = '\0';
if (settings->uints.input_device[i]
if (settings->uints.input_device[i]
!= overrides->uints.input_device[i])
{
snprintf(cfg, sizeof(cfg), "input_device_p%u", i + 1);
config_set_int(conf, cfg, overrides->uints.input_device[i]);
}
if (settings->uints.input_joypad_map[i]
if (settings->uints.input_joypad_map[i]
!= overrides->uints.input_joypad_map[i])
{
snprintf(cfg, sizeof(cfg), "input_player%u_joypad_index", i + 1);
config_set_int(conf, cfg, overrides->uints.input_joypad_map[i]);
}
if (settings->uints.input_libretro_device[i]
if (settings->uints.input_libretro_device[i]
!= overrides->uints.input_libretro_device[i])
{
snprintf(cfg, sizeof(cfg), "input_libretro_device_p%u", i + 1);
config_set_int(conf, cfg, overrides->uints.input_libretro_device[i]);
}
if (settings->uints.input_analog_dpad_mode[i]
if (settings->uints.input_analog_dpad_mode[i]
!= overrides->uints.input_analog_dpad_mode[i])
{
snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1);
+23 -1
View File
@@ -92,11 +92,14 @@ typedef struct settings
bool video_shared_context;
bool video_force_srgb_disable;
bool video_fps_show;
bool video_statistics_show;
bool video_framecount_show;
bool video_msg_bgcolor_enable;
bool crt_switch_resolution;
/* Audio */
bool audio_enable;
bool audio_enable_menu;
bool audio_sync;
bool audio_rate_control;
bool audio_wasapi_exclusive_mode;
@@ -145,8 +148,15 @@ typedef struct settings
bool menu_show_help;
bool menu_show_quit_retroarch;
bool menu_show_reboot;
bool menu_show_latency;
bool menu_show_rewind;
bool menu_show_overlays;
bool menu_materialui_icons_enable;
bool menu_rgui_background_filler_thickness_enable;
bool menu_rgui_border_filler_thickness_enable;
bool menu_rgui_border_filler_enable;
bool menu_xmb_shadows_enable;
bool menu_xmb_vertical_thumbnails;
bool menu_content_show_settings;
bool menu_content_show_favorites;
bool menu_content_show_images;
@@ -155,6 +165,7 @@ typedef struct settings
bool menu_content_show_netplay;
bool menu_content_show_history;
bool menu_content_show_add;
bool menu_content_show_playlists;
bool menu_unified_controls;
bool quick_menu_show_take_screenshot;
bool quick_menu_show_save_load_state;
@@ -187,6 +198,8 @@ typedef struct settings
bool ui_suspend_screensaver_enable;
bool ui_companion_start_on_boot;
bool ui_companion_enable;
bool ui_companion_toggle;
bool desktop_menu_enable;
/* Cheevos */
bool cheevos_enable;
@@ -195,6 +208,7 @@ typedef struct settings
bool cheevos_leaderboards_enable;
bool cheevos_badges_enable;
bool cheevos_verbose_enable;
bool cheevos_auto_screenshot;
/* Camera */
bool camera_allow;
@@ -221,6 +235,8 @@ typedef struct settings
bool playlist_entry_remove;
bool playlist_entry_rename;
bool rewind_enable;
bool run_ahead_enabled;
bool run_ahead_secondary_instance;
bool pause_nonactive;
bool block_sram_overwrite;
bool savestate_auto_index;
@@ -331,6 +347,7 @@ typedef struct settings
unsigned video_window_x;
unsigned video_window_y;
unsigned video_window_opacity;
unsigned crt_switch_resolution_super;
unsigned video_monitor_index;
unsigned video_fullscreen_x;
unsigned video_fullscreen_y;
@@ -346,10 +363,12 @@ typedef struct settings
unsigned video_msg_bgcolor_blue;
unsigned menu_thumbnails;
unsigned menu_left_thumbnails;
unsigned menu_dpi_override_value;
unsigned menu_entry_normal_color;
unsigned menu_entry_hover_color;
unsigned menu_title_color;
unsigned menu_xmb_layout;
unsigned menu_xmb_shader_pipeline;
unsigned menu_xmb_scale_factor;
unsigned menu_xmb_alpha_factor;
@@ -373,11 +392,13 @@ typedef struct settings
unsigned input_libretro_device[MAX_USERS];
unsigned input_analog_dpad_mode[MAX_USERS];
unsigned input_keymapper_ids[RARCH_CUSTOM_BIND_LIST_END];
unsigned input_keymapper_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END];
unsigned input_remap_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END];
unsigned led_map[MAX_LEDS];
unsigned run_ahead_frames;
} uints;
struct
@@ -393,6 +414,7 @@ typedef struct settings
char menu_driver[32];
char cheevos_username[32];
char cheevos_password[32];
char cheevos_token[32];
char video_context_driver[32];
char audio_driver[32];
char audio_resampler[32];
+3 -4
View File
@@ -92,17 +92,16 @@ void content_clear_subsystem(void);
void content_set_subsystem(unsigned subsystem);
/* Get the current subsystem*/
int content_get_subsystem();
int content_get_subsystem(void);
/* Add a rom to the subsystem rom buffer */
void content_add_subsystem(const char* path);
/* Get the current subsystem rom id */
int content_get_subsystem_rom_id();
unsigned content_get_subsystem_rom_id(void);
/* Set environment variables before a subsystem load */
void content_set_subsystem_info();
void content_set_subsystem_info(void);
RETRO_END_DECLS
+3
View File
@@ -170,6 +170,9 @@ bool core_set_poll_type(unsigned *type);
/* Runs the core for one frame. */
bool core_run(void);
/* Runs the core for one frame, but does not trigger any input polling */
bool core_run_no_input_polling(void);
bool core_init(void);
bool core_deinit(void *data);
+21
View File
@@ -44,6 +44,11 @@
#include "gfx/video_driver.h"
#include "audio/audio_driver.h"
#ifdef HAVE_RUNAHEAD
#include "runahead/copy_load_info.h"
#include "runahead/secondary_core.h"
#endif
struct retro_callbacks retro_ctx;
struct retro_core_t current_core;
@@ -262,6 +267,11 @@ bool core_set_controller_port_device(retro_ctx_controller_info_t *pad)
{
if (!pad)
return false;
#ifdef HAVE_RUNAHEAD
remember_controller_port_device(pad->port, pad->device);
#endif
current_core.retro_set_controller_port_device(pad->port, pad->device);
return true;
}
@@ -280,6 +290,11 @@ bool core_load_game(retro_ctx_load_content_info_t *load_info)
bool contentless = false;
bool is_inited = false;
#ifdef HAVE_RUNAHEAD
set_load_content_info(load_info);
clear_controller_port_map();
#endif
content_get_status(&contentless, &is_inited);
if (load_info && load_info->special)
@@ -424,6 +439,12 @@ bool core_run(void)
return true;
}
bool core_run_no_input_polling(void)
{
current_core.retro_run();
return true;
}
bool core_load(unsigned poll_type_behavior)
{
current_core.poll_type = poll_type_behavior;
+40 -33
View File
@@ -17,6 +17,7 @@
#include <compat/strl.h>
#include <string/stdstring.h>
#include <file/config_file.h>
#include <file/file_path.h>
#include <lists/dir_list.h>
#include <file/archive_file.h>
@@ -26,14 +27,10 @@
#include "config.h"
#endif
#include "retroarch.h"
#include "verbosity.h"
#include "config.def.h"
#include "core_info.h"
#include "configuration.h"
#include "file_path_special.h"
#include "list_special.h"
static const char *core_info_tmp_path = NULL;
static const struct string_list *core_info_tmp_list = NULL;
@@ -154,6 +151,7 @@ static void core_info_list_free(core_info_list_t *core_info_list)
free(info->systemname);
free(info->system_manufacturer);
free(info->display_name);
free(info->display_version);
free(info->supported_extensions);
free(info->authors);
free(info->permissions);
@@ -224,21 +222,23 @@ static bool core_info_list_iterate(
return true;
}
static core_info_list_t *core_info_list_new(const char *path)
static core_info_list_t *core_info_list_new(const char *path,
const char *libretro_info_dir,
const char *exts,
bool show_hidden_files)
{
size_t i;
core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL;
struct string_list *contents = dir_list_new_special(
path, DIR_LIST_CORES, NULL);
settings_t *settings = config_get_ptr();
const char *path_basedir = !string_is_empty(settings->paths.path_libretro_info) ?
settings->paths.path_libretro_info : settings->paths.directory_libretro;
const char *path_basedir = libretro_info_dir;
struct string_list *contents = dir_list_new(
path, exts,
false,
show_hidden_files,
false, false);
if (!contents)
return NULL;
core_info_list = (core_info_list_t*)calloc(1, sizeof(*core_info_list));
if (!core_info_list)
goto error;
@@ -279,6 +279,13 @@ static core_info_list_t *core_info_list_new(const char *path)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "display_version", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].display_version = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "corename", &tmp)
&& !string_is_empty(tmp))
{
@@ -518,7 +525,8 @@ static core_info_t *core_info_find_internal(
static bool core_info_list_update_missing_firmware_internal(
core_info_list_t *core_info_list,
const char *core,
const char *systemdir)
const char *systemdir,
bool *set_missing_bios)
{
size_t i;
core_info_t *info = NULL;
@@ -535,7 +543,6 @@ static bool core_info_list_update_missing_firmware_internal(
path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
path[0] = '\0';
rarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL);
for (i = 0; i < info->firmware_count; i++)
{
@@ -547,7 +554,7 @@ static bool core_info_list_update_missing_firmware_internal(
info->firmware[i].missing = !filestream_exists(path);
if (info->firmware[i].missing && !info->firmware[i].optional)
{
rarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL);
*set_missing_bios = true;
RARCH_WARN("Firmware missing: %s\n", info->firmware[i].path);
}
}
@@ -635,14 +642,13 @@ void core_info_deinit_list(void)
core_info_curr_list = NULL;
}
bool core_info_init_list(void)
bool core_info_init_list(const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files)
{
settings_t *settings = config_get_ptr();
if (settings)
core_info_curr_list = core_info_list_new(settings->paths.directory_libretro);
if (!core_info_curr_list)
if (!(core_info_curr_list = core_info_list_new(dir_cores,
!string_is_empty(path_info) ? path_info : dir_cores,
exts,
show_hidden_files)))
return false;
return true;
}
@@ -655,13 +661,15 @@ bool core_info_get_list(core_info_list_t **core)
return true;
}
bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info)
bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info,
bool *set_missing_bios)
{
if (!info)
return false;
return core_info_list_update_missing_firmware_internal(
core_info_curr_list,
info->path, info->directory.system);
info->path, info->directory.system,
set_missing_bios);
}
bool core_info_load(core_info_ctx_find_t *info)
@@ -751,16 +759,15 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list,
*num_infos = supported;
}
void core_info_get_name(const char *path, char *s, size_t len)
void core_info_get_name(const char *path, char *s, size_t len,
const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files)
{
size_t i;
settings_t *settings = config_get_ptr();
struct string_list *contents = dir_list_new_special(
settings->paths.directory_libretro,
DIR_LIST_CORES, NULL);
const char *path_basedir = !string_is_empty(settings->paths.path_libretro_info) ?
settings->paths.path_libretro_info : settings->paths.directory_libretro;
const char *path_basedir = !string_is_empty(path_info) ?
path_info : dir_cores;
struct string_list *contents = dir_list_new(
dir_cores, exts, false, show_hidden_files, false, false);
if (!contents)
return;
@@ -786,7 +793,7 @@ void core_info_get_name(const char *path, char *s, size_t len)
continue;
}
conf = config_file_new(info_path);
conf = config_file_new(info_path);
if (!conf)
{
+8 -3
View File
@@ -43,6 +43,7 @@ typedef struct
char *path;
void *config_data;
char *display_name;
char *display_version;
char *core_name;
char *system_manufacturer;
char *systemname;
@@ -97,7 +98,9 @@ bool core_info_list_get_display_name(core_info_list_t *list,
bool core_info_get_display_name(const char *path, char *s, size_t len);
void core_info_get_name(const char *path, char *s, size_t len);
void core_info_get_name(const char *path, char *s, size_t len,
const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files);
core_info_t *core_info_get(core_info_list_t *list, size_t i);
@@ -109,11 +112,13 @@ bool core_info_get_current_core(core_info_t **core);
void core_info_deinit_list(void);
bool core_info_init_list(void);
bool core_info_init_list(const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files);
bool core_info_get_list(core_info_list_t **core);
bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info);
bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info,
bool *set_missing_bios);
bool core_info_find(core_info_ctx_find_t *info, const char *name);
+1 -7
View File
@@ -98,12 +98,6 @@ ifneq (,$(findstring gles,$(platform)))
CFLAGS += -DHAVE_OPENGLES
endif
ifneq (,$(findstring qnx,$(platform)))
CFLAGS += -Wc,-std=c99
else
CFLAGS += -std=gnu99
endif
# Locale support should be enabled by default, as it's most common.
ifneq ($(locale),false)
CFLAGS += -DHAVE_LOCALE
@@ -120,7 +114,7 @@ endif
CFLAGS += -I../../libretro-common/include
OBJECTS := mpv-libretro.o
LDFLAGS += -lmpv
LDFLAGS += -lmpv -ldl -lm
CFLAGS += -Wall -pedantic
all: $(TARGET)
+98 -31
View File
@@ -1,27 +1,31 @@
/* mpv media player libretro core
* Copyright (C) 2018 Mahyar Koshkouei
*
*
* This program 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 Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <dlfcn.h>
#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef HAVE_OPENGLES
#include <dlfcn.h>
#endif
#ifdef HAVE_LOCALE
#include <locale.h>
#endif
@@ -29,7 +33,7 @@
#include <mpv/client.h>
#include <mpv/opengl_cb.h>
#include "libretro.h"
#include <libretro.h>
#include "version.h"
static struct retro_hw_render_callback hw_render;
@@ -56,6 +60,13 @@ static int64_t *playback_time = 0;
/* filepath required globaly as mpv is reopened on context change */
static char *filepath = NULL;
static volatile int frame_queue = 0;
void queue_new_frame(void *cb_ctx)
{
frame_queue++;
}
static void fallback_log(enum retro_log_level level, const char *fmt, ...)
{
(void)level;
@@ -123,19 +134,24 @@ static void *get_proc_address_mpv(void *fn_ctx, const char *name)
void *proc_addr = (void *) hw_render.get_proc_address(name);
#pragma GCC diagnostic pop
// EGL 1.4 (supported by the RPI firmware) does not necessarily return
// function pointers for core functions.
if (!proc_addr) {
void *h = dlopen("/opt/vc/lib/libGLESv2.so", RTLD_LAZY);
#ifdef HAVE_OPENGLES
/* EGL 1.4 (supported by the RPI firmware) does not necessarily return
* function pointers for core functions.
*/
if (!proc_addr)
{
void *h = dlopen("/opt/vc/lib/libGLESv2.so", RTLD_LAZY);
if (!h)
h = dlopen("/usr/lib/libGLESv2.so", RTLD_LAZY);
if (!h)
h = dlopen("/usr/lib/libGLESv2.so", RTLD_LAZY);
if (h) {
proc_addr = dlsym(h, name);
dlclose(h);
}
}
if (h)
{
proc_addr = dlsym(h, name);
dlclose(h);
}
}
#endif
if(proc_addr == NULL)
log_cb(RETRO_LOG_ERROR, "Failure obtaining %s proc address\n", name);
@@ -293,6 +309,13 @@ static void context_reset(void)
goto err;
}
mpv_opengl_cb_set_update_callback(mpv_gl, queue_new_frame, NULL);
mpv_set_option_string(mpv, "ao", "audio-cb");
/* Attempt to enable hardware acceleration. MPV will fallback to software
* decoding on failure.
*/
if(mpv_set_option_string(mpv, "hwdec", "auto") < 0)
log_cb(RETRO_LOG_ERROR, "failed to set hwdec option\n");
@@ -316,6 +339,17 @@ static void context_reset(void)
usleep(10);
}
/* TODO #2: Check for the highest samplerate in audio stream, and use that.
* Fall back to 48kHz otherwise.
* We currently force the audio to be sampled at 48KHz.
*/
mpv_set_option_string(mpv, "audio-samplerate", "48000");
mpv_set_option_string(mpv, "opengl-swapinterval", "0");
/* The following works best when vsync is switched off in Retroarch. */
//mpv_set_option_string(mpv, "video-sync", "display-resample");
//mpv_set_option_string(mpv, "display-fps", "60");
log_cb(RETRO_LOG_INFO, "Context reset.\n");
return;
@@ -380,20 +414,25 @@ void retro_reset(void)
return;
}
#if 0
static void audio_callback(void)
static void audio_callback(double fps)
{
static unsigned phase;
/* Obtain len samples to reduce lag. */
int len = 48000 / (int)floor(fps);
static int16_t frames[512];
for (unsigned i = 0; i < 30000 / 60; i++, phase++)
while(len > 0)
{
int16_t val = 0x800 * sinf(2.0f * M_PI * phase * 300.0f / 30000.0f);
audio_cb(val, val);
}
int mpv_len = mpv_audio_callback(&frames, len > 512 ? 512*2 : len*2);
//printf("mpv cb: %d\n", mpv_len);
if(mpv_len < 1)
return;
phase %= 100;
len -= mpv_len;
//printf("acb: %lu\n", audio_batch_cb(frames, mpv_len));
audio_batch_cb(frames, mpv_len);
}
}
#endif
static void retropad_update_input(void)
{
@@ -413,7 +452,7 @@ static void retropad_update_input(void)
/* A ternary operator is used since input_state_cb returns an int16_t, but
* we only care about whether the button is on or off which is why we store
* the value in a single bit for each button.
*
*
* Unsure if saving the memory is worth the extra checks, costing CPU time,
* but both are incredibly miniscule anyway.
*/
@@ -470,12 +509,14 @@ void retro_run(void)
* retro_get_system_av_info() call.
*/
static bool updated_video_dimensions = false;
static int64_t width, height;
static int64_t width = 0, height = 0;
static double container_fps = 30.0f;
if(updated_video_dimensions == false)
{
mpv_get_property(mpv, "dwidth", MPV_FORMAT_INT64, &width);
mpv_get_property(mpv, "dheight", MPV_FORMAT_INT64, &height);
mpv_get_property(mpv, "container-fps", MPV_FORMAT_DOUBLE, &container_fps);
/* We don't know the dimensions of the video when
* retro_get_system_av_info is called, so we have to set it here for
@@ -492,18 +533,44 @@ void retro_run(void)
.aspect_ratio = -1,
};
environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &geometry);
log_cb(RETRO_LOG_INFO, "Setting fps to %f\n", container_fps);
struct retro_system_timing timing = {
.fps = container_fps,
.sample_rate = 48000.0f,
};
struct retro_system_av_info av_info = {
.geometry = geometry,
.timing = timing,
};
if(width > 0 && height > 0)
environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &av_info);
updated_video_dimensions = true;
}
print_mpv_logs();
retropad_update_input();
/* TODO #2: Implement an audio callback feature in to libmpv */
/* audio_callback(); */
/* TODO #2: Implement an audio callback feature in to libmpv */
audio_callback(container_fps);
#if 1
if(frame_queue > 0)
{
mpv_opengl_cb_draw(mpv_gl, hw_render.get_current_framebuffer(), width, height);
video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0);
frame_queue--;
}
else
video_cb(NULL, width, height, 0);
#else
mpv_opengl_cb_draw(mpv_gl, hw_render.get_current_framebuffer(), width, height);
video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0);
#endif
return;
}
+1
View File
@@ -1,5 +1,6 @@
#include <3ds.h>
#include <sys/iosupport.h>
#include <3ds/services/apt.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
+153 -176
View File
@@ -21,46 +21,16 @@
#include <compat/strl.h>
#include <retro_endianness.h>
#include <file/file_path.h>
#include <lists/string_list.h>
#include <lists/dir_list.h>
#include <string/stdstring.h>
#include "libretro-db/libretrodb.h"
#include "list_special.h"
#include "core_info.h"
#include "database_info.h"
#include "msg_hash.h"
#include "verbosity.h"
#define DB_CURSOR_ROM_NAME 0x16bbcf13U
#define DB_CURSOR_NAME 0x7c9b0c46U
#define DB_CURSOR_DESCRIPTION 0x91b0c789U
#define DB_CURSOR_GENRE 0x0f802156U
#define DB_CURSOR_PUBLISHER 0x5e099013U
#define DB_CURSOR_DEVELOPER 0x1783d2abU
#define DB_CURSOR_ORIGIN 0x1315e3edU
#define DB_CURSOR_FRANCHISE 0xc3a526b8U
#define DB_CURSOR_BBFC_RATING 0xede26836U
#define DB_CURSOR_ESRB_RATING 0x4c3fa255U
#define DB_CURSOR_ELSPA_RATING 0xd9cab41eU
#define DB_CURSOR_CERO_RATING 0x084a1772U
#define DB_CURSOR_PEGI_RATING 0x431b736eU
#define DB_CURSOR_CHECKSUM_CRC32 0x0b88671dU
#define DB_CURSOR_CHECKSUM_SHA1 0x7c9de632U
#define DB_CURSOR_CHECKSUM_MD5 0x0b888fabU
#define DB_CURSOR_ENHANCEMENT_HW 0xab612029U
#define DB_CURSOR_EDGE_MAGAZINE_REVIEW 0xd3573eabU
#define DB_CURSOR_EDGE_MAGAZINE_RATING 0xd30dc4feU
#define DB_CURSOR_EDGE_MAGAZINE_ISSUE 0xa0f30d42U
#define DB_CURSOR_FAMITSU_MAGAZINE_RATING 0x0a50ca62U
#define DB_CURSOR_TGDB_RATING 0x8d61458aU
#define DB_CURSOR_MAX_USERS 0x1084ff77U
#define DB_CURSOR_RELEASEDATE_MONTH 0x790ad76cU
#define DB_CURSOR_RELEASEDATE_YEAR 0x7fd06ed7U
#define DB_CURSOR_RUMBLE_SUPPORTED 0x1a4dc3ecU
#define DB_CURSOR_COOP_SUPPORTED 0x7c953ff6U
#define DB_CURSOR_ANALOG_SUPPORTED 0xf220fc17U
#define DB_CURSOR_SIZE 0x7c9dede0U
#define DB_CURSOR_SERIAL 0x1b843ec5U
int database_info_build_query_enum(char *s, size_t len,
enum database_query_type type,
const char *path)
@@ -201,7 +171,6 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur,
for (i = 0; i < item.val.map.len; i++)
{
uint32_t value = 0;
struct rmsgpack_dom_value *key = &item.val.map.items[i].key;
struct rmsgpack_dom_value *val = &item.val.map.items[i].value;
const char *val_string = NULL;
@@ -209,121 +178,123 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur,
if (!key || !val)
continue;
val_string = val->val.string.buff;
str = key->val.string.buff;
value = msg_hash_calculate(str);
val_string = val->val.string.buff;
str = key->val.string.buff;
switch (value)
if (string_is_equal(str, "publisher"))
{
case DB_CURSOR_SERIAL:
if (!string_is_empty(val_string))
db_info->serial = strdup(val_string);
break;
case DB_CURSOR_ROM_NAME:
if (!string_is_empty(val_string))
db_info->rom_name = strdup(val_string);
break;
case DB_CURSOR_NAME:
if (!string_is_empty(val_string))
db_info->name = strdup(val_string);
break;
case DB_CURSOR_DESCRIPTION:
if (!string_is_empty(val_string))
db_info->description = strdup(val_string);
break;
case DB_CURSOR_GENRE:
if (!string_is_empty(val_string))
db_info->genre = strdup(val_string);
break;
case DB_CURSOR_PUBLISHER:
if (!string_is_empty(val_string))
db_info->publisher = strdup(val_string);
break;
case DB_CURSOR_DEVELOPER:
if (!string_is_empty(val_string))
db_info->developer = string_split(val_string, "|");
break;
case DB_CURSOR_ORIGIN:
if (!string_is_empty(val_string))
db_info->origin = strdup(val_string);
break;
case DB_CURSOR_FRANCHISE:
if (!string_is_empty(val_string))
db_info->franchise = strdup(val_string);
break;
case DB_CURSOR_BBFC_RATING:
if (!string_is_empty(val_string))
db_info->bbfc_rating = strdup(val_string);
break;
case DB_CURSOR_ESRB_RATING:
if (!string_is_empty(val_string))
db_info->esrb_rating = strdup(val_string);
break;
case DB_CURSOR_ELSPA_RATING:
if (!string_is_empty(val_string))
db_info->elspa_rating = strdup(val_string);
break;
case DB_CURSOR_CERO_RATING:
if (!string_is_empty(val_string))
db_info->cero_rating = strdup(val_string);
break;
case DB_CURSOR_PEGI_RATING:
if (!string_is_empty(val_string))
db_info->pegi_rating = strdup(val_string);
break;
case DB_CURSOR_ENHANCEMENT_HW:
if (!string_is_empty(val_string))
db_info->enhancement_hw = strdup(val_string);
break;
case DB_CURSOR_EDGE_MAGAZINE_REVIEW:
if (!string_is_empty(val_string))
db_info->edge_magazine_review = strdup(val_string);
break;
case DB_CURSOR_EDGE_MAGAZINE_RATING:
db_info->edge_magazine_rating = (unsigned)val->val.uint_;
break;
case DB_CURSOR_EDGE_MAGAZINE_ISSUE:
db_info->edge_magazine_issue = (unsigned)val->val.uint_;
break;
case DB_CURSOR_FAMITSU_MAGAZINE_RATING:
db_info->famitsu_magazine_rating = (unsigned)val->val.uint_;
break;
case DB_CURSOR_TGDB_RATING:
db_info->tgdb_rating = (unsigned)val->val.uint_;
break;
case DB_CURSOR_MAX_USERS:
db_info->max_users = (unsigned)val->val.uint_;
break;
case DB_CURSOR_RELEASEDATE_MONTH:
db_info->releasemonth = (unsigned)val->val.uint_;
break;
case DB_CURSOR_RELEASEDATE_YEAR:
db_info->releaseyear = (unsigned)val->val.uint_;
break;
case DB_CURSOR_RUMBLE_SUPPORTED:
db_info->rumble_supported = (int)val->val.uint_;
break;
case DB_CURSOR_COOP_SUPPORTED:
db_info->coop_supported = (int)val->val.uint_;
break;
case DB_CURSOR_ANALOG_SUPPORTED:
db_info->analog_supported = (int)val->val.uint_;
break;
case DB_CURSOR_SIZE:
db_info->size = (unsigned)val->val.uint_;
break;
case DB_CURSOR_CHECKSUM_CRC32:
db_info->crc32 = swap_if_little32(*(uint32_t*)val->val.binary.buff);
break;
case DB_CURSOR_CHECKSUM_SHA1:
db_info->sha1 = bin_to_hex_alloc((uint8_t*)val->val.binary.buff, val->val.binary.len);
break;
case DB_CURSOR_CHECKSUM_MD5:
db_info->md5 = bin_to_hex_alloc((uint8_t*)val->val.binary.buff, val->val.binary.len);
break;
default:
RARCH_LOG("Unknown key: %s\n", str);
break;
if (!string_is_empty(val_string))
db_info->publisher = strdup(val_string);
}
else if (string_is_equal(str, "developer"))
{
if (!string_is_empty(val_string))
db_info->developer = string_split(val_string, "|");
}
else if (string_is_equal(str, "serial"))
{
if (!string_is_empty(val_string))
db_info->serial = strdup(val_string);
}
else if (string_is_equal(str, "rom_name"))
{
if (!string_is_empty(val_string))
db_info->rom_name = strdup(val_string);
}
else if (string_is_equal(str, "name"))
{
if (!string_is_empty(val_string))
db_info->name = strdup(val_string);
}
else if (string_is_equal(str, "description"))
{
if (!string_is_empty(val_string))
db_info->description = strdup(val_string);
}
else if (string_is_equal(str, "genre"))
{
if (!string_is_empty(val_string))
db_info->genre = strdup(val_string);
}
else if (string_is_equal(str, "origin"))
{
if (!string_is_empty(val_string))
db_info->origin = strdup(val_string);
}
else if (string_is_equal(str, "franchise"))
{
if (!string_is_empty(val_string))
db_info->franchise = strdup(val_string);
}
else if (string_is_equal(str, "bbfc_rating"))
{
if (!string_is_empty(val_string))
db_info->bbfc_rating = strdup(val_string);
}
else if (string_is_equal(str, "esrb_rating"))
{
if (!string_is_empty(val_string))
db_info->esrb_rating = strdup(val_string);
}
else if (string_is_equal(str, "elspa_rating"))
{
if (!string_is_empty(val_string))
db_info->elspa_rating = strdup(val_string);
}
else if (string_is_equal(str, "cero_rating"))
{
if (!string_is_empty(val_string))
db_info->cero_rating = strdup(val_string);
}
else if (string_is_equal(str, "pegi_rating"))
{
if (!string_is_empty(val_string))
db_info->pegi_rating = strdup(val_string);
}
else if (string_is_equal(str, "enhancement_hw"))
{
if (!string_is_empty(val_string))
db_info->enhancement_hw = strdup(val_string);
}
else if (string_is_equal(str, "edge_review"))
{
if (!string_is_empty(val_string))
db_info->edge_magazine_review = strdup(val_string);
}
else if (string_is_equal(str, "edge_rating"))
db_info->edge_magazine_rating = (unsigned)val->val.uint_;
else if (string_is_equal(str, "edge_issue"))
db_info->edge_magazine_issue = (unsigned)val->val.uint_;
else if (string_is_equal(str, "famitsu_rating"))
db_info->famitsu_magazine_rating = (unsigned)val->val.uint_;
else if (string_is_equal(str, "tgdb_rating"))
db_info->tgdb_rating = (unsigned)val->val.uint_;
else if (string_is_equal(str, "users"))
db_info->max_users = (unsigned)val->val.uint_;
else if (string_is_equal(str, "releasemonth"))
db_info->releasemonth = (unsigned)val->val.uint_;
else if (string_is_equal(str, "releaseyear"))
db_info->releaseyear = (unsigned)val->val.uint_;
else if (string_is_equal(str, "rumble"))
db_info->rumble_supported = (int)val->val.uint_;
else if (string_is_equal(str, "coop"))
db_info->coop_supported = (int)val->val.uint_;
else if (string_is_equal(str, "analog"))
db_info->analog_supported = (int)val->val.uint_;
else if (string_is_equal(str, "size"))
db_info->size = (unsigned)val->val.uint_;
else if (string_is_equal(str, "crc"))
db_info->crc32 = swap_if_little32(
*(uint32_t*)val->val.binary.buff);
else if (string_is_equal(str, "sha1"))
db_info->sha1 = bin_to_hex_alloc(
(uint8_t*)val->val.binary.buff, val->val.binary.len);
else if (string_is_equal(str, "md5"))
db_info->md5 = bin_to_hex_alloc(
(uint8_t*)val->val.binary.buff, val->val.binary.len);
else
{
RARCH_LOG("Unknown key: %s\n", str);
}
}
@@ -371,22 +342,22 @@ static int database_cursor_close(libretrodb_t *db, libretrodb_cursor_t *cur)
return 0;
}
static bool type_is_prioritized(enum msg_file_type type)
static bool type_is_prioritized(const char *path)
{
return (type == FILE_TYPE_CUE || type == FILE_TYPE_GDI);
}
static enum msg_file_type file_type(const char *path)
{
return msg_hash_to_file_type(msg_hash_calculate(path_get_extension(path)));
const char *ext = path_get_extension(path);
if (string_is_equal_noncase(ext, "cue"))
return true;
if (string_is_equal_noncase(ext, "gdi"))
return true;
return false;
}
static int dir_entry_compare(const void *left, const void *right)
{
const struct string_list_elem *le = (const struct string_list_elem*)left;
const struct string_list_elem *re = (const struct string_list_elem*)right;
bool l = type_is_prioritized(file_type(le->data));
bool r = type_is_prioritized(file_type(re->data));
bool l = type_is_prioritized(le->data);
bool r = type_is_prioritized(re->data);
return (int) r - (int) l;
}
@@ -397,37 +368,44 @@ static void dir_list_prioritize(struct string_list *list)
}
database_info_handle_t *database_info_dir_init(const char *dir,
enum database_type type, retro_task_t *task)
enum database_type type, retro_task_t *task,
bool show_hidden_files)
{
database_info_handle_t *db = (database_info_handle_t*)
core_info_list_t *core_info_list = NULL;
struct string_list *list = NULL;
database_info_handle_t *db = (database_info_handle_t*)
calloc(1, sizeof(*db));
if (!db)
return NULL;
db->list = dir_list_new_special(dir, DIR_LIST_RECURSIVE, NULL);
core_info_get_list(&core_info_list);
if (!db->list)
goto error;
list = dir_list_new(dir, core_info_list->all_ext,
false, show_hidden_files,
false, true);
dir_list_prioritize(db->list);
if (!list)
{
free(db);
return NULL;
}
dir_list_prioritize(list);
db->list = list;
db->list_ptr = 0;
db->status = DATABASE_STATUS_ITERATE;
db->type = type;
return db;
error:
if (db)
free(db);
return NULL;
}
database_info_handle_t *database_info_file_init(const char *path,
enum database_type type, retro_task_t *task)
{
union string_list_elem_attr attr;
struct string_list *list = NULL;
database_info_handle_t *db = (database_info_handle_t*)
calloc(1, sizeof(*db));
@@ -436,23 +414,22 @@ database_info_handle_t *database_info_file_init(const char *path,
attr.i = 0;
db->list = string_list_new();
list = string_list_new();
if (!db->list)
goto error;
if (!list)
{
free(db);
return NULL;
}
string_list_append(db->list, path, attr);
string_list_append(list, path, attr);
db->list_ptr = 0;
db->list = list;
db->status = DATABASE_STATUS_ITERATE;
db->type = type;
return db;
error:
if (db)
free(db);
return NULL;
}
void database_info_free(database_info_handle_t *db)
+2 -1
View File
@@ -126,7 +126,8 @@ database_info_list_t *database_info_list_new(const char *rdb_path,
void database_info_list_free(database_info_list_t *list);
database_info_handle_t *database_info_dir_init(const char *dir,
enum database_type type, retro_task_t *task);
enum database_type type, retro_task_t *task,
bool show_hidden_files);
database_info_handle_t *database_info_file_init(const char *path,
enum database_type type, retro_task_t *task);
+2 -2
View File
@@ -2,7 +2,7 @@ language: cpp
os:
- linux
- osx
osx_image: xcode8.2
osx_image: xcode8.3
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
sudo: required
@@ -13,7 +13,7 @@ env:
- GLSLANG_REV=9c6f8cc29ba303b43ccf36deea6bb38a304f9b92 SPIRV_TOOLS_REV=e28edd458b729da7bbfd51e375feb33103709e6f
before_script:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; brew install python3; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew upgrade python3; fi
- git clone https://github.com/KhronosGroup/glslang.git glslang
- git clone https://github.com/KhronosGroup/SPIRV-Tools SPIRV-Tools
- git clone https://github.com/KhronosGroup/SPIRV-Headers.git SPIRV-Tools/external/spirv-headers
+6 -1
View File
@@ -101,12 +101,17 @@ spirv_cross_add_library(spirv-cross-hlsl spirv_cross_hlsl STATIC
${CMAKE_CURRENT_SOURCE_DIR}/spirv_hlsl.hpp
${CMAKE_CURRENT_SOURCE_DIR}/spirv_hlsl.cpp)
spirv_cross_add_library(spirv-cross-util spirv_cross_util STATIC
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cross_util.hpp
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cross_util.cpp)
add_executable(spirv-cross main.cpp)
target_compile_options(spirv-cross PRIVATE ${spirv-compiler-options})
target_compile_definitions(spirv-cross PRIVATE ${spirv-compiler-defines})
install(TARGETS spirv-cross RUNTIME DESTINATION bin)
target_link_libraries(spirv-cross spirv-cross-glsl spirv-cross-hlsl spirv-cross-cpp spirv-cross-msl spirv-cross-core)
target_link_libraries(spirv-cross spirv-cross-glsl spirv-cross-hlsl spirv-cross-cpp spirv-cross-msl spirv-cross-util spirv-cross-core)
target_link_libraries(spirv-cross-util spirv-cross-core)
target_link_libraries(spirv-cross-glsl spirv-cross-core)
target_link_libraries(spirv-cross-msl spirv-cross-glsl)
target_link_libraries(spirv-cross-hlsl spirv-cross-glsl)
+2 -2
View File
@@ -7,8 +7,8 @@ SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader
## Features
- Convert SPIR-V to readable, usable and efficient GLSL
- Convert SPIR-V to readable, usable and efficient Metal Shading Language (MSL) [EXPERIMENTAL]
- Convert SPIR-V to readable, usable and efficient HLSL [EXPERIMENTAL]
- Convert SPIR-V to readable, usable and efficient Metal Shading Language (MSL)
- Convert SPIR-V to readable, usable and efficient HLSL
- Convert SPIR-V to debuggable C++ [EXPERIMENTAL]
- Reflection API to simplify the creation of Vulkan pipeline layouts
- Reflection API to modify and tweak OpDecorations
+1 -1
View File
@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
LOCAL_CFLAGS += -std=c++11 -Wall -Wextra
LOCAL_MODULE := spirv-cross
LOCAL_SRC_FILES := ../spirv_cfg.cpp ../spirv_cross.cpp ../spirv_glsl.cpp ../spirv_msl.cpp ../spirv_cpp.cpp
LOCAL_SRC_FILES := ../spirv_cfg.cpp ../spirv_cross.cpp ../spirv_cross_util.cpp ../spirv_glsl.cpp ../spirv_hlsl.cpp ../spirv_msl.cpp ../spirv_cpp.cpp
LOCAL_CPP_FEATURES := exceptions
LOCAL_ARM_MODE := arm
LOCAL_CFLAGS := -D__STDC_LIMIT_MACROS
+128 -35
View File
@@ -15,6 +15,7 @@
*/
#include "spirv_cpp.hpp"
#include "spirv_cross_util.hpp"
#include "spirv_glsl.hpp"
#include "spirv_hlsl.hpp"
#include "spirv_msl.hpp"
@@ -286,9 +287,9 @@ static void print_resources(const Compiler &compiler, const ShaderResources &res
uint64_t modes = compiler.get_execution_mode_mask();
fprintf(stderr, "Entry points:\n");
auto entry_points = compiler.get_entry_points();
auto entry_points = compiler.get_entry_points_and_stages();
for (auto &e : entry_points)
fprintf(stderr, " %s (%s)\n", e.c_str(), execution_model_to_str(compiler.get_entry_point(e).model));
fprintf(stderr, " %s (%s)\n", e.name.c_str(), execution_model_to_str(e.execution_model));
fprintf(stderr, "\n");
fprintf(stderr, "Execution modes:\n");
@@ -467,8 +468,15 @@ struct CLIArguments
vector<InterfaceVariableRename> interface_variable_renames;
vector<HLSLVertexAttributeRemap> hlsl_attr_remap;
string entry;
string entry_stage;
vector<pair<string, string>> entry_point_rename;
struct Rename
{
string old_name;
string new_name;
ExecutionModel execution_model;
};
vector<Rename> entry_point_rename;
uint32_t iterations = 1;
bool cpp = false;
@@ -491,12 +499,13 @@ static void print_help()
"[--hlsl] [--shader-model] [--hlsl-enable-compat] "
"[--separate-shader-objects]"
"[--pls-in format input-name] [--pls-out format output-name] [--remap source_name target_name "
"components] [--extension ext] [--entry name] [--remove-unused-variables] "
"components] [--extension ext] [--entry name] [--stage <stage (vert, frag, geom, tesc, tese, "
"comp)>] [--remove-unused-variables] "
"[--flatten-multidimensional-arrays] [--no-420pack-extension] "
"[--remap-variable-type <variable_name> <new_variable_type>] "
"[--rename-interface-variable <in|out> <location> <new_variable_name>] "
"[--set-hlsl-vertex-input-semantic <location> <semantic>] "
"[--rename-entry-point <old> <new>] "
"[--rename-entry-point <old> <new> <stage>] "
"\n");
}
@@ -584,31 +593,22 @@ static PlsFormat pls_format(const char *str)
return PlsNone;
}
void rename_interface_variable(Compiler &compiler, const vector<Resource> &resources,
const InterfaceVariableRename &rename)
static ExecutionModel stage_to_execution_model(const std::string &stage)
{
for (auto &v : resources)
{
if (!compiler.has_decoration(v.id, spv::DecorationLocation))
continue;
auto loc = compiler.get_decoration(v.id, spv::DecorationLocation);
if (loc != rename.location)
continue;
auto &type = compiler.get_type(v.base_type_id);
// This is more of a friendly variant. If we need to rename interface variables, we might have to rename
// structs as well and make sure all the names match up.
if (type.basetype == SPIRType::Struct)
{
compiler.set_name(v.base_type_id, join("SPIRV_Cross_Interface_Location", rename.location));
for (uint32_t i = 0; i < uint32_t(type.member_types.size()); i++)
compiler.set_member_name(v.base_type_id, i, join("InterfaceMember", i));
}
compiler.set_name(v.id, rename.variable_name);
}
if (stage == "vert")
return ExecutionModelVertex;
else if (stage == "frag")
return ExecutionModelFragment;
else if (stage == "comp")
return ExecutionModelGLCompute;
else if (stage == "tesc")
return ExecutionModelTessellationControl;
else if (stage == "tese")
return ExecutionModelTessellationEvaluation;
else if (stage == "geom")
return ExecutionModelGeometry;
else
SPIRV_CROSS_THROW("Invalid stage.");
}
static int main_inner(int argc, char *argv[])
@@ -652,9 +652,11 @@ static int main_inner(int argc, char *argv[])
cbs.add("--rename-entry-point", [&args](CLIParser &parser) {
auto old_name = parser.next_string();
auto new_name = parser.next_string();
args.entry_point_rename.push_back({ old_name, new_name });
auto model = stage_to_execution_model(parser.next_string());
args.entry_point_rename.push_back({ old_name, new_name, move(model) });
});
cbs.add("--entry", [&args](CLIParser &parser) { args.entry = parser.next_string(); });
cbs.add("--stage", [&args](CLIParser &parser) { args.entry_stage = parser.next_string(); });
cbs.add("--separate-shader-objects", [&args](CLIParser &) { args.sso = true; });
cbs.add("--set-hlsl-vertex-input-semantic", [&args](CLIParser &parser) {
HLSLVertexAttributeRemap remap;
@@ -733,6 +735,7 @@ static int main_inner(int argc, char *argv[])
unique_ptr<CompilerGLSL> compiler;
bool combined_image_samplers = false;
bool build_dummy_sampler = false;
if (args.cpp)
{
@@ -755,6 +758,7 @@ static int main_inner(int argc, char *argv[])
else
{
combined_image_samplers = !args.vulkan_semantics;
build_dummy_sampler = true;
compiler = unique_ptr<CompilerGLSL>(new CompilerGLSL(read_spirv_file(args.input)));
}
@@ -770,10 +774,82 @@ static int main_inner(int argc, char *argv[])
}
for (auto &rename : args.entry_point_rename)
compiler->rename_entry_point(rename.first, rename.second);
compiler->rename_entry_point(rename.old_name, rename.new_name, rename.execution_model);
if (!args.entry.empty())
compiler->set_entry_point(args.entry);
auto entry_points = compiler->get_entry_points_and_stages();
auto entry_point = args.entry;
ExecutionModel model = ExecutionModelMax;
if (!args.entry_stage.empty())
{
model = stage_to_execution_model(args.entry_stage);
if (entry_point.empty())
{
// Just use the first entry point with this stage.
for (auto &e : entry_points)
{
if (e.execution_model == model)
{
entry_point = e.name;
break;
}
}
if (entry_point.empty())
{
fprintf(stderr, "Could not find an entry point with stage: %s\n", args.entry_stage.c_str());
return EXIT_FAILURE;
}
}
else
{
// Make sure both stage and name exists.
bool exists = false;
for (auto &e : entry_points)
{
if (e.execution_model == model && e.name == entry_point)
{
exists = true;
break;
}
}
if (!exists)
{
fprintf(stderr, "Could not find an entry point %s with stage: %s\n", entry_point.c_str(),
args.entry_stage.c_str());
return EXIT_FAILURE;
}
}
}
else if (!entry_point.empty())
{
// Make sure there is just one entry point with this name, or the stage
// is ambiguous.
uint32_t stage_count = 0;
for (auto &e : entry_points)
{
if (e.name == entry_point)
{
stage_count++;
model = e.execution_model;
}
}
if (stage_count == 0)
{
fprintf(stderr, "There is no entry point with name: %s\n", entry_point.c_str());
return EXIT_FAILURE;
}
else if (stage_count > 1)
{
fprintf(stderr, "There is more than one entry point with name: %s. Use --stage.\n", entry_point.c_str());
return EXIT_FAILURE;
}
}
if (!entry_point.empty())
compiler->set_entry_point(entry_point, model);
if (!args.set_version && !compiler->get_options().version)
{
@@ -816,10 +892,14 @@ static int main_inner(int argc, char *argv[])
{
// Enable all compat options.
hlsl_opts.point_size_compat = true;
hlsl_opts.point_coord_compat = true;
}
hlsl->set_options(hlsl_opts);
}
if (build_dummy_sampler)
compiler->build_dummy_sampler_for_combined_images();
ShaderResources res;
if (args.remove_unused)
{
@@ -858,9 +938,11 @@ static int main_inner(int argc, char *argv[])
for (auto &rename : args.interface_variable_renames)
{
if (rename.storageClass == StorageClassInput)
rename_interface_variable(*compiler, res.stage_inputs, rename);
spirv_cross_util::rename_interface_variable(*compiler, res.stage_inputs, rename.location,
rename.variable_name);
else if (rename.storageClass == StorageClassOutput)
rename_interface_variable(*compiler, res.stage_outputs, rename);
spirv_cross_util::rename_interface_variable(*compiler, res.stage_outputs, rename.location,
rename.variable_name);
else
{
fprintf(stderr, "error at --rename-interface-variable <in|out> ...\n");
@@ -887,6 +969,17 @@ static int main_inner(int argc, char *argv[])
}
}
if (args.hlsl)
{
auto *hlsl_compiler = static_cast<CompilerHLSL *>(compiler.get());
uint32_t new_builtin = hlsl_compiler->remap_num_workgroups_builtin();
if (new_builtin)
{
hlsl_compiler->set_decoration(new_builtin, DecorationDescriptorSet, 0);
hlsl_compiler->set_decoration(new_builtin, DecorationBinding, 0);
}
}
string glsl;
for (uint32_t i = 0; i < args.iterations; i++)
{
+2
View File
@@ -130,6 +130,7 @@
<ClCompile Include="..\spirv_hlsl.cpp" />
<ClCompile Include="..\spirv_msl.cpp" />
<ClCompile Include="..\spirv_cfg.cpp" />
<ClCompile Include="..\spirv_cross_util.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\GLSL.std.450.h" />
@@ -141,6 +142,7 @@
<ClInclude Include="..\spirv_hlsl.hpp" />
<ClInclude Include="..\spirv_msl.hpp" />
<ClInclude Include="..\spirv_cfg.hpp" />
<ClInclude Include="..\spirv_cross_util.hpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
+6
View File
@@ -36,6 +36,9 @@
<ClCompile Include="..\spirv_hlsl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\spirv_cross_util.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\GLSL.std.450.h">
@@ -65,5 +68,8 @@
<ClInclude Include="..\spirv_hlsl.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\spirv_cross_util.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
@@ -0,0 +1,29 @@
static float4 FragColor;
static float4 vA;
static float4 vB;
struct SPIRV_Cross_Input
{
float4 vA : TEXCOORD0;
float4 vB : TEXCOORD1;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = fmod(vA, vB);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vA = stage_input.vA;
vB = stage_input.vB;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,19 @@
static float4 FragColor;
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = (((1.0f.xxxx + 1.0f.xxxx) + (1.0f.xxx.xyzz + 1.0f.xxxx)) + (1.0f.xxxx + 2.0f.xxxx)) + (1.0f.xx.xyxy + 2.0f.xxxx);
}
SPIRV_Cross_Output main()
{
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,122 @@
RWByteAddressBuffer _15 : register(u0);
ByteAddressBuffer _20 : register(t1);
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float2x2 SPIRV_Cross_Inverse(float2x2 m)
{
float2x2 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = m[1][1];
adj[0][1] = -m[0][1];
adj[1][0] = -m[1][0];
adj[1][1] = m[0][0];
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
// Returns the determinant of a 2x2 matrix.
float SPIRV_Cross_Det2x2(float a1, float a2, float b1, float b2)
{
return a1 * b2 - b1 * a2;
}
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float3x3 SPIRV_Cross_Inverse(float3x3 m)
{
float3x3 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = SPIRV_Cross_Det2x2(m[1][1], m[1][2], m[2][1], m[2][2]);
adj[0][1] = -SPIRV_Cross_Det2x2(m[0][1], m[0][2], m[2][1], m[2][2]);
adj[0][2] = SPIRV_Cross_Det2x2(m[0][1], m[0][2], m[1][1], m[1][2]);
adj[1][0] = -SPIRV_Cross_Det2x2(m[1][0], m[1][2], m[2][0], m[2][2]);
adj[1][1] = SPIRV_Cross_Det2x2(m[0][0], m[0][2], m[2][0], m[2][2]);
adj[1][2] = -SPIRV_Cross_Det2x2(m[0][0], m[0][2], m[1][0], m[1][2]);
adj[2][0] = SPIRV_Cross_Det2x2(m[1][0], m[1][1], m[2][0], m[2][1]);
adj[2][1] = -SPIRV_Cross_Det2x2(m[0][0], m[0][1], m[2][0], m[2][1]);
adj[2][2] = SPIRV_Cross_Det2x2(m[0][0], m[0][1], m[1][0], m[1][1]);
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]) + (adj[0][2] * m[2][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
// Returns the determinant of a 3x3 matrix.
float SPIRV_Cross_Det3x3(float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3)
{
return a1 * SPIRV_Cross_Det2x2(b2, b3, c2, c3) - b1 * SPIRV_Cross_Det2x2(a2, a3, c2, c3) + c1 * SPIRV_Cross_Det2x2(a2, a3, b2, b3);
}
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float4x4 SPIRV_Cross_Inverse(float4x4 m)
{
float4x4 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = SPIRV_Cross_Det3x3(m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][1] = -SPIRV_Cross_Det3x3(m[0][1], m[0][2], m[0][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][2] = SPIRV_Cross_Det3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[3][1], m[3][2], m[3][3]);
adj[0][3] = -SPIRV_Cross_Det3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3]);
adj[1][0] = -SPIRV_Cross_Det3x3(m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][1] = SPIRV_Cross_Det3x3(m[0][0], m[0][2], m[0][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][2] = -SPIRV_Cross_Det3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[3][0], m[3][2], m[3][3]);
adj[1][3] = SPIRV_Cross_Det3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3]);
adj[2][0] = SPIRV_Cross_Det3x3(m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][1] = -SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][2] = SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]);
adj[2][3] = -SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3]);
adj[3][0] = -SPIRV_Cross_Det3x3(m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][1] = SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][2] = -SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[3][0], m[3][1], m[3][2]);
adj[3][3] = SPIRV_Cross_Det3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]);
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]) + (adj[0][2] * m[2][0]) + (adj[0][3] * m[3][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
void comp_main()
{
float2x2 _23 = asfloat(uint2x2(_20.Load2(0), _20.Load2(8)));
float2x2 _24 = SPIRV_Cross_Inverse(_23);
_15.Store2(0, asuint(_24[0]));
_15.Store2(8, asuint(_24[1]));
float3x3 _29 = asfloat(uint3x3(_20.Load3(16), _20.Load3(32), _20.Load3(48)));
float3x3 _30 = SPIRV_Cross_Inverse(_29);
_15.Store3(16, asuint(_30[0]));
_15.Store3(32, asuint(_30[1]));
_15.Store3(48, asuint(_30[2]));
float4x4 _35 = asfloat(uint4x4(_20.Load4(64), _20.Load4(80), _20.Load4(96), _20.Load4(112)));
float4x4 _36 = SPIRV_Cross_Inverse(_35);
_15.Store4(64, asuint(_36[0]));
_15.Store4(80, asuint(_36[1]));
_15.Store4(96, asuint(_36[2]));
_15.Store4(112, asuint(_36[3]));
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}
@@ -0,0 +1,16 @@
RWByteAddressBuffer _10 : register(u0);
cbuffer SPIRV_Cross_NumWorkgroups : register(b0)
{
uint3 SPIRV_Cross_NumWorkgroups_count : packoffset(c0);
};
void comp_main()
{
_10.Store3(0, SPIRV_Cross_NumWorkgroups_count);
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}
@@ -0,0 +1,23 @@
RWByteAddressBuffer _10 : register(u0);
cbuffer SPIRV_Cross_NumWorkgroups : register(b0)
{
uint3 SPIRV_Cross_NumWorkgroups_count : packoffset(c0);
};
static uint3 gl_WorkGroupID;
struct SPIRV_Cross_Input
{
uint3 gl_WorkGroupID : SV_GroupID;
};
void comp_main()
{
_10.Store3(0, SPIRV_Cross_NumWorkgroups_count + gl_WorkGroupID);
}
[numthreads(1, 1, 1)]
void main(SPIRV_Cross_Input stage_input)
{
gl_WorkGroupID = stage_input.gl_WorkGroupID;
comp_main();
}
@@ -0,0 +1,30 @@
static float gl_ClipDistance[2];
static float gl_CullDistance[1];
static float FragColor;
struct SPIRV_Cross_Input
{
float2 gl_ClipDistance0 : SV_ClipDistance0;
float gl_CullDistance0 : SV_CullDistance0;
};
struct SPIRV_Cross_Output
{
float FragColor : SV_Target0;
};
void frag_main()
{
FragColor = (gl_ClipDistance[0] + gl_CullDistance[0]) + gl_ClipDistance[1];
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
gl_ClipDistance[0] = stage_input.gl_ClipDistance0.x;
gl_ClipDistance[1] = stage_input.gl_ClipDistance0.y;
gl_CullDistance[0] = stage_input.gl_CullDistance0.x;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,39 @@
static bool gl_FrontFacing;
static float4 FragColor;
static float4 vA;
static float4 vB;
struct SPIRV_Cross_Input
{
float4 vA : TEXCOORD0;
float4 vB : TEXCOORD1;
bool gl_FrontFacing : SV_IsFrontFace;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
if (gl_FrontFacing)
{
FragColor = vA;
}
else
{
FragColor = vB;
}
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
gl_FrontFacing = stage_input.gl_FrontFacing;
vA = stage_input.vA;
vB = stage_input.vB;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,19 @@
static float3 FragColor;
struct SPIRV_Cross_Output
{
float3 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = float3(asfloat(0x7f800000u), asfloat(0xff800000u), asfloat(0xffc00000u));
}
SPIRV_Cross_Output main()
{
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,32 @@
Texture2DMS<float4> uSubpass0 : register(t0);
Texture2DMS<float4> uSubpass1 : register(t1);
static float4 gl_FragCoord;
static int gl_SampleID;
static float4 FragColor;
struct SPIRV_Cross_Input
{
float4 gl_FragCoord : SV_Position;
uint gl_SampleID : SV_SampleIndex;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = (uSubpass0.Load(int2(gl_FragCoord.xy), 1) + uSubpass1.Load(int2(gl_FragCoord.xy), 2)) + uSubpass0.Load(int2(gl_FragCoord.xy), gl_SampleID);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
gl_FragCoord = stage_input.gl_FragCoord;
gl_SampleID = stage_input.gl_SampleID;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,29 @@
Texture2D<float4> uSubpass0 : register(t0);
Texture2D<float4> uSubpass1 : register(t1);
static float4 gl_FragCoord;
static float4 FragColor;
struct SPIRV_Cross_Input
{
float4 gl_FragCoord : SV_Position;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = uSubpass0.Load(int3(int2(gl_FragCoord.xy), 0)) + uSubpass1.Load(int3(int2(gl_FragCoord.xy), 0));
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
gl_FragCoord = stage_input.gl_FragCoord;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,19 @@
static float2 FragColor;
struct SPIRV_Cross_Output
{
float2 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = float2(0.5f, 0.5f);
}
SPIRV_Cross_Output main()
{
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,33 @@
static const int Value = 2;
cbuffer _15 : register(b0)
{
float4 _15_samples[Value] : packoffset(c0);
};
static float4 FragColor;
static int Index;
struct SPIRV_Cross_Input
{
nointerpolation int Index : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = _15_samples[Index];
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
Index = stage_input.Index;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,28 @@
static float4 gl_Position;
static float gl_ClipDistance[2];
static float gl_CullDistance[1];
struct SPIRV_Cross_Output
{
float4 gl_Position : SV_Position;
float2 gl_ClipDistance0 : SV_ClipDistance0;
float gl_CullDistance0 : SV_CullDistance0;
};
void vert_main()
{
gl_Position = 1.0f.xxxx;
gl_ClipDistance[0] = 0.0f;
gl_ClipDistance[1] = 0.0f;
gl_CullDistance[0] = 4.0f;
}
SPIRV_Cross_Output main()
{
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
stage_output.gl_ClipDistance0.x = gl_ClipDistance[0];
stage_output.gl_ClipDistance0.y = gl_ClipDistance[1];
stage_output.gl_CullDistance0.x = gl_CullDistance[0];
return stage_output;
}
@@ -8,7 +8,7 @@ struct SPIRV_Cross_Output
void vert_main()
{
gl_Position = 1.0f.xxxx;
gl_PointSize = 10.0f;
gl_PointSize = 1.0f;
}
SPIRV_Cross_Output main()
@@ -0,0 +1,31 @@
static const float4 _20[2] = { 10.0f.xxxx, 20.0f.xxxx };
static float4 gl_Position;
static float4 vInput0;
static float4 vInput1;
struct SPIRV_Cross_Input
{
float4 vInput0 : TEXCOORD0;
float4 vInput1 : TEXCOORD1;
};
struct SPIRV_Cross_Output
{
float4 gl_Position : SV_Position;
};
void vert_main()
{
gl_Position = 10.0f.xxxx + vInput1;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vInput0 = stage_input.vInput0;
vInput1 = stage_input.vInput1;
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
return stage_output;
}
@@ -0,0 +1,23 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_in
{
float4 vB [[user(locn1)]];
float4 vA [[user(locn0)]];
};
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
out.FragColor = fmod(in.vA, in.vB);
return out;
}
@@ -0,0 +1,17 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0()
{
main0_out out = {};
out.FragColor = (((float4(1.0) + float4(1.0)) + (float3(1.0).xyzz + float4(1.0))) + (float4(1.0) + float4(2.0))) + (float2(1.0).xyxy + float4(2.0));
return out;
}
@@ -0,0 +1,123 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct MatrixOut
{
float2x2 m2out;
float3x3 m3out;
float4x4 m4out;
};
struct MatrixIn
{
float2x2 m2in;
float3x3 m3in;
float4x4 m4in;
};
// Returns the determinant of a 2x2 matrix.
inline float spvDet2x2(float a1, float a2, float b1, float b2)
{
return a1 * b2 - b1 * a2;
}
// Returns the determinant of a 3x3 matrix.
inline float spvDet3x3(float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3)
{
return a1 * spvDet2x2(b2, b3, c2, c3) - b1 * spvDet2x2(a2, a3, c2, c3) + c1 * spvDet2x2(a2, a3, b2, b3);
}
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float4x4 spvInverse4x4(float4x4 m)
{
float4x4 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = spvDet3x3(m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][1] = -spvDet3x3(m[0][1], m[0][2], m[0][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][2] = spvDet3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[3][1], m[3][2], m[3][3]);
adj[0][3] = -spvDet3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3]);
adj[1][0] = -spvDet3x3(m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][1] = spvDet3x3(m[0][0], m[0][2], m[0][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][2] = -spvDet3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[3][0], m[3][2], m[3][3]);
adj[1][3] = spvDet3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3]);
adj[2][0] = spvDet3x3(m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][1] = -spvDet3x3(m[0][0], m[0][1], m[0][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][2] = spvDet3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]);
adj[2][3] = -spvDet3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3]);
adj[3][0] = -spvDet3x3(m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][1] = spvDet3x3(m[0][0], m[0][1], m[0][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][2] = -spvDet3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[3][0], m[3][1], m[3][2]);
adj[3][3] = spvDet3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]);
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]) + (adj[0][2] * m[2][0]) + (adj[0][3] * m[3][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float3x3 spvInverse3x3(float3x3 m)
{
float3x3 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = spvDet2x2(m[1][1], m[1][2], m[2][1], m[2][2]);
adj[0][1] = -spvDet2x2(m[0][1], m[0][2], m[2][1], m[2][2]);
adj[0][2] = spvDet2x2(m[0][1], m[0][2], m[1][1], m[1][2]);
adj[1][0] = -spvDet2x2(m[1][0], m[1][2], m[2][0], m[2][2]);
adj[1][1] = spvDet2x2(m[0][0], m[0][2], m[2][0], m[2][2]);
adj[1][2] = -spvDet2x2(m[0][0], m[0][2], m[1][0], m[1][2]);
adj[2][0] = spvDet2x2(m[1][0], m[1][1], m[2][0], m[2][1]);
adj[2][1] = -spvDet2x2(m[0][0], m[0][1], m[2][0], m[2][1]);
adj[2][2] = spvDet2x2(m[0][0], m[0][1], m[1][0], m[1][1]);
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]) + (adj[0][2] * m[2][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
// Returns the inverse of a matrix, by using the algorithm of calculating the classical
// adjoint and dividing by the determinant. The contents of the matrix are changed.
float2x2 spvInverse2x2(float2x2 m)
{
float2x2 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = m[1][1];
adj[0][1] = -m[0][1];
adj[1][0] = -m[1][0];
adj[1][1] = m[0][0];
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
}
kernel void main0(device MatrixOut& _15 [[buffer(0)]], device MatrixIn& _20 [[buffer(1)]])
{
_15.m2out = spvInverse2x2(_20.m2in);
_15.m3out = spvInverse3x3(_20.m3in);
_15.m4out = spvInverse4x4(_20.m4in);
}
@@ -0,0 +1,29 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct s1
{
int a;
};
struct s2
{
s1 b;
};
struct dstbuffer
{
s2 test[1];
};
constant s2 _31 = {};
kernel void main0(device dstbuffer& _19 [[buffer(0)]])
{
s2 _30 = _31;
_30.b.a = 0;
_19.test[0].b.a = _30.b.a;
}
@@ -3,6 +3,8 @@
using namespace metal;
typedef float3x2 packed_float2x3;
struct S0
{
float2 a[1];
@@ -58,8 +60,10 @@ struct SSBO1
float3x2 m3;
float2x2 m4;
float2x2 m5[9];
float2x3 m6[4][2];
packed_float2x3 m6[4][2];
char pad10[8];
float3x2 m7;
char pad11[8];
float array[1];
};
@@ -96,5 +100,6 @@ kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [
ssbo_430.content.m3s[5].c = ssbo_140.content.m3s[5].c;
ssbo_430.content.m3s[6].c = ssbo_140.content.m3s[6].c;
ssbo_430.content.m3s[7].c = ssbo_140.content.m3s[7].c;
ssbo_430.content.m1.a = ssbo_430.content.m3.a * ssbo_430.m6[1][1];
}
@@ -1,3 +1,5 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
@@ -9,6 +11,12 @@ struct Foobar
float b;
};
constant float4 _37[3] = {float4(1.0), float4(2.0), float4(3.0)};
constant float4 _49[2] = {float4(1.0), float4(2.0)};
constant float4 _54[2] = {float4(8.0), float4(10.0)};
constant float4 _55[2][2] = {{float4(1.0), float4(2.0)}, {float4(8.0), float4(10.0)}};
constant Foobar _75[2] = {{10.0, 40.0}, {90.0, 70.0}};
struct main0_in
{
int index [[user(locn0)]];
@@ -19,6 +27,20 @@ struct main0_out
float4 FragColor [[color(0)]];
};
// Implementation of an array copy function to cover GLSL's ability to copy an array via assignment.
template<typename T, uint N>
void spvArrayCopy(thread T (&dst)[N], thread const T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
// An overload for constant arrays.
template<typename T, uint N>
void spvArrayCopyConstant(thread T (&dst)[N], constant T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
fragment main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
@@ -1,3 +1,5 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
@@ -9,6 +11,9 @@ struct Foo
float b;
};
constant float _16[4] = {1.0, 4.0, 3.0, 2.0};
constant Foo _28[2] = {{10.0, 20.0}, {30.0, 40.0}};
struct main0_in
{
int line [[user(locn0)]];
@@ -19,6 +24,20 @@ struct main0_out
float4 FragColor [[color(0)]];
};
// Implementation of an array copy function to cover GLSL's ability to copy an array via assignment.
template<typename T, uint N>
void spvArrayCopy(thread T (&dst)[N], thread const T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
// An overload for constant arrays.
template<typename T, uint N>
void spvArrayCopyConstant(thread T (&dst)[N], constant T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
fragment main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
@@ -0,0 +1,30 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_in
{
float4 vB [[user(locn1)]];
float4 vA [[user(locn0)]];
};
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0(main0_in in [[stage_in]], bool gl_FrontFacing [[front_facing]])
{
main0_out out = {};
if (gl_FrontFacing)
{
out.FragColor = in.vA;
}
else
{
out.FragColor = in.vB;
}
return out;
}
@@ -0,0 +1,17 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float3 FragColor [[color(0)]];
};
fragment main0_out main0()
{
main0_out out = {};
out.FragColor = float3(as_type<float>(0x7f800000u), as_type<float>(0xff800000u), as_type<float>(0xffc00000u));
return out;
}
@@ -0,0 +1,17 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0(texture2d_ms<float> uSubpass0 [[texture(0)]], texture2d_ms<float> uSubpass1 [[texture(1)]], uint gl_SampleID [[sample_id]], float4 gl_FragCoord [[position]])
{
main0_out out = {};
out.FragColor = (uSubpass0.read(uint2(gl_FragCoord.xy), 1) + uSubpass1.read(uint2(gl_FragCoord.xy), 2)) + uSubpass0.read(uint2(gl_FragCoord.xy), gl_SampleID);
return out;
}
@@ -0,0 +1,17 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0(texture2d<float> uSubpass0 [[texture(0)]], texture2d<float> uSubpass1 [[texture(1)]], float4 gl_FragCoord [[position]])
{
main0_out out = {};
out.FragColor = uSubpass0.read(uint2(gl_FragCoord.xy), 0) + uSubpass1.read(uint2(gl_FragCoord.xy), 0);
return out;
}
@@ -0,0 +1,17 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float FragColor [[color(0)]];
};
fragment main0_out main0(depth2d<float> uDepth [[texture(0)]], texture2d<float> uColor [[texture(1)]], sampler uSamplerShadow [[sampler(0)]], sampler uSampler [[sampler(1)]])
{
main0_out out = {};
out.FragColor = uDepth.sample_compare(uSamplerShadow, float3(0.5).xy, 0.5) + uColor.sample(uSampler, float2(0.5)).x;
return out;
}
@@ -0,0 +1,19 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct main0_out
{
float4 FragColor [[color(0)]];
uint gl_SampleMask [[sample_mask]];
};
fragment main0_out main0()
{
main0_out out = {};
out.FragColor = float4(1.0);
out.gl_SampleMask = 0;
return out;
}
@@ -0,0 +1,27 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SpecConstArray
{
float4 samples[2];
};
struct main0_in
{
int Index [[user(locn0)]];
};
struct main0_out
{
float4 FragColor [[color(0)]];
};
fragment main0_out main0(main0_in in [[stage_in]], constant SpecConstArray& _15 [[buffer(0)]])
{
main0_out out = {};
out.FragColor = _15.samples[in.Index];
return out;
}
@@ -75,31 +75,31 @@ inline float spvDet3x3(float a1, float a2, float a3, float b1, float b2, float b
float4x4 spvInverse4x4(float4x4 m)
{
float4x4 adj; // The adjoint matrix (inverse after dividing by determinant)
// Create the transpose of the cofactors, as the classical adjoint of the matrix.
adj[0][0] = spvDet3x3(m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][1] = -spvDet3x3(m[0][1], m[0][2], m[0][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]);
adj[0][2] = spvDet3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[3][1], m[3][2], m[3][3]);
adj[0][3] = -spvDet3x3(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3]);
adj[1][0] = -spvDet3x3(m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][1] = spvDet3x3(m[0][0], m[0][2], m[0][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]);
adj[1][2] = -spvDet3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[3][0], m[3][2], m[3][3]);
adj[1][3] = spvDet3x3(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3]);
adj[2][0] = spvDet3x3(m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][1] = -spvDet3x3(m[0][0], m[0][1], m[0][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]);
adj[2][2] = spvDet3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]);
adj[2][3] = -spvDet3x3(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3]);
adj[3][0] = -spvDet3x3(m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][1] = spvDet3x3(m[0][0], m[0][1], m[0][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]);
adj[3][2] = -spvDet3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[3][0], m[3][1], m[3][2]);
adj[3][3] = spvDet3x3(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]);
// Calculate the determinant as a combination of the cofactors of the first row.
float det = (adj[0][0] * m[0][0]) + (adj[0][1] * m[1][0]) + (adj[0][2] * m[2][0]) + (adj[0][3] * m[3][0]);
// Divide the classical adjoint matrix by the determinant.
// If determinant is zero, matrix is not invertable, so leave it unchanged.
return (det != 0.0f) ? (adj * (1.0f / det)) : m;
@@ -0,0 +1,56 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef float3x4 packed_float4x3;
struct _15
{
packed_float4x3 _m0;
packed_float4x3 _m1;
};
struct _42
{
float4x4 _m0;
float4x4 _m1;
float _m2;
char pad3[12];
packed_float3 _m3;
float _m4;
packed_float3 _m5;
float _m6;
float _m7;
float _m8;
float2 _m9;
};
struct main0_in
{
float4 m_25 [[attribute(0)]];
};
struct main0_out
{
float3 m_72 [[user(locn0)]];
float4 gl_Position [[position]];
};
vertex main0_out main0(main0_in in [[stage_in]], constant _15& _17 [[buffer(0)]], constant _42& _44 [[buffer(1)]])
{
main0_out out = {};
float3 _34;
do
{
_34 = normalize(float4(in.m_25.xyz, 0.0) * _17._m1);
break;
} while (false);
float4 _70 = _44._m0 * float4(_44._m3 + (in.m_25.xyz * (_44._m6 + _44._m7)), 1.0);
out.m_72 = _34;
float4 _95 = _70;
_95.y = -_70.y;
out.gl_Position = _95;
return out;
}
@@ -0,0 +1,24 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
constant float4 _20[2] = {float4(10.0), float4(20.0)};
struct main0_in
{
float4 vInput1 [[attribute(1)]];
};
struct main0_out
{
float4 gl_Position [[position]];
};
vertex main0_out main0(main0_in in [[stage_in]])
{
main0_out out = {};
out.gl_Position = float4(10.0) + in.vInput1;
return out;
}
@@ -0,0 +1,13 @@
#version 310 es
precision mediump float;
precision highp int;
layout(location = 0) out vec4 FragColor;
layout(location = 0) in vec4 vA;
layout(location = 1) in vec4 vB;
void main()
{
FragColor = vA - vB * trunc(vA / vB);
}
@@ -0,0 +1,11 @@
#version 310 es
precision mediump float;
precision highp int;
layout(location = 0) out vec4 FragColor;
void main()
{
FragColor = (((vec4(1.0) + vec4(1.0)) + (vec3(1.0).xyzz + vec4(1.0))) + (vec4(1.0) + vec4(2.0))) + (vec2(1.0).xyxy + vec4(2.0));
}
@@ -0,0 +1,13 @@
#version 450
uniform sampler2D SPIRV_Cross_CombinedSampledImageSPIRV_Cross_DummySampler;
uniform sampler2D SPIRV_Cross_CombinedSampledImageSampler;
layout(location = 0) out vec4 _entryPointOutput;
void main()
{
ivec3 _122 = ivec3(int(gl_FragCoord.x * 1280.0), int(gl_FragCoord.y * 720.0), 0);
_entryPointOutput = ((texelFetch(SPIRV_Cross_CombinedSampledImageSPIRV_Cross_DummySampler, _122.xy, 0) + texelFetch(SPIRV_Cross_CombinedSampledImageSPIRV_Cross_DummySampler, _122.xy, 0)) + texture(SPIRV_Cross_CombinedSampledImageSampler, gl_FragCoord.xy)) + texture(SPIRV_Cross_CombinedSampledImageSampler, gl_FragCoord.xy);
}
@@ -0,0 +1,14 @@
#version 450
layout(set = 0, binding = 0) uniform sampler Sampler;
layout(set = 0, binding = 0) uniform texture2D SampledImage;
uniform sampler SPIRV_Cross_DummySampler;
layout(location = 0) out vec4 _entryPointOutput;
void main()
{
ivec3 _122 = ivec3(int(gl_FragCoord.x * 1280.0), int(gl_FragCoord.y * 720.0), 0);
_entryPointOutput = ((texelFetch(sampler2D(SampledImage, SPIRV_Cross_DummySampler), _122.xy, 0) + texelFetch(sampler2D(SampledImage, SPIRV_Cross_DummySampler), _122.xy, 0)) + texture(sampler2D(SampledImage, Sampler), gl_FragCoord.xy)) + texture(sampler2D(SampledImage, Sampler), gl_FragCoord.xy);
}
@@ -0,0 +1,9 @@
#version 450
invariant gl_Position;
void main()
{
gl_Position = vec4(1.0);
}
@@ -0,0 +1,17 @@
#version 450
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
float gl_ClipDistance[1];
float gl_CullDistance[1];
};
invariant gl_Position;
void main()
{
gl_Position = vec4(1.0);
}
@@ -0,0 +1,9 @@
#version 450
invariant gl_Position;
void main()
{
gl_Position = vec4(1.0);
}
@@ -0,0 +1,14 @@
#version 450
out gl_PerVertex
{
vec4 gl_Position;
};
invariant gl_Position;
void main()
{
gl_Position = vec4(1.0);
}
@@ -0,0 +1,12 @@
#version 450
in float gl_ClipDistance[4];
in float gl_CullDistance[3];
layout(location = 0) out float FragColor;
void main()
{
FragColor = gl_ClipDistance[0] + gl_CullDistance[0];
}
@@ -0,0 +1,11 @@
#version 450
#extension GL_ARB_gpu_shader_int64 : require
layout(location = 0) out vec3 FragColor;
layout(location = 0) flat in double vTmp;
void main()
{
FragColor = vec3(dvec3(uint64BitsToDouble(0x7ff0000000000000ul), uint64BitsToDouble(0xfff0000000000000ul), uint64BitsToDouble(0xfff8000000000000ul)) + dvec3(vTmp));
}
@@ -0,0 +1,20 @@
#version 450
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
float gl_ClipDistance[4];
float gl_CullDistance[3];
};
void main()
{
gl_Position = vec4(1.0);
gl_ClipDistance[0] = 0.0;
gl_ClipDistance[1] = 0.0;
gl_ClipDistance[2] = 0.0;
gl_ClipDistance[3] = 0.0;
gl_CullDistance[1] = 4.0;
}
@@ -1,11 +1,15 @@
#version 450
out float gl_ClipDistance[4];
out float gl_CullDistance[3];
void main()
{
gl_Position = vec4(10.0);
gl_ClipDistance[0] = 1.0;
gl_ClipDistance[1] = 4.0;
gl_CullDistance[0] = 4.0;
gl_CullDistance[1] = 9.0;
gl_Position = vec4(1.0);
gl_ClipDistance[0] = 0.0;
gl_ClipDistance[1] = 0.0;
gl_ClipDistance[2] = 0.0;
gl_ClipDistance[3] = 0.0;
gl_CullDistance[1] = 4.0;
}
@@ -0,0 +1,20 @@
#version 310 es
precision mediump float;
precision highp int;
layout(location = 0) out vec4 FragColor;
layout(location = 0) in vec4 vA;
layout(location = 1) in vec4 vB;
void main()
{
if (gl_FrontFacing)
{
FragColor = vA;
}
else
{
FragColor = vB;
}
}
@@ -0,0 +1,37 @@
#version 310 es
precision mediump float;
precision highp int;
layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in mediump int vA;
layout(location = 1) flat in mediump int vB;
void main()
{
FragColor = vec4(0.0);
mediump int _49;
int _60;
for (int _57 = 0, _58 = 0; _58 < vA; _57 = _60, _58 += _49)
{
if ((vA + _58) == 20)
{
_60 = 50;
}
else
{
int _59;
if ((vB + _58) == 40)
{
_59 = 60;
}
else
{
_59 = _57;
}
_60 = _59;
}
_49 = _60 + 10;
FragColor += vec4(1.0);
}
}
@@ -0,0 +1,11 @@
#version 310 es
precision mediump float;
precision highp int;
layout(location = 0) out highp vec3 FragColor;
void main()
{
FragColor = vec3(uintBitsToFloat(0x7f800000u), uintBitsToFloat(0xff800000u), uintBitsToFloat(0xffc00000u));
}
@@ -0,0 +1,9 @@
#version 310 es
layout(location = 1) in vec4 vInput1;
void main()
{
gl_Position = vec4(10.0) + vInput1;
}
@@ -0,0 +1,17 @@
#version 310 es
precision mediump float;
precision highp int;
layout(binding = 0, std140) uniform SpecConstArray
{
vec4 samples[2];
} _15;
layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in mediump int Index;
void main()
{
FragColor = _15.samples[Index];
}
@@ -0,0 +1,19 @@
#version 310 es
precision mediump float;
precision highp int;
layout(constant_id = 10) const int Value = 2;
layout(set = 0, binding = 0, std140) uniform SpecConstArray
{
vec4 samples[Value];
} _15;
layout(location = 0) out vec4 FragColor;
layout(location = 0) flat in mediump int Index;
void main()
{
FragColor = _15.samples[Index];
}
@@ -0,0 +1,29 @@
static float4 FragColor;
static float4 vA;
static float4 vB;
struct SPIRV_Cross_Input
{
float4 vA : TEXCOORD0;
float4 vB : TEXCOORD1;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = fmod(vA, vB);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vA = stage_input.vA;
vB = stage_input.vB;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,47 @@
static float4 FragColor;
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
float4 foo(float4 foo_1)
{
return foo_1 + 1.0f.xxxx;
}
float4 foo(float3 foo_1)
{
return foo_1.xyzz + 1.0f.xxxx;
}
float4 foo_1(float4 foo_2)
{
return foo_2 + 2.0f.xxxx;
}
float4 foo(float2 foo_2)
{
return foo_2.xyxy + 2.0f.xxxx;
}
void frag_main()
{
float4 foo_3 = 1.0f.xxxx;
float4 foo_2 = foo(foo_3);
float3 foo_5 = 1.0f.xxx;
float4 foo_4 = foo(foo_5);
float4 foo_7 = 1.0f.xxxx;
float4 foo_6 = foo_1(foo_7);
float2 foo_9 = 1.0f.xx;
float4 foo_8 = foo(foo_9);
FragColor = ((foo_2 + foo_4) + foo_6) + foo_8;
}
SPIRV_Cross_Output main()
{
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
Loaded 100 of 936 files, more files were not shown because too many files have changed in this diff. Show more