Compare commits

...
1690 Commits
Author SHA1 Message Date
Brad Parker dd2e73d664 Qt: add fallback path for older versions 2018-09-17 23:12:08 -04:00
Twinaphex 132faf3bf2 Merge pull request #7237 from fr500/master
update assets
2018-09-18 04:05:03 +02:00
radius 2ff8bdc14a update assets 2018-09-17 21:03:09 -05:00
twinaphex e9a25e3022 Fix relative path includes 2018-09-17 21:47:12 +02:00
twinaphex fa30f49e16 Buildfix 2018-09-17 20:00:54 +02:00
Twinaphex 9a6a797f90 Merge pull request #7232 from alfrix/master
Update spanish and add discord sublabel
2018-09-17 19:43:12 +02:00
Twinaphex 448520ead2 Merge pull request #7231 from fr500/master
[recording] hook up the options properly
2018-09-17 19:37:01 +02:00
Alfrix 4ab61c3f7d Add discord sublabel and fix cheat apply after load 2018-09-17 14:31:47 -03:00
Alfrix 63f5281b67 Update english 2018-09-17 14:31:04 -03:00
Alfrix 74350ee184 Update Spanish 2018-09-17 14:30:31 -03:00
radius 0d7a169ea0 [recording] toggle menu when the options are used 2018-09-17 09:19:06 -05:00
radius ef9258449c [recording] hook up the options properly 2018-09-17 09:08:54 -05:00
twinaphex eb9e8c97d6 (Menu) Cleanups 2018-09-17 10:09:52 +02:00
twinaphex 6d0409b6bd (Menu) More cleanups 2018-09-17 10:07:15 +02:00
twinaphex 2d8eb9322a Cleanups 2018-09-17 10:02:31 +02:00
twinaphex 3aec8abca9 Get rid of some void pointers 2018-09-17 09:57:30 +02:00
twinaphex c40700e51b Add Start Streaming / Start Recording - implementation will need
to be properly done though
2018-09-17 09:18:44 +02:00
twinaphex 3c8ee6f26a Add 'Start Streaming/Start Recording' to Quick Menu 2018-09-17 09:06:24 +02:00
Twinaphex 4f85ca5f9a Merge pull request #7225 from fr500/master
WIP: [record] start whipping some sense into this feature
2018-09-17 06:16:13 +02:00
twinaphex 0fe713eb5f Fix error: initializer element is not constant 2018-09-17 03:50:37 +02:00
Twinaphex 8c10abf8bb Update CHANGES.md 2018-09-17 03:41:45 +02:00
Twinaphex 2dcc6ae046 Merge pull request #7230 from bparker06/qt_labeledit
Qt: edit playlist entry labels by clicking on them a second time
2018-09-17 03:41:01 +02:00
twinaphex 2c959d8ff1 (Display server) Add get_output 2018-09-17 03:40:17 +02:00
Brad Parker 5fbf841fb2 Qt: edit playlist entry labels by clicking on them a second time, or with the platform's edit key (usually F2) 2018-09-16 21:34:28 -04:00
twinaphex 9c88c6e3c5 Add msg_hash OUTPUT_DISPLAY_ID 2018-09-17 03:25:34 +02:00
twinaphex 04211662cf Add 'Use Custom Refresh Rate' setting 2018-09-17 01:56:18 +02:00
twinaphex cb7d15bc2b Update 2018-09-17 01:31:51 +02:00
twinaphex b5c6586b12 Change CRT switch resolution - add options 'Off/15 Khz/31Khz' 2018-09-17 01:30:49 +02:00
twinaphex 369f8206d1 Add 'X-Axis Centering' - https://github.com/libretro/RetroArch/issues/6988 2018-09-16 21:00:34 +02:00
Twinaphex 5d4a8f4497 Merge pull request #7226 from theheroGAC/patch-35
Update msg_hash_it.h
2018-09-16 16:35:26 +02:00
theheroGAC 71e8f00b27 Update msg_hash_it.h 2018-09-16 12:39:11 +02:00
twinaphex 07fd28b351 Change CRT Super Resolution 'OFF' to 'Native' 2018-09-16 09:06:55 +02:00
twinaphex 92b6854315 CRT SwitchRes - step 3 - https://github.com/libretro/RetroArch/issues/6988 2018-09-16 08:57:27 +02:00
twinaphex ac81ef680d Update sublabels 2018-09-16 08:29:13 +02:00
twinaphex 004a2e335f (CRT SwitchRes) Step 1- https://github.com/libretro/RetroArch/issues/6988 2018-09-16 08:06:06 +02:00
twinaphex 60437f07fd Update CHANGES.md 2018-09-16 07:38:15 +02:00
Twinaphex 394136f368 Merge pull request #7224 from alfrix/master
Update spanish and fix some indentation mishaps in us
2018-09-16 06:20:13 +02:00
Alfrix f24715ac1e Update spanish and fix some indentation mishaps in us 2018-09-16 00:27:40 -03:00
radius efa62af78b [recording] use a different config for streaming 2018-09-15 22:02:57 -05:00
radius 1c85058e72 [recording] rename bsv recording from movie to input replay 2018-09-15 21:47:23 -05:00
radius 16bd85b118 [recording] refactor recording_is_enabled no need to use a pointer for all of this 2018-09-15 21:09:41 -05:00
radius 9d490ace3b [record] deinit before init 2018-09-15 17:54:00 -05:00
radius 49214de125 [record] start whipping some sense into this feature 2018-09-15 17:49:39 -05:00
twinaphex 50398c2a35 Bump version up to 1.7.5 2018-09-15 20:24:04 +02:00
Brad Parker 055eff653a android: add text to xhdpi banner per TV app quality guidelines 2018-09-15 12:39:35 -04:00
twinaphex 13223c2225 Update switch_thread_audio.c 2018-09-15 17:44:27 +02:00
twinaphex f21493947d vim - add RetroArch style conventions 2018-09-15 17:43:34 +02:00
twinaphex 2fc08ce394 (switch_nx_gx.c) Some style nits 2018-09-15 17:39:03 +02:00
twinaphex 6ff2c96d03 - Rename switch_nx_thread_audio.c to switch_thread_audio.c
- Change code to C89-comformant
- Some small formatting/style nits
- Cleanup Makefile.common object listings
2018-09-15 17:31:56 +02:00
twinaphex db43033f9a Some minor cleanups - switch_audio_compat.h 2018-09-15 17:21:21 +02:00
Twinaphex c614cb05ec Merge pull request #7223 from m4xw/audio_thr_fixes
[NSW] Fix Threaded audio driver
2018-09-15 16:58:04 +02:00
M4xw ea066625ba [NSW] Fix Threaded audio driver (fifoSize init) and use a slightly higher Prio. 2018-09-15 16:46:17 +02:00
Twinaphex 13c22c47b9 Merge pull request #7220 from reswitched/master
[NSW] SDK Compat Fixups
2018-09-15 16:33:52 +02:00
misson20000 abd86058c6 fix attribution (it's a common mistake) 2018-09-15 03:28:08 -07:00
misson20000 8ed254f0c0 small platform_switch indentation fixups 2018-09-15 03:27:29 -07:00
misson20000 7072bbb829 [NSW] SDK compat fixups 2018-09-15 03:27:29 -07:00
misson20000 fa76a3cb60 CRLF -> LF 2018-09-15 03:27:05 -07:00
twinaphex bde5905eba Cleanup 2018-09-15 08:12:18 +02:00
twinaphex 7bd705983e Convert strcmp to string_is_equal 2018-09-15 07:47:44 +02:00
twinaphex ec5d046f4c Cleanups - get rid of strcmp references 2018-09-15 07:44:21 +02:00
twinaphex eac56c4382 Try to avoid strcpy and strcmp in midi_driver.c 2018-09-15 07:32:48 +02:00
Brad Parker 19329fe7c7 prevent out of bound array access for unmapped input binds 2018-09-15 01:21:10 -04:00
twinaphex 09d27fc591 Silence some warnings 2018-09-15 07:19:51 +02:00
twinaphex 73e01b64ba Should fix non-HAVE_DISCORD path 2018-09-15 07:17:29 +02:00
twinaphex 3d611a2673 Update runahead - get rid of FREE macro 2018-09-15 06:41:37 +02:00
Twinaphex df5476f0c0 Merge pull request #7210 from fr500/master
WIP: Discord "ask to join"
2018-09-15 06:37:32 +02:00
Twinaphex 77923df4c1 Merge pull request #7218 from m4xw/libnx_updates
[LIBNX] Implement threading, adapt libnx 1.4.0 changes, add Core extension
2018-09-15 04:36:02 +02:00
M4xw 0ff014c1ac [LIBNX] Add Core extension 2018-09-15 02:29:40 +02:00
M4xw 3a6e410833 [LIBNX] Add pthreads wrapper 2018-09-15 02:28:52 +02:00
radius e567b3847c [discord] use the upstream application ID 2018-09-14 19:03:26 -05:00
M4xw 424d169cd9 [LIBNX] Fix Audio and Platform for updated libnx 2018-09-15 01:29:42 +02:00
Twinaphex 7ed367c49b Merge pull request #7214 from RobLoach/emscripten-chailove
(Emscripten) Add ChaiLove selection to web player
2018-09-14 23:33:50 +02:00
Twinaphex d41f41c5d0 Merge pull request #7216 from DEX357/patch-19
Update msg_hash_pl.h
2018-09-14 23:33:36 +02:00
DEX357 e37bd41e86 Update msg_hash_pl.h 2018-09-14 23:20:09 +02:00
Twinaphex 899e35451a Merge pull request #7215 from m4xw/libnx_fixes
[LIBNX] Add platform_switch, Fix switch_audio.
2018-09-14 20:46:33 +02:00
M4xw 64edf5f879 [LIBNX] Fixups and bare minimum to function 2018-09-14 20:38:42 +02:00
M4xw 3566171ea1 Essential .gitignore rules 2018-09-14 19:35:31 +02:00
M4xw 932b4c5ce1 [LIBNX] Fix switch_audio 2018-09-14 19:35:21 +02:00
Rob Loach 2ff87fd663 emscripten: Add ChaiLove selection to web player 2018-09-14 09:39:20 -04:00
twinaphex 7428fef4bc Cleanups 2018-09-12 21:50:11 +02:00
twinaphex 0158bbe4aa Add switch_nx_gfx.c 2018-09-12 21:44:53 +02:00
twinaphex 8f9dc13aa7 Add copyrights 2018-09-12 21:28:54 +02:00
twinaphex 19b4ef3b2c Add conv rgb565 to ABGR8888 by m4xw 2018-09-12 20:04:52 +02:00
twinaphex cc8b458ee3 Add menu_display_switch.c 2018-09-12 20:01:56 +02:00
twinaphex 517b1b9089 Add HAVE_LIBNX ifdefs to switch_input.c/switch_joypad.c, and
features_cpu.c
2018-09-12 19:54:51 +02:00
twinaphex 6139f8846a (NSW) We now have only one non-threaded audio driver for both SDKs instead of
two
2018-09-12 19:37:38 +02:00
twinaphex 213a56c59f Get rid of RESULT_OK usage 2018-09-12 18:58:12 +02:00
twinaphex 677cb30982 (NSW) Start unifying both libtransistor and libnx switch audio drivers 2018-09-12 18:29:25 +02:00
radius fed74b9e70 [discord] populate data correctly 2018-09-12 01:45:28 -05:00
radius 4d0729187f [discord] start getting ready for ask-to-join functionality, cleanup some of the mess 2018-09-12 01:45:27 -05:00
twinaphex 2a7a2e7dee (LIBNX) Start backporting libnx code; beginning with audio drivers 2018-09-12 08:14:17 +02:00
twinaphex 9cbd7ec6f3 (RGUI) Add some Switch ifdefs to RGUI 2018-09-12 08:01:19 +02:00
twinaphex bf75e6b9d7 video_context_driver_swap_interval - add in safeguard 2018-09-12 07:16:33 +02:00
Twinaphex 9017e209e8 Update CHANGES.md 2018-09-12 06:44:53 +02:00
Twinaphex d52f5cc0d4 Update CHANGES.md 2018-09-12 06:43:33 +02:00
twinaphex 650c173125 Turn public functions into static functions 2018-09-12 06:39:07 +02:00
twinaphex 3c160a6eb4 Create video_driver_get_all_flags 2018-09-12 06:31:41 +02:00
twinaphex 3f8e3547f4 (GLX) swap_control_tear should now be implemented and working 2018-09-12 04:17:41 +02:00
twinaphex 58472cb696 Silence some warnings 2018-09-12 04:09:19 +02:00
twinaphex 914df58d2e (WGL) Adaptive Vsync should work now for WGL 2018-09-12 03:59:25 +02:00
twinaphex 98b20d4e5d (GLX/WGL) Start implementing adaptive VSync (swap_control_tear) for GLX/WGL pt. 1 2018-09-12 02:42:24 +02:00
Twinaphex 9bf2fb8f79 Merge pull request #7209 from RetroSven/master
provide a means for cores to coordinate with the frontend when shutting down multiple threads gracefully
2018-09-12 00:54:04 +02:00
Sven 3c0eadbdf2 per request 2018-09-11 18:52:51 -04:00
Sven b771a3e0f5 move libretro.h defines to retroarch.h 2018-09-11 18:45:01 -04:00
twinaphex 4738ef545c Change interval type to signed int 2018-09-12 00:08:13 +02:00
Sven d8796732aa provide a means for cores to coordinate with the frontend when shutting down multiple threads gracefully 2018-09-11 13:29:20 -04:00
Twinaphex 5d8c268afc Update CHANGES.md 2018-09-11 06:39:07 +02:00
Twinaphex c876342057 Update CHANGES.md 2018-09-11 06:38:22 +02:00
Twinaphex 91b945e529 Update CHANGES.md 2018-09-11 06:37:56 +02:00
Twinaphex f96db78b3d Update CHANGES.md 2018-09-11 06:36:45 +02:00
Twinaphex 83c3bd31c6 Update CHANGES.md 2018-09-11 06:36:12 +02:00
Twinaphex 21684a80ad Update CHANGES.md 2018-09-11 06:35:43 +02:00
Twinaphex a0d87dd68d Merge pull request #7207 from altiereslima/master
Update brazilian portuguese translation
2018-09-11 06:26:13 +02:00
altiereslima 3a6290887a Update brazilian portuguese translation 2018-09-11 01:21:42 -03:00
Twinaphex ae3a53185b Merge pull request #7206 from bparker06/lobby_host_room
netplay: save lobby details received back from server after first announcement
2018-09-11 03:30:09 +02:00
Brad Parker 7a76c6a4da netplay: save lobby details received back from server after first announcement 2018-09-10 21:01:46 -04:00
Twinaphex 90580d2ae1 Merge pull request #7204 from alphanu1/master
Multiple fixes
2018-09-10 21:02:14 +02:00
alphanu1 f576266ace Update dispserv_x11.c 2018-09-10 19:36:57 +01:00
twinaphex e403b8fb1e C89 buildfixes 2018-09-10 20:35:30 +02:00
Twinaphex 7e4d0b3b41 Merge pull request #7205 from Themaister/master
Vulkan: Fix race condition in threaded mailbox emulation.
2018-09-10 20:01:20 +02:00
Themaister a1989afba9 Vulkan: Fix race condition in threaded mailbox emulation. 2018-09-10 19:35:13 +02:00
alphanu1 d32993411e Merge pull request #90 from alphanu1/alphanu1-patch-83
fixes
2018-09-10 18:25:44 +01:00
alphanu1 4328c075e8 fixes 2018-09-10 18:25:32 +01:00
alphanu1 c1e6de96a6 Merge pull request #89 from alphanu1/alphanu1-patch-82
re introduced snprintf
2018-09-10 18:13:10 +01:00
alphanu1 6c2d11b414 re introduced snprintf 2018-09-10 18:12:44 +01:00
alphanu1 d4e43b15c1 Merge pull request #88 from alphanu1/alphanu1-patch-81
xrandr spamming fix
2018-09-10 18:10:06 +01:00
alphanu1 7c05922d36 xrandr spamming fix
also re introduced snprintf
2018-09-10 18:09:42 +01:00
alphanu1 340515a9fa Update dispserv_x11.c 2018-09-10 18:08:49 +01:00
alphanu1 522d30d52d Merge pull request #86 from alphanu1/alphanu1-patch-79
xrandr spamming fix
2018-09-10 17:42:44 +01:00
alphanu1 d8c36e5bb8 xrandr spamming fix 2018-09-10 17:42:33 +01:00
alphanu1 7e7f95f2fe Merge pull request #85 from alphanu1/alphanu1-patch-78
Xrandr sapmming fix
2018-09-10 17:40:09 +01:00
alphanu1 30d7ef898d Xrandr sapmming fix 2018-09-10 17:39:52 +01:00
alphanu1 adb0542748 Merge pull request #84 from libretro/master
update
2018-09-10 17:35:58 +01:00
bparker06 d8b4d1fdff Update CHANGES.md 2018-09-10 10:15:06 -04:00
Raphael Zumer ab384b8afb Update msg_hash_ja.h (#7203)
* Fix some incorrect labels
* Word some labels more naturally
* Use RetroAchievements instead of レトロ実績
2018-09-10 10:14:14 -04:00
Twinaphex 523ee65125 Merge pull request #7201 from rzumer/master
Support headerless NES hashing in cheevos.c
2018-09-10 06:33:54 +02:00
Raphaël Zumer 3a0c450e70 Support headerless NES hashing in cheevos.c 2018-09-10 00:15:52 -04:00
Twinaphex d96117533c Merge pull request #7197 from endrift/master
camera: Fix v4l2 driver that broke years ago
2018-09-10 02:55:38 +02:00
Vicki Pfau 0576c516c4 camera: Fix v4l2 driver that broke years ago 2018-09-09 17:44:03 -07:00
Twinaphex 99debae18e Merge pull request #7193 from QuarkTheAwesome/master
WiiU: Add missing "#include <sys/iosupport.h>" to required files (buildfix)
2018-09-09 18:01:15 +02:00
alphanu1 1b4439413c Update dispserv_x11.c 2018-09-09 12:50:28 +01:00
alphanu1 557fe10bac Merge pull request #83 from alphanu1/alphanu1-patch-77
snprintf broke switching
2018-09-09 11:52:36 +01:00
alphanu1 cf4fff8d31 snprintf broke switching 2018-09-09 11:51:37 +01:00
Ash 751ad68c50 deps/libiosuhax: Fix missing "#include <sys/iosupport.h>" 2018-09-09 18:29:42 +10:00
Ash 9344391bfa WiiU: Fix missing "#include <sys/iosupport.h>" in sd_fat_devoptab 2018-09-09 18:22:48 +10:00
twinaphex bfdb75a30e Add ifdef 2018-09-09 01:28:09 +02:00
Twinaphex 4750342b33 Merge pull request #7192 from alphanu1/master
New porches and interlaced bug fix.
2018-09-08 23:57:23 +02:00
alphanu1 5632ac9f72 Merge pull request #82 from alphanu1/alphanu1-patch-76
New Porch Calc, Matched against an oscilloscope
2018-09-08 22:12:07 +01:00
alphanu1 5c6fc6db7e New Porch Calc, Matched against an oscilloscope 2018-09-08 22:11:31 +01:00
alphanu1 12e2fe9ca0 Merge pull request #81 from alphanu1/alphanu1-patch-75
Fix for crt interlaced bug
2018-09-08 22:09:52 +01:00
alphanu1 952b46f2c1 Fix for crt interlaced bug 2018-09-08 22:09:30 +01:00
alphanu1 719cb86bc0 Merge pull request #79 from libretro/master
Update
2018-09-08 21:12:29 +01:00
Twinaphex 6ea292f2f5 Merge pull request #7191 from Themaister/master
Vulkan: Maintenance fixes
2018-09-08 21:50:28 +02:00
bparker06 18e249e85e travis: install Qt for OSX 2018-09-08 12:04:05 -04:00
Themaister d338dac277 Only do mailbox emulation for fullscreen.
Too large impact on performance in Windowed mode.
2018-09-08 16:27:25 +02:00
Themaister d39f66a738 Emulate mailbox by wrapping acquire in a thread.
Needed on nVidia Windows since they don't support timeout == 0 ...
2018-09-08 15:56:49 +02:00
Themaister 157d1e7e63 Only use mailbox emulation on AMD. 2018-09-08 11:47:58 +02:00
Themaister 66c4f8fd35 Make sure to always clear out swapchain_fence_signalled. 2018-09-08 11:47:58 +02:00
Themaister 9ebac87638 Vulkan: Emulate mailbox on Windows. 2018-09-08 11:47:58 +02:00
Themaister af534f0fa8 Vulkan maintenance fixes.
- Use VkBuffer instead of linear VkImage for staging uploads.
  Not guaranteed to be supported, and desktop IHVs recommend using
  buffers.

- Fix validation error where swapchain recreation with reuse of the old
  VkSwapchainKHR does not create a fence properly, leading to validation
  error next time that swapchain index is observed.
2018-09-08 11:47:58 +02:00
Twinaphex 1155e11cfc Merge pull request #7189 from stuartcarnie/sgc-qt-embedded
chore: Call Makefile.apple to generate Qt moc files
2018-09-08 05:52:59 +02:00
Stuart Carnie 1de3aaadeb chore: Call Makefile.app to generate Qt moc files 2018-09-07 20:32:57 -07:00
twinaphex 61d56e07fa Don't excessively log 2018-09-08 03:15:32 +02:00
Twinaphex fb4f8ff550 Merge pull request #7188 from stuartcarnie/sgc-qt-embedded
feat(macOS): Embed Qt frameworks and frameworks to @executable_path
2018-09-08 02:49:42 +02:00
Stuart Carnie 4d7fe0e96c feat(macOS): Embed Qt frameworks and frameworks to @executable_path
* note that install_name_tool is used to update the frameworks via
  a post-build script
2018-09-07 17:38:46 -07:00
twinaphex df059c585f Implement RETRO_ENVIRONMENT_GET_FASTFORWARDING 2018-09-08 02:19:05 +02:00
twinaphex 7c2da36af9 Prevent warning 2018-09-08 02:11:18 +02:00
Twinaphex 27edbb58e3 Merge pull request #7187 from RetroSven/master
implement libretro private def to allow cores to tell RA to save states in background
2018-09-08 01:41:20 +02:00
Sven b4081d9347 implement libretro private def to allow cores to tell RA to save states in background 2018-09-07 19:09:56 -04:00
Twinaphex 3e27a504ed Merge pull request #7185 from stuartcarnie/sgc-macos-qt
feat(macOS): Initial Desktop UI (Qt) support
2018-09-06 05:37:55 +02:00
Stuart Carnie 428f895b6f feat(macOS): Initial Desktop UI (Qt) support
* Adds new RetroArchQT build target to RetroArch_Metal.xcodeproj

Prerequisites:

* Install Qt Frameworks

    $ brew install qt

* Build `moc` files using

    $ make -f Makefile.apple HAVE_QT=1 Q=/usr/local/opt/qt/bin/moc generate

Limitations:

* Qt frameworks are not embedded in bundle, therefore Qt must be
  installed via the `brew` command
2018-09-05 20:10:54 -07:00
Brad Parker c60fdf0b2e Qt: fix duplicate function name with griffin 2018-09-05 00:07:24 -04:00
Twinaphex 5d529f4ce4 Merge pull request #7178 from RobLoach/config
Update config entries pointer to the new beginning of the list
2018-09-04 14:30:32 +02:00
Brad Parker a48cc2f9b5 travis: unzip quietly so build log is not truncated 2018-09-03 20:00:03 -04:00
Brad Parker c64a75c58a travis: clean up OSX Metal image and add assets 2018-09-03 19:50:04 -04:00
Rob Loach 9da261c6d9 Update config entries pointer to the new beginning of the list after sorting 2018-09-03 13:31:46 -04:00
Brad Parker 9214f6079f travis: go to correct folder to deploy Metal 2018-09-03 09:37:59 -04:00
Brad Parker 511dcb0d56 travis: build Metal with libretro-super instead 2018-09-03 09:07:04 -04:00
Brad Parker b2c704862a travis: deploy OSX Metal build 2018-09-02 21:57:06 -04:00
Twinaphex c57e259fa7 Update CHANGES.md 2018-09-03 03:11:23 +02:00
Twinaphex 4409c61730 Update CHANGES.md 2018-09-03 03:10:36 +02:00
Twinaphex e224d1cd04 Update CHANGES.md 2018-09-03 03:10:08 +02:00
Twinaphex 96d27b6ac6 Update CHANGES.md 2018-09-03 03:09:37 +02:00
Twinaphex 9c53dc3797 Merge pull request #7176 from stuartcarnie/sgc-metal
Metal: Add support for screen shots
2018-09-03 03:00:36 +02:00
Stuart Carnie 99f497de85 feat(Metal): Add support for screen shots 2018-09-02 17:55:02 -07:00
Stuart Carnie 9d22aacaa7 refactor: Add vertex buffer struct to ShaderTypes and remove global 2018-09-02 17:53:18 -07:00
Twinaphex c41f331e2a Merge pull request #7175 from stuartcarnie/sgc-revert-config
Revert "fix(gfx): Move enum to end to avoid breaking existing config
2018-09-02 22:05:47 +02:00
Stuart Carnie 8a63ace201 Revert "fix(gfx): Move enum to end to avoid breaking existing configurations"
This reverts commit 93b79fa
2018-09-02 13:03:16 -07:00
Twinaphex 6463f7005b Merge pull request #7174 from stuartcarnie/sgc-metal
Fix crashes for metal; buffer overflow in xmb; Metal fullscreen issue
2018-09-02 21:55:10 +02:00
Stuart Carnie f1ad1ff444 fix(Metal): Fix invalid selector
Removed selector logic and wrapped in HAVE_METAL, given this is only
called when Metal is enabled.
2018-09-02 12:51:34 -07:00
Stuart Carnie 611e484633 fix(xmb): Fix buffer overflow 2018-09-02 12:49:44 -07:00
Twinaphex 4d12eaf685 Merge pull request #7173 from hiddenasbestos/oem102
Support for "OEM-102" key (usually '\' on Euro keyboards)
2018-09-02 19:40:31 +02:00
David Walters b592f254b9 Support for "OEM-102" key (usually '\' on Euro keyboards) 2018-09-02 18:24:51 +01:00
Twinaphex d4cb24f8d1 Merge pull request #7148 from alfrix/master
Add neoactive and retroactive to menu icons
2018-09-02 03:42:03 +02:00
Brad Parker a86454d30c Qt: fix file browser downloads button not scrolling correctly on first click 2018-09-01 21:25:07 -04:00
Stuart Carnie eadc3f4a91 fix(Metal): Fix SIGFAULT if any attribute is 0 2018-09-01 16:13:23 -07:00
Stuart Carnie 6b7572d166 fix(macOS): Fix stack overflow when raising Metal shader load event 2018-09-01 16:12:43 -07:00
Twinaphex 4f4b1c182f Merge pull request #7167 from Themaister/master
Fix glslang_format LUT.
2018-09-01 22:51:29 +02:00
Themaister 1d7dfc5f47 Fix glslang_format LUT.
Was logging wrong format names.
2018-09-01 22:46:47 +02:00
Stuart Carnie 802697fdec fix(Metal): Use textures for pixel conversion 2018-09-01 11:58:37 -07:00
Stuart Carnie 577d81071e fix(Metal): Cleanup shader logging messages 2018-09-01 11:58:37 -07:00
Stuart Carnie 1264e9c533 fix(Metal): Use ifdef syntax; add correct default for Metal build 2018-09-01 11:58:37 -07:00
Stuart Carnie 93b79fac90 fix(gfx): Move enum to end to avoid breaking existing configurations
* `aspect_ratio_index` relies on the ordinal values not changing
2018-09-01 11:58:37 -07:00
Twinaphex 4457bad631 Merge pull request #7165 from kwyxz/haiku-mbedtls-fix
mbedtls in 1.7.4 broke Haiku build
2018-09-01 13:58:09 +02:00
Benjamin FRANCOIS c723f13753 This allows building on Haiku after disabling Discord 2018-09-01 07:25:06 +00:00
Twinaphex 4e0c2314d9 Define HAVE_SSL for OSX 2018-09-01 04:22:57 +02:00
twinaphex 34e295ec51 Add net_socket_ssl.cto griffin 2018-09-01 04:20:23 +02:00
twinaphex 2fb8831dcc Uniquely name functions 2018-09-01 04:18:01 +02:00
twinaphex 31df00d52a Uniquely name functions 2018-09-01 04:14:36 +02:00
twinaphex fb047e4622 Uniquely name functions 2018-09-01 04:12:58 +02:00
twinaphex 18203f4d30 Cleanups 2018-09-01 04:11:16 +02:00
twinaphex 6d29cde453 (SSL) Name functions uniquely 2018-09-01 04:09:59 +02:00
twinaphex e83504002d (SSL) Make these functions unique 2018-09-01 04:08:27 +02:00
Twinaphex 93af9baf48 Remove warning 2018-09-01 04:04:15 +02:00
twinaphex 23eb1e981a Remove HAVE_STRIPES from OSX build 2018-09-01 04:01:03 +02:00
twinaphex d5fa379aa8 Update header 2018-09-01 03:54:47 +02:00
Twinaphex 1ad6291c79 Merge pull request #7163 from Tatsuya79/patch-5
fix task_save.c
2018-09-01 01:53:09 +02:00
Tatsuya79 dd9db41403 fix task_save.c 2018-09-01 01:50:30 +02:00
Twinaphex 09284dc6ce Merge pull request #7162 from Tatsuya79/patch-4
revert #7156
2018-09-01 01:46:41 +02:00
Tatsuya79 64459bda3a revert #7156
revert https://github.com/libretro/RetroArch/pull/7156
2018-09-01 01:41:21 +02:00
twinaphex 64cc28a487 Update 2018-09-01 01:14:26 +02:00
twinaphex c0c88173a0 (CocoaTouch) Fix some function callback signatures 2018-09-01 01:07:14 +02:00
Twinaphex 65535a1259 Cleanups 2018-09-01 01:03:58 +02:00
twinaphex 10f374182f Revert "Change these ifdefs"
This reverts commit 245f265098.
2018-08-31 21:49:16 +02:00
twinaphex 245f265098 Change these ifdefs 2018-08-31 21:48:58 +02:00
twinaphex 85f093e042 Change these to numbers 2018-08-31 21:25:33 +02:00
neville 8c3479f850 (OSX PowerPC) PowerPC Fixed 2018-08-31 21:22:37 +02:00
bparker06 ad15f76ff5 travis: add OSX Metal build 2018-08-31 13:49:44 -04:00
neville bd43682341 Use dynamic lookup code path 2018-08-31 19:37:40 +02:00
Twinaphex 832bf6d6e8 Get rid of this compile-time ifdef 2018-08-31 19:29:11 +02:00
twinaphex a58511ec00 Revert "Compatibility fixes for OSX PPC"
This reverts commit d7899c51aa.
2018-08-31 19:20:10 +02:00
twinaphex 70f9abe99f Revert "Add conditionals to maintain backwards compatibility with OSX 10.5"
This reverts commit 1222192afb.
2018-08-31 19:20:03 +02:00
twinaphex 0b069c4ee3 Revert "Use constant values instead of MAC_OS_X_VERSION_ - might not be available on earlier OSX versions/xcode"
This reverts commit f35b578c42.
2018-08-31 19:19:56 +02:00
twinaphex 1265d7546c Revert "Start using raw constants for OSX version detection"
This reverts commit ab34a70873.
2018-08-31 19:19:42 +02:00
twinaphex c7af7ae00d Revert "Add conditionals for OSX 10.6 and higher"
This reverts commit 7f7f23d08b.
2018-08-31 19:19:35 +02:00
twinaphex 91145e02c6 Revert "OSX PowerPC - gets it compiling and linking again but doesn't work -"
This reverts commit f16ec700a9.
2018-08-31 19:19:27 +02:00
Twinaphex e2a650cb26 Remove unused variable 2018-08-31 19:02:47 +02:00
Twinaphex 4a30ec5623 Update CHANGES.md 2018-08-31 18:44:24 +02:00
Twinaphex b86164cccb Merge pull request #7159 from bparker06/qt_filterarchives
Qt: add option to filter extensions inside archives when adding to a playlist
2018-08-31 17:50:59 +02:00
Brad Parker 230787808c Qt: fix playlist title when adding a folder with one item 2018-08-31 09:16:45 -04:00
Brad Parker faaf84aef3 Qt: do not show right-click menu for file browser contents 2018-08-31 09:05:22 -04:00
Twinaphex 41f7de72cd Merge pull request #7157 from RobLoach/configure
libretro-common: Restore libretro-common/audio/dsp_filters/configure
2018-08-31 05:48:47 +02:00
Brad Parker 30fb23ccbe Qt: add option to filter extensions inside archives when adding to a playlist 2018-08-30 23:06:34 -04:00
Rob Loach c7e6eda438 libretro-common: Restore libretro-common/audio/dsp_filters/configure 2018-08-30 22:23:05 -04:00
twinaphex 7c22f265b8 Update libretro-common 2018-08-31 02:28:20 +02:00
Twinaphex 02e23be127 Merge pull request #7156 from RetroSven/master
push save state into background for cores that need the emulator to be running during serialization
2018-08-30 18:15:29 +02:00
Sven 75abd1f36e Merge remote-tracking branch 'upstream/master' 2018-08-30 12:07:41 -04:00
neville f16ec700a9 OSX PowerPC - gets it compiling and linking again but doesn't work -
left a TODO/FIXME for aussiebloke
2018-08-30 17:45:22 +02:00
twinaphex 7f7f23d08b Add conditionals for OSX 10.6 and higher 2018-08-30 17:38:43 +02:00
Sven b8ab6c1e74 push save state into background for cores that need the emulator to be running to correctly save states 2018-08-30 11:21:31 -04:00
twinaphex ab34a70873 Start using raw constants for OSX version detection 2018-08-30 16:35:44 +02:00
neville f35b578c42 Use constant values instead of MAC_OS_X_VERSION_ - might not be available on earlier OSX versions/xcode 2018-08-30 16:29:58 +02:00
twinaphex 1222192afb Add conditionals to maintain backwards compatibility with OSX 10.5 2018-08-30 16:22:02 +02:00
neville d7899c51aa Compatibility fixes for OSX PPC 2018-08-30 16:18:51 +02:00
neville 5af0e58288 - Unset BOM
- remove non-latin characters - won't compile on OSX PPC otherwise
2018-08-30 16:05:51 +02:00
twinaphex dac4034954 Add PPC ifdefs; kIOHIDUniqueKey is not available on OSX 10.5 2018-08-30 15:56:02 +02:00
twinaphex b1643f9275 (AArch64) Needs to be set to SDK level 26 for Google Play 2018-08-30 01:47:15 +02:00
Brad Parker 2e8361970b Qt: buildfix for older Qt 2018-08-29 18:41:05 -04:00
twinaphex 9d43f7f036 Fix French 2018-08-29 21:25:47 +02:00
Twinaphex a157f2eedd Merge pull request #7152 from bparker06/qt_coreoptions
Qt: initial core options dialog
2018-08-29 17:43:31 +02:00
Brad Parker 5a0017a23e Update CHANGES.md 2018-08-29 11:42:14 -04:00
Brad Parker 56c9a37e5a Qt: initial core options dialog 2018-08-29 11:34:36 -04:00
Brad Parker 95ad8798ee Qt: scrub thumbnail titles according to No-Intro before downloading, fixes #7149 2018-08-29 00:42:34 -04:00
Brad Parker c746115bbd Qt: keep trying to download remaining thumbnails if any fail to open for writing (probably just illegal characters in filename) 2018-08-29 00:25:19 -04:00
twinaphex 7234544669 Update version 2018-08-29 01:48:37 +02:00
Alfrix 107cc364b5 Add neoactive and retroactive to menu icons 2018-08-28 19:43:02 -03:00
Twinaphex 945f57e3b4 Merge pull request #7147 from alfrix/master
Bind sublabel cheat apply after load
2018-08-28 22:13:06 +02:00
Alfrix 2d9f00f358 Bind sublabel cheat apply after load 2018-08-28 16:37:48 -03:00
Twinaphex d160775263 Merge pull request #7137 from alfrix/xmb_exp
Fallback to a default icon in if there is no playlist icon
2018-08-28 19:51:47 +02:00
Twinaphex 8f043d717c Merge pull request #7145 from alfrix/joselagem
Rebase and fix #6961
2018-08-28 19:39:31 +02:00
Joselagem 613ff650d0 Update languages files US and ES
Update languages files US and ES
Actualización de los archivos de idioma US y ES
2018-08-28 14:34:13 -03:00
Brad Parker 3010ef8775 Qt: do not create a new playlist if a name was not specified 2018-08-28 11:34:08 -04:00
Brad Parker 44eb97206a Qt: fix canceling of thumbnail downloads, use QDir comparison instead of string-based to honor case-insensitivity on Windows 2018-08-28 09:01:25 -04:00
Twinaphex 96e14c0b61 Merge pull request #7139 from bparker06/qt_playlist_thumbnail
Qt: add right-click for playlists to download thumbnails for the current entries
2018-08-28 05:31:51 +02:00
Brad Parker d8913d5d3a Qt: add right-click for playlists to download thumbnails for the current entries 2018-08-27 23:29:44 -04:00
Twinaphex 0c6eea5030 Merge pull request #7138 from altiereslima/master
Update brazilian portuguese translation
2018-08-28 00:19:54 +02:00
Brad Parker 38f3d06d08 Qt: use C locale for numbers, otherwise slang shaders can break 2018-08-27 17:56:53 -04:00
altiereslima 0116f675b9 Update brazilian portuguese translation 2018-08-27 17:21:56 -03:00
Twinaphex fa110c5bb2 Merge pull request #7124 from orbea/clang
Silence -Wunknown-warning-option warnings with clang.
2018-08-27 20:49:02 +02:00
Brad Parker 23836bfba9 use_thread option for screenshot was backwards 2018-08-27 13:38:43 -04:00
Twinaphex ea87bb5a1d Merge pull request #7122 from orbea/vulkan
Fix segfaults when starting vulkan without a working vulkan driver.
2018-08-27 18:59:00 +02:00
twinaphex 8a5d092e5b (dispserv_x11.c) Make variable bigger to avoid all the warnings and use snprintf 2018-08-27 16:09:12 +02:00
Alfrix 6d1e04dd9c Cleanup 2018-08-27 10:45:07 -03:00
Alfrix aa0889ec29 Fallback to default icon in custom playlists 2018-08-27 10:43:31 -03:00
Twinaphex 503b42d161 Merge pull request #7134 from Dwedit/runahead-input-fix
Deterministic input for RunAhead, guaranteed to match the last polled input
2018-08-27 13:52:36 +02:00
Twinaphex d2d9989ef1 Merge pull request #7135 from bparker06/qt_thumbnailpack
Qt: add right-click option for playlists to download their thumbnail packs
2018-08-27 13:51:57 +02:00
Brad Parker 21f99b9965 Qt: add right-click for playlists to download their thumbnail packs 2018-08-26 23:24:43 -04:00
Brad Parker 98fadf9b1f Qt: remove partially downloaded thumbnail if transfer is canceled 2018-08-26 23:24:22 -04:00
Twinaphex 4a951cb369 Merge pull request #7133 from alfrix/xmb_exp
Fix themes without menu icons
2018-08-27 01:04:51 +02:00
Alfrix 461dbf39ba Fix themes without menu icons 2018-08-26 20:00:36 -03:00
Brad Parker 32345e37f8 Qt: OPENSSL_VERSION_AT_LEAST was reverted in openssl git because it is in fact broken 2018-08-26 18:14:08 -04:00
Brad Parker 9638005332 Qt: add UI option to set startup playlist, fixes #7103 2018-08-26 17:17:45 -04:00
Brad Parker 12f1d003bb Qt: openssl 1.1.0 broke their ABI 2018-08-26 16:04:01 -04:00
Brad Parker 1d6a69d198 Qt: remove partially downloaded files on failure 2018-08-26 12:04:18 -04:00
Brad Parker 49e5fcd0cc Qt: only use openssl if we have it 2018-08-26 10:44:55 -04:00
Brad Parker 7731db9ed8 Qt: link to openssl so Qt will have it for later 2018-08-26 10:40:33 -04:00
Brad Parker 78f5aba04b Qt: fix filename used for thumbnail download 2018-08-26 10:40:08 -04:00
Dwedit 821462409e Deterministic input for RunAhead, guaranteed to match the last polled input. 2018-08-26 00:22:19 -05:00
Twinaphex adb72755e1 Merge pull request #7127 from altiereslima/master
Update brazilian portuguese translation
2018-08-25 21:52:57 +02:00
Twinaphex 6093a56919 Merge pull request #7123 from bparker06/qt_thumbnail
Qt: add right-click option to download thumbnail for playlist entries
2018-08-25 21:52:44 +02:00
altiereslima 8c7526d8ef como sempre... 2018-08-25 16:38:26 -03:00
altiereslima 3d056bc8c4 Update brazilian portuguese translation 2018-08-25 16:24:17 -03:00
orbea 3c6e42ccf6 Silence -Wunknown-warning-option warnings with clang.
When building CXX code with clang it will print many warnings.

warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]

However removing this flag does not introduce any warnings so it
should be safe to remove.
2018-08-25 06:37:33 -07:00
Brad Parker e9e424ec82 Qt: add right-click option to download thumbnail for playlist entries 2018-08-25 01:00:18 -04:00
orbea 260ce526c2 Fix segfaults when starting vulkan without a working vulkan driver.
RetroArch will crash in several places when running vulkan in an
environment that does not have working vulkan drivers.

This should guard against those crashes and allow RetroArch to fail
safely in those cases.
2018-08-24 19:36:03 -07:00
Twinaphex a6d5931412 Merge pull request #7120 from alfrix/xmb_exp
Add automatic and systematic to menu icons
2018-08-25 00:22:37 +02:00
Twinaphex 07509a8ec8 Merge pull request #7121 from orbea/video_driver
Default to gl instead of vulkan.
2018-08-25 00:22:18 +02:00
orbea d8ea30881d Default to gl instead of vulkan.
If the video_driver is set incorrectly it will default to vulkan
instead of gl. However its possible to have RetroArch built with
vulkan even with no working vulkan drivers and this will cause a
segfault.

Defaulting to gl again should be a safer default which should crash
for fewer users.

Fixes https://github.com/libretro/RetroArch/issues/5568.
2018-08-24 13:55:09 -07:00
Alfrix 8dfeaba30b Add automatic and systematic to menu themes 2018-08-24 16:10:19 -03:00
Twinaphex b095511e97 Merge pull request #7117 from alfrix/xmb_exp
Add Automatic theme
2018-08-23 21:57:52 +02:00
Alfrix c39ce0e04b Add Automatic theme
It has been in the assets folder a long time by now
2018-08-23 16:41:07 -03:00
Twinaphex f357526a57 Merge pull request #7116 from altiereslima/master
Update brazilian portuguese translation
2018-08-23 18:46:33 +02:00
altiereslima 6e9a8a9dd9 fix 2018-08-23 13:23:03 -03:00
altiereslima 49b785b9dc Update brazilian portuguese translation
Added some missing strings.
Aligned with msg_hash_us.h
2018-08-23 13:03:36 -03:00
Brad Parker 6464003d5f Qt: use id instead of array index for shader params, fix empty window on vulkan 2018-08-23 11:42:31 -04:00
Twinaphex ea35fe85f6 Merge pull request #7114 from hyarsan/master
Make the Show Desktop Menu sublabel sound better
2018-08-23 15:38:32 +02:00
Yarsan Hoessain 27147226a0 Make the Show Desktop Menu sublabel sound better 2018-08-23 15:27:09 +02:00
Brad Parker 88cecc521a Qt: hopefully parameters are fixed now part 2 2018-08-22 22:51:50 -04:00
Twinaphex da3888dd68 Merge pull request #7111 from alfrix/xmb_exp
Add Retrosystem to the support list of menu icons
2018-08-23 02:19:59 +02:00
Alfrix fb15edebc3 Add Retrosystem to the support list of menu icons 2018-08-22 19:52:27 -03:00
Twinaphex 376dd85715 Merge pull request #7110 from alfrix/xmb_exp
Change start core icon
2018-08-22 22:46:22 +02:00
Alfrix 947113d007 Change start core icon 2018-08-22 16:31:02 -03:00
Twinaphex c93cf0f362 Merge pull request #7108 from alfrix/xmb_exp
Don't show the pipeline option it was disabled in the build
2018-08-22 17:59:41 +02:00
Alfrix b118e45d49 Don't show the pipeline option it was disabled in the build 2018-08-22 12:51:59 -03:00
Brad Parker 8ff257290c Qt: hopefully parameters are fixed now 2018-08-21 21:20:25 -04:00
Brad Parker 67653ba5f0 Qt: try to fix wrong parameter being set in a different way 2018-08-21 21:01:56 -04:00
Brad Parker 0b9adb3938 Qt: fix pass parameters switched around on context reset if move up/down buttons were used 2018-08-21 19:16:18 -04:00
Brad Parker 498ed160bb Qt: fix shader passes disappearing on context reset 2018-08-21 18:25:25 -04:00
Twinaphex 0300e8a544 Merge pull request #7107 from TheMrIron2/master
PSP: Slightly more aggressive optimisation
2018-08-22 00:20:01 +02:00
Twinaphex 9740ede4da Merge pull request #7089 from winneon/discord_improvements
wip - discord: added new discord-rpc statuses & updated discord-rpc calls to stay more consistent
2018-08-21 22:48:59 +02:00
TheMrIron2 96023ea469 PSP: Slightly more aggressive optimisation
- O3 flag replacing O2 for higher level of optimisation. Potentially unstable, but works for Wii U RetroArch along with other PSP emulators. I don't see why not.
- fsingle-precision-constant to simplify some operations. Should be safe while being more performant due to using less memory traffic and may lessen load on the CPU because of the simplification.
2018-08-21 20:48:55 +00:00
Jesse Bryan 5bda0b3a61 general: fixed the merge conflict 2018-08-21 14:57:59 -05:00
Twinaphex dfe0a81206 Merge pull request #7106 from alfrix/spanish
Update Spanish
2018-08-21 20:35:13 +02:00
Alfrix fad5569d99 Cleanup styling 2018-08-21 15:30:02 -03:00
Alfrix 052424ffd2 Update Spanish 2018-08-21 15:30:02 -03:00
Twinaphex 8e76145278 Merge pull request #7105 from alfrix/xmb_exp
Change Reset core association icon to undo
2018-08-21 19:43:44 +02:00
Brad Parker 06daa1f9ef Qt: start on history playlist by default, UI option to change it will come later 2018-08-21 13:39:22 -04:00
Twinaphex 94ec9233f6 Merge pull request #7104 from Tatsuya79/patch-3
rename vrr runloop option
2018-08-21 19:19:46 +02:00
Alfrix 8984162e0f Change Reset core association icon to undo 2018-08-21 14:19:35 -03:00
Tatsuya79 1c8f2beca3 update vrr runloop help 2018-08-21 18:47:06 +02:00
Tatsuya79 45bcd62f34 rename vrr runloop option 2018-08-21 18:45:22 +02:00
Brad Parker cc16c45069 Qt: keep size of shader window when reloading if user has changed it 2018-08-21 11:14:42 -04:00
Jesse Bryan f6a0b09e7d general: renamed rpcname to systemid 2018-08-21 09:41:16 -05:00
Brad Parker 281966a14c Qt: make sure video_shader exists 2018-08-21 10:15:00 -04:00
Jesse Bryan c276f9349a discord: remove hardcoded values and use new attribute 2018-08-20 20:55:44 -05:00
Brad Parker 6a4584e301 Update CHANGES.md 2018-08-20 21:49:50 -04:00
Brad Parker ff09503ac1 Qt: add right-click options to reset shader parameters back to defaults 2018-08-20 21:48:59 -04:00
Brad Parker 4d09ddde1c Qt: limit shader preset/pass selection to the appropriate extensions 2018-08-20 20:26:50 -04:00
Brad Parker e9c68597ff Qt: try to work around layout crashing issues on Windows 2018-08-20 18:47:18 -04:00
Jesse Bryan ea561c8dfe discord: see the previous commit message 2018-08-20 14:16:52 -05:00
Jesse Bryan f507905345 discord: fixed the corename comparison statement 2018-08-20 14:14:35 -05:00
Jesse Bryan bb451d59e8 discord: hardcoded non-essential cores into discord.c 2018-08-20 14:03:06 -05:00
Brad Parker 0ed43eb908 Qt: fix tool button handling on shader window 2018-08-20 12:57:05 -04:00
Jesse Bryan 44180e55b1 Merge branch 'master' of https://github.com/libretro/RetroArch into discord_improvements 2018-08-20 08:30:57 -05:00
Jesse Bryan 7568d35086 discord: replace forward slashes with underscores 2018-08-20 08:30:54 -05:00
Brad Parker 3ad54bc9ca Qt: revert paintEvent changes, only keep one for ShaderParamsDialog 2018-08-19 19:27:06 -04:00
Brad Parker 8380ad61f9 Qt: add missing paintEvent overrides for stylesheet correctness 2018-08-19 18:54:13 -04:00
Brad Parker b60df44b59 Qt: add load/save/remove/apply buttons to top of shaders dialog 2018-08-19 16:26:23 -04:00
Twinaphex d9f7afbf77 Merge pull request #7098 from RobLoach/pkg-mame2003plus
ctr: Add MAME 2003 Plus
2018-08-19 18:55:09 +02:00
Rob Loach 5ba4103f6e pkg: Add MAME 2003 Plus 2018-08-19 12:49:47 -04:00
Brad Parker d571bfaf17 Qt: use native path separators for file browser content 2018-08-19 11:46:33 -04:00
Brad Parker f6dc3345e9 Qt: use native path separators for folder scan from file browser, fixes #7084 2018-08-19 11:05:25 -04:00
twinaphex 821ffc9962 Clang scan-build error fix 2018-08-19 16:13:13 +02:00
Twinaphex b0f21e7c2e Merge pull request #7097 from Tatsuya79/patch-2
[Desktop Menu] update dark theme
2018-08-19 16:03:23 +02:00
Tatsuya79 9e9fb5803e Update ui_qt_themes.h 2018-08-19 16:00:19 +02:00
Tatsuya79 c051bae1bd Update ui_qt_themes.h 2018-08-19 15:56:19 +02:00
Twinaphex e6576c8239 Merge pull request #7088 from alfrix/xmb_exp
XMB add an option to show desktop ui aka WIMP
2018-08-19 15:55:38 +02:00
Tatsuya79 a309400305 name gridLayoutWidget 2018-08-19 15:54:56 +02:00
Twinaphex e35623d492 Merge pull request #7093 from bparker06/max_frames_ss
command-line parameters for screenshotting after max_frames is reached
2018-08-19 06:23:31 +02:00
Brad Parker b1dde87ce5 add --max-frames-ss and --max-frames-ss-path parameters for taking a screenshot after max_frames is reached 2018-08-18 23:09:40 -04:00
Brad Parker b0146abd11 add fullpath and use_thread parameters to take_screenshot() 2018-08-18 23:08:55 -04:00
Jesse Bryan 7755c9ae55 discord: removed the icon warning and uncommented the necessary line 2018-08-18 21:21:56 -05:00
Jesse Bryan cdbe19e213 discord: fix merge conflicts 2018-08-18 21:16:12 -05:00
alfrix e0d99d7da2 Change UI to menu 2018-08-18 22:22:40 -03:00
Brad Parker c00fd41b93 Qt: style fixup for filter/scale/move shader options 2018-08-18 19:07:58 -04:00
Brad Parker 380cd7ac53 Qt: add move up/down button for shader passes 2018-08-18 18:03:51 -04:00
alfrix 70d0458180 Add sublabel for 'Show desktop ui' 2018-08-18 18:16:19 -03:00
Twinaphex ea946b5c97 Merge pull request #7092 from Dwedit/attach_console
Attach console before displaying Version information, Help, or Features.
2018-08-18 21:06:15 +02:00
alfrix b915fd095d Fix focus for windows platforms (Tatsuya) 2018-08-18 15:14:41 -03:00
alfrix d2e4832ebe QT fix focus (bparker) 2018-08-18 15:10:41 -03:00
alfrix 105fba6abe XMB add an option to show desktop ui aka WIMP 2018-08-18 15:10:40 -03:00
Dwedit f01894ebe4 Attach console before displaying Version information, Help, or Features. 2018-08-18 12:43:49 -05:00
Brad Parker 894d460821 Qt: add "current shader" prefix to window title 2018-08-18 13:04:53 -04:00
Brad Parker 0a9891def1 Qt: fix checkbox setting of shader parameters 2018-08-18 13:00:39 -04:00
Brad Parker e78f2f63f7 Qt: fix changing of double spinbox values 2018-08-18 12:39:28 -04:00
Brad Parker e4834250b9 Qt: set shader dialog title to current preset/shader name 2018-08-18 12:39:17 -04:00
twinaphex 90efa02718 Fix more scan-build issues 2018-08-18 16:16:17 +02:00
Twinaphex f07b8b1965 Merge pull request #7090 from Dwedit/fix_missing_content
Fix console mode loading core without content
2018-08-18 16:06:41 +02:00
twinaphex 646e64c28c Fix some clang scan-build warnings/errors 2018-08-18 15:56:44 +02:00
Dwedit 0e34c12d5c Fixed bug that let Retroarch proceed to retro_run without loading content
Removed unlocalized and redundant error message
2018-08-18 08:40:19 -05:00
Jesse Bryan ea6541b90f discord: remove test rpc client ID 2018-08-18 02:17:08 -05:00
Jesse Bryan fd7d8d9424 Merge branch 'master' of https://github.com/libretro/RetroArch into discord_improvements 2018-08-18 02:12:56 -05:00
Jesse Bryan a0cf6b6b5e discord: added additional discord events and other improvements 2018-08-18 02:12:51 -05:00
Brad Parker 849792dc2c fix memory leaks 2018-08-18 01:15:50 -04:00
Brad Parker dfd85125ad fix null deref 2018-08-18 01:10:05 -04:00
Brad Parker c59cbfc4e8 fix memory leaks 2018-08-18 01:07:57 -04:00
Brad Parker 077ef86bab fix null pointer dereferences 2018-08-18 01:07:51 -04:00
Brad Parker 2f87f669f1 fix null dereference (but scan-build still warns with "Assigned value is garbage or undefined") 2018-08-18 01:00:53 -04:00
Brad Parker 23d7fbcaf3 fix memory leaks 2018-08-18 00:56:10 -04:00
Brad Parker fbe08aa0c5 fix double free 2018-08-18 00:51:07 -04:00
Brad Parker 1d4cb967f0 fix scan-build error "branch condition evaluates to garbage" 2018-08-18 00:48:40 -04:00
Brad Parker 16459bfa91 Qt: add filter/scale to shader window 2018-08-18 00:33:59 -04:00
Brad Parker b76f3abfbc android: use current package name for external storage 2018-08-17 20:38:56 -04:00
Brad Parker 819e930b89 Qt: move drag&drop context menu into FileDropWidget source 2018-08-17 11:57:47 -04:00
twinaphex 566d0fc0d9 Remove this 2018-08-17 17:43:28 +02:00
twinaphex ae0d9fd60d (Wayland) Buildfixes 2018-08-17 17:42:14 +02:00
Brad Parker 1fba7df859 use existing src folder for android64 instead of duplicating it 2018-08-17 09:40:13 -04:00
twinaphex 7250181319 Add some __WINRT__ ifdefs 2018-08-17 14:51:27 +02:00
Brad Parker e2ff7478ca don't return uninitialized data 2018-08-17 07:49:25 -04:00
Brad Parker f130b261f4 Qt: Linux buildfix 2018-08-16 23:14:52 -04:00
Brad Parker 1966b04832 Qt: windows buildfix 2018-08-16 22:58:35 -04:00
Brad Parker 648705154e Qt: split functions into separate files 2018-08-16 22:48:31 -04:00
Brad Parker 6ef3567ea5 Qt: reset shader params window when passes are set to 0 2018-08-16 22:48:07 -04:00
twinaphex cfd15687d1 Buildfix 2018-08-16 22:01:24 +02:00
twinaphex f9e8737476 Remove libui - we don't need it anymore now that we have the Qt desktop
UI
2018-08-16 21:34:20 +02:00
twinaphex 35991f5feb Don't use == NULL 2018-08-16 21:32:14 +02:00
twinaphex b28af7734f MSVC 2012 solution works now 2018-08-16 21:18:37 +02:00
twinaphex 4a54826d9b Remove unused variable 2018-08-16 21:14:56 +02:00
twinaphex a1d5b0fd03 Update MSVC 2012 solution 2018-08-16 20:49:31 +02:00
Brad Parker 12539f310d use strl functions 2018-08-16 13:51:44 -04:00
twinaphex d3c6fc1601 Add initial MSVC 2012 solution 2018-08-16 19:29:31 +02:00
Brad Parker 9221e4e845 Discord integration requires a C++ linker 2018-08-16 13:10:22 -04:00
twinaphex 220c84c7a3 Fix strlcat size arguments 2018-08-16 18:53:19 +02:00
twinaphex 6cd6bf993f Fix strlcpy call 2018-08-16 18:30:53 +02:00
twinaphex 0175effb00 Revert "(Menu) change strncpy to strlcpy"
This reverts commit ba67623961.
2018-08-16 16:40:28 +02:00
Brad Parker f8521a5580 Qt: use string literal for themes 2018-08-16 10:20:37 -04:00
Brad Parker 34e48bcbc9 Update AUTHORS.h 2018-08-16 09:29:39 -04:00
Twinaphex e43462cc3e Merge pull request #7048 from alfrix/xmb_exp
(Menu) Add more XMB Icons
2018-08-16 14:45:10 +02:00
Brad Parker 18a6467d4f Qt: update success is not an error 2018-08-16 08:42:40 -04:00
Twinaphex f37898dd01 Merge pull request #7079 from Tatsuya79/patch-1
Desktop UI dark theme updates
2018-08-16 13:31:19 +02:00
Tatsuya79 f750229693 Desktop UI dark theme updates 2018-08-16 13:12:34 +02:00
twinaphex 6001c7f030 (MSVC 2008) Add HAVE_OVERLAY 2018-08-16 11:53:46 +02:00
twinaphex c699889f0c Update MSVC2008 2018-08-16 11:50:51 +02:00
twinaphex 145d4d66f5 Update MSVC 2008 solution 2018-08-16 11:44:51 +02:00
twinaphex d2de72bfb7 Update MSVC 2008 solution 2018-08-16 11:18:56 +02:00
twinaphex a8826c766b (MSVC2008) Update solution 2018-08-16 11:06:22 +02:00
twinaphex fd532414f0 (DSound) Add fallback when we are not building with HAVE_THREADS support 2018-08-16 10:57:33 +02:00
twinaphex 3f4cd71aa3 Cleanups 2018-08-16 10:42:26 +02:00
twinaphex de8c98fdef Remove ID_M_SHADER_PARAMETERS 2018-08-16 10:18:56 +02:00
twinaphex 3fb039f9f0 Update menu_display_metal.m 2018-08-16 10:18:00 +02:00
twinaphex ba67623961 (Menu) change strncpy to strlcpy 2018-08-16 10:15:51 +02:00
twinaphex 75a388cd67 Use strlcpy instead of strncpy in slang_process.cpp 2018-08-16 10:14:42 +02:00
twinaphex c12baad087 Fixup compat_snprintf.c for MSVC 2008 2018-08-16 10:12:17 +02:00
twinaphex 6266065384 Fix more code when compiling without menu support 2018-08-16 09:59:51 +02:00
twinaphex e2e43e6ade Update - make sure non-HAVE_MENU targets can compile 2018-08-16 09:51:03 +02:00
Brad Parker c74c3c9536 Qt: set object names 2018-08-15 21:41:44 -04:00
Brad Parker c663b0f87b Qt: make shader parameter window scrollable if there are too many items to show 2018-08-15 21:40:39 -04:00
twinaphex 921e52e64f Remove old leftover buggy Win32 driver 2018-08-16 00:05:09 +02:00
Brad Parker 9f60a6d17c fix Core Information not appearing after 73f2710 2018-08-15 16:11:05 -04:00
Twinaphex 32d1769968 Merge pull request #7076 from winneon/discord_improvements
discord: use playlist & platform titles when launching content
2018-08-15 21:48:26 +02:00
Twinaphex eee287074c Merge pull request #7077 from bparker06/wimp_shader_param
Qt: Initial shader parameters window
2018-08-15 21:36:34 +02:00
Twinaphex 4d96fddf5e Merge pull request #7061 from wiktorek140/sailfishos-touch
Sailfish OS  device build configuration connected with touch screen support required for device with this OS
2018-08-15 13:30:04 +02:00
twinaphex 1b544d6879 (AArch64) Add separate android phoenix dir 2018-08-15 13:08:06 +02:00
twinaphex c540d83850 (MSVC 2017 Android) Update library name 2018-08-15 12:30:11 +02:00
twinaphex f53349e3dd Move MSVC 2017 files to android/phoenix 2018-08-15 10:46:24 +02:00
Jesse Bryan 2d7cb40537 discord: moved core_info changes to separate PR 2018-08-14 23:40:51 -05:00
Jesse Bryan 010412c895 discord: simplified some lines 2018-08-14 23:26:48 -05:00
Jesse Bryan bf9a8ac4a0 discord: general discord-rpc improvements
Now, if the content was loaded from a playlist, the content name will be the playlist entry's title instead of the filename of the content.

Also, `state` was modified to show the display name of the core, not the
library name. The difference is that the display name shows the platform
as well, not just the core name (i.e. "NEC - PC Engine SuperGrafx (Beetle SGX)" instead of "Mednafen SuperGrafx").
2018-08-14 23:12:47 -05:00
Brad Parker 341cf63399 Qt: show shader pass in parameters window, reload shader params when shader is reloaded 2018-08-14 21:38:52 -04:00
Brad Parker 553394c266 Qt: fix setting of spinbox values when modifying shader parameter sliders 2018-08-14 21:38:45 -04:00
Brad Parker 560149857b shaders: track the pass for each parameter 2018-08-14 18:46:32 -04:00
Brad Parker 4a86d29810 shaders: fix memory leak 2018-08-14 18:44:19 -04:00
Brad Parker 6de4384350 glsl: don't clear the shader source 2018-08-14 18:42:23 -04:00
Brad Parker 572c1ea2d3 Qt: initial shader parameter support 2018-08-14 16:04:48 -04:00
Brad Parker 4a9ef99759 Qt: fix core loading after 73f2710 2018-08-14 16:04:11 -04:00
Twinaphex 135000a5f3 Merge pull request #7074 from RetroSven/master
bugfix: code and state not swapped
2018-08-14 20:04:56 +02:00
Sven 977eac2601 bugfix: code and state not swapped 2018-08-14 13:29:58 -04:00
twinaphex 801bae65e3 Rename files 2018-08-14 17:55:26 +02:00
twinaphex 4fc0d4a194 Rename dir 2018-08-14 17:30:05 +02:00
twinaphex 5ebe5de1b9 Add resource files 2018-08-14 17:24:35 +02:00
twinaphex 00c6fcde84 Add initial VS2017 Android solution - not working yet 2018-08-14 16:04:58 +02:00
twinaphex a6941fb4ed Initial work done on VS2017 solution for Android 2018-08-14 16:02:31 +02:00
twinaphex 48956f3fe4 (MSVC 2008) Add initial MSVC 2008 solution files 2018-08-14 12:18:33 +02:00
twinaphex 16ab69285b (Griffin) Cleanup 2018-08-14 11:45:20 +02:00
twinaphex 6a64e27e3d (D3D8) Add HAVE_MENU ifdefs 2018-08-14 11:41:43 +02:00
twinaphex db9f4697f6 Add HAVE_MENU ifdefs 2018-08-14 11:40:42 +02:00
twinaphex 8c084c70b7 Add HAVE_MENU ifdefs 2018-08-14 11:18:24 +02:00
alfrix b35914fcc0 Fix Stop Netplay Host 2018-08-13 19:41:18 -03:00
Twinaphex 1b542a157d Merge pull request #7073 from flyinghead/fh/stop-audio-after-unload
Close the audio driver after unload_game to avoid threads deadlocks
2018-08-13 15:27:29 -07:00
Flyinghead e52f90926d Close the audio driver after unloading the game to avoid blocking threads that are pushing audio 2018-08-14 00:16:08 +02:00
alfrix ae562614c4 Add dot-art to the supported list in the new XMB icons 2018-08-13 18:42:46 -03:00
twinaphex 66367d41a3 Update libretro-common 2018-08-13 19:56:02 +02:00
alfrix 6e64a39044 Add icons to XMB (limited to Monochrome for now)
Add monochrome inverted to the menu icons
Allow the extra XMB icons in custom theme
Add subsettings
2018-08-13 12:37:45 -03:00
alfrix 8bbc0cb115 Cleanup 2018-08-13 12:37:45 -03:00
Brad Parker b93974faea Qt: update "About RetroArch" logo 2018-08-13 08:42:47 -04:00
twinaphex f657391b2a mbedtls does not support C89 so don't use HAVE_SSL for C89_BUILD 2018-08-13 03:21:08 -07:00
twinaphex 116390b3e8 We should use strlcpy instead of strncpy - this usage of strncpy
was also showing warnings with GCC 8.2
2018-08-13 03:10:02 -07:00
twinaphex 02eb650273 We should use strlcpy instead of strncpy 2018-08-13 03:07:12 -07:00
Brad Parker 0c658debbf update Japanese translation 2018-08-12 22:42:34 -04:00
twinaphex f37ffb7a65 Fix relative path includes 2018-08-12 18:38:05 +02:00
twinaphex be4f592e9e Fix crash at startup when Enable Discord is enabled 2018-08-12 16:33:52 +02:00
twinaphex 356c829f81 Revert "Revert "fix heap-use-after-free""
This reverts commit 6b4cfdc043.
2018-08-12 16:33:24 +02:00
twinaphex 6b4cfdc043 Revert "fix heap-use-after-free"
This reverts commit 73f271021a.
2018-08-12 09:22:32 +02:00
Brad Parker 5fd0664277 fix heap buffer overflow 2018-08-11 21:20:05 -04:00
Brad Parker 73f271021a fix heap-use-after-free 2018-08-11 21:19:56 -04:00
Twinaphex a36442d72d Merge pull request #7069 from bparker06/msvc_version
xmb: show MSVC version next to RetroArch version in lower-left corner
2018-08-11 22:22:01 +02:00
Brad Parker 7b24f884d6 xmb: show MSVC version next to RetroArch version in lower-left corner 2018-08-11 16:20:06 -04:00
Twinaphex 23fe638add Merge pull request #7067 from gouchi/patch-1
Update README.md
2018-08-11 19:04:07 +02:00
gouchi 07b4aed245 Update README.md
fix typo
2018-08-11 18:44:28 +02:00
Brad Parker 325d30f062 Qt: sort core association list case-insensitively 2018-08-10 19:39:04 -04:00
Brad Parker 3d9e7f2c60 Qt: make contributor list static 2018-08-10 19:28:13 -04:00
Twinaphex d352de8133 Merge pull request #7065 from bparker06/contrib
Qt: Add list of contributors to about box
2018-08-11 01:25:40 +02:00
Brad Parker 376608aea0 Qt: cleanup 2018-08-10 19:23:52 -04:00
Brad Parker 177642ac2f add script to fetch list of github contributors 2018-08-10 19:20:13 -04:00
Brad Parker e91c18f556 Qt: Add list of contributors to about box 2018-08-10 19:10:23 -04:00
twinaphex 2cfae2a6e7 C89 buildfix 2018-08-11 00:15:32 +02:00
Twinaphex 91a5b09627 Merge pull request #7042 from Tatsuya79/master
VRR runloop Option.
2018-08-10 21:15:58 +02:00
Brad Parker 8d5f2ad1de Qt: use core display name if regular name is empty 2018-08-10 15:10:18 -04:00
Brad Parker 51f968c557 Qt: fix core association not showing up when clicking on playlists while in grid view 2018-08-10 09:58:22 -04:00
Brad Parker fe6dda917a word_wrap: hack to workaround long lines without spaces 2018-08-09 23:54:16 -04:00
Wiktor Strzębała 45799ee034 Bring up touch support for wayland subsystem for sailfish os devices
Touch code cleanup
Make variabled static as suggest bparker06
C89 compilation error fix (at least for loops)
More C89 fixes

Signed-off-by: Wiktor Strzębała <[email protected]>
2018-08-09 20:49:27 +02:00
Brad Parker e235a0991c Qt: updates 2018-08-09 11:55:42 -04:00
Twinaphex a8dc7209b7 Merge pull request #7060 from RetroSven/master
reverse code/state display so that users can see at a glance which codes are active
2018-08-09 14:59:05 +02:00
Sven 1af96360a5 reverse code/state display so that users can see at a glance which codes are enabled 2018-08-09 08:52:35 -04:00
Wiktor Strzębała ca769b0006 Wayland have EGL libs
Signed-off-by: Wiktor Strzębała <[email protected]>
2018-08-09 14:42:19 +02:00
Wiktor Strzębała 599fd8abe0 Spec file for building under MERSDK (sailfishos)
Signed-off-by: Wiktor Strzębała <[email protected]>
2018-08-09 14:41:55 +02:00
Tatsuya79 e48b9011bf Don't adjust audio for VRR. Silence log message about it. 2018-08-09 12:29:40 +02:00
Brad Parker 50b23d6572 Qt: use yes/no buttons for question dialogs to allow canceling even if checkbox is clicked, return checkbox status separately from yes/no buttons 2018-08-08 12:49:35 -04:00
twinaphex 2a68b6e691 Update 2018-08-08 07:40:33 +02:00
twinaphex e74e306947 Relative path include bugfix 2018-08-08 07:38:48 +02:00
twinaphex fc176c1fa6 Put this around HAVE_DISCORD ifdefs 2018-08-08 07:35:11 +02:00
twinaphex 27c2c6c6d7 Add Discord integration 2018-08-08 07:32:37 +02:00
twinaphex a3847ed656 Not available on PSP either 2018-08-08 06:03:01 +02:00
twinaphex c59b054ef2 Comment this out 2018-08-08 05:01:22 +02:00
twinaphex f14ae31e93 Uncomment this too 2018-08-08 04:54:11 +02:00
twinaphex 1becd89699 Remove DEBUG ifdef 2018-08-08 04:51:03 +02:00
twinaphex e6e35805a6 Enable this 2018-08-08 04:50:16 +02:00
Twinaphex 499fdc7e22 Merge pull request #7053 from RetroSven/master
add option to auto-apply cheat codes when a game loads ; fix some misc cheat module bugs
2018-08-08 03:17:44 +02:00
twinaphex 80227bfcdb Vita doesn't have ftruncate it seems 2018-08-08 01:46:32 +02:00
Sven b48321737d Merge remote-tracking branch 'upstream/master' 2018-08-07 17:35:16 -04:00
Sven b648d70f27 add option to auto-apply cheat codes when a game loads ; fix some misc bugs in cheat engine 2018-08-07 17:34:46 -04:00
Twinaphex 59b620a1a6 Merge pull request #7051 from greso/master
(macOS) Fix input issues
2018-08-07 20:22:55 +02:00
greso 2c9fda1798 (macOS) Fix input issues
For my Xbox One Controller the min input for the hat is 1 and not 0. 0
points to the default state that is called after each button press.

On top of that the two axis for the trigger buttons were ignored. I
added some additional axis that are not present on my controller but
will probably help for other input devices.
2018-08-07 19:51:50 +02:00
twinaphex 137a39c705 Update 2018-08-07 06:22:56 +02:00
twinaphex 7fdc516d8d Update 2018-08-07 06:19:27 +02:00
twinaphex 653bcba2e0 Update libretro-common 2018-08-07 06:17:48 +02:00
twinaphex f52708e205 Update filestream_transforms.h 2018-08-07 06:00:16 +02:00
twinaphex c563eedb32 Hopefully the VFS interface can now remain stable 2018-08-07 05:53:32 +02:00
twinaphex 1bda6ba204 Update libretro-common 2018-08-07 05:43:19 +02:00
twinaphex 0fb7d6a9e4 (SSL) Re-enable drbg 2018-08-07 04:57:33 +02:00
twinaphex 9403489f2e try to bake out debug parts of mbedtls 2018-08-07 04:51:26 +02:00
twinaphex 79f87cbaee More C89_BUILD fixes for mbedtls 2018-08-07 04:48:05 +02:00
twinaphex 6155772c5e mbedtls is not C89_BUILD compatible for now 2018-08-07 03:54:09 +02:00
twinaphex f523fec4d2 C89_BUILD fixes 2018-08-07 03:50:10 +02:00
twinaphex 2bf3ec2000 C89_BUILD fixes 2018-08-07 03:37:56 +02:00
Twinaphex d4ab18c188 Merge pull request #7049 from bparker06/wimp_update
Qt: add option to update RetroArch (Windows only for now)
2018-08-07 03:10:32 +02:00
Brad Parker 4baecf84ca Qt: add option to update RetroArch (Windows only for now) 2018-08-06 20:52:47 -04:00
Brad Parker a1b831abdb allow 7z archives to have multiple files extracted at once 2018-08-06 20:44:59 -04:00
twinaphex 00f252ad2d configuration.c - cleanups:
- use string_is_equal instead of strcmp
- use calloc instead of malloc
2018-08-06 06:59:50 +02:00
twinaphex 68f5c907fe Don't leak 4096 bytes in config_load_remap 2018-08-06 06:55:13 +02:00
Twinaphex 5a727ce522 Merge pull request #7046 from DEX357/patch-18
Update msg_hash_pl.h
2018-08-06 02:41:08 +02:00
DEX357 046ce64250 Update msg_hash_pl.h 2018-08-06 00:27:26 +02:00
Twinaphex c19e26ebf6 Merge pull request #7045 from dor3k/patch-1
Update Polish
2018-08-06 00:15:16 +02:00
dor3k dcc642876a Update msg_hash_pl.h 2018-08-05 23:30:41 +02:00
twinaphex d9f4675a51 menu_settings_free - prevent null pointer indirections 2018-08-05 16:59:59 +02:00
dor3k 54074f5c53 Update msg_hash_pl.h 2018-08-05 02:36:54 +02:00
twinaphex 3f959637f2 Update application ID 2018-08-05 02:14:21 +02:00
twinaphex ae69bf9d7b More changes needed for mbedtls/griffin 2018-08-05 01:10:05 +02:00
Twinaphex dae393d519 Merge pull request #7043 from fr500/master
Discord: Show game name and a core icon
2018-08-05 01:08:55 +02:00
radius 605565e87e Discord: Show game name and a core icon 2018-08-04 17:41:07 -05:00
Tatsuya79 bd4d462170 VRR runloop Option. 2018-08-05 00:34:10 +02:00
twinaphex a1e338827c (mbedtls) Changes to make it compatible with Griffin, pt. 1 2018-08-04 21:16:12 +02:00
twinaphex d2613d6e89 (mbedtls) Global variables need to be uniquely namespaced for Griffin 2018-08-04 20:57:23 +02:00
twinaphex 3019748b17 (mbedtls) Use arc4_alt.h 2018-08-04 20:54:11 +02:00
twinaphex ad87ec871d (mbedtls) update asn1parse.c 2018-08-04 20:10:19 +02:00
twinaphex 5b3b3b4a89 (mbedtls) Add arc4_alt.h 2018-08-04 20:09:07 +02:00
Twinaphex 01103dcd23 Cleanups 2018-08-04 20:02:33 +02:00
twinaphex 564c7805b0 Add HAVE_SSL ifdef to griffin.c 2018-08-04 19:51:55 +02:00
Brad Parker c71b4ccca3 only set mbedtls debug if we are building in debug mode 2018-08-04 13:24:36 -04:00
twinaphex 7b147a40ae Update 2018-08-04 19:23:42 +02:00
Twinaphex b0e8775b55 Merge pull request #7041 from RetroSven/master
bugfix for very long code values - allow for any length
2018-08-04 19:10:46 +02:00
Sven 0f634d563b Merge remote-tracking branch 'upstream/master' 2018-08-04 13:05:40 -04:00
Sven 2fb5d54130 bugfix for very long code values - allow for any length 2018-08-04 13:05:05 -04:00
Brad Parker 93aed2bc87 Update CHANGES.md 2018-08-04 12:56:48 -04:00
twinaphex 2f1dd78a77 Set HAVE_SSL=yes by default for Windows/Linux 2018-08-04 18:50:53 +02:00
Twinaphex 00ff8b59aa Merge pull request #7040 from alfrix/spanish
Update Spanish
2018-08-04 16:10:10 +02:00
Sven deff1de2b7 Merge remote-tracking branch 'upstream/master' 2018-08-04 08:29:07 -04:00
Sven a82ea4dcc8 bump size for long one-line multi-codes 2018-08-04 08:28:39 -04:00
Alfredo Monclus ce20a9acdf Add Onscreen Notifications and Overlays Sublabels 2018-08-04 00:33:51 -03:00
Alfredo Monclus 8fe519365c Update Spanish 2018-08-03 23:20:32 -03:00
Brad Parker 75d161e0bd Qt: make links in Help->About clickable, add documentation link 2018-08-03 21:38:38 -04:00
twinaphex 5773f7071d C89 buildfixes 2018-08-04 00:47:52 +02:00
Twinaphex 421e6fe0f7 Merge pull request #7039 from RetroSven/master
add some options to the cheat system to browse emulator memory
2018-08-03 23:55:12 +02:00
Sven e5bc567765 Merge remote-tracking branch 'upstream/master' 2018-08-03 14:59:44 -04:00
Sven 36d16a9c94 add some options to the cheat system to browse emulator memory 2018-08-03 14:59:33 -04:00
Brad Parker 43492c5fbd Qt: add Help->About dialogs 2018-08-02 23:21:39 -04:00
Twinaphex af4438406d Merge pull request #7038 from joel16/vita-clockrates
Set max bus & gpu clock rates for PS VITA
2018-08-02 19:36:59 +02:00
Joel16 b606572bce Set max bus & gpu clock rates 2018-08-02 12:19:16 -05:00
Twinaphex 03854a0da1 Merge pull request #7037 from RetroSven/master
add an option to auto-apply cheats whenever they are toggled on/off
2018-08-02 17:18:21 +02:00
Sven c1bba50567 Merge remote-tracking branch 'upstream/master' 2018-08-02 11:00:02 -04:00
Sven 3bba9aeeaf add an option to auto-apply cheats whenever they are toggled on/off 2018-08-02 10:59:37 -04:00
twinaphex 5b9115c848 C89_BUILD fixes 2018-08-01 01:27:30 +02:00
twinaphex aec7ed40da This crashed Wayland 2018-08-01 01:15:58 +02:00
Brad Parker bdf5efd4ab Qt: fix thumbnail display in file browser when name has dots in it 2018-07-31 11:34:25 -04:00
Brad Parker b60e35ce48 Update CHANGES.md 2018-07-31 00:16:48 -04:00
Brad Parker ea05b0f3cb Qt: "add entry" option for starting a new custom playlist entry 2018-07-31 00:15:59 -04:00
Brad Parker d5ae00f3d8 Qt: fix loading of content from grid view with core set to "ask me" 2018-07-30 22:52:14 -04:00
Brad Parker e63edfa6d2 Qt: add button to playlist entry dialog to change the path to the content 2018-07-30 21:18:34 -04:00
Brad Parker e1b2d752ab Qt: use complete base name in case file has periods in it 2018-07-30 19:41:31 -04:00
Twinaphex 3e330bed7c Merge pull request #7034 from Tatsuya79/patch-3
Update ui_qt_themes.h
2018-07-31 01:32:08 +02:00
Tatsuya79 1ceac715b3 Update ui_qt_themes.h 2018-07-31 01:07:00 +02:00
Brad Parker 50381a0463 Qt: allow FileDropWidget to be styleable 2018-07-30 18:22:18 -04:00
Twinaphex b5d5fb4940 Merge pull request #7032 from Tatsuya79/patch-2
Update ui_qt_themes.h
2018-07-30 17:36:04 +02:00
Tatsuya79 20a66e468e Update ui_qt_themes.h 2018-07-30 17:26:58 +02:00
Brad Parker 5273aa2861 Qt: use native separators for playlist paths 2018-07-30 10:02:38 -04:00
Twinaphex 157fbe07b6 Merge pull request #7031 from RetroSven/master
fix strncat size warnings ; only consume additional cheat memory when performing searching - no need to alloc additional memory when applying cheats ; bugfix address mask max value
2018-07-30 14:00:44 +02:00
Sven ba8ceb8f84 Merge remote-tracking branch 'upstream/master' 2018-07-30 04:12:46 -04:00
Sven c2825cb7c5 fix strncat size warnings ; only consume additional cheat memory when performing searching - no need to alloc additional memory when applying cheats ; bugfix address mask max value 2018-07-30 04:08:50 -04:00
Brad Parker 558a732330 Qt: add right-click option to edit playlist entries, fix bug with extra .lpl extension in playlists 2018-07-29 23:51:23 -04:00
Twinaphex 0d157bc09f Merge pull request #7030 from RetroSven/master
add "reload game-specific cheats" option to cheats menu
2018-07-29 23:56:08 +02:00
Sven 3d862bbdb4 Merge remote-tracking branch 'upstream/master' 2018-07-29 16:08:12 -04:00
Sven 565e916ef9 add "reload game-specific cheats" option to cheats menu 2018-07-29 15:55:40 -04:00
Twinaphex 58dd8a1917 Merge pull request #7029 from alfrix/spanish
Spanish terminology changes
2018-07-29 20:31:25 +02:00
Alfredo Monclus 7426701b2f Anulaciones a Personalizaciones 2018-07-29 15:06:01 -03:00
Alfredo Monclus 2516b7ad1e Ranura a Posición 2018-07-29 14:07:49 -03:00
twinaphex 7131b969d8 (Android) Buildfixes 2018-07-29 19:04:53 +02:00
Twinaphex 9b79d150b4 Merge pull request #7028 from Skarsnik/master
Fix a bug in the READ_CORE_RAM command of the network interface and add a VERSION command
2018-07-29 18:23:43 +02:00
Twinaphex 77095247cc Merge pull request #7027 from RetroSven/master
save/load from cheat_dir/core_name/game_name.cht ; only save to cheat…
2018-07-29 17:14:05 +02:00
Twinaphex 7ea94f57f6 Merge pull request #7026 from alfrix/spanish
Update Spanish
2018-07-29 17:12:47 +02:00
Sven 0442aa5a31 save/load from cheat_dir/core_name/game_name.cht ; only save to cheat file when there are >0 cheats 2018-07-29 10:48:41 -04:00
Alfredo Monclus 18646e3af0 Update Spanish 2018-07-29 11:20:46 -03:00
Sylvain Colinet 011cb61782 Added a version command 2018-07-29 15:15:29 +02:00
Sylvain Colinet ef43e171ce Network command interface : Fix the READ_CORE_RAM command to not crash when asking for size over 78 2018-07-29 14:49:31 +02:00
Brad Parker 2faa250174 Qt: throttle status bar messages 2018-07-28 23:15:00 -04:00
Brad Parker fea09f7382 Qt: add right-click menu to delete playlist items 2018-07-28 22:34:00 -04:00
Brad Parker 978edc7acf Qt: always set the current tab on startup 2018-07-28 18:46:51 -04:00
Twinaphex e579842620 Merge pull request #7023 from RetroSven/master
fix bug when accessing memory address cheat setting before cheat syst…
2018-07-29 00:08:38 +02:00
Sven 3c0a8c0c10 fix bug when accessing memory address cheat setting before cheat system initialized ; clean up code in some areas 2018-07-28 17:45:33 -04:00
twinaphex d08f0f1234 CXX_BUILD cleanups 2018-07-28 23:18:44 +02:00
twinaphex 89083fd093 C89 buildfixes 2018-07-28 22:11:56 +02:00
Twinaphex 367d6e7480 Merge pull request #7017 from RetroSven/cheater
Implement robust cheat searching interface with rumble features
2018-07-28 19:01:40 +02:00
bparker06 7c06e6f620 Update CHANGES.md 2018-07-28 13:00:26 -04:00
Twinaphex fb3b5df350 Merge pull request #7022 from bparker06/qt_playlist
Qt: ability to add/delete playlists and drag&drop files into a playlist
2018-07-28 18:29:07 +02:00
Brad Parker 8835e2d9a2 Qt: add delete key option to list/grid view to remove playlist items 2018-07-28 11:48:24 -04:00
Brad Parker c883a81c42 Qt: only allow dropping files onto center list/grid view 2018-07-28 10:39:21 -04:00
Tatsuya79 963e19b42b Update ui_qt_themes.h (#7021)
* Update ui_qt_themes.h

* Update ui_qt_window.cpp
2018-07-28 07:54:25 -04:00
Brad Parker 489601fadb Qt: allow right-click in empty portion of playlist widget 2018-07-27 23:52:27 -04:00
Brad Parker 45d38dcccf Qt: add dialog to choose core/database for new playlist entries 2018-07-27 23:45:48 -04:00
twinaphex 20335cd2b9 Add Hakchi files 2018-07-27 19:26:15 +02:00
Twinaphex d802a7eaab Merge pull request #7018 from altiereslima/master
Update portuguese translation
2018-07-27 14:37:06 +02:00
altiereslima 0f63d1f851 Update portuguese translation 2018-07-27 04:54:07 -03:00
Brad Parker fcdeebe672 Qt: initial drag&drop to add playlist entries. no scanning or filtering yet 2018-07-26 23:35:17 -04:00
Sven c750235414 Merge branch 'master' into cheater 2018-07-26 19:40:20 -04:00
Brad Parker be952a9d14 Qt: add options for new/delete playlist 2018-07-26 11:23:51 -04:00
Brad Parker e9c4192e9b Qt: fix grid label text getting cut off on Windows, do not change size of grid items when selected 2018-07-26 11:14:01 -04:00
Brad Parker 0e86c664ce Qt: add tooltips to show entire grid label text 2018-07-25 19:52:08 -04:00
Brad Parker 4b712fa750 Qt: elide grid label text 2018-07-25 19:41:54 -04:00
Sven 5f35249216 Implement robust cheat searching interface with rumble features 2018-07-25 19:19:14 -04:00
Brad Parker 665628e6c0 Qt: add separate settings for max list/grid entries 2018-07-25 15:24:26 -04:00
Brad Parker 065318eb39 Qt: set default limit for "all playlists" to 5000, use retro_assert instead of assert 2018-07-25 08:44:25 -04:00
twinaphex d6b273f60e Add retro_assert.h 2018-07-25 12:24:07 +02:00
Brad Parker 5ff77d1833 Qt: better border drawing across styles, add option for max entries in "all playlists" 2018-07-25 01:43:57 -04:00
Brad Parker f0b0be898a Qt: draw border around selected grid item 2018-07-25 00:29:48 -04:00
Brad Parker d17c17085c Qt: hook up search box to grid view 2018-07-24 17:07:17 -04:00
Brad Parker c7052f67df update CHANGES.md 2018-07-24 15:10:29 -04:00
Brad Parker baa709632d Qt: sort grid entries by name 2018-07-24 15:10:29 -04:00
hizzlekizzle b4cae22396 Merge pull request #7013 from hizzlekizzle/master
update info.plist to v1.7.3
2018-07-24 11:55:59 -05:00
hizzlekizzle ab03c1818a update info.plist to v1.7.3
must have been missed in the previous update
2018-07-24 11:15:03 -05:00
Twinaphex 8535fe11da Merge pull request #7003 from gvbr/runahead
Runahead: ensure prefixed second-instance temp directory on linux
2018-07-24 15:57:47 +02:00
Twinaphex ccb87f3a96 Update CHANGES.md 2018-07-24 15:02:42 +02:00
Twinaphex 70a24ae421 Merge pull request #7012 from TheOfficialFloW/patch-1
Use sceCtrlIsMultiControllerSupported to detect
2018-07-24 15:02:20 +02:00
TheOfficialFloW ef10b7897d Use sceCtrlIsMultiControllerSupported to detect 2018-07-24 10:12:15 +02:00
Twinaphex 6150bd9772 Merge pull request #7010 from bparker06/qt_grid
Qt: initial working grid view
2018-07-23 17:45:43 +02:00
Twinaphex 3aac9a1693 Update CHANGES.md 2018-07-23 17:45:30 +02:00
twinaphex 6cee45ab99 Don't bake in HAVE_STRIPES by default 2018-07-23 17:42:57 +02:00
twinaphex a740d73d21 Don't set MENU_STRIPES as default 2018-07-23 17:42:15 +02:00
Brad Parker b52995dd30 Merge branch 'master' into qt_grid 2018-07-23 11:18:26 -04:00
Brad Parker c8a814ae40 Qt: hook up grid view click/doubleclick events 2018-07-23 11:17:58 -04:00
Twinaphex 48a722f4bc Merge pull request #7009 from kurumushi/patch-1
Add imc0: mount for ps vita
2018-07-23 16:53:12 +02:00
kurumushi bbe1dcd48f Add imc0: mount for ps vita
This allows using the internal storage of the ps vita 2000 model when it's mounted on imc0: instead of ux0:
2018-07-23 23:11:54 +09:00
Brad Parker 1293447aab Qt: hide progress properly when done showing "all playlists" if user only has a single playlist 2018-07-23 09:44:24 -04:00
Twinaphex e5741eb9b2 Merge pull request #7008 from yoshisuga/issue-6751
issue 6751: read input of overlay for remapped keyboard keys
2018-07-23 04:32:21 +02:00
Brad Parker f78337e02e Qt: add progress bar for grid view loading 2018-07-22 22:05:57 -04:00
Brad Parker 75ce796c34 Merge branch 'master' into qt_grid 2018-07-22 20:03:55 -04:00
twinaphex bea736865b Add some logs 2018-07-23 00:10:35 +02:00
Yoshi Sugawara 0a710564e1 issue 6751: read input of overlay for remapped keyboard keys 2018-07-22 11:32:52 -10:00
twinaphex 6ae4350883 (XMB) Add back XMB ribbon - was probably not meant to be removed 2018-07-22 21:18:11 +02:00
twinaphex 454dbc6185 Change this to MENU_STRIPES 2018-07-22 21:14:30 +02:00
twinaphex 7403cfad99 (Stripes) Buildfix 2018-07-22 20:54:59 +02:00
Twinaphex c2d3727c09 Merge pull request #7007 from libretro/stripes
[WIP] Stripes menu
2018-07-22 20:14:50 +02:00
Rob Loach aba179a910 Merge branch 'master' into stripes 2018-07-22 13:30:47 -04:00
twinaphex 9c0ed0f2c4 Don't use core profile GLSL shaders for OpenGLES 2018-07-18 10:06:30 +02:00
gvbr 0addd1aca4 Runahead: ensure prefixed second-instance temp directory on linux 2018-07-17 20:06:18 -07:00
Brad Parker 7e609d6a05 fix some config entries not being saved 2018-07-16 23:01:21 -04:00
Twinaphex b878a94f76 Merge pull request #6998 from bparker06/config_sort
sort config file variables
2018-07-16 06:47:53 +02:00
Brad Parker 62e89974af sort config file variables 2018-07-16 00:15:49 -04:00
twinaphex eb345019c2 Don't implement bind_block/flush_block for drivers that
don't implement it
2018-07-15 20:16:40 +02:00
Twinaphex 5159f71cf5 Update CHANGES.md 2018-07-15 14:43:31 +02:00
twinaphex ea09c29e04 Update implementations for other input drivers - not all input
drivers support this yet
2018-07-15 14:34:02 +02:00
twinaphex 9a1ac6d77b (rwebinput) Fix game focus toggle 2018-07-15 14:22:16 +02:00
twinaphex 13431c7cbf (udev) Fix game focus toggle for udev input driver 2018-07-15 14:20:26 +02:00
twinaphex 98190294db (winraw_input) Fix game focus toggle for winraw_input 2018-07-15 14:18:35 +02:00
twinaphex d50850762b Fix game focus toggling for DInput driver 2018-07-15 14:17:10 +02:00
twinaphex 311b454a2c Change return value to true instead for command_event_save_core_config 2018-07-15 05:58:01 +02:00
twinaphex 675b8bb9e2 Cleanup some code in command_event 2018-07-15 05:50:08 +02:00
Twinaphex a34e29c037 Merge pull request #6990 from stuartcarnie/sgc-metal
fix(Cocoa): Fix blank screen after full screen toggle; window focus
2018-07-15 04:46:59 +02:00
Stuart Carnie 0291c41afa fix(Metal): Fix blank screen after full screen toggle; window focus 2018-07-14 11:18:21 -07:00
Twinaphex a68a22081c Merge pull request #6989 from Dwedit/win32_message_loop_threaded_video_fix
Move win32 message loop, now compatible with threaded video
2018-07-14 06:12:07 +02:00
Dwedit fa00eda625 Relocation of Win32 Message Loop Fix is now tied to whether threaded video is enabled or not
Menu bar is removed if threaded video is enabled, due to code currently being unsafe when using threaded video.
2018-07-13 22:34:03 -05:00
twinaphex d6c5c7f208 Pre-MSVC 2013 did not support PRIu32, add workaround 2018-07-14 05:29:17 +02:00
twinaphex 0df98a53a6 Use video_driver_is_threaded_internal from within gfx/video_driver.c 2018-07-14 05:24:28 +02:00
twinaphex cc473a25b9 Add video_driver_is_threaded 2018-07-14 05:23:03 +02:00
twinaphex 0d39701145 Get rid of double void argument 2018-07-14 00:54:14 +02:00
twinaphex 5ba2a621c0 Silence warnings 2018-07-14 00:45:16 +02:00
twinaphex 600c2c1ca1 Simplify menu_display_font 2018-07-14 00:39:46 +02:00
twinaphex abc6eb7d8c Revert "Re-revert this - causes issues with toggling fullscreen with threaded"
This reverts commit 52a55695ce.
2018-07-14 00:22:52 +02:00
twinaphex 4758caea74 Commenting this out for now - this causes crashes with
toggling fullscreen in threaded video mode with the GL driver
2018-07-14 00:21:27 +02:00
twinaphex 52a55695ce Re-revert this - causes issues with toggling fullscreen with threaded
video mode and GL driver
2018-07-14 00:10:21 +02:00
twinaphex 76cbd54420 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-07-14 00:02:14 +02:00
twinaphex 38a35e53fd Revert "Move Message loop call to right before video_driver_get_status call"
This reverts commit 838dcc8a5a.
2018-07-14 00:01:25 +02:00
Twinaphex 308b053fee Merge pull request #6982 from meleu/patch-2
CHANGES: added cheevos related stuff
2018-07-14 00:00:50 +02:00
Twinaphex 279c635b91 Merge pull request #6985 from RetroSven/rewind_buffer_size_ui
implement a way to set rewind_buffer_size via the UI
2018-07-13 22:38:11 +02:00
Sven 83da70586e implement a way to set rewind_buffer_size via the UI 2018-07-13 16:12:09 -04:00
Brad Parker 367689a3f9 add enum for 21:9 aspect 2018-07-13 15:30:48 -04:00
Brad Parker 637ded4ef1 add 21:9 aspect ratio 2018-07-13 15:29:07 -04:00
meleu e160c70950 CHANGES: added cheevos related stuff 2018-07-13 08:12:01 -03:00
Twinaphex 7dcc99980a Update CHANGES.md 2018-07-13 12:20:55 +02:00
Twinaphex 11244d78b0 Merge pull request #6981 from casdevel/dinput
Add dinput rumble support
2018-07-13 12:20:28 +02:00
Twinaphex 06318e3dd9 Merge pull request #6980 from stuartcarnie/sgc-metal
fix(Metal): Render search box correctly
2018-07-13 10:27:42 +02:00
Stuart Carnie 13a9aca88a fix(Metal): Render search box correctly 2018-07-12 23:15:24 -07:00
Twinaphex 36494d622a Merge pull request #6979 from stuartcarnie/sgc-metal
fix(Metal): Various Metal fixes
2018-07-13 06:36:28 +02:00
Stuart Carnie 167ad3b57d fix(Metal): Various Metal fixes
* OSD message background
* clear glui background
* add Metal to configuration
* added optional config to compile Metal build without OpenGL
* fixed fill_pathname_join_delim; if out_path and dir are same, don't
  strlcpy, as the results are undefined.
2018-07-12 21:33:18 -07:00
Brad Parker dbfccb25dd sixel: fix context init 2018-07-12 22:59:05 -04:00
Twinaphex 42c4e8c687 Merge pull request #6978 from webgeek1234/android_url
Fix android armeabi and x86_64 core updater urls
2018-07-13 04:22:12 +02:00
Aaron Kling dc807f25cf Fix android armeabi and x86_64 core updater urls 2018-07-12 20:06:03 -05:00
Brad Parker f8ea5cfd8d update CHANGES.md 2018-07-12 17:24:52 -04:00
Brad Parker 7e1074c40a sixel: add missing menu display driver 2018-07-12 17:24:52 -04:00
Twinaphex 44859fc06e Merge pull request #6977 from bparker06/sixel_new
initial SIXEL video driver
2018-07-12 23:06:59 +02:00
Brad Parker ab27b7c85f initial SIXEL video driver 2018-07-12 16:55:08 -04:00
twinaphex 6b5ade4ac3 Should be no more deprecated warnings with core context GL for menu
shaders
2018-07-12 22:03:37 +02:00
twinaphex fab08c9cfb Only load Xinput DLL once 2018-07-12 21:39:18 +02:00
twinaphex 60d7d1c793 Add xmb ribbon simple core shader 2018-07-12 21:34:17 +02:00
twinaphex 140e657d51 (GLSL) Add logging for compiling menu shaders 2018-07-12 21:25:39 +02:00
Twinaphex 7f7493d751 Merge pull request #6975 from yoshisuga/ios11_files
[iOS] Support viewing/opening files in Files app
2018-07-12 06:00:40 +02:00
Yoshi Sugawara 14e79e0a43 support viewing/opening files in Files app 2018-07-11 15:52:11 -10:00
Twinaphex 8a683c1626 Merge pull request #6973 from bearoso/fix-rr
Win32: Fix monitor-reported refresh rate.
2018-07-12 00:39:17 +02:00
Brandon Wright c81aab345c Lock sizes of enum fields at 32 bits. 2018-07-11 16:37:37 -05:00
Twinaphex 7adce0050e Update CHANGES.md 2018-07-11 11:23:21 +02:00
Twinaphex cb137954f9 Update wiiu_audio.c - audio should no longer clip 2018-07-11 11:22:43 +02:00
twinaphex dc55bd13aa Add HAVE_METAL 2018-07-11 03:42:42 +02:00
Twinaphex fd86140514 Merge pull request #6963 from alphanu1/master
casting int to float
2018-07-08 20:24:46 +02:00
alphanu1 f25ef05d52 Merge pull request #78 from alphanu1/alphanu1-patch-73
cast float
2018-07-08 19:19:40 +01:00
alphanu1 755a128d95 cast float 2018-07-08 19:15:24 +01:00
Twinaphex e4a8ef409a Merge pull request #6962 from alphanu1/master
Resolution refresh rate restore bugfix for windows.
2018-07-08 19:29:59 +02:00
alphanu1 46d74971fd Merge pull request #77 from alphanu1/alphanu1-patch-72
Restore refresh fix for windows
2018-07-08 18:18:07 +01:00
alphanu1 045606ce44 Restore refresh fix for windows
The refresh rate is now detect to restore the original desktop resolution.
2018-07-08 18:17:23 +01:00
alphanu1 74eacd5a33 Merge pull request #76 from libretro/master
update
2018-07-08 18:13:05 +01:00
Twinaphex 7fb147e8b3 Merge pull request #6959 from stuartcarnie/sgc-metal
feat(Metal): Full screen support
2018-07-07 17:55:42 +02:00
Stuart Carnie 40a1446c95 feat(Metal): Reload shader preset when Metal driver reinitialized 2018-07-07 07:31:43 -07:00
Stuart Carnie 74e1f24e90 feat(Metal): Full screen support
* I believe there is a race condition where the viewport is not set
  correctly on launch
2018-07-06 23:38:34 -07:00
Stuart Carnie 01df2c5e88 fix(Metal): Check for nil drawable 2018-07-06 23:37:15 -07:00
Twinaphex dc161a1cb3 Merge pull request #6958 from RobLoach/defaced
code: Replace hexspeak code
2018-07-07 06:09:59 +02:00
Rob Loach 0f39ef4247 [#6955] Update hexspeak magic pointer code
Fixes #6955
2018-07-06 23:03:15 -04:00
Twinaphex e8fb22ba47 Merge pull request #6953 from Dwedit/cached_frame_hack2
Invalidate `frame_cache_data` pointer to prevent crash if first frame is paused
2018-07-06 20:36:32 +02:00
Dwedit 41ce61974d A hack to invalidate the frame_cache_data pointer during the following events:
Load Game, Reset, Init, Unload, Unload Game, Video Driver Destroy, Video Driver Free, Video Driver Init

This prevents an invalid pointer from being read if the first frame starts out paused.
2018-07-06 09:53:31 -05:00
twinaphex ceaa0259e5 Merge commit 'c8366b0b0f6ab996adcbcf1ee09a3ed6298e7d4e' 2018-07-06 05:17:39 +02:00
twinaphex c8366b0b0f Squashed 'deps/SPIRV-Cross/' changes from f96c9f9fb4..0f59016635
0f59016635 Merge pull request #636 from KhronosGroup/cfg-refactor
2bf57d6dff Deal with composite constants in variable initializer.
dcddd5326e Add LUT test cases for OpVariable with initializer.
af290ede87 Remove some redundant spvArrayCopy declarations.
8c314112b4 Run format_all.sh.
5582523d9a Add some tests for LUT promotion.
5143695080 Don't need to enclose expression for arrays.
d29f48ef06 Deduce constant LUTs from read-write variables.
b5ed706860 Hoist out variable scope analysis.
c26c41b26b Make the CFGs for all active functions available.
6fdadb9218 Track partial writes as well.
7216129377 Hoist out the inline VariableAccessHandler class.

git-subtree-dir: deps/SPIRV-Cross
git-subtree-split: 0f590166359f4ee35d80040f0965417f482cd6b1
2018-07-06 05:17:39 +02:00
twinaphex 22d6930488 Some MSVC 2010 360 buildfixes 2018-07-06 04:45:52 +02:00
Twinaphex 974aa3c8ac Merge pull request #6951 from Dwedit/message_loop_fix
Move Message loop call to right before `video_driver_get_status` call
2018-07-06 04:42:35 +02:00
Dwedit 838dcc8a5a Move Message loop call to right before video_driver_get_status call 2018-07-05 20:07:01 -05:00
Zoran Vuckovic 544802e1a8 Add dinput rumble support 2018-07-05 20:01:23 +02:00
twinaphex c3d469dd8e Revert "Moved WIN32 message loop out of win32_check_window, and into just before the call to runloop_iterate"
This reverts commit 7108628369.
2018-07-05 02:42:16 +02:00
twinaphex 31e76458f7 Merge commit 'aa9ebf5f29e1a22a5050572353b122915db1451d' 2018-07-05 02:10:00 +02:00
twinaphex aa9ebf5f29 Squashed 'libretro-common/' changes from 1548bee835..b857ce7fc5
b857ce7fc5 Cleanups

git-subtree-dir: libretro-common
git-subtree-split: b857ce7fc55d725246a095f766e2bb82bb1d4ce6
2018-07-05 02:10:00 +02:00
Twinaphex c54532d77d Merge pull request #6950 from stuartcarnie/sgc-macos
fix(macOS): Fix older targets
2018-07-05 01:14:54 +02:00
Stuart Carnie d1712d7c5a fix(macOS): Fix older targets 2018-07-04 15:26:49 -07:00
Twinaphex a96b482d78 Merge pull request #6949 from stuartcarnie/sgc-macos
fix(macOS): Use correct availability macro check
2018-07-04 23:42:00 +02:00
Stuart Carnie d8061ac0e9 fix(macOS): Use correct availability macro check 2018-07-04 14:19:05 -07:00
Twinaphex 95500f5631 Merge pull request #6948 from stuartcarnie/sgc-metal
feat(Metal): Add support for overlays
2018-07-04 22:52:29 +02:00
twinaphex 155f797ccb Merge commit '2da12dca5803c3dcde920a1cff838fd98aecb36f' 2018-07-04 22:51:43 +02:00
twinaphex 2da12dca58 Squashed 'deps/SPIRV-Cross/' changes from e59cc24495..f96c9f9fb4
f96c9f9fb4 Merge pull request #635 from KhronosGroup/fix-631
e044732896 Support OpTypeImage with depth == 2 (unknown) properly.
a6814a405a Merge pull request #630 from KhronosGroup/fix-628
af2d3abd03 Fail more gracefully with some unsupported opcodes.
26107ba200 Fix os.errno issues on Travis.
ee44f6027b Changed OpTypeImage to only flag depth if the op is 1
c863f53cac Merge pull request #627 from KhronosGroup/macro-namespace-fix
9ddbd5aff6 Run format_all.sh.
f1752e58e1 Add basic namespace to internal macros.
d67e586b2e Merge pull request #626 from billhollings/master
9bf226cb05 Fixes for code review of PR 626.
4c5142b9d3 CompilerMSL support larger texel buffers by using 2D Metal textures.
314f39a7c4 Merge pull request #621 from billhollings/master
4beefe756c Fixes from PR 621 code review.
f66507a701 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
0ea5e0549e Merge pull request #615 from JustSid/master
5ac55ee735 Fixed emission of some legacy texture ops without requiring the appropriate extensions
ceec708b89 Added better fallbacks for legacy textureProjLod() and textureProjLodOffset() generation
994f789465 Merge pull request #624 from KhronosGroup/fix-619
33c61d2abe Support branch/loop hints in HLSL.
327fb03677 Merge pull request #623 from KhronosGroup/fix-618
2077478651 Merge pull request #622 from KhronosGroup/fix-620
10dfaf79d5 Support globallycoherent in HLSL.
ffa9133d77 Support ternary expressions in OpSpecConstantOp.
e091031613 CompilerMSL pass builtin struct members into functions.
7607eb6923 Merge pull request #617 from KhronosGroup/fix-612
d94d20f4f3 Deal with some builtins being declared with wrong signedness.
0f62b5dc1e Moved check for depth texture and shadowXY emission completely to legacy_tex_op()
447a253ce7 Simplified check for depth texture
76c8e3c1c4 Merge pull request #616 from KhronosGroup/fix-614
b29629fd46 Add support to remove SPIRV_Cross_BaseInstance uniform.
809631ce21 Mention JSON backend in README.
040204d65c Fix warnings and run format_all.sh.
b4c8c3b9b2 Merge branch 'reflection' of git://github.com/jherico/SPIRV-Cross
f6dad78c99 Added support for shadowXY() sample instructions in legacy GLSL
9ad432463c Prefix integer types with underscore
0ad0f948e1 More PR feedback
3b30202bee Add reflection specific test cases, add reflection testing to test_shaders.sh
8d84a541ac Add specialization constant output in reflection
762040084d More feedback
d0a67ba6a7 Code consolidation, const correctness, faster regression testing
3a825349bc More cleanup
6c88b0048b PR feedback
ee86000529 Cleanup code
709d3c60f2 Working on reflection output
0039cb86fc Merge pull request #613 from KhronosGroup/fix-609
9d31154917 Deal with switch case labels which share a block.

git-subtree-dir: deps/SPIRV-Cross
git-subtree-split: f96c9f9fb4fc7d17991cecb2b2294dce06d08d9c
2018-07-04 22:50:02 +02:00
Stuart Carnie c7b21d5bd6 feat(Metal): Add support to disable display sleep (no screen saver) 2018-07-04 13:13:03 -07:00
Stuart Carnie a19ea2ed07 feat(Metal): Add support for overlays 2018-07-04 13:12:40 -07:00
Twinaphex 4b6d6dd421 Merge pull request #6946 from Dwedit/bom_fix
Fix missing BOM on msg_hash_pl.h
2018-07-04 21:32:45 +02:00
Twinaphex a0b1937584 Merge pull request #6947 from Dwedit/message_loop_fix
Moved WIN32 message loop from win32_check_window to before runloop_iterate
2018-07-04 21:30:11 +02:00
Dwedit 7108628369 Moved WIN32 message loop out of win32_check_window, and into just before the call to runloop_iterate 2018-07-04 14:20:38 -05:00
Dwedit 3deb56690a Fix missing BOM on msg_hash_pl.h 2018-07-04 14:14:01 -05:00
Twinaphex 63a071b85a Merge pull request #6945 from Themaister/master
Vulkan: WSI stability fixes
2018-07-04 21:04:08 +02:00
Hans-Kristian Arntzen 52cb0fe375 Vulkan: Fix crash when we get two create_swapchain errors in a row. 2018-07-04 20:25:03 +02:00
Hans-Kristian Arntzen f1d2dac213 Vulkan: Fix various stability issues with WSI.
Added an ifdef to trigger "hardening" which will return spurious errors
for critical WSI things like acquire next image, queue submit and
surface dimension queries.
2018-07-04 19:45:54 +02:00
Twinaphex c8fc27099d Merge pull request #6944 from stuartcarnie/sgc-metal
feat(Metal): Support vsync enable / disable
2018-07-04 19:08:01 +02:00
Stuart Carnie 048aa16599 feat(Metal): Support vsync enable / disable 2018-07-04 09:50:09 -07:00
Twinaphex 2752651de9 Merge pull request #6941 from stuartcarnie/sgc-metal
fix(Metal): fix XRGBA rendering; no nil texture; undefined stuff bad
2018-07-04 18:08:04 +02:00
Stuart Carnie 844e5e15d0 fix(Metal): fix XRGBA rendering; no nil texture; undefined stuff bad 2018-07-04 08:50:46 -07:00
Twinaphex c0dba89d43 Update CHANGES.md 2018-07-04 15:30:07 +02:00
Twinaphex 5552838e34 Merge pull request #6940 from DEX357/patch-17
Update msg_hash_pl.h
2018-07-04 15:05:02 +02:00
Twinaphex 06d8b1fbaa Merge pull request #6939 from theheroGAC/patch-34
Update msg_hash_it.h
2018-07-04 15:04:54 +02:00
Twinaphex 5575bdb449 Merge pull request #6938 from stuartcarnie/sgc-metal
feat(metal): xmb menus and shader pipeline support
2018-07-04 15:04:44 +02:00
DEX357 17f0ef7dd8 Update msg_hash_pl.h 2018-07-04 12:10:39 +02:00
Stuart Carnie 8a298616aa chore(cocoa): reformat (3 spaces, etc) 2018-07-04 00:24:47 -07:00
Stuart Carnie 5240efc857 chore(Metal): fix compiler warnings when targeting newer macOS versions 2018-07-04 00:24:04 -07:00
Stuart Carnie 30d2192338 fix(Metal): Fix release build crash for misaligned read 2018-07-04 00:16:14 -07:00
theheroGAC 905e9e83c0 Update msg_hash_it.h 2018-07-04 08:27:33 +02:00
Stuart Carnie 44ca1062b0 formatting 2018-07-03 22:32:12 -07:00
Stuart Carnie a0900ec433 feat(Metal): full xmb pipeline support
Menu TODOs:

* understand why ribbon does not look the same as GL
* add clear support to `MenuDisplay` for glui
2018-07-03 22:32:12 -07:00
Stuart Carnie 4a101734a1 More cleanup
* use single render command encoder for display for better performance
* Context handles all rendering and presentation
2018-07-03 22:32:12 -07:00
Stuart Carnie 1c5d94aca1 Improve performance; don't care about previous state ofcolor attachment
Color attachment is being completely overwritten.
2018-07-03 22:32:12 -07:00
Stuart Carnie 5e1f991e32 feat(Metal): initial xmb and glui menu support
TODOs

* menu shader pipeline effects
* refactor / optimize graphics rendering
2018-07-03 22:32:12 -07:00
Stuart Carnie 4135300b04 fix(materialui): Assign scale_factor and rotation to draw 2018-07-03 22:32:12 -07:00
Twinaphex 149f5b73a1 Merge pull request #6937 from DEX357/patch-16
Update msg_hash_pl.h
2018-07-04 00:59:04 +02:00
Twinaphex e0b71de5df Merge pull request #6936 from DEX357/patch-15
Update msg_hash_pl.h
2018-07-04 00:58:56 +02:00
DEX357 7a001a07aa Update msg_hash_pl.h 2018-07-02 20:13:19 +02:00
DEX357 f8f620f268 Update msg_hash_pl.h 2018-07-02 20:01:03 +02:00
Brad Parker 04d5e6368e Merge branch 'master' into qt_grid 2018-07-02 11:52:04 -04:00
Brad Parker c4f34f3c6f update JP translation 2018-07-02 11:51:00 -04:00
twinaphex 30f97ebe52 Add this 2018-07-01 22:22:17 +02:00
Twinaphex 4eb4c7b97d Create internal_cores.h 2018-07-01 21:19:40 +02:00
Twinaphex 39a1e494c5 Update CHANGES.md 2018-07-01 17:00:58 +02:00
Twinaphex 121ff2d4a5 Merge pull request #6931 from DEX357/patch-14
Update msg_hash_pl.h
2018-07-01 16:58:58 +02:00
Twinaphex 9cdf477c59 Merge pull request #6933 from Themaister/master
Vulkan: Try to avoid creating swapchains redundantly.
2018-07-01 16:58:30 +02:00
Themaister f2cae17021 Vulkan: Try to avoid creating swapchains redundantly.
Win32: Only make resize events when needed.
Do not create swapchain unless necessary.
Deal better with Windows WSI workarounds.
2018-07-01 16:21:09 +02:00
twinaphex efe9fc7339 Buildfix 2018-07-01 16:19:10 +02:00
DEX357 bf8e5c2e90 Update msg_hash_pl.h 2018-07-01 13:40:35 +02:00
Twinaphex 928cfacb11 Merge pull request #6930 from DEX357/patch-13
Update msg_hash_pl.h
2018-07-01 13:39:11 +02:00
DEX357 ebabd9486b Update msg_hash_pl.h 2018-07-01 13:34:16 +02:00
Twinaphex c4611f6379 Merge pull request #6928 from Themaister/master
Vulkan: Support multiple displays in VK_KHR_display.
2018-07-01 01:58:28 +02:00
Themaister c4ba8d26a0 Support multiple displays in VK_KHR_display. 2018-07-01 01:21:51 +02:00
Twinaphex a3ae537c02 Merge pull request #6862 from gblues/master
WIIU: cleanups to wiiu bootstrap code
2018-06-30 14:31:22 +02:00
Twinaphex 5366fc1f29 Merge pull request #6926 from fr500/staging
Android fixes
2018-06-30 14:31:06 +02:00
radius 717e45dc52 Add mouse wheel support
enable hold to bind on android

cleanup
2018-06-29 21:12:47 -05:00
radius fef9b63bc0 Revert "Disable ENABLE_TOUCH_SCREEN_MOUSE for now until issues are resolved"
This reverts commit 2b02616512.
2018-06-29 21:12:47 -05:00
David Walters 91dd569a73 fix: keep resetting bind during the hold period 2018-06-29 21:12:46 -05:00
David Walters d73954085a Hold to bind function (disabled with #if 0) 2018-06-29 21:12:46 -05:00
David Walters 70eda90d03 more accurate rarch_timer 2018-06-29 21:12:46 -05:00
David Walters 8a2b23de34 new setting "input_bind_hold" 2018-06-29 21:12:45 -05:00
Brad Parker 04311695aa netplay: always use configured port instead of hardcoding, and don't ask for IP address if one is already set. fixes #6626 2018-06-27 23:03:27 -04:00
Brad Parker 15924e5d9b fix "runtime error: member call on null pointer of type 'struct AppHandler'" 2018-06-27 13:25:13 -04:00
Twinaphex e786afe481 Update config.def.h 2018-06-27 00:25:52 +02:00
twinaphex 8a1c0be83c (Android) Another potential buildfix; define ENABLE_HLSL
(slang_process) Put HLSL/Cg code around ENABLE_HLSL ifdef
(SPIRV-Cross) Make sure macros no longer need to be redefined; make them
unique in both glsl and hlsl files; needed for Griffin builds
2018-06-26 13:18:17 +02:00
twinaphex 3bbf34aa58 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-06-25 23:55:53 +02:00
twinaphex 0230c2f4d8 Merge commit 'a078d40b80103ba083ad04eab625084279e930b3' 2018-06-25 23:55:41 +02:00
twinaphex a078d40b80 Squashed 'libretro-common/' changes from edffe4d147..1548bee835
1548bee835 Update glsm
df7c8aebea Update glsm

git-subtree-dir: libretro-common
git-subtree-split: 1548bee835ab5fa2d120a4859ff653a5f128de1f
2018-06-25 23:55:40 +02:00
Twinaphex f88f7419d7 Merge pull request #6923 from libretro/revert-6922-revert-6882-patch-3
Revert "Revert "(wiiu) Use portlibs zlib and libpng""
2018-06-25 23:26:51 +02:00
Twinaphex 893dbc6bee Revert "Revert "(wiiu) Use portlibs zlib and libpng"" 2018-06-25 23:26:43 +02:00
Twinaphex 7bdf0fd9a6 Merge pull request #6922 from libretro/revert-6882-patch-3
Revert "(wiiu) Use portlibs zlib and libpng"
2018-06-25 22:33:53 +02:00
Twinaphex 3c6c9a8b08 Revert "(wiiu) Use portlibs zlib and libpng" 2018-06-25 22:33:45 +02:00
twinaphex 2ef56e906c Don't define this unless necessary 2018-06-25 21:52:24 +02:00
twinaphex d967cbc879 Add another ENABLE_HLSL ifdef 2018-06-25 21:51:23 +02:00
Twinaphex 0f4744bed7 Merge pull request #6921 from theheroGAC/patch-33
Update msg_hash_it.h
2018-06-25 21:40:39 +02:00
theheroGAC 8017f706d8 Update msg_hash_it.h 2018-06-25 21:38:22 +02:00
twinaphex 9d6de6b60d Buildfix for MSVC 2010 2018-06-25 19:49:41 +02:00
Twinaphex 07d226a76d Merge pull request #6882 from opendata26/patch-3
(wiiu) Use portlibs zlib and libpng
2018-06-25 18:16:59 +02:00
twinaphex 234102d475 (glslang) Buildfix for Android 2018-06-25 16:52:15 +02:00
Twinaphex e10d7d93df Merge pull request #6906 from meleu/patch-1
cheevos: support for ResetIf/PauseIf HitCount - closes #6817
2018-06-24 19:45:07 +02:00
Twinaphex 3bdc7ca352 Merge pull request #6915 from RobLoach/osd-font
freetype: Allow getting OSD Font from Assets Directory
2018-06-24 18:13:18 +02:00
Rob Loach e4fe33f437 freetype: Add comment about assets:// 2018-06-24 12:02:28 -04:00
Twinaphex 8585617f69 Merge pull request #6916 from stuartcarnie/sgc-metal
feat(Metal): font rendering
2018-06-24 17:54:37 +02:00
Rob Loach 8a96062ed0 freetype: Rename to osd-font.tff 2018-06-24 11:19:40 -04:00
Rob Loach da6b7987f1 freetype: Get DejaVuSansMono.ttf from the assets directory 2018-06-24 11:00:21 -04:00
Twinaphex 1504a9ed2d Merge pull request #6914 from DEX357/patch-12
Update msg_hash_pl.h
2018-06-24 16:20:57 +02:00
Stuart Carnie 367c15f488 feat(Metal): font rendering
* FPS and other OSD messages render correctly
* add autoreleasepool around entire render loop to avoid memory leaks
2018-06-23 23:54:23 -07:00
DEX357 e8e6f20f6c Update msg_hash_pl.h 2018-06-24 00:53:52 +02:00
Twinaphex c10aab9830 Merge pull request #6912 from stuartcarnie/sgc-metal
More metal resize, stability improvements
2018-06-24 00:28:22 +02:00
Stuart Carnie eacd52f009 fix(Metal): improve shader stability
* use MTKView, which handles layer and scaling changes automatically
  between displays
2018-06-23 13:33:27 -07:00
Stuart Carnie ee8d82dcfe add additional project files 2018-06-23 13:33:27 -07:00
meleu 536638eaf6 support for ResetIf/PauseIf HitCount 2018-06-23 17:25:16 -03:00
Jean-André Santoni 2a2e732a79 (Menu) Add a setting to hide the shutdown option 2018-06-23 12:01:13 +07:00
Jean-André Santoni ab3d8979ea (Menu) Hide overlays, rewind and latency in kiosk mode 2018-06-23 11:18:37 +07:00
twinaphex 7566e09970 Squashed 'libretro-common/' changes from c3c0facc97..edffe4d147
edffe4d147 Buildfix for 3DS - implicit declaration of isspace et al.

git-subtree-dir: libretro-common
git-subtree-split: edffe4d1470ae6b846e420392d324c1b2b14281a
2018-06-22 17:43:11 +02:00
Jean-André Santoni 6868670136 (XMB) Code cleaning 2018-06-22 22:31:06 +07:00
Jean-André Santoni 1ff15fd071 (Lakka) Flag MIDI menu as advanced 2018-06-22 22:25:07 +07:00
Jean-André Santoni bea3822331 (Lakka) Flag more settings groups with SD_FLAG_LAKKA_ADVANCED 2018-06-22 22:22:46 +07:00
Jean-André Santoni cfa53dd694 Update vscode includePath 2018-06-22 22:14:52 +07:00
twinaphex e8b0d6974d Merge commit '48cb38619ff8bbc5ff3c0df93704b3297047a8fe' 2018-06-22 15:00:02 +02:00
twinaphex 48cb38619f Squashed 'libretro-common/' changes from 999e69a9f1..c3c0facc97
c3c0facc97 whoops, cute bug
fc2866b999 no real point leaving these unimplemented, they're easy
bd1d5800db Add filestream_scanf

git-subtree-dir: libretro-common
git-subtree-split: c3c0facc97d3a4c065c72961b5ab165b99d3153c
2018-06-22 15:00:02 +02:00
twinaphex e3d406808f Merge branch 'master' of https://github.com/libretro/RetroArch 2018-06-21 21:54:34 +02:00
twinaphex 8baffb3fdf OPtionally compile hlsl files 2018-06-21 21:53:44 +02:00
Twinaphex 3df1fd7993 Update CHANGES.md 2018-06-21 10:20:31 +02:00
Twinaphex ad593a1eae Update CHANGES.md 2018-06-21 08:43:49 +02:00
Twinaphex 58351230d8 Update CHANGES.md 2018-06-21 08:39:41 +02:00
Twinaphex 511044270b Fix iOS build 2018-06-21 08:37:08 +02:00
twinaphex 3799a33efa Silence warnings 2018-06-21 08:31:08 +02:00
twinaphex 837cf84fc8 Put this around an ifdef 2018-06-21 08:26:27 +02:00
Twinaphex c0beef8365 Merge pull request #6905 from stuartcarnie/sgc-metal
fix(Metal): fix project file to include .metal resources
2018-06-21 08:25:43 +02:00
twinaphex 863204b343 Merge commit 'c68f2796b95838412610023611398d7c9968a3f3' 2018-06-21 08:22:10 +02:00
twinaphex c68f2796b9 Squashed 'libretro-common/' changes from c9b117d5b8..999e69a9f1
999e69a9f1 More warning fixes

git-subtree-dir: libretro-common
git-subtree-split: 999e69a9f1c3818b6018f39579421e7e52c6bb1b
2018-06-21 08:22:09 +02:00
twinaphex d14a3f0d1f Merge commit '5c25cc90765cbf6ad7f01c0b635c72595bc7f457' 2018-06-21 08:18:08 +02:00
twinaphex 5c25cc9076 Squashed 'libretro-common/' changes from 3d989dc968..c9b117d5b8
c9b117d5b8 Silence more warnings

git-subtree-dir: libretro-common
git-subtree-split: c9b117d5b8135acd6c175e93931f39067e7d0ec4
2018-06-21 08:18:07 +02:00
twinaphex 0d8729daa6 FIx warning 2018-06-21 08:12:02 +02:00
twinaphex 944cac8352 Squashed 'libretro-common/' changes from 156677b98e..3d989dc968
3d989dc968 Cleanups
dabdf7c539 Updates

git-subtree-dir: libretro-common
git-subtree-split: 3d989dc968fa529e91d8e8e4f42f8909451aa7a3
2018-06-21 08:07:19 +02:00
twinaphex 697531dbdd Merge commit '944cac83520c99e1ddf3d8cd3bf25990c8746d14' 2018-06-21 08:07:19 +02:00
Stuart Carnie 3462fd248c fix(Metal): fix project file to include .metal resources 2018-06-20 22:58:36 -07:00
twinaphex b05026b69f Buildfix 2018-06-21 07:56:40 +02:00
Twinaphex fd11b205da Silence bunch of warnings 2018-06-21 07:52:01 +02:00
Twinaphex 2bdffff435 Silence more warnings 2018-06-21 07:34:27 +02:00
Twinaphex 467aa30131 Cleanups 2018-06-21 07:26:05 +02:00
Twinaphex cede1e38f2 Update CHANGES.md 2018-06-21 07:09:46 +02:00
Twinaphex cd174c899a Merge pull request #6904 from stuartcarnie/sgc-apple-metal
feat(apple): Metal support for macOS
2018-06-21 06:44:03 +02:00
Stuart Carnie 411bcf8bdd feat(apple): Metal support for macOS
* includes rgui
* shader support

This is a work-in-progress and there are some bugs and visual artifacts
still to be fixed.
2018-06-20 21:33:45 -07:00
Twinaphex 1a091a83af Merge pull request #6902 from DEX357/patch-11
Update msg_hash_pl.h
2018-06-21 05:47:40 +02:00
DEX357 05464a469e Update msg_hash_pl.h 2018-06-20 19:57:44 +02:00
twinaphex b10f1faf7a Updates 2018-06-20 16:29:14 +02:00
twinaphex 8232265c8f Change MIDI submenu 2018-06-20 16:27:00 +02:00
twinaphex fb2d27931d Fix some warnings 2018-06-20 16:21:53 +02:00
twinaphex f8cad6f565 Update glslang 2018-06-20 10:47:08 +02:00
twinaphex 1f571be61d Fix warning 2018-06-20 10:24:10 +02:00
twinaphex 684b2f5722 Get rid of glslang-old 2018-06-20 10:23:00 +02:00
twinaphex abf7bf877e (glslang) Buildfix #1 2018-06-20 10:22:08 +02:00
twinaphex c15950a80c Merge commit 'db3f820301d386847befd1f43da650b2748e3e57' as 'deps/glslang-new' 2018-06-20 10:07:00 +02:00
twinaphex db3f820301 Squashed 'deps/glslang-new/' content from commit 5fe506a8ba
git-subtree-dir: deps/glslang-new
git-subtree-split: 5fe506a8ba0ce5629004d593da16db7f3f57c58b
2018-06-20 10:07:00 +02:00
twinaphex 0328298474 Squashed 'deps/SPIRV-Cross/' changes from c9516fa917..e59cc24495
e59cc24495 Merge pull request #607 from billhollings/master
ac57a30ad6 Regenerate MSL shaders to fix conflicts from merge.
ab2ea93e35 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
9b4defe202 CompilerMSL support matrices & arrays in stage-in & stage-out.
285f214071 Merge pull request #605 from KhronosGroup/unpack-regular-operations-msl
58fab58e5e Do not unpack transposed matrices.
192a882df3 Also unpack regular unary/binary operations on MSL.
dc565136fb Merge pull request #604 from KhronosGroup/fix-603
b86bd0a265 Unpack expressions when used in functions on MSL.
c5b6ba239c Merge pull request #599 from KhronosGroup/fix-295
f1e8555801 Emit matrix layouts in structs directly.
b1196f2ace Merge pull request #598 from KhronosGroup/fix-594
6bcc890e63 Sanitize underscores in general, not just for members.
6fea07f2fd Merge pull request #597 from KhronosGroup/fix-595-596-592
3a9b045dc3 Various maintenance fixes.
0a83bacf3e Merge pull request #593 from KhronosGroup/old-clang-compile
2a1ab4108b Fix compile on older clang.
6ef1c49ec0 Merge pull request #591 from KhronosGroup/fix-578
04b149feb0 Fix image load/store on cube arrays in MSL.
8bac5c09f3 Merge pull request #590 from KhronosGroup/fix-581
f65120c147 Deal with packed expressions in more scenarios.
db1ed375b0 Merge pull request #589 from KhronosGroup/fix-580
280fb93204 Add test for reading SSBO from fragment shader on MSL.
a1b3964cbd Run format_all.sh.
6b3da831be Declare read-only SSBOs as const device in MSL.
08336e7bbb Merge pull request #588 from KhronosGroup/pr-583
46bf17c5d3 Add SREM tests for HLSL/MSL.
7cba89b4a5 Add reference files for SREM.
6b144cc609 handle OpSRem
e792cd6160 no expression type for OpSRem
f1eacba244 Merge pull request #587 from zeux/master
91fd41816f Fix textureGrad compilation for legacy targets
8cc1fdbb30 Merge pull request #586 from KhronosGroup/fix-584
ba15daee33 Add support for inheriting bindings for combined image samplers.
f929c361c5 Merge pull request #577 from KhronosGroup/fix-575
bcaae84c76 Deal with scoping for Private variables.
26b887ec99 Fix atomic_compare_exchange_weak_explicit.
62c6d2d498 Merge pull request #576 from KhronosGroup/fix-574
fb7181bff1 Run format_all.sh.
c643addacd Only reflect spec constant if it actually has a constant ID.
991b655c72 Declare OpSpecConstantOp up-front on relevant targets.
0617b98613 Run format_all.sh.
3951b9456f Fix SpecConstantComposite if input is SpecConstantOp.
c74dc4578a Merge pull request #572 from KhronosGroup/vulkan-glsl-sampler-mediump
01080365fa Use mediump on images in --vulkan-semantics as well.
9d370aca58 Merge pull request #571 from KhronosGroup/fix-570
7eba247864 Handle inout properly with split access chains.
97e38bcd38 Merge pull request #569 from KhronosGroup/fix-566
b71f5dfc0c Fix split access chains for builtin arrays.
e4694a8403 Merge pull request #568 from KhronosGroup/fix-567
903b798da7 Fix GCC 8.1 build.
d3b966322d Merge pull request #565 from pmuetschard/master
aced6058b4 Don't limit GLSL identifiers with HLSL keywords.
2792f8f3f2 Merge pull request #564 from KhronosGroup/fix-563
85a8f066f4 Do not use RMW rewrite for matrices.
04f0a08cfc Merge pull request #562 from KhronosGroup/fix-561
d2df067dd4 Force recompile if we add row-major transpose functions in MSL.
7b95168c3d Do not clear spv_function_implementations on MSL.
9279750a1d Merge pull request #560 from KhronosGroup/fix-557
17be3c652f Deal with fake overloads when using combined image samplers.
e80d6e0142 Merge pull request #559 from KhronosGroup/fix-558
3187d89c31 Reduce test case ... MSL can't deal with certain unusual cases yet.
f3e810b8b3 Fix OpCompositeConstruct with arrays in MSL.
9d43e9c02a Merge pull request #556 from billhollings/master
ba1026b899 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
57213cb7ca Compiler MSL default gather offset when component specified.
1ebccb4466 Mention Wiki in README.
8f07df016b Merge pull request #555 from KhronosGroup/fix-553
7e23e69f2a Run format_all.sh.
47081f810a Fix GatherDref on GLSL.
6b478c928d Merge pull request #554 from KhronosGroup/query-fixes
40bbf6be7a Build combined dummy samplers for Query functions without sampler as well.
d93807a625 Deal with OpImageFetch without explicit LOD.
454691f434 Merge pull request #547 from KhronosGroup/op-image-usage-tracking
aaf397cd1f Fix usage tracking issue for OpImage.
bbf6b60350 Merge pull request #546 from KhronosGroup/fix-545
893ed379d5 Remove some stale test files.
cd442b9c2f Clean and fix some issues with test_shaders.py.
18958ecccb Add test for combined-sampler-reuse on GLSL.
0280800a8f Fix case where SampledImage would get flushed to temporary.
a090907607 Merge pull request #543 from KhronosGroup/fix-542
8b75e46433 Fix some formatting issues.
f56433b802 Add new tests for combined arrays of sampler + image.
a39eb4826b Combined array of images is starting to work ...
1478847122 Change AppVeyor badge link to the correct one.
d559a8df39 Add AppVeyor status badge.
dd39d36726 Merge pull request #540 from KhronosGroup/appveyor
cc82d14ee8 Add appveyor script.
d0c829b580 Add no-opt to CTest, make test_shaders.py faster when FXC is missing.
2804d9acd7 Merge pull request #539 from KhronosGroup/fix-533
e351e5c565 Use convert_to_string for lod clamp.
e30a94225f Complete MSL constexpr samplers.
64f9461d72 Check for array of samplers.
df58debf7a Add support for constexpr samplers in MSL.
3a8335eee0 Merge pull request #537 from KhronosGroup/fix-535
b9cd3dcd7f Run format_all.sh.
e930f79e2e Be a bit smarter about uint on legacy targets.
2684054bbd Merge pull request #538 from KhronosGroup/fix-io-block-location
b06c1af9b3 Distinguish between enhanced_layouts and SSO requirements.
28c9be8a23 Unsigned integers are disallowed on legacy targets.
7796a9f3ec Merge pull request #531 from KhronosGroup/subgroup
c266429be9 Partially implement subgroup ops for HLSL SM 6.0.
146ea76f52 Add test shader for subgroup.
e1ccfd5dbb Implement all of subgroup.
f6c0e53f58 Start adding Vulkan 1.1 subgroup support to GLSL.
489e04e09e Merge pull request #530 from KhronosGroup/fix-529
9c2761f69a Run format_all.sh.
8175e2e200 Fix depth compare textures when used in functions without argument.
edac731360 Merge pull request #528 from msiglreith/fix_root_constants_name
6bdd775936 Merge pull request #526 from taisei-project/strip-uniform-location
f260c452f7 Fix naming of root constants
4a43024dba Strip uniform locations for ESSL < 3.00 and GLSL < 430
9b8c2c4654 Merge pull request #524 from KhronosGroup/fix-512-523
694b314f87 Support empty structs.
31a3fdf4ee Decouple public require_extension and the internal use of the function.
d0133c5dd9 Merge pull request #509 from KhronosGroup/hlsl-semantic-counter-buffer
d8cdab2f57 Add test shader for semantic decoration.
05c66f9cac Add test shader which uses counter buffer extension.
215d3ca0a4 Add support for new HLSL semantic/counter buffer decorations.
7f84537350 Merge pull request #519 from KhronosGroup/fix-507
ac81a0ce68 Use declared binding in SPIR-V as a fallback for explicit MSL binds.
e8ca39b7b5 Add test for sampler image arrays.
382101bd05 Run format_all.sh.
1d082e9b79 Fix passing arrays of combined image samplers in HLSL.
5827dd54ea Support array of images and samplers in MSL.
81eb72a9a0 Ignore LOD when sampling 1D textures in MSL.
69ffd918a6 Merge pull request #522 from KhronosGroup/fix-515
938040be0b Only disable binding layout for UBOs.
fe697a80f5 Emit classic uniform for UBO in GLSL 1.30.
65be63fd04 Merge pull request #521 from KhronosGroup/fix-516
a6e211e00b Support dual-source blending on GLSL and MSL.
a1e30c8c2b Merge pull request #520 from KhronosGroup/fix-517
3229e6efb6 Add more illegal name replacement in MSL.
761b06bc73 Merge pull request #514 from KhronosGroup/fix-510
a901b4c814 Remove redundant temporary sort.
c1947aa447 Update glslang/SPIRV-Tools on Travis.
35f64d03bb Fix name aliasing for temporary variables.
5161d5ed3b Merge pull request #505 from KhronosGroup/msl-array-mrt
719cf9d42f Run format_all.sh.
8e90382675 Properly flatten MRT outputs in MSL.
6e6ca0b237 Attempt MRT-as-array in MSL.
fbfe13657a Merge pull request #502 from KhronosGroup/update-glslang-spirv-tools
4f348a9807 Update README and update_test_shaders.sh.
b46910e9f5 Access chain into packed vectors as arrays.
a6afda650f Add newly moved reference files.
cdbd376c42 Try building debug on Travis.
e7bf8d2f48 Refactor out noopt shaders to their own folders.
1a4a36b6cd Experiment a bit more with Travis.
5a746ba941 Split checkout and build on Travis CI.
4979d10b54 Implement packHalf2x16/unpackHalf2x16 on MSL.
ae2680c898 Make sure ballotARB inherits expression dependencies.
938c7debed Handle control-dependent temporaries.
012377f811 Refactor block IO emission to use bitset.
955eac522b Make use of the handy scripts for Travis as well.
9fbd8b789e Update tests for latest SPIRV-Tools and glslang.
e8e58844d4 Rewrite everything to use Bitset rather than uint64_t.
29315f3b3f Merge pull request #498 from JustSid/master
e66fd6c2a0 Added generation of the textureXYZGrad() legacy GLSL instruction
0f9cb0da0d Merge pull request #497 from KhronosGroup/fix-489
9a52713d77 Run format_all.sh.
a803e5ae38 Deprecate set_options()/get_options() interface, replace it.
236b2fa47c Merge pull request #496 from KhronosGroup/fix-494
e3b8e9455c Add test shader where a phi variable invalidates a temporary.
1de74fdabd Explicitly emit break/continues in selection branches.
e0efa737ca Expand the implementation of inherit_expression_dependencies.
01fbb3a342 Merge pull request #495 from KhronosGroup/fix-493
28cccc3dbb Emit complex continue blocks "properly".
54549a624f Add some test shaders for special merge methods.
8d557d4103 Handle cases where merge selects as also loop merge or continue blocks.
8c8a93f745 Merge pull request #492 from KhronosGroup/fix-488
922420e346 Disallow arrays and structs from becoming loop variables.
2e5d06d1ce Merge pull request #485 from KhronosGroup/fix-484
bdabd0c73a Disable double test in MSL FP16 tests.
723bec5d33 frexp/ldexp fails in debug builds, workaround temporarily.
0780820a7b Skip interpolateAt tests with FP16.
ac0e93f392 Run format_all.sh.
18ad1be3c3 Add FP16 test for MSL as well.
47d94ff8d9 Add FP16 to HLSL.
770ed25f29 Merge pull request #487 from KhronosGroup/fix-486
15a941cd3d Add builtin GLSL functions to blacklist.
d9da2db442 Some compat fixes for MSL and Half.
547278da12 Test denormal fp16 constants.
24dfe496c2 Run format_all.sh.
05348a66ca Add test shader for FP16 support.
bc0f698df3 Fix packing alignments for float16.
91f85d3412 Begin adding float16_t support to GLSL.
b0a2de5b63 Merge pull request #483 from KhronosGroup/fix-466
38d9d8af68 Add some more MSL test shaders.
5fe79eb59c Update tests.
294259e2f1 Fix type aliasing on MSL.

git-subtree-dir: deps/SPIRV-Cross
git-subtree-split: e59cc244958af6059f7bd1d16d833e17409dec37
2018-06-20 09:32:45 +02:00
twinaphex 4fb79dfffe Merge commit '032829847454432a4b149452d6354c13c5888239' 2018-06-20 09:32:45 +02:00
twinaphex e3d04fd14a This spams too much, disable this 2018-06-20 07:31:05 +02:00
Twinaphex cdbdd04cda Merge pull request #6901 from RobLoach/gtest-submodule
discord: Remove the gtest submodule
2018-06-20 07:24:49 +02:00
Rob Loach e45692b70d rapidjson: Remove the gtest folder 2018-06-20 00:23:15 -04:00
twinaphex 2367c33887 Mpv integration now works 2018-06-20 06:17:47 +02:00
twinaphex d27b6265a0 Add more HAVE_MPV ifdefs 2018-06-20 04:50:58 +02:00
twinaphex 0286829348 Start adding HAVE_MPV ifdefs 2018-06-20 04:29:31 +02:00
twinaphex e51d8b6b0f Update mpv-libretro.c 2018-06-20 03:53:37 +02:00
twinaphex f9f15dc5c5 Update mpv libretro core 2018-06-20 03:46:53 +02:00
Twinaphex dde650074a Update CHANGES.md 2018-06-19 14:31:49 +02:00
Twinaphex 7385cc3d23 Merge pull request #6899 from DEX357/patch-10
Update msg_hash_pl.h
2018-06-19 14:31:06 +02:00
DEX357 c7d565c6c2 Update msg_hash_pl.h 2018-06-19 14:03:48 +02:00
twinaphex c4da475384 Buildfix 2018-06-19 11:59:41 +02:00
Twinaphex 76d540a075 Merge pull request #6898 from libretro/android_susperf_setting
android: add configurable setting for Sustained Performance Mode
2018-06-19 09:30:30 +02:00
Brad Parker aa083d1e4c android: add configurable setting for Sustained Performance Mode 2018-06-19 02:50:33 -04:00
twinaphex 981b0eec91 Take this out 2018-06-19 06:28:38 +02:00
twinaphex c1f16e156e Add Power Management submenu 2018-06-19 06:23:38 +02:00
Twinaphex 48128a9b36 Merge pull request #6894 from libretro/android_susperf
android: enable sustained performance mode if supported
2018-06-19 04:41:02 +02:00
Twinaphex 1feadee0cb Merge pull request #6895 from casdevel/midi
Document MIDI interface
2018-06-18 23:53:53 +02:00
opendata26 707855beda (wiiu) add back HAVE_BUILTINZLIB but disabled by default 2018-06-18 21:41:30 +01:00
Zoran Vuckovic 8d99044fb4 Document MIDI interface 2018-06-18 21:26:10 +02:00
Brad Parker 612ed942d0 android: enable sustained performance mode if supported, bump target API to 24 2018-06-18 12:56:14 -04:00
twinaphex ca3b8149a8 MSVC 2003 buildfix 2018-06-18 05:03:26 +02:00
Twinaphex 798635bf8a Update CHANGES.md 2018-06-18 03:21:28 +02:00
twinaphex 54a95eed83 These defines are not available on Android NDK APIs lower than 24 2018-06-18 01:56:22 +02:00
twinaphex e39b92a1f0 Another buildfix 2018-06-18 01:44:17 +02:00
twinaphex 7d3f62a816 Buildfix 2018-06-18 01:35:38 +02:00
twinaphex a6b0dd9f57 Buildfixes 2018-06-18 01:05:52 +02:00
twinaphex e0405b2f5c Add MIDI to Griffin 2018-06-18 00:37:51 +02:00
Twinaphex 49f3dacde5 Merge pull request #6892 from casdevel/midi
Add MIDI support
2018-06-17 23:07:26 +02:00
twinaphex 76db13fda4 Merge commit '950525a37032877e080ee0f4455c0c4cda550d45' 2018-06-17 20:11:37 +02:00
twinaphex 950525a370 Squashed 'libretro-common/' changes from 8030c86033..156677b98e
156677b98e Update

git-subtree-dir: libretro-common
git-subtree-split: 156677b98efb626c8b4c6fe8df4730ed0a15120f
2018-06-17 20:11:36 +02:00
twinaphex fa1ec0780b Merge commit '3997b59cd652c7852f866aa11c25693fab6bbcda' 2018-06-17 20:04:50 +02:00
twinaphex 3997b59cd6 Squashed 'libretro-common/' changes from 705d72b4a3..8030c86033
8030c86033 Update
5303312e02 Update
a5507504f4 Merge pull request #80 from markwkidd/patch-2
fde3bc8334 Update libretro.h
afa570f1c0 clarify how input device subclasses are declared
4c0a96ba8a Update glsm.c
e5c75fcecb Merge pull request #78 from markwkidd/correct-path_remove_extension-desc
9713f7f66e correct path_remove_extension docs

git-subtree-dir: libretro-common
git-subtree-split: 8030c86033c7c20f554d41e009fc73f1bf4dff2d
2018-06-17 20:04:50 +02:00
Zoran Vuckovic 22d30a0dbf Fix segfault on device change 2018-06-17 18:50:27 +02:00
Twinaphex 7335db08dc Update CHANGES.md 2018-06-17 05:10:44 +02:00
Twinaphex ef1ec3131e Update CHANGES.md 2018-06-17 05:10:00 +02:00
Twinaphex 6df3597f97 Merge pull request #6881 from L0sted/master
Some russian translations
2018-06-17 02:27:05 +02:00
Twinaphex fde7796cb0 Merge pull request #6888 from bparker06/android_battery
support powerstate/battery level in Android
2018-06-17 02:26:10 +02:00
Brad Parker 7176bb19ad support powerstate/battery level in Android 2018-06-16 19:15:16 -04:00
Zoran Vuckovic b487c3cace Add MIDI support 2018-06-16 21:17:32 +02:00
opendata26 cbc804783f (wiiu) Use portlibs zlib and libpng
Zlib needed for libpng to work, used in some cores.

Signed-off-by: Craig Tatlor <[email protected]>
2018-06-15 18:53:45 +01:00
Twinaphex 9d0c0b77ee Merge pull request #6883 from fr500/master
subsystem: set the subsystem correctly
2018-06-14 23:54:18 +02:00
radius aa35b9da46 subsystem: set the subsystem correctly 2018-06-14 16:38:27 -05:00
l0sted 81e01da585 a lot of work 2018-06-14 15:48:44 +03:00
Twinaphex fd1c354811 Merge pull request #6876 from retro-wertz/patch-1
Better no log at all than showing a false log
2018-06-14 00:51:17 +02:00
l0sted a90008f7ed a lot of changes 2018-06-13 15:32:48 +03:00
l0sted 99b6757400 Latency translation 2018-06-13 13:30:01 +03:00
l0sted af02712712 Updated russian translation 2018-06-13 13:21:15 +03:00
Brad Parker 19dd1c15eb Merge branch 'master' into qt_grid 2018-06-12 20:49:50 -04:00
bparker06 ab9e00219d Add null pointer check 2018-06-11 20:28:36 -04:00
Twinaphex 890c781a76 Merge pull request #6874 from altiereslima/master
Update portuguese brazilian translation.
2018-06-11 14:48:50 +02:00
retro-wertz ce27e986e9 Better no log at all than showing a false log
This false message has been like foreve. Nobody seems interested in updating "small and minor" things. so lets just remove this....
2018-06-11 17:08:59 +08:00
altiereslima 3f04c639b4 Update portuguese brazilian translation. 2018-06-10 19:58:50 -03:00
gblues 9ea16c0b3d Updates from PR feedback (ty @aliaspider) 2018-06-07 21:16:49 -07:00
gblues 8b87a53366 Replace hokey "hooks" struct with weak symbol annotations
- Did a test build to ensure RA built
- Copied over to my FTPservU sources and ensured no compile issues there

Looks solid. A lot cleaner, too.

@aliaspider
2018-06-07 18:41:16 -07:00
Twinaphex a4144dfe9b Merge pull request #6869 from FIX94/master
(GC) ACTUALLY fix up build
2018-06-07 21:10:32 +02:00
FIX94 6ede99b47b (GC) ACTUALLY fix up build 2018-06-07 21:04:34 +02:00
hizzlekizzle 9271a7505f Merge pull request #6863 from Brunnis/xmb-thumbnails-issue
Implement fix for thumbnails not showing up in Quick Menu as well as …
2018-06-07 13:26:32 -05:00
Brad Parker ef8390dee1 Merge branch 'master' into qt_grid 2018-06-07 11:57:05 -04:00
Twinaphex a7a54800e8 Merge pull request #6868 from Themaister/master
Vulkan: Fix two validation errors.
2018-06-07 05:07:24 +02:00
Mikael Brunnhede 0813de0392 Hide thumbnails in Quick Menu sub-menus. 2018-06-06 23:48:07 +02:00
Hans-Kristian Arntzen 16c797f057 Vulkan: Fix two validation errors.
- Mipgen was only transitioning the first miplevel to GENERAL.
  Fix the image barrier helper function to transition all levels and
  layers.

- Validation layer was complaining that a VkSwapchainKHR was not
  properly destroyed. After recycling the swapchain, destroy the old
  one.
2018-06-06 23:23:32 +02:00
Twinaphex 6a9e73b7f2 Merge pull request #6865 from DEX357/patch-9
Update msg_hash_pl.h
2018-06-06 18:16:50 +02:00
DEX357 d94f9bd921 Update msg_hash_pl.h 2018-06-06 18:02:35 +02:00
Mikael Brunnhede 75330a142d Implement fix for thumbnails not showing up in Quick Menu as well as "Run" menu after closing content. Also implement fix for savestate thumbnail being hidden behind boxart/screenshot thumbnails. With this fix, boxart/screenshot thumbnails are not shown on the right hand side if there is a savestate screenshot being rendered. 2018-06-05 10:51:51 +02:00
gblues f22c337cfc WIIU: cleanup and build-out of wiiu bootstrap code
I used the code in `wiiu/` to bootstrap my own WiiU homebrew app; this
PR reflects some changes I needed to make, that might be useful upstream.

1. Clean up filesystem initialization

Filesystem driver initialization was lumped in with filesystem mounting;
and that was a problem in my project, because I needed to be able to remount
the SD card on the fly. So, now it's split up.

I've added a callback object named "hooks" that can be used by consuming
applications to handle filesystem mounting and unmounting. If these hooks are
not provided, then the existing default behavior occurs.

2. Expand socket handling

- add `SO_NONBLOCK` flag for non-blocking socket I/O
- add normal errno defines like `EWOULDBLOCK` `EAGAIN`.

3. Remove RetroArch dependencies

- the exception handler protects usage of version_git with
  `#ifdef HAVE_GIT_VERSION` but not the include, so I added that.

  It also technically depends on version.h, but I'm not touching that.
  It's easy enough to implement and I needed the same functionality. I'm
  not sure what the best solution for that dependency is.

- missing_libc_functions.c included features/features_cpu.h which is
  a libretro include. This appears to be a stale include though, because
  everything compiles and works without it.

- an ifdef referencing the RA "WIIU" define, rather than the devkitpro
  "__wiiu__" define
2018-06-05 00:06:40 -07:00
gblues 21fd83f766 Merge github:libretro/RetroArch 2018-06-04 23:38:38 -07:00
twinaphex ec718c6f71 Should only be used for Wii 2018-06-04 21:25:04 +02:00
Twinaphex 7bfe9e409a Merge pull request #6860 from meleu/patch-22
fix crash when scrolling cheevos list. fixes #6732
2018-06-04 16:31:08 +02:00
meleu 0ffe0f8513 fix crash when scrolling cheevos list. fixes #6732 2018-06-04 10:07:18 -03:00
Twinaphex 5bc7acffd5 Merge pull request #6858 from meleu/patch-22
show cheevos description on RGUI - fixes #6764
2018-06-04 03:53:39 +02:00
meleu 6040e1c0fc show cheevos description on RGUI - fixes #6764 2018-06-03 16:46:20 -03:00
Twinaphex 6ecf64d08f Merge pull request #6855 from GregorR/null-input-joypad-driver
Fix input when the joypad driver is NULL.
2018-06-02 23:04:45 +02:00
Gregor Richards af357c1afe Fix input when the joypad driver is NULL. 2018-06-01 23:22:04 -04:00
Twinaphex e4476ec61b Merge pull request #6847 from reswitched/nsw-dynamic
NSW: dynamic core loading
2018-06-02 01:39:00 +02:00
Twinaphex 861d87281e Merge pull request #6852 from theheroGAC/patch-32
Update msg_hash_it.h
2018-06-01 02:40:49 +02:00
Twinaphex ab9a9e733e Merge pull request #6853 from FIX94/patch-1
(GC/Wii) revert commit 822e2fd
2018-06-01 02:40:40 +02:00
FIX94 3f8235db28 revert commit 822e2fd
commit 822e2fd broke sd gecko mounting on gamecube, making the gamecube build unusable, reverting it makes it run fine again
2018-06-01 00:22:42 +02:00
theheroGAC 430d674b4e Update msg_hash_it.h 2018-05-31 22:45:32 +02:00
Twinaphex adaac8a8cd Merge pull request #6851 from meepingsnesroms/master
Update README.MD(Fixed)
2018-05-31 20:49:02 +02:00
meepingsnesroms c0da95559f Update README.MD(Fixed) 2018-05-31 10:26:35 -07:00
Twinaphex ad79fbe4a9 Merge pull request #6846 from GregorR/netplay-runahead-compatibility
Fix compatibility between netplay and runahead
2018-05-31 10:29:22 +02:00
Twinaphex 49c08baaa7 Merge pull request #6848 from reswitched/fix-tearing
NSW: fix tearing
2018-05-31 10:28:11 +02:00
misson20000 97994b0684 NSW: libtransistor added an ELF loader, and cores are now .so instead of .nro 2018-05-30 22:13:55 -07:00
misson20000 1ef6b1d8e4 NSW: wip dynamic support 2018-05-30 22:13:55 -07:00
Gregor Richards 2c07561fc1 Fix compatibility between netplay and runahead
Unsurprisingly, netplay and runahead are wildly incompatible; both rely
on internal rewinding, without communicating this fact to each other.
Somewhat more surprisingly, netplay already has all the infrastructure
for negative input latency, as it's structurally the same as receiving
delayed input from a peer. This patch makes the two features
"compatible" by disabling runahead per se when netplay is active, and
using runahead's configuration to adjust netplay's own input latency
feature, which is now allowed to be negative. The effect is mostly the
same (modulo the second core support), and it doesn't confuse netplay
peers.
2018-05-30 22:01:02 -04:00
misson20000 1404b63219 fix for tearing (depends on libtransistor commit cf5d0403 in v2.0.0, which is yet to be released) 2018-05-30 18:04:58 -07:00
Twinaphex 0045e1fff2 Merge pull request #6845 from DEX357/patch-8
Update msg_hash_pl.h
2018-05-30 07:20:49 +02:00
DEX357 9cf843e349 Update msg_hash_pl.h 2018-05-30 02:30:51 +02:00
twinaphex a3a047b8ec Fix Coverity warning 2018-05-29 22:01:05 +02:00
twinaphex b1ec722a75 Buildfix 2018-05-29 18:55:18 +02:00
Twinaphex 65232d3ab4 Merge pull request #6842 from gmdvieira/wayland.screensaver
Add screensaver (idle) inhibition for Wayland driver
2018-05-29 17:23:22 +02:00
hizzlekizzle 34a75ba605 Merge pull request #6578 from Stevoisiak/settings-driver-section
retroarch.cfg: Reorganize sections
2018-05-29 09:28:22 -05:00
Gustavo Maciel Dias Vieira 14c505117d Add screensaver (idle) inhibition for Wayland driver
The Wayland driver currently has no implementation for gfx_ctx_wl_suppress_screensaver. This adds a Dbus implementation using the same infrastructure used by the X11 driver.
2018-05-29 09:56:58 -03:00
twinaphex ddbc0d53c0 Add Discord Enable option to Settings -> Privacy 2018-05-29 12:41:13 +02:00
twinaphex 81ce02cf74 Put this around an ifdef 2018-05-29 12:18:31 +02:00
twinaphex 6d81d31ef5 Enable Discord setting 2018-05-29 12:18:01 +02:00
twinaphex b5f6ae7931 (Discord) Add translatable string 2018-05-29 11:14:21 +02:00
twinaphex 406342479a Change function signature of discord_update 2018-05-29 11:09:13 +02:00
twinaphex 1fb57857ea Add discord_is_inited 2018-05-29 11:06:43 +02:00
twinaphex 31e7894539 Get rid of unnecessary ifdef 2018-05-29 10:43:45 +02:00
twinaphex 8ad1ddbac5 Disable discord support for C89 2018-05-29 10:42:18 +02:00
twinaphex b4912a718f (Discord.c) Cleanups 2018-05-29 10:40:01 +02:00
twinaphex 4a035f5b22 Start adding files for Mac/Linux 2018-05-29 10:30:56 +02:00
twinaphex d488dfcafa Make these files Windows-specific 2018-05-29 10:24:17 +02:00
twinaphex e056cd8005 Disable HAVE_DISCORD for now 2018-05-29 10:22:07 +02:00
Twinaphex 2848f1f2b1 Merge pull request #6840 from fr500/master
WIP: discord-rpc support
2018-05-29 10:21:28 +02:00
radius 00bb17588d Merge commit '6e7a18a5987cbd5dec80308250062867f2cc3aad' as 'deps/discord-rpc/thirdparty/rapidjson-1.1.0' 2018-05-28 23:59:23 -05:00
radius 6e7a18a598 Squashed 'deps/discord-rpc/thirdparty/rapidjson-1.1.0/' content from commit 2fb78f9cee
git-subtree-dir: deps/discord-rpc/thirdparty/rapidjson-1.1.0
git-subtree-split: 2fb78f9cee01996f020d5af7592b37c5a0693b31
2018-05-28 23:59:23 -05:00
radius f0082d710c restore this file 2018-05-28 23:49:23 -05:00
radius 0308191f88 Merge commit 'b86df4ee09564e88f9d2c994ef9d5af75d4e7395' as 'deps/discord-rpc' 2018-05-28 23:46:51 -05:00
radius b86df4ee09 Squashed 'deps/discord-rpc/' content from commit ba9fe00c4d
git-subtree-dir: deps/discord-rpc
git-subtree-split: ba9fe00c4de1d680cdc56605d9c0d2b4cf8e7a07
2018-05-28 23:46:51 -05:00
radius d5c2bc90c1 add discord files 2018-05-28 23:46:36 -05:00
Brad Parker 8d886751b9 Merge branch 'master' into qt_grid 2018-05-28 18:16:13 -04:00
Brad Parker 8c6bc4a678 Qt: update UI after loading every 25 grid items, keep grid from mixing up content from multiple playlists if the user switches to a new one before one is finished loading 2018-05-28 18:14:36 -04:00
Twinaphex b378566cb8 Merge pull request #6837 from Dwedit/dirty_input_fix
Add bounds checking to runahead dirty input code
2018-05-28 20:19:31 +02:00
Twinaphex cdc2bdb327 Merge pull request #6835 from Dwedit/null-fix_
Fix a calloc(0) which led to uninitialized data being used later on.
2018-05-28 20:19:21 +02:00
Dwedit adbc71ce46 Change bounds to a const variable
Add one more bounds check
2018-05-28 12:14:04 -05:00
Dwedit e8b381680a reformat spaces 2018-05-28 12:04:11 -05:00
Dwedit becb6dee16 Fix out of bounds access in dirty_input code 2018-05-28 12:01:18 -05:00
Dwedit 51f7746407 reformat like the old code 2018-05-28 10:58:04 -05:00
Dwedit 8cd8e7d3ae Fix a calloc(0) which led to uninitialized data being used later on. 2018-05-28 10:54:25 -05:00
twinaphex 23b0444afe Update libretro-common 2018-05-28 17:30:56 +02:00
Twinaphex 877766d0ae Merge pull request #6834 from Dwedit/null-fix_
Fix null pointer read in action_bind_sublabel_subsystem_add
2018-05-28 17:13:08 +02:00
Dwedit 6ef5232f32 Fix null pointer read in action_bind_sublabel_subsystem_add 2018-05-28 09:37:43 -05:00
Twinaphex d00fe30f0e Merge pull request #6831 from ReRetro/master
Change Retroarch to RetroArch once again for the 3ds
2018-05-27 21:09:08 +02:00
Twinaphex 743ab2351c Merge pull request #6829 from fr500/overrides
only apply deadzone on analog to digital remapping, not analog to analog
2018-05-27 21:08:52 +02:00
Yarsan Hoessain 99c074e275 Change Retroarch to RetroArch once again for the 3ds 2018-05-27 20:21:41 +02:00
radius c2c5265916 only apply deadzone on analog to digital remapping, not analog to analog 2018-05-27 11:58:52 -05:00
Twinaphex 3a96314bfd Merge pull request #6828 from DEX357/patch-7
Update msg_hash_pl.h
2018-05-26 09:50:36 +02:00
DEX357 9af767163f Update msg_hash_pl.h 2018-05-26 00:55:55 +02:00
alphanu1 488d142ebf Merge pull request #75 from alphanu1/alphanu1-patch-71
Black screen fix
2018-05-25 12:27:43 +01:00
alphanu1 7c50550fc3 Black screen fix 2018-05-25 12:26:11 +01:00
Twinaphex 06aab60307 Merge pull request #6827 from alphanu1/master
Porch adjust to fix aspect and 240p menu for CRT
2018-05-25 12:21:04 +02:00
alphanu1 05cf6fa114 Merge pull request #74 from alphanu1/alphanu1-patch-70
Porch adjust to fix aspect
2018-05-25 10:58:59 +01:00
alphanu1 b4996e6d41 Porch adjust to fix aspect 2018-05-25 10:58:43 +01:00
alphanu1 31919e9a61 Merge pull request #73 from alphanu1/alphanu1-patch-69
240p menu for CRT
2018-05-25 10:57:47 +01:00
alphanu1 e6b2f5a734 240p menu for CRT 2018-05-25 10:57:32 +01:00
alphanu1 a002297f37 Merge pull request #72 from alphanu1/alphanu1-patch-68
update
2018-05-25 10:56:46 +01:00
alphanu1 f99540e9d0 update 2018-05-25 10:56:22 +01:00
alphanu1 9c03f99eb9 Merge pull request #71 from alphanu1/alphanu1-patch-67
update
2018-05-25 10:55:54 +01:00
alphanu1 23ec5eed84 update 2018-05-25 10:55:15 +01:00
alphanu1 8a5dce2d25 Merge pull request #70 from alphanu1/alphanu1-patch-66
Porch adjust to fix aspect
2018-05-25 10:49:48 +01:00
alphanu1 a98ce80df0 Porch adjust to fix aspect 2018-05-25 10:49:28 +01:00
alphanu1 0ecd571d0f Merge pull request #69 from alphanu1/alphanu1-patch-65
240p menu for CRT
2018-05-25 10:43:26 +01:00
alphanu1 e20e0b1cfd 240p menu for CRT 2018-05-25 10:42:57 +01:00
alphanu1 f9fb5ae659 Merge pull request #68 from libretro/master
update
2018-05-25 10:41:38 +01:00
Twinaphex 25fbcb33e5 Merge pull request #6821 from reswitched/master
NSW: fix analog sticks
2018-05-24 10:41:49 +02:00
misson20000 dd0ad28818 NSW: fix analog sticks 2018-05-24 00:18:38 -07:00
Twinaphex 1b7fb1530a Merge pull request #6820 from altiereslima/master
Update Portuguese Brazilian Translation #2
2018-05-22 04:03:16 +02:00
altiereslima b2303b8ef4 Update Portuguese Brazilian Translation #2 2018-05-21 22:56:25 -03:00
Twinaphex a5b877b142 Merge pull request #6812 from altiereslima/master
Update Portuguese Brazilian Translation
2018-05-21 04:12:09 +02:00
Twinaphex 62bf39316f Merge pull request #6811 from alfrix/spanish
Fix build
2018-05-21 04:12:01 +02:00
altiereslima 1530d6ce3e Update Portuguese Brazilian Translation 2018-05-20 22:56:03 -03:00
Alfrix 82a869b142 Fix build 2018-05-20 22:51:05 -03:00
Twinaphex 3c49c8c856 Merge pull request #6807 from markwkidd/master
Improve text for existing menu item -- "Save Game-options file"
2018-05-21 03:03:18 +02:00
Twinaphex 73287af8e4 Merge pull request #6808 from DEX357/patch-5
Update msg_hash_pl.h
2018-05-21 03:02:52 +02:00
Twinaphex 6f1a80dafe Merge pull request #6809 from DEX357/patch-6
Update msg_hash_pl.h
2018-05-21 03:02:46 +02:00
Twinaphex 430a79da5a Merge pull request #6810 from alfrix/spanish
Spanish Update
2018-05-21 03:02:36 +02:00
Alfrix 056664ee7d Update Spanish 2018-05-20 19:56:58 -03:00
DEX357 5313aca11d Update msg_hash_pl.h 2018-05-21 00:04:16 +02:00
DEX357 0a45468af9 Update msg_hash_pl.h
missing entries
2018-05-20 23:48:50 +02:00
markwkidd b2c767ee22 provide a verb for the Save Game-option command
Signed-off-by: markwkidd <[email protected]>
2018-05-20 15:30:26 -05:00
Twinaphex 58e13ab6ca Merge pull request #6802 from DEX357/patch-4
Update msg_hash_pl.h
2018-05-20 17:39:28 +02:00
DEX357 64c6f88512 Update msg_hash_pl.h
amendments
2018-05-20 15:10:10 +02:00
Twinaphex dec45f0963 Merge pull request #6800 from DEX357/patch-3
Update msg_hash_pl.h
2018-05-20 08:00:22 +02:00
Twinaphex 463348cb2e Merge pull request #6801 from meepingsnesroms/master
Update the 3ds build system to match new core format
2018-05-20 08:00:13 +02:00
gblues 10ae93153a Merge github:libretro/RetroArch 2018-05-19 18:54:34 -07:00
meepingsnesroms f3bad8b3e2 Fix salamander for 3dsx build 2018-05-19 11:42:08 -07:00
meepingsnesroms 51b9b69828 Finish buildbot fixes 2018-05-19 11:35:12 -07:00
meepingsnesroms f59913ab04 Remove tab 2018-05-19 10:03:57 -07:00
meepingsnesroms 6c1e865d28 Make build system match core format 2018-05-19 09:59:47 -07:00
DEX357 702dc1bb80 Update msg_hash_pl.h
Further corrections and omissions.
2018-05-19 18:49:16 +02:00
Twinaphex 31c5cc9269 Update CHANGES.md 2018-05-19 16:50:16 +02:00
Twinaphex 30a37af792 Merge pull request #6798 from meepingsnesroms/master
Add another error handler, fix variable name formatting
2018-05-19 16:23:30 +02:00
Twinaphex d42d9efd32 Merge pull request #6797 from DEX357/patch-2
Update msg_hash_pl.h
2018-05-19 16:23:07 +02:00
meepingsnesroms 5b2ec62a41 Add another error handler, fix variable name formatting 2018-05-18 17:39:11 -07:00
DEX357 496fbc1f50 Update msg_hash_pl.h
minor grammar changes
2018-05-19 01:42:49 +02:00
twinaphex c7c1983c91 Update d3d9_set_pixel_shader 2018-05-18 20:43:12 +02:00
twinaphex eac9ce1818 Refactor load_program 2018-05-18 08:49:52 +02:00
twinaphex 9dea722c39 Update portion of dr_flac.h that was problematic on
certain systems
2018-05-18 05:32:07 +02:00
twinaphex 2bda59b8e4 (platform_unix.c) Get rid of some warnings 2018-05-18 05:17:13 +02:00
Twinaphex 6a291e0240 Merge pull request #6794 from alfrix/spanish
Spanish Update
2018-05-18 04:09:28 +02:00
Alfrix d604239f00 Update Spanish 2018-05-17 21:28:18 -03:00
Ramiro Morales 421c191049 Update Spanish translation (msg_hash_es.h).
Changes were generated by the following workflow:

1. .h -> .po conversion
2. Translation edit using a tool that supports gettext .po file format.
   e.g. poedit, dedicated modes of Emac, Vim, other editors
3. .po -> .h conversion

Steps 1 and 3 are handled by using WIP tool at

https://github.com/ramiro/RetroArch/blob/manage-i18n-with-gettext-tools/tools/intl.py
2018-05-17 21:09:00 -03:00
twinaphex 3c1c6758c7 Update 2018-05-18 01:38:45 +02:00
Twinaphex a36685d31f Merge pull request #6793 from alfrix/polish
Update Polish (@DEX357)
2018-05-18 01:16:48 +02:00
Alfrix 8014f10da4 Update Polish (DEX357) 2018-05-17 20:10:19 -03:00
twinaphex ce79ff79d2 Cleanups 2018-05-18 01:10:13 +02:00
twinaphex db184a470b Cleanups 2018-05-18 00:51:45 +02:00
twinaphex c9de823e38 (D3D9 HLSL) Start getting rid of old code 2018-05-18 00:46:39 +02:00
twinaphex d457256bda (D3D9 HLSL) More work hooking up the stock shader(D3D9 HLSL) More work
hooking up the stock shader(D3D9 HLSL) More work hooking up the stock
shader(D3D9 HLSL) More work hooking up the stock shader(D3D9 HLSL) More
work hooking up the stock shader(D3D9 HLSL) More work hooking up the
stock shader(D3D9 HLSL) More work hooking up the stock shader(D3D9 HLSL)
More work hooking up the stock shader(D3D9 HLSL) More work hooking up
the stock shader
2018-05-18 00:36:51 +02:00
twinaphex 48b9506299 (HLSL) Implement renderchain_add_pass 2018-05-18 00:27:07 +02:00
twinaphex 076a8a6a97 (D3D9 HLSL) Updates 2018-05-18 00:24:19 +02:00
twinaphex 5a84170efe Simplify d3d9_hlsl_load_program 2018-05-18 00:19:02 +02:00
twinaphex c4a38f24d1 Refactor D3D9 HLSL 2018-05-18 00:17:47 +02:00
twinaphex 991882cbd6 Create d3d9_hlsl_bind_program 2018-05-17 23:25:43 +02:00
twinaphex 8fadef7082 Update d3d9_set_vertex_shader 2018-05-17 23:23:17 +02:00
twinaphex 1d67334323 Expand d3d9_cg_bind_program 2018-05-17 23:20:13 +02:00
twinaphex 9adedbc01a Create d3d9_cg_bind_program 2018-05-17 22:57:16 +02:00
twinaphex eb27d014e8 Cleanups 2018-05-17 22:50:37 +02:00
twinaphex f7b1007995 Move mvp_val to hlsl_renderchain 2018-05-17 22:46:51 +02:00
twinaphex 671be3c372 Cleanup d3d9_cg_load_program 2018-05-17 22:40:46 +02:00
twinaphex c412e2ec97 (Cg renderchain) Refactor vStock/fStock 2018-05-17 22:38:17 +02:00
twinaphex 3b7a1a8a73 Make hlsl_load_program more like Cg version 2018-05-17 22:30:57 +02:00
twinaphex 0df8ca030f Cleanups 2018-05-17 22:22:10 +02:00
twinaphex c67dc034e9 Add vtable/ftable to shader_pass 2018-05-17 22:14:23 +02:00
twinaphex 34c5c84706 Cleanups 2018-05-17 21:43:27 +02:00
twinaphex be9f643edb Get rid of hlsl->dev 2018-05-17 21:26:11 +02:00
twinaphex cabe5c6686 Uncomment d3d9_hlsl_renderchain_set_params for state tracker 2018-05-17 21:11:43 +02:00
twinaphex d946cf1ee5 Create common set vertices function 2018-05-17 21:07:44 +02:00
twinaphex 2011453340 Cleanups 2018-05-17 20:50:32 +02:00
twinaphex 9d6777a87f Rewrite set_shader_params to be nearly identical to Cg renderchain 2018-05-17 20:45:26 +02:00
twinaphex 6c392d3863 Cleanups 2018-05-17 20:31:16 +02:00
twinaphex 70074010e0 Cleanups 2018-05-17 20:15:47 +02:00
twinaphex aec7ce3f4e Update 2018-05-17 20:01:20 +02:00
twinaphex ebc2cc6d5b (HLSL) Cleanup log messages 2018-05-17 19:57:07 +02:00
twinaphex cc1f503f57 (HLSL) Further cleanups 2018-05-17 19:55:08 +02:00
twinaphex 9adc4d4a2f Another cleanup 2018-05-17 19:48:16 +02:00
twinaphex 0de7e7bf46 Cleanups 2018-05-17 19:47:22 +02:00
twinaphex bef7b481c6 Refactor more D3D9 HLSL renderchain code 2018-05-17 19:33:47 +02:00
twinaphex 5bb1b2ef7c Start refactoring HLSL code - constant table parameter setters 2018-05-17 19:26:52 +02:00
twinaphex da53ddc99b Create d3d9_hlsl_get_constant_by_name 2018-05-17 19:13:39 +02:00
twinaphex 18b176c1ea Rename functions 2018-05-17 19:03:13 +02:00
twinaphex 3b7414bc4b (Cg) Some refactors 2018-05-17 18:56:12 +02:00
twinaphex d28aad6372 Rename hlsl_compile_program 2018-05-17 18:46:57 +02:00
Twinaphex 2a0fda0845 Merge pull request #6791 from Dwedit/fix-reset-command
Fix the reset command not closing the menu
2018-05-17 18:41:14 +02:00
Twinaphex 380308d7d0 Merge pull request #6792 from Tatsuya79/patch-1
Disable gl hard sync in menu
2018-05-17 18:40:36 +02:00
twinaphex fe1d3306af Cleanups 2018-05-17 18:20:36 +02:00
twinaphex a9cede28b4 remove some Cg references from log messages 2018-05-17 18:03:18 +02:00
twinaphex 08425d978c Create d3d9_renderchain_destroy_passes_and_luts 2018-05-17 17:59:42 +02:00
twinaphex c022190895 Cleanups 2018-05-17 17:52:44 +02:00
twinaphex 041d51b8d1 Cleanups 2018-05-17 17:50:33 +02:00
twinaphex f8b7104ef2 Move more common code to d3d9_renderchain.h 2018-05-17 17:38:42 +02:00
twinaphex a024da61f4 More code de-duplication 2018-05-17 17:27:56 +02:00
twinaphex e01a028e24 Move add_lut_internal to d3d9_renderchain.h 2018-05-17 17:25:46 +02:00
Tatsuya79 e96463645d Disable gl hard sync in menu 2018-05-17 17:24:10 +02:00
twinaphex c46d84b799 Create d3d9_renderchain_add_lut 2018-05-17 17:23:53 +02:00
twinaphex 6d2b5c8052 Move read_viewport function back to d3d9.c 2018-05-17 17:17:08 +02:00
twinaphex ad3cedfff1 Create d3d9_init_renderchain 2018-05-17 17:15:04 +02:00
twinaphex ea5e4e9ae4 Create struct D3D9Vertex 2018-05-17 17:10:44 +02:00
twinaphex 30b6366158 (d3d9_cg_renderchain.c) Reuse same struct 2018-05-17 17:09:23 +02:00
twinaphex 45f409b022 Start using shader_pass struct 2018-05-17 16:52:12 +02:00
twinaphex d369cde6c6 (Cg renderchain) Cleanups 2018-05-17 16:50:02 +02:00
Dwedit af2f679ff5 Fix the reset command not closing the menu 2018-05-17 09:49:45 -05:00
twinaphex bc59b0345d Start unifying the structs across the two renderchains 2018-05-17 16:42:27 +02:00
twinaphex 517e42c9c7 Pass d3d pointer to set_mvp 2018-05-17 05:46:49 +02:00
twinaphex 8161add9e4 (D3D renderchains) Updates 2018-05-17 05:36:56 +02:00
twinaphex 7afad7a84b Add start/end render 2018-05-17 04:19:35 +02:00
twinaphex fef586b887 Comment out align texels for now 2018-05-17 02:21:40 +02:00
twinaphex 8686c5e037 (HLSL) Use HLSLVertex everywhere in the file 2018-05-17 02:18:57 +02:00
twinaphex 91fc81e76a (D3D9 HLSL) Prevents crash with game frame 2018-05-17 02:17:47 +02:00
twinaphex 62a2af1848 (HLSL) Update set_vertices 2018-05-17 02:16:19 +02:00
twinaphex a999bff175 Cleanups 2018-05-17 02:07:15 +02:00
twinaphex 47551cec84 (HLSL) set_vertices - more work 2018-05-17 02:01:32 +02:00
Twinaphex bc0185c313 Merge pull request #6782 from meepingsnesroms/master
Make 3DS launch cores like a normal system
2018-05-17 01:34:48 +02:00
meepingsnesroms 1bd25a6f12 Fix pointer type 2018-05-16 16:28:32 -07:00
meepingsnesroms ce0d8bb5e0 Remove quote parsing 2018-05-16 16:26:38 -07:00
meepingsnesroms 8617690499 Fix tab where spaces should be 2018-05-16 10:41:25 -07:00
twinaphex 47f3855e1b Cleanups 2018-05-16 16:06:00 +02:00
twinaphex 4b5ea2877e Cleanups 2018-05-16 16:03:22 +02:00
twinaphex efbfe85da4 Cleanups 2018-05-16 15:58:46 +02:00
twinaphex 3aba080434 Integrate HLSL code into d3d9_hlsl_renderchain.c 2018-05-16 15:52:11 +02:00
Twinaphex 1e44b4f9e7 Merge pull request #6784 from Tatsuya79/patch-9
call input_remapping_set_defaults before loading a new remap
2018-05-16 14:53:12 +02:00
Tatsuya79 dd3c9dd838 call input_remapping_set_defaults before loading a new remap 2018-05-16 13:30:57 +02:00
meepingsnesroms 9e51d41fea Fix last null terminator not being added to cia argv 2018-05-15 18:11:47 -07:00
meepingsnesroms 756db4f264 Fix broken path handling when launching a core with a file or with spaces 2018-05-15 11:46:13 -07:00
meepingsnesroms 052de6bcd2 3ds now has proper core launching 2018-05-15 10:30:34 -07:00
twinaphex 2d540264e8 Start hooking up set_shader_mvp function 2018-05-15 06:02:10 +02:00
twinaphex 6afd100d2f (D3D9 HLSL) Add calc_and_set_shader_mvp 2018-05-15 05:53:15 +02:00
twinaphex 52fcdd183a (HLSL) Add more functions 2018-05-14 23:14:26 +02:00
twinaphex 5cba3f0b25 (D3D) Updates 2018-05-14 22:24:02 +02:00
twinaphex 9e63b108ae Cleanups 2018-05-14 22:20:26 +02:00
twinaphex 8361922034 Cleanup 2018-05-14 22:07:07 +02:00
twinaphex c0cd08fa11 Cleanups 2018-05-14 22:01:21 +02:00
twinaphex 4e572d6f87 Simplify calc_and_set_shader_mvp 2018-05-14 21:54:28 +02:00
twinaphex e1368a9209 (Cg D3D9) Buildfix 2018-05-14 21:42:14 +02:00
twinaphex 39f45a17d2 create d3d9_convert_geometry 2018-05-14 21:32:14 +02:00
twinaphex c941b4e922 Update D3D9 HLSL code 2018-05-14 21:26:52 +02:00
twinaphex f37f8a1076 (HLSL renderchain) Refactor code 2018-05-14 21:10:14 +02:00
twinaphex dc61c08006 Cleanups 2018-05-14 20:50:02 +02:00
twinaphex 15f2cde260 (HLSL) Start adding renderchain code 2018-05-14 20:42:28 +02:00
twinaphex 111aeb46b3 Make blit_texture a generic function used by both Cg and HLSL
renderchains
2018-05-14 19:11:45 +02:00
twinaphex c1d949b017 Rename pass_vector_list to cg_pass_vector_list 2018-05-14 18:48:47 +02:00
twinaphex 8a607e72af (D3D9 Cg) Cleanups 2018-05-14 18:46:06 +02:00
twinaphex e646366fd4 Cleanups 2018-05-14 18:42:53 +02:00
twinaphex e8ae1e324f Cleanups 2018-05-14 18:40:36 +02:00
twinaphex 7a9bfa52b0 Add comments 2018-05-14 17:51:50 +02:00
Twinaphex fd4aca1654 Merge pull request #6779 from fr500/overrides
blacklist some settings from overrides
2018-05-14 17:50:15 +02:00
twinaphex e9054159ec Remove set_font_rect callback 2018-05-14 16:57:34 +02:00
radius ecedf8b995 blacklist some settings from overrides 2018-05-13 23:58:55 -05:00
twinaphex bf3122329b (D3D9) Buildfixes 2018-05-14 06:37:01 +02:00
twinaphex 232d3f4d92 Take out add_state_tracker function callback for D3D9 renderchain 2018-05-14 06:33:51 +02:00
Twinaphex dad1e9e52a Merge pull request #6775 from fr500/overrides
WIP: override, presets & remap improvements
2018-05-14 06:23:10 +02:00
twinaphex e5ec7d0fda (Menu) Cut down on some code duplication 2018-05-14 06:18:57 +02:00
radius f81ea09f20 add saving, deletion options for per-dir remaps 2018-05-13 23:17:44 -05:00
radius 0a0365e49a add menu entries 2018-05-13 22:33:06 -05:00
twinaphex 94955eb3b5 (D3D8) Do less casting 2018-05-14 05:14:26 +02:00
twinaphex 2c5112f3ac Cleanups 2018-05-14 05:07:12 +02:00
radius 16c33b4f42 add remap saving, add new variables 2018-05-13 22:05:19 -05:00
radius 908d9b315b overrides: improve 43220c088a a bit 2018-05-13 22:05:18 -05:00
nosh01 9b57b3658d config_load_override() allow override configs to be loaded that match the content parent path name 2018-05-13 22:05:18 -05:00
twinaphex c40c08375c (d3d9_common.h) Cleanups 2018-05-14 05:04:45 +02:00
twinaphex cbe4c78979 (D3D8/D3D9) Cleanups 2018-05-14 04:55:33 +02:00
twinaphex 606d700bf2 No more D3D8/D3D9 header includes in d3d_common.c 2018-05-14 04:36:08 +02:00
twinaphex 8733a41e58 (d3d_common.c) Get rid of these header includes 2018-05-14 04:00:27 +02:00
twinaphex 6a9b39da3f Get rid of d3d.h and xdk_defines.h 2018-05-14 03:57:27 +02:00
twinaphex 5fe6c74b51 Remove this 2018-05-14 03:47:13 +02:00
twinaphex d1c1e4e2aa Move D3D9_DECL_FVF_TEXCOORD to d3d9_common.h 2018-05-14 03:17:26 +02:00
twinaphex 86c7e7c69f (D3D9) Uniquely name 'Pass' for cg renderchain; some more work on HLSL 2018-05-14 03:12:09 +02:00
twinaphex 1de6bf550b (D3D renderchains) Cleanups/unifications 2018-05-14 03:06:19 +02:00
twinaphex 8beed4c1ec (360) Buildfix 2018-05-14 01:50:58 +02:00
twinaphex 1a55d4309c Fix --disable-cheevos 2018-05-14 01:44:08 +02:00
twinaphex 7617e3efd2 Fix Coverity error - forgot a break 2018-05-14 01:38:24 +02:00
Twinaphex 155c48d7fe Update CHANGES.md 2018-05-14 01:14:28 +02:00
twinaphex 2dae506e88 (MSVC2003) Buildfix 2018-05-14 01:11:47 +02:00
Twinaphex 64e9cb1f5e Update CHANGES.md 2018-05-14 01:09:06 +02:00
Twinaphex b8233c15ae Merge pull request #6776 from altiereslima/master
Update Portuguese Brazilian translation.
2018-05-14 01:07:33 +02:00
twinaphex aea89bfde3 Cleanups 2018-05-14 00:37:03 +02:00
twinaphex 34eb78ad78 Silence some warnings 2018-05-14 00:35:01 +02:00
twinaphex 8a78b69689 Buildfix 2018-05-14 00:31:58 +02:00
twinaphex 45cd860835 Cleanup variables never used 2018-05-14 00:30:30 +02:00
twinaphex 2fdd4444ff Get rid of unintentional typedef redefinition (C11 feature) 2018-05-14 00:29:20 +02:00
Twinaphex d0a697ebf0 (MacOS) Another buildfix 2018-05-14 00:23:05 +02:00
Twinaphex f3f0c6b1d1 One buildfix 2018-05-14 00:21:08 +02:00
twinaphex 599937cc4f Make separate xcodeproj 2018-05-14 00:17:17 +02:00
altiereslima 693d12a67a Update Portuguese Brazilian translation. 2018-05-13 19:15:00 -03:00
Twinaphex 0174e45026 Merge pull request #6667 from fr500/master
cheevos fixes and additions
2018-05-13 21:48:29 +02:00
twinaphex 96e1b862f6 (Vulkan) Update headers - use C comments 2018-05-13 21:42:02 +02:00
twinaphex 7a88fafdb0 Cleanup 2018-05-13 21:36:57 +02:00
Stuart Carnie 789933b333 wip: add Vulkan support to Apple platforms 2018-05-13 21:35:23 +02:00
Stuart Carnie 0a4ff225be Update Vulkan 2018-05-13 21:35:18 +02:00
Twinaphex 0d7d844462 Merge pull request #6774 from sergiou87/fix-keyboard-mapping
Fix the way offsets are calculated for keyboard remapping
2018-05-13 21:32:40 +02:00
radius b25a2b49c4 move pause entry to achievements menu 2018-05-13 14:26:38 -05:00
radius f3c29b43eb disable cheevos_hardcore_paused on contant load 2018-05-13 13:40:30 -05:00
radius aa86d78183 add quick menu action to pause / resume hardcore mode for current session 2018-05-13 13:40:30 -05:00
radius 1037093d45 cleanup cheevos hardcore conditions 2018-05-13 13:40:30 -05:00
radius 7216726664 add cheevos_hardcore_active, cleanup whitespaces 2018-05-13 13:40:29 -05:00
radius 504317ac7e cheevos fixes, reenable menu entries if cheevos are disabled on the fly 2018-05-13 13:40:29 -05:00
twinaphex 605d88751f (HLSL) Remove XBOX ifdef 2018-05-13 19:35:20 +02:00
twinaphex 64f2efe567 Cleanups 2018-05-13 19:03:09 +02:00
twinaphex bcedf74fe4 (D3D renderchains) Cleanups 2018-05-13 18:59:57 +02:00
twinaphex 380fa6fd5e Updates 2018-05-13 18:51:05 +02:00
twinaphex 85da5360d2 (D3D9) Update 2018-05-13 18:47:24 +02:00
twinaphex 34149e510e (D3D9) Cleanups 2018-05-13 18:36:17 +02:00
twinaphex 33d2c2d422 (D3D9) Cleanups 2018-05-13 18:33:16 +02:00
twinaphex 46f23f9fbd Get rid of d3d_video_viewport 2018-05-13 18:24:19 +02:00
twinaphex 53446cc0c8 (D3D9 renderchains) Cleanups 2018-05-13 18:11:48 +02:00
twinaphex c6cc2c930c Create d3d9_log_info 2018-05-13 18:01:09 +02:00
twinaphex 8ecfd367ff Backport shader log info 2018-05-13 17:57:48 +02:00
Steven M. Vascellaro 5ff7cc6a4c Comment out background color settings 2018-05-13 11:54:22 -04:00
twinaphex 770b39e769 (HLSL) Buildfixes 2018-05-13 17:28:40 +02:00
twinaphex 3d7eaee7c9 (menu display driver) Cleanups to bind_texture 2018-05-13 14:43:40 +02:00
twinaphex 659d8a4ec6 (GL) Cleanups 2018-05-13 14:34:41 +02:00
twinaphex 5bde17025a Move min_filter_to_mag to gl_common.h 2018-05-13 14:24:49 +02:00
twinaphex c88a7545a3 (menu display drivers) Cleanups 2018-05-13 14:15:04 +02:00
Sergio Padrino Recio 35b709768d Fix the way offsets are calculated for keyboard remapping 2018-05-13 13:34:36 +02:00
twinaphex 08820b5245 Cleanup gl_update_input_size 2018-05-13 06:43:24 +02:00
twinaphex 1f944afff7 (GL) Cleanups 2018-05-13 06:34:15 +02:00
twinaphex 999f1db694 Cleanup 2018-05-13 06:30:13 +02:00
twinaphex 41295ef7b9 Remove viewport_info callback from D3D9 renderchain interface 2018-05-13 06:29:17 +02:00
twinaphex 27170674a5 (D3D9) Cleanups 2018-05-13 06:22:12 +02:00
twinaphex dee50349ba Rename d3d_renderchain_driver to d3d9_renderchain_driver 2018-05-13 06:03:26 +02:00
twinaphex 494ddb16d9 Get rid of viewport_info callback function - was the same for both
GL1 and GL2 renderchains
2018-05-13 05:56:44 +02:00
twinaphex 6996e72b49 Move renderchain driver interface to gl_common.h - and replace
some void pointers in function callbacks with gl_t
2018-05-13 05:53:35 +02:00
Twinaphex 3773482883 Update CHANGES.md 2018-05-13 05:29:56 +02:00
Twinaphex 5e7ea8de19 Merge pull request #6772 from Dwedit/env-hook-fix
Fix full-screen mode change breaking Secondary Core's environment variables
2018-05-13 05:29:28 +02:00
Dwedit a03ccae2ae fix error 2018-05-12 22:19:42 -05:00
Dwedit 432b320775 Fix full-screen mode change breaking Secondary Core's environment variables
* RunAhead: Remove Environment Hook from primary core
* Modify core option manager to trigger setting the secondary core's dirty environment flag
* RunAhead: Make secondary core's hook support that change, so it can turn off the dirty environment flag after reading a setting.
2018-05-12 22:11:49 -05:00
twinaphex 7c90933e3a (GL1 renderchain) Updates 2018-05-13 02:44:54 +02:00
twinaphex 1763b8ad55 (GL1 renderchain) Get rid of bind_prev_texture 2018-05-13 02:41:31 +02:00
twinaphex ad2290df43 Update gl1_renderchain.c 2018-05-13 02:33:15 +02:00
twinaphex be502a39fd Cleanups 2018-05-12 19:24:04 +02:00
twinaphex 58ac7c320e (dxgi_common.c) Add more __WINRT__ ifdefs 2018-05-12 19:22:37 +02:00
twinaphex cc5393e54d (WinRT) Add more WINRT ifdefs 2018-05-12 19:17:23 +02:00
twinaphex bf76005618 (WinRT) Add more __WINRT__ ifdefs 2018-05-12 19:14:49 +02:00
twinaphex 542294900f (WinRT) More compilation fixes 2018-05-12 19:03:39 +02:00
twinaphex 75aea82256 Squashed 'libretro-common/' changes from 71b08aa6b3..705d72b4a3
705d72b4a3 Merge pull request #74 from markwkidd/patch-1
3a06bdd07a update description of the "save" directory

git-subtree-dir: libretro-common
git-subtree-split: 705d72b4a30f8096118df443246c6e5c9e1f7e99
2018-05-12 18:07:47 +02:00
twinaphex 04a4578435 Merge commit '75aea8225637bb47e44543ed624f5861cb27c204' 2018-05-12 18:07:47 +02:00
twinaphex 6ff58826d8 Squashed 'libretro-common/' changes from b1f9a44ebb..71b08aa6b3
71b08aa6b3 Add missing files

git-subtree-dir: libretro-common
git-subtree-split: 71b08aa6b3660e21afd8024a1da4d5a9c844e1e4
2018-05-12 18:05:31 +02:00
twinaphex dd7ac99f27 Merge commit '6ff58826d8725e4e8788c22706de8b25cc89a4c2' 2018-05-12 18:05:31 +02:00
twinaphex 9d5472cecf Merge commit '37aad93a58efba6c340e13aa1d83ddf2df762b3d' 2018-05-12 18:03:49 +02:00
twinaphex 37aad93a58 Squashed 'libretro-common/' changes from 377cef30fa..b1f9a44ebb
b1f9a44ebb Add missing headers

git-subtree-dir: libretro-common
git-subtree-split: b1f9a44ebbf488debc0f5ef2c817d9c4f72f7153
2018-05-12 18:03:48 +02:00
twinaphex 768ebbfdb5 Merge commit 'ce9ce1d35387ef8144e53bf071396fa075bfb6c5' as 'libretro-common' 2018-05-12 17:56:34 +02:00
twinaphex ce9ce1d353 Squashed 'libretro-common/' content from commit 377cef30fa
git-subtree-dir: libretro-common
git-subtree-split: 377cef30faf410724141b280665db1b6b82cbc7b
2018-05-12 17:56:33 +02:00
twinaphex 0548349991 Remove libretro-common 2018-05-12 17:56:14 +02:00
Twinaphex ed2ed873b8 Update CHANGES.md 2018-05-12 16:29:07 +02:00
Twinaphex f658bea4cd Merge pull request #6768 from theheroGAC/patch-31
Update msg_hash_it.h
2018-05-12 01:59:58 +02:00
Steven M. Vascellaro ae47b1f505 Revert "Fix variable names for 'video_msg'"
This reverts commit 5061bc5a65.
2018-05-11 19:55:07 -04:00
alphanu1 7da1813554 Merge pull request #67 from alphanu1/alphanu1-patch-64
fix
2018-05-11 22:22:24 +01:00
alphanu1 dcc87f4557 fix 2018-05-11 22:21:52 +01:00
theheroGAC f22cc9f2dd Update msg_hash_it.h 2018-05-11 13:28:31 +02:00
Twinaphex 5abdf50c04 Update CHANGES.md 2018-05-11 04:24:44 +02:00
Twinaphex b0aab23fd1 Merge pull request #6719 from Brunnis/autohide-configuration-override-options
Automatically hide "Configuration Override options" in Quick Menu
2018-05-11 04:14:21 +02:00
Twinaphex d2e1698426 Merge pull request #6765 from SuperrSonic/master
(GX) Changes to gx_gfx
2018-05-11 01:43:52 +02:00
Diego A 3b738e0b2d Always enable vfilter, enable deflicker setting in progressive scan, fix vsync set to off 2018-05-10 18:44:22 -04:00
Twinaphex c3c50bae29 Merge pull request #6760 from altiereslima/master
Update Portuguese Brazilian translation
2018-05-10 20:23:17 +02:00
Twinaphex cf5d42dbfe Merge pull request #6761 from rsn8887/master
(Vita/PSP) Use proper button labels, fix inverted R-Stick Y axis
2018-05-10 06:41:04 +02:00
rsn8887 6d5115a50d (Vita/PSP) Use proper button labels, fix inverted R-Stick Y axis 2018-05-09 22:55:33 -05:00
altiereslima 5378e5d525 Update Portuguese Brazilian translation 2018-05-09 23:32:25 -03:00
Twinaphex b5118391a9 Merge pull request #6758 from Dwedit/win32-unify-file-open
Win32: Unify file open code between Menus and Drag Drop, and fix it too
2018-05-10 04:18:54 +02:00
Dwedit ca00d93aac Edit the Japanese resource file too 2018-05-09 21:10:11 -05:00
Dwedit 387d4d87eb Fix core selection appearing unnecessarily
Re-order the dialog items in core selection dialog to make the listbox have focus
Removed the "do wm close" stuff.
2018-05-09 21:04:23 -05:00
Dwedit f3f0d4f787 Unify File Open and File Drag Drop code
* Code in `win32_drag_query_file` was split off into `win32_load_content_from_gui`
* File Open dialog now uses the same code as drag drop instead of the non-working code that was in there before.
* File Dialog and Core Select Dialog show and hide mouse cursor if they were invoked in fullscreen mode
2018-05-09 21:04:23 -05:00
meepingsnesroms 1a6f572405 Fixes 2018-05-09 18:23:35 -07:00
alphanu1 06d411d6e7 Update dispserv_x11.c 2018-05-10 01:56:39 +01:00
Twinaphex 72a77884fa Merge pull request #6756 from Dwedit/runahead-messages
Runahead error messages
2018-05-10 02:43:24 +02:00
Twinaphex 36b9fd94ba Merge pull request #6757 from Dwedit/additional-null-check
Additional null checks in video_driver.c
2018-05-10 02:43:03 +02:00
Dwedit bafb23edc3 Additional null check in video_driver.c
I have managed to trigger a null pointer exception on one of these two functions, so for safety, I added in null checks for the structs and function pointers.
2018-05-09 19:25:33 -05:00
Dwedit 6154a843e0 Runahead error messages
* Add error messages for: Core not having savestates, load/save state failure, secondary core create failure
* Added messages for us locale, can be localized elsewhere
* Add a configuration setting to hide the initial warning message for core not having savestates
* Small code changes and cleanup for secondary core
* Fixed typo "destory" in dirty input code
2018-05-09 19:08:16 -05:00
meepingsnesroms 5f234f0dd1 Start using proper 3ds executable formats (doesnt work properly yet) 2018-05-09 15:55:48 -07:00
Twinaphex 911072fb69 Merge pull request #6755 from Dwedit/small_bugfix
Small Bugfix to not trigger savestate code
2018-05-10 00:52:46 +02:00
Dwedit f94c736945 Small Bugfix, do not have Reset command trigger savestate code 2018-05-09 17:42:30 -05:00
twinaphex 46f7742afc Some early WinRT commits 2018-05-09 16:13:29 +02:00
gblues c161813f10 fix so object files are in expected location 2018-05-08 20:43:37 -07:00
gblues 171e222ebe Add "compile" make target
== DETAILS

As part of the build system overhaul, I need to be able to compile
without linking; this adds a "compile" target so that I can do that.

Currently only implemented on the main Makefile and Wii U.
2018-05-08 20:03:13 -07:00
alphanu1 61f445b159 Merge pull request #66 from alphanu1/alphanu1-patch-63
changes to switching method
2018-05-08 15:17:30 +01:00
alphanu1 b89b08d1ff changes to switching method
Added HDMI switching when CRT active, this slowed switching down. So there is also a new method to switch
2018-05-08 15:16:08 +01:00
alphanu1 e9739c2b14 Merge pull request #65 from alphanu1/alphanu1-patch-62
added swap_interval change for CRT
2018-05-08 15:14:31 +01:00
alphanu1 1bd74718ee added swap_interval change for CRT
Change for interlaced resolution when CRT active
2018-05-08 15:13:37 +01:00
alphanu1 90839289c4 Merge pull request #64 from libretro/master
update
2018-05-08 10:33:40 +01:00
Twinaphex 53140172ab Update CHANGES.md 2018-05-08 01:48:34 +02:00
Twinaphex a9e7bd9ee1 Merge pull request #6737 from gblues/master
Implement UDP broadcast network logging on Wii U
2018-05-08 01:47:04 +02:00
twinaphex 41d2ebf8b5 Apparently not available 2018-05-08 00:16:20 +02:00
twinaphex 2c409c606e (Winphone) should be _DISCARD 2018-05-07 23:19:42 +02:00
twinaphex 244f167dd5 (D3D11) Start adding D3D feature level 9 and Windows Phone ifdefs 2018-05-07 23:18:59 +02:00
Brad Parker 03e0510fc4 Qt: use guarded pointer for adding grid items to layout, in case playlist is changed (and hence the items get deleted) before they are all added 2018-05-07 14:29:54 -04:00
twinaphex 70bbe0bdb1 Update CHANGES.md 2018-05-07 17:56:48 +02:00
twinaphex c79950d707 (PS3) Add HAVE_DR_FLAC
(Dr. Flac) Fix some warnings with PS3 compiler
2018-05-07 17:52:53 +02:00
twinaphex 4f549bc55c (cheevos) Silence PS3 warnings
(PS3) Add HAVE_DR_MP3
2018-05-07 17:45:43 +02:00
twinaphex fb141343c3 (NSW) Add RARCH_INTERNAL 2018-05-07 17:41:53 +02:00
twinaphex 2cfa05fbbb (RGUI) Expose hex options for colors 2018-05-07 16:11:38 +02:00
twinaphex 1e42e8f58c (Qt) Add translatable string for 'Clear' 2018-05-07 15:37:54 +02:00
twinaphex b2361987b7 Make 'Current Core' string translatable 2018-05-07 15:27:56 +02:00
twinaphex 648be7e181 (menu_displaylist.c) Cleanups 2018-05-07 15:23:38 +02:00
twinaphex 555ffba328 menu_displaylist_parse_settings_internal - cleanup 2018-05-07 15:16:56 +02:00
twinaphex 3c73183a04 Cleanups - fix warnings 2018-05-07 15:05:59 +02:00
twinaphex 3753ff15fd (NSW) Add header include dir for dr_mp3 2018-05-07 14:50:00 +02:00
twinaphex 8af8db59e0 (Menu displaylist) Cleanups 2018-05-07 14:48:13 +02:00
twinaphex 45b841274a menu_displaylist_ctl - cleanups 2018-05-07 13:47:08 +02:00
Brad Parker 649216c700 Qt: add view menu option to change between icon/list views 2018-05-07 02:36:00 -04:00
Brad Parker faf52937c5 Qt: buildfix 2018-05-07 00:07:12 -04:00
gblues 5b3dd70ac3 Use a different packet size
== DETAILS

We had some disagreement on what packet size to use.

The maximum packet size varies depending on the actual network
hardware in use; the typical Ethernet value is relatively safe,
but not 100% compatible.

RFC 791 does, however, define a minimum datagram size that all
IP hosts must be able to handle--and it's large enough for our
needs, since we're generally not writing more than maybe 100
bytes at a time anyway.

I also did a little bit of cleanup for readability.
2018-05-06 19:08:32 -07:00
Brad Parker 2a784ae1bc Qt: remove mutex, defer loading of grid items into layout, use guarded pointers for exec() operations, misc cleanup 2018-05-06 20:50:54 -04:00
twinaphex 3cf12dbbf8 DRIVER_DATA_GET calls nearly gone from menu_displaylist.c 2018-05-07 02:46:40 +02:00
twinaphex b647f6e019 Cleanups 2018-05-07 02:44:03 +02:00
twinaphex 7928c3b098 Cleanups 2018-05-07 02:40:47 +02:00
twinaphex 698999f129 (menu_displaylist.c) Cleanups 2018-05-07 02:35:40 +02:00
twinaphex d3c2393daf Cleanups 2018-05-07 02:33:21 +02:00
twinaphex 0384ed4535 Cleanups 2018-05-07 02:25:19 +02:00
twinaphex 96b0edf962 (menu_displaylist.c) Cleanups 2018-05-07 02:20:19 +02:00
twinaphex 886170f505 Cleanups 2018-05-07 02:14:41 +02:00
twinaphex 05c272afd6 (menu_displaylist.c) Cleanups 2018-05-07 02:10:03 +02:00
twinaphex fd76c3b8b1 Change back to previous behavior 2018-05-07 01:29:21 +02:00
gblues 23f0a85446 Implement UDP broadcast network logging on Wii U
== DETAILS

The broadcast address is a standard part of TCP/IP that is used to
send messages to everyone on the subnet. This patch updates the
logging code to do the following:

1. Derive the broadcast address from the Wii U's own IP address
   and subnet mask. These can all be obtained at runtime, which
   means we can...
2. Remove the PC_DEVELOPMENT_IP_ADDRESS define from Wii U's
   Makefile, because compiling in an IP is no longer needed.
3. Rewrite the net_listen script to listen for broadcast packets
   and print them out with timestamps.

Since it's using the broadcast address, the only requirement is
that the PC be on the same network subnet as the Wii U.

Because of the low overhead of UDP, I've made logging on by
default. This will make it a ton easier to get useful bug
reports from users.
2018-05-06 14:39:48 -07:00
Twinaphex ac0b2799c5 Merge pull request #6735 from gblues/master
Fix Salamander build
2018-05-06 19:38:25 +02:00
gblues 58e298ab8d Fix Salamander build
- move non-salamander objects out of salamander scope
- move the missing libc functions to general scope
- fix salamander_main inline invocation

TESTING: Ran 'make -f Makefile.wiiu SALAMANDER=1' successfully
2018-05-06 10:01:20 -07:00
twinaphex e18f81eb74 Update libretro-common 2018-05-06 17:11:18 +02:00
Twinaphex 72fa691c81 Merge pull request #6733 from Tatsuya79/patch-8
QT remove button ghostly inside highlighting
2018-05-06 17:06:53 +02:00
Tatsuya79 425da219c6 QT remove button ghostly inside highlighting 2018-05-06 17:05:21 +02:00
Twinaphex 8484ea4154 Merge pull request #6672 from gblues/master
Cleanup of Wii U launcher code
2018-05-06 15:24:00 +02:00
Twinaphex 0f87a06a67 Merge pull request #6730 from QuarkTheAwesome/gx2-patch1
[WiiU] Fix out-of-bounds rendering bug
2018-05-06 13:40:22 +02:00
Ash 68d789a4ea [WiiU] Fix out-of-bounds rendering bug 2018-05-06 21:18:03 +10:00
Brad Parker de71a4dee7 Qt: general performance improvements, fix crash on switching playlists quickly in grid view, prevent initial loading of grid items from blocking 2018-05-06 01:36:47 -04:00
Brad Parker d55b1a0ad4 Qt: only check for pending events of the main thread 2018-05-05 23:17:30 -04:00
Brad Parker c2ad8d47d3 Qt: only check for pending events of the main thread 2018-05-05 22:57:29 -04:00
Twinaphex ec8f40c833 Merge pull request #6727 from ceb33/master
fix to set hid device registration deterministic (#6497), to address issue #6640 re-adding dynamic device registration
2018-05-05 23:15:12 +02:00
Brad Parker 8e7e530747 Qt: fix crash on switching playlists quickly 2018-05-05 17:02:03 -04:00
ceb33 bafd2af885 remove custom debug output 2018-05-05 13:33:15 +02:00
ceb33 67784c85cf update and merge to current Retroarch version 2018-05-05 12:59:04 +02:00
ceb33 9008684651 re-add callback to manage usb device plugged in while retroarch is running 2018-05-05 12:48:01 +02:00
Twinaphex 2771f8cc41 Update CHANGES.md 2018-05-04 22:51:47 +02:00
Twinaphex a371a2f835 Merge pull request #6717 from altiereslima/master
Update Portuguese Brazilian translation
2018-05-04 22:38:51 +02:00
Twinaphex 9e0a3f0794 Merge pull request #6720 from Tatsuya79/patch-7
QT QSlider styling
2018-05-04 22:38:42 +02:00
twinaphex 9462e5aa93 Don't hide these settings behind advanced settings 2018-05-04 19:08:10 +02:00
Brad Parker a082ea7d76 Qt: remove zoom layout margins 2018-05-04 12:05:53 -04:00
twinaphex 91744d9dd0 Bump up version code 2018-05-04 16:27:14 +02:00
Tatsuya79 658ffb8951 QT QSlider styling 2018-05-04 12:11:53 +02:00
Mikael Brunnhede 1bc304b26e Automatically hide the "Configuration Override options" Quick Menu entry if neither of the sub-options are enabled. 2018-05-04 10:18:22 +02:00
altiereslima b03a943dd9 fix translation 2018-05-04 01:32:36 -03:00
altiereslima e8a0e78d9e Update Portuguese Brazilian translation 2018-05-04 01:21:31 -03:00
Brad Parker fc3251b6a9 Qt: use non-linear scale for zoom slider 2018-05-03 23:58:15 -04:00
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 e372bb5320 Qt: cut maximum zoom slider value in half 2018-05-03 22:10:45 -04:00
Brad Parker 0f2262f065 Qt: fix thumbnail image loading 2018-05-03 22:05:12 -04:00
Brad Parker 6cab8cf139 Qt: fix some grid images not drawing properly 2018-05-03 22:05:12 -04:00
Brad Parker c10e65e99e Qt: support image playlist in grid layout 2018-05-03 22:05:12 -04:00
Brad Parker c42ad9fbb9 Qt: respect current zoom level when changing playlists 2018-05-03 22:05:12 -04:00
Brad Parker 758d484874 Qt: use primary screen size divided by 8 for grid item size 2018-05-03 22:05:12 -04:00
Brad Parker 5fa0d75bd7 adjust zoom factors 2018-05-03 22:05:12 -04:00
Brad Parker 8752996018 Qt: add grid zoom slider 2018-05-03 22:05:12 -04:00
Brad Parker f79ba4885a Qt: threaded grid image loading 2018-05-03 22:05:12 -04:00
Brad Parker 5f7abb068b Qt: initial grid layout work 2018-05-03 22:05:12 -04: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
gblues 84e9c93c35 quotes for some, braces for others 2018-05-02 22:37:34 -07:00
radius 7bdbd005a8 fix #6700 2018-05-02 23:32:40 -05:00
gblues 27bfcf3c77 Replace angle includes with quote includes
=== DETAILS

Replaced includes for things that aren't standard library headers so
they use quotes instead of brackets.

Also fixed up a couple of headers that had include-order dependencies.
2018-05-02 21:31:00 -07: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
gblues 7448fd3157 More code re-organization
=== DETAILS
Since @aliaspider wants the `wiiu/` to be something of a mini-SDK, I've
reorganized the code I put in there:

- `wiiu/main.c` now only has the ELF/RPX entrypoints, and the code used
  by those entrypoints, with RA code removed (e.g. swapped retro_sleep()
  for usleep()). These entrypoints then call main() ...
- Moved `main()` and its support functions back into `frontend/drivers/platform_wiiu.c`
  I also renamed some of the support functions I wrote, and better
  organized them within the code.
- Moved `wiiu/input/` into the `input/` hierarchy:

  * The joypad drivers now live in `input/drivers_joypad/wiiu/`
  * The HID driver now lives in `input/drivers_hid/`
  * The Wii U specific headers now live in `input/include/wiiu`
  * I added `input/include` into the include search path to avoid
    using really ugly relative includes
2018-05-01 23:23:40 -07: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
gblues 04cefd27d1 Cleanup of Wii U launcher code
== DETAILS

The Wii U main entrypoints were embedded in the frontend driver,
which isn't a great place for them. Also, the `main()` method was
pretty long and monolithic. Now it's (much) less so.

Changes:

- Refactor out the main entrypoints into their own source files
  (`wiiu/main.c` and `wiiu/main.h`)
- Optimize includes in both files, so only the minimum needed to
  compile are included.
- The `main()` method is a lot easier to understand now. It's no longer
a confusing mess of ifdefs.
- There's a small amount of changes in the headers for future work, which
  is switching kpad_driver to be callback-driven. The only change here is
  to import the function that will be used, and define some data types.

Testing:
- Did local builds and confirmed build is successful
- Successfully loaded a core and switched among a few games
2018-04-30 21:56:06 -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
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
gblues f6b33b1d30 missing file 2018-04-24 06:37:02 -07: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
Steven M. Vascellaro 5061bc5a65 Fix variable names for 'video_msg'
A few variables for video message color/position were using the wrong variable name

https://github.com/libretro/RetroArch/blob/master/configuration.h#L274-L279
2018-04-23 09:32:46 -04: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
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
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
Steven M. Vascellaro bc2cf0e215 Update list of joypad drivers 2018-04-14 18:16:33 -04:00
Steven M. Vascellaro cb21f3f33f retroarch.cfg: Add fps_show and framecount_show 2018-04-14 18:12:51 -04:00
Steven M. Vascellaro 559be4cff2 retroarch.cfg: Move/reorder Video settings 2018-04-14 18:12:27 -04:00
Steven Vascellaro f9db4b9839 retroarch.cfg: Update menu_driver options 2018-04-14 17:51:04 -04:00
Steven M. Vascellaro e39da99b87 retroarch.cfg: Add more driver settings
Adds driver settings for `camera_driver`, `location_driver`, and `record_driver`.
2018-04-14 17:37:02 -04: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
Steven M. Vascellaro bdf5a0c22b retroarch.cfg: Add section for directory settings
- Adds a section for directory/path settings
- Adds settings for `recording_output_directory` and `recording_config_directory`

All settings in `directory` section are accessible from RGUI
2018-04-14 16:53:32 -04: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
Steven M. Vascellaro 7a18305ed2 retroarch.cfg: Add section for driver settings
Moves driver related settings to a new "driver" section.

With the exception of `video_context_driver`, all of these settings can be found in RGUI under "driver".
2018-04-14 15:33:58 -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
Jean-André Santoni 617793df40 [stripes] Better tab colors 2018-04-11 21:17:37 +07:00
Jean-André Santoni 3a1e954284 [stripe] Fix icon sizes 2018-04-08 21:55:11 +07:00
Jean-André Santoni 1189d84543 [stripes] Implement draw_bg 2018-04-08 21:48:55 +07:00
Jean-André Santoni 4af704babe [stripe] Use scale_factor to look nice of different screens 2018-04-08 20:55:53 +07:00
Jean-André Santoni cef8477215 [stripes] Rainbow colors 2018-04-08 20:47:49 +07:00
Jean-André Santoni 2ef3824554 [stripe] Draw the stripes 2018-04-08 18:58:57 +07:00
Jean-André Santoni a6e9107bd0 Add menu_display_draw_polygon 2018-04-08 18:58:11 +07:00
Jean-André Santoni f2e71615fb [stripes] Remove useless thumbnail stuff 2018-04-08 15:42:26 +07:00
Jean-André Santoni 3f32a7f1b7 [stripes] Remove useless ribbon stuff 2018-04-08 15:37:29 +07:00
Jean-André Santoni 34966e2ffc [stripes] Compute and animate category width 2018-04-08 15:22:32 +07:00
Jean-André Santoni d1695c043c [stripes] Compute categories y position 2018-04-08 13:38:51 +07:00
Jean-André Santoni 65626c188a [stripes] Remove most of draw_frame 2018-04-08 13:31:19 +07:00
Jean-André Santoni 7a7cb730c5 [stripes] Remove pipeline 2018-04-08 13:26:20 +07:00
Jean-André Santoni 5a22d1cd8e [stripes] Comment out draw_items for now 2018-04-08 13:21:33 +07:00
Jean-André Santoni 061fe25c33 [stripes] Compute y position for the tabs icons 2018-04-08 13:16:01 +07:00
Jean-André Santoni 7601b740cc [stripes] Remove ribbon 2018-04-08 10:49:02 +07:00
Jean-André Santoni fcda6f7d96 [stripes] Remove gradients 2018-04-08 10:01:14 +07:00
Jean-André Santoni 1614519874 Clone xmb to stripe menu 2018-04-08 09:55:16 +07: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
gblues 46dad14d5f Merge branch 'master' into gblues/hid 2018-04-03 20:30:06 -07: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
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
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
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
gblues d65bd90e67 Fix GC pad button mapping 2018-03-30 18:57:34 -07: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
3459 changed files with 491717 additions and 168563 deletions

No files matched your search

+18
View File
@@ -68,6 +68,12 @@ menu/driverspzarch.c
.pc
/media/shaders_glsl/
/obj-w32/
.cproject
.settings
libretro-super
run.sh
convert_rumble.awk
*~
# Wii U
*.depend
@@ -114,6 +120,9 @@ wiiu/wut/elf2rpl/elf2rpl
pkg/apple/iOS/build/
pkg/apple/iOS/modules/
pkg/apple/build/
ui/drivers/qt/moc_*
ui/drivers/moc_*
obj-unix/
.vagrant/
@@ -145,3 +154,12 @@ retroarch.js.mem
# only ignore .js files in the repo root
/*.js
# Switch
*.d
exefs/*
retroarch_switch.pfs0
retroarch_switch.lst
retroarch_switch.nacp
retroarch_switch.nro
retroarch_switch.nso
+16
View File
@@ -5,7 +5,23 @@
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>
+16 -2
View File
@@ -10,7 +10,7 @@ matrix:
- g++-mingw-w64-i686
- mingw-w64-i686-dev
script:
- CROSS_COMPILE=i686-w64-mingw32- ./configure --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 && 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-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 && 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:
@@ -34,6 +34,20 @@ matrix:
osx_image: xcode7.3
script:
- xcodebuild -target RetroArch -configuration Release -project pkg/apple/RetroArch.xcodeproj
- os: osx
osx_image: xcode9.3
script:
- cd ~/
- brew install --force-bottle qt5
- git clone --depth=50 https://github.com/libretro/libretro-super
- cd libretro-super/travis
- ./build-retroarch-metal.sh
deploy:
skip_cleanup: true
provider: script
script: cd ../retroarch; bash travis_metal_deploy.sh
on:
branch: master
script:
- ./configure
+3 -2
View File
@@ -5,7 +5,8 @@
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
"${workspaceRoot}",
"${workspaceRoot}/libretro-common/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
@@ -123,5 +124,5 @@
}
}
],
"version": 3
"version": 4
}
+8 -1
View File
@@ -12,7 +12,14 @@
"files.associations": {
"frontend_driver.h": "c",
"*.in": "c",
"*.rh": "c"
"*.rh": "c",
"array": "c",
"file_stream.h": "c",
"driver.h": "c",
"iosfwd": "c",
"xlocbuf": "c",
"xmemory0": "c",
"ios": "c"
},
"C_Cpp.dimInactiveRegions": false,
}
+273
View File
@@ -0,0 +1,273 @@
static const char *retroarch_contributors_list = R"(
RetroArch and the libretro team would like to
acknowledge the following contributors:
1ch (L0sted)
Aaahh Ahh (Aaahh)
Aaron Oneal (aarononeal)
Adam Mechtley (amechtley)
Adolfo Ketzer (reztek)
AdrianoML
ajefr
Alberto Simon (asimonf)
Alcaro
Alessandro Mangone (Vektor) (zevektor)
Alex Eckhart (alex34567)
Alex Folland (AlexFolland)
Alexander Spady (alkaseltzerspadt)
Alexandre Garcia (Alexandre-Garcia)
Alfredo Monclus (alfrix)
aliaspider
alphanu1
altiereslima
Alwin Garside (Yogarine)
Amiga1200Gamer (amigagamer)
Andre Leiradella (leiradel)
Andrés (fr500)
Anthony J. Bentley (bentley)
AridRayne
Arto Vainiolehto (arakerlu)
asako (asakous)
Ash (QuarkTheAwesome)
Ashura (CoalaJoe)
Autechre64
Avton1
barbudreadmon
bearoso
blackgur
Boris Timofeev (btimofeev)
bparker06
Brandon Johnson (Denu8thell)
Brian Koropoff (bkoropoff)
Brian S. Stephan (bsstephan)
Brunnis
bubuleur
Casey Borders (CaseyB)
ceb33
celerizer
Chris Merrett (chrisfu)
chu (9chu)
CidVonHighwind
clienthax
Conn O'Griofa (psyke83)
cpsw
Cray Elliott (MP2E)
Cristian Sandu (crazyquark)
ctult
cubtekki
cucholix
cudencuden
cxd4
dalter
Dan Weiss (Dwedit)
danieljg
Daniil Zhilin (GeneralFailer)
dankcushions
Danny Glover (DannyGlover)
Dave (freakdave)
Dave Leaver (danzel)
David Demelier (markand)
David Erickson (daviderickson)
David Shah (daveshah1)
David Walters (hiddenasbestos)
DEX357
diablodiab
dibas
Diego A. (SuperrSonic)
Diego Viola (diegoviola)
Diogo Barros (BlueKore)
DogParty
dor3k
Dudu Akiva (duduke)
duganchen
duskgao
ekipan
ensra
erbridge
esoptron
Ethan Lee (flibitijibibo)
Ezio-PS
Fabio (Oibaf66)
Fabio Ritrovato (Sephiroth87)
Fayne Aldan (FayneAldan)
FIX94
Flame Sage (chris062689)
flyinghead
Francisco José García García (frangarcj)
GameDragon2k
Garrett Brown (garbear)
gblues
Geoffrey Plitt (GeoffreyPlitt)
Glenn Hevey (hevey)
Googer
gouchi
Gregor Richards (GregorR)
Gui Andrade (archshift)
Gustavo Maciel Dias Vieira (gmdvieira)
gvbr
H. İbrahim Güngör (igungor)
hadess
Hans-Kristian Arntzen (Themaister)
Henri Gomez (hgomez)
Henri Gomez (hgomez-sonarsource)
Higor Eurípedes (heuripedes)
hizzlekizzle
Hugo B. (777sha)
hunterk
Hyllian
i30817
iAmGhost
Jack (jakcron)
James Le Cuirot (chewi)
James Sexton (Bezier89)
Jan Holthuis (Holzhaus)
Jay McCarthy (jeapostrophe)
Jean-André Santoni (kivutar)
Jean-Paul Mari (djipi)
Jean-Sébastien Guay (Skylark13)
Jesse Bryan (winneon)
Joel (joel16)
Joerg Sonnenberger (jsonn)
Johannes Schickel (lordhoto)
John Regan (jprjr)
Jon Maddox (maddox)
Jonathan Relf (jonathanrelf)
Joohan Lee (losernator)
Jools Wills (joolswills)
Joseph Carter (iKarith)
Joseph Conan Montgomery (Grotke)
Josh Palmer (ShiftyAxel)
JuanVCS
Justin Jacobs (dorkster)
Justin Weiss (justinweiss)
Ken Rossato (rossato)
kurumushi
kwyxz
l3iggs
lasers
Lawrence Kesteloot (lkesteloot)
liffy (lifning)
Lionel Flandrin (simias)
littleguy77
Logan (loganmc10)
lordashram
Lothar Serra Mari (lotharsm)
Lubosz Sarnecki (lubosz)
lucianposton
lxerandrew
Mahyar Koshkouei (deltabeard)
Marcelo Munhoz Pélos (mpelos)
markwkidd
Maschell
Mat M. (lioncash)
Matt Sephton (gingerbeardman)
Maxime Gauduin (alucryd)
mcrisostomo
meancoot
meepingsnesroms
meleu
Michael K. (kuxii2016)
Michał Durak (micechal)
Mico Chopitea (micochops)
miguelpinheiro
Mike Swanson (chungy)
miqlas (extrowerk)
misson20000
Monroe88
mprobinson
MrHuu
muzuiget
mwtremblay
Nathan S. (natinusala)
nattycleopatra
netux79
nfnty
Nicolas Adenis-Lamarre (nadenislamarre)
Nicolas Guillaumin (nguillaumin)
Nicolas Lopez Fernandez (pyroesp)
Nikita Vakhrushev (JesterIOS)
Nikola Kocic (nikola-kocic)
Niouby
nosh01
not6 (r-type)
notaz
nstCactus
nurupo
Oggom
Oleg Shevchenko (olsh)
opendata26
orbea
OV2
pamapa
Paolo Bonzini (bonzini)
Paul McCarty (a-shark)
Pedro Ribeiro (pedrib)
pinumbernumber
pponso1
Ramiro Morales (ramiro)
retro-wertz
Richard Howell (rmaz)
Rob Loach (RobLoach)
Romain Gay (vikbez)
Romain Graillot (notnotme)
Romain TISSERAND (rtissera)
Roman Kalashnikov (lunixoid)
Royerson
rrooij
rsn8887
Ryunam
rz5
Saggi Mizrahi (ficoos)
SAKUJ0
Sam Pagenkopf (44100hertz)
Sam Stenvall (Jalle19)
Scheiker
Sebastien Ronsse (sronsse)
Sergi Granell (xerpi)
Sergio Padrino (sergiou87)
sergio-br2 (sergiobenrocha2)
Seth Kingsley (sethk)
Shane Mouton (ismouton)
Shizeeg Unadequatov (shizeeg)
Skarsnik
slotek
sparklewind
spec-chum
Stefan (gizmo98)
stefan-gr
Steven M. Vascellaro (stevoisiak)
Stuart Carnie (stuartcarnie)
Sunguk Lee (d3m3vilurr)
Supernature2k
Sven (RetroSven)
Swizzy
Tatsuya79
Terry Lewis (terry-au)
The Last Cabra (vanfanel)
thedax
theheroGAC
TheOfficialFloW
thiolliere
Toad King (ToadKing)
Tobias Jakobi (tobiasjakobi)
Tomáš Kelemen (ToKe79)
Torsten Paul (t-paul)
TotalCaesar659
TroggleMonkey
Twinaphex
URBANsUNITED
vgmoose
Vicky C Lau (vickychenglau)
Vladimir Panteleev (CyberShadow)
Víctor "IlDucci" (IlDucci)
Wang Vincent (susemm)
webgeek1234
Wiktor Strzębała (wiktorek140)
xhp-creations
Yarsan Hoessain (hyarsan)
Yongwoon Cho (ssangkong)
yoshisuga
zeromus
zlice
Zoran Vuckovic (casdevel)
)";
+95 -2
View File
@@ -1,4 +1,90 @@
# 1.7.3 (future)
# 1.7.5 (future)
- CAMERA: Fix Video4Linux2 driver that broke years ago.
- CHEEVOS: Support headerless NES hashing.
- CRT: New porches and interlaced bug fix.
- COMMON: Support for "OEM-102" key (usually '\' on Euro keyboards).
- DISCORD: Add 'Ask To Join' Feature.
- LOCALIZATION: Update Portuguese / Brazilian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Polish translation.
- LOCALIZATION: Update Spanish translation.
- MENU/QT/WIMP: Add option to filter extensions inside archives when adding to a playlist.
- MENU/QT/WIMP: Rename playlist entries with 2 single clicks.
- METAL: Add screenshot support.
- NETPLAY: Save lobby details received back from server after first announcement.
- OPENGL/GLX: Implement Adaptive VSync - GLX_EXT_swap_control_tear.
- OPENGL/WGL: Implement Adaptive VSync - WGL_EXT_swap_control_tear.
- SWITCH: Merging of RetroNX Nintendo Switch port, based on libnx SDK.
- VULKAN: Fix race condition in threaded mailbox emulation.
- VULKAN: Maintenance fixes.
# 1.7.4
- ANDROID: Add sustained performance mode, can be turned on/off in Power Management settings menu.
- ANDROID: Powerstate/battery level support.
- CHEEVOS: Fix crash when scrolling Achievement List while Unofficial Achievements enabled (#6732).
- CHEEVOS: Added hitcounts support for PauseIf/ResetIf (#6817).
- COMMON: Automatically hide "Configuration Override options" in Quick Menu.
- COMMON: Small Bugfix to not trigger savestate code when pressing Reset.
- COMMON: Added libsixel video driver.
- EMSCRIPTEN: Fix Game Focus Toggle.
- HID/OSX: Fix to set hid device registration deterministic (#6497), to address issue #6640 re-adding dynamic device registration.
- LOCALIZATION: Update Italian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Polish translation.
- LOCALIZATION: Update Portuguese / Brazilian translation.
- LOCALIZATION: Update Russian translation.
- LOCALIZATION: Update Spanish translation.
- MIDI: Add MIDI support to the libretro API. Dosbox is the first proof of concept core implementing libretro MIDI.
- MIDI: Add a Windows driver for MIDI, based on winmm.
- MENU/QT/WIMP: Qt QSlider styling for Dark Theme.
- MENU/QT/WIMP: Remove button ghostly inside highlighting.
- MENU/QT/WIMP: Initial grid view.
- MENU/QT/WIMP: Drag&drop to add new playlist items, add option to add/edit/delete playlists.
- MENU/QT/WIMP: Add menu option to update RetroArch (Windows only for now).
- MENU/QT/WIMP: Add menu option to manage shaders.
- MENU/QT/WIMP: Add menu option to manage core options.
- MENU/XMB: Add new icons for the settings
- MENU/XMB: Add an option to show the desktop ui
- METAL: Initial work-in-progress video driver for Metal. macOS-only right now, and currently requires macOS 10.13.
- METAL: Supports XMB/MaterialUI, has a menu display driver. Has a font rendering driver.
- METAL/SLANG: Slang shaders should be compatible with Metal video driver.
- NETWORK: Enable SSL/TLS support by default for desktop platforms.
- QNX: Fix Game Focus Toggle.
- PS3: Add audio mixer support for FLAC and MP3.
- PSP: Use proper button labels, fix inverted R-Stick Y axis.
- REMAPS: Fix the way offsets are calculated for keyboard remapping.
- RUNAHEAD: Fix full-screen mode change breaking Secondary Core's environment variables.
- VITA: Use proper button labels, fix inverted R-Stick Y axis.
- VITA: Add imc0: mount.
- VITA: Use sceCtrlIsMultiControllerSupported to detect.
- VULKAN: Fix two validation errors.
- VULKAN: Try to avoid creating swapchains redundantly. Should fix black screen and having to alt tab out of window again to get display working on Nvidia GPUs (Windows).
- VULKAN/OSX: Initial MoltenVK support. Not enabled yet, several MoltenVK bugs should be fixed first before we can have it fully working.
- WINDOWS/DINPUT: Add rumble support.
- WINDOWS/DINPUT: Fix Game Focus Toggle.
- WINDOWS/RAWINPUT: Fix Game Focus Toggle.
- X11: Fix Game Focus Toggle.
- WII: Change deflicker setting to work in 480p or higher, and always enables vfilter so that the user can easily change brightness.
- WIIU: Fix out-of-bounds rendering bug
- WIIU: Implement UDP broadcast network logging on Wii U.
- WIIU: Audio should no longer clip.
# 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: New WIMP Qt GUI!
- 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).
@@ -29,7 +115,7 @@ video drivers that implement it (D3D8/9/10/11/12/GL)
- 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: 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.
@@ -45,6 +131,13 @@ that support it (so far this includes - D3D8/D3D9, OpenGL, Vulkan)
- 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.
+36 -11
View File
@@ -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
@@ -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 '$*=$($*)'
+24
View File
@@ -0,0 +1,24 @@
include Makefile.common
# 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_,$(dir $(MOC_HEADERS))), $(notdir $(MOC_HEADERS:.h=.cpp)))
endif
MOC ?= $(error missing moc path)
.PHONY: generate
$(MOC_SRC):
@$(if $(Q), $(shell echo echo MOC $<),)
$(eval MOC_TMP := $(patsubst %.h,%_moc.cpp,$@))
$(MOC) -o $(MOC_TMP) $<
$(foreach x,$(join $(addsuffix :,$(MOC_SRC)),$(MOC_HEADERS)),$(eval $x))
generate: $(MOC_SRC)
@echo $(MOC_SRC)
print-%:
@echo '$*=$($*)'
+221 -197
View File
@@ -7,6 +7,10 @@ ifeq ($(HAVE_STACK_USAGE), 1)
CFLAGS += -fstack-usage
endif
ifeq ($(HAVE_HAKCHI), 1)
CFLAGS += -DHAVE_HAKCHI
endif
ifeq ($(HAVE_GL_CONTEXT),)
HAVE_GL_CONTEXT=0
@@ -147,6 +151,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,6 +204,7 @@ 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 \
@@ -261,6 +268,8 @@ OBJ += frontend/frontend.o \
$(LIBRETRO_COMM_DIR)/features/features_cpu.o \
performance_counters.o \
verbosity.o \
midi/midi_driver.o \
midi/drivers/null_midi.o
ifeq ($(HAVE_RUNAHEAD), 1)
DEFINES += -DHAVE_RUNAHEAD
@@ -321,12 +330,11 @@ DEFINES += -DHAVE_IMAGEVIEWER
OBJ += cores/libretro-imageviewer/image_core.o
endif
# Qt
# Qt WIMP GUI
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
ifeq ($(HAVE_OPENSSL), 1)
DEFINES += $(OPENSSL_CFLAGS)
LIBS += $(OPENSSL_LIBS)
endif
ifeq ($(HAVE_QT), 1)
@@ -334,10 +342,39 @@ 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_msg_window.o
ui/drivers/qt/ui_qt_load_core_window.o \
ui/drivers/qt/ui_qt_msg_window.o \
ui/drivers/qt/flowlayout.o \
ui/drivers/qt/shaderparamsdialog.o \
ui/drivers/qt/coreoptionsdialog.o \
ui/drivers/qt/filedropwidget.o \
ui/drivers/qt/coreinfodialog.o \
ui/drivers/qt/playlistentrydialog.o \
ui/drivers/qt/viewoptionsdialog.o \
ui/drivers/qt/playlist.o \
ui/drivers/qt/updateretroarch.o \
ui/drivers/qt/thumbnaildownload.o \
ui/drivers/qt/thumbnailpackdownload.o \
ui/drivers/qt/playlistthumbnaildownload.o
MOC_HEADERS += ui/drivers/ui_qt.h \
ui/drivers/qt/ui_qt_load_core_window.h \
ui/drivers/qt/flowlayout.h \
ui/drivers/qt/shaderparamsdialog.h \
ui/drivers/qt/coreoptionsdialog.h \
ui/drivers/qt/filedropwidget.h \
ui/drivers/qt/coreinfodialog.h \
ui/drivers/qt/playlistentrydialog.h \
ui/drivers/qt/viewoptionsdialog.h
DEFINES += $(QT5CORE_CFLAGS) $(QT5GUI_CFLAGS) $(QT5WIDGETS_CFLAGS) $(QT5CONCURRENT_CFLAGS) $(QT5NETWORK_CFLAGS) -DHAVE_MAIN
#DEFINES += $(QT5WEBENGINE_CFLAGS)
LIBS += $(QT5CORE_LIBS) $(QT5GUI_LIBS) $(QT5WIDGETS_LIBS) $(QT5CONCURRENT_LIBS) $(QT5NETWORK_LIBS)
#LIBS += $(QT5WEBENGINE_LIBS)
NEED_CXX_LINKER = 1
ifneq ($(findstring Linux,$(OS)),)
DEFINES += -I/usr/include/qt -fPIC
DEFINES += -fPIC
endif
endif
@@ -359,199 +396,94 @@ OBJ += libretro-db/bintree.o \
endif
ifneq ($(C89_BUILD), 1)
HAVE_LIBUI = 0
HAVE_GTKPLUS = 0
ifeq ($(HAVE_SSL), 1)
DEFINES += -DHAVE_SSL
DEFINES += -DMBEDTLS_SSL_DEBUG_ALL
ifeq ($(DEBUG), 1)
DEFINES += -DMBEDTLS_SSL_DEBUG_ALL
endif
# MinGW requires this for some reason, even though the include paths are relative to the source
INCLUDE_DIRS += -Ideps/mbedtls
OBJS_TLS_CRYPTO = deps/mbedtls/aes.o deps/mbedtls/aesni.o deps/mbedtls/arc4.o \
deps/mbedtls/asn1parse.o deps/mbedtls/asn1write.o deps/mbedtls/base64.o \
deps/mbedtls/bignum.o deps/mbedtls/blowfish.o deps/mbedtls/camellia.o \
deps/mbedtls/ccm.o deps/mbedtls/cipher.o deps/mbedtls/cipher_wrap.o \
deps/mbedtls/cmac.o deps/mbedtls/ctr_drbg.o deps/mbedtls/des.o \
deps/mbedtls/dhm.o deps/mbedtls/ecdh.o deps/mbedtls/ecdsa.o \
deps/mbedtls/ecjpake.o deps/mbedtls/ecp.o \
deps/mbedtls/ecp_curves.o deps/mbedtls/entropy.o deps/mbedtls/entropy_poll.o \
deps/mbedtls/error.o deps/mbedtls/gcm.o deps/mbedtls/havege.o \
deps/mbedtls/hmac_drbg.o deps/mbedtls/md.o deps/mbedtls/md2.o \
deps/mbedtls/md4.o deps/mbedtls/md5.o deps/mbedtls/md_wrap.o \
deps/mbedtls/memory_buffer_alloc.o deps/mbedtls/oid.o \
deps/mbedtls/padlock.o deps/mbedtls/pem.o deps/mbedtls/pk.o \
deps/mbedtls/pk_wrap.o deps/mbedtls/pkcs12.o deps/mbedtls/pkcs5.o \
deps/mbedtls/pkparse.o deps/mbedtls/pkwrite.o deps/mbedtls/platform.o \
deps/mbedtls/ripemd160.o deps/mbedtls/rsa.o deps/mbedtls/sha1.o \
deps/mbedtls/sha256.o deps/mbedtls/sha512.o deps/mbedtls/threading.o \
deps/mbedtls/timing.o deps/mbedtls/version.o \
deps/mbedtls/version_features.o deps/mbedtls/xtea.o
OBJS_TLS_CRYPTO = deps/mbedtls/aes.o \
deps/mbedtls/aesni.o \
deps/mbedtls/arc4.o \
deps/mbedtls/asn1parse.o \
deps/mbedtls/asn1write.o \
deps/mbedtls/base64.o \
deps/mbedtls/bignum.o \
deps/mbedtls/blowfish.o \
deps/mbedtls/camellia.o \
deps/mbedtls/ccm.o \
deps/mbedtls/cipher.o \
deps/mbedtls/cipher_wrap.o \
deps/mbedtls/cmac.o \
deps/mbedtls/ctr_drbg.o \
deps/mbedtls/des.o \
deps/mbedtls/dhm.o \
deps/mbedtls/ecdh.o \
deps/mbedtls/ecdsa.o \
deps/mbedtls/ecjpake.o \
deps/mbedtls/ecp.o \
deps/mbedtls/ecp_curves.o \
deps/mbedtls/entropy.o \
deps/mbedtls/entropy_poll.o \
deps/mbedtls/error.o \
deps/mbedtls/gcm.o \
deps/mbedtls/havege.o \
deps/mbedtls/hmac_drbg.o \
deps/mbedtls/md.o \
deps/mbedtls/md2.o \
deps/mbedtls/md4.o \
deps/mbedtls/md5.o \
deps/mbedtls/md_wrap.o \
deps/mbedtls/memory_buffer_alloc.o \
deps/mbedtls/oid.o \
deps/mbedtls/padlock.o \
deps/mbedtls/pem.o \
deps/mbedtls/pk.o \
deps/mbedtls/pk_wrap.o \
deps/mbedtls/pkcs12.o \
deps/mbedtls/pkcs5.o \
deps/mbedtls/pkparse.o \
deps/mbedtls/pkwrite.o \
deps/mbedtls/platform.o \
deps/mbedtls/ripemd160.o \
deps/mbedtls/rsa.o \
deps/mbedtls/sha1.o \
deps/mbedtls/sha256.o \
deps/mbedtls/sha512.o \
deps/mbedtls/threading.o \
deps/mbedtls/timing.o \
deps/mbedtls/version.o \
deps/mbedtls/version_features.o \
deps/mbedtls/xtea.o
OBJS_TLS_X509 = deps/mbedtls/certs.o deps/mbedtls/pkcs11.o deps/mbedtls/x509.o \
deps/mbedtls/x509_create.o deps/mbedtls/x509_crl.o deps/mbedtls/x509_crt.o \
deps/mbedtls/x509_csr.o deps/mbedtls/x509write_crt.o deps/mbedtls/x509write_csr.o
OBJS_TLS_X509 = deps/mbedtls/certs.o \
deps/mbedtls/pkcs11.o \
deps/mbedtls/x509.o \
deps/mbedtls/x509_create.o \
deps/mbedtls/x509_crl.o \
deps/mbedtls/x509_crt.o \
deps/mbedtls/x509_csr.o \
deps/mbedtls/x509write_crt.o \
deps/mbedtls/x509write_csr.o
OBJS_TLS = deps/mbedtls/debug.o deps/mbedtls/net_sockets.o \
deps/mbedtls/ssl_cache.o deps/mbedtls/ssl_ciphersuites.o \
deps/mbedtls/ssl_cli.o deps/mbedtls/ssl_cookie.o \
deps/mbedtls/ssl_srv.o deps/mbedtls/ssl_ticket.o \
OBJS_TLS = deps/mbedtls/debug.o \
deps/mbedtls/net_sockets.o \
deps/mbedtls/ssl_cache.o \
deps/mbedtls/ssl_ciphersuites.o \
deps/mbedtls/ssl_cli.o \
deps/mbedtls/ssl_cookie.o \
deps/mbedtls/ssl_srv.o \
deps/mbedtls/ssl_ticket.o \
deps/mbedtls/ssl_tls.o
OBJ += $(OBJS_TLS_CRYPTO) $(OBJS_TLS_X509) $(OBJS_TLS)
endif
ifeq ($(HAVE_LIBUI), 1)
DEFINES += -DHAVE_LIBUI
ifneq ($(findstring Win32,$(OS)),)
OBJ += deps/libui/windows/alloc.o \
deps/libui/windows/area.o \
deps/libui/windows/areadraw.o \
deps/libui/windows/areaevents.o \
deps/libui/windows/areascroll.o \
deps/libui/windows/areautil.o \
deps/libui/windows/box.o \
deps/libui/windows/button.o \
deps/libui/windows/checkbox.o \
deps/libui/windows/colorbutton.o \
deps/libui/windows/colordialog.o \
deps/libui/windows/combobox.o \
deps/libui/windows/container.o \
deps/libui/windows/control.o \
deps/libui/windows/d2dscratch.o \
deps/libui/windows/datetimepicker.o \
deps/libui/windows/debug.o \
deps/libui/windows/draw.o \
deps/libui/windows/drawmatrix.o \
deps/libui/windows/drawpath.o \
deps/libui/windows/drawtext.o \
deps/libui/windows/dwrite.o \
deps/libui/windows/editablecombo.o \
deps/libui/windows/entry.o \
deps/libui/windows/events.o \
deps/libui/windows/fontbutton.o \
deps/libui/windows/fontdialog.o \
deps/libui/windows/form.o \
deps/libui/windows/graphemes.o \
deps/libui/windows/grid.o \
deps/libui/windows/group.o \
deps/libui/windows/init.o \
deps/libui/windows/label.o \
deps/libui/windows/main.o \
deps/libui/windows/menu.o \
deps/libui/windows/multilineentry.o \
deps/libui/windows/parent.o \
deps/libui/windows/progressbar.o \
deps/libui/windows/radiobuttons.o \
deps/libui/windows/separator.o \
deps/libui/windows/sizing.o \
deps/libui/windows/slider.o \
deps/libui/windows/spinbox.o \
deps/libui/windows/stddialogs.o \
deps/libui/windows/tab.o \
deps/libui/windows/tabpage.o \
deps/libui/windows/text.o \
deps/libui/windows/utf16.o \
deps/libui/windows/utilwin.o \
deps/libui/windows/window.o \
deps/libui/windows/winpublic.o \
deps/libui/windows/winutil.o
LIBS += -luxtheme -ld2d1 -ldwrite -lusp10
else
ifneq ($(findstring Darwin,$(OS)),)
OBJ += deps/libui/darwin/alloc.o \
deps/libui/darwin/area.o \
deps/libui/darwin/areaevents.o \
deps/libui/darwin/autolayout.o \
deps/libui/darwin/box.o \
deps/libui/darwin/button.o \
deps/libui/darwin/checkbox.o \
deps/libui/darwin/colorbutton.o \
deps/libui/darwin/combobox.o \
deps/libui/darwin/control.o \
deps/libui/darwin/datetimepicker.o \
deps/libui/darwin/debug.o \
deps/libui/darwin/draw.o \
deps/libui/darwin/drawtext.o \
deps/libui/darwin/editablecombo.o \
deps/libui/darwin/entry.o \
deps/libui/darwin/fontbutton.o \
deps/libui/darwin/form.o \
deps/libui/darwin/grid.o \
deps/libui/darwin/group.o \
deps/libui/darwin/image.o \
deps/libui/darwin/label.o \
deps/libui/darwin/main.o \
deps/libui/darwin/map.o \
deps/libui/darwin/menu.o \
deps/libui/darwin/multilineentry.o \
deps/libui/darwin/progressbar.o \
deps/libui/darwin/radiobuttons.o \
deps/libui/darwin/scrollview.o \
deps/libui/darwin/separator.o \
deps/libui/darwin/slider.o \
deps/libui/darwin/spinbox.o \
deps/libui/darwin/stddialogs.o \
deps/libui/darwin/tab.o \
deps/libui/darwin/text.o \
deps/libui/darwin/util.o \
deps/libui/darwin/window.o \
deps/libui/darwin/winmoveresize.o
else
CFLAGS += -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0
LIBS += -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
OBJ += deps/libui/unix/alloc.o \
deps/libui/unix/area.o \
deps/libui/unix/box.o \
deps/libui/unix/button.o \
deps/libui/unix/cellrendererbutton.o \
deps/libui/unix/checkbox.o \
deps/libui/unix/child.o \
deps/libui/unix/colorbutton.o \
deps/libui/unix/combobox.o \
deps/libui/unix/control.o \
deps/libui/unix/datetimepicker.o \
deps/libui/unix/debug.o \
deps/libui/unix/draw.o \
deps/libui/unix/drawmatrix.o \
deps/libui/unix/drawpath.o \
deps/libui/unix/drawtext.o \
deps/libui/unix/editablecombo.o \
deps/libui/unix/entry.o \
deps/libui/unix/fontbutton.o \
deps/libui/unix/form.o \
deps/libui/unix/future.o \
deps/libui/unix/graphemes.o \
deps/libui/unix/grid.o \
deps/libui/unix/group.o \
deps/libui/unix/image.o \
deps/libui/unix/label.o \
deps/libui/unix/main.o \
deps/libui/unix/menu.o \
deps/libui/unix/multilineentry.o \
deps/libui/unix/progressbar.o \
deps/libui/unix/radiobuttons.o \
deps/libui/unix/separator.o \
deps/libui/unix/slider.o \
deps/libui/unix/spinbox.o \
deps/libui/unix/stddialogs.o \
deps/libui/unix/tab.o \
deps/libui/unix/text.o \
deps/libui/unix/util.o \
deps/libui/unix/window.o
endif
endif
OBJ += deps/libui/common/areaevents.o \
deps/libui/common/control.o \
deps/libui/common/debug.o \
deps/libui/common/matrix.o \
deps/libui/common/shouldquit.o \
deps/libui/common/userbugs.o
OBJ += deps/libui/libui_main.o
endif
endif
# Miscellaneous
@@ -593,6 +525,10 @@ ifeq ($(TARGET), retroarch_3ds)
OBJ += gfx/drivers_font/ctr_font.o
endif
ifeq ($(HAVE_LIBNX), 1)
OBJ += gfx/drivers_font/switch_font.o
endif
ifeq ($(HAVE_OSS), 1)
OBJ += audio/drivers/oss.o
else ifeq ($(HAVE_OSS_BSD), 1)
@@ -679,6 +615,12 @@ ifeq ($(HAVE_XAUDIO), 1)
LIBS += -lole32
endif
ifeq ($(HAVE_WINMM), 1)
OBJ += midi/drivers/winmm_midi.o
DEFINES += -DHAVE_WINMM
LIBS += -lwinmm
endif
# Audio Resamplers
ifeq ($(HAVE_NEON),1)
@@ -726,11 +668,16 @@ ifeq ($(HW_CONTEXT_MENU_DRIVERS), 1)
ifeq ($(HAVE_XMB),)
HAVE_XMB = 1
endif
ifeq ($(HAVE_STRIPES),)
HAVE_STRIPES = 1
endif
else
HAVE_ZARCH ?= 0
HAVE_MATERIALUI ?= 0
#HAVE_NUKLEAR ?= 0
HAVE_XMB ?= 0
HAVE_STRIPES ?= 0
endif
ifeq ($(HAVE_RGUI), 1)
@@ -762,6 +709,11 @@ ifeq ($(HAVE_XMB), 1)
HAVE_MENU_COMMON = 1
endif
ifeq ($(HAVE_STRIPES), 1)
OBJ += menu/drivers/stripes.o
DEFINES += -DHAVE_STRIPES
endif
ifeq ($(HAVE_LAKKA), 1)
DEFINES += -DHAVE_LAKKA
endif
@@ -872,15 +824,25 @@ ifeq ($(TARGET), retroarch_3ds)
endif
ifeq ($(TARGET), retroarch_switch)
OBJ += gfx/drivers/switch_gfx.o \
input/drivers/switch_input.o \
input/drivers_joypad/switch_joypad.o \
audio/drivers/switch_audio.o
ifeq ($(HAVE_LIBNX), 1)
OBJ += menu/drivers_display/menu_display_switch.o \
gfx/drivers/switch_nx_gfx.o
else
OBJ += gfx/drivers/switch_gfx.o
endif
OBJ += audio/drivers/switch_audio.o \
audio/drivers/switch_thread_audio.o \
input/drivers/switch_input.o \
input/drivers_joypad/switch_joypad.o \
frontend/drivers/platform_switch.o
endif
ifeq ($(HAVE_WAYLAND), 1)
OBJ += gfx/drivers_context/wayland_ctx.o \
input/drivers/wayland_input.o
ifeq ($(HAVE_EGL), 1)
LIBS += $(EGL_LIBS)
endif
DEFINES += $(WAYLAND_CFLAGS) $(WAYLAND_CURSOR_CFLAGS)
LIBS += $(WAYLAND_LIBS) $(WAYLAND_CURSOR_LIBS)
endif
@@ -1029,6 +991,18 @@ ifeq ($(HAVE_CACA), 1)
endif
endif
ifeq ($(HAVE_SIXEL), 1)
DEFINES += -DHAVE_SIXEL
CFLAGS += -I/usr/include/sixel
OBJ += gfx/drivers/sixel_gfx.o gfx/drivers_font/sixel_font.o \
gfx/drivers_context/sixel_ctx.o
LIBS += -lsixel
ifeq ($(HAVE_MENU_COMMON), 1)
OBJ += menu/drivers_display/menu_display_sixel.o
endif
endif
ifeq ($(HAVE_PLAIN_DRM), 1)
OBJ += gfx/drivers/drm_gfx.o
CFLAGS += -I/usr/include/libdrm
@@ -1086,11 +1060,30 @@ ifneq ($(C89_BUILD), 1)
ifneq ($(HAVE_OPENGLES), 1)
OBJ += cores/libretro-ffmpeg/ffmpeg_fft.o
DEFINES += -I$(DEPS_DIR) -DHAVE_GL_FFT
NEED_CXX_LINKER=1
endif
endif
endif
ifeq ($(HAVE_METAL), 1)
DEFINES += -DHAVE_METAL
OBJ += gfx/common/metal/Context.o \
gfx/common/metal/Filter.o \
gfx/common/metal/RendererCommon.o \
gfx/common/metal/View.o \
gfx/common/metal/TexturedView.o \
gfx/common/metal/MenuDisplay.o \
gfx/common/metal_common.o \
gfx/drivers/metal.o \
menu/drivers_display/menu_display_metal.o \
gfx/drivers_font/metal_raster_font.o
endif
ifeq ($(HAVE_MPV), 1)
OBJ += cores/libretro-mpv/mpv-libretro.o
DEFINES += -I$(DEPS_DIR) -DHAVE_MPV
LIBS += -lmpv
endif
ifeq ($(HAVE_OPENGLES), 1)
LIBS += $(OPENGLES_LIBS)
DEFINES += $(OPENGLES_CFLAGS) -DHAVE_OPENGLES
@@ -1168,7 +1161,7 @@ ifeq ($(HAVE_VULKAN), 1)
CXXFLAGS += -fpermissive
endif
CXXFLAGS += -Wno-switch -Wno-sign-compare -fno-strict-aliasing -Wno-maybe-uninitialized -Wno-reorder -Wno-parentheses
CXXFLAGS += -Wno-switch -Wno-sign-compare -fno-strict-aliasing -Wno-reorder -Wno-parentheses
OBJ += gfx/drivers/vulkan.o \
gfx/common/vulkan_common.o \
@@ -1182,7 +1175,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
@@ -1257,8 +1250,7 @@ endif
endif
ifeq ($(HAVE_HLSL), 1)
OBJ += gfx/drivers_renderchain/d3d9_hlsl_renderchain.o \
gfx/drivers_shader/shader_hlsl.o
OBJ += gfx/drivers_renderchain/d3d9_hlsl_renderchain.o
endif
endif
@@ -1373,9 +1365,14 @@ ifeq ($(HAVE_GLSLANG), 1)
$(wildcard $(DEPS_DIR)/glslang/glslang/OGLCompilersDLL/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent/preprocessor/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/hlsl/*.cpp) \
$(wildcard $(DEPS_DIR)/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM)/*.cpp)
ifneq ($(findstring Win32,$(OS)),)
DEFINES += -DENABLE_HLSL
GLSLANG_SOURCES += $(wildcard $(DEPS_DIR)/glslang/glslang/hlsl/*.cpp)
endif
OBJ += $(GLSLANG_SOURCES:.cpp=.o)
endif
@@ -1436,6 +1433,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\""
@@ -1462,7 +1461,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)
@@ -1614,6 +1614,30 @@ ifeq ($(HAVE_NETWORKING), 1)
$(LIBRETRO_COMM_DIR)/utils/md5.o
endif
ifeq ($(HAVE_DISCORD), 1)
NEED_CXX_LINKER = 1
DEFINES += -DHAVE_DISCORD
DEFINES += -Ideps/discord-rpc/include/ -Ideps/discord-rpc/thirdparty/rapidjson-1.1.0/include/
OBJ += deps/discord-rpc/src/discord_rpc.o \
deps/discord-rpc/src/rpc_connection.o \
deps/discord-rpc/src/serialization.o \
discord/discord.o
ifneq ($(findstring Win32,$(OS)),)
OBJ += deps/discord-rpc/src/discord_register_win.o \
deps/discord-rpc/src/connection_win.o
LIBS += -lpsapi -ladvapi32
endif
ifneq ($(findstring Linux,$(OS)),)
OBJ += deps/discord-rpc/src/discord_register_linux.o \
deps/discord-rpc/src/connection_unix.o
endif
ifneq ($(findstring Darwin,$(OS)),)
OBJ += deps/discord-rpc/src/discord_register_osx.o \
deps/discord-rpc/src/connection_unix.o
endif
endif
ifeq ($(HAVE_NETWORKGAMEPAD), 1)
OBJ += input/input_remote.o \
cores/libretro-net-retropad/net_retropad_core.o
+8 -6
View File
@@ -5,7 +5,7 @@ DEBUG = 0
GRIFFIN_BUILD = 1
WHOLE_ARCHIVE_LINK = 0
BUILD_3DSX = 1
BUILD_3DS = 1
BUILD_3DS = 0
BUILD_CIA = 1
LIBCTRU_NO_DEPRECATION = 1
@@ -31,6 +31,12 @@ OBJ += ctr/ctr_system.o
OBJ += ctr/ctr_memory.o
OBJ += ctr/ctr_linear.o
OBJ += ctr/gpu_old.o
OBJ += ctr/exec-3dsx/exec_cia.o \
ctr/exec-3dsx/exec_3dsx.o \
ctr/exec-3dsx/mini-hb-menu/launch.o \
ctr/exec-3dsx/mini-hb-menu/loaders/rosalina.o \
ctr/exec-3dsx/mini-hb-menu/loaders/hax2.o \
ctr/exec-3dsx/mini-hb-menu/loaders/ninjhax1.o
ifeq ($(APP_BIG_TEXT_SECTION), 1)
APP_USE_SVCHAX = 1
@@ -162,7 +168,7 @@ endif
all: $(TARGET)
$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA) $(TARGET).core
$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA)
$(TARGET).3dsx: $(TARGET).elf
$(TARGET).elf: $(OBJ) libretro_ctr.a
@@ -255,9 +261,6 @@ $(TARGET).3ds: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)
$(TARGET).cia: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)
$(MAKEROM) -f cia -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=false
$(TARGET).core: $(TARGET).elf
echo $(APP_UNIQUE_ID) > $(TARGET).core
clean:
rm -f $(OBJ)
@@ -265,7 +268,6 @@ clean:
rm -f $(TARGET).elf
rm -f $(TARGET).3ds
rm -f $(TARGET).cia
rm -f $(TARGET).core
rm -f $(TARGET).smdh
rm -f $(TARGET).bnr
rm -f $(TARGET).icn
+11 -4
View File
@@ -2,12 +2,12 @@ TARGET := retroarch_3ds_salamander
LIBRETRO =
DEBUG = 0
BUILD_3DSX = 0
BUILD_3DSX = 1
BUILD_3DS = 0
BUILD_CIA = 1
APP_TITLE = Retroarch 3DS
APP_DESCRIPTION = Retroarch 3DS
APP_TITLE = RetroArch 3DS
APP_DESCRIPTION = RetroArch 3DS
APP_AUTHOR = Team Libretro
APP_PRODUCT_CODE = RETROARCH-3DS
APP_UNIQUE_ID = 0xBAC00
@@ -39,6 +39,13 @@ OBJ := ctr/ctr_system.o \
libretro-common/hash/rhash.o \
file_path_str.o \
verbosity.o
OBJ += ctr/exec-3dsx/exec_cia.o \
ctr/exec-3dsx/exec_3dsx.o \
ctr/exec-3dsx/mini-hb-menu/launch.o \
ctr/exec-3dsx/mini-hb-menu/loaders/rosalina.o \
ctr/exec-3dsx/mini-hb-menu/loaders/hax2.o \
ctr/exec-3dsx/mini-hb-menu/loaders/ninjhax1.o
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitpro")
@@ -182,7 +189,7 @@ ifeq ($(APP_BIG_TEXT_SECTION), 1)
else
rm -f $(TARGET).xml
endif
-3dsxtool $< $@ $(_3DSXFLAGS)
$(DEVKITARM)/bin/3dsxtool $< $@ $(_3DSXFLAGS)
$(TARGET).elf: ctr/3dsx_custom_crt0.o
$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@
+222
View File
@@ -0,0 +1,222 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
endif
TOPDIR ?= $(CURDIR)
include $(DEVKITPRO)/libnx/switch_rules
TARGET := retroarch_switch
DEBUG ?= 0
WHOLE_ARCHIVE_LINK = 0
GRIFFIN_BUILD = 0
OBJ :=
# For threading we need to overwrite some vars with global defines because devkitPro's includes
# make it hard for us. This works for the pthread wrapper
DEFINES_THREAD := -Dpthread_t=Thread -Dpthread_mutex_t=Mutex -Dpthread_mutexattr_t='void*' -Dpthread_attr_t=int -Dpthread_cond_t=CondVar -Dpthread_condattr_t='int' -D_SYS__PTHREADTYPES_H_
DEFINES := -U__linux__ -U__linux -DRARCH_INTERNAL -DGLOBAL_CONFIG_DIR='"/switch"' $(DEFINES_THREAD)
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
HAVE_RTGA = 1
HAVE_RPNG = 1
HAVE_RJPEG = 1
HAVE_RBMP = 1
HAVE_RGUI = 1
HAVE_ZLIB = 1
HAVE_BUILTINZLIB = 1
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 0
HAVE_XMB = 0
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_RUNAHEAD = 1
# RetroArch libnx useful flags
HAVE_OVERLAY = 0
HAVE_THREADS = 1
HAVE_PTHREADS = 1
HAVE_FREETYPE = 0
HAVE_SWITCH = 1
HAVE_LIBNX = 1
include Makefile.common
BLACKLIST :=
#BLACKLIST += input/input_overlay.o
#BLACKLIST += tasks/task_overlay.o
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
# EXEFS_SRC is the optional input directory containing data copied into exefs, if anything this normally should only contain "main.npdm".
# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional)
#
# NO_ICON: if set to anything, do not use icon.
# NO_NACP: if set to anything, no .nacp file is generated.
# APP_TITLE is the name of the app stored in the .nacp file (Optional)
# APP_AUTHOR is the author of the app stored in the .nacp file (Optional)
# APP_VERSION is the version of the app stored in the .nacp file (Optional)
# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional)
# ICON is the filename of the icon (.jpg), relative to the project folder.
# If not set, it attempts to use one of the following (in this order):
# - <Project name>.jpg
# - icon.jpg
# - <libnx folder>/default_icon.jpg
#---------------------------------------------------------------------------------
BUILD := build
SOURCES := $(CURDIR)/source
DATA := data
INCLUDES := include
EXEFS_SRC := exefs_src
#ROMFS := switch/romfs
APP_TITLE := RetroArch
APP_VERSION := 1.0.0
APP_AUTHOR := libretro Team
NO_ICON := 1
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -mcpu=cortex-a57+crc+fp+simd
CFLAGS := -g -Wall -O3 -ffast-math -ffunction-sections \
$(ARCH) $(DEFINES) -Ideps -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBNX)/include -include $(LIBNX)/include/switch.h #$(shell $(DEVKITPRO)/portlibs/switch/bin/freetype-config --cflags)
CFLAGS += $(INCLUDE) -DSWITCH=1 -DHAVE_LIBNX=1 -DNXLINK=1
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-definition -Wl,-Map,$(notdir $*.map)
LIBS := -lnx -lm -lstdc++ -lbz2 -lpng -lz
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(PORTLIBS) $(LIBNX)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(TARGET)
export TOPDIR := $(CURDIR)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(OBJ) libretro_switch.a
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES)))
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
export BUILD_EXEFS_SRC := $(TOPDIR)/$(EXEFS_SRC)
ifeq ($(strip $(ICON)),)
icons := $(wildcard *.jpg)
ifneq (,$(findstring $(TARGET).jpg,$(icons)))
export APP_ICON := $(TOPDIR)/$(TARGET).jpg
else
ifneq (,$(findstring icon.jpg,$(icons)))
export APP_ICON := $(TOPDIR)/icon.jpg
endif
endif
else
export APP_ICON := $(TOPDIR)/$(ICON)
endif
ifeq ($(strip $(NO_ICON)),)
export NROFLAGS += --icon=$(APP_ICON)
endif
ifeq ($(strip $(NO_NACP)),)
export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp
endif
ifneq ($(APP_TITLEID),)
export NACPFLAGS += --titleid=$(APP_TITLEID)
endif
ifneq ($(ROMFS),)
export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS)
endif
DEPENDS := $(OFILES:.o=.d)
.PHONY: clean all
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
all : $(OUTPUT).pfs0 $(OUTPUT).nro
$(OUTPUT).pfs0 : $(OUTPUT).nso
$(OUTPUT).nso : $(OUTPUT).elf
ifeq ($(strip $(NO_NACP)),)
$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp
else
$(OUTPUT).nro : $(OUTPUT).elf
endif
$(OUTPUT).elf : $(OBJ)
clean:
rm -f $(OBJ) $(OUTPUT).pfs0 $(OUTPUT).nro $(OUTPUT).elf
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#---------------------------------------------------------------------------------
%.bin.o %_bin.h : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
+1
View File
@@ -25,6 +25,7 @@ HAVE_XAUDIO := 1
HAVE_XINPUT := 1
HAVE_WASAPI := 0
HAVE_THREAD_STORAGE := 1
HAVE_WINMM := 1
HAVE_RPNG := 1
HAVE_ZLIB := 1
+62
View File
@@ -0,0 +1,62 @@
# Hakchi version added to ease confusion amongst Hakchi community due to messy past...
#
# Make sure you have readelf installed (sudo apt-get install readelf) to patch the binary
# Might not be needed for your build but it's a useful tool and for safety it should be
# run anyway to ensure the SDL2 link isn't broken...
HAKCHI_VER := Hakchi_Retroarch_Neo_v1_7_3b
HAKCHI_NAME := "Hakchi RetroArch 'Neo' v1.7.3b
MOD_CREATOR := TheOtherGuys
MOD_CATEGORY := RetroArch
HAKCHI_DIR := hakchi
TARGET := retroarch
GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`")
all: $(TARGET)
retroarch:
readelf -v #Check if you have readelf installed... (sudo apt-get install readelf)
./configure --host=arm-linux-gnueabihf --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard
make -f Makefile -j HAVE_HAKCHI=1
patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary...
#/usr/bin/arm-linux-gnueabihf-strip retroarch
rm -f $(HAKCHI_DIR)/bin/retroarch
cp retroarch $(HAKCHI_DIR)/bin/retroarch
echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > $(HAKCHI_DIR)/etc/libretro/retroarch_version
cp $(HAKCHI_DIR)/readme.md $(HAKCHI_DIR)/readme_COPY.md
printf "%s\n" \
"---" \
"Name: $(HAKCHI_VER)" \
"Creator: $(MOD_CREATOR)" \
"Category: $(MOD_CATEGORY)" \
"Version: $(HAKCHI_VER)" \
"Built on: $(shell date)" \
"Git commit: $(GIT_COMMIT)" \
"---" > $(HAKCHI_DIR)/readme.md
cat $(HAKCHI_DIR)/readme_COPY.md >> $(HAKCHI_DIR)/readme.md
rm $(HAKCHI_DIR)/readme_COPY.md
@echo "** BUILDING HAKCHI $(HAKCHI_VER) HMOD PACKAGE **"
cd $(HAKCHI_DIR)/; tar -czvf "$(HAKCHI_VER).hmod" *
mv $(HAKCHI_DIR)/$(HAKCHI_VER).hmod .
@echo "** BUILT HAKCHI $(HAKCHI_VER) HMOD PACKAGE **"
clean:
rm -f *.o
rm -f audio/*.o
rm -f conf/*.o
rm -f gfx/*.o
rm -f gfx/drivers_font/*.o
rm -f gfx/drivers_font_renderer/*.o
rm -f gfx/drivers_context/*.o
rm -f gfx/py_state/*.o
rm -f compat/*.o
rm -f record/*.o
rm -f input/*.o
rm -f tools/*.o
rm -f $(BINDIR)/retroarch
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
rm -f $(HAKCHI_DIR)/bin/retroarch
rm -f $(HAKCHI_VER).hmod
rm -f $(HAKCHI_DIR)/etc/libretro/retroarch_version
+1 -1
View File
@@ -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 -DHAVE_RUNAHEAD
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 -DHAVE_DR_MP3 -DHAVE_DR_FLAC
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
+2 -2
View File
@@ -13,7 +13,7 @@ TARGET = retroarchpsp
ifeq ($(DEBUG), 1)
OPTIMIZE_LV := -O0 -g
else
OPTIMIZE_LV := -O2
OPTIMIZE_LV := -O3
endif
ifeq ($(WHOLE_ARCHIVE_LINK), 1)
@@ -22,7 +22,7 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
endif
INCDIR = deps deps/stb deps/libz deps/7zip deps/pthreads deps/pthreads/platform/psp deps/pthreads/platform/helper libretro-common/include
CFLAGS = $(OPTIMIZE_LV) -G0 -std=gnu99 -ffast-math
CFLAGS = $(OPTIMIZE_LV) -G0 -std=gnu99 -ffast-math -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP -D_MIPS_ARCH_ALLEGREX -DHAVE_LANGEXTRA -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DWANT_ZLIB -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
+7 -4
View File
@@ -6,12 +6,13 @@ WHOLE_ARCHIVE_LINK = 0
OBJ :=
DEFINES := -DSWITCH=1 -U__linux__ -U__linux
DEFINES := -DSWITCH=1 -U__linux__ -U__linux -DRARCH_INTERNAL -DHAVE_DYNAMIC
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 -DHAVE_DYNAMIC
else
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
@@ -29,6 +30,8 @@ else
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_RUNAHEAD = 1
HAVE_DYNAMIC = 1
include Makefile.common
BLACKLIST :=
@@ -39,17 +42,17 @@ endif
ifeq ($(strip $(LIBTRANSISTOR_HOME)),)
$(error "Please set LIBTRANSISTOR_HOME in your environment. export LIBTRANSISTOR_HOME=<path t>o libtransistor")
$(error "Please set LIBTRANSISTOR_HOME in your environment. export LIBTRANSISTOR_HOME=<path/to/libtransistor/dist/>")
endif
include $(LIBTRANSISTOR_HOME)/libtransistor.mk
INCDIRS := -I. -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBTRANSISTOR_HOME)/build/sdl2_install/include/SDL2/
INCDIRS := -I. -Ideps -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBTRANSISTOR_HOME)/build/sdl2_install/include/SDL2/
LIBDIRS := -L.
TARGETS := $(TARGET).nro
CFLAGS += $(INCDIRS) $(DEFINES) -Wunused-command-line-argument
CFLAGS += $(INCDIRS) $(DEFINES) -Wno-unused-command-line-argument -Werror-implicit-function-declaration
all: $(TARGETS)
+27 -24
View File
@@ -6,11 +6,10 @@ DEBUG = 0
GRIFFIN_BUILD = 0
SALAMANDER_BUILD = 0
WHOLE_ARCHIVE_LINK = 0
WIIU_HID = 1
HAVE_RUNAHEAD = 1
WIIU_HID = 0
WIIU_LOG_RPX = 0
BUILD_DIR = objs/wiiu
PC_DEVELOPMENT_IP_ADDRESS ?=
PC_DEVELOPMENT_TCP_PORT ?=
ifeq ($(SALAMANDER_BUILD),1)
@@ -29,11 +28,11 @@ ifneq ($(V), 1)
endif
OBJ :=
OBJ += wiiu/input/wpad_driver.o
OBJ += wiiu/input/kpad_driver.o
OBJ += wiiu/input/pad_functions.o
OBJ += wiiu/main.o
OBJ += wiiu/system/memory.o
OBJ += wiiu/system/atomic.o
OBJ += wiiu/system/exception_handler.o
OBJ += wiiu/system/missing_libc_functions.o
OBJ += wiiu/fs/sd_fat_devoptab.o
OBJ += wiiu/fs/fs_utils.o
OBJ += wiiu/hbl.o
@@ -46,18 +45,14 @@ endif
ifeq ($(WIIU_HID),1)
DEFINES += -DWIIU_HID
OBJ += wiiu/input/hidpad_driver.o
OBJ += wiiu/input/wiiu_hid.o
OBJ += input/drivers_joypad/wiiu/hidpad_driver.o
OBJ += input/drivers_hid/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)
@@ -93,7 +88,6 @@ 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
OBJ += gfx/drivers/gx2_shaders/sprite.o
@@ -124,7 +118,7 @@ endif
HAVE_RGUI = 1
HAVE_ZLIB = 1
HAVE_7ZIP = 1
HAVE_BUILTINZLIB = 1
HAVE_BUILTINZLIB = 0
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 1
@@ -151,6 +145,10 @@ endif
OBJ += menu/drivers_display/menu_display_wiiu.o
OBJ += input/drivers/wiiu_input.o
OBJ += input/drivers_joypad/wiiu_joypad.o
OBJ += input/drivers_joypad/wiiu/wpad_driver.o
OBJ += input/drivers_joypad/wiiu/kpad_driver.o
OBJ += input/drivers_joypad/wiiu/pad_functions.o
OBJ += audio/drivers/wiiu_audio.o
OBJ += frontend/drivers/platform_wiiu.o
endif
@@ -164,10 +162,6 @@ DEFINES += -DWIIU -DMSB_FIRST -D__WUT__
DEFINES += -DHAVE_MAIN
DEFINES += -DRARCH_CONSOLE
ifneq ($(PC_DEVELOPMENT_IP_ADDRESS),)
DEFINES += -DPC_DEVELOPMENT_IP_ADDRESS='"$(PC_DEVELOPMENT_IP_ADDRESS)"'
endif
ifneq ($(PC_DEVELOPMENT_TCP_PORT),)
DEFINES += -DPC_DEVELOPMENT_TCP_PORT=$(PC_DEVELOPMENT_TCP_PORT)
endif
@@ -200,7 +194,16 @@ else
ELF2RPL := $(ELF2RPL).exe
endif
INCDIRS := -I. -Ideps -Ideps/stb -Ideps/libz -Ideps/7zip -Ilibretro-common/include -Iwiiu -Iwiiu/include -I$(DEVKITPRO)/portlibs/ppc/include
INCDIRS := -I.
INCDIRS += -Ideps
INCDIRS += -Ideps/stb
INCDIRS += -Ideps/libz
INCDIRS += -Ideps/7zip
INCDIRS += -Ilibretro-common/include
INCDIRS += -Iinput/include
INCDIRS += -Iwiiu
INCDIRS += -Iwiiu/include
INCDIRS += -I$(DEVKITPRO)/portlibs/ppc/include
LIBDIRS := -L. -L$(DEVKITPRO)/portlibs/ppc/lib
CFLAGS := -mwup -mcpu=750 -meabi -mhard-float
@@ -229,7 +232,7 @@ CXXFLAGS = $(CFLAGS) -fno-rtti -fno-exceptions
LDFLAGS += -Wl,--gc-sections
LIBS := $(WHOLE_START) -lretro_wiiu $(WHOLE_END) -lm
LIBS := $(WHOLE_START) -lretro_wiiu $(WHOLE_END) -lm -lpng -lz
ifneq ($(WANT_LIBFAT), 1)
LIBS += -lfat
+1
View File
@@ -18,6 +18,7 @@ HAVE_PYTHON = 0
DYNAMIC = 1
HAVE_XINPUT = 1
HAVE_WINMM = 1
HAVE_SDL := 0
HAVE_SDL2 := 0
+22 -21
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 as well as
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".
@@ -27,12 +27,11 @@ interface to include support for emulators and/or game engines. libretro is comp
## Binaries
Latest Windows binaries are currently hosted on the [buildbot](http://buildbot.libretro.com/).
Latest binaries are currently hosted on the [buildbot](http://buildbot.libretro.com/).
## Support
To reach developers, either make an issue here on GitHub, make a thread on the [forum](http://www.libretro.com/forums/),
or visit our IRC channel: #retroarch @ irc.freenode.org.
To reach developers, either make an issue here on GitHub, make a thread on the [forum](http://www.libretro.com/forums/), chat on [Discord](https://discord.gg/C4amCeV), or visit our IRC channel: #retroarch @ irc.freenode.org.
## Documentation
@@ -51,13 +50,13 @@ More developer-centric stuff is found [here](https://github.com/libretro/libretr
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 is designed to be very portable and features a gamepad-centric and touchscreen UI.
It also has a full-featured command-line interface.
In some areas, RetroArch goes beyond and emphasizes on not-so-common technical features such as multi-pass shader support,
real-time rewind (Braid-style), video recording (using FFmpeg), etc.
real-time rewind (Braid-style), video recording (using FFmpeg), run-ahead input latency removal, etc.
RetroArch also emphasizes on being easy to integrate into various launcher frontends.
RetroArch also emphasizes being easy to integrate into various launcher frontends.
## Platforms
@@ -66,22 +65,24 @@ RetroArch has been ported to the following platforms:
- DOS
- Windows
- Linux
- Emscripten
- Emscripten (WebAssembly and JavaScript)
- FreeBSD
- NetBSD
- OpenBSD
- Haiku
- Solaris
- MacOS X
- macOS (PPC, x86-32 and x86-64)
- PlayStation 3
- PlayStation Portable
- PlayStation Vita
- Original Microsoft Xbox
- Microsoft Xbox 360 (Libxenon/XeXDK)
- Nintendo Wii, GameCube (Libogc)
- Nintendo WiiU
- Nintendo GameCube
- Nintendo Wii
- Nintendo Wii U
- Nintendo 3DS
- Nintendo Switch
- Nintendo NES/SNES Classic Edition
- Raspberry Pi
- Android
- iOS
@@ -147,9 +148,9 @@ Instructions for compiling and installing RetroArch can be found in the [Libretr
## 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.
CRT SwitchRes 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 pleasae make sure you have installed CRTEmudriver and installed some modelines. The minimum modelins for all games to switch correctly are:
If you are running Windows, before enabling the CRT SwitchRes options please make sure you have installed CRTEmudriver and installed some modelines. The minimum modelines for all games to switch correctly are:
- 2560 x 192 @ 60.000000
- 2560 x 200 @ 60.000000
@@ -161,7 +162,7 @@ If you are running windows, before enabling the CRT SwitchRes options pleasae ma
- 2560 x 448 @ 60.000000
- 2560 x 480 @ 60.000000
Install these modelines replacing 2560 with your desired super resuloution. The above resolutions are NTSC only so if you would be playing any PAL content please add pal modelines:
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
@@ -173,7 +174,7 @@ Install these modelines replacing 2560 with your desired super resuloution. The
- 2560 x 448 @ 50.000000
- 2560 x 480 @ 50.000000
Some games will require heigher PAL resolutions which should also be installed:
Some games will require higher PAL resolutions which should also be installed:
- 2560 x 512 @ 50.000000
- 2560 x 576 @ 50.000000
@@ -182,11 +183,11 @@ 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 swithing will be activated.
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 reolutions are activeted you will need a whole new set of modelines:
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
@@ -249,10 +250,10 @@ If native reolutions are activeted you will need a whole new set of modelines:
- 400 x 254 @ 54.706841 MK
- 384 x 224 @ 59.637405 CPS1
These modelines are more acurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution chages on the orgiginal hardware. For the best results super resolutions are the way to go.
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
## CRT resolution switching & MAME
Some arecade resolutions can be alot different. There is resolution detection to ensure mame games will be diplayed 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.
Some arcade resolutions can be very different from consumer CRTs. There is resolution detection to ensure MAME games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the MAME game will look just like the original hardware.
Mame roms that run in a vertical aspect like DoDonPachi need to be roted within mame before rolution swithing and aspect correction will work. Do this before enableing 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.
MAME ROMs that run in a vertical aspect like DoDonPachi need to be rotated within MAME before resolution switching and aspect correction will work. Do this before enabling CRT SwitchRes so that RetroArch will run in your desktop resolution. Once you have rotated any games that may need it turn CRT SwitchRes on.
+311 -91
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
@@ -117,23 +125,12 @@ static const audio_driver_t *audio_drivers[] = {
#endif
#ifdef SWITCH
&audio_switch,
&audio_switch_thread,
#endif
&audio_null,
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;
@@ -183,6 +180,11 @@ 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,6 +195,22 @@ enum resampler_quality audio_driver_get_resampler_quality(void)
return (enum resampler_quality)settings->uints.audio_resampler_quality;
}
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:
*
@@ -368,6 +386,12 @@ static bool audio_driver_deinit_internal(void)
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;
@@ -524,7 +548,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");
@@ -534,7 +558,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
audio_driver_free_samples_count = 0;
audio_mixer_init(settings->uints.audio_out_rate);
audio_driver_mixer_init(settings->uints.audio_out_rate);
/* Threaded driver is initially stopped. */
if (
@@ -576,20 +600,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);
@@ -606,8 +627,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)
@@ -662,7 +683,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)
{
@@ -675,7 +696,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,
@@ -725,6 +746,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.
@@ -840,19 +877,19 @@ 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);
audio_driver_input = info->sample_rate;
if (timing_skew <= max_timing_skew)
if (timing_skew <= max_timing_skew && !settings->bools.vrr_runloop_enable)
audio_driver_input *= (video_refresh_rate / info->fps);
RARCH_LOG("[Audio]: Set audio input rate to: %.2f Hz.\n",
@@ -976,6 +1013,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);
@@ -1021,18 +1064,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:
@@ -1042,15 +1083,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)
@@ -1074,9 +1175,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)
@@ -1085,74 +1195,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();
}
@@ -1351,15 +1580,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)
{
+47 -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,27 @@ 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;
@@ -137,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;
@@ -271,10 +287,32 @@ 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;
@@ -300,6 +338,7 @@ extern audio_driver_t audio_psp;
extern audio_driver_t audio_ctr_csnd;
extern audio_driver_t audio_ctr_dsp;
extern audio_driver_t audio_switch;
extern audio_driver_t audio_switch_thread;
extern audio_driver_t audio_rwebaudio;
extern audio_driver_t audio_null;
+27 -1
View File
@@ -32,7 +32,9 @@
#include <retro_inline.h>
#include <retro_miscellaneous.h>
#include <retro_timers.h>
#ifdef HAVE_THREADS
#include <rthreads/rthreads.h>
#endif
#include <queues/fifo_queue.h>
#include "../audio_driver.h"
@@ -59,7 +61,11 @@ typedef struct dsound
CRITICAL_SECTION crit;
HANDLE event;
#ifdef HAVE_THREADS
sthread_t *thread;
#else
HANDLE thread;
#endif
unsigned buffer_size;
@@ -137,7 +143,11 @@ static INLINE void release_region(dsound_t *ds, const struct audio_lock *region)
region->size1, region->chunk2, region->size2);
}
#ifdef HAVE_THREADS
static void dsound_thread(void *data)
#else
static DWORD CALLBACK dsound_thread(PVOID data)
#endif
{
DWORD write_ptr;
dsound_t *ds = (dsound_t*)data;
@@ -219,7 +229,13 @@ static void dsound_stop_thread(dsound_t *ds)
ds->thread_alive = false;
#ifdef HAVE_THREADS
sthread_join(ds->thread);
#else
WaitForSingleObject(ds->thread, INFINITE);
CloseHandle(ds->thread);
#endif
ds->thread = NULL;
}
@@ -228,7 +244,12 @@ static bool dsound_start_thread(dsound_t *ds)
if (!ds->thread)
{
ds->thread_alive = true;
ds->thread = sthread_create(dsound_thread, ds);
#ifdef HAVE_THREADS
ds->thread = sthread_create(dsound_thread, ds);
#else
ds->thread = CreateThread(NULL, 0, dsound_thread, ds, 0, NULL);
#endif
if (!ds->thread)
return false;
}
@@ -261,7 +282,12 @@ static void dsound_free(void *data)
if (ds->thread)
{
ds->thread_alive = false;
#ifdef HAVE_THREADS
sthread_join(ds->thread);
#else
WaitForSingleObject(ds->thread, INFINITE);
CloseHandle(ds->thread);
#endif
}
DeleteCriticalSection(&ds->crit);
+136 -71
View File
@@ -1,4 +1,6 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2018 - misson20000
* Copyright (C) 2018 - m4xw
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -17,12 +19,16 @@
#include <malloc.h>
#include <stdint.h>
#include<libtransistor/nx.h>
#include<libtransistor/alloc_pages.h>
#include "switch_audio_compat.h"
#include "../audio_driver.h"
#include "../../verbosity.h"
#ifdef HAVE_LIBNX
#define BUFFER_COUNT 5
#else
#define BUFFER_COUNT 3
#endif
static const int sample_rate = 48000;
static const int max_num_samples = sample_rate;
static const int num_channels = 2;
@@ -30,38 +36,57 @@ static const size_t sample_buffer_size = ((max_num_samples * num_channels * size
typedef struct
{
audio_output_t output;
handle_t event;
audio_output_buffer_t buffers[3];
audio_output_buffer_t *current_buffer;
bool blocking;
bool is_paused;
uint64_t last_append;
unsigned latency;
compat_audio_out_buffer buffers[BUFFER_COUNT];
compat_audio_out_buffer *current_buffer;
#ifndef HAVE_LIBNX
audio_output_t output;
handle_t event;
#endif
} switch_audio_t;
static uint32_t switch_audio_data_size(void)
{
#ifdef HAVE_LIBNX
static const int framerate = 1000 / 30;
static const int samplecount = (sample_rate / framerate);
return (samplecount * num_channels * sizeof(uint16_t));
#else
return sample_buffer_size;
#endif
}
static size_t switch_audio_buffer_size(void *data)
{
(void) data;
#ifdef HAVE_LIBNX
return (switch_audio_data_size() + 0xfff) & ~0xfff;
#else
return sample_buffer_size;
#endif
}
static ssize_t switch_audio_write(void *data, const void *buf, size_t size)
{
size_t to_write = size;
switch_audio_t *swa = (switch_audio_t*) data;
#if 0
RARCH_LOG("write %ld samples\n", size/sizeof(uint16_t));
#endif
if (!swa)
return -1;
if (!swa->current_buffer)
{
uint32_t num;
if (audio_ipc_output_get_released_buffer(&swa->output, &num, &swa->current_buffer) != RESULT_OK)
if (switch_audio_ipc_output_get_released_buffer(swa, num) != 0)
{
RARCH_LOG("Failed to get released buffer?\n");
return -1;
}
#if 0
RARCH_LOG("got buffer, num %d, ptr %p\n", num, swa->current_buffer);
#endif
if (num < 1)
swa->current_buffer = NULL;
@@ -73,47 +98,46 @@ static ssize_t switch_audio_write(void *data, const void *buf, size_t size)
while(swa->current_buffer == NULL)
{
uint32_t num;
uint32_t handle_idx;
uint32_t handle_idx = 0;
num = 0;
#ifdef HAVE_LIBNX
if (audoutWaitPlayFinish(&swa->current_buffer, &num, U64_MAX) != 0) { }
#else
svcWaitSynchronization(&handle_idx, &swa->event, 1, 33333333);
svcResetSignal(swa->event);
if (audio_ipc_output_get_released_buffer(&swa->output, &num, &swa->current_buffer) != RESULT_OK)
if (switch_audio_ipc_output_get_released_buffer(swa, num) != 0)
return -1;
#endif
}
} else {
}
else
/* no buffer, nonblocking... */
return 0;
}
}
swa->current_buffer->data_size = 0;
}
if (to_write > sample_buffer_size - swa->current_buffer->data_size)
to_write = sample_buffer_size - swa->current_buffer->data_size;
if (to_write > switch_audio_buffer_size(NULL) - swa->current_buffer->data_size)
to_write = switch_audio_buffer_size(NULL) - swa->current_buffer->data_size;
#ifndef HAVE_LIBNX
memcpy(((uint8_t*) swa->current_buffer->sample_data) + swa->current_buffer->data_size, buf, to_write);
#else
memcpy(((uint8_t*) swa->current_buffer->buffer) + swa->current_buffer->data_size, buf, to_write);
#endif
swa->current_buffer->data_size += to_write;
swa->current_buffer->buffer_size = sample_buffer_size;
swa->current_buffer->buffer_size = switch_audio_buffer_size(NULL);
if (swa->current_buffer->data_size > (48000*swa->latency)/1000)
if (swa->current_buffer->data_size > (48000 * swa->latency) / 1000)
{
result_t r = audio_ipc_output_append_buffer(&swa->output, swa->current_buffer);
if (r != RESULT_OK)
{
RARCH_ERR("failed to append buffer: 0x%x\n", r);
return -1;
}
if (switch_audio_ipc_output_append_buffer(swa, swa->current_buffer) != 0)
return -1;
swa->current_buffer = NULL;
}
#if 0
RARCH_LOG("submitted %ld samples, %ld samples since last submit\n",
to_write/num_channels/sizeof(uint16_t),
(svcGetSystemTick() - swa->last_append) * sample_rate / 19200000);
#endif
swa->last_append = svcGetSystemTick();
return to_write;
@@ -125,25 +149,32 @@ static bool switch_audio_stop(void *data)
if (!swa)
return false;
if(!swa->is_paused) {
if(audio_ipc_output_stop(&swa->output) != RESULT_OK)
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
if (!swa->is_paused)
if (switch_audio_ipc_output_stop(swa) != 0)
return false;
}
swa->is_paused = true;
#endif
return true;
}
static bool switch_audio_start(void *data, bool is_shutdown)
{
switch_audio_t *swa = (switch_audio_t*) data;
if (!swa)
return false;
if(swa->is_paused) {
if (audio_ipc_output_start(&swa->output) != RESULT_OK)
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
if (swa->is_paused)
if (switch_audio_ipc_output_start(swa) != 0)
return false;
}
swa->is_paused = false;
#endif
return true;
}
@@ -159,8 +190,22 @@ static void switch_audio_free(void *data)
{
switch_audio_t *swa = (switch_audio_t*) data;
if (!swa)
return;
#ifdef HAVE_LIBNX
if (!swa->is_paused)
audoutStopAudioOut();
audoutExit();
int i;
for (i = 0; i < BUFFER_COUNT; i++)
free(swa->buffers[i].buffer);
#else
audio_ipc_output_close(&swa->output);
audio_ipc_finalize();
#endif
free(swa);
}
@@ -189,11 +234,10 @@ static void switch_audio_set_nonblock_state(void *data, bool state)
}
static void *switch_audio_init(const char *device,
unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
result_t r;
unsigned i;
char names[8][0x20];
uint32_t num_names = 0;
@@ -202,12 +246,14 @@ static void *switch_audio_init(const char *device,
if (!swa)
return NULL;
r = audio_ipc_init();
if (r != RESULT_OK)
if (switch_audio_ipc_init() != 0)
goto fail;
if (audio_ipc_list_outputs(&names[0], 8, &num_names) != RESULT_OK)
#ifdef HAVE_LIBNX
if (audoutStartAudioOut() != 0)
goto fail;
#else
if (audio_ipc_list_outputs(&names[0], 8, &num_names) != 0)
goto fail_audio_ipc;
if (num_names != 1)
@@ -216,7 +262,7 @@ static void *switch_audio_init(const char *device,
goto fail_audio_ipc;
}
if (audio_ipc_open_output(names[0], &swa->output) != RESULT_OK)
if (audio_ipc_open_output(names[0], &swa->output) != 0)
goto fail_audio_ipc;
if (swa->output.sample_rate != sample_rate)
@@ -239,51 +285,70 @@ static void *switch_audio_init(const char *device,
goto fail_audio_output;
}
if (audio_ipc_output_register_buffer_event(&swa->output, &swa->event) != RESULT_OK)
if (audio_ipc_output_register_buffer_event(&swa->output, &swa->event) != 0)
goto fail_audio_output;
#endif
swa->blocking = block_frames;
*new_rate = swa->output.sample_rate;
for(i = 0; i < 3; i++)
for (i = 0; i < BUFFER_COUNT; i++)
{
swa->buffers[i].ptr = &swa->buffers[i].sample_data;
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;
swa->buffers[i].buffer_size = switch_audio_buffer_size(NULL);
swa->buffers[i].data_size = switch_audio_data_size();
if(swa->buffers[i].sample_data == NULL)
#ifdef HAVE_LIBNX
swa->buffers[i].next = NULL; /* Unused */
swa->buffers[i].data_offset = 0;
swa->buffers[i].buffer = memalign(0x1000, switch_audio_buffer_size(NULL));
if (swa->buffers[i].buffer == NULL)
goto fail_audio_output;
memset(swa->buffers[i].buffer, 0, switch_audio_buffer_size(NULL));
#else
swa->buffers[i].ptr = &swa->buffers[i].sample_data;
swa->buffers[i].unknown = 0;
swa->buffers[i].sample_data = alloc_pages(sample_buffer_size, switch_audio_buffer_size(NULL), NULL);
if (swa->buffers[i].sample_data == NULL)
goto fail_audio_output;
if (audio_ipc_output_append_buffer(&swa->output, &swa->buffers[i]) != RESULT_OK)
#endif
if (switch_audio_ipc_output_append_buffer(swa, &swa->buffers[i]) != 0)
goto fail_audio_output;
}
#ifdef HAVE_LIBNX
*new_rate = audoutGetSampleRate();
#else
*new_rate = swa->output.sample_rate;
#endif
swa->current_buffer = NULL;
swa->latency = latency;
swa->last_append = svcGetSystemTick();
swa->blocking = block_frames;
swa->is_paused = true;
RARCH_LOG("[Audio]: Audio initialized\n");
return swa;
fail_audio_output:
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
audio_ipc_output_close(&swa->output);
#endif
fail_audio_ipc:
/* TODO/FIXME - fix libnx codepath */
#ifndef HAVE_LIBNX
audio_ipc_finalize();
#endif
fail:
free(swa);
if (swa)
free(swa);
return NULL;
}
static size_t switch_audio_buffer_size(void *data)
{
(void) data;
return sample_buffer_size;
}
audio_driver_t audio_switch = {
switch_audio_init,
switch_audio_write,
+93
View File
@@ -0,0 +1,93 @@
#ifndef _SWITCH_AUDIO_COMPAT_H
#define _SWITCH_AUDIO_COMPAT_H
#ifdef HAVE_LIBNX
#include <switch.h>
#else
#include <libtransistor/nx.h>
#endif
#ifdef HAVE_LIBNX
/* libnx definitions */
/* threading */
typedef Mutex compat_mutex;
typedef Thread compat_thread;
typedef CondVar compat_condvar;
#define compat_thread_create(thread, func, data, stack_size, prio, cpu) \
threadCreate(thread, func, data, stack_size, prio, cpu)
#define compat_thread_start(thread) \
threadStart(thread)
#define compat_thread_join(thread) \
threadWaitForExit(thread)
#define compat_thread_close(thread) \
threadClose(thread)
#define compat_mutex_create(mutex) \
mutexInit(mutex)
#define compat_mutex_lock(mutex) \
mutexLock(mutex)
#define compat_mutex_unlock(mutex) \
mutexUnlock(mutex)
#define compat_condvar_create(condvar) \
condvarInit(condvar)
#define compat_condvar_wait(condvar, mutex) \
condvarWait(condvar, mutex)
#define compat_condvar_wake_all(condvar) \
condvarWakeAll(condvar)
/* audio */
typedef AudioOutBuffer compat_audio_out_buffer;
#define switch_audio_ipc_init audoutInitialize
#define switch_audio_ipc_finalize audoutExit
#define switch_audio_ipc_output_get_released_buffer(a, b) audoutGetReleasedAudioOutBuffer(&a->current_buffer, &b)
#define switch_audio_ipc_output_append_buffer(a, b) audoutAppendAudioOutBuffer(b)
#define switch_audio_ipc_output_stop(a) audoutStopAudioOut()
#define switch_audio_ipc_output_start(a) audoutStartAudioOut()
#else
/* libtransistor definitions */
typedef result_t Result;
#define R_FAILED(r) ((r) != RESULT_OK)
/* threading */
typedef trn_mutex_t compat_mutex;
typedef trn_thread_t compat_thread;
typedef trn_condvar_t compat_condvar;
#define compat_thread_create(thread, func, data, stack_size, prio, cpu) \
trn_thread_create(thread, func, data, prio, cpu, stack_size, NULL)
#define compat_thread_start(thread) \
trn_thread_start(thread)
#define compat_thread_join(thread) \
trn_thread_join(thread, -1)
#define compat_thread_close(thread) \
trn_thread_destroy(thread)
#define compat_mutex_create(mutex) \
trn_mutex_create(mutex)
#define compat_mutex_lock(mutex) \
trn_mutex_lock(mutex)
#define compat_mutex_unlock(mutex) \
trn_mutex_unlock(mutex)
#define compat_condvar_create(condvar) \
trn_condvar_create(condvar)
#define compat_condvar_wait(condvar, mutex) \
trn_condvar_wait(condvar, mutex, -1)
#define compat_condvar_wake_all(condvar) \
trn_condvar_signal(condvar, -1)
/* audio */
typedef audio_output_buffer_t compat_audio_out_buffer;
#define switch_audio_ipc_init audio_ipc_init
#define switch_audio_ipc_finalize audio_ipc_finalize
#define switch_audio_ipc_output_get_released_buffer(a, b) audio_ipc_output_get_released_buffer(&a->output, &b, &a->current_buffer)
#define switch_audio_ipc_output_append_buffer(a, b) audio_ipc_output_append_buffer(&a->output, b)
#define switch_audio_ipc_output_stop(a) audio_ipc_output_stop(&a->output)
#define switch_audio_ipc_output_start(a) audio_ipc_output_start(&a->output)
#endif
#endif
+448
View File
@@ -0,0 +1,448 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2018 - misson20000
* Copyright (C) 2018 - m4xw
* Copyright (C) 2018 - lifajucejo
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdint.h>
#include <sys/unistd.h>
#ifdef HAVE_LIBNX
#include <switch.h>
#else
#include <libtransistor/nx.h>
#endif
#include <queues/fifo_queue.h>
#include "../audio_driver.h"
#include "../../verbosity.h"
#include "../../tasks/tasks_internal.h"
#include "switch_audio_compat.h"
static const size_t thread_stack_size = 1024 * 8;
static const int thread_preferred_cpu = 2;
static const int channel_count = 2;
static const size_t sample_size = sizeof(uint16_t);
static const size_t frame_size = channel_count * sample_size;
#define AUDIO_BUFFER_COUNT 2
typedef struct
{
fifo_buffer_t* fifo;
compat_mutex fifoLock;
compat_condvar cond;
compat_mutex condLock;
size_t fifoSize;
volatile bool running;
bool nonblocking;
bool is_paused;
compat_audio_out_buffer buffers[AUDIO_BUFFER_COUNT];
compat_thread thread;
unsigned latency;
uint32_t sampleRate;
#ifndef HAVE_LIBNX
audio_output_t output;
handle_t event;
#endif
} switch_thread_audio_t;
static void mainLoop(void* data)
{
Result rc;
uint32_t released_out_count = 0;
compat_audio_out_buffer *released_out_buffer = NULL;
switch_thread_audio_t *swa = (switch_thread_audio_t*)data;
if (!swa)
return;
RARCH_LOG("[Audio]: start mainLoop cpu %u tid %u\n", svcGetCurrentProcessorNumber(), swa->thread.handle);
while (swa->running)
{
size_t buf_avail, avail, to_write;
if (!released_out_buffer)
{
#ifdef HAVE_LIBNX
rc = audoutWaitPlayFinish(&released_out_buffer, &released_out_count, U64_MAX);
#else
uint32_t handle_idx = 0;
svcWaitSynchronization(&handle_idx, &swa->event, 1, 33333333);
svcResetSignal(swa->event);
rc = audio_ipc_output_get_released_buffer(&swa->output, &released_out_count, &released_out_buffer);
#endif
if (R_FAILED(rc))
{
swa->running = false;
RARCH_LOG("[Audio]: audoutGetReleasedAudioOutBuffer failed: %d\n", (int)rc);
break;
}
released_out_buffer->data_size = 0;
}
buf_avail = released_out_buffer->buffer_size - released_out_buffer->data_size;
compat_mutex_lock(&swa->fifoLock);
avail = fifo_read_avail(swa->fifo);
to_write = MIN(avail, buf_avail);
if (to_write > 0)
{
uint8_t *base;
#ifdef HAVE_LIBNX
base = (uint8_t*) released_out_buffer->buffer;
#else
base = (uint8_t*) released_out_buffer->sample_data;
#endif
fifo_read(swa->fifo, base + released_out_buffer->data_size, to_write);
}
compat_mutex_unlock(&swa->fifoLock);
compat_condvar_wake_all(&swa->cond);
released_out_buffer->data_size += to_write;
if (released_out_buffer->data_size >= released_out_buffer->buffer_size / 2)
{
rc = switch_audio_ipc_output_append_buffer(swa, released_out_buffer);
if (R_FAILED(rc))
{
RARCH_LOG("[Audio]: audoutAppendAudioOutBuffer failed: %d\n", (int)rc);
}
released_out_buffer = NULL;
}
else
svcSleepThread(16000000); /* 16ms */
}
}
static void *switch_thread_audio_init(const char *device, unsigned rate, unsigned latency, unsigned block_frames, unsigned *new_rate)
{
Result rc;
unsigned i;
uint32_t prio;
char names[8][0x20];
uint32_t num_names = 0;
switch_thread_audio_t *swa = (switch_thread_audio_t *)calloc(1, sizeof(*swa));
if (!swa)
return NULL;
swa->running = true;
swa->nonblocking = true;
swa->is_paused = true;
swa->latency = MAX(latency, 8);
rc = switch_audio_ipc_init();
if (R_FAILED(rc))
{
RARCH_LOG("[Audio]: audio init failed %d\n", (int)rc);
free(swa);
return NULL;
}
#ifdef HAVE_LIBNX
rc = audoutStartAudioOut();
if (R_FAILED(rc))
{
RARCH_LOG("[Audio]: audio start init failed: %d\n", (int)rc);
goto fail_audio_ipc;
}
swa->sampleRate = audoutGetSampleRate();
#else
if (audio_ipc_list_outputs(&names[0], 8, &num_names) != RESULT_OK)
goto fail_audio_ipc;
if (num_names != 1)
{
RARCH_ERR("[Audio]: got back more than one AudioOut\n");
goto fail_audio_ipc;
}
if (audio_ipc_open_output(names[0], &swa->output) != RESULT_OK)
goto fail_audio_ipc;
swa->sampleRate = swa->output.sample_rate;
if (swa->output.num_channels != 2)
{
RARCH_ERR("expected %d channels, got %d\n", 2,
swa->output.num_channels);
goto fail_audio_output;
}
if (swa->output.sample_format != PCM_INT16)
{
RARCH_ERR("expected PCM_INT16, got %d\n", swa->output.sample_format);
goto fail_audio_output;
}
if (audio_ipc_output_register_buffer_event(&swa->output, &swa->event) != 0)
goto fail_audio_output;
#endif
*new_rate = swa->sampleRate;
swa->fifoSize = (swa->sampleRate * sample_size * swa->latency) / 1000;
for (i = 0; i < AUDIO_BUFFER_COUNT; i++)
{
#ifdef HAVE_LIBNX
swa->buffers[i].next = NULL; /* Unused */
swa->buffers[i].data_offset = 0;
swa->buffers[i].buffer_size = swa->fifoSize;
swa->buffers[i].data_size = swa->buffers[i].buffer_size;
swa->buffers[i].buffer = memalign(0x1000, swa->buffers[i].buffer_size);
if (swa->buffers[i].buffer == NULL)
goto fail;
memset(swa->buffers[i].buffer, 0, swa->buffers[i].buffer_size);
#else
swa->buffers[i].ptr = &swa->buffers[i].sample_data;
swa->buffers[i].unknown = 0;
swa->buffers[i].buffer_size = swa->fifoSize;
swa->buffers[i].data_size = swa->buffers[i].buffer_size;
swa->buffers[i].sample_data = alloc_pages(swa->buffers[i].buffer_size, swa->buffers[i].buffer_size, NULL);
if (swa->buffers[i].sample_data == NULL)
goto fail_audio_output;
memset(swa->buffers[i].sample_data, 0, swa->buffers[i].buffer_size);
#endif
if (switch_audio_ipc_output_append_buffer(swa, &swa->buffers[i]) != 0)
goto fail_audio_output;
}
compat_mutex_create(&swa->fifoLock);
swa->fifo = fifo_new(swa->fifoSize);
compat_condvar_create(&swa->cond);
RARCH_LOG("[Audio]: switch_thread_audio_init device %s requested rate %hu rate %hu latency %hu block_frames %hu fifoSize %lu\n",
device, rate, swa->sampleRate, swa->latency, block_frames, swa->fifoSize);
svcGetThreadPriority(&prio, 0xffff8000);
rc = compat_thread_create(&swa->thread, &mainLoop, (void*)swa, thread_stack_size, prio - 1, thread_preferred_cpu);
if (R_FAILED(rc))
{
RARCH_LOG("[Audio]: thread creation failed create %u\n", swa->thread.handle);
swa->running = false;
return NULL;
}
if (R_FAILED(compat_thread_start(&swa->thread)))
{
RARCH_LOG("[Audio]: thread creation failed start %u\n", swa->thread.handle);
compat_thread_close(&swa->thread);
swa->running = false;
return NULL;
}
return swa;
fail_audio_output:
#ifndef HAVE_LIBNX
audio_ipc_output_close(&swa->output);
#endif
fail_audio_ipc:
switch_audio_ipc_finalize();
fail:
free(swa); // freeing a null ptr is valid
return NULL;
}
static bool switch_thread_audio_start(void *data, bool is_shutdown)
{
/* RARCH_LOG("[Audio]: switch_thread_audio_start\n"); */
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (!swa)
return false;
swa->is_paused = false;
return true;
}
static bool switch_thread_audio_stop(void *data)
{
switch_thread_audio_t* swa = (switch_thread_audio_t*)data;
if (!swa)
return false;
swa->is_paused = true;
return true;
}
static void switch_thread_audio_free(void *data)
{
unsigned i;
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (!swa)
return;
if (swa->running)
{
swa->running = false;
compat_thread_join(&swa->thread);
compat_thread_close(&swa->thread);
}
switch_audio_ipc_output_stop(swa);
switch_audio_ipc_finalize();
if (swa->fifo)
{
fifo_free(swa->fifo);
swa->fifo = NULL;
}
for (i = 0; i < ARRAY_SIZE(swa->buffers); i++)
{
#ifdef HAVE_LIBNX
free(swa->buffers[i].buffer);
#else
free_pages(swa->buffers[i].sample_data);
#endif
}
free(swa);
swa = NULL;
}
static ssize_t switch_thread_audio_write(void *data, const void *buf, size_t size)
{
size_t avail, written;
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (!swa || !swa->running)
return 0;
if (swa->nonblocking)
{
compat_mutex_lock(&swa->fifoLock);
avail = fifo_write_avail(swa->fifo);
written = MIN(avail, size);
if (written > 0)
fifo_write(swa->fifo, buf, written);
compat_mutex_unlock(&swa->fifoLock);
}
else
{
written = 0;
while (written < size && swa->running)
{
compat_mutex_lock(&swa->fifoLock);
avail = fifo_write_avail(swa->fifo);
if (avail == 0)
{
compat_mutex_unlock(&swa->fifoLock);
compat_mutex_lock(&swa->condLock);
if (swa->running)
compat_condvar_wait(&swa->cond, &swa->condLock);
compat_mutex_unlock(&swa->condLock);
}
else
{
size_t write_amt = MIN(size - written, avail);
fifo_write(swa->fifo, (const char*)buf + written, write_amt);
compat_mutex_unlock(&swa->fifoLock);
written += write_amt;
}
}
}
return written;
}
static bool switch_thread_audio_alive(void *data)
{
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (!swa)
return false;
return !swa->is_paused;
}
static void switch_thread_audio_set_nonblock_state(void *data, bool state)
{
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (swa)
swa->nonblocking = state;
}
static bool switch_thread_audio_use_float(void *data)
{
(void)data;
return false;
}
static size_t switch_thread_audio_write_avail(void *data)
{
size_t val;
switch_thread_audio_t* swa = (switch_thread_audio_t*)data;
compat_mutex_lock(&swa->fifoLock);
val = fifo_write_avail(swa->fifo);
compat_mutex_unlock(&swa->fifoLock);
return val;
}
size_t switch_thread_audio_buffer_size(void *data)
{
switch_thread_audio_t *swa = (switch_thread_audio_t *)data;
if (!swa)
return 0;
return swa->fifoSize;
}
audio_driver_t audio_switch_thread = {
switch_thread_audio_init,
switch_thread_audio_write,
switch_thread_audio_stop,
switch_thread_audio_start,
switch_thread_audio_alive,
switch_thread_audio_set_nonblock_state,
switch_thread_audio_free,
switch_thread_audio_use_float,
"switch_thread",
NULL, /* device_list_new */
NULL, /* device_list_free */
switch_thread_audio_write_avail,
switch_thread_audio_buffer_size
};
/* vim: set ts=3 sw=3 */
+1 -1
View File
@@ -84,7 +84,7 @@ static void* ax_audio_init(const char* device, unsigned rate, unsigned latency,
u16 setup_buf[0x30] = {0};
setup_buf[0x25] = 2; /* we request 2 channels */
AXInitParams init = {AX_INIT_RENDERER_48KHZ, 0, 0};
AXVoiceVeData ve = {0xF000, 0};
AXVoiceVeData ve = {0x8000, 0};
ax_audio_t* ax = (ax_audio_t*)calloc(1, sizeof(ax_audio_t));
if (!ax)
+9 -9
View File
@@ -70,7 +70,7 @@ typedef struct video4linux
char dev_name[255];
} video4linux_t;
static int xioctl(int fd, int request, void *args)
static int xioctl(int fd, unsigned long request, void *args)
{
int r;
@@ -91,7 +91,7 @@ static bool init_mmap(void *data)
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_REQBUFS, &req) == -1)
if (xioctl(v4l->fd, VIDIOC_REQBUFS, &req) == -1)
{
if (errno == EINVAL)
RARCH_ERR("[V4L2]: %s does not support memory mapping.\n", v4l->dev_name);
@@ -122,7 +122,7 @@ static bool init_mmap(void *data)
buf.memory = V4L2_MEMORY_MMAP;
buf.index = v4l->n_buffers;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_QUERYBUF, &buf) == -1)
if (xioctl(v4l->fd, VIDIOC_QUERYBUF, &buf) == -1)
{
RARCH_ERR("[V4L2]: Error - xioctl VIDIOC_QUERYBUF.\n");
return false;
@@ -152,7 +152,7 @@ static bool init_device(void *data)
struct v4l2_cropcap cropcap = {0};
video4linux_t *v4l = (video4linux_t*)data;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_QUERYCAP, &cap) < 0)
if (xioctl(v4l->fd, VIDIOC_QUERYCAP, &cap) < 0)
{
if (errno == EINVAL)
RARCH_ERR("[V4L2]: %s is no V4L2 device.\n", v4l->dev_name);
@@ -176,7 +176,7 @@ static bool init_device(void *data)
cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_CROPCAP, &cropcap) == 0)
if (xioctl(v4l->fd, VIDIOC_CROPCAP, &cropcap) == 0)
{
crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
crop.c = cropcap.defrect;
@@ -190,7 +190,7 @@ static bool init_device(void *data)
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
fmt.fmt.pix.field = V4L2_FIELD_NONE;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_S_FMT, &fmt) < 0)
if (xioctl(v4l->fd, VIDIOC_S_FMT, &fmt) < 0)
{
RARCH_ERR("[V4L2]: Error - VIDIOC_S_FMT\n");
return false;
@@ -248,7 +248,7 @@ static bool v4l_start(void *data)
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_QBUF, &buf) == -1)
if (xioctl(v4l->fd, VIDIOC_QBUF, &buf) == -1)
{
RARCH_ERR("[V4L2]: Error - VIDIOC_QBUF.\n");
return false;
@@ -364,7 +364,7 @@ static bool preprocess_image(void *data)
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
if (xioctl(v4l->fd, (uint8_t)VIDIOC_DQBUF, &buf) == -1)
if (xioctl(v4l->fd, VIDIOC_DQBUF, &buf) == -1)
{
switch (errno)
{
@@ -384,7 +384,7 @@ static bool preprocess_image(void *data)
scaler_ctx_scale_direct(ctx, v4l->buffer_output, (const uint8_t*)v4l->buffers[buf.index].start);
if (xioctl(v4l->fd, (uint8_t)VIDIOC_QBUF, &buf) == -1)
if (xioctl(v4l->fd, VIDIOC_QBUF, &buf) == -1)
RARCH_ERR("[V4L2]: VIDIOC_QBUF\n");
return true;
+299 -555
View File
File diff suppressed because it is too large. Load diff
+16
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;
@@ -139,6 +153,8 @@ bool cheevos_get_support_cheevos(void);
cheevos_console_t cheevos_get_console(void);
extern bool cheevos_loaded;
extern bool cheevos_hardcore_active;
extern bool cheevos_hardcore_paused;
extern int cheats_are_enabled;
extern int cheats_were_enabled;
+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
View File
@@ -47,6 +47,7 @@ typedef struct
cheevos_cond_type_t type;
unsigned req_hits;
unsigned curr_hits;
char pause;
cheevos_var_t source;
cheevos_cond_op_t op;
+1 -12
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
*****************************************************************************/
@@ -327,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;
}
+234 -102
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2015-2017 - Andrés Suárez
* Copyright (C) 2015-2017 - Andres Suarez
* Copyright (C) 2016-2017 - Brad Parker
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
@@ -44,6 +44,12 @@
#include "cheevos/var.h"
#endif
#ifdef HAVE_DISCORD
#include "discord/discord.h"
#endif
#include "midi/midi_driver.h"
#ifdef HAVE_MENU
#include "menu/menu_driver.h"
#include "menu/menu_content.h"
@@ -87,10 +93,13 @@
#include "retroarch.h"
#include "configuration.h"
#include "input/input_remapping.h"
#include "version.h"
#define DEFAULT_NETWORK_CMD_PORT 55355
#define STDIN_BUF_SIZE 4096
extern bool discord_is_inited;
enum cmd_source_t
{
CMD_NONE = 0,
@@ -124,6 +133,8 @@ struct command
#endif
};
static bool command_version(const char *arg);
#if defined(HAVE_COMMAND) && defined(HAVE_CHEEVOS)
static bool command_read_ram(const char *arg);
static bool command_write_ram(const char *arg);
@@ -131,6 +142,7 @@ static bool command_write_ram(const char *arg);
static const struct cmd_action_map action_map[] = {
{ "SET_SHADER", command_set_shader, "<shader path>" },
{ "VERSION", command_version, "No argument"},
#if defined(HAVE_COMMAND) && defined(HAVE_CHEEVOS)
{ "READ_CORE_RAM", command_read_ram, "<address> <number of bytes>" },
{ "WRITE_CORE_RAM", command_write_ram, "<address> <byte1> <byte2> ..." },
@@ -149,7 +161,7 @@ static const struct cmd_map map[] = {
{ "STATE_SLOT_PLUS", RARCH_STATE_SLOT_PLUS },
{ "STATE_SLOT_MINUS", RARCH_STATE_SLOT_MINUS },
{ "REWIND", RARCH_REWIND },
{ "MOVIE_RECORD_TOGGLE", RARCH_MOVIE_RECORD_TOGGLE },
{ "BSV_RECORD_TOGGLE", RARCH_BSV_RECORD_TOGGLE },
{ "PAUSE_TOGGLE", RARCH_PAUSE_TOGGLE },
{ "FRAMEADVANCE", RARCH_FRAMEADVANCE },
{ "RESET", RARCH_RESET },
@@ -169,6 +181,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 },
@@ -187,8 +200,7 @@ static struct sockaddr_storage lastcmd_net_source;
static socklen_t lastcmd_net_source_len;
#endif
#ifdef HAVE_CHEEVOS
#if defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING)
#if defined(HAVE_CHEEVOS) && (defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING))
static bool command_reply(const char * data, size_t len)
{
switch (lastcmd_source)
@@ -215,15 +227,16 @@ static bool command_reply(const char * data, size_t len)
return false;
}
#endif
#endif
bool command_set_shader(const char *arg)
{
char msg[256];
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);
#ifdef HAVE_MENU
struct video_shader *shader = menu_shader_get();
#endif
if (type == RARCH_SHADER_NONE)
return false;
@@ -235,32 +248,54 @@ bool command_set_shader(const char *arg)
arg);
retroarch_set_shader_preset(arg);
#ifdef HAVE_MENU
return menu_shader_manager_set_preset(shader, type, arg);
#else
return true;
#endif
}
static bool command_version(const char* arg)
{
char reply[256] = {0};
sprintf(reply, "%s\n", PACKAGE_VERSION);
#if defined(HAVE_CHEEVOS) && (defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING))
command_reply(reply, strlen(reply));
#endif
return true;
}
#if defined(HAVE_COMMAND) && defined(HAVE_CHEEVOS)
#define SMY_CMD_STR "READ_CORE_RAM"
static bool command_read_ram(const char *arg)
{
cheevos_var_t var;
unsigned i;
char reply[256] = {0};
const uint8_t * data = NULL;
char *reply_at = NULL;
char *reply = NULL;
const uint8_t * data = NULL;
char *reply_at = NULL;
unsigned int nbytes = 0;
unsigned int alloc_size = 0;
int addr = -1;
reply[0] = '\0';
if (sscanf(arg, "%x %d", &addr, &nbytes) != 2)
return true;
strlcpy(reply, "READ_CORE_RAM ", sizeof(reply));
reply_at = reply + strlen("READ_CORE_RAM ");
strlcpy(reply_at, arg, sizeof(reply)-strlen(reply));
alloc_size = 40 + nbytes * 3; /* We alloc more than needed, saving 20 bytes is not really relevant */
reply = (char*) malloc(alloc_size);
reply[0] = '\0';
reply_at = reply + sprintf(reply, SMY_CMD_STR " %x", addr);
var.value = addr;
var.value = strtoul(reply_at, (char**)&reply_at, 16);
cheevos_var_patch_addr(&var, cheevos_get_console());
data = cheevos_var_get_memory(&var);
data = cheevos_var_get_memory(&var);
if (data)
{
unsigned nbytes = strtol(reply_at, NULL, 10);
for (i=0;i<nbytes;i++)
sprintf(reply_at+3*i, " %.2X", data[i]);
reply_at[3*nbytes] = '\n';
@@ -271,9 +306,11 @@ static bool command_read_ram(const char *arg)
strlcpy(reply_at, " -1\n", sizeof(reply)-strlen(reply));
command_reply(reply, reply_at+strlen(" -1\n") - reply);
}
free(reply);
return true;
}
#undef SMY_CMD_STR
static bool command_write_ram(const char *arg)
{
@@ -300,6 +337,7 @@ static bool command_write_ram(const char *arg)
}
#endif
#ifdef HAVE_COMMAND
static bool command_get_arg(const char *tok,
const char **arg, unsigned *index)
{
@@ -325,7 +363,7 @@ static bool command_get_arg(const char *tok,
if (str == tok)
{
const char *argument = str + strlen(action_map[i].str);
if (*argument != ' ')
if (*argument != ' ' && *argument != '\0')
return false;
if (arg)
@@ -340,6 +378,7 @@ static bool command_get_arg(const char *tok,
return false;
}
#endif
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORK_CMD) && defined(HAVE_COMMAND)
static bool command_network_init(command_t *handle, uint16_t port)
@@ -520,10 +559,10 @@ bool command_network_send(const char *cmd_)
}
free(command);
return ret;
#else
return false;
if (ret)
return true;
#endif
return false;
}
#ifdef HAVE_STDIN_CMD
@@ -1015,7 +1054,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:
@@ -1029,7 +1068,7 @@ static void command_event_init_controllers(void)
break;
}
if (set_controller)
if (set_controller && info && i < info->ports.size)
{
pad.device = device;
pad.port = i;
@@ -1044,8 +1083,11 @@ static void command_event_deinit_core(bool reinit)
cheevos_unload();
#endif
RARCH_LOG("Unloading game..\n");
core_unload_game();
RARCH_LOG("Unloading core..\n");
core_unload();
RARCH_LOG("Unloading core symbols..\n");
core_uninit_symbols();
if (reinit)
@@ -1058,7 +1100,9 @@ static void command_event_deinit_core(bool reinit)
static void command_event_init_cheats(void)
{
bool allow_cheats = true;
settings_t *settings = config_get_ptr();
bool allow_cheats = true;
#ifdef HAVE_NETWORKING
allow_cheats &= !netplay_driver_ctl(
RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL);
@@ -1068,7 +1112,12 @@ static void command_event_init_cheats(void)
if (!allow_cheats)
return;
/* TODO/FIXME - add some stuff here. */
cheat_manager_alloc_if_empty() ;
cheat_manager_load_game_specific_cheats() ;
if (settings != NULL && settings->bools.apply_cheats_after_load)
cheat_manager_apply_cheats();
}
static void command_event_load_auto_state(void)
@@ -1087,7 +1136,7 @@ static void command_event_load_auto_state(void)
#endif
#ifdef HAVE_CHEEVOS
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_hardcore_active)
goto error;
#endif
@@ -1274,8 +1323,8 @@ static bool command_event_init_core(enum rarch_core_type *data)
if (!core_load(settings->uints.input_poll_type_behavior))
return false;
rarch_ctl(RARCH_CTL_SET_FRAME_LIMIT, NULL);
rarch_ctl(RARCH_CTL_SET_FRAME_LIMIT, NULL);
return true;
}
@@ -1296,7 +1345,9 @@ static void command_event_restore_default_shader_preset(void)
static void command_event_restore_remaps(void)
{
if (rarch_ctl(RARCH_CTL_IS_REMAPS_GAME_ACTIVE, NULL))
if (rarch_ctl(RARCH_CTL_IS_REMAPS_CORE_ACTIVE, NULL) ||
rarch_ctl(RARCH_CTL_IS_REMAPS_CONTENT_DIR_ACTIVE, NULL) ||
rarch_ctl(RARCH_CTL_IS_REMAPS_GAME_ACTIVE, NULL))
input_remapping_set_defaults(true);
}
@@ -1325,7 +1376,7 @@ static bool command_event_save_auto_state(void)
goto error;
#ifdef HAVE_CHEEVOS
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_hardcore_active)
goto error;
#endif
@@ -1386,7 +1437,6 @@ static bool command_event_save_config(
static bool command_event_save_core_config(void)
{
char msg[128];
bool ret = false;
bool found_path = false;
bool overrides_active = false;
const char *core_path = NULL;
@@ -1493,7 +1543,7 @@ static bool command_event_save_core_config(void)
free(config_dir);
free(config_name);
free(config_path);
return ret;
return true;
}
/**
@@ -1519,6 +1569,7 @@ static void command_event_save_current_config(enum override_type type)
break;
case OVERRIDE_GAME:
case OVERRIDE_CORE:
case OVERRIDE_CONTENT_DIR:
if (config_save_overrides(type))
{
strlcpy(msg, msg_hash_to_str(MSG_OVERRIDES_SAVED_SUCCESSFULLY), sizeof(msg));
@@ -1674,14 +1725,12 @@ static bool command_event_resize_windowed_scale(void)
}
void command_playlist_push_write(
void *data,
playlist_t *playlist,
const char *path,
const char *label,
const char *core_path,
const char *core_name)
{
playlist_t *playlist = (playlist_t*)data;
if (!playlist)
return;
@@ -1698,16 +1747,15 @@ void command_playlist_push_write(
}
void command_playlist_update_write(
void *data,
playlist_t *plist,
size_t idx,
const char *path,
const char *label,
const char *core_path,
const char *core_display_name,
const char *crc32,
const char *db_name)
const char *db_name)
{
playlist_t *plist = (playlist_t*)data;
playlist_t *playlist = plist ? plist : playlist_get_cached();
if (!playlist)
@@ -1736,8 +1784,10 @@ void command_playlist_update_write(
**/
bool command_event(enum event_command cmd, void *data)
{
settings_t *settings = config_get_ptr();
bool boolean = false;
#ifdef HAVE_DISCORD
static bool discord_inited = false;
#endif
bool boolean = false;
switch (cmd)
{
@@ -1787,10 +1837,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))
@@ -1803,11 +1854,18 @@ 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);
(void)success;
#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. */
@@ -1815,20 +1873,24 @@ bool command_event(enum event_command cmd, void *data)
return false;
#ifdef HAVE_CHEEVOS
{
settings_t *settings = config_get_ptr();
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
}
if (cheevos_hardcore_active)
return false;
#endif
return command_event_main_state(cmd);
if (!command_event_main_state(cmd))
return false;
break;
case CMD_EVENT_UNDO_LOAD_STATE:
return command_event_main_state(cmd);
if (!command_event_main_state(cmd))
return false;
break;
case CMD_EVENT_UNDO_SAVE_STATE:
return command_event_main_state(cmd);
if (!command_event_main_state(cmd))
return false;
break;
case CMD_EVENT_RESIZE_WINDOWED_SCALE:
return command_event_resize_windowed_scale();
if (!command_event_resize_windowed_scale())
return false;
break;
case CMD_EVENT_MENU_TOGGLE:
#ifdef HAVE_MENU
if (menu_driver_is_alive())
@@ -1854,12 +1916,12 @@ bool command_event(enum event_command cmd, void *data)
#if HAVE_NETWORKING
netplay_driver_ctl(RARCH_NETPLAY_CTL_RESET, NULL);
#endif
return command_event_main_state(cmd);
return false;
case CMD_EVENT_SAVE_STATE:
{
settings_t *settings = config_get_ptr();
#ifdef HAVE_CHEEVOS
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_hardcore_active)
return false;
#endif
@@ -1869,7 +1931,9 @@ bool command_event(enum event_command cmd, void *data)
configuration_set_int(settings, settings->ints.state_slot, new_state_slot);
}
}
return command_event_main_state(cmd);
if (!command_event_main_state(cmd))
return false;
break;
case CMD_EVENT_SAVE_STATE_DECREMENT:
{
settings_t *settings = config_get_ptr();
@@ -1890,7 +1954,7 @@ bool command_event(enum event_command cmd, void *data)
break;
case CMD_EVENT_TAKE_SCREENSHOT:
if (!take_screenshot(path_get(RARCH_PATH_BASENAME), false,
video_driver_cached_frame_has_valid_framebuffer()))
video_driver_cached_frame_has_valid_framebuffer(), false, true))
return false;
break;
case CMD_EVENT_UNLOAD_CORE:
@@ -1916,39 +1980,51 @@ bool command_event(enum event_command cmd, void *data)
core_unload_game();
if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL))
core_unload();
#ifdef HAVE_DISCORD
if (discord_is_inited)
{
discord_userdata_t userdata;
userdata.status = DISCORD_PRESENCE_MENU;
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
}
#endif
}
break;
case CMD_EVENT_QUIT:
return retroarch_main_quit();
if (!retroarch_main_quit())
return false;
break;
case CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE:
#ifdef HAVE_CHEEVOS
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();
case CMD_EVENT_REINIT:
video_driver_reinit();
{
video_driver_reinit();
{
const input_driver_t *input_drv = input_get_ptr();
void *input_data = input_get_data();
/* Poll input to avoid possibly stale data to corrupt things. */
if (input_drv && input_drv->poll)
input_drv->poll(input_data);
}
command_event(CMD_EVENT_GAME_FOCUS_TOGGLE, (void*)(intptr_t)-1);
const input_driver_t *input_drv = input_get_ptr();
void *input_data = input_get_data();
/* Poll input to avoid possibly stale data to corrupt things. */
if (input_drv && input_drv->poll)
input_drv->poll(input_data);
}
command_event(CMD_EVENT_GAME_FOCUS_TOGGLE, (void*)(intptr_t)-1);
#ifdef HAVE_MENU
{
settings_t *settings = config_get_ptr();
menu_display_set_framebuffer_dirty_flag();
if (settings->bools.video_fullscreen)
video_driver_hide_mouse();
if (menu_driver_is_alive())
command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL);
#endif
}
#endif
break;
case CMD_EVENT_CHEATS_DEINIT:
cheat_manager_state_free();
@@ -1961,21 +2037,17 @@ bool command_event(enum event_command cmd, void *data)
cheat_manager_apply_cheats();
break;
case CMD_EVENT_REWIND_DEINIT:
{
#ifdef HAVE_CHEEVOS
settings_t *settings = config_get_ptr();
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
if (cheevos_hardcore_active)
return false;
#endif
state_manager_event_deinit();
}
state_manager_event_deinit();
break;
case CMD_EVENT_REWIND_INIT:
{
settings_t *settings = config_get_ptr();
#ifdef HAVE_CHEEVOS
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_hardcore_active)
return false;
#endif
if (settings->bools.rewind_enable)
@@ -1986,7 +2058,7 @@ TODO: Add a setting for these tweaks */
if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
#endif
{
state_manager_event_init((unsigned)settings->rewind_buffer_size);
state_manager_event_init((unsigned)settings->sizes.rewind_buffer_size);
}
}
}
@@ -2010,7 +2082,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 */
@@ -2024,16 +2096,21 @@ TODO: Add a setting for these tweaks */
else
runloop_unset(RUNLOOP_ACTION_AUTOSAVE);
}
}
}
#endif
break;
case CMD_EVENT_AUTOSAVE_STATE:
command_event_save_auto_state();
break;
case CMD_EVENT_AUDIO_STOP:
return audio_driver_stop();
midi_driver_set_all_sounds_off();
if (!audio_driver_stop())
return false;
break;
case CMD_EVENT_AUDIO_START:
return audio_driver_start(rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL));
if (!audio_driver_start(rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL)))
return false;
break;
case CMD_EVENT_AUDIO_MUTE_TOGGLE:
{
bool audio_mute_enable = *(audio_get_bool_ptr(AUDIO_ACTION_MUTE_ENABLE));
@@ -2092,13 +2169,18 @@ TODO: Add a setting for these tweaks */
video_driver_gpu_record_deinit();
break;
case CMD_EVENT_RECORD_DEINIT:
if (!recording_deinit())
return false;
{
if (!recording_deinit())
return false;
}
break;
case CMD_EVENT_RECORD_INIT:
command_event(CMD_EVENT_HISTORY_DEINIT, NULL);
if (!recording_init())
return false;
{
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
recording_set_state(true);
if (!recording_init())
return false;
}
break;
case CMD_EVENT_HISTORY_DEINIT:
if (g_defaults.content_history)
@@ -2122,7 +2204,7 @@ TODO: Add a setting for these tweaks */
}
g_defaults.music_history = NULL;
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
if (g_defaults.video_history)
{
playlist_write_file(g_defaults.video_history);
@@ -2172,7 +2254,7 @@ TODO: Add a setting for these tweaks */
settings->paths.path_content_music_history,
content_history_size);
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
RARCH_LOG("%s: [%s].\n",
msg_hash_to_str(MSG_LOADING_HISTORY_FILE),
settings->paths.path_content_video_history);
@@ -2193,6 +2275,7 @@ TODO: Add a setting for these tweaks */
break;
case CMD_EVENT_CORE_INFO_DEINIT:
core_info_deinit_list();
core_info_free_current_core();
break;
case CMD_EVENT_CORE_INFO_INIT:
{
@@ -2306,7 +2389,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:
{
@@ -2355,7 +2438,7 @@ TODO: Add a setting for these tweaks */
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))
return false;
@@ -2369,6 +2452,9 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
command_event_save_current_config(OVERRIDE_CORE);
break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR:
command_event_save_current_config(OVERRIDE_CONTENT_DIR);
break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
command_event_save_current_config(OVERRIDE_GAME);
break;
@@ -2376,10 +2462,14 @@ TODO: Add a setting for these tweaks */
if (!command_event_save_core_config())
return false;
break;
case CMD_EVENT_SHADER_PRESET_LOADED:
ui_companion_event_command(cmd);
break;
case CMD_EVENT_SHADERS_APPLY_CHANGES:
#ifdef HAVE_MENU
menu_shader_manager_apply_changes();
#endif
ui_companion_event_command(cmd);
break;
case CMD_EVENT_PAUSE_CHECKS:
{
@@ -2401,6 +2491,13 @@ TODO: Add a setting for these tweaks */
if (!is_idle)
video_driver_cached_frame();
#ifdef HAVE_DISCORD
discord_userdata_t userdata;
userdata.status = DISCORD_PRESENCE_GAME_PAUSED;
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
#endif
}
else
{
@@ -2501,17 +2598,18 @@ TODO: Add a setting for these tweaks */
/* buf is expected to be address|port */
char *buf = (char *)data;
static struct string_list *hostname = NULL;
settings_t *settings = config_get_ptr();
hostname = string_split(buf, "|");
command_event(CMD_EVENT_NETPLAY_DEINIT, NULL);
RARCH_LOG("[netplay] connecting to %s:%d\n",
hostname->elems[0].data, !string_is_empty(hostname->elems[1].data)
? atoi(hostname->elems[1].data) : 55435);
? atoi(hostname->elems[1].data) : settings->uints.netplay_port);
if (!init_netplay(NULL, hostname->elems[0].data,
!string_is_empty(hostname->elems[1].data)
? atoi(hostname->elems[1].data) : 55435))
? atoi(hostname->elems[1].data) : settings->uints.netplay_port))
{
command_event(CMD_EVENT_NETPLAY_DEINIT, NULL);
string_list_free(hostname);
@@ -2534,17 +2632,18 @@ TODO: Add a setting for these tweaks */
/* buf is expected to be address|port */
char *buf = (char *)data;
static struct string_list *hostname = NULL;
settings_t *settings = config_get_ptr();
hostname = string_split(buf, "|");
command_event(CMD_EVENT_NETPLAY_DEINIT, NULL);
RARCH_LOG("[netplay] connecting to %s:%d\n",
hostname->elems[0].data, !string_is_empty(hostname->elems[1].data)
? atoi(hostname->elems[1].data) : 55435);
? atoi(hostname->elems[1].data) : settings->uints.netplay_port);
if (!init_netplay_deferred(hostname->elems[0].data,
!string_is_empty(hostname->elems[1].data)
? atoi(hostname->elems[1].data) : 55435))
? atoi(hostname->elems[1].data) : settings->uints.netplay_port))
{
command_event(CMD_EVENT_NETPLAY_DEINIT, NULL);
string_list_free(hostname);
@@ -2577,7 +2676,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;
@@ -2613,14 +2712,13 @@ TODO: Add a setting for these tweaks */
command_event(CMD_EVENT_REMOTE_DEINIT, NULL);
input_driver_init_remote();
break;
case CMD_EVENT_MAPPER_DEINIT:
input_driver_deinit_mapper();
break;
case CMD_EVENT_MAPPER_INIT:
command_event(CMD_EVENT_MAPPER_DEINIT, NULL);
input_driver_init_mapper();
break;
break;
case CMD_EVENT_LOG_FILE_DEINIT:
retro_main_log_file_deinit();
break;
@@ -2629,8 +2727,10 @@ TODO: Add a setting for these tweaks */
const char *path = (const char*)data;
if (string_is_empty(path))
return false;
return command_event_disk_control_append_image(path);
if (!command_event_disk_control_append_image(path))
return false;
}
break;
case CMD_EVENT_DISK_EJECT_TOGGLE:
{
rarch_system_info_t *info = runloop_get_system_info();
@@ -2736,6 +2836,9 @@ 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;
@@ -2804,10 +2907,39 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET:
command_event_restore_default_shader_preset();
break;
case CMD_EVENT_LIBUI_TEST:
#if HAVE_LIBUI
extern int libui_main(void);
libui_main();
case CMD_EVENT_DISCORD_INIT:
#ifdef HAVE_DISCORD
{
settings_t *settings = config_get_ptr();
if (!settings->bools.discord_enable)
return false;
if (discord_inited)
return true;
discord_init();
discord_inited = true;
}
#endif
break;
case CMD_EVENT_DISCORD_DEINIT:
#ifdef HAVE_DISCORD
if (!discord_inited)
return false;
discord_shutdown();
discord_inited = false;
#endif
break;
case CMD_EVENT_DISCORD_UPDATE:
#ifdef HAVE_DISCORD
if (!data || !discord_inited)
return false;
{
discord_userdata_t *userdata = (discord_userdata_t*)data;
discord_update(userdata->status);
}
#endif
break;
case CMD_EVENT_NONE:
+14 -5
View File
@@ -27,6 +27,8 @@
#include "config.h"
#endif
#include "playlist.h"
RETRO_BEGIN_DECLS
typedef struct command command_t;
@@ -139,7 +141,7 @@ enum event_command
/* Add a playlist entry to favorites. */
CMD_EVENT_ADD_TO_FAVORITES,
/* Reset playlist entry associated core to DETECT */
CMD_EVENT_RESET_CORE_ASSOCIATION,
CMD_EVENT_RESET_CORE_ASSOCIATION,
/* Toggles pause. */
CMD_EVENT_PAUSE_TOGGLE,
/* Pauses RetroArch. */
@@ -149,6 +151,7 @@ enum event_command
CMD_EVENT_PAUSE_CHECKS,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
CMD_EVENT_MENU_SAVE_CONFIG,
CMD_EVENT_MENU_PAUSE_LIBRETRO,
@@ -157,6 +160,8 @@ enum event_command
CMD_EVENT_MENU_REFRESH,
/* Applies shader changes. */
CMD_EVENT_SHADERS_APPLY_CHANGES,
/* A new shader preset has been loaded */
CMD_EVENT_SHADER_PRESET_LOADED,
/* Initializes shader directory. */
CMD_EVENT_SHADER_DIR_INIT,
/* Deinitializes shader directory. */
@@ -218,6 +223,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,
@@ -228,7 +235,9 @@ enum event_command
CMD_EVENT_DISABLE_OVERRIDES,
CMD_EVENT_RESTORE_REMAPS,
CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET,
CMD_EVENT_LIBUI_TEST
CMD_EVENT_DISCORD_INIT,
CMD_EVENT_DISCORD_DEINIT,
CMD_EVENT_DISCORD_UPDATE
};
bool command_set_shader(const char *arg);
@@ -262,16 +271,16 @@ bool command_free(command_t *handle);
bool command_event(enum event_command action, void *data);
void command_playlist_push_write(
void *data,
playlist_t *playlist,
const char *path,
const char *label,
const char *core_path,
const char *core_name);
void command_playlist_update_write(
void *data,
playlist_t *playlist,
size_t idx,
const char *path,
const char *path,
const char *label,
const char *core_path,
const char *core_display_name,
+78 -23
View File
@@ -20,6 +20,7 @@
#include <boolean.h>
#include <audio/audio_resampler.h>
#include "configuration.h"
#include "gfx/video_defines.h"
#include "input/input_driver.h"
@@ -67,15 +68,15 @@ static bool bundle_assets_extract_enable = false;
static bool materialui_icons_enable = true;
#endif
static const bool crt_switch_resolution = false;
static const unsigned crt_switch_resolution = CRT_SWITCH_NONE;
static const int crt_switch_resolution_super = 2560;
static const int crt_switch_center_adjust = 0;
static const bool def_history_list_enable = true;
static const bool def_playlist_entry_remove = true;
static const bool def_playlist_entry_rename = true;
static const bool def_history_list_enable = true;
static const bool def_playlist_entry_remove = true;
static const bool def_playlist_entry_rename = true;
static const unsigned int def_user_language = 0;
static const unsigned int def_user_language = 0;
#if (defined(_WIN32) && !defined(_XBOX)) || (defined(__linux) && !defined(ANDROID) && !defined(HAVE_LAKKA)) || (defined(__MACH__) && !defined(IOS)) || defined(EMSCRIPTEN)
static const bool def_mouse_enable = true;
@@ -181,7 +182,7 @@ static unsigned swap_interval = 1;
static const bool video_threaded = false;
#if defined(HAVE_THREADS)
#if defined(GEKKO) || defined(PSP) || defined(_3DS)
#if defined(GEKKO) || defined(PSP)
/* For single-core consoles right now it's better to have this be disabled. */
static const bool threaded_data_runloop_enable = false;
#else
@@ -248,22 +249,32 @@ static const bool overlay_hide_in_menu = true;
static const bool display_keyboard_overlay = false;
#ifdef HAKCHI
static const float default_input_overlay_opacity = 0.5f;
#else
static const float default_input_overlay_opacity = 0.7f;
#endif
#ifdef HAVE_MENU
#include "menu/menu_driver.h"
static bool default_block_config_read = true;
static bool quick_menu_show_take_screenshot = true;
static bool quick_menu_show_save_load_state = true;
static bool quick_menu_show_undo_save_load_state = true;
static bool quick_menu_show_add_to_favorites = true;
static bool quick_menu_show_options = true;
static bool quick_menu_show_controls = true;
static bool quick_menu_show_cheats = true;
static bool quick_menu_show_shaders = true;
static bool quick_menu_show_save_core_overrides = true;
static bool quick_menu_show_save_game_overrides = true;
static bool quick_menu_show_information = true;
static bool quick_menu_show_take_screenshot = true;
static bool quick_menu_show_save_load_state = true;
static bool quick_menu_show_undo_save_load_state = true;
static bool quick_menu_show_add_to_favorites = true;
static bool quick_menu_show_options = true;
static bool quick_menu_show_controls = true;
static bool quick_menu_show_cheats = true;
static bool quick_menu_show_shaders = true;
static bool quick_menu_show_information = true;
static bool quick_menu_show_recording = true;
static bool quick_menu_show_streaming = true;
static bool quick_menu_show_save_core_overrides = true;
static bool quick_menu_show_save_game_overrides = true;
static bool quick_menu_show_save_content_dir_overrides = true;
static bool kiosk_mode_enable = false;
@@ -275,6 +286,7 @@ static bool menu_show_configurations = true;
static bool menu_show_help = true;
static bool menu_show_quit_retroarch = true;
static bool menu_show_reboot = true;
static bool menu_show_shutdown = true;
#if defined(HAVE_LAKKA) || defined(VITA) || defined(_3DS)
static bool menu_show_core_updater = false;
#else
@@ -287,7 +299,7 @@ static bool content_show_favorites = true;
static bool content_show_images = true;
#endif
static bool content_show_music = true;
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
static bool content_show_video = true;
#endif
#ifdef HAVE_NETWORKING
@@ -438,9 +450,11 @@ static const bool font_enable = true;
* If your monitor does not run at 60Hz, or something close to it,
* disable VSync, and leave this at its default. */
#ifdef _3DS
static const float refresh_rate = (32730.0 * 8192.0) / 4481134.0 ;
static const float refresh_rate = (32730.0 * 8192.0) / 4481134.0 ;
static const float crt_refresh_rate = (32730.0 * 8192.0) / 4481134.0 ;
#else
static const float refresh_rate = 60/1.001;
static const float refresh_rate = 60/1.001;
static const float crt_refresh_rate = 60/1.001;
#endif
/* Allow games to set rotation. If false, rotation requests are
@@ -517,10 +531,19 @@ static const bool framecount_show = true;
* depending on the save state buffer. */
static const bool rewind_enable = false;
/* When set, any time a cheat is toggled it is immediately applied. */
static const bool apply_cheats_after_toggle = false;
/* When set, all enabled cheats are auto-applied when a game is loaded. */
static const bool apply_cheats_after_load = false;
/* The buffer size for the rewind buffer. This needs to be about
* 15-20MB per minute. Very game dependant. */
static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */
/* The amount of MB to increase/decrease the rewind_buffer_size when it is changed via the UI. */
static const unsigned rewind_buffer_size_step = 10; /* 10MB */
/* How many frames to rewind at a time. */
static const unsigned rewind_granularity = 1;
@@ -595,12 +618,18 @@ static const float slowmotion_ratio = 3.0;
/* Maximum fast forward ratio. */
static const float fastforward_ratio = 0.0;
/* Enable runloop for variable refresh rate screens. Force x1 speed while handling fast forward too. */
static const bool vrr_runloop_enable = false;
/* 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;
/* Hide warning messages when using the Run Ahead feature. */
static const bool run_ahead_hide_warnings = false;
/* Enable stdin/network command interface. */
static const bool network_cmd_enable = false;
static const uint16_t network_cmd_port = 55355;
@@ -630,6 +659,10 @@ static const unsigned libretro_log_level = 1;
#define RARCH_DEFAULT_PORT 55435
#endif
#ifndef RARCH_STREAM_DEFAULT_PORT
#define RARCH_STREAM_DEFAULT_PORT 56400
#endif
/* KEYBINDS, JOYPAD */
/* Axis threshold (between 0.0 and 1.0)
@@ -656,6 +689,8 @@ static const unsigned input_poll_type_behavior = 2;
static const unsigned input_bind_timeout = 5;
static const unsigned input_bind_hold = 2;
static const unsigned menu_thumbnails_default = 3;
static const unsigned menu_left_thumbnails_default = 0;
@@ -670,6 +705,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)
@@ -678,13 +719,27 @@ static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL;
#endif
#if defined(ANDROID)
#if defined(ANDROID_ARM)
/* MIDI */
static const char *midi_input = "Off";
static const char *midi_output = "Off";
static const unsigned midi_volume = 100;
/* Only applies to Android 7.0 (API 24) and up */
static const bool sustained_performance_mode = false;
#if defined(HAKCHI)
static char buildbot_server_url[] = "http://hakchicloud.com/Libretro_Cores/";
#elif defined(ANDROID)
#if defined(ANDROID_ARM_V7)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi-v7a/";
#elif defined(ANDROID_ARM)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi/";
#elif defined(ANDROID_AARCH64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/arm64-v8a/";
#elif defined(ANDROID_X86)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/x86/";
#elif defined(ANDROID_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/x86_64/";
#else
static char buildbot_server_url[] = "";
#endif
+4 -2
View File
@@ -75,7 +75,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_BSV_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -97,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 },
@@ -150,7 +151,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_BSV_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, RETROK_o, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_p, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_k, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_h, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -172,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
};
+12
View File
@@ -80,6 +80,12 @@ static const bool _vulkan_supp = true;
static const bool _vulkan_supp = false;
#endif
#ifdef HAVE_METAL
static const bool _metal_supp = true;
#else
static const bool _metal_supp = false;
#endif
#if defined(HAVE_OPENGLES) || defined(HAVE_OPENGLES2) || defined(HAVE_OPENGLES3) || defined(HAVE_OPENGLES_3_1) || defined(HAVE_OPENGLES_3_2)
static const bool _opengles_supp = true;
#else
@@ -272,6 +278,12 @@ static const bool _ffmpeg_supp = true;
static const bool _ffmpeg_supp = false;
#endif
#ifdef HAVE_MPV
static const bool _mpv_supp = true;
#else
static const bool _mpv_supp = false;
#endif
#ifdef HAVE_FREETYPE
static const bool _freetype_supp = true;
#else
+335 -40
View File
@@ -52,6 +52,8 @@
#include "tasks/tasks_internal.h"
#include "../list_special.h"
static const char* invalid_filename_chars[] = {
/* https://support.microsoft.com/en-us/help/905231/information-about-the-characters-that-you-cannot-use-in-site-names--fo */
"~", "#", "%", "&", "*", "{", "}", "\\", ":", "[", "]", "?", "/", "|", "\'", "\"",
@@ -90,6 +92,16 @@ struct config_uint_setting
enum rarch_override_setting override;
};
struct config_size_setting
{
const char *ident;
size_t *ptr;
bool def_enable;
size_t def;
bool handle;
enum rarch_override_setting override;
};
struct config_float_setting
{
const char *ident;
@@ -123,6 +135,7 @@ enum video_driver_enum
{
VIDEO_GL = 0,
VIDEO_VULKAN,
VIDEO_METAL,
VIDEO_DRM,
VIDEO_XVIDEO,
VIDEO_SDL,
@@ -271,6 +284,7 @@ enum menu_driver_enum
MENU_XUI,
MENU_MATERIALUI,
MENU_XMB,
MENU_STRIPES,
MENU_NUKLEAR,
MENU_NULL
};
@@ -281,9 +295,16 @@ enum record_driver_enum
RECORD_NULL
};
enum midi_driver_enum
{
MIDI_WINMM = RECORD_NULL + 1,
MIDI_NULL
};
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL;
#elif defined(HAVE_METAL)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_METAL;
#elif defined(GEKKO)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_WII;
#elif defined(WIIU)
@@ -386,6 +407,12 @@ static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_FFMPEG;
static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_NULL;
#endif
#ifdef HAVE_WINMM
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_WINMM;
#else
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_NULL;
#endif
#if defined(XENON)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XENON360;
#elif defined(_XBOX360) || defined(_XBOX) || defined(HAVE_XINPUT2) || defined(HAVE_XINPUT_XBOX1)
@@ -534,6 +561,9 @@ static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL;
#define SETTING_UINT(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_uint_setting, handle_setting)
#define SETTING_SIZE(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_size_setting, handle_setting)
#define SETTING_PATH(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_path_setting, handle_setting)
@@ -698,6 +728,8 @@ const char *config_get_default_video(void)
return "gl";
case VIDEO_VULKAN:
return "vulkan";
case VIDEO_METAL:
return "metal";
case VIDEO_DRM:
return "drm";
case VIDEO_WII:
@@ -995,6 +1027,8 @@ const char *config_get_default_menu(void)
return "glui";
case MENU_XMB:
return "xmb";
case MENU_STRIPES:
return "stripes";
case MENU_NUKLEAR:
return "nuklear";
case MENU_NULL:
@@ -1005,6 +1039,26 @@ const char *config_get_default_menu(void)
return "null";
}
const char *config_get_default_midi(void)
{
enum midi_driver_enum default_driver = MIDI_DEFAULT_DRIVER;
switch (default_driver)
{
case MIDI_WINMM:
return "winmm";
case MIDI_NULL:
break;
}
return "null";
}
const char *config_get_midi_driver_options(void)
{
return char_list_new_special(STRING_LIST_MIDI_DRIVERS, NULL);
}
bool config_overlay_enable_default(void)
{
if (g_defaults.overlay.set)
@@ -1015,7 +1069,7 @@ bool config_overlay_enable_default(void)
static struct config_array_setting *populate_settings_array(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_array_setting *tmp = (struct config_array_setting*)malloc((*size + 1) * sizeof(struct config_array_setting));
struct config_array_setting *tmp = (struct config_array_setting*)calloc(1, (*size + 1) * sizeof(struct config_array_setting));
/* Arrays */
SETTING_ARRAY("playlist_names", settings->arrays.playlist_names, false, NULL, true);
@@ -1046,6 +1100,9 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
SETTING_ARRAY("bundle_assets_dst_path_subdir", settings->arrays.bundle_assets_dst_subdir, false, NULL, true);
SETTING_ARRAY("led_driver", settings->arrays.led_driver, false, NULL, true);
SETTING_ARRAY("netplay_mitm_server", settings->arrays.netplay_mitm_server, false, NULL, true);
SETTING_ARRAY("midi_driver", settings->arrays.midi_driver, false, NULL, true);
SETTING_ARRAY("midi_input", settings->arrays.midi_input, true, midi_input, true);
SETTING_ARRAY("midi_output", settings->arrays.midi_output, true, midi_output, true);
*size = count;
return tmp;
@@ -1055,7 +1112,7 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
{
unsigned count = 0;
global_t *global = global_get_ptr();
struct config_path_setting *tmp = (struct config_path_setting*)malloc((*size + 1) * sizeof(struct config_path_setting));
struct config_path_setting *tmp = (struct config_path_setting*)calloc(1, (*size + 1) * sizeof(struct config_path_setting));
/* Paths */
#ifdef HAVE_XMB
@@ -1102,6 +1159,14 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
#ifdef HAVE_OVERLAY
SETTING_PATH("input_overlay",
settings->paths.path_overlay, false, NULL, true);
#endif
#ifdef HAVE_FFMPEG
SETTING_PATH("video_record_config",
settings->paths.path_record_config, false, NULL, true);
SETTING_PATH("video_stream_config",
settings->paths.path_stream_config, false, NULL, true);
SETTING_PATH("video_stream_url",
settings->paths.path_stream_url, false, NULL, true);
#endif
SETTING_PATH("video_font_path",
settings->paths.path_font, false, NULL, true);
@@ -1177,9 +1242,12 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
struct config_bool_setting *tmp = (struct config_bool_setting*)malloc((*size + 1) * sizeof(struct config_bool_setting));
unsigned count = 0;
SETTING_BOOL("crt_switch_resolution_use_custom_refresh_rate", &settings->bools.crt_switch_custom_refresh_enable, true, false, false);
SETTING_BOOL("automatically_add_content_to_playlist", &settings->bools.automatically_add_content_to_playlist, true, 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);
@@ -1221,8 +1289,12 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
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("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, vrr_runloop_enable, false);
SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, apply_cheats_after_toggle, false);
SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, apply_cheats_after_load, false);
SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false);
SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false);
SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false);
SETTING_BOOL("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);
@@ -1243,9 +1315,9 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, fullscreen, false);
SETTING_BOOL("bundle_assets_extract_enable", &settings->bools.bundle_assets_extract_enable, true, bundle_assets_extract_enable, false);
SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, vsync, false);
SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, false, 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);
@@ -1253,12 +1325,14 @@ 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);
SETTING_BOOL("video_font_enable", &settings->bools.video_font_enable, true, font_enable, false);
SETTING_BOOL("core_updater_auto_extract_archive", &settings->bools.network_buildbot_auto_extract_archive, true, true, false);
SETTING_BOOL("camera_allow", &settings->bools.camera_allow, true, false, false);
SETTING_BOOL("discord_allow", &settings->bools.discord_enable, true, false, false);
#if defined(VITA)
SETTING_BOOL("input_backtouch_enable", &settings->bools.input_backtouch_enable, false, false, false);
SETTING_BOOL("input_backtouch_toggle", &settings->bools.input_backtouch_toggle, false, false, false);
@@ -1285,6 +1359,9 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("menu_battery_level_enable", &settings->bools.menu_battery_level_enable, true, true, false);
SETTING_BOOL("menu_core_enable", &settings->bools.menu_core_enable, true, true, false);
SETTING_BOOL("menu_dynamic_wallpaper_enable", &settings->bools.menu_dynamic_wallpaper_enable, true, false, false);
SETTING_BOOL("quick_menu_show_recording", &settings->bools.quick_menu_show_recording, true, quick_menu_show_recording, false);
SETTING_BOOL("quick_menu_show_streaming", &settings->bools.quick_menu_show_streaming, true, quick_menu_show_streaming, false);
SETTING_BOOL("quick_menu_show_save_load_state", &settings->bools.quick_menu_show_save_load_state, true, quick_menu_show_save_load_state, false);
SETTING_BOOL("quick_menu_show_take_screenshot", &settings->bools.quick_menu_show_take_screenshot, true, quick_menu_show_take_screenshot, false);
SETTING_BOOL("quick_menu_show_save_load_state", &settings->bools.quick_menu_show_save_load_state, true, quick_menu_show_save_load_state, false);
SETTING_BOOL("quick_menu_show_undo_save_load_state", &settings->bools.quick_menu_show_undo_save_load_state, true, quick_menu_show_undo_save_load_state, false);
@@ -1295,6 +1372,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("quick_menu_show_shaders", &settings->bools.quick_menu_show_shaders, true, quick_menu_show_shaders, false);
SETTING_BOOL("quick_menu_show_save_core_overrides", &settings->bools.quick_menu_show_save_core_overrides, true, quick_menu_show_save_core_overrides, false);
SETTING_BOOL("quick_menu_show_save_game_overrides", &settings->bools.quick_menu_show_save_game_overrides, true, quick_menu_show_save_game_overrides, false);
SETTING_BOOL("quick_menu_show_save_content_dir_overrides", &settings->bools.quick_menu_show_save_content_dir_overrides, true, quick_menu_show_save_content_dir_overrides, false);
SETTING_BOOL("quick_menu_show_information", &settings->bools.quick_menu_show_information, true, quick_menu_show_information, false);
SETTING_BOOL("kiosk_mode_enable", &settings->bools.kiosk_mode_enable, true, kiosk_mode_enable, false);
SETTING_BOOL("content_show_settings", &settings->bools.menu_content_show_settings, true, content_show_settings, false);
@@ -1303,7 +1381,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("content_show_images", &settings->bools.menu_content_show_images, true, content_show_images, false);
#endif
SETTING_BOOL("content_show_music", &settings->bools.menu_content_show_music, true, content_show_music, false);
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
SETTING_BOOL("content_show_video", &settings->bools.menu_content_show_video, true, content_show_video, false);
#endif
#ifdef HAVE_NETWORKING
@@ -1324,6 +1402,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
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);
SETTING_BOOL("menu_show_shutdown", &settings->bools.menu_show_shutdown, true, menu_show_shutdown, false);
SETTING_BOOL("menu_show_online_updater", &settings->bools.menu_show_online_updater, true, menu_show_online_updater, false);
SETTING_BOOL("menu_show_core_updater", &settings->bools.menu_show_core_updater, true, menu_show_core_updater, false);
SETTING_BOOL("filter_by_current_core", &settings->bools.filter_by_current_core, false, false /* TODO */, false);
@@ -1403,6 +1482,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("video_msg_bgcolor_enable", &settings->bools.video_msg_bgcolor_enable, true, message_bgcolor_enable, false);
SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, window_decorations, false);
SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false);
*size = count;
return tmp;
@@ -1411,17 +1492,18 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
static struct config_float_setting *populate_settings_float(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_float_setting *tmp = (struct config_float_setting*)malloc((*size + 1) * sizeof(struct config_float_setting));
struct config_float_setting *tmp = (struct config_float_setting*)calloc(1, (*size + 1) * sizeof(struct config_float_setting));
SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, aspect_ratio, false);
SETTING_FLOAT("video_scale", &settings->floats.video_scale, false, 0.0f, false);
SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, crt_refresh_rate, false);
SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, refresh_rate, false);
SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, rate_control_delta, false);
SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, max_timing_skew, false);
SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, audio_volume, false);
SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, audio_mixer_volume, false);
#ifdef HAVE_OVERLAY
SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, 0.7f, false);
SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, default_input_overlay_opacity, false);
SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false);
#endif
#ifdef HAVE_MENU
@@ -1448,7 +1530,9 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
unsigned count = 0;
struct config_uint_setting *tmp = (struct config_uint_setting*)malloc((*size + 1) * sizeof(struct config_uint_setting));
SETTING_UINT("crt_switch_resolution", &settings->uints.crt_switch_resolution, true, crt_switch_resolution, false);
SETTING_UINT("input_bind_timeout", &settings->uints.input_bind_timeout, true, input_bind_timeout, false);
SETTING_UINT("input_bind_hold", &settings->uints.input_bind_hold, true, input_bind_hold, false);
SETTING_UINT("input_turbo_period", &settings->uints.input_turbo_period, true, turbo_period, false);
SETTING_UINT("input_duty_cycle", &settings->uints.input_turbo_duty_cycle, true, turbo_duty_cycle, false);
SETTING_UINT("input_max_users", input_driver_get_uint(INPUT_ACTION_MAX_USERS), true, input_max_users, false);
@@ -1457,6 +1541,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("audio_resampler_quality", &settings->uints.audio_resampler_quality, true, audio_resampler_quality_level, false);
SETTING_UINT("audio_block_frames", &settings->uints.audio_block_frames, true, 0, false);
SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, rewind_granularity, false);
SETTING_UINT("rewind_buffer_size_step", &settings->uints.rewind_buffer_size_step, true, rewind_buffer_size_step, false);
SETTING_UINT("autosave_interval", &settings->uints.autosave_interval, true, autosave_interval, false);
SETTING_UINT("libretro_log_level", &settings->uints.libretro_log_level, true, libretro_log_level, false);
SETTING_UINT("keyboard_gamepad_mapping_type",&settings->uints.input_keyboard_gamepad_mapping_type, true, 1, false);
@@ -1508,6 +1593,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_UINT("video_stream_port", &settings->uints.video_stream_port, true, RARCH_STREAM_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);
@@ -1526,6 +1612,20 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("run_ahead_frames", &settings->uints.run_ahead_frames, true, 1, false);
SETTING_UINT("midi_volume", &settings->uints.midi_volume, true, midi_volume, false);
*size = count;
return tmp;
}
static struct config_size_setting *populate_settings_size(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_size_setting *tmp = (struct config_size_setting*)calloc((*size + 1), sizeof(struct config_size_setting));
SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, rewind_buffer_size, false);
*size = count;
return tmp;
@@ -1544,6 +1644,7 @@ static struct config_int_setting *populate_settings_int(settings_t *settings, in
#ifdef HAVE_WASAPI
SETTING_INT("audio_wasapi_sh_buffer_length", &settings->ints.audio_wasapi_sh_buffer_length, true, wasapi_sh_buffer_length, false);
#endif
SETTING_INT("crt_switch_center_adjust", &settings->ints.crt_switch_center_adjust, false, 0 /* TODO */, false);
*size = count;
@@ -1566,6 +1667,7 @@ static void config_set_defaults(void)
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
int int_settings_size = sizeof(settings->ints) / sizeof(settings->ints.placeholder);
int uint_settings_size = sizeof(settings->uints) / sizeof(settings->uints.placeholder);
int size_settings_size = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
const char *def_video = config_get_default_video();
const char *def_audio = config_get_default_audio();
const char *def_audio_resampler = config_get_default_audio_resampler();
@@ -1579,11 +1681,13 @@ static void config_set_defaults(void)
const char *def_led = config_get_default_led();
const char *def_location = config_get_default_location();
const char *def_record = config_get_default_record();
const char *def_midi = config_get_default_midi();
const char *def_mitm = netplay_mitm_server;
struct config_float_setting *float_settings = populate_settings_float (settings, &float_settings_size);
struct config_bool_setting *bool_settings = populate_settings_bool (settings, &bool_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
struct config_uint_setting *uint_settings = populate_settings_uint (settings, &uint_settings_size);
struct config_size_setting *size_settings = populate_settings_size (settings, &size_settings_size);
if (bool_settings && (bool_settings_size > 0))
{
@@ -1618,6 +1722,17 @@ static void config_set_defaults(void)
free(uint_settings);
}
if (size_settings && (size_settings_size > 0))
{
for (i = 0; i < (unsigned)size_settings_size; i++)
{
if (size_settings[i].def_enable)
*size_settings[i].ptr = size_settings[i].def;
}
free(size_settings);
}
if (float_settings && (float_settings_size > 0))
{
for (i = 0; i < (unsigned)float_settings_size; i++)
@@ -1659,6 +1774,9 @@ static void config_set_defaults(void)
if (def_record)
strlcpy(settings->arrays.record_driver,
def_record, sizeof(settings->arrays.record_driver));
if (def_midi)
strlcpy(settings->arrays.midi_driver,
def_midi, sizeof(settings->arrays.midi_driver));
if (def_mitm)
strlcpy(settings->arrays.netplay_mitm_server,
def_mitm, sizeof(settings->arrays.netplay_mitm_server));
@@ -1676,7 +1794,7 @@ static void config_set_defaults(void)
#endif
#endif
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, true);
#else
configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, false);
@@ -1706,8 +1824,6 @@ static void config_set_defaults(void)
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, settings->floats.audio_volume);
audio_set_float(AUDIO_ACTION_MIXER_VOLUME_GAIN, settings->floats.audio_mixer_volume);
settings->rewind_buffer_size = rewind_buffer_size;
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
@@ -1820,6 +1936,9 @@ static void config_set_defaults(void)
*settings->paths.path_menu_wallpaper = '\0';
*settings->paths.path_content_database = '\0';
*settings->paths.path_overlay = '\0';
*settings->paths.path_record_config = '\0';
*settings->paths.path_stream_config = '\0';
*settings->paths.path_stream_url = '\0';
*settings->paths.path_softfilter_plugin = '\0';
*settings->arrays.playlist_names = '\0';
@@ -1976,6 +2095,13 @@ static void config_set_defaults(void)
free(temp_str);
}
if (midi_input)
strlcpy(settings->arrays.midi_input,
midi_input, sizeof(settings->arrays.midi_input));
if (midi_output)
strlcpy(settings->arrays.midi_output,
midi_output, sizeof(settings->arrays.midi_output));
/* Avoid reloading config on every content load */
if (default_block_config_read)
rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL);
@@ -2009,7 +2135,7 @@ static config_file_t *open_default_config_file(void)
(void)path_size;
#if defined(_WIN32) && !defined(_XBOX)
#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__)
fill_pathname_application_path(app_path, path_size);
fill_pathname_resolve_relative(conf_path, app_path,
file_path_str(FILE_PATH_MAIN_CONFIG), path_size);
@@ -2298,6 +2424,7 @@ static bool check_shader_compatibility(enum file_path_enum enum_idx)
settings_t *settings = config_get_ptr();
if (string_is_equal(settings->arrays.video_driver, "vulkan") ||
string_is_equal(settings->arrays.video_driver, "metal") ||
string_is_equal(settings->arrays.video_driver, "d3d11") ||
string_is_equal(settings->arrays.video_driver, "d3d12") ||
string_is_equal(settings->arrays.video_driver, "gx2"))
@@ -2398,12 +2525,14 @@ static bool config_load_file(const char *path, bool set_defaults,
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
int int_settings_size = sizeof(settings->ints) / sizeof(settings->ints.placeholder);
int uint_settings_size = sizeof(settings->uints) / sizeof(settings->uints.placeholder);
int size_settings_size = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
int array_settings_size = sizeof(settings->arrays) / sizeof(settings->arrays.placeholder);
int path_settings_size = sizeof(settings->paths) / sizeof(settings->paths.placeholder);
struct config_bool_setting *bool_settings = populate_settings_bool (settings, &bool_settings_size);
struct config_float_setting *float_settings = populate_settings_float (settings, &float_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
struct config_uint_setting *uint_settings = populate_settings_uint (settings, &uint_settings_size);
struct config_size_setting *size_settings = populate_settings_size (settings, &size_settings_size);
struct config_array_setting *array_settings = populate_settings_array (settings, &array_settings_size);
struct config_path_setting *path_settings = populate_settings_path (settings, &path_settings_size);
@@ -2528,6 +2657,21 @@ static bool config_load_file(const char *path, bool set_defaults,
*uint_settings[i].ptr = tmp;
}
for (i = 0; i < (unsigned)size_settings_size; i++)
{
size_t tmp = 0;
if (config_get_size_t(conf, size_settings[i].ident, &tmp))
*size_settings[i].ptr = tmp ;
/* Special case for rewind_buffer_size - need to convert low values to what they were
* intended to be based on the default value in config.def.h
* If the value is less than 10000 then multiple by 1MB because if the retroarch.cfg
* file contains rewind_buffer_size = "100" then that ultimately gets interpreted as
* 100MB, so ensure the internal values represent that.*/
if (string_is_equal(size_settings[i].ident, "rewind_buffer_size"))
if (*size_settings[i].ptr < 10000)
*size_settings[i].ptr = *size_settings[i].ptr * 1024 * 1024;
}
for (i = 0; i < MAX_USERS; i++)
{
char buf[64];
@@ -2559,13 +2703,6 @@ static bool config_load_file(const char *path, bool set_defaults,
CONFIG_GET_INT_BASE(conf, settings, uints.led_map[i], buf);
}
{
/* ugly hack around C89 not allowing mixing declarations and code */
int buffer_size = 0;
if (config_get_int(conf, "rewind_buffer_size", &buffer_size))
settings->rewind_buffer_size = buffer_size * UINT64_C(1000000);
}
/* Hexadecimal settings */
@@ -2886,8 +3023,10 @@ static bool config_load_file(const char *path, bool set_defaults,
settings->arrays.video_driver);
settings->paths.path_shader[0] = '\0';
break;
}
}
}
frontend_driver_set_sustained_performance_mode(settings->bools.sustained_performance_mode);
ret = true;
@@ -2907,6 +3046,8 @@ end:
free(array_settings);
if (path_settings)
free(path_settings);
if (size_settings)
free(size_settings);
free(tmp_str);
return ret;
}
@@ -2936,6 +3077,7 @@ bool config_load_override(void)
char *buf = NULL;
char *core_path = NULL;
char *game_path = NULL;
char *content_path = NULL;
char *config_directory = NULL;
config_file_t *new_conf = NULL;
bool should_append = false;
@@ -2943,6 +3085,10 @@ bool config_load_override(void)
const char *core_name = system ?
system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
char content_dir_name[PATH_MAX_LENGTH];
if (!string_is_empty(path_get(RARCH_PATH_BASENAME)))
fill_pathname_parent_dir_name(content_dir_name, path_get(RARCH_PATH_BASENAME), sizeof(content_dir_name));
if (string_is_empty(core_name) || string_is_empty(game_name))
return false;
@@ -2951,6 +3097,8 @@ bool config_load_override(void)
malloc(PATH_MAX_LENGTH * sizeof(char));
core_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
content_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
buf = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
config_directory = (char*)
@@ -2960,23 +3108,29 @@ bool config_load_override(void)
fill_pathname_application_special(config_directory, path_size,
APPLICATION_SPECIAL_DIRECTORY_CONFIG);
/* Concatenate strings into full paths for core_path, game_path */
/* Concatenate strings into full paths for core_path, game_path, content_path */
fill_pathname_join_special_ext(game_path,
config_directory, core_name,
game_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
path_size);
fill_pathname_join_special_ext(content_path,
config_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
path_size);
fill_pathname_join_special_ext(core_path,
config_directory, core_name,
core_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
path_size);
/* per-core overrides */
/* Create a new config file from core_path */
new_conf = config_file_new(core_path);
/* If a core override exists, add its location to append_config_path */
if (new_conf)
{
RARCH_LOG("[overrides] core-specific overrides found at %s.\n",
@@ -2991,10 +3145,45 @@ bool config_load_override(void)
RARCH_LOG("[overrides] no core-specific overrides found at %s.\n",
core_path);
/* per-content-dir overrides */
/* Create a new config file from content_path */
new_conf = config_file_new(content_path);
if (new_conf)
{
char *temp_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
temp_path[0] = '\0';
config_file_free(new_conf);
RARCH_LOG("[overrides] content-dir-specific overrides found at %s.\n",
game_path);
if (should_append)
{
RARCH_LOG("[overrides] content-dir-specific overrides stacking on top of previous overrides.\n");
strlcpy(temp_path, path_get(RARCH_PATH_CONFIG_APPEND), path_size);
strlcat(temp_path, "|", path_size);
strlcat(temp_path, content_path, path_size);
}
else
strlcpy(temp_path, content_path, path_size);
path_set(RARCH_PATH_CONFIG_APPEND, temp_path);
free(temp_path);
should_append = true;
}
else
RARCH_LOG("[overrides] no content-dir-specific overrides found at %s.\n",
content_path);
/* per-game overrides */
/* Create a new config file from game_path */
new_conf = config_file_new(game_path);
/* If a game override exists, add it's location to append_config_path */
if (new_conf)
{
char *temp_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
@@ -3008,6 +3197,7 @@ bool config_load_override(void)
if (should_append)
{
RARCH_LOG("[overrides] game-specific overrides stacking on top of previous overrides\n");
strlcpy(temp_path, path_get(RARCH_PATH_CONFIG_APPEND), path_size);
strlcat(temp_path, "|", path_size);
strlcat(temp_path, game_path, path_size);
@@ -3058,6 +3248,7 @@ bool config_load_override(void)
free(buf);
free(config_directory);
free(core_path);
free(content_path);
free(game_path);
return true;
@@ -3065,6 +3256,7 @@ error:
free(buf);
free(config_directory);
free(core_path);
free(content_path);
free(game_path);
return false;
}
@@ -3116,11 +3308,16 @@ bool config_load_remap(void)
char *remap_directory = NULL;
char *core_path = NULL;
char *game_path = NULL;
char *content_path = NULL;
config_file_t *new_conf = NULL;
settings_t *settings = config_get_ptr();
rarch_system_info_t *system = runloop_get_system_info();
const char *core_name = system ? system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
char content_dir_name[PATH_MAX_LENGTH];
if (!string_is_empty(path_get(RARCH_PATH_BASENAME)))
fill_pathname_parent_dir_name(content_dir_name, path_get(RARCH_PATH_BASENAME), sizeof(content_dir_name));
if (string_is_empty(core_name) || string_is_empty(game_name))
return false;
@@ -3139,8 +3336,12 @@ bool config_load_remap(void)
/* final path for game-specific configuration (prefix+suffix) */
game_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
/* final path for content-dir-specific configuration (prefix+suffix) */
content_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
remap_directory[0] = core_path[0] = game_path[0] = '\0';
strlcpy(remap_directory,
settings->paths.directory_input_remapping,
path_size);
@@ -3153,6 +3354,12 @@ bool config_load_remap(void)
file_path_str(FILE_PATH_REMAP_EXTENSION),
path_size);
fill_pathname_join_special_ext(content_path,
remap_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_REMAP_EXTENSION),
path_size);
fill_pathname_join_special_ext(game_path,
remap_directory, core_name,
game_name,
@@ -3180,6 +3387,28 @@ bool config_load_remap(void)
input_remapping_set_defaults(false);
}
/* Create a new config file from content_path */
new_conf = config_file_new(content_path);
/* If a content-dir remap file exists, load it. */
if (new_conf)
{
RARCH_LOG("Remaps: content-dir-specific remap found at %s.\n", content_path);
if (input_remapping_load_file(new_conf, content_path))
{
runloop_msg_queue_push(msg_hash_to_str(
MSG_GAME_REMAP_FILE_LOADED), 1, 100, true);
rarch_ctl(RARCH_CTL_SET_REMAPS_CONTENT_DIR_ACTIVE, NULL);
goto success;
}
}
else
{
RARCH_LOG("Remaps: no content-dir-specific remap found at %s.\n", content_path);
input_remapping_set_defaults(false);
}
/* Create a new config file from core_path */
new_conf = config_file_new(core_path);
@@ -3203,12 +3432,14 @@ bool config_load_remap(void)
new_conf = NULL;
free(content_path);
free(remap_directory);
free(core_path);
free(game_path);
return false;
success:
free(content_path);
free(remap_directory);
free(core_path);
free(game_path);
@@ -3231,21 +3462,21 @@ success:
bool config_load_shader_preset(void)
{
unsigned idx;
char parent_name[PATH_MAX_LENGTH];
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
config_file_t *new_conf = NULL;
char *shader_directory = NULL;
char *core_path = NULL;
char *game_path = NULL;
char *parent_path = NULL;
char *content_path = NULL;
settings_t *settings = config_get_ptr();
rarch_system_info_t *system = runloop_get_system_info();
const char *core_name = system
? system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
char content_dir_name[PATH_MAX_LENGTH];
if (!string_is_empty(path_get(RARCH_PATH_BASENAME)))
fill_pathname_parent_dir_name(parent_name, path_get(RARCH_PATH_BASENAME), sizeof(parent_name));
fill_pathname_parent_dir_name(content_dir_name, path_get(RARCH_PATH_BASENAME), sizeof(content_dir_name));
if (string_is_empty(core_name) || string_is_empty(game_name))
return false;
@@ -3265,7 +3496,7 @@ bool config_load_shader_preset(void)
game_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
/* final path for parent-dir-specific configuration (prefix+suffix) */
parent_path = (char*)
content_path = (char*)
malloc(PATH_MAX_LENGTH * sizeof(char));
shader_directory[0] = core_path[0] = game_path[0] = '\0';
@@ -3316,26 +3547,26 @@ bool config_load_shader_preset(void)
if (!check_shader_compatibility((enum file_path_enum)(idx)))
continue;
/* Concatenate strings into full paths for core_path, parent path */
fill_pathname_join_special_ext(parent_path,
fill_pathname_join_special_ext(content_path,
shader_directory, core_name,
parent_name,
content_dir_name,
file_path_str((enum file_path_enum)(idx)),
path_size);
/* Create a new config file from parent path */
new_conf = config_file_new(parent_path);
new_conf = config_file_new(content_path);
if (!new_conf)
{
RARCH_LOG("Shaders: no parent-dir-specific preset found at %s.\n",
parent_path);
RARCH_LOG("Shaders: no content-dir-specific preset found at %s.\n",
content_path);
continue;
}
/* Parent-dir shader preset exists, load it. */
RARCH_LOG("Shaders: parent-dir-specific shader preset found at %s.\n",
parent_path);
retroarch_set_shader_preset(parent_path);
RARCH_LOG("Shaders: content-dir-specific shader preset found at %s.\n",
content_path);
retroarch_set_shader_preset(content_path);
goto success;
}
@@ -3370,14 +3601,14 @@ bool config_load_shader_preset(void)
free(shader_directory);
free(core_path);
free(game_path);
free(parent_path);
free(content_path);
return false;
success:
free(shader_directory);
free(core_path);
free(game_path);
free(parent_path);
free(content_path);
config_file_free(new_conf);
return true;
}
@@ -3525,14 +3756,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);
@@ -3799,6 +4030,7 @@ bool config_save_file(const char *path)
struct config_bool_setting *bool_settings = NULL;
struct config_int_setting *int_settings = NULL;
struct config_uint_setting *uint_settings = NULL;
struct config_size_setting *size_settings = NULL;
struct config_float_setting *float_settings = NULL;
struct config_array_setting *array_settings = NULL;
struct config_path_setting *path_settings = NULL;
@@ -3808,6 +4040,7 @@ bool config_save_file(const char *path)
int float_settings_size = sizeof(settings->floats)/ sizeof(settings->floats.placeholder);
int int_settings_size = sizeof(settings->ints) / sizeof(settings->ints.placeholder);
int uint_settings_size = sizeof(settings->uints) / sizeof(settings->uints.placeholder);
int size_settings_size = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
int array_settings_size = sizeof(settings->arrays)/ sizeof(settings->arrays.placeholder);
int path_settings_size = sizeof(settings->paths) / sizeof(settings->paths.placeholder);
@@ -3824,6 +4057,7 @@ bool config_save_file(const char *path)
bool_settings = populate_settings_bool (settings, &bool_settings_size);
int_settings = populate_settings_int (settings, &int_settings_size);
uint_settings = populate_settings_uint (settings, &uint_settings_size);
size_settings = populate_settings_size (settings, &size_settings_size);
float_settings = populate_settings_float (settings, &float_settings_size);
array_settings = populate_settings_array (settings, &array_settings_size);
path_settings = populate_settings_path (settings, &path_settings_size);
@@ -3901,6 +4135,18 @@ bool config_save_file(const char *path)
free(uint_settings);
}
if (size_settings && (size_settings_size > 0))
{
for (i = 0; i < (unsigned)size_settings_size; i++)
if (!size_settings[i].override ||
!retroarch_override_setting_is_set(size_settings[i].override, NULL))
config_set_int(conf,
size_settings[i].ident,
(int)*size_settings[i].ptr);
free(size_settings);
}
for (i = 0; i < MAX_USERS; i++)
{
char cfg[64];
@@ -4020,8 +4266,10 @@ bool config_save_overrides(int override_type)
struct config_bool_setting *bool_overrides = NULL;
struct config_int_setting *int_settings = NULL;
struct config_uint_setting *uint_settings = NULL;
struct config_size_setting *size_settings = NULL;
struct config_int_setting *int_overrides = NULL;
struct config_uint_setting *uint_overrides = NULL;
struct config_size_setting *size_overrides = NULL;
struct config_float_setting *float_settings = NULL;
struct config_float_setting *float_overrides= NULL;
struct config_array_setting *array_settings = NULL;
@@ -4032,16 +4280,22 @@ bool config_save_overrides(int override_type)
char *override_directory = NULL;
char *core_path = NULL;
char *game_path = NULL;
char *content_path = NULL;
settings_t *overrides = config_get_ptr();
int bool_settings_size = sizeof(settings->bools) / sizeof(settings->bools.placeholder);
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
int int_settings_size = sizeof(settings->ints) / sizeof(settings->ints.placeholder);
int uint_settings_size = sizeof(settings->uints) / sizeof(settings->uints.placeholder);
int size_settings_size = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
int array_settings_size = sizeof(settings->arrays) / sizeof(settings->arrays.placeholder);
int path_settings_size = sizeof(settings->paths) / sizeof(settings->paths.placeholder);
rarch_system_info_t *system = runloop_get_system_info();
const char *core_name = system ? system->info.library_name : NULL;
const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME));
char content_dir_name[PATH_MAX_LENGTH];
if (!string_is_empty(path_get(RARCH_PATH_BASENAME)))
fill_pathname_parent_dir_name(content_dir_name, path_get(RARCH_PATH_BASENAME), sizeof(content_dir_name));
if (string_is_empty(core_name) || string_is_empty(game_name))
return false;
@@ -4051,6 +4305,7 @@ bool config_save_overrides(int override_type)
override_directory = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
core_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
game_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
content_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
config_directory[0] = override_directory[0] = core_path[0] = game_path[0] = '\0';
@@ -4070,6 +4325,12 @@ bool config_save_overrides(int override_type)
file_path_str(FILE_PATH_CONFIG_EXTENSION),
path_size);
fill_pathname_join_special_ext(content_path,
config_directory, core_name,
content_dir_name,
file_path_str(FILE_PATH_CONFIG_EXTENSION),
path_size);
fill_pathname_join_special_ext(core_path,
config_directory, core_name,
core_name,
@@ -4094,6 +4355,10 @@ bool config_save_overrides(int override_type)
tmp_i = sizeof(settings->uints) / sizeof(settings->uints.placeholder);
uint_overrides = populate_settings_uint (overrides, &tmp_i);
size_settings = populate_settings_size(settings, &size_settings_size);
tmp_i = sizeof(settings->sizes) / sizeof(settings->sizes.placeholder);
size_overrides = populate_settings_size (overrides, &tmp_i);
float_settings = populate_settings_float(settings, &float_settings_size);
tmp_i = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
float_overrides = populate_settings_float(overrides, &tmp_i);
@@ -4146,6 +4411,18 @@ bool config_save_overrides(int override_type)
(*uint_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)size_settings_size; i++)
{
if ((*size_settings[i].ptr) != (*size_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
size_settings[i].ident, (*size_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
size_overrides[i].ident, (*size_overrides[i].ptr));
config_set_int(conf, size_overrides[i].ident,
(int)(*size_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)float_settings_size; i++)
{
if ((*float_settings[i].ptr) != (*float_overrides[i].ptr))
@@ -4174,6 +4451,11 @@ bool config_save_overrides(int override_type)
for (i = 0; i < (unsigned)path_settings_size; i++)
{
/* blacklist video_shader, better handled by shader presets*/
/* to-do: add setting to control blacklisting */
if (string_is_equal(path_settings[i].ident, "video_shader"))
continue;
if (!string_is_equal(path_settings[i].ptr, path_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%s\n",
@@ -4204,6 +4486,9 @@ bool config_save_overrides(int override_type)
config_set_int(conf, cfg, overrides->uints.input_joypad_map[i]);
}
/* blacklist these since they are handled by remaps */
/* to-do: add setting to control blacklisting
if (settings->uints.input_libretro_device[i]
!= overrides->uints.input_libretro_device[i])
{
@@ -4217,6 +4502,7 @@ bool config_save_overrides(int override_type)
snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1);
config_set_int(conf, cfg, overrides->uints.input_analog_dpad_mode[i]);
}
*/
}
ret = false;
@@ -4233,6 +4519,11 @@ bool config_save_overrides(int override_type)
RARCH_LOG ("[overrides] path %s\n", game_path);
ret = config_file_write(conf, game_path);
break;
case OVERRIDE_CONTENT_DIR:
/* Create a new config file from content_path */
RARCH_LOG ("[overrides] path %s\n", content_path);
ret = config_file_write(conf, content_path);
break;
default:
break;
}
@@ -4248,6 +4539,8 @@ bool config_save_overrides(int override_type)
free(int_settings);
if (uint_settings)
free(uint_settings);
if (size_settings)
free(size_settings);
if (int_overrides)
free(int_overrides);
if (uint_overrides)
@@ -4264,6 +4557,8 @@ bool config_save_overrides(int override_type)
free(path_settings);
if (path_overrides)
free(path_overrides);
if (size_overrides)
free(size_overrides);
free(settings);
free(config_directory);
free(override_directory);
+50 -4
View File
@@ -53,10 +53,18 @@
var = newvar; \
}
enum crt_switch_type
{
CRT_SWITCH_NONE = 0,
CRT_SWITCH_15KHZ,
CRT_SWITCH_31KHZ
};
enum override_type
{
OVERRIDE_NONE = 0,
OVERRIDE_CORE,
OVERRIDE_CONTENT_DIR,
OVERRIDE_GAME
};
@@ -72,6 +80,7 @@ typedef struct settings
bool video_fullscreen;
bool video_windowed_fullscreen;
bool video_vsync;
bool video_adaptive_vsync;
bool video_hard_sync;
bool video_black_frame_insertion;
bool video_vfilter;
@@ -95,10 +104,10 @@ typedef struct settings
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;
@@ -147,6 +156,7 @@ typedef struct settings
bool menu_show_help;
bool menu_show_quit_retroarch;
bool menu_show_reboot;
bool menu_show_shutdown;
bool menu_show_latency;
bool menu_show_rewind;
bool menu_show_overlays;
@@ -176,9 +186,14 @@ typedef struct settings
bool quick_menu_show_shaders;
bool quick_menu_show_save_core_overrides;
bool quick_menu_show_save_game_overrides;
bool quick_menu_show_save_content_dir_overrides;
bool quick_menu_show_information;
bool quick_menu_show_recording;
bool quick_menu_show_streaming;
bool kiosk_mode_enable;
bool crt_switch_custom_refresh_enable;
/* Netplay */
bool netplay_public_announce;
bool netplay_start_as_spectator;
@@ -197,6 +212,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;
@@ -225,6 +242,7 @@ typedef struct settings
bool bundle_assets_extract_enable;
/* Misc. */
bool discord_enable;
bool threaded_data_runloop_enable;
bool set_supports_no_game_enable;
bool auto_screenshot_filename;
@@ -232,8 +250,12 @@ typedef struct settings
bool playlist_entry_remove;
bool playlist_entry_rename;
bool rewind_enable;
bool vrr_runloop_enable;
bool apply_cheats_after_toggle;
bool apply_cheats_after_load;
bool run_ahead_enabled;
bool run_ahead_secondary_instance;
bool run_ahead_hide_warnings;
bool pause_nonactive;
bool block_sram_overwrite;
bool savestate_auto_index;
@@ -268,6 +290,8 @@ typedef struct settings
bool automatically_add_content_to_playlist;
bool video_window_show_decorations;
bool sustained_performance_mode;
} bools;
struct
@@ -276,6 +300,7 @@ typedef struct settings
float video_scale;
float video_aspect_ratio;
float video_refresh_rate;
float crt_video_refresh_rate;
float video_font_size;
float video_msg_pos_x;
float video_msg_pos_y;
@@ -308,6 +333,7 @@ typedef struct settings
int location_update_interval_distance;
int state_slot;
int audio_wasapi_sh_buffer_length;
int crt_switch_center_adjust;
} ints;
struct
@@ -323,6 +349,7 @@ typedef struct settings
unsigned input_turbo_duty_cycle;
unsigned input_bind_timeout;
unsigned input_bind_hold;
unsigned input_menu_toggle_gamepad_combo;
unsigned input_keyboard_gamepad_mapping_type;
@@ -337,6 +364,7 @@ typedef struct settings
unsigned content_history_size;
unsigned libretro_log_level;
unsigned rewind_granularity;
unsigned rewind_buffer_size_step;
unsigned autosave_interval;
unsigned network_cmd_port;
unsigned network_remote_base_port;
@@ -344,7 +372,8 @@ typedef struct settings
unsigned video_window_x;
unsigned video_window_y;
unsigned video_window_opacity;
unsigned crt_switch_resolution_super;
unsigned crt_switch_resolution;
unsigned crt_switch_resolution_super;
unsigned video_monitor_index;
unsigned video_fullscreen_x;
unsigned video_fullscreen_y;
@@ -358,6 +387,7 @@ typedef struct settings
unsigned video_msg_bgcolor_red;
unsigned video_msg_bgcolor_green;
unsigned video_msg_bgcolor_blue;
unsigned video_stream_port;
unsigned menu_thumbnails;
unsigned menu_left_thumbnails;
@@ -396,8 +426,16 @@ typedef struct settings
unsigned led_map[MAX_LEDS];
unsigned run_ahead_frames;
unsigned midi_volume;
} uints;
struct
{
size_t placeholder;
size_t rewind_buffer_size;
} sizes;
struct
{
char placeholder;
@@ -417,6 +455,7 @@ typedef struct settings
char audio_resampler[32];
char input_driver[32];
char input_joypad_driver[32];
char midi_driver[32];
char input_keyboard_layout[64];
@@ -430,6 +469,9 @@ typedef struct settings
char bundle_assets_dst_subdir[PATH_MAX_LENGTH];
char netplay_mitm_server[255];
char midi_input[32];
char midi_output[32];
} arrays;
struct
@@ -450,6 +492,9 @@ typedef struct settings
char path_cheat_database[PATH_MAX_LENGTH];
char path_content_database[PATH_MAX_LENGTH];
char path_overlay[PATH_MAX_LENGTH];
char path_record_config[PATH_MAX_LENGTH];
char path_stream_config[PATH_MAX_LENGTH];
char path_stream_url[PATH_MAX_LENGTH];
char path_menu_wallpaper[PATH_MAX_LENGTH];
char path_audio_dsp_plugin[PATH_MAX_LENGTH];
char path_softfilter_plugin[PATH_MAX_LENGTH];
@@ -464,7 +509,6 @@ typedef struct settings
char path_shader[PATH_MAX_LENGTH];
char path_font[PATH_MAX_LENGTH];
char directory_audio_filter[PATH_MAX_LENGTH];
char directory_autoconfig[PATH_MAX_LENGTH];
char directory_video_filter[PATH_MAX_LENGTH];
@@ -492,7 +536,6 @@ typedef struct settings
video_viewport_t video_viewport_custom;
size_t rewind_buffer_size;
} settings_t;
/**
@@ -576,6 +619,9 @@ const char *config_get_default_joypad(void);
**/
const char *config_get_default_menu(void);
const char *config_get_default_midi(void);
const char *config_get_midi_driver_options(void);
const char *config_get_default_record(void);
/**
+15 -1
View File
@@ -43,6 +43,7 @@
#include "verbosity.h"
#include "gfx/video_driver.h"
#include "audio/audio_driver.h"
#include "tasks/tasks_internal.h"
#ifdef HAVE_RUNAHEAD
#include "runahead/copy_load_info.h"
@@ -290,12 +291,15 @@ bool core_load_game(retro_ctx_load_content_info_t *load_info)
bool contentless = false;
bool is_inited = false;
video_driver_set_cached_frame_ptr(NULL);
#ifdef HAVE_RUNAHEAD
set_load_content_info(load_info);
clear_controller_port_map();
#endif
content_get_status(&contentless, &is_inited);
set_save_state_in_background(false);
if (load_info && load_info->special)
current_core.game_loaded = current_core.retro_load_game_special(
@@ -373,12 +377,16 @@ bool core_get_system_av_info(struct retro_system_av_info *av_info)
bool core_reset(void)
{
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_reset();
return true;
}
bool core_init(void)
{
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_init();
current_core.inited = true;
return true;
@@ -386,6 +394,8 @@ bool core_init(void)
bool core_unload(void)
{
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_deinit();
return true;
}
@@ -394,11 +404,15 @@ bool core_unload(void)
bool core_unload_game(void)
{
video_driver_free_hw_context();
audio_driver_stop();
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_unload_game();
current_core.game_loaded = false;
audio_driver_stop();
return true;
}
+20
View File
@@ -149,8 +149,10 @@ static void core_info_list_free(core_info_list_t *core_info_list)
free(info->path);
free(info->core_name);
free(info->systemname);
free(info->system_id);
free(info->system_manufacturer);
free(info->display_name);
free(info->display_version);
free(info->supported_extensions);
free(info->authors);
free(info->permissions);
@@ -278,6 +280,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))
{
@@ -294,6 +303,14 @@ static core_info_list_t *core_info_list_new(const char *path,
tmp = NULL;
}
if (config_get_string(conf, "systemid", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].system_id = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "manufacturer", &tmp)
&& !string_is_empty(tmp))
{
@@ -671,6 +688,9 @@ bool core_info_load(core_info_ctx_find_t *info)
if (!info)
return false;
if (!core_info_current)
core_info_init_current_core();
core_info_get_current_core(&core_info);
if (!core_info_curr_list)
+2
View File
@@ -43,9 +43,11 @@ typedef struct
char *path;
void *config_data;
char *display_name;
char *display_version;
char *core_name;
char *system_manufacturer;
char *systemname;
char *system_id;
char *supported_extensions;
char *authors;
char *permissions;
+1
View File
@@ -21,6 +21,7 @@ enum rarch_core_type
CORE_TYPE_PLAIN = 0,
CORE_TYPE_DUMMY,
CORE_TYPE_FFMPEG,
CORE_TYPE_MPV,
CORE_TYPE_IMAGEVIEWER,
CORE_TYPE_NETRETROPAD,
CORE_TYPE_VIDEO_PROCESSOR
+56
View File
@@ -136,6 +136,62 @@ size_t libretro_ffmpeg_retro_get_memory_size(unsigned id);
#endif
#ifdef HAVE_MPV
/* Internal mpv core. */
void libretro_mpv_retro_init(void);
void libretro_mpv_retro_deinit(void);
unsigned libretro_mpv_retro_api_version(void);
void libretro_mpv_retro_get_system_info(struct retro_system_info *info);
void libretro_mpv_retro_get_system_av_info(struct retro_system_av_info *info);
void libretro_mpv_retro_set_environment(retro_environment_t cb);
void libretro_mpv_retro_set_video_refresh(retro_video_refresh_t cb);
void libretro_mpv_retro_set_audio_sample(retro_audio_sample_t cb);
void libretro_mpv_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb);
void libretro_mpv_retro_set_input_poll(retro_input_poll_t cb);
void libretro_mpv_retro_set_input_state(retro_input_state_t cb);
void libretro_mpv_retro_set_controller_port_device(unsigned port, unsigned device);
void libretro_mpv_retro_reset(void);
void libretro_mpv_retro_run(void);
size_t libretro_mpv_retro_serialize_size(void);
bool libretro_mpv_retro_serialize(void *data, size_t size);
bool libretro_mpv_retro_unserialize(const void *data, size_t size);
void libretro_mpv_retro_cheat_reset(void);
void libretro_mpv_retro_cheat_set(unsigned index, bool enabled, const char *code);
bool libretro_mpv_retro_load_game(const struct retro_game_info *game);
bool libretro_mpv_retro_load_game_special(unsigned game_type,
const struct retro_game_info *info, size_t num_info);
void libretro_mpv_retro_unload_game(void);
unsigned libretro_mpv_retro_get_region(void);
void *libretro_mpv_retro_get_memory_data(unsigned id);
size_t libretro_mpv_retro_get_memory_size(unsigned id);
#endif
#ifdef HAVE_IMAGEVIEWER
/* Internal image viewer core. */
+1 -1
View File
@@ -114,7 +114,7 @@ endif
CFLAGS += -I../../libretro-common/include
OBJECTS := mpv-libretro.o
LDFLAGS += -lmpv -ldl -lm
LDFLAGS += -lmpv -lm
CFLAGS += -Wall -pedantic
all: $(TARGET)
+33 -4
View File
@@ -1,17 +1,46 @@
# libretro-mpv
mpv media player as a libretro core. A proof of concept release is now available.
mpv media player as a libretro core. A proof of concept release is now
available.
Aims to use features already established in mpv that are not currently available in Retroarch movieplayer.
Aims to use features already established in mpv that are not currently
available in Retroarch movieplayer.
I want to be able to use Retroarch as my movie player on my embedded devices (Raspberry Pi) and desktop using hardware acceleration without having to use Kodi or mpv directly. Thus allowing for a more integrated experience, and smaller root filesystem.
I want to be able to use Retroarch as my movie player on my embedded devices
(Raspberry Pi) and desktop using hardware acceleration without having to use
Kodi or mpv directly. Thus allowing for a more integrated experience, and
smaller root filesystem.
## Compiling
Retroarch must be compiled with `--disable-ffmpeg` to stop the integrated movieplayer from playing the input file.
### Overview
Retroarch must be compiled with `--disable-ffmpeg` to stop the integrated
movieplayer from playing the input file.
FFmpeg (preferably master branch) must be compiled with `--enable-shared`.
mpv must be compiled with `--enable-libmpv-shared`.
Then run `make` in the mpv-libretro folder.
### Compiling with Mingw-w64 on Windows
RetroArch must be compiled with `--disable-ffmpeg` and have OpenGL or
OpenGLES enabled. Compiling RetroArch is not described here.
1. Open `Minwg-w64 64 bit` (not MSYS2 shell).
2. Install ffmpeg using `pacman -S mingw64/mingw-w64-x86_64-ffmpeg`.
3. Clone the ao_cb branch of https://github.com/deltabeard/mpv.git . This fork has the audio
callback patches required for libretro-mpv.
4. Follow the instructions at https://github.com/mpv-player/mpv/blob/master/DOCS/compile-windows.md#native-compilation-with-msys2 to compile mpv.
5. Download libretro-mpv release 0.3.alpha by either checking out the
`audio-cb-new` branch of `https://github.com/libretro/libretro-mpv.git` or
by downloading
https://github.com/libretro/libretro-mpv/archive/0.3.alpha.tar.gz .
6. Run `make` in the libretro-mpv folder. If using OpenGLES, run `make
platform=gles` instead.
Overall, the dependencies required to build libretro-mpv are:
- ffmpeg 4.0 (provided by mingw64/mingw-w64-x86_64-ffmpeg)
- mpv from https://github.com/deltabeard/mpv.git fork.
+1
View File
@@ -0,0 +1 @@
#include "../internal_cores.h"
+227 -208
View File
@@ -14,26 +14,28 @@
* 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 <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
#include <mpv/client.h>
#include <mpv/opengl_cb.h>
#include <mpv/render_gl.h>
#include <libretro.h>
#ifdef RARCH_INTERNAL
#include "internal_cores.h"
#define CORE_PREFIX(s) libretro_mpv_##s
#else
#define CORE_PREFIX(s) s
#endif
#include "version.h"
static struct retro_hw_render_callback hw_render;
@@ -41,28 +43,25 @@ static struct retro_hw_render_callback hw_render;
static struct retro_log_callback logging;
static retro_log_printf_t log_cb;
static retro_video_refresh_t video_cb;
static retro_audio_sample_t audio_cb;
static retro_audio_sample_batch_t audio_batch_cb;
static retro_environment_t environ_cb;
static retro_input_poll_t input_poll_cb;
static retro_input_state_t input_state_cb;
static retro_video_refresh_t CORE_PREFIX(video_cb);
static retro_audio_sample_t CORE_PREFIX(audio_cb);
static retro_audio_sample_batch_t CORE_PREFIX(audio_batch_cb);
static retro_environment_t CORE_PREFIX(environ_cb);
static retro_input_poll_t CORE_PREFIX(input_poll_cb);
static retro_input_state_t CORE_PREFIX(input_state_cb);
static mpv_handle *mpv;
static mpv_opengl_cb_context *mpv_gl;
/* Keep track of the number of events in mpv queue */
static unsigned int event_waiting = 0;
static mpv_render_context *mpv_gl;
/* Save the current playback time for context changes */
static int64_t *playback_time = 0;
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)
void on_mpv_redraw(void *cb_ctx)
{
frame_queue++;
}
@@ -76,52 +75,59 @@ static void fallback_log(enum retro_log_level level, const char *fmt, ...)
va_end(va);
}
static void print_mpv_logs(void)
/**
* Process various events triggered by mpv, such as printing log messages.
*
* \param event_block Wait until the mpv triggers specified event. Should be
* NULL if no wait is required.
*/
static void process_mpv_events(mpv_event_id event_block)
{
/* Print out mpv logs */
if(event_waiting > 0)
do
{
while(1)
mpv_event *mp_event = mpv_wait_event(mpv, 0);
if(event_block == MPV_EVENT_NONE &&
mp_event->event_id == MPV_EVENT_NONE)
break;
if(mp_event->event_id == event_block)
event_block = MPV_EVENT_NONE;
if(mp_event->event_id == MPV_EVENT_LOG_MESSAGE)
{
mpv_event *mp_event = mpv_wait_event(mpv, 0);
if(mp_event->event_id == MPV_EVENT_NONE)
break;
if(mp_event->event_id == MPV_EVENT_LOG_MESSAGE)
{
struct mpv_event_log_message *msg =
(struct mpv_event_log_message *)mp_event->data;
log_cb(RETRO_LOG_INFO, "mpv: [%s] %s: %s",
msg->prefix, msg->level, msg->text);
}
else if(mp_event->event_id == MPV_EVENT_END_FILE)
{
struct mpv_event_end_file *eof =
(struct mpv_event_end_file *)mp_event->data;
if(eof->reason == MPV_END_FILE_REASON_EOF)
environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, NULL);
#if 0
/* The following could be done instead if the file was not
* closed once the end was reached - allowing the user to seek
* back without reopening the file.
*/
struct retro_message ra_msg = {
"Finished playing file", 60 * 5, /* 5 seconds */
};
environ_cb(RETRO_ENVIRONMENT_SET_MESSAGE, &ra_msg);RETRO_ENVIRONMENT_SHUTDOWN
#endif
}
else
{
log_cb(RETRO_LOG_INFO, "mpv: %s\n",
mpv_event_name(mp_event->event_id));
}
struct mpv_event_log_message *msg =
(struct mpv_event_log_message *)mp_event->data;
log_cb(RETRO_LOG_INFO, "mpv: [%s] %s: %s",
msg->prefix, msg->level, msg->text);
}
else if(mp_event->event_id == MPV_EVENT_END_FILE)
{
struct mpv_event_end_file *eof =
(struct mpv_event_end_file *)mp_event->data;
event_waiting = 0;
if(eof->reason == MPV_END_FILE_REASON_EOF)
CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SHUTDOWN, NULL);
#if 0
/* The following could be done instead if the file was not
* closed once the end was reached - allowing the user to seek
* back without reopening the file.
*/
struct retro_message ra_msg = {
"Finished playing file", 60 * 5, /* 5 seconds */
};
CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_MESSAGE, &ra_msg);RETRO_ENVIRONMENT_SHUTDOWN
#endif
}
else if(mp_event->event_id == MPV_EVENT_NONE)
continue;
else
{
log_cb(RETRO_LOG_INFO, "mpv: %s\n",
mpv_event_name(mp_event->event_id));
}
}
while(1);
}
static void *get_proc_address_mpv(void *fn_ctx, const char *name)
@@ -134,58 +140,38 @@ 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
#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)
{
proc_addr = dlsym(h, name);
dlclose(h);
}
}
#endif
if(proc_addr == NULL)
log_cb(RETRO_LOG_ERROR, "Failure obtaining %s proc address\n", name);
return proc_addr;
}
static void on_mpv_events(void *mpv)
void CORE_PREFIX(retro_init)(void)
{
event_waiting++;
}
if(mpv_client_api_version() != MPV_CLIENT_API_VERSION)
{
log_cb(RETRO_LOG_WARN, "libmpv version mismatch. Please update or "
"recompile mpv-libretro after updating libmpv.");
}
void retro_init(void)
{
return;
}
void retro_deinit(void)
{
return;
}
void CORE_PREFIX(retro_deinit)(void)
{}
unsigned retro_api_version(void)
unsigned CORE_PREFIX(retro_api_version)(void)
{
return RETRO_API_VERSION;
}
void retro_set_controller_port_device(unsigned port, unsigned device)
void CORE_PREFIX(retro_set_controller_port_device)(unsigned port, unsigned device)
{
log_cb(RETRO_LOG_INFO, "Plugging device %u into port %u.\n", device, port);
return;
}
void retro_get_system_info(struct retro_system_info *info)
void CORE_PREFIX(retro_get_system_info)(struct retro_system_info *info)
{
memset(info, 0, sizeof(*info));
info->library_name = "mpv";
@@ -206,18 +192,19 @@ void retro_get_system_info(struct retro_system_info *info)
"vtt|wav|wsd|xl|xm|xmgz|xmr|xmv|xmz|xvag|y4m|yop|yuv|yuv10";
}
void retro_get_system_av_info(struct retro_system_av_info *info)
void CORE_PREFIX(retro_get_system_av_info)(struct retro_system_av_info *info)
{
float sampling_rate = 48000.0f;
#if 0
struct retro_variable var = { .key = "test_aspect" };
environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var);
CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var);
var.key = "test_samplerate";
if(environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
if(CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
sampling_rate = strtof(var.value, NULL);
#endif
info->timing = (struct retro_system_timing) {
.fps = 60.0,
.sample_rate = sampling_rate,
@@ -235,15 +222,17 @@ void retro_get_system_av_info(struct retro_system_av_info *info)
};
}
void retro_set_environment(retro_environment_t cb)
void CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
{
environ_cb = cb;
CORE_PREFIX(environ_cb) = cb;
static const struct retro_variable vars[] = {
{ "test_samplerate", "Sample Rate; 48000|30000|20000" },
#if 0
{ "test_samplerate", "Sample Rate; 48000" },
{ "test_opt0", "Test option #0; false|true" },
{ "test_opt1", "Test option #1; 0" },
{ "test_opt2", "Test option #2; 0|1|foo|3" },
#endif
{ NULL, NULL },
};
@@ -258,6 +247,7 @@ void retro_set_environment(retro_environment_t cb)
static void context_reset(void)
{
const char *cmd[] = {"loadfile", filepath, NULL};
int ret;
#ifdef HAVE_LOCALE
setlocale(LC_NUMERIC, "C");
@@ -265,66 +255,68 @@ static void context_reset(void)
mpv = mpv_create();
if(mpv == NULL)
if(!mpv)
{
log_cb(RETRO_LOG_ERROR, "failed creating context\n");
exit(EXIT_FAILURE);
}
if(mpv_initialize(mpv) < 0)
if((ret = mpv_initialize(mpv)) < 0)
{
log_cb(RETRO_LOG_ERROR, "mpv init failed\n");
log_cb(RETRO_LOG_ERROR, "mpv init failed: %s\n", mpv_error_string(ret));
exit(EXIT_FAILURE);
}
/* When normal mpv events are available. */
mpv_set_wakeup_callback(mpv, on_mpv_events, NULL);
if(mpv_request_log_messages(mpv, "v") < 0)
log_cb(RETRO_LOG_ERROR, "mpv logging failed\n");
/* The OpenGL API is somewhat separate from the normal mpv API. This only
* returns NULL if no OpenGL support is compiled.
*/
mpv_gl = mpv_get_sub_api(mpv, MPV_SUB_API_OPENGL_CB);
if(mpv_gl == NULL)
if((ret = mpv_request_log_messages(mpv, "v")) < 0)
{
log_cb(RETRO_LOG_ERROR, "failed to create mpv GL API handle\n");
log_cb(RETRO_LOG_ERROR, "mpv logging failed: %s\n",
mpv_error_string(ret));
}
mpv_render_param params[] = {
{MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL},
{MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &(mpv_opengl_init_params){
.get_proc_address = get_proc_address_mpv,
}},
{0}
};
if((ret = mpv_render_context_create(&mpv_gl, mpv, params)) < 0)
{
log_cb(RETRO_LOG_ERROR, "failed to initialize mpv GL context: %s\n",
mpv_error_string(ret));
goto err;
}
if(mpv_opengl_cb_init_gl(mpv_gl, NULL, get_proc_address_mpv, NULL) < 0)
{
log_cb(RETRO_LOG_ERROR, "failed to initialize mpv GL context\n");
goto err;
}
mpv_render_context_set_update_callback(mpv_gl, on_mpv_redraw, NULL);
/* Actually using the opengl_cb state has to be explicitly requested.
* Otherwise, mpv will create a separate platform window.
*/
if(mpv_set_option_string(mpv, "vo", "opengl-cb") < 0)
{
log_cb(RETRO_LOG_ERROR, "failed to set video output to OpenGL\n");
goto err;
}
mpv_opengl_cb_set_update_callback(mpv_gl, queue_new_frame, NULL);
mpv_set_option_string(mpv, "ao", "audio-cb");
mpv_set_option_string(mpv, "ao", "libmpv");
/* 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");
if(mpv_command(mpv, cmd) != 0)
if((ret = mpv_set_option_string(mpv, "hwdec", "auto")) < 0)
{
log_cb(RETRO_LOG_ERROR, "failed to issue mpv_command to load file\n");
log_cb(RETRO_LOG_ERROR, "failed to set hwdec option: %s\n",
mpv_error_string(ret));
}
if((ret = mpv_command(mpv, cmd)) != 0)
{
log_cb(RETRO_LOG_ERROR, "mpv_command failed to load input file: %s\n",
mpv_error_string(ret));
goto err;
}
/* 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, "af", "format=s16:48000:stereo");
//mpv_set_option_string(mpv, "opengl-swapinterval", "0");
/* Process any events whilst we wait for playback to begin. */
process_mpv_events(MPV_EVENT_NONE);
/* Keep trying until mpv accepts the property. This is done to seek to the
* point in the file after the previous context was destroyed. If no
@@ -332,20 +324,14 @@ static void context_reset(void)
*
* This also seems to fix some black screen issues.
*/
while(mpv_set_property(mpv,
"playback-time", MPV_FORMAT_INT64, &playback_time) < 0)
if(playback_time != 0)
{
/* Garbage fix to overflowing log */
usleep(10);
process_mpv_events(MPV_EVENT_PLAYBACK_RESTART);
while(mpv_set_property(mpv,
"playback-time", MPV_FORMAT_INT64, &playback_time) < 0)
{}
}
/* 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");
@@ -356,14 +342,14 @@ static void context_reset(void)
err:
/* Print mpv logs to see why mpv failed. */
print_mpv_logs();
process_mpv_events(MPV_EVENT_NONE);
exit(EXIT_FAILURE);
}
static void context_destroy(void)
{
mpv_get_property(mpv, "playback-time", MPV_FORMAT_INT64, &playback_time);
mpv_opengl_cb_uninit_gl(mpv_gl);
mpv_render_context_free(mpv_gl);
mpv_terminate_destroy(mpv);
log_cb(RETRO_LOG_INFO, "Context destroyed.\n");
}
@@ -378,60 +364,77 @@ static bool retro_init_hw_context(void)
hw_render.context_reset = context_reset;
hw_render.context_destroy = context_destroy;
if (!environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render))
if (!CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render))
return false;
return true;
}
void retro_set_audio_sample(retro_audio_sample_t cb)
void CORE_PREFIX(retro_set_audio_sample)(retro_audio_sample_t cb)
{
audio_cb = cb;
CORE_PREFIX(audio_cb) = cb;
}
void retro_set_audio_sample_batch(retro_audio_sample_batch_t cb)
void CORE_PREFIX(retro_set_audio_sample_batch)(retro_audio_sample_batch_t cb)
{
audio_batch_cb = cb;
CORE_PREFIX(audio_batch_cb) = cb;
}
void retro_set_input_poll(retro_input_poll_t cb)
void CORE_PREFIX(retro_set_input_poll)(retro_input_poll_t cb)
{
input_poll_cb = cb;
CORE_PREFIX(input_poll_cb) = cb;
}
void retro_set_input_state(retro_input_state_t cb)
void CORE_PREFIX(retro_set_input_state)(retro_input_state_t cb)
{
input_state_cb = cb;
CORE_PREFIX(input_state_cb) = cb;
}
void retro_set_video_refresh(retro_video_refresh_t cb)
void CORE_PREFIX(retro_set_video_refresh)(retro_video_refresh_t cb)
{
video_cb = cb;
CORE_PREFIX(video_cb) = cb;
}
void retro_reset(void)
void CORE_PREFIX(retro_reset)(void)
{
return;
}
static void audio_callback(double fps)
{
/* Obtain len samples to reduce lag. */
int len = 48000 / (int)floor(fps);
static int16_t frames[512];
const unsigned int buff_len = 1024;
uint8_t buff[buff_len];
while(len > 0)
if(len < 4)
len = 4;
do
{
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;
len = len - (len % 4);
len -= mpv_len;
int ret = mpv_audio_callback(mpv, &buff,
len > buff_len ? buff_len : len);
//printf("acb: %lu\n", audio_batch_cb(frames, mpv_len));
audio_batch_cb(frames, mpv_len);
if(ret < 0)
{
#if 0
log_cb(RETRO_LOG_ERROR, "mpv encountered an error in audio "
"callback: %d.\n", ret);
#endif
return;
}
/* mpv may refuse to buffer audio if the first video frame has not
* displayed yet. */
if(ret == 0)
return;
len -= ret;
CORE_PREFIX(audio_batch_cb)((const int16_t*)buff, ret);
}
while(len > 4);
}
static void retropad_update_input(void)
@@ -445,7 +448,7 @@ static void retropad_update_input(void)
struct Input current;
static struct Input last;
input_poll_cb();
CORE_PREFIX(input_poll_cb)();
/* Commands that are called on rising edge only */
@@ -456,11 +459,11 @@ static void retropad_update_input(void)
* Unsure if saving the memory is worth the extra checks, costing CPU time,
* but both are incredibly miniscule anyway.
*/
current.l = input_state_cb(0, RETRO_DEVICE_JOYPAD,
current.l = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD,
0, RETRO_DEVICE_ID_JOYPAD_L) != 0 ? 1 : 0;
current.r = input_state_cb(0, RETRO_DEVICE_JOYPAD,
current.r = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD,
0, RETRO_DEVICE_ID_JOYPAD_R) != 0 ? 1 : 0;
current.a = input_state_cb(0, RETRO_DEVICE_JOYPAD,
current.a = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD,
0, RETRO_DEVICE_ID_JOYPAD_A) != 0 ? 1 : 0;
if(current.l == 1 && last.l == 0)
@@ -473,24 +476,24 @@ static void retropad_update_input(void)
mpv_command_string(mpv, "cycle pause");
/* TODO #3: Press and hold commands with small delay */
if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0,
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
RETRO_DEVICE_ID_JOYPAD_LEFT))
mpv_command_string(mpv, "seek -5");
if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0,
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
RETRO_DEVICE_ID_JOYPAD_RIGHT))
mpv_command_string(mpv, "seek 5");
if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0,
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
RETRO_DEVICE_ID_JOYPAD_UP))
mpv_command_string(mpv, "seek 60");
if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0,
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
RETRO_DEVICE_ID_JOYPAD_DOWN))
mpv_command_string(mpv, "seek -60");
/* Press and hold commands */
if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0,
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
RETRO_DEVICE_ID_JOYPAD_X))
mpv_command_string(mpv, "show-progress");
@@ -502,7 +505,7 @@ static void retropad_update_input(void)
last.a = current.a;
}
void retro_run(void)
void CORE_PREFIX(retro_run)(void)
{
/* We only need to update the base video size once, and we do it here since
* the input file is not processed during the first
@@ -546,51 +549,60 @@ void retro_run(void)
};
if(width > 0 && height > 0)
environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &av_info);
CORE_PREFIX(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(container_fps);
process_mpv_events(MPV_EVENT_NONE);
#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);
mpv_render_param params[] = {
{MPV_RENDER_PARAM_OPENGL_FBO, &(mpv_opengl_fbo){
.fbo = hw_render.get_current_framebuffer(),
.w = width,
.h = height,
}},
{0}
};
mpv_render_context_render(mpv_gl, params);
CORE_PREFIX(video_cb)(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0);
frame_queue--;
}
else
video_cb(NULL, width, height, 0);
CORE_PREFIX(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);
CORE_PREFIX(video_cb)(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0);
#endif
return;
}
/* No save-state support */
size_t retro_serialize_size(void)
size_t CORE_PREFIX(retro_serialize_size)(void)
{
return 0;
}
bool retro_serialize(void *data_, size_t size)
bool CORE_PREFIX(retro_serialize)(void *data_, size_t size)
{
return true;
}
bool retro_unserialize(const void *data_, size_t size)
bool CORE_PREFIX(retro_unserialize)(const void *data_, size_t size)
{
return true;
}
bool retro_load_game(const struct retro_game_info *info)
bool CORE_PREFIX(retro_load_game)(const struct retro_game_info *info)
{
/* Supported on most systems. */
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888;
@@ -607,21 +619,30 @@ bool retro_load_game(const struct retro_game_info *info)
{ 0 },
};
if(info->path == NULL)
return false;
/* Copy the file path to a global variable as we need it in context_reset()
* where mpv is initialised.
*/
filepath = strdup(info->path);
if((filepath = malloc(strlen(info->path)+1)) == NULL)
{
log_cb(RETRO_LOG_ERROR, "Unable to allocate memory for filepath\n");
return false;
}
environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc);
strcpy(filepath,info->path);
CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc);
/* Not bothered if this fails. Assuming the default is selected anyway. */
if(environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt) == false)
if(CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt) == false)
{
log_cb(RETRO_LOG_ERROR, "XRGB8888 is not supported.\n");
/* Try RGB565 */
fmt = RETRO_PIXEL_FORMAT_RGB565;
environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt);
CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt);
}
if(retro_init_hw_context() == false)
@@ -633,41 +654,39 @@ bool retro_load_game(const struct retro_game_info *info)
return true;
}
bool retro_load_game_special(unsigned type, const struct retro_game_info *info,
bool CORE_PREFIX(retro_load_game_special)(unsigned type, const struct retro_game_info *info,
size_t num)
{
return false;
}
void retro_unload_game(void)
void CORE_PREFIX(retro_unload_game)(void)
{
free(filepath);
filepath = NULL;
return;
}
unsigned retro_get_region(void)
unsigned CORE_PREFIX(retro_get_region)(void)
{
return RETRO_REGION_NTSC;
}
void *retro_get_memory_data(unsigned id)
void *CORE_PREFIX(retro_get_memory_data)(unsigned id)
{
return NULL;
}
size_t retro_get_memory_size(unsigned id)
size_t CORE_PREFIX(retro_get_memory_size)(unsigned id)
{
return 0;
}
void retro_cheat_reset(void)
{
return;
}
void CORE_PREFIX(retro_cheat_reset)(void)
{}
void retro_cheat_set(unsigned index, bool enabled, const char *code)
void CORE_PREFIX(retro_cheat_set)(unsigned index, bool enabled, const char *code)
{
return;
(void)index;
(void)enabled;
(void)code;
}
+1 -1
View File
@@ -1,3 +1,3 @@
#ifndef LIBRETRO_MPV_VERSION
#define LIBRETRO_MPV_VERSION "0.2.alpha"
#define LIBRETRO_MPV_VERSION "0.3.alpha"
#endif
+85
View File
@@ -0,0 +1,85 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>
#include "mini-hb-menu/common.h"
extern const loaderFuncs_s loader_Ninjhax1;
extern const loaderFuncs_s loader_Ninjhax2;
extern const loaderFuncs_s loader_Rosalina;
static void (*launch_3dsx)(const char* path, argData_s* args, executableMetadata_s* em);
static int exec_3dsx_actual(const char* path, const char** args, bool appendPath){
struct stat sBuff;
argData_s newProgramArgs;
unsigned int argChars = 0;
unsigned int argNum = 0;
bool fileExists;
bool inited;
if(path == NULL || path[0] == '\0'){
errno = EINVAL;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if(!fileExists){
errno = ENOENT;
return -1;
}
else if(S_ISDIR(sBuff.st_mode)){
errno = EINVAL;
return -1;
}
//args the string functions write to the passed string, this will cause a write to read only memory sot the string must be cloned
memset(newProgramArgs.buf, '\0', sizeof(newProgramArgs.buf));
newProgramArgs.dst = (char*)&newProgramArgs.buf[1];
if(appendPath){
strcpy(newProgramArgs.dst, path);
newProgramArgs.dst += strlen(path) + 1;
newProgramArgs.buf[0]++;
}
while(args[argNum] != NULL){
strcpy(newProgramArgs.dst, args[argNum]);
newProgramArgs.dst += strlen(args[argNum]) + 1;
newProgramArgs.buf[0]++;
argNum++;
}
inited = loader_Rosalina.init();
launch_3dsx = loader_Rosalina.launchFile;
if(!inited){
inited = loader_Ninjhax2.init();
launch_3dsx = loader_Ninjhax2.launchFile;
}
if(!inited){
inited = loader_Ninjhax1.init();
launch_3dsx = loader_Ninjhax1.launchFile;
}
if(inited){
osSetSpeedupEnable(false);
launch_3dsx(path, &newProgramArgs, NULL);
exit(0);
}
//should never be reached
errno = ENOTSUP;
return -1;
}
int exec_3dsx(const char* path, const char** args){
return exec_3dsx_actual(path, args, true/*appendPath*/);
}
int exec_3dsx_no_path_in_args(const char* path, const char** args){
return exec_3dsx_actual(path, args, false/*appendPath*/);
}
+9
View File
@@ -0,0 +1,9 @@
#ifndef EXEC_3DSX_H
#define EXEC_3DSX_H
//since 3dsx programs are not guaranteed access to the OS, the 3dsx bootloader run by the exploit must run the next program
//your program must have no extra threads running when this is called, these limits do not apply to exec_cia
int exec_3dsx_no_path_in_args(const char* path, const char** args);
int exec_3dsx(const char* path, const char** args);
#endif
+203
View File
@@ -0,0 +1,203 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>
#include <3ds.h>
#define FILE_CHUNK_SIZE 4096
typedef struct{
u32 argc;
char args[0x300 - 0x4];
}ciaParam;
char argvHmac[0x20] = {0x1d, 0x78, 0xff, 0xb9, 0xc5, 0xbc, 0x78, 0xb7, 0xac, 0x29, 0x1d, 0x3e, 0x16, 0xd0, 0xcf, 0x53, 0xef, 0x12, 0x58, 0x83, 0xb6, 0x9e, 0x2f, 0x79, 0x47, 0xf9, 0x35, 0x61, 0xeb, 0x50, 0xd7, 0x67};
static void errorAndQuit(const char* errorStr){
errorConf error;
errorInit(&error, ERROR_TEXT, CFG_LANGUAGE_EN);
errorText(&error, errorStr);
errorDisp(&error);
exit(0);
}
static int isCiaInstalled(u64 titleId, u16 version){
u32 titlesToRetrieve;
u32 titlesRetrieved;
u64* titleIds;
bool titleExists = false;
AM_TitleEntry titleInfo;
Result failed;
failed = AM_GetTitleCount(MEDIATYPE_SD, &titlesToRetrieve);
if(R_FAILED(failed))
return -1;
titleIds = malloc(titlesToRetrieve * sizeof(uint64_t));
if(titleIds == NULL)
return -1;
failed = AM_GetTitleList(&titlesRetrieved, MEDIATYPE_SD, titlesToRetrieve, titleIds);
if(R_FAILED(failed))
return -1;
for(u32 titlesToCheck = 0; titlesToCheck < titlesRetrieved; titlesToCheck++){
if(titleIds[titlesToCheck] == titleId){
titleExists = true;
break;
}
}
free(titleIds);
if(titleExists){
failed = AM_GetTitleInfo(MEDIATYPE_SD, 1 /*titleCount*/, &titleId, &titleInfo);
if(R_FAILED(failed))
return -1;
if(titleInfo.version == version)
return 1;
}
return 0;
}
static int installCia(Handle ciaFile){
Result failed;
Handle outputHandle;
u64 fileSize;
u64 fileOffset = 0;
u32 bytesRead;
u32 bytesWritten;
u8 transferBuffer[FILE_CHUNK_SIZE];
failed = AM_StartCiaInstall(MEDIATYPE_SD, &outputHandle);
if(R_FAILED(failed))
return -1;
failed = FSFILE_GetSize(ciaFile, &fileSize);
if(R_FAILED(failed))
return -1;
while(fileOffset < fileSize){
u64 bytesRemaining = fileSize - fileOffset;
failed = FSFILE_Read(ciaFile, &bytesRead, fileOffset, transferBuffer, bytesRemaining < FILE_CHUNK_SIZE ? bytesRemaining : FILE_CHUNK_SIZE);
if(R_FAILED(failed)){
AM_CancelCIAInstall(outputHandle);
return -1;
}
failed = FSFILE_Write(outputHandle, &bytesWritten, fileOffset, transferBuffer, bytesRead, 0);
if(R_FAILED(failed)){
AM_CancelCIAInstall(outputHandle);
if(R_DESCRIPTION(failed) == RD_ALREADY_EXISTS)
return 1;
return -1;
}
if(bytesWritten != bytesRead){
AM_CancelCIAInstall(outputHandle);
return -1;
}
fileOffset += bytesWritten;
}
failed = AM_FinishCiaInstall(outputHandle);
if(R_FAILED(failed))
return -1;
return 1;
}
int exec_cia(const char* path, const char** args){
struct stat sBuff;
bool fileExists;
bool inited;
if(path == NULL || path[0] == '\0'){
errno = EINVAL;
return -1;
}
fileExists = stat(path, &sBuff) == 0;
if(!fileExists){
errno = ENOENT;
return -1;
}
else if(S_ISDIR(sBuff.st_mode)){
errno = EINVAL;;
return -1;
}
inited = R_SUCCEEDED(amInit()) && R_SUCCEEDED(fsInit());
if(inited){
Result res;
AM_TitleEntry ciaInfo;
FS_Archive ciaArchive;
Handle ciaFile;
int ciaInstalled;
ciaParam param;
int argsLength;
//open cia file
res = FSUSER_OpenArchive(&ciaArchive, ARCHIVE_SDMC, fsMakePath(PATH_EMPTY, ""));
if(R_FAILED(res))
errorAndQuit("Cant open SD FS archive.");
res = FSUSER_OpenFile(&ciaFile, ciaArchive, fsMakePath(PATH_ASCII, path + 5/*skip "sdmc:"*/), FS_OPEN_READ, 0);
if(R_FAILED(res))
errorAndQuit("Cant open CIA file.");
res = AM_GetCiaFileInfo(MEDIATYPE_SD, &ciaInfo, ciaFile);
if(R_FAILED(res))
errorAndQuit("Cant get CIA file info.");
ciaInstalled = isCiaInstalled(ciaInfo.titleID, ciaInfo.version);
if(ciaInstalled == -1){
//error
errorAndQuit("Could not read title id list.");
}
else if(ciaInstalled == 0){
//not installed
int error = installCia(ciaFile);
if(error == -1)
errorAndQuit("Cant install CIA.");
}
FSFILE_Close(ciaFile);
FSUSER_CloseArchive(ciaArchive);
param.argc = 0;
argsLength = 0;
char* argLocation = param.args;
while(args[param.argc] != NULL){
strcpy(argLocation, args[param.argc]);
argLocation += strlen(args[param.argc]) + 1;
argsLength += strlen(args[param.argc]) + 1;
param.argc++;
}
res = APT_PrepareToDoApplicationJump(0, ciaInfo.titleID, 0x1);
if(R_FAILED(res))
errorAndQuit("CIA cant run, cant prepare.");
res = APT_DoApplicationJump(&param, sizeof(param.argc) + argsLength, argvHmac);
if(R_FAILED(res))
errorAndQuit("CIA cant run, cant jump.");
//wait for application jump, for some reason its not instant
while(1);
}
//should never be reached
amExit();
fsExit();
errno = ENOTSUP;
return -1;
}
+6
View File
@@ -0,0 +1,6 @@
#ifndef EXEC_CIA_H
#define EXEC_CIA_H
int exec_cia(const char* path, const char** args);
#endif
+95
View File
@@ -0,0 +1,95 @@
#pragma once
// C stdlib includes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
// 3DS includes
#include <3ds.h>
#define ENTRY_ARGBUFSIZE 0x400
#define NUM_SERVICESTHATMATTER 5
typedef enum
{
StrId_Loading = 0,
StrId_Directory,
StrId_DefaultLongTitle,
StrId_DefaultPublisher,
StrId_IOError,
StrId_CouldNotOpenFile,
StrId_NoAppsFound_Title,
StrId_NoAppsFound_Msg,
StrId_Reboot,
StrId_ReturnToHome,
StrId_TitleSelector,
StrId_ErrorReadingTitleMetadata,
StrId_NoTitlesFound,
StrId_SelectTitle,
StrId_NoTargetTitleSupport,
StrId_MissingTargetTitle,
StrId_NetLoader,
StrId_NetLoaderUnavailable,
StrId_NetLoaderOffline,
StrId_NetLoaderError,
StrId_NetLoaderActive,
StrId_NetLoaderTransferring,
StrId_Max,
} StrId;
typedef struct
{
char* dst;
u32 buf[ENTRY_ARGBUFSIZE/sizeof(u32)];
} argData_s;
typedef struct
{
bool scanned;
u32 sectionSizes[3];
bool servicesThatMatter[NUM_SERVICESTHATMATTER];
} executableMetadata_s;
typedef struct
{
u32 num;
u32 text_end;
u32 data_address;
u32 data_size;
u32 processLinearOffset;
u32 processHookAddress;
u32 processAppCodeAddress;
u32 processHookTidLow, processHookTidHigh;
u32 mediatype;
bool capabilities[0x10]; // {socuAccess, csndAccess, qtmAccess, nfcAccess, httpcAccess, reserved...}
} memmap_header_t;
typedef struct
{
u32 src, dst, size;
} memmap_entry_t;
typedef struct
{
memmap_header_t header;
memmap_entry_t map[];
} memmap_t;
#define memmapSize(m) (sizeof(memmap_header_t) + sizeof(memmap_entry_t)*(m)->header.num)
#include "launch.h"
+22
View File
@@ -0,0 +1,22 @@
#include "common.h"
Handle launchOpenFile(const char* path)
{
if (strncmp(path, "sdmc:/", 6) == 0)
path += 5;
else if (*path != '/')
return 0;
// Convert the executable path to UTF-16
static uint16_t __utf16path[PATH_MAX+1];
ssize_t units = utf8_to_utf16(__utf16path, (const uint8_t*)path, PATH_MAX);
if (units < 0 || units >= PATH_MAX) return 0;
__utf16path[units] = 0;
// Open the file directly
FS_Path apath = { PATH_EMPTY, 1, (u8*)"" };
FS_Path fpath = { PATH_UTF16, (units+1)*2, (u8*)__utf16path };
Handle file;
Result res = FSUSER_OpenFileDirectly(&file, ARCHIVE_SDMC, apath, fpath, FS_OPEN_READ, 0);
return R_SUCCEEDED(res) ? file : 0;
}
+26
View File
@@ -0,0 +1,26 @@
#pragma once
#include "common.h"
extern void (*__system_retAddr)(void);
enum
{
LOADER_SHOW_REBOOT = 0x01,
LOADER_NEED_SCAN = 0x02
};
typedef struct
{
// Mandatory fields
const char* name;
u32 flags;
bool (* init)(void);
void (* deinit)(void);
void (* launchFile)(const char* path, argData_s* args, executableMetadata_s* em);
// Optional fields
void (* useTitle)(u64 tid, u8 mediatype);
} loaderFuncs_s;
Handle launchOpenFile(const char* path);
+73
View File
@@ -0,0 +1,73 @@
#include "../common.h"
typedef struct
{
s32 processId;
bool capabilities[0x10];
} processEntry_s;
typedef void (*callBootloader_2x_fn)(Handle file, u32* argbuf, u32 arglength);
typedef void (*callBootloaderNewProcess_2x_fn)(s32 processId, u32* argbuf, u32 arglength);
typedef void (*callBootloaderRunTitle_2x_fn)(u8 mediatype, u32* argbuf, u32 argbuflength, u32 tid_low, u32 tid_high);
typedef void (*callBootloaderRunTitleCustom_2x_fn)(u8 mediatype, u32* argbuf, u32 argbuflength, u32 tid_low, u32 tid_high, memmap_t* mmap);
typedef void (*getBestProcess_2x_fn)(u32 sectionSizes[3], bool* requirements, int num_requirements, processEntry_s* out, int out_size, int* out_len);
#define callBootloader_2x ((callBootloader_2x_fn)0x00100000)
#define callBootloaderNewProcess_2x ((callBootloaderNewProcess_2x_fn)0x00100008)
#define callBootloaderRunTitle_2x ((callBootloaderRunTitle_2x_fn)0x00100010)
#define callBootloaderRunTitleCustom_2x ((callBootloaderRunTitleCustom_2x_fn)0x00100014)
#define getBestProcess_2x ((getBestProcess_2x_fn)0x0010000C)
static s32 targetProcess = -1;
static u64 targetTid;
static u8 targetMediatype;
static Handle fileHandle;
static u32 argBuf[ENTRY_ARGBUFSIZE/sizeof(u32)];
static u32 argBufLen;
static u32 memMapBuf[0x40];
static bool useMemMap;
static bool init(void)
{
return R_SUCCEEDED(amInit());
}
static void deinit(void)
{
amExit();
}
static void bootloaderJump(void)
{
if (targetProcess == -1)
callBootloader_2x(fileHandle, argBuf, argBufLen);
else if (targetProcess == -2)
{
if (useMemMap)
callBootloaderRunTitleCustom_2x(targetMediatype, argBuf, argBufLen, (u32)targetTid, (u32)(targetTid>>32), (memmap_t*)memMapBuf);
else
callBootloaderRunTitle_2x(targetMediatype, argBuf, argBufLen, (u32)targetTid, (u32)(targetTid>>32));
}
else
callBootloaderNewProcess_2x(targetProcess, argBuf, argBufLen);
}
static void launchFile(const char* path, argData_s* args, executableMetadata_s* em)
{
fileHandle = launchOpenFile(path);
if (fileHandle==0)
return;
argBufLen = args->dst - (char*)args->buf;
memcpy(argBuf, args->buf, argBufLen);
__system_retAddr = bootloaderJump;
}
const loaderFuncs_s loader_Ninjhax2 =
{
.name = "hax 2.x",
.flags = LOADER_SHOW_REBOOT | LOADER_NEED_SCAN,
.init = init,
.deinit = deinit,
.launchFile = launchFile,
//.useTitle = useTitle,
};
@@ -0,0 +1,43 @@
#include "../common.h"
static void (*callBootloader_1x)(Handle hb, Handle file);
static void (*setArgs_1x)(u32* src, u32 length);
static Handle fileHandle;
static bool init(void)
{
Result res = hbInit();
if (R_FAILED(res))
return false;
HB_GetBootloaderAddresses((void**)&callBootloader_1x, (void**)&setArgs_1x);
return true;
}
static void deinit(void)
{
hbExit();
}
static void bootloaderJump(void)
{
callBootloader_1x(0x00000000, fileHandle);
}
static void launchFile(const char* path, argData_s* args, executableMetadata_s* em)
{
fileHandle = launchOpenFile(path);
if (fileHandle==0)
return;
setArgs_1x(args->buf, sizeof(args->buf));
__system_retAddr = bootloaderJump;
}
const loaderFuncs_s loader_Ninjhax1 =
{
.name = "ninjhax 1.x",
.flags = LOADER_SHOW_REBOOT,
.init = init,
.deinit = deinit,
.launchFile = launchFile,
};
@@ -0,0 +1,56 @@
#include "../common.h"
static Handle hbldrHandle;
static bool init(void)
{
return R_SUCCEEDED(svcConnectToPort(&hbldrHandle, "hb:ldr"));
}
static Result HBLDR_SetTarget(const char* path)
{
u32 pathLen = strlen(path) + 1;
u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(2, 0, 2); //0x20002
cmdbuf[1] = IPC_Desc_StaticBuffer(pathLen, 0);
cmdbuf[2] = (u32)path;
Result rc = svcSendSyncRequest(hbldrHandle);
if (R_SUCCEEDED(rc)) rc = cmdbuf[1];
return rc;
}
static Result HBLDR_SetArgv(const void* buffer, u32 size)
{
u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(3, 0, 2); //0x30002
cmdbuf[1] = IPC_Desc_StaticBuffer(size, 1);
cmdbuf[2] = (u32)buffer;
Result rc = svcSendSyncRequest(hbldrHandle);
if (R_SUCCEEDED(rc)) rc = cmdbuf[1];
return rc;
}
static void deinit(void)
{
svcCloseHandle(hbldrHandle);
}
static void launchFile(const char* path, argData_s* args, executableMetadata_s* em)
{
if (strncmp(path, "sdmc:/",6) == 0)
path += 5;
HBLDR_SetTarget(path);
HBLDR_SetArgv(args->buf, sizeof(args->buf));
}
const loaderFuncs_s loader_Rosalina =
{
.name = "Rosalina",
.init = init,
.deinit = deinit,
.launchFile = launchFile,
};
+30
View File
@@ -478,6 +478,36 @@ database_info_list_t *database_info_list_new(
if (!new_ptr)
{
if (db_info.bbfc_rating)
free(db_info.bbfc_rating);
if (db_info.cero_rating)
free(db_info.cero_rating);
if (db_info.description)
free(db_info.description);
if (db_info.edge_magazine_review)
free(db_info.edge_magazine_review);
if (db_info.elspa_rating)
free(db_info.elspa_rating);
if (db_info.enhancement_hw)
free(db_info.enhancement_hw);
if (db_info.esrb_rating)
free(db_info.esrb_rating);
if (db_info.franchise)
free(db_info.franchise);
if (db_info.genre)
free(db_info.genre);
if (db_info.name)
free(db_info.name);
if (db_info.origin)
free(db_info.origin);
if (db_info.pegi_rating)
free(db_info.pegi_rating);
if (db_info.publisher)
free(db_info.publisher);
if (db_info.rom_name)
free(db_info.rom_name);
if (db_info.serial)
free(db_info.serial);
database_info_list_free(database_info_list);
free(database_info);
free(database_info_list);
+1 -1
View File
@@ -107,7 +107,7 @@ struct defaults
playlist_t *image_history;
#endif
playlist_t *music_history;
#ifdef HAVE_FFMPEG
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
playlist_t *video_history;
#endif
#endif
+4 -19
View File
@@ -2,32 +2,17 @@ language: cpp
os:
- linux
- osx
osx_image: xcode8.3
osx_image: xcode9.3beta
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
sudo: required
dist: trusty
# We check out glslang and SPIRV-Tools at specific revisions to avoid test output mismatches
env:
- GLSLANG_REV=9c6f8cc29ba303b43ccf36deea6bb38a304f9b92 SPIRV_TOOLS_REV=e28edd458b729da7bbfd51e375feb33103709e6f
before_script:
- 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
- ./checkout_glslang_spirv_tools.sh
script:
- git -C glslang checkout $GLSLANG_REV
- git -C SPIRV-Tools checkout $SPIRV_TOOLS_REV
- cd glslang && cmake . && make -j2 && cd ..
- cd SPIRV-Tools && cmake . && make -j2 && cd ..
- ./build_glslang_spirv_tools.sh Debug 2
- make -j2
- PATH=./glslang/StandAlone:./SPIRV-Tools/tools:$PATH
- ./test_shaders.py shaders
- ./test_shaders.py --msl shaders-msl
- ./test_shaders.py --hlsl shaders-hlsl
- ./test_shaders.py shaders --opt
- ./test_shaders.py --msl shaders-msl --opt
- ./test_shaders.py --hlsl shaders-hlsl --opt
- ./test_shaders.sh
+14 -1
View File
@@ -93,6 +93,10 @@ spirv_cross_add_library(spirv-cross-cpp spirv_cross_cpp STATIC
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cpp.hpp
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cpp.cpp)
spirv_cross_add_library(spirv-cross-reflect spirv_cross_reflect STATIC
${CMAKE_CURRENT_SOURCE_DIR}/spirv_reflect.hpp
${CMAKE_CURRENT_SOURCE_DIR}/spirv_reflect.cpp)
spirv_cross_add_library(spirv-cross-msl spirv_cross_msl STATIC
${CMAKE_CURRENT_SOURCE_DIR}/spirv_msl.hpp
${CMAKE_CURRENT_SOURCE_DIR}/spirv_msl.cpp)
@@ -110,7 +114,7 @@ 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-util spirv-cross-core)
target_link_libraries(spirv-cross spirv-cross-glsl spirv-cross-hlsl spirv-cross-cpp spirv-cross-reflect 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)
@@ -128,12 +132,21 @@ if (${PYTHONINTERP_FOUND})
add_test(NAME spirv-cross-test
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py
${CMAKE_CURRENT_SOURCE_DIR}/shaders)
add_test(NAME spirv-cross-test-no-opt
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py
${CMAKE_CURRENT_SOURCE_DIR}/shaders-no-opt)
add_test(NAME spirv-cross-test-metal
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py --metal
${CMAKE_CURRENT_SOURCE_DIR}/shaders-msl)
add_test(NAME spirv-cross-test-metal-no-opt
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py --metal
${CMAKE_CURRENT_SOURCE_DIR}/shaders-msl-no-opt)
add_test(NAME spirv-cross-test-hlsl
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py --hlsl
${CMAKE_CURRENT_SOURCE_DIR}/shaders-hlsl)
add_test(NAME spirv-cross-test-hlsl-no-opt
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py --hlsl
${CMAKE_CURRENT_SOURCE_DIR}/shaders-hlsl-no-opt)
add_test(NAME spirv-cross-test-opt
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_shaders.py --opt
${CMAKE_CURRENT_SOURCE_DIR}/shaders)
+6 -1
View File
@@ -3,6 +3,7 @@
SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader languages.
[![Build Status](https://travis-ci.org/KhronosGroup/SPIRV-Cross.svg?branch=master)](https://travis-ci.org/KhronosGroup/SPIRV-Cross)
[![Build Status](https://ci.appveyor.com/api/projects/status/github/KhronosGroup/SPIRV-Cross?svg=true&branch=master)](https://ci.appveyor.com/project/HansKristian-ARM/SPIRV-Cross)
## Features
@@ -10,6 +11,7 @@ SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader
- 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]
- Convert SPIR-V to a JSON reflection format [EXPERIMENTAL]
- Reflection API to simplify the creation of Vulkan pipeline layouts
- Reflection API to modify and tweak OpDecorations
- Supports "all" of vertex, fragment, tessellation, geometry and compute shaders.
@@ -24,7 +26,7 @@ However, most missing features are expected to be "trivial" improvements at this
SPIRV-Cross has been tested on Linux, OSX and Windows.
The make and CMake build flavors offer the option to treat exceptions as assertions. To disable exceptions for make just append SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS=1 to the command line. For CMake append -DSPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS=ON. By default exceptions are enabled.
The make and CMake build flavors offer the option to treat exceptions as assertions. To disable exceptions for make just append `SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS=1` to the command line. For CMake append `-DSPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS=ON`. By default exceptions are enabled.
### Linux and macOS
@@ -38,6 +40,8 @@ MinGW-w64 based compilation works with `make`, and an MSVC 2013 solution is also
### Using the C++ API
For more in-depth documentation than what's provided in this README, please have a look at the [Wiki](https://github.com/KhronosGroup/SPIRV-Cross/wiki).
To perform reflection and convert to other shader languages you can use the SPIRV-Cross API.
For example:
@@ -279,6 +283,7 @@ although there are a couple of convenience script for doing this:
```
./checkout_glslang_spirv_tools.sh # Checks out glslang and SPIRV-Tools at a fixed revision which matches the reference output.
./build_glslang_spirv_tools.sh # Builds glslang and SPIRV-Tools.
./test_shaders.sh # Runs over all changes and makes sure that there are no deltas compared to reference files.
```
+31
View File
@@ -0,0 +1,31 @@
environment:
matrix:
- GENERATOR: "Visual Studio 12 2013 Win64"
CONFIG: Debug
- GENERATOR: "Visual Studio 12 2013 Win64"
CONFIG: Release
- GENERATOR: "Visual Studio 14 2015 Win64"
CONFIG: Debug
- GENERATOR: "Visual Studio 14 2015 Win64"
CONFIG: Release
- GENERATOR: "Visual Studio 12 2013"
CONFIG: Debug
- GENERATOR: "Visual Studio 12 2013"
CONFIG: Release
- GENERATOR: "Visual Studio 14 2015"
CONFIG: Debug
- GENERATOR: "Visual Studio 14 2015"
CONFIG: Release
build_script:
- git submodule update --init
- cmake "-G%GENERATOR%" -H. -B_builds
- cmake --build _builds --config "%CONFIG%"
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash
PROFILE=Release
if [ ! -z $1 ]; then
PROFILE=$1
fi
NPROC=$(nproc)
if [ ! -z $2 ]; then
NPROC=$2
fi
echo "Building glslang."
mkdir -p external/glslang-build
cd external/glslang-build
cmake ../glslang -DCMAKE_BUILD_TYPE=$PROFILE -G"Unix Makefiles"
make -j$NPROC
cd ../..
echo "Building SPIRV-Tools."
mkdir -p external/spirv-tools-build
cd external/spirv-tools-build
cmake ../spirv-tools -DCMAKE_BUILD_TYPE=$PROFILE -G"Unix Makefiles" -DSPIRV_WERROR=OFF
make -j$NPROC
cd ../..
+10 -23
View File
@@ -1,7 +1,7 @@
#!/bin/bash
GLSLANG_REV=9c6f8cc29ba303b43ccf36deea6bb38a304f9b92
SPIRV_TOOLS_REV=e28edd458b729da7bbfd51e375feb33103709e6f
GLSLANG_REV=461ea09943e0e88ea854ab9e3b42d17d728af2ad
SPIRV_TOOLS_REV=53bc1623ecd3cc304d0d6feed8385e70c7ab30d3
if [ -d external/glslang ]; then
echo "Updating glslang to revision $GLSLANG_REV."
@@ -18,13 +18,6 @@ else
fi
cd ../..
echo "Building glslang."
mkdir -p external/glslang-build
cd external/glslang-build
cmake ../glslang -DCMAKE_BUILD_TYPE=Release -G"Unix Makefiles"
make -j$(nproc)
cd ../..
if [ -d external/spirv-tools ]; then
echo "Updating SPIRV-Tools to revision $SPIRV_TOOLS_REV."
cd external/spirv-tools
@@ -37,21 +30,15 @@ else
git clone git://github.com/KhronosGroup/SPIRV-Tools.git spirv-tools
cd spirv-tools
git checkout $SPIRV_TOOLS_REV
if [ -d external/spirv-headers ]; then
cd external/spirv-headers
git pull origin master
cd ../..
else
git clone git://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
fi
fi
cd ../..
echo "Building SPIRV-Tools."
mkdir -p external/spirv-tools-build
cd external/spirv-tools-build
cmake ../spirv-tools -DCMAKE_BUILD_TYPE=Release -G"Unix Makefiles"
make -j$(nproc)
if [ -d external/spirv-headers ]; then
cd external/spirv-headers
git pull origin master
cd ../..
else
git clone git://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
fi
cd ../..
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
for file in spirv_*.{cpp,hpp} include/spirv_cross/*.{hpp,h} samples/cpp/*.cpp main.cpp
#for file in spirv_*.{cpp,hpp} include/spirv_cross/*.{hpp,h} samples/cpp/*.cpp main.cpp
for file in spirv_*.{cpp,hpp} main.cpp
do
echo "Formatting file: $file ..."
clang-format -style=file -i $file
+115 -42
View File
@@ -19,6 +19,7 @@
#include "spirv_glsl.hpp"
#include "spirv_hlsl.hpp"
#include "spirv_msl.hpp"
#include "spirv_reflect.hpp"
#include <algorithm>
#include <cstdio>
#include <cstring>
@@ -122,7 +123,7 @@ struct CLIParser
THROW("Tried to parse uint, but nothing left in arguments");
}
uint32_t val = stoul(*argv);
uint64_t val = stoul(*argv);
if (val > numeric_limits<uint32_t>::max())
{
THROW("next_uint() out of range");
@@ -131,7 +132,7 @@ struct CLIParser
argc--;
argv++;
return val;
return uint32_t(val);
}
double next_double()
@@ -149,6 +150,22 @@ struct CLIParser
return val;
}
// Return a string only if it's not prefixed with `--`, otherwise return the default value
const char *next_value_string(const char *default_value)
{
if (!argc)
{
return default_value;
}
if (0 == strncmp("--", *argv, 2))
{
return default_value;
}
return next_string();
}
const char *next_string()
{
if (!argc)
@@ -212,7 +229,6 @@ static void print_resources(const Compiler &compiler, const char *tag, const vec
for (auto &res : resources)
{
auto &type = compiler.get_type(res.type_id);
auto mask = compiler.get_decoration_mask(res.id);
if (print_ssbo && compiler.buffer_is_hlsl_counter_buffer(res.id))
continue;
@@ -221,8 +237,8 @@ static void print_resources(const Compiler &compiler, const char *tag, const vec
// for SSBOs and UBOs since those are the only meaningful names to use externally.
// Push constant blocks are still accessed by name and not block name, even though they are technically Blocks.
bool is_push_constant = compiler.get_storage_class(res.id) == StorageClassPushConstant;
bool is_block = (compiler.get_decoration_mask(type.self) &
((1ull << DecorationBlock) | (1ull << DecorationBufferBlock))) != 0;
bool is_block = compiler.get_decoration_bitset(type.self).get(DecorationBlock) ||
compiler.get_decoration_bitset(type.self).get(DecorationBufferBlock);
bool is_sized_block = is_block && (compiler.get_storage_class(res.id) == StorageClassUniform ||
compiler.get_storage_class(res.id) == StorageClassUniformConstant);
uint32_t fallback_id = !is_push_constant && is_block ? res.base_type_id : res.id;
@@ -231,6 +247,12 @@ static void print_resources(const Compiler &compiler, const char *tag, const vec
if (is_sized_block)
block_size = uint32_t(compiler.get_declared_struct_size(compiler.get_type(res.base_type_id)));
Bitset mask;
if (print_ssbo)
mask = compiler.get_buffer_block_flags(res.id);
else
mask = compiler.get_decoration_bitset(res.id);
string array;
for (auto arr : type.array)
array = join("[", arr ? convert_to_string(arr) : "", "]") + array;
@@ -238,17 +260,17 @@ static void print_resources(const Compiler &compiler, const char *tag, const vec
fprintf(stderr, " ID %03u : %s%s", res.id,
!res.name.empty() ? res.name.c_str() : compiler.get_fallback_name(fallback_id).c_str(), array.c_str());
if (mask & (1ull << DecorationLocation))
if (mask.get(DecorationLocation))
fprintf(stderr, " (Location : %u)", compiler.get_decoration(res.id, DecorationLocation));
if (mask & (1ull << DecorationDescriptorSet))
if (mask.get(DecorationDescriptorSet))
fprintf(stderr, " (Set : %u)", compiler.get_decoration(res.id, DecorationDescriptorSet));
if (mask & (1ull << DecorationBinding))
if (mask.get(DecorationBinding))
fprintf(stderr, " (Binding : %u)", compiler.get_decoration(res.id, DecorationBinding));
if (mask & (1ull << DecorationInputAttachmentIndex))
if (mask.get(DecorationInputAttachmentIndex))
fprintf(stderr, " (Attachment : %u)", compiler.get_decoration(res.id, DecorationInputAttachmentIndex));
if (mask & (1ull << DecorationNonReadable))
if (mask.get(DecorationNonReadable))
fprintf(stderr, " writeonly");
if (mask & (1ull << DecorationNonWritable))
if (mask.get(DecorationNonWritable))
fprintf(stderr, " readonly");
if (is_sized_block)
fprintf(stderr, " (BlockSize : %u bytes)", block_size);
@@ -284,7 +306,7 @@ static const char *execution_model_to_str(spv::ExecutionModel model)
static void print_resources(const Compiler &compiler, const ShaderResources &res)
{
uint64_t modes = compiler.get_execution_mode_mask();
auto &modes = compiler.get_execution_mode_bitset();
fprintf(stderr, "Entry points:\n");
auto entry_points = compiler.get_entry_points_and_stages();
@@ -293,11 +315,7 @@ static void print_resources(const Compiler &compiler, const ShaderResources &res
fprintf(stderr, "\n");
fprintf(stderr, "Execution modes:\n");
for (unsigned i = 0; i < 64; i++)
{
if (!(modes & (1ull << i)))
continue;
modes.for_each_bit([&](uint32_t i) {
auto mode = static_cast<ExecutionMode>(i);
uint32_t arg0 = compiler.get_execution_mode_argument(mode, 0);
uint32_t arg1 = compiler.get_execution_mode_argument(mode, 1);
@@ -353,7 +371,7 @@ static void print_resources(const Compiler &compiler, const ShaderResources &res
default:
break;
}
}
});
fprintf(stderr, "\n");
print_resources(compiler, "subpass inputs", res.subpass_inputs);
@@ -460,6 +478,7 @@ struct CLIArguments
bool fixup = false;
bool yflip = false;
bool sso = false;
bool support_nonzero_baseinstance = true;
vector<PLSArg> pls_in;
vector<PLSArg> pls_out;
vector<Remap> remaps;
@@ -480,6 +499,7 @@ struct CLIArguments
uint32_t iterations = 1;
bool cpp = false;
string reflect;
bool msl = false;
bool hlsl = false;
bool hlsl_compat = false;
@@ -487,25 +507,49 @@ struct CLIArguments
bool flatten_multidimensional_arrays = false;
bool use_420pack_extension = true;
bool remove_unused = false;
bool combined_samplers_inherit_bindings = false;
};
static void print_help()
{
fprintf(stderr, "Usage: spirv-cross [--output <output path>] [SPIR-V file] [--es] [--no-es] "
"[--version <GLSL version>] [--dump-resources] [--help] [--force-temporary] "
"[--vulkan-semantics] [--flatten-ubo] [--fixup-clipspace] [--flip-vert-y] [--iterations iter] "
"[--cpp] [--cpp-interface-name <name>] "
"[--msl] [--msl-version <MMmmpp>]"
"[--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] [--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> <stage>] "
fprintf(stderr, "Usage: spirv-cross\n"
"\t[--output <output path>]\n"
"\t[SPIR-V file]\n"
"\t[--es]\n"
"\t[--no-es]\n"
"\t[--version <GLSL version>]\n"
"\t[--dump-resources]\n"
"\t[--help]\n"
"\t[--force-temporary]\n"
"\t[--vulkan-semantics]\n"
"\t[--flatten-ubo]\n"
"\t[--fixup-clipspace]\n"
"\t[--flip-vert-y]\n"
"\t[--iterations iter]\n"
"\t[--cpp]\n"
"\t[--cpp-interface-name <name>]\n"
"\t[--msl]\n"
"\t[--msl-version <MMmmpp>]\n"
"\t[--hlsl]\n"
"\t[--reflect]\n"
"\t[--shader-model]\n"
"\t[--hlsl-enable-compat]\n"
"\t[--separate-shader-objects]\n"
"\t[--pls-in format input-name]\n"
"\t[--pls-out format output-name]\n"
"\t[--remap source_name target_name components]\n"
"\t[--extension ext]\n"
"\t[--entry name]\n"
"\t[--stage <stage (vert, frag, geom, tesc, tese comp)>]\n"
"\t[--remove-unused-variables]\n"
"\t[--flatten-multidimensional-arrays]\n"
"\t[--no-420pack-extension]\n"
"\t[--remap-variable-type <variable_name> <new_variable_type>]\n"
"\t[--rename-interface-variable <in|out> <location> <new_variable_name>]\n"
"\t[--set-hlsl-vertex-input-semantic <location> <semantic>]\n"
"\t[--rename-entry-point <old> <new> <stage>]\n"
"\t[--combined-samplers-inherit-bindings]\n"
"\t[--no-support-nonzero-baseinstance]\n"
"\n");
}
@@ -640,6 +684,7 @@ static int main_inner(int argc, char *argv[])
cbs.add("--flip-vert-y", [&args](CLIParser &) { args.yflip = true; });
cbs.add("--iterations", [&args](CLIParser &parser) { args.iterations = parser.next_uint(); });
cbs.add("--cpp", [&args](CLIParser &) { args.cpp = true; });
cbs.add("--reflect", [&args](CLIParser &parser) { args.reflect = parser.next_value_string("json"); });
cbs.add("--cpp-interface-name", [&args](CLIParser &parser) { args.cpp_interface_name = parser.next_string(); });
cbs.add("--metal", [&args](CLIParser &) { args.msl = true; }); // Legacy compatibility
cbs.add("--msl", [&args](CLIParser &) { args.msl = true; });
@@ -711,6 +756,10 @@ static int main_inner(int argc, char *argv[])
});
cbs.add("--remove-unused-variables", [&args](CLIParser &) { args.remove_unused = true; });
cbs.add("--combined-samplers-inherit-bindings",
[&args](CLIParser &) { args.combined_samplers_inherit_bindings = true; });
cbs.add("--no-support-nonzero-baseinstance", [&](CLIParser &) { args.support_nonzero_baseinstance = false; });
cbs.default_handler = [&args](const char *value) { args.input = value; };
cbs.error_handler = [] { print_help(); };
@@ -732,8 +781,20 @@ static int main_inner(int argc, char *argv[])
return EXIT_FAILURE;
}
unique_ptr<CompilerGLSL> compiler;
// Special case reflection because it has little to do with the path followed by code-outputting compilers
if (!args.reflect.empty())
{
CompilerReflection compiler(read_spirv_file(args.input));
compiler.set_format(args.reflect);
auto json = compiler.compile();
if (args.output)
write_string_to_file(args.output, json.c_str());
else
printf("%s", json.c_str());
return EXIT_SUCCESS;
}
unique_ptr<CompilerGLSL> compiler;
bool combined_image_samplers = false;
bool build_dummy_sampler = false;
@@ -748,10 +809,10 @@ static int main_inner(int argc, char *argv[])
compiler = unique_ptr<CompilerMSL>(new CompilerMSL(read_spirv_file(args.input)));
auto *msl_comp = static_cast<CompilerMSL *>(compiler.get());
auto msl_opts = msl_comp->get_options();
auto msl_opts = msl_comp->get_msl_options();
if (args.set_msl_version)
msl_opts.msl_version = args.msl_version;
msl_comp->set_options(msl_opts);
msl_comp->set_msl_options(msl_opts);
}
else if (args.hlsl)
compiler = unique_ptr<CompilerHLSL>(new CompilerHLSL(read_spirv_file(args.input)));
@@ -851,14 +912,14 @@ static int main_inner(int argc, char *argv[])
if (!entry_point.empty())
compiler->set_entry_point(entry_point, model);
if (!args.set_version && !compiler->get_options().version)
if (!args.set_version && !compiler->get_common_options().version)
{
fprintf(stderr, "Didn't specify GLSL version and SPIR-V did not specify language.\n");
print_help();
return EXIT_FAILURE;
}
CompilerGLSL::Options opts = compiler->get_options();
CompilerGLSL::Options opts = compiler->get_common_options();
if (args.set_version)
opts.version = args.version;
if (args.set_es)
@@ -870,13 +931,14 @@ static int main_inner(int argc, char *argv[])
opts.vulkan_semantics = args.vulkan_semantics;
opts.vertex.fixup_clipspace = args.fixup;
opts.vertex.flip_vert_y = args.yflip;
compiler->set_options(opts);
opts.vertex.support_nonzero_base_instance = args.support_nonzero_baseinstance;
compiler->set_common_options(opts);
// Set HLSL specific options.
if (args.hlsl)
{
auto *hlsl = static_cast<CompilerHLSL *>(compiler.get());
auto hlsl_opts = hlsl->get_options();
auto hlsl_opts = hlsl->get_hlsl_options();
if (args.set_shader_model)
{
if (args.shader_model < 30)
@@ -894,11 +956,19 @@ static int main_inner(int argc, char *argv[])
hlsl_opts.point_size_compat = true;
hlsl_opts.point_coord_compat = true;
}
hlsl->set_options(hlsl_opts);
hlsl->set_hlsl_options(hlsl_opts);
}
if (build_dummy_sampler)
compiler->build_dummy_sampler_for_combined_images();
{
uint32_t sampler = compiler->build_dummy_sampler_for_combined_images();
if (sampler != 0)
{
// Set some defaults to make validation happy.
compiler->set_decoration(sampler, DecorationDescriptorSet, 0);
compiler->set_decoration(sampler, DecorationBinding, 0);
}
}
ShaderResources res;
if (args.remove_unused)
@@ -961,6 +1031,9 @@ static int main_inner(int argc, char *argv[])
if (combined_image_samplers)
{
compiler->build_combined_image_samplers();
if (args.combined_samplers_inherit_bindings)
spirv_cross_util::inherit_combined_sampler_bindings(*compiler);
// Give the remapped combined samplers new names.
for (auto &remap : compiler->get_combined_image_samplers())
{
+2
View File
@@ -127,6 +127,7 @@
<ClCompile Include="..\spirv_cpp.cpp" />
<ClCompile Include="..\spirv_cross.cpp" />
<ClCompile Include="..\spirv_glsl.cpp" />
<ClCompile Include="..\spirv_reflect.cpp" />
<ClCompile Include="..\spirv_hlsl.cpp" />
<ClCompile Include="..\spirv_msl.cpp" />
<ClCompile Include="..\spirv_cfg.cpp" />
@@ -138,6 +139,7 @@
<ClInclude Include="..\spirv_cpp.hpp" />
<ClInclude Include="..\spirv_cross.hpp" />
<ClInclude Include="..\spirv_glsl.hpp" />
<ClInclude Include="..\spirv_reflect.hpp" />
<ClInclude Include="..\spirv.hpp" />
<ClInclude Include="..\spirv_hlsl.hpp" />
<ClInclude Include="..\spirv_msl.hpp" />
+6
View File
@@ -24,6 +24,9 @@
<ClCompile Include="..\spirv_glsl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\spirv_reflect.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\spirv_cpp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -50,6 +53,9 @@
<ClInclude Include="..\spirv_glsl.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\spirv_reflect.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\spirv.hpp">
<Filter>Header Files</Filter>
</ClInclude>
@@ -0,0 +1,32 @@
RWByteAddressBuffer bar : register(u0);
RWByteAddressBuffer foo : register(u1);
void comp_main()
{
[unroll]
for (int _135 = 0; _135 < 16; )
{
bar.Store4(_135 * 16 + 0, asuint(asfloat(foo.Load4(_135 * 16 + 0))));
_135++;
continue;
}
[loop]
for (int _136 = 0; _136 < 16; )
{
bar.Store4((15 - _136) * 16 + 0, asuint(asfloat(foo.Load4(_136 * 16 + 0))));
_136++;
continue;
}
[branch]
if (asfloat(bar.Load(160)) > 10.0f)
{
foo.Store4(320, asuint(5.0f.xxxx));
}
foo.Store4(320, asuint(20.0f.xxxx));
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}
@@ -0,0 +1,30 @@
Texture2D<float4> uTex : register(t1);
SamplerState uSampler : register(s0);
static float4 FragColor;
static float2 vUV;
struct SPIRV_Cross_Input
{
float2 vUV : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = uTex.Sample(uSampler, vUV);
FragColor += uTex.Sample(uSampler, vUV, int2(1, 1));
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vUV = stage_input.vUV;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,8 @@
void frag_main()
{
}
void main()
{
frag_main();
}
@@ -7,7 +7,7 @@ struct SPIRV_Cross_Output
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);
FragColor = 10.0f.xxxx;
}
SPIRV_Cross_Output main()
@@ -0,0 +1,31 @@
Texture2D<float4> uTexture : register(t0);
SamplerState _uTexture_sampler : register(s0);
static int2 Size;
struct SPIRV_Cross_Output
{
int2 Size : SV_Target0;
};
uint2 SPIRV_Cross_textureSize(Texture2D<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(Level, ret.x, ret.y, Param);
return ret;
}
void frag_main()
{
uint _19_dummy_parameter;
uint _20_dummy_parameter;
Size = int2(SPIRV_Cross_textureSize(uTexture, uint(0), _19_dummy_parameter)) + int2(SPIRV_Cross_textureSize(uTexture, uint(1), _20_dummy_parameter));
}
SPIRV_Cross_Output main()
{
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.Size = Size;
return stage_output;
}
@@ -0,0 +1,57 @@
Texture2D<float4> uImage : register(t0);
SamplerState _uImage_sampler : register(s0);
static float4 v0;
static float4 FragColor;
struct SPIRV_Cross_Input
{
float4 v0 : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
float phi;
float4 _36;
int _51;
_51 = 0;
phi = 1.0f;
_36 = float4(1.0f, 2.0f, 1.0f, 2.0f);
for (;;)
{
FragColor = _36;
if (_51 < 4)
{
if (v0[_51] > 0.0f)
{
float2 _48 = phi.xx;
_51++;
phi += 2.0f;
_36 = uImage.SampleLevel(_uImage_sampler, _48, 0.0f);
continue;
}
else
{
break;
}
}
else
{
break;
}
}
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
v0 = stage_input.v0;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,57 @@
static const float _46[16] = { 1.0f, 2.0f, 3.0f, 4.0f, 1.0f, 2.0f, 3.0f, 4.0f, 1.0f, 2.0f, 3.0f, 4.0f, 1.0f, 2.0f, 3.0f, 4.0f };
static const float4 _76[4] = { 0.0f.xxxx, 1.0f.xxxx, 8.0f.xxxx, 5.0f.xxxx };
static const float4 _90[4] = { 20.0f.xxxx, 30.0f.xxxx, 50.0f.xxxx, 60.0f.xxxx };
static float FragColor;
static int index;
struct SPIRV_Cross_Input
{
nointerpolation int index : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float FragColor : SV_Target0;
};
void frag_main()
{
float4 foobar[4] = _76;
float4 baz[4] = _76;
FragColor = _46[index];
if (index < 10)
{
FragColor += _46[index ^ 1];
}
else
{
FragColor += _46[index & 1];
}
bool _99 = index > 30;
if (_99)
{
FragColor += _76[index & 3].y;
}
else
{
FragColor += _76[index & 1].x;
}
if (_99)
{
foobar[1].z = 20.0f;
}
int _37 = index & 3;
FragColor += foobar[_37].z;
baz = _90;
FragColor += baz[_37].z;
}
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,29 @@
static float4 FragColor;
static int4 vA;
static int4 vB;
struct SPIRV_Cross_Input
{
nointerpolation int4 vA : TEXCOORD0;
nointerpolation int4 vB : TEXCOORD1;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = float4(vA - vB * (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,29 @@
Texture2D<float4> uTexture : register(t0);
SamplerState _uTexture_sampler : register(s0);
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 = uTexture.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,31 @@
Texture2D<float4> uShadow : register(t0);
SamplerComparisonState _uShadow_sampler : register(s0);
Texture2D<float4> uTexture : register(t1);
SamplerComparisonState uSampler : register(s2);
static float3 vUV;
static float FragColor;
struct SPIRV_Cross_Input
{
float3 vUV : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float FragColor : SV_Target0;
};
void frag_main()
{
FragColor = uShadow.SampleCmp(_uShadow_sampler, vUV.xy, vUV.z) + uTexture.SampleCmp(uSampler, vUV.xy, vUV.z);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vUV = stage_input.vUV;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -11,25 +11,23 @@ struct SPIRV_Cross_Output
float4 FragColor : SV_Target0;
};
float4 _21;
void frag_main()
{
float4 _33;
do
bool _29;
for (;;)
{
if (counter == 10)
_29 = counter == 10;
if (_29)
{
_33 = 10.0f.xxxx;
break;
}
else
{
_33 = 30.0f.xxxx;
break;
}
} while (false);
FragColor = _33;
}
bool4 _35 = _29.xxxx;
FragColor = float4(_35.x ? 10.0f.xxxx.x : 30.0f.xxxx.x, _35.y ? 10.0f.xxxx.y : 30.0f.xxxx.y, _35.z ? 10.0f.xxxx.z : 30.0f.xxxx.z, _35.w ? 10.0f.xxxx.w : 30.0f.xxxx.w);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
@@ -1,8 +0,0 @@
void vert_main()
{
}
void main()
{
vert_main();
}
@@ -0,0 +1,37 @@
static const int _7 = -10;
static const uint _8 = 100u;
static const int _20 = (_7 + 2);
static const uint _25 = (_8 % 5u);
static const int4 _30 = int4(20, 30, _20, _20);
static const int2 _32 = int2(_30.y, _30.x);
static const int _33 = _30.y;
static float4 gl_Position;
static int _4;
struct SPIRV_Cross_Output
{
nointerpolation int _4 : TEXCOORD0;
float4 gl_Position : SV_Position;
};
void vert_main()
{
float4 _64 = 0.0f.xxxx;
_64.y = float(_20);
float4 _68 = _64;
_68.z = float(_25);
float4 _52 = _68 + float4(_30);
float2 _56 = _52.xy + float2(_32);
gl_Position = float4(_56.x, _56.y, _52.z, _52.w);
_4 = _33;
}
SPIRV_Cross_Output main()
{
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
stage_output._4 = _4;
return stage_output;
}
@@ -0,0 +1,28 @@
static float4 gl_Position;
static int gl_VertexIndex;
static int gl_InstanceIndex;
struct SPIRV_Cross_Input
{
uint gl_VertexIndex : SV_VertexID;
uint gl_InstanceIndex : SV_InstanceID;
};
struct SPIRV_Cross_Output
{
float4 gl_Position : SV_Position;
};
void vert_main()
{
gl_Position = float(uint(gl_VertexIndex) + uint(gl_InstanceIndex)).xxxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
gl_VertexIndex = int(stage_input.gl_VertexIndex);
gl_InstanceIndex = int(stage_input.gl_InstanceIndex);
vert_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
return stage_output;
}
@@ -1,3 +1,5 @@
static const uint3 gl_WorkGroupSize = uint3(8u, 4u, 2u);
void comp_main()
{
}
@@ -0,0 +1,16 @@
globallycoherent RWByteAddressBuffer _29 : register(u3);
ByteAddressBuffer _33 : register(t2);
RWTexture2D<float> uImageIn : register(u0);
globallycoherent RWTexture2D<float> uImageOut : register(u1);
void comp_main()
{
uImageOut[int2(9, 7)] = uImageIn[int2(9, 7)].x;
_29.Store(0, asuint(asfloat(_33.Load(0))));
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}
+20 -18
View File
@@ -34,24 +34,26 @@ struct SPIRV_Cross_Input
void comp_main()
{
uImageOutF[int2(gl_GlobalInvocationID.xy)] = uImageInF[int2(gl_GlobalInvocationID.xy)].x;
uImageOutI[int2(gl_GlobalInvocationID.xy)] = uImageInI[int2(gl_GlobalInvocationID.xy)].x;
uImageOutU[int2(gl_GlobalInvocationID.xy)] = uImageInU[int2(gl_GlobalInvocationID.xy)].x;
uImageOutBuffer[int(gl_GlobalInvocationID.x)] = uImageInBuffer[int(gl_GlobalInvocationID.x)].x;
uImageOutF2[int2(gl_GlobalInvocationID.xy)] = uImageInF2[int2(gl_GlobalInvocationID.xy)].xy;
uImageOutI2[int2(gl_GlobalInvocationID.xy)] = uImageInI2[int2(gl_GlobalInvocationID.xy)].xy;
uImageOutU2[int2(gl_GlobalInvocationID.xy)] = uImageInU2[int2(gl_GlobalInvocationID.xy)].xy;
float4 _135 = uImageInBuffer2[int(gl_GlobalInvocationID.x)].xyyy;
uImageOutBuffer2[int(gl_GlobalInvocationID.x)] = _135.xy;
uImageOutF4[int2(gl_GlobalInvocationID.xy)] = uImageInF4[int2(gl_GlobalInvocationID.xy)];
int4 _165 = uImageInI4[int2(gl_GlobalInvocationID.xy)];
uImageOutI4[int2(gl_GlobalInvocationID.xy)] = _165;
uint4 _180 = uImageInU4[int2(gl_GlobalInvocationID.xy)];
uImageOutU4[int2(gl_GlobalInvocationID.xy)] = _180;
uImageOutBuffer4[int(gl_GlobalInvocationID.x)] = uImageInBuffer4[int(gl_GlobalInvocationID.x)];
uImageNoFmtF[int2(gl_GlobalInvocationID.xy)] = _135;
uImageNoFmtU[int2(gl_GlobalInvocationID.xy)] = _180;
uImageNoFmtI[int2(gl_GlobalInvocationID.xy)] = _165;
int2 _23 = int2(gl_GlobalInvocationID.xy);
uImageOutF[_23] = uImageInF[_23].x;
uImageOutI[_23] = uImageInI[_23].x;
uImageOutU[_23] = uImageInU[_23].x;
int _74 = int(gl_GlobalInvocationID.x);
uImageOutBuffer[_74] = uImageInBuffer[_74].x;
uImageOutF2[_23] = uImageInF2[_23].xy;
uImageOutI2[_23] = uImageInI2[_23].xy;
uImageOutU2[_23] = uImageInU2[_23].xy;
float4 _135 = uImageInBuffer2[_74].xyyy;
uImageOutBuffer2[_74] = _135.xy;
uImageOutF4[_23] = uImageInF4[_23];
int4 _165 = uImageInI4[_23];
uImageOutI4[_23] = _165;
uint4 _180 = uImageInU4[_23];
uImageOutU4[_23] = _180;
uImageOutBuffer4[_74] = uImageInBuffer4[_74];
uImageNoFmtF[_23] = _135;
uImageNoFmtU[_23] = _180;
uImageNoFmtI[_23] = _165;
}
[numthreads(1, 1, 1)]
@@ -0,0 +1,20 @@
RWByteAddressBuffer _11 : register(u0);
void comp_main()
{
_11.Store(0, asuint(asfloat(_11.Load(0)) * asfloat(_11.Load(96))));
_11.Store4(16, asuint(asfloat(_11.Load4(16)) * asfloat(_11.Load4(112))));
float4x4 _35 = asfloat(uint4x4(_11.Load4(128), _11.Load4(144), _11.Load4(160), _11.Load4(176)));
float4x4 _37 = asfloat(uint4x4(_11.Load4(32), _11.Load4(48), _11.Load4(64), _11.Load4(80)));
float4x4 _38 = mul(_35, _37);
_11.Store4(32, asuint(_38[0]));
_11.Store4(48, asuint(_38[1]));
_11.Store4(64, asuint(_38[2]));
_11.Store4(80, asuint(_38[3]));
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}
@@ -17,7 +17,7 @@ void comp_main()
{
sShared[gl_LocalInvocationIndex] = asfloat(_22.Load(gl_GlobalInvocationID.x * 4 + 0));
GroupMemoryBarrierWithGroupSync();
_44.Store(gl_GlobalInvocationID.x * 4 + 0, asuint(sShared[(4u - gl_LocalInvocationIndex) - 1u]));
_44.Store(gl_GlobalInvocationID.x * 4 + 0, asuint(sShared[3u - gl_LocalInvocationIndex]));
}
[numthreads(4, 1, 1)]
@@ -0,0 +1,67 @@
RWByteAddressBuffer _9 : register(u0, space0);
static uint4 gl_SubgroupEqMask;
static uint4 gl_SubgroupGeMask;
static uint4 gl_SubgroupGtMask;
static uint4 gl_SubgroupLeMask;
static uint4 gl_SubgroupLtMask;
void comp_main()
{
_9.Store(0, asuint(float(WaveGetLaneCount())));
_9.Store(0, asuint(float(WaveGetLaneIndex())));
_9.Store(0, asuint(float4(gl_SubgroupEqMask).x));
_9.Store(0, asuint(float4(gl_SubgroupGeMask).x));
_9.Store(0, asuint(float4(gl_SubgroupGtMask).x));
_9.Store(0, asuint(float4(gl_SubgroupLeMask).x));
_9.Store(0, asuint(float4(gl_SubgroupLtMask).x));
uint4 _75 = WaveActiveBallot(true);
float4 _88 = WaveActiveSum(20.0f.xxxx);
int4 _94 = WaveActiveSum(int4(20, 20, 20, 20));
float4 _96 = WaveActiveProduct(20.0f.xxxx);
int4 _98 = WaveActiveProduct(int4(20, 20, 20, 20));
float4 _127 = WavePrefixProduct(_96) * _96;
int4 _129 = WavePrefixProduct(_98) * _98;
}
[numthreads(1, 1, 1)]
void main()
{
gl_SubgroupEqMask = 1u << (WaveGetLaneIndex() - uint4(0, 32, 64, 96));
if (WaveGetLaneIndex() >= 32) gl_SubgroupEqMask.x = 0;
if (WaveGetLaneIndex() >= 64 || WaveGetLaneIndex() < 32) gl_SubgroupEqMask.y = 0;
if (WaveGetLaneIndex() >= 96 || WaveGetLaneIndex() < 64) gl_SubgroupEqMask.z = 0;
if (WaveGetLaneIndex() < 96) gl_SubgroupEqMask.w = 0;
gl_SubgroupGeMask = ~((1u << (WaveGetLaneIndex() - uint4(0, 32, 64, 96))) - 1u);
if (WaveGetLaneIndex() >= 32) gl_SubgroupGeMask.x = 0u;
if (WaveGetLaneIndex() >= 64) gl_SubgroupGeMask.y = 0u;
if (WaveGetLaneIndex() >= 96) gl_SubgroupGeMask.z = 0u;
if (WaveGetLaneIndex() < 32) gl_SubgroupGeMask.y = ~0u;
if (WaveGetLaneIndex() < 64) gl_SubgroupGeMask.z = ~0u;
if (WaveGetLaneIndex() < 96) gl_SubgroupGeMask.w = ~0u;
uint gt_lane_index = WaveGetLaneIndex() + 1;
gl_SubgroupGtMask = ~((1u << (gt_lane_index - uint4(0, 32, 64, 96))) - 1u);
if (gt_lane_index >= 32) gl_SubgroupGtMask.x = 0u;
if (gt_lane_index >= 64) gl_SubgroupGtMask.y = 0u;
if (gt_lane_index >= 96) gl_SubgroupGtMask.z = 0u;
if (gt_lane_index >= 128) gl_SubgroupGtMask.w = 0u;
if (gt_lane_index < 32) gl_SubgroupGtMask.y = ~0u;
if (gt_lane_index < 64) gl_SubgroupGtMask.z = ~0u;
if (gt_lane_index < 96) gl_SubgroupGtMask.w = ~0u;
uint le_lane_index = WaveGetLaneIndex() + 1;
gl_SubgroupLeMask = (1u << (le_lane_index - uint4(0, 32, 64, 96))) - 1u;
if (le_lane_index >= 32) gl_SubgroupLeMask.x = ~0u;
if (le_lane_index >= 64) gl_SubgroupLeMask.y = ~0u;
if (le_lane_index >= 96) gl_SubgroupLeMask.z = ~0u;
if (le_lane_index >= 128) gl_SubgroupLeMask.w = ~0u;
if (le_lane_index < 32) gl_SubgroupLeMask.y = 0u;
if (le_lane_index < 64) gl_SubgroupLeMask.z = 0u;
if (le_lane_index < 96) gl_SubgroupLeMask.w = 0u;
gl_SubgroupLtMask = (1u << (WaveGetLaneIndex() - uint4(0, 32, 64, 96))) - 1u;
if (WaveGetLaneIndex() >= 32) gl_SubgroupLtMask.x = ~0u;
if (WaveGetLaneIndex() >= 64) gl_SubgroupLtMask.y = ~0u;
if (WaveGetLaneIndex() >= 96) gl_SubgroupLtMask.z = ~0u;
if (WaveGetLaneIndex() < 32) gl_SubgroupLtMask.y = 0u;
if (WaveGetLaneIndex() < 64) gl_SubgroupLtMask.z = 0u;
if (WaveGetLaneIndex() < 96) gl_SubgroupLtMask.w = 0u;
comp_main();
}
@@ -0,0 +1,34 @@
static const float _17[5] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f };
static float4 FragColor;
static float4 v0;
struct SPIRV_Cross_Input
{
float4 v0 : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
for (int _46 = 0; _46 < 4; )
{
int _33 = _46 + 1;
FragColor += _17[_33].xxxx;
_46 = _33;
continue;
}
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
v0 = stage_input.v0;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -30,7 +30,7 @@ void frag_main()
lut = _16;
foos = _28;
FragColor = lut[_line].xxxx;
FragColor += (foos[_line].a * (foos[1 - _line].a)).xxxx;
FragColor += (foos[_line].a * foos[1 - _line].a).xxxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
@@ -0,0 +1,54 @@
Texture2D<float4> uSampler : register(t0);
SamplerState _uSampler_sampler : register(s0);
static float4 FragColor;
static float4 vInput;
struct SPIRV_Cross_Input
{
float4 vInput : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
FragColor = vInput;
float4 _23 = uSampler.Sample(_uSampler_sampler, vInput.xy);
float4 _26 = ddx(vInput);
float4 _29 = ddy(vInput);
float4 _32 = fwidth(vInput);
float4 _35 = ddx_coarse(vInput);
float4 _38 = ddy_coarse(vInput);
float4 _41 = fwidth(vInput);
float4 _44 = ddx_fine(vInput);
float4 _47 = ddy_fine(vInput);
float4 _50 = fwidth(vInput);
float _56_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vInput.zw);
if (vInput.y > 10.0f)
{
FragColor += _23;
FragColor += _26;
FragColor += _29;
FragColor += _32;
FragColor += _35;
FragColor += _38;
FragColor += _41;
FragColor += _44;
FragColor += _47;
FragColor += _50;
FragColor += float2(_56_tmp, _56_tmp).xyxy;
}
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vInput = stage_input.vInput;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}
@@ -0,0 +1,45 @@
static min16float4 v4;
static min16float3 v3;
static min16float v1;
static min16float2 v2;
static float o1;
static float2 o2;
static float3 o3;
static float4 o4;
struct SPIRV_Cross_Input
{
min16float v1 : TEXCOORD0;
min16float2 v2 : TEXCOORD1;
min16float3 v3 : TEXCOORD2;
min16float4 v4 : TEXCOORD3;
};
struct SPIRV_Cross_Output
{
float o1 : SV_Target0;
float2 o2 : SV_Target1;
float3 o3 : SV_Target2;
float4 o4 : SV_Target3;
};
void frag_main()
{
min16float4 _324;
min16float4 _387 = modf(v4, _324);
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
v4 = stage_input.v4;
v3 = stage_input.v3;
v1 = stage_input.v1;
v2 = stage_input.v2;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.o1 = o1;
stage_output.o2 = o2;
stage_output.o3 = o3;
stage_output.o4 = o4;
return stage_output;
}
@@ -2,6 +2,30 @@ Texture1D<uint4> uSampler1DUint : register(t0);
SamplerState _uSampler1DUint_sampler : register(s0);
Texture1D<int4> uSampler1DInt : register(t0);
SamplerState _uSampler1DInt_sampler : register(s0);
Texture1D<float4> uSampler1DFloat : register(t0);
SamplerState _uSampler1DFloat_sampler : register(s0);
Texture2DArray<int4> uSampler2DArray : register(t2);
SamplerState _uSampler2DArray_sampler : register(s2);
Texture3D<float4> uSampler3D : register(t3);
SamplerState _uSampler3D_sampler : register(s3);
TextureCube<float4> uSamplerCube : register(t4);
SamplerState _uSamplerCube_sampler : register(s4);
TextureCubeArray<uint4> uSamplerCubeArray : register(t5);
SamplerState _uSamplerCubeArray_sampler : register(s5);
Buffer<float4> uSamplerBuffer : register(t6);
Texture2DMS<int4> uSamplerMS : register(t7);
SamplerState _uSamplerMS_sampler : register(s7);
Texture2DMSArray<float4> uSamplerMSArray : register(t8);
SamplerState _uSamplerMSArray_sampler : register(s8);
Texture2D<float4> uSampler2D : register(t1);
SamplerState _uSampler2D_sampler : register(s1);
uint SPIRV_Cross_textureSize(Texture1D<float4> Tex, uint Level, out uint Param)
{
uint ret;
Tex.GetDimensions(Level, ret.x, Param);
return ret;
}
uint SPIRV_Cross_textureSize(Texture1D<int4> Tex, uint Level, out uint Param)
{
@@ -17,10 +41,87 @@ uint SPIRV_Cross_textureSize(Texture1D<uint4> Tex, uint Level, out uint Param)
return ret;
}
uint2 SPIRV_Cross_textureSize(Texture2D<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(Level, ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture2DArray<int4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture3D<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint SPIRV_Cross_textureSize(Buffer<float4> Tex, uint Level, out uint Param)
{
uint ret;
Tex.GetDimensions(ret.x);
Param = 0u;
return ret;
}
uint2 SPIRV_Cross_textureSize(TextureCube<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(Level, ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(TextureCubeArray<uint4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint2 SPIRV_Cross_textureSize(Texture2DMS<int4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture2DMSArray<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(ret.x, ret.y, ret.z, Param);
return ret;
}
void frag_main()
{
uint _17_dummy_parameter;
uint _24_dummy_parameter;
uint _32_dummy_parameter;
uint _42_dummy_parameter;
uint _50_dummy_parameter;
uint _60_dummy_parameter;
uint _68_dummy_parameter;
uint _76_dummy_parameter;
uint _84_dummy_parameter;
uint _92_dummy_parameter;
int _100;
SPIRV_Cross_textureSize(uSampler2D, 0u, _100);
int _104;
SPIRV_Cross_textureSize(uSampler2DArray, 0u, _104);
int _108;
SPIRV_Cross_textureSize(uSampler3D, 0u, _108);
int _112;
SPIRV_Cross_textureSize(uSamplerCube, 0u, _112);
int _116;
SPIRV_Cross_textureSize(uSamplerMS, 0u, _116);
int _120;
SPIRV_Cross_textureSize(uSamplerMSArray, 0u, _120);
}
void main()
@@ -1,5 +1,112 @@
Texture1D<float4> uSampler1D : register(t0);
SamplerState _uSampler1D_sampler : register(s0);
Texture2D<float4> uSampler2D : register(t1);
SamplerState _uSampler2D_sampler : register(s1);
Texture2DArray<float4> uSampler2DArray : register(t2);
SamplerState _uSampler2DArray_sampler : register(s2);
Texture3D<float4> uSampler3D : register(t3);
SamplerState _uSampler3D_sampler : register(s3);
TextureCube<float4> uSamplerCube : register(t4);
SamplerState _uSamplerCube_sampler : register(s4);
TextureCubeArray<float4> uSamplerCubeArray : register(t5);
SamplerState _uSamplerCubeArray_sampler : register(s5);
Buffer<float4> uSamplerBuffer : register(t6);
Texture2DMS<float4> uSamplerMS : register(t7);
SamplerState _uSamplerMS_sampler : register(s7);
Texture2DMSArray<float4> uSamplerMSArray : register(t8);
SamplerState _uSamplerMSArray_sampler : register(s8);
uint SPIRV_Cross_textureSize(Texture1D<float4> Tex, uint Level, out uint Param)
{
uint ret;
Tex.GetDimensions(Level, ret.x, Param);
return ret;
}
uint2 SPIRV_Cross_textureSize(Texture2D<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(Level, ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture2DArray<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture3D<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint SPIRV_Cross_textureSize(Buffer<float4> Tex, uint Level, out uint Param)
{
uint ret;
Tex.GetDimensions(ret.x);
Param = 0u;
return ret;
}
uint2 SPIRV_Cross_textureSize(TextureCube<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(Level, ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(TextureCubeArray<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(Level, ret.x, ret.y, ret.z, Param);
return ret;
}
uint2 SPIRV_Cross_textureSize(Texture2DMS<float4> Tex, uint Level, out uint Param)
{
uint2 ret;
Tex.GetDimensions(ret.x, ret.y, Param);
return ret;
}
uint3 SPIRV_Cross_textureSize(Texture2DMSArray<float4> Tex, uint Level, out uint Param)
{
uint3 ret;
Tex.GetDimensions(ret.x, ret.y, ret.z, Param);
return ret;
}
void frag_main()
{
uint _17_dummy_parameter;
uint _27_dummy_parameter;
uint _37_dummy_parameter;
uint _45_dummy_parameter;
uint _53_dummy_parameter;
uint _61_dummy_parameter;
uint _69_dummy_parameter;
uint _77_dummy_parameter;
uint _85_dummy_parameter;
int _89;
SPIRV_Cross_textureSize(uSampler1D, 0u, _89);
int _93;
SPIRV_Cross_textureSize(uSampler2D, 0u, _93);
int _97;
SPIRV_Cross_textureSize(uSampler2DArray, 0u, _97);
int _101;
SPIRV_Cross_textureSize(uSampler3D, 0u, _101);
int _105;
SPIRV_Cross_textureSize(uSamplerCube, 0u, _105);
int _109;
SPIRV_Cross_textureSize(uSamplerCubeArray, 0u, _109);
int _113;
SPIRV_Cross_textureSize(uSamplerMS, 0u, _113);
int _117;
SPIRV_Cross_textureSize(uSamplerMSArray, 0u, _117);
}
void main()
Loaded 100 of 3459 files, more files were not shown because too many files have changed in this diff. Show more