Compare commits

...
2337 Commits
Author SHA1 Message Date
Twinaphex 9750719074 Merge pull request #8161 from yoshisuga/ios-cleanup
iOS/tvOS cleanup
2019-02-03 21:18:57 +01:00
twinaphex a58a32411f Some more buildfixes 2019-02-03 21:18:34 +01:00
Yoshi Sugawara 04bdc634ba tvOS: use OZONE as default menu driver 2019-02-03 09:11:29 -10:00
twinaphex 6c2ac0bc29 This should be a function call 2019-02-03 20:10:28 +01:00
Yoshi Sugawara 1ca3bcf21d Merge remote-tracking branch 'upstream/master' into ios-cleanup 2019-02-03 09:00:22 -10:00
Yoshi Sugawara 11bf1e05b1 remove logging code 2019-02-03 08:59:24 -10:00
Yoshi Sugawara d18ef55aea iOS/tvOS cleanup: remove logging code, remove compiled core from repo (added by mistake) 2019-02-03 08:57:12 -10:00
twinaphex 9c0ccccc1c Relative header include fix 2019-02-03 19:44:17 +01:00
twinaphex 4cbbd3470b Revert "Simplify video_driver_set_mvp"
This reverts commit 1dd89e1bce.
2019-02-03 19:40:48 +01:00
twinaphex 4aadd53d80 Revert "Get rid of video_shader_driver_scale"
This reverts commit 256b28fa2a.
2019-02-03 19:40:36 +01:00
twinaphex 1eeb58c5dd Revert "Cleanups"
This reverts commit 4554669750.
2019-02-03 19:40:27 +01:00
twinaphex 5a45464bb3 Revert "Reimplement video_driver_set_coords"
This reverts commit 93ded925d3.
2019-02-03 19:40:21 +01:00
twinaphex 43884758c5 Revert "(GL) Cleanups"
This reverts commit 5bab7e4460.
2019-02-03 19:40:15 +01:00
twinaphex 5bab7e4460 (GL) Cleanups 2019-02-03 18:38:18 +01:00
twinaphex 93ded925d3 Reimplement video_driver_set_coords 2019-02-03 18:29:00 +01:00
twinaphex dd366cd5c5 Revert "Simplify set_coords"
This reverts commit e10eb51f71.
2019-02-03 18:05:14 +01:00
twinaphex e10eb51f71 Simplify set_coords 2019-02-03 18:03:07 +01:00
twinaphex 4554669750 Cleanups 2019-02-03 17:49:31 +01:00
twinaphex 256b28fa2a Get rid of video_shader_driver_scale 2019-02-03 17:39:25 +01:00
twinaphex 85708b7ef8 (Emscripten) Buildfixes 2019-02-03 17:15:18 +01:00
Twinaphex 55200644ca Merge pull request #8155 from orbea/zarch
Remove the zarch menu driver.
2019-02-03 15:25:33 +01:00
Twinaphex 7fcb2e58a6 Merge pull request #8157 from fjtrujy/feature/PSPOpenMenu
[PSP] open Retroarch menu
2019-02-03 15:25:00 +01:00
Francisco Javier Trujillo Mata a9946b7634 Open RetroArchMenu with long press start in PSP 2019-02-03 12:21:36 +01:00
orbea 98f6aecec2 Remove the zarch menu driver. 2019-02-02 22:15:10 -08:00
twinaphex 67e777767c Revert "Remove video_shader_driver_get_ident"
This reverts commit 0814cc34ee.
2019-02-03 07:07:50 +01:00
twinaphex 0814cc34ee Remove video_shader_driver_get_ident 2019-02-03 07:06:57 +01:00
twinaphex 1dd89e1bce Simplify video_driver_set_mvp 2019-02-03 06:53:02 +01:00
Twinaphex b7cee0a633 Merge pull request #8154 from orbea/nuklear
Further remove nuklear.
2019-02-03 06:42:05 +01:00
twinaphex add4ac00eb Cleanups 2019-02-03 06:28:27 +01:00
orbea af813d9c46 Further remove nuklear. 2019-02-02 20:58:47 -08:00
twinaphex 0db583c245 Get rid of video_shader_driver_compile_program 2019-02-03 05:52:41 +01:00
twinaphex 9a04c4c67b Get rid of video_shader_driver_get_prev_textures 2019-02-03 05:49:18 +01:00
twinaphex 000787837e Cleanups 2019-02-03 05:41:43 +01:00
twinaphex 9b233f71ac Buildfixes 2019-02-03 05:32:03 +01:00
twinaphex 7e92468508 Get rid of video_shader_driver_filter_type 2019-02-03 05:28:00 +01:00
twinaphex 6f7d67aa77 (GL/video driver) More cleanups 2019-02-03 05:07:29 +01:00
twinaphex 845c8d1757 Get rid of more video_shader_driver functions 2019-02-03 05:05:23 +01:00
twinaphex 7e81ac4218 Get rid of video_shader_driver_mipmap_input 2019-02-03 04:47:52 +01:00
twinaphex 9aa542b1ae * Get rid of video_shader_driver_use
* Get rid of Nuklear - ozone/menu widgets is probably the replacement
for it - Zarch will go next
2019-02-03 04:37:54 +01:00
twinaphex 92d0b4a237 Fix griffin.c 2019-02-03 00:27:34 +01:00
twinaphex 633ad1788d Turn this into static function 2019-02-03 00:13:41 +01:00
twinaphex 91f8e8465a (GL) Cleanups 2019-02-03 00:11:41 +01:00
twinaphex 97dc77b940 (GL) renderchain interface is gone now 2019-02-03 00:07:53 +01:00
twinaphex d7410b6689 (GL2) Cleanups 2019-02-02 23:16:36 +01:00
twinaphex af65e36eea Cleanup renderchain functions 2019-02-02 22:35:10 +01:00
twinaphex 62bea6ad11 SOme header cleanups 2019-02-02 22:02:24 +01:00
twinaphex 1a6d0b2ce4 Update 2019-02-02 21:52:33 +01:00
twinaphex 0c0ab19b11 (GL) We don't need gl_common.c anymore 2019-02-02 21:47:31 +01:00
twinaphex 350b0dd1a2 gl_add_lut can now become a static function inside gl.c 2019-02-02 21:34:02 +01:00
twinaphex 90f1317498 Cut down on code duplication - create gl_load_luts 2019-02-02 21:32:37 +01:00
twinaphex 9262effbf9 We need zlib for chd 2019-02-02 21:21:58 +01:00
twinaphex 6fe5a134db HAVE_CHD requires HAVE_ZLIB too 2019-02-02 21:18:44 +01:00
twinaphex 0009c059ac Put this under HAVE_ZLIB too 2019-02-02 21:15:44 +01:00
twinaphex 9fcf21e3ed Don't build libchdr_flac unless zlib is defined too 2019-02-02 21:13:19 +01:00
twinaphex adc6d21601 Add PS3 ifdef 2019-02-02 21:03:23 +01:00
Twinaphex f76547a96f Merge pull request #8151 from fr500/master
[discord] use discord username if available
2019-02-02 20:33:51 +01:00
Twinaphex 9e74108939 Merge pull request #7463 from alfrix/Renames
Rename settings to avoid redundancy
2019-02-02 20:26:22 +01:00
radius 79d280e9c3 [discord] use discord username if available 2019-02-02 14:26:14 -05:00
Twinaphex b4bf7c168d Merge pull request #8097 from alfrix/master
Recolor monochrome to create monochrome inverted and add Automatic inverted
2019-02-02 18:40:22 +01:00
Alfredo Monclus 7b33ba55ca Merge branch 'master' into Renames 2019-02-02 14:16:49 -03:00
twinaphex 31a5f72acf Add 10.7 ifdef 2019-02-02 18:04:41 +01:00
twinaphex 2560d1c105 Move gl_load_texture_data to gl_common.c 2019-02-02 17:33:58 +01:00
twinaphex 6b3fad0f53 This can be removed now 2019-02-02 17:26:12 +01:00
twinaphex 7c74f0abe8 Create gl_add_lut 2019-02-02 17:25:27 +01:00
twinaphex 1796d359c5 Don't use setvbuf for PSP too 2019-02-02 16:43:17 +01:00
Twinaphex 027745d113 Merge pull request #8150 from theheroGAC/patch-42
Update msg_hash_it.h
2019-02-02 14:26:52 +01:00
theheroGAC d54ca53653 Update msg_hash_it.h 2019-02-02 11:52:51 +01:00
twinaphex 6879ba3ef8 Cleanup header 2019-02-02 05:09:29 +01:00
Twinaphex eda11bb99e Merge pull request #8148 from alphanu1/master
Fixes compile warnings and resolution restore
2019-02-01 23:20:01 +01:00
alphanu1 8f449003ec Merge pull request #102 from alphanu1/alphanu1-patch-91
compile warning fix
2019-02-01 20:41:15 +00:00
alphanu1 f9bb1417b1 compile warning fix 2019-02-01 20:41:01 +00:00
alphanu1 36fd99910a Update dispserv_x11.c 2019-02-01 20:38:50 +00:00
alphanu1 8ff70ecbbb Update dispserv_x11.c 2019-02-01 20:34:48 +00:00
alphanu1 a719a096f9 Merge pull request #101 from alphanu1/alphanu1-patch-90
Fix restore resolution for auto detect with single output
2019-02-01 20:30:58 +00:00
alphanu1 5f7de58080 Fix restore resolution for auto detect with single output 2019-02-01 20:30:44 +00:00
alphanu1 b1a20b6ea7 Merge pull request #100 from libretro/master
Update
2019-02-01 20:27:40 +00:00
alphanu1 23800382bf Update dispserv_x11.c 2019-02-01 20:21:53 +00:00
alphanu1 0cad96cf64 Merge pull request #99 from alphanu1/alphanu1-patch-89
Fix restore resolution for single output autodetect
2019-02-01 20:20:51 +00:00
alphanu1 1d8dd9bb9e Fix restore resolution for single output autodetect 2019-02-01 20:20:25 +00:00
twinaphex 0413ba7215 Buildfix for GL3 OSX 2019-02-01 19:56:12 +01:00
Twinaphex a9b576979a Merge pull request #8145 from orbea/warning
Fix -Wformat-truncation warning.
2019-02-01 19:14:02 +01:00
Twinaphex b321753944 Merge pull request #8144 from orbea/coreaudio
Fix warnings.
2019-02-01 19:13:49 +01:00
Twinaphex dd23adb367 Merge pull request #8146 from orbea/poll.h
Use the posix poll.h instead of sys/poll.h.
2019-02-01 19:13:29 +01:00
alfrix 9d52729e70 Color back monochrome and automatic to the original color f2f2f2 2019-02-01 15:06:33 -03:00
alfrix 69e7a2dff2 Invert colors in the driver and add automatic-inverted theme 2019-02-01 15:06:33 -03:00
orbea 5d56080312 Use the posix poll.h instead of sys/poll.h. 2019-02-01 09:58:04 -08:00
orbea ad217bc80c Fix -Wformat-truncation warning. 2019-02-01 09:21:07 -08:00
orbea 5150d96074 Fix warnings. 2019-02-01 08:40:43 -08:00
Twinaphex ba3c7c3fd5 Merge pull request #8142 from natinusala/master
ozone: set default theme to dark
2019-02-01 16:52:04 +01:00
Twinaphex 2e76e8951e Merge pull request #8143 from yoshisuga/tvos_modules_fix
tvOS/iOS: Fixes to controller handling and cores directory
2019-02-01 16:51:56 +01:00
natinusala cff7aa5785 ozone: set default theme to dark 2019-02-01 16:49:12 +01:00
Yoshi Sugawara 45185d6827 tvOS: remove the tvOS modules directory and use the iOS modules one since cores built using the iOS SDK work on tvOS
iOS: change default joypad driver to be mfi
iOS: move autodetect of mfi controller to mfi_joypad driver and set the default mapping for both iOS and tvOS
iOS: support unsupported buttons on mfi controller (select,L3,R3) by using hotkey combinations using the MENU button
tvos: use INPUT_TOGGLE_DOWN_Y_L_R as default for menu toggle gamepad combo
2019-02-01 05:33:29 -10:00
Twinaphex 0d3dc3fc83 Merge pull request #8141 from alphanu1/master
Fix pre-installed resolution bug
2019-02-01 01:25:41 +01:00
alphanu1 b69938078d Fix pre-installed Resolution bug 2019-02-01 00:22:00 +00:00
Twinaphex d17b1439e2 Merge pull request #8140 from CozmoP/thumbnail
Qt: hide unused options
2019-02-01 00:36:50 +01:00
twinaphex 374b724118 Update CHANGES.md 2019-01-31 23:58:15 +01:00
CozmoP 7ca7a5e0fc Qt: hide unused options 2019-01-31 23:54:25 +01:00
twinaphex db04ac0b2a Bump to version 1.7.6 2019-01-31 23:38:10 +01:00
Twinaphex 6ff785be59 Merge pull request #8138 from orbea/qb
Makefile.common: Small clean up.
2019-01-31 23:15:54 +01:00
Twinaphex 8a3b80a9e5 Merge pull request #8139 from CozmoP/thumbnail
Qt: make image drop indicator translatable
2019-01-31 23:15:43 +01:00
twinaphex 6aca340927 (OSX) Add CoreAudio V3 driver from stuartcarnie 2019-01-31 23:14:56 +01:00
CozmoP 9eaa703d4f Qt: make image drop indicator translatable 2019-01-31 23:01:39 +01:00
orbea e0091a1f8c Makefile.common: Small clean up. 2019-01-31 13:26:05 -08:00
Twinaphex c62a7e4b5e Merge pull request #8137 from orbea/qb
qb: Fix configure arguments.
2019-01-31 22:21:52 +01:00
Twinaphex ee36fd54c3 Cleanups 2019-01-31 22:18:15 +01:00
orbea f9ee57c40d qb: Fix configure arguments. 2019-01-31 13:06:12 -08:00
twinaphex 6e1658bb30 Add CoreAudio system information string 2019-01-31 21:43:31 +01:00
twinaphex 5d77244334 (OSX) Implement flyinghead's GL3 support 2019-01-31 21:30:49 +01:00
twinaphex 987a91a1ae Silence some warnings 2019-01-31 21:24:13 +01:00
twinaphex 9e6cd04df4 Header include cleanups 2019-01-31 20:43:07 +01:00
twinaphex fe02db911d Header include cleanups 2019-01-31 20:36:39 +01:00
twinaphex 64460824aa Fix another CXX_BUILD warning 2019-01-31 20:21:04 +01:00
twinaphex 37102a8e16 * Header include optimization
* Silence warning with CXX_BUILD (retroarch.c)
2019-01-31 20:12:41 +01:00
twinaphex 9421584772 Header include updates 2019-01-31 19:41:51 +01:00
twinaphex 000646e51e Update header includes 2019-01-31 19:06:27 +01:00
Twinaphex 44a4689847 Merge pull request #8136 from orbea/dispmanx
qb: Remove dead DISPMANX code.
2019-01-31 18:02:03 +01:00
orbea 5011360a93 qb: Remove dead DISPMANX code. 2019-01-31 08:36:18 -08:00
bparker06 88d741a4a2 Update CHANGES.md 2019-01-31 10:57:57 -05:00
Twinaphex 0a068ef871 Merge pull request #8134 from bparker06/gdi_fallback
win32: force video driver to gdi if no accelerated graphics driver is found
2019-01-31 16:54:24 +01:00
twinaphex 65f8fc7a21 Fix relative path include 2019-01-31 15:56:17 +01:00
twinaphex 9d6b40fff2 Turn CRT SwitchRes ifdefs into HAVE_VIDEOCORE - ARM ifdefs would break
3DS/Vita builds
2019-01-31 15:55:21 +01:00
Brad Parker 5ea97cccb9 win32: force video driver to gdi if no accelerated graphics driver is found 2019-01-31 09:48:10 -05:00
twinaphex 4b0b4e727b Cleanups 2019-01-31 15:24:21 +01:00
Twinaphex 422e421900 Merge pull request #8122 from yoshisuga/tvos2
Support for AppleTV (tvOS)
2019-01-31 15:19:10 +01:00
twinaphex ca757d6214 Warning fix 2019-01-31 15:17:58 +01:00
twinaphex d24408730b Cleanups 2019-01-31 15:13:36 +01:00
Twinaphex 3d092c8394 Merge pull request #8132 from alphanu1/master
CRTSwitchRes Updates: Including Raspberry PI
2019-01-31 15:04:16 +01:00
Twinaphex 45af07e322 Merge pull request #8133 from DSkywalk/master
X11 keyboard driver international fixes
2019-01-31 15:02:20 +01:00
alphanu1 ccd234465e fixed restore res bug 2019-01-31 11:56:59 +00:00
alphanu1 9176fc30ee Fix restore res bug 2019-01-31 11:53:16 +00:00
David Skywalker 347519a4d8 now X11 driver using keycodes instead keysyms, fixes international layouts problems. 2019-01-31 12:50:58 +01:00
alphanu1 f23468b8a6 Merge branch 'master' of https://github.com/alphanu1/MME4CRT 2019-01-31 11:18:08 +00:00
alphanu1 0f400b433b Update dispserv_x11.c 2019-01-31 11:17:56 +00:00
Twinaphex 1b439b7d09 Merge pull request #8131 from orbea/qb
qb: Combine HAVE_VIDEO_PROCESSOR with HAVE_VIDEOPROCCESOR.
2019-01-31 03:32:06 +01:00
Twinaphex 6c42d87303 Merge pull request #8130 from CozmoP/thumbnail
Qt: thumbnails drop indicator
2019-01-31 03:29:36 +01:00
alphanu1 86696d3bf3 Update dispserv_x11.c 2019-01-30 23:15:13 +00:00
alphanu1 8344b0d049 Update dispserv_x11.c 2019-01-30 22:48:04 +00:00
alphanu1 ce6a6c0e21 Update dispserv_x11.c 2019-01-30 22:46:29 +00:00
alphanu1 a7814a7601 Update dispserv_x11.c 2019-01-30 22:41:13 +00:00
alphanu1 f510efd64e Update dispserv_x11.c 2019-01-30 22:34:18 +00:00
alphanu1 257dbd825a Update dispserv_x11.c 2019-01-30 22:28:46 +00:00
alphanu1 5afcd020bd update 2019-01-30 22:17:36 +00:00
alphanu1 fac95efaba Update dispserv_x11.c 2019-01-30 22:08:04 +00:00
alphanu1 fa8c9d7049 new method 2019-01-30 21:55:33 +00:00
alphanu1 22e0560395 Update menu_cbs_ok.c 2019-01-30 21:06:03 +00:00
alphanu1 a4b391d796 Update video_crt_switch.c 2019-01-30 20:58:30 +00:00
alphanu1 8fdbdf8b8b Update video_crt_switch.c 2019-01-30 20:57:52 +00:00
alphanu1 0726cc425c Update video_crt_switch.c 2019-01-30 20:51:05 +00:00
alphanu1 c43a93e544 Adding userland for RPi 2019-01-30 20:47:36 +00:00
alphanu1 42c25952d4 Merge pull request #97 from alphanu1/alphanu1-patch-87
RPi Additions new switching method
2019-01-30 20:31:57 +00:00
orbea c88456a455 qb: Combine HAVE_VIDEO_PROCESSOR with HAVE_VIDEOPROCCESOR. 2019-01-30 12:28:58 -08:00
CozmoP cc18bd6023 Qt: thumbnails drop indicator 2019-01-30 21:26:33 +01:00
alphanu1 76bf63f905 RPi Additions new switching method
Partil new switching method
2019-01-30 20:17:32 +00:00
Twinaphex 81bca39b53 Merge pull request #8129 from natinusala/master
libnx: remove HAVE_CHD + add assets to the gitignore
2019-01-30 20:51:51 +01:00
alphanu1 e533dda94a Merge pull request #96 from libretro/master
update
2019-01-30 19:23:12 +00:00
Twinaphex ae9acec62d Merge pull request #8127 from orbea/qb
qb: Clean up.
2019-01-30 19:27:13 +01:00
Twinaphex e4d8b8445e Merge pull request #8128 from hizzlekizzle/master
update slang blacklist for wiiu
2019-01-30 19:27:04 +01:00
natinusala c0dde586a0 libnx: Remove HAVE_CHD due to static conflicts between different cores 2019-01-30 19:11:11 +01:00
natinusala 10cd3b0d2c Add assets to the gitignore 2019-01-30 19:10:44 +01:00
hizzlekizzle 74526ca140 update slang blacklist for wiiu 2019-01-30 12:00:28 -06:00
Yoshi Sugawara e039472300 Merge remote-tracking branch 'upstream/master' into tvos2 2019-01-30 07:50:26 -10:00
Yoshi Sugawara 3aeedeb0a3 added release scheme for tvOS, made modules directory an empty directory that would be part of the checkout 2019-01-30 07:49:55 -10:00
orbea 7d106545eb qb: Clean up. 2019-01-30 08:34:06 -08:00
Twinaphex 9091a53497 Merge pull request #8126 from orbea/win32
qb: Don't force threads for win32.
2019-01-30 16:47:59 +01:00
orbea 921104a4fb qb: Don't force threads for win32. 2019-01-30 07:22:32 -08:00
Twinaphex 51cfc84b88 Merge pull request #8063 from Tony556/master
(Menu) Added toggle menu option for "Down+Select"
2019-01-30 16:20:24 +01:00
Twinaphex 6dabd46220 Merge pull request #8123 from orbea/qb
qb: Extend check_enabled.
2019-01-30 15:54:32 +01:00
Yoshi Sugawara 57c6686a19 fixed setting CFDocumentDirectory to not be iOS specific and respect other apple environments 2019-01-30 00:35:51 -10:00
Yoshi Sugawara ef0cfb2504 Merge remote-tracking branch 'upstream/master' into tvos2 2019-01-30 00:34:05 -10:00
Brad Parker f8ba41d76e C89 buildfix 2019-01-29 21:24:22 -05:00
Twinaphex 21f043201d Merge pull request #8119 from jdgleaver/rgui-wallpaper
(RGUI) Overhaul custom theme interface + add wallpaper support
2019-01-30 02:48:06 +01:00
orbea 8e798405ad qb: Extend check_enabled.
This also disables vulkan support when threads are also disabled.

Fixes https://github.com/libretro/RetroArch/issues/8091
2019-01-29 17:06:49 -08:00
Twinaphex 5302a1e61c Merge pull request #8120 from orbea/qb
qb: Workaround mali bug.
2019-01-29 21:37:21 +01:00
Yoshi Sugawara b3703a1f2e iOS: fixed target membership of assets, added debug and release schemes for iOS 2019-01-29 10:31:04 -10:00
Yoshi Sugawara a18512375b Support for tvOS
- add tvOS target
    - support code signing tvOS cores by adding an argument to the code signing cores script
    - use NSCachesDirectory for the documents directory
    - add some mfi controller handling logic to set non-game controllers to the last index to avoid interfering with operation
    - autodetect mfi controller for apple tv on startup - added autodetect to hid joypad
    - added a webserver to transfer files for tvOS
    - xcode: clean up project, remove unused folders
    - remove HAVE_MATERIALUI setting for tvos build, make it use XMB as default
    - added retroarch app icon courtesy of @MrJs
    - added auto-detect of mfi controller for apple tv
2019-01-29 10:13:46 -10:00
orbea 1a28b06935 qb: Workaround mali bug.
Some systems have egl libarries, but no pkgconfig file to find them.

Fixes https://github.com/libretro/RetroArch/issues/8114
2019-01-29 10:16:06 -08:00
jdgleaver 99fa2b54eb (RGUI) Overhaul custom theme interface + add wallpaper support 2019-01-29 17:20:46 +00:00
Twinaphex d357cf9986 Merge pull request #8118 from natinusala/master
menu_entry: hide password values
2019-01-29 11:20:42 +01:00
natinusala bf98664b15 menu_entry: hide password values 2019-01-29 10:34:58 +01:00
twinaphex 406d927f6b (D3D11) Comment out performance counter 2019-01-29 08:57:06 +01:00
Twinaphex 753552bd40 Merge pull request #8115 from orbea/qb2
makefile.common: Clean up SDL conditionals.
2019-01-29 05:50:27 +01:00
Twinaphex bb134d2f66 Merge pull request #8117 from hizzlekizzle/master
remove conditional hiding CRT SwitchRes options
2019-01-29 05:50:12 +01:00
hizzlekizzle 7ac95f724a add more dependencies to debian build 2019-01-28 21:25:34 -06:00
Brad Parker deb35e01a8 fix double-free in cheat manager 2019-01-28 21:49:06 -05:00
hizzlekizzle a80e15f135 remove conditional hiding CRT SwitchRes options
Since RPi will support switching without X, these options need to be visible even when there's no display server
2019-01-28 18:42:23 -06:00
Brad Parker c455a86545 wiiu: fix include path to peglib for slang-parse 2019-01-28 14:43:42 -05:00
Twinaphex edce9c02d1 Merge pull request #8116 from natinusala/d3d10-d3d11-scissor-fix
d3d10 and d3d11 scissor fix + d3d12 scissoring implementation
2019-01-28 19:56:36 +01:00
natinusala 0f3fcdd311 Implement scissoring for d2d12 2019-01-28 19:31:27 +01:00
natinusala 04b2ffcb9e Fix scissoring for d3d10 and d3d11 2019-01-28 19:23:46 +01:00
Rob Loach fa875692c3 Added menu toggle for 'Down+Select' 2019-01-28 11:43:57 -05:00
orbea 0f8de9b3b3 makefile.common: Clean up SDL conditionals. 2019-01-28 07:30:35 -08:00
Twinaphex e8e384aa4f Merge pull request #8076 from jdgleaver/rgui-vulkan-linear
(Vulkan) Enable RGUI 'Menu Linear Filter' option (please review)
2019-01-28 16:00:18 +01:00
twinaphex c281435867 Add HAVE_THREADS ifdefs 2019-01-28 15:47:18 +01:00
Twinaphex 158cec17fd Merge pull request #8107 from benutzer193/master
Fix #8081 [Wayland+Vulkan] Core Dump in wl_egl_window_resize
2019-01-28 13:09:09 +01:00
twinaphex 618286d6ef Fix path include 2019-01-28 13:06:41 +01:00
twinaphex 1c9cabf249 Add HAVE_THREADS ifdefs 2019-01-28 13:04:20 +01:00
Twinaphex 97b8dff0ab Merge pull request #8113 from krzys-h/fix-d3d12
Fix d3d12 swap chain creation
2019-01-28 12:32:22 +01:00
krzys-h 3c18232448 Fix d3d12 swap chain creation
Apparently, HAVE_WINDOW was not defined in this file (and this obviously
doesn't appear on MSVC because of how griffin.c works...)
2019-01-28 10:44:47 +01:00
twinaphex 23463408d5 Use some macros here to avoid function call overhead 2019-01-28 08:23:20 +01:00
Twinaphex d2edf39f11 Merge pull request #8106 from bparker06/menusounds
Implement in-menu sound effects
2019-01-28 01:23:25 +01:00
Twinaphex 8b958b91f9 Merge pull request #8105 from orbea/qb
Update generate_wayland_protos.sh.
2019-01-28 00:31:57 +01:00
Twinaphex 5330994297 Merge pull request #8108 from orbea/egl
qb: Test a real version of wayland-egl.
2019-01-28 00:07:48 +01:00
orbea 67d5bcbb5c qb: Test a real version of wayland-egl.
This matches the default mesa version in Ubuntu 14.04.
2019-01-27 12:18:31 -08:00
Brad Parker 90db5e7e27 Implement in-menu sound effects 2019-01-27 11:22:16 -05:00
Twinaphex 556b7b19de Merge pull request #8025 from krzys-h/uwp-storagefile
(UWP) StorageFile implementation
2019-01-27 08:33:17 +01:00
Brad Parker 8b6676e17f d3d9: implement scissor test 2019-01-26 20:13:39 -05:00
Twinaphex 1546ba05d4 Merge pull request #8104 from bparker06/d3d_scissor
implement scissor test for D3D10/11
2019-01-27 01:31:11 +01:00
orbea ae7b09afae gfx: Update generate_wayland_protos.sh. 2019-01-26 16:08:18 -08:00
Brad Parker 29a07895b9 implement scissor test for D3D10/11, fixes #7897 2019-01-26 18:52:49 -05:00
orbea d7d5bc58b2 qb: Create qb.init.sh. 2019-01-26 14:41:37 -08:00
Twinaphex b512c0aeb9 Merge pull request #8095 from Sunderland93/wayland-version
[Wayland] Set minimum wayland version to 1.12
2019-01-26 22:49:34 +01:00
Twinaphex 2bd70abfcd Merge pull request #8096 from orbea/qb2
qb: Allow testing more than one version in check_pkgconf.
2019-01-26 22:49:20 +01:00
Twinaphex b2e8a7add2 Merge pull request #8098 from Zlika/master
Add missing files in libretro-db Makefile
2019-01-26 22:48:38 +01:00
Twinaphex e5dd7ce738 Merge pull request #8099 from fjtrujy/feature/cdfsSupport
[PS2] Add CDFS support
2019-01-26 22:48:28 +01:00
benutzer193 8e26b13578 If window is not present, create window 2019-01-26 17:49:20 +01:00
Zlika 4dbd15381a Add missing files in libretro-db Makefile 2019-01-26 15:05:50 +01:00
Francisco Javier Trujillo Mata 5ee7921b65 Add CDFS support 2019-01-26 14:21:51 +01:00
Sunderland93 10d2d13004 Fix version's comparison 2019-01-26 13:41:03 +04:00
Brad Parker 1ee66d5204 d3d: fix cross-compilation on Linux 2019-01-25 23:28:07 -05:00
orbea 63c7abef06 qb: Allow testing more than one version in check_pkgconf. 2019-01-25 15:04:29 -08:00
Sunderland93 677395f05e [Wayland] Set minimum wayland version to 1.12 2019-01-25 21:41:13 +04:00
Twinaphex d99f32a5ad Merge pull request #8094 from orbea/qb
qb: Cleanup config.libs.sh.
2019-01-25 11:03:36 +01:00
orbea 2cc6505997 qb: Fix HAVE_RETRO check. 2019-01-24 23:08:35 -08:00
orbea 352fbc7cc7 qb: Remove duplicate code in config.libs.sh. 2019-01-24 22:29:10 -08:00
orbea 0dc40a2d66 qb: Cleanup config.libs.sh. 2019-01-24 17:17:19 -08:00
Twinaphex c8c23ffcfc Merge pull request #8092 from orbea/thread
Makefile.common: Fix building discord-rpc with --disable-threads.
2019-01-25 00:26:32 +01:00
Twinaphex c99c16363c Merge pull request #8093 from orbea/glsl
Makefile.common: Remove duplicate -DHAVE_GLSL.
2019-01-25 00:26:18 +01:00
orbea fc6b7d5ddb Makefile.common: Remove duplicate -DHAVE_GLSL. 2019-01-24 14:29:21 -08:00
orbea aa2fd6cfed Makefile.common: Fix building discord-rpc with --disable-threads. 2019-01-24 14:07:17 -08:00
Twinaphex ffe65cdad8 Merge pull request #8089 from orbea/format
Silence -Wformat-truncation warnings with DEBUG=1.
2019-01-24 21:28:37 +01:00
orbea 088860e499 Silence -Wformat-truncation warnings with DEBUG=1. 2019-01-24 10:59:53 -08:00
Twinaphex 997cd88c95 Merge pull request #8080 from CozmoP/thumbnail
Qt: Allow changing thumbnails by drag and drop.
2019-01-24 19:55:47 +01:00
Twinaphex 15a3df7662 Merge pull request #8087 from orbea/xmb
xmb: Fix segfault when appending disk images.
2019-01-24 19:55:32 +01:00
orbea 4722d41b0b xmb: Fix segfault when appending disk images. 2019-01-24 08:10:24 -08:00
Twinaphex 9df5a75045 Merge pull request #8084 from orbea/root_dir
Fix disk control and subsystems when navigating to the root directory.
2019-01-24 07:56:39 +01:00
Twinaphex f705f0596e Merge pull request #8083 from DEX357/patch-27
Update msg_hash_pl.h
2019-01-24 07:56:18 +01:00
orbea 5fcedc8619 Fix disk control and subsystems when navigating to the root directory.
Fixes https://github.com/libretro/RetroArch/issues/5642
Fixes https://github.com/libretro/RetroArch/issues/8071
2019-01-23 19:14:07 -08:00
DEX357 6b328ec903 Update msg_hash_pl.h 2019-01-24 01:49:31 +01:00
CozmoP 4d927528df Qt: refactor thumbnail path creation. 2019-01-23 21:21:30 +01:00
CozmoP d34e10985e Qt: allow changing thumbnails by drag and drop. 2019-01-23 19:28:59 +01:00
Twinaphex 4e6659b063 Merge pull request #8079 from CozmoP/dragndrop
Qt: add comment for QTBUG-72844 workaround
2019-01-23 19:08:36 +01:00
Twinaphex a61d295b6f Merge pull request #8078 from jdgleaver/rgui-hq-downscale
(RGUI) Allow selection of thumbnail downscaling method
2019-01-23 19:07:36 +01:00
Twinaphex f92070e829 Merge pull request #8075 from dnjstlr555/patch-1
korean translation changes
2019-01-23 19:06:38 +01:00
CozmoP 0d84e0a949 Qt: add comment for QTBUG-72844 workaround 2019-01-23 19:06:37 +01:00
Twinaphex 39d50591af Merge pull request #8074 from natinusala/master
menu_animation: add delayed animations
2019-01-23 19:06:19 +01:00
jdgleaver bd56e1e29c (RGUI) Allow selection of thumbnail downscaling method 2019-01-23 16:47:15 +00:00
natinusala 5102361e2c menu_animation: add delayed animations 2019-01-23 15:30:18 +01:00
bparker06 7ba6ffdfbe Update CHANGES.md 2019-01-23 08:40:00 -05:00
jdgleaver 11af72286b (Vulkan) Enable RGUI 'Menu Linear Filter' option 2019-01-23 11:55:17 +00:00
Hisman Yosika b216c9f7d6 Merge pull request #1 from dnjstlr555/patch-2
Minor translation errors in korean
2019-01-23 20:35:20 +09:00
Hisman Yosika 3b24d34545 Minor translation errors in korean 2019-01-23 20:34:15 +09:00
Hisman Yosika f6481d7f5e Update msg_hash_ko.h
Korean translation
2019-01-23 20:13:17 +09:00
bparker06 bd84bb1c8e Update CHANGES.md 2019-01-22 23:14:11 -05:00
Twinaphex 49fa097903 Merge pull request #8065 from jdgleaver/rgui-thumb-downscale
(RGUI) Add automatic downscaling of large thumbnails
2019-01-22 20:14:49 +01:00
Twinaphex 58f0bdeaed Merge pull request #8066 from orbea/debug
qb: Add --enable-debug.
2019-01-22 20:13:09 +01:00
Twinaphex 070a447fa8 Merge pull request #8069 from CozmoP/dragndrop
Qt: workaround for 5.12.0 drag n drop regression
2019-01-22 20:13:03 +01:00
CozmoP 4bf4d28111 Qt: workaround for 5.12.0 drag n drop regression 2019-01-22 19:50:19 +01:00
orbea db46d43224 qb: Add --enable-debug. 2019-01-22 10:08:39 -08:00
jdgleaver 9d0e9632c1 (RGUI) Add automatic downscaling of large thumbnails 2019-01-22 15:00:45 +00:00
Twinaphex 10e50bb806 Merge pull request #8061 from orbea/osx
travis: Update to xcode10.1.
2019-01-22 10:19:51 +01:00
orbea 32fa63a593 travis: Update to xcode10.1.
This should save a few minutes during the build.
2019-01-21 23:39:05 -08:00
Twinaphex 26ea9d9f0c Merge pull request #8060 from meleu/patch-2
CHANGES.md: Update NES/SNES/Lynx hashing methods
2019-01-22 08:05:03 +01:00
Twinaphex f5386397bb Merge pull request #8057 from jdgleaver/rgui-image-task
(RGUI) Replace RPNG + direct file access with task_push_image_load()
2019-01-22 08:04:43 +01:00
Twinaphex 2f0e3680cb Merge pull request #8059 from orbea/osx
Fix the osx metal travis build.
2019-01-22 08:04:04 +01:00
meleu 838ac65184 CHANGES.md: Update NES/SNES/Lynx hashing methods
- CHEEVOS: Update the hashing methods to identify NES, SNES and Lynx games (more accurate and accepting headerless ROMs).
2019-01-22 04:05:58 -02:00
orbea d3f81e8db8 Fix the osx metal travis build. 2019-01-21 13:03:51 -08:00
jdgleaver 56ddc76ebb (RGUI) Replace RPNG + direct file access with task_push_image_load() 2019-01-21 17:32:48 +00:00
Twinaphex 0ac2dc567e Merge pull request #8056 from jdgleaver/rgui-info-fix
(RGUI) Fix information display bug
2019-01-21 17:52:44 +01:00
jdgleaver 40e9fe5cf1 (RGUI) Fix information display bug 2019-01-21 11:07:32 +00:00
Twinaphex d2863e2ce6 Merge pull request #8055 from fr500/master
this should fix errors with --disable-menu
2019-01-21 00:40:17 +01:00
Twinaphex a3928cc8ca Merge pull request #8054 from orbea/c89
Some C89_BUILD fixes.
2019-01-21 00:40:02 +01:00
radius b0b39a1610 this should fix errors with --disable-menu 2019-01-20 17:20:17 -05:00
orbea cb602c190d Some C89_BUILD fixes. 2019-01-20 14:03:42 -08:00
Twinaphex c538d78626 Merge pull request #8045 from meleu/new_cheevos
better handling HAVE_NEW_CHEEVOS compilation
2019-01-20 20:38:29 +01:00
twinaphex b6e9dbd92c (Android) Buildfix 2019-01-20 20:35:25 +01:00
Twinaphex c94806ea11 Merge pull request #8050 from orbea/printf
qb: Replace remaining uses of echo with printf.
2019-01-20 20:32:04 +01:00
Twinaphex 2ba90e218f Merge pull request #8051 from Sunderland93/master
[Wayland] Change prev_width and prev_height to unsigned int
2019-01-20 20:31:43 +01:00
Twinaphex b91938ba39 Merge pull request #8052 from m4xw/revert
Revert PR #8043
2019-01-20 20:10:42 +01:00
M4xw 7d186f7d2c Revert PR #8043 2019-01-20 20:06:57 +01:00
Sunderland93 cd35fb9440 Change prev_width and prev_height to unsigned int 2019-01-20 22:12:05 +04:00
meleu 04ec598b97 add './configure --enable-new_cheevos' option 2019-01-20 16:08:31 -02:00
Aleksey Samoilov 07ca62915a Merge pull request #1 from libretro/master
Merge master
2019-01-20 21:54:14 +04:00
twinaphex 4350073265 Revert "Revert "Fix function signature of metal_unload_texture""
This reverts commit 1a7d69621f.
2019-01-20 17:34:38 +01:00
twinaphex 1a7d69621f Revert "Fix function signature of metal_unload_texture"
This reverts commit bd16d5c9dc.
2019-01-20 17:33:07 +01:00
orbea cf83332b49 qb: Replace remaining uses of echo with printf. 2019-01-20 08:08:02 -08:00
Twinaphex bd16d5c9dc Fix function signature of metal_unload_texture 2019-01-20 03:31:45 +01:00
Twinaphex 5102911da6 (OSX) Buildfix 2019-01-20 03:26:35 +01:00
twinaphex b13777e9fc Header cleanups 2019-01-20 03:16:58 +01:00
twinaphex cfd7228469 Cleanups 2019-01-20 02:57:12 +01:00
Twinaphex 7c4fcb4960 Fix Xcode warnings 2019-01-20 02:37:05 +01:00
twinaphex 2e5530b531 Take out unused variable 2019-01-20 02:32:27 +01:00
twinaphex 4f53e14f4f Header include cleanups 2019-01-20 02:26:33 +01:00
twinaphex 0083e10926 Some header include changes - create task_file_transfer.h 2019-01-20 02:17:43 +01:00
twinaphex 9bb7132b97 Move command_playlist_ functions to playlist.c
(RGUI) Header buildfix
2019-01-20 01:57:24 +01:00
twinaphex 8349f9217c Warning cleanup 2019-01-20 01:52:20 +01:00
twinaphex d3ae2cbd29 Cleanup some header includes 2019-01-20 01:49:21 +01:00
twinaphex 22e99568ed Small cleanups 2019-01-20 00:48:02 +01:00
Twinaphex b692474d7c Merge pull request #8038 from jdgleaver/rgui-thumbs
(RGUI) Add rudimentary playlist thumbnail support
2019-01-20 00:20:14 +01:00
Twinaphex b99ad352e3 Merge pull request #8043 from daliaetnano/fix-6747-black-bug
Fix #6747 Black bug
2019-01-20 00:17:37 +01:00
Twinaphex 7f327e7154 Merge pull request #8046 from orbea/gl
Fix segfault with a null gl context.
2019-01-19 23:35:48 +01:00
twinaphex 83241ed0b1 Some header cleanups 2019-01-19 23:27:59 +01:00
twinaphex 0abe271909 Take out some header includes 2019-01-19 23:15:48 +01:00
twinaphex 1a0d5030f9 shader_vulkan.cpp - doesn't need math.h 2019-01-19 23:02:48 +01:00
orbea 46676289d4 Fix segfault with a null gl context. 2019-01-19 13:56:39 -08:00
meleu 8e02ebd987 cheevos-new: no magic numbers 2019-01-19 17:59:41 -02:00
Twinaphex 8c5f4a842c Merge pull request #8010 from rzumer/lynx-cheevos-fix
Hash full Lynx file content
2019-01-19 19:30:47 +01:00
meleu b7acc33bda cheevos-new: update nes/snes/lynx hashing methods 2019-01-19 15:29:54 -02:00
meleu f78f447b12 better handling HAVE_NEW_CHEEVOS build 2019-01-19 15:14:24 -02:00
Twinaphex 5611977de0 Merge pull request #8044 from krzys-h/uwp
(UWP) Fix Bundle.Mapping.txt path
2019-01-19 18:11:04 +01:00
meleu 159839e353 rcheevos leftover 2019-01-19 14:24:28 -02:00
orbea 9c7affc2cf Travis + qb fixes. (#8040)
* travis: Enable building qt for linux.

* qb: Set QT_SELECT for moc and qtchooser.

This should have no effect on systems where qtchooser is not used.

Fixes https://github.com/libretro/RetroArch/issues/8028

* qb: Actually disable c++ features if there is no c++ compiler.

Now this warning actually does something.

  Warning: A working C++ compiler was not found, C++ features will be disabled.
2019-01-19 11:21:31 -05:00
krzys-h 1f952679a8 (UWP) Fix Bundle.Mapping.txt path 2019-01-19 12:21:20 +01:00
krzys-h e5a2221eac Make lambdas safer for multithreading 2019-01-19 12:13:16 +01:00
krzys-h 20cb84189e Fix problems with UWP filesystem in Release builds 2019-01-19 12:04:55 +01:00
Nano c017271d8a Fix #6747 Black bug 2019-01-19 10:26:06 +01:00
Twinaphex 71f24f067b Merge pull request #8041 from meleu/patch-1
small path fix to allow compiling with HAVE_NEW_CHEEVOS
2019-01-19 09:14:31 +01:00
meleu bd43f19407 path fix to allow compiling with HAVE_NEW_CHEEVOS
This doesn't affect anything in the traditional binaries built by the buildbot.
2019-01-19 05:34:46 -02:00
Brad Parker cb4a87d6b1 fix system menu sound memory leaks in mod mixing 2019-01-19 00:46:54 -05:00
Brad Parker ae397f2ae5 fix system menu sound memory leaks in flac mixing 2019-01-18 21:03:47 -05:00
Brad Parker 32313b398b fix system menu sound memory leaks in mp3 mixing 2019-01-18 21:00:41 -05:00
Brad Parker 95a7b8c29b fix system menu sound memory leaks in ogg mixing 2019-01-18 20:02:24 -05:00
Brad Parker afcaccbd05 task_audio_mixer: free nbio_buf path memory 2019-01-18 19:06:59 -05:00
Brad Parker e81ad553ad playlist: free filestream before early returning 2019-01-18 19:03:25 -05:00
orbea 79f8b6281f Revert "WIP: travis: Enable building qt for linux." (#8039) 2019-01-18 14:34:22 -05:00
Twinaphex a578146a9f Merge pull request #8033 from orbea/moc
qb: Create qb.moc.sh and qb.make.sh.
2019-01-18 20:22:26 +01:00
Twinaphex 8cd85c4f51 Merge pull request #8034 from orbea/blank
Remove trailing blank lines.
2019-01-18 20:22:09 +01:00
Twinaphex b4348e3ae1 Merge pull request #8035 from orbea/fix
Fix conflicting types.
2019-01-18 20:22:00 +01:00
Twinaphex e4731d2b5e Merge pull request #8037 from krzys-h/uwp
Fix crash in xinput with verbose logging
2019-01-18 20:21:52 +01:00
Twinaphex 726a014cb3 Merge pull request #8036 from orbea/travis
WIP: travis: Enable building qt for linux.
2019-01-18 20:21:31 +01:00
orbea 4b20386b07 travis: Test global packages. 2019-01-18 11:11:56 -08:00
orbea d8a62d5eab travis: Test QT_SELECT. 2019-01-18 09:27:16 -08:00
orbea 6f094a3fdd travis: Enable building qt for linux. 2019-01-18 09:27:16 -08:00
krzys-h d98962189a Fix crash in xinput with verbose logging 2019-01-18 17:50:13 +01:00
jdgleaver 4b859fd097 (RGUI) Add rudimentary playlist thumbnail support 2019-01-18 16:16:44 +00:00
orbea 8787f46c59 Fix conflicting types.
Fixes conflicting types after PR https://github.com/libretro/RetroArch/pull/8006
2019-01-17 20:02:49 -08:00
orbea e062b98088 Remove trailing blank lines.
find . -type f -exec sed -i '${/^[[:space:]]*$/d;}' {} \+
2019-01-17 19:39:38 -08:00
orbea e42c21321b qb: Create qb.moc.sh and qb.make.sh.
This moves the check for a Qt5 moc into its own file, qb.moc.sh which
is executed at the end of the script to avoid the direct dependency on
pkg-config. Now instead it depends on the QT5CORE_CFLAGS and
QT5CORE_LIBS variables set in config.lib.sh. These should always be set
if HAVE_QT=yes.

This also creates a new qb.make.sh file to ensure that the config.mk and
config.h files are created at the end of the configure script.
2019-01-17 18:36:03 -08:00
Twinaphex db0cb37dc3 Merge pull request #8032 from natinusala/master
libnx: enable stb vorbis for ogg decoding
2019-01-18 00:33:57 +01:00
Twinaphex 5182f24711 Merge pull request #8030 from fjtrujy/feature/PS2Palette
[PS2] Allow Palettes
2019-01-18 00:33:31 +01:00
twinaphex fc57b41ab6 (Audio mixer) You can now specifically set a slot to load a sound in
- set type to AUDIO_MIXER_SLOT_SELECTION_MANUAL and set idx to the
slot you want to load in (begins at 0)
2019-01-18 00:24:31 +01:00
natinusala f23d1d4901 libnx: enable stb vorbis for ogg decoding 2019-01-17 23:52:27 +01:00
orbea 2860d6af08 qb: Check for a Qt5 moc. (#8029) 2019-01-17 17:35:19 -05:00
Twinaphex dc6b148b17 Merge pull request #8027 from orbea/travis
travis: Don't use libretro-super for xcode9.3
2019-01-17 17:42:14 +01:00
orbea 2d7bb5519b travis: Don't use libretro-super for xcode9.3 2019-01-17 07:08:58 -08:00
krzys-h 4461d32900 (UWP) Fallback to a file copy when core doesn't support VFS 2019-01-17 11:48:09 +01:00
krzys-h a116bb908e (UWP) Support access through the file picker 2019-01-17 11:48:09 +01:00
krzys-h c8510378dc (UWP) Error if trying to use VFS on cores that don't support it 2019-01-17 11:08:05 +01:00
krzys-h 9188cc1a73 (UWP) Add broadFileSystemAccess support 2019-01-17 11:08:02 +01:00
krzys-h b7cc124070 (UWP) Base StorageFile implementation 2019-01-17 11:04:19 +01:00
twinaphex b70683fa08 Buildfix 2019-01-17 09:14:34 +01:00
Twinaphex b5d8b8b3bc Merge pull request #8020 from krzys-h/vfs-v3
VFS v3 (improved)
2019-01-17 03:14:35 +01:00
Twinaphex 38976150a5 Merge pull request #8023 from bparker06/archive_progress
Normalize archive progress calculation
2019-01-17 03:07:08 +01:00
Twinaphex 6963b1f375 Merge pull request #8024 from CozmoP/warning
-Woverloaded-virtual fix
2019-01-17 03:07:00 +01:00
twinaphex 65d5de6674 Add 4 additional mixer slots for system sound effects and music
for menu
2019-01-17 03:03:46 +01:00
CozmoP ef318533c3 -Woverloaded-virtual fix 2019-01-17 00:09:12 +01:00
Brad Parker 16fffd67ea Normalize archive progress calculation 2019-01-16 17:22:46 -05:00
Twinaphex 30e48b46b3 Merge pull request #8022 from bparker06/history_corrupt
Fix issue that was causing old name labels to appear in content history
2019-01-16 23:00:29 +01:00
Francisco Javier Trujillo Mata 3706aa9904 ClearVRAM detection improved 2019-01-16 22:57:08 +01:00
Francisco Javier Trujillo Mata f7c9bc4e61 Make GFX PS2 support palette in the cores 2019-01-16 22:57:08 +01:00
Brad Parker e2df9b52ce Fix issue that was causing old name labels to appear in content history 2019-01-16 16:48:20 -05:00
Twinaphex dd4bf2c41f Merge pull request #8021 from orbea/clang
Fix -Wmissing-braces warning with clang.
2019-01-16 22:29:00 +01:00
orbea bc09245dee Fix -Wmissing-braces warning with clang. 2019-01-16 13:14:48 -08:00
Twinaphex fd17970f61 Merge pull request #7925 from CozmoP/sync
Qt: Detailed file browser table and other changes.
2019-01-16 22:00:37 +01:00
krzys-h f011579c78 Fix memory leak when opening non-existent directories 2019-01-16 21:21:49 +01:00
krzys-h f93ae772f3 Fix error in path_get_size 2019-01-16 21:03:15 +01:00
krzys-h 5a97738f3e Revert "Revert "Cleanups""
This reverts commit 5c2d271f9f.
2019-01-16 21:01:37 +01:00
krzys-h e6fc4220fa Revert "Revert "VFS v3: stat, mkdir, directory listings""
This reverts commit a549e28f01.
2019-01-16 21:01:29 +01:00
Twinaphex c05be12ff4 Merge pull request #8019 from Datamats/libretro-glsym-nx
regenerate the glsym headers for the switch in libretro-common
2019-01-16 20:52:00 +01:00
Mats A 4f15d4a64c regenerate the glsym headers for the switch in libretro-common 2019-01-16 20:30:14 +01:00
Twinaphex d70a49ea6f Merge pull request #8017 from orbea/playlist
Silence errors for empty playlist files.
2019-01-16 19:33:56 +01:00
orbea e503f9e922 Silence errors for empty playlist files.
Fixes https://github.com/libretro/RetroArch/issues/8015
2019-01-16 09:40:21 -08:00
Twinaphex 31b1a91c3b Merge pull request #8014 from orbea/screenshot
Fix screenshot filename with no core or content.
2019-01-16 16:07:57 +01:00
orbea 02382b1cd7 Fix screenshot filename with no core or content. 2019-01-15 21:55:03 -08:00
Twinaphex 874a5258c5 Merge pull request #8013 from libretro/revert-7995-vfs-v3
Revert "VFS v3: stat, mkdir, directory listings"
2019-01-16 03:53:44 +01:00
Twinaphex a549e28f01 Revert "VFS v3: stat, mkdir, directory listings" 2019-01-16 03:53:34 +01:00
twinaphex 5c2d271f9f Revert "Cleanups"
This reverts commit 73e78f5135.
2019-01-16 03:53:23 +01:00
twinaphex 73e78f5135 Cleanups 2019-01-16 02:58:08 +01:00
Twinaphex d4b33ac1ad Merge pull request #7995 from krzys-h/vfs-v3
VFS v3: stat, mkdir, directory listings
2019-01-16 02:38:54 +01:00
Twinaphex 4e73be94b7 Merge pull request #8012 from CozmoP/gridfix
Qt: fix bug when grid item width > grid width
2019-01-16 01:49:13 +01:00
CozmoP e4bc578466 Qt: fix bug when grid item width > grid width 2019-01-16 00:11:58 +01:00
Twinaphex 10c7929d55 Merge pull request #7996 from fr500/master
support subsystem type netplay lobbies
2019-01-15 21:40:05 +01:00
Twinaphex 3ec4469455 Merge pull request #8011 from CozmoP/msvc2017
fix MSVC 2017 Qt builds
2019-01-15 21:39:16 +01:00
CozmoP a88277f76d #undef mkdir 2019-01-15 19:41:24 +01:00
CozmoP 0df074db05 fix MSVC 2017 Qt builds 2019-01-15 18:58:31 +01:00
Raphaël Zumer b1de875551 Define lynx_header_len at the function head 2019-01-15 12:19:25 -05:00
Raphaël Zumer cdbfec7348 Make SNES_HEADER_LEN snake case 2019-01-15 12:18:58 -05:00
Raphaël Zumer 4260f9ffbc Hash full Lynx file content 2019-01-15 12:12:13 -05:00
radius 82836c5778 [netplay] simplify find content task 2019-01-14 20:17:53 -05:00
radius d3ae49b30b add sublabels 2019-01-14 18:58:57 -05:00
radius dad3fe42db [netplay] load subsystem content
cleanup

cleanup
2019-01-14 18:58:57 -05:00
radius 9d0472c3ac [netplay] finding content works now
cleanup
2019-01-14 18:58:56 -05:00
radius f0b8d2d12e [netplay] support subsystem type netplay lobbies 2019-01-14 18:58:56 -05:00
Twinaphex c7054a36f2 Merge pull request #8009 from krzys-h/fix-7803
Fix parent of root directory turning into ./ on Windows
2019-01-14 21:32:06 +01:00
krzys-h cc7541338c Fix parent of root directory turning into ./ on Windows (#7803) 2019-01-14 20:48:55 +01:00
CozmoP 8adef3b995 Qt: move some styles to stylesheet 2019-01-14 20:06:07 +01:00
Twinaphex 0805f4e821 Merge pull request #8008 from natinusala/master
libnx swkbd overclock fix + ozone memory leak fix
2019-01-14 20:01:56 +01:00
natinusala 0b4f6c1ce4 ozone: fix memory leak 2019-01-14 19:49:56 +01:00
natinusala ea027c0b55 libnx: use stock clock for swkbd 2019-01-14 19:04:13 +01:00
Twinaphex 5c09cf29a4 Merge pull request #8006 from orbea/qt2
Fix wimp ui.
2019-01-14 14:26:24 +01:00
Twinaphex 10833fc9ae Merge pull request #8007 from orbea/qt
Fix qt with CXX_BUILD.
2019-01-14 14:26:02 +01:00
orbea b3157c14e8 Fix wimp ui.
Fixes https://github.com/libretro/RetroArch/issues/8005
2019-01-14 00:37:52 -08:00
orbea c1765f0a6c Fix qt with CXX_BUILD. 2019-01-14 00:24:46 -08:00
twinaphex f0994a0502 retroarch.c - some cleanups 2019-01-14 05:25:04 +01:00
twinaphex 7cb84245b7 Simplify runloop 2019-01-14 04:39:58 +01:00
Twinaphex fab4834b82 Merge pull request #7959 from bparker06/json_playlist
add JSON playlist format
2019-01-14 03:14:54 +01:00
Twinaphex 1bb381fd7e Merge pull request #8002 from theheroGAC/patch-41
Update msg_hash_it.h
2019-01-14 00:56:02 +01:00
Twinaphex b93c21091b Merge pull request #8003 from orbea/cxx
Fix CXX_BUILD errors.
2019-01-14 00:55:54 +01:00
CozmoP 2ef9e5757b Qt: switch to stacked layout to avoid bug. Add border to file browser table. 2019-01-13 23:34:57 +01:00
CozmoP a0b67424ca Qt: don't wrap table cell text 2019-01-13 20:57:19 +01:00
orbea ff2e3bbbce Fix CXX_BUILD errors. 2019-01-13 11:51:33 -08:00
Rob Loach 63ba60ae1a Merge pull request #7976 from orbea/brew
travis: Attempt to fix xcode9.3 travis build.
2019-01-13 14:41:31 -05:00
theheroGAC 473bae15c3 Update msg_hash_it.h 2019-01-13 20:38:05 +01:00
Twinaphex 8f8cec52f2 Merge pull request #8001 from fjtrujy/feature/PS2VSyncDisabled
[PS2] Improve VRAM clear detection
2019-01-13 20:23:40 +01:00
Francisco Javier Trujillo Mata a5d381eced Improve VRAM clear detection 2019-01-13 20:19:21 +01:00
Twinaphex 39209dd387 Merge pull request #8000 from fjtrujy/feature/PS2VSyncDisabled
WIP: [PS2] Enable the possibility to disable VSync
2019-01-13 20:11:05 +01:00
Francisco Javier Trujillo Mata ba75b1f4b3 Enable the possibility to disable VSync 2019-01-13 19:15:52 +01:00
Brad Parker af7379889d prevent null pointer deref in save/state/cheat paths 2019-01-13 12:10:47 -05:00
Twinaphex 034ef10d3f Merge pull request #7999 from krzys-h/uwp
Fix warning in uwp_input.c
2019-01-13 18:01:29 +01:00
krzys-h e65f87a4ee Fix warning in uwp_input.c 2019-01-13 16:01:59 +01:00
krzys-h 4b2278688b Unix buildfix for dirent_is_directory 2019-01-13 14:49:01 +01:00
twinaphex 5b88685448 Unroll this 2019-01-13 07:46:35 +01:00
Brad Parker 331a7dedf1 griffin: jsonsax_full is always required now 2019-01-13 00:26:30 -05:00
Twinaphex cb596aec3a Merge pull request #7820 from meepingsnesroms/master
Buttons are only 16 bits so only use uint16_t to prevent wasting 6 bytes
2019-01-13 04:55:34 +01:00
Brad Parker 2ee8888a65 Update CHANGES.md 2019-01-12 21:30:54 -05:00
Twinaphex 75aa27ab94 Merge pull request #7972 from Wiimpathy/WiiGammaSettings
Wii: Fix Gamma setting not saved.
2019-01-13 03:24:30 +01:00
Twinaphex c4669c3302 Merge pull request #7992 from Sunderland93/master
[Wayland] Fix toggle fullscreen
2019-01-13 01:34:06 +01:00
Twinaphex 7a4efedbfe Merge pull request #7994 from orbea/travis2
travis: Clean up.
2019-01-13 01:04:09 +01:00
krzys-h 109de0bebb VFS v3: stat, mkdir, directory listings 2019-01-13 00:33:24 +01:00
Brad Parker 1b22acd747 guard against overflows in Arabic font code, fixes #7508 2019-01-12 17:23:19 -05:00
twinaphex af74ba90db Buildfixes 2019-01-12 21:34:14 +01:00
Twinaphex 14a22aaadd Merge pull request #7987 from orbea/qt
Don't disable the Qt frontend when started from the commandline.
2019-01-12 21:21:04 +01:00
twinaphex 7ad34509e7 Silence more CXX_BUILD warnings 2019-01-12 21:16:48 +01:00
Brad Parker 88750850dc move playlist entries into "items" array to allow for top-level metadata 2019-01-12 13:46:28 -05:00
Sunderland93 dba9781f26 Fix toggle fullscreen 2019-01-12 22:18:31 +04:00
twinaphex 6ca9afbd57 Silence more warnings with CXX_BUILD 2019-01-12 18:51:06 +01:00
orbea d86fe8d6e6 Don't disable the Qt frontend when started from the commandline.
Fixes https://github.com/libretro/RetroArch/issues/7962.
2019-01-12 09:40:05 -08:00
twinaphex 4c8e5e07c0 Fix some CXX_BUILD errors 2019-01-12 18:35:14 +01:00
twinaphex d412c9f8d4 Fix some CXX_BUILD errors 2019-01-12 18:30:06 +01:00
twinaphex 0f8cf1a579 C89 buildfix 2019-01-12 18:15:49 +01:00
twinaphex 6048eba78a Move static variable around 2019-01-12 18:10:22 +01:00
twinaphex d95b4b70e7 Some cleanups to runloop - should not affect anything functionality-wise 2019-01-12 17:58:35 +01:00
Twinaphex 700829b5d7 Merge pull request #7991 from krzys-h/com-init-again
Fix COM initialization on Qt builds
2019-01-12 15:21:58 +01:00
krzys-h 901c712e61 Fix COM initialization on Qt builds 2019-01-12 09:46:20 +01:00
Twinaphex fed880bc33 Merge pull request #7986 from krzys-h/uwp
(UWP) Add keyboard mapping support in the uwp driver
2019-01-12 05:11:14 +01:00
Twinaphex ff8e10f014 Merge pull request #7984 from myfreeweb/egl-fix
Fix EGL initialization not setting 'n'
2019-01-12 05:10:46 +01:00
CozmoP 2052e15a08 pass content label when loading content from Qt (#7982) 2019-01-11 18:51:44 -05:00
Twinaphex 2231e4c821 Merge pull request #7988 from m4xw/nx
Fix double semicolon and format line endings
2019-01-12 00:38:56 +01:00
M4xw c111b4a7f0 Fix double semicolon and format line endings 2019-01-11 23:48:52 +01:00
krzys-h e08f79e16b (UWP) Add keyboard mapping support in the uwp driver 2019-01-11 20:24:26 +01:00
Greg V 3ab7e780d1 EGL: use unused 'n' argument for storing the config count (fixes #7953)
The 'n' argument was probably intended for the count, but it was unused.
The Wayland platform would check whether n would be non-zero (and
wouldn't initialize n with zero), so it would only succeed because it
was initialized with random garbage.

Pointy hat: @Sunderland93
2019-01-11 20:41:40 +03:00
Greg V b52a5ae664 Remove trailing whitespace in wayland_ctx.c
vim has been helpfully doing this for me every time I saved the file
and I've had to manually ignore these changes when committing.
Let's just commit this.
2019-01-11 20:37:59 +03:00
Twinaphex 58d764ce5d Merge pull request #7983 from natinusala/master
libnx: implement perf counters
2019-01-11 18:23:28 +01:00
natinusala 52479ad09f libnx: implement perf counters 2019-01-11 17:45:06 +01:00
Brad Parker f0e2f7dcf4 Merge branch 'master' into json_playlist 2019-01-11 09:02:11 -05:00
Twinaphex 78cc8794f7 Merge pull request #7979 from fjtrujy/FixPS2CoreGlich
[PS2] Clean screen before the core start
2019-01-11 14:49:12 +01:00
Francisco Javier Trujillo Mata 7b175496ce [PS2] Clean screen before the core start 2019-01-11 14:42:47 +01:00
orbea 39442c7bba travis: Clean up. 2019-01-11 02:16:08 -08:00
orbea 12bb9e5cb5 travis: Attempt to fix xcode9.3 travis build. 2019-01-10 22:10:41 -08:00
Twinaphex af48987eb9 Merge pull request #7975 from orbea/unload
Fix crashes when changing cores.
2019-01-11 04:54:53 +01:00
orbea 32586bc316 Fix crashes when changing cores.
When switching cores it was possible to hit core_unload_game
and core_load twice which potentially led to crashes when switching
some cores without closing content before loading the new core.

Fixes https://github.com/libretro/RetroArch/issues/4107
2019-01-10 19:04:51 -08:00
twinaphex 13ccf4d408 Silence some more static code analysis warnings 2019-01-11 01:35:18 +01:00
CozmoP 07c3bff2f8 Qt: set fixed height to search and core selection widgets 2019-01-11 01:31:27 +01:00
Twinaphex ccec13e64f Merge pull request #7974 from libretro/revert-7973-fix-2791-black-bug
Revert "Fix issue #6747 black bug"
2019-01-10 22:52:23 +01:00
Twinaphex 01397f008a Revert "Fix issue #6747 black bug" 2019-01-10 22:52:13 +01:00
twinaphex 3ac631c7a3 (MSVC) Some more static code analysis warning fixes 2019-01-10 22:49:23 +01:00
Twinaphex e4f9aebbd3 Merge pull request #7973 from daliaetnano/fix-2791-black-bug
Fix issue #6747 black bug
2019-01-10 22:36:40 +01:00
twinaphex c98b2e2292 Buildfixes and more static code analysis warning fixes 2019-01-10 22:24:43 +01:00
twinaphex b9ff2e4de1 Fix some static code analysis warnings from MSVC 2017 2019-01-10 21:47:15 +01:00
benoa 10723bca01 Wii: Fix Gamma setting not saved. 2019-01-10 18:18:20 +01:00
Twinaphex 24ce1aee21 Merge pull request #7969 from krzys-h/com-init-is-broken
Initialize COM only once, globally
2019-01-10 17:28:23 +01:00
krzys-h 98c19ac0f5 Add a missing header
Apparently MSVC adds this by default or something
2019-01-10 17:22:32 +01:00
krzys-h 0cff7eefa7 Initialize COM only once, globally 2019-01-10 16:48:02 +01:00
Brad Parker d3210b87ae proper init of ITaskbarList 2019-01-10 09:25:02 -05:00
Twinaphex 5a12ca642c Merge pull request #7967 from jdgleaver/rgui-gekko-colour-fix
(RGUI) Fix background + border colours for Gekko platforms
2019-01-10 15:16:31 +01:00
Twinaphex 6ec2134111 Merge pull request #7968 from fr500/master
disable discord code in ozone
2019-01-10 15:16:05 +01:00
Twinaphex cdcadf6237 Merge pull request #7769 from rzumer/patch-2
Update NES and SNES hashing methods
2019-01-10 15:14:08 +01:00
radius bd2a13e32c disable discord code in ozone 2019-01-10 09:01:03 -05:00
jdgleaver 74312180b9 (RGUI) Fix background + border colours for Gekko platforms 2019-01-10 13:16:08 +00:00
Twinaphex 57c5563b3b Merge pull request #7966 from fjtrujy/feature/PS2GuideStyleLines
[PS2] Apply guideline styles for PS2 files
2019-01-10 12:02:17 +01:00
Francisco Javier Trujillo Mata 29948c0878 Apply guideline styles for PS2 files 2019-01-10 09:37:09 +01:00
Brad Parker 402ea3944e Update CHANGES.md 2019-01-09 21:28:46 -05:00
Twinaphex 840da62e20 Merge pull request #7964 from fr500/master
disable discord avatar for now, not time to hook it up properly
2019-01-10 03:17:28 +01:00
radius 6e1dc5af46 disable discord avatar for now, not time to hook it up properly 2019-01-09 21:13:04 -05:00
twinaphex e13a142bae Wrap access to runloop_key_event 2019-01-10 02:49:25 +01:00
twinaphex 90ad541413 Typo fix 2019-01-10 02:35:35 +01:00
twinaphex d3f58bb65c Wrap all access of runloop_shutdown_initiated 2019-01-10 02:35:03 +01:00
Twinaphex 96b7f9fd9e Merge pull request #7963 from fjtrujy/feature/PS2GFXImprovements
Improve manage of VRAM in the GFX and Font Driver for PS2
2019-01-10 02:30:24 +01:00
Twinaphex 9c507b2433 Merge pull request #7961 from fjtrujy/feature/solvePS2RunTimeIssues
Make PS2 works again
2019-01-10 02:30:14 +01:00
Francisco Javier Trujillo Mata a2db47bead Improve manage of VRAM in the GFX and Font Driver for PS2 2019-01-10 02:25:02 +01:00
Francisco Javier Trujillo Mata 9c7c5e0814 This commit revert part of the changes done for the PS4 implementation but fixes PS2 crash 2019-01-10 02:20:49 +01:00
CozmoP 7cac57a09a Qt: proper fix for file browser core association. Add padding to items count label for dark theme. 2019-01-10 01:01:01 +01:00
bparker06 c7779ff046 Remove extra CoUninitialize 2019-01-09 18:51:25 -05:00
bparker06 a7a959ccba always call CoUninitialize if we support the taskbar extensions 2019-01-09 18:49:39 -05:00
Brad Parker a331b7420e update copyrights 2019-01-09 17:19:19 -05:00
Brad Parker c7041260d7 add JSON playlist format 2019-01-09 17:13:13 -05:00
Twinaphex bc2f19a9d7 Merge pull request #7957 from altiereslima/master
Update Portuguese Brazilian Language
2019-01-09 23:04:45 +01:00
altiereslima 03e25ecb2f Update msg_hash_pt_br.h 2019-01-09 20:02:34 -02:00
altiereslima c26a4aa13a Update msg_hash_pt_br.h 2019-01-09 19:54:35 -02:00
Nano f1ba335cb3 Fix issue #2791 black bug 2019-01-09 22:52:45 +01:00
twinaphex 60533b10b7 (RGUI) Add specific color conversion for Gekko [Wii/Gamecube] 2019-01-09 22:05:33 +01:00
Twinaphex 9231998aa3 Merge pull request #7951 from jdgleaver/rgui-ps2-colour-fix
(RGUI) Fix background + border colours for PS2
2019-01-09 21:26:14 +01:00
Twinaphex 60a2d5c87c Merge pull request #7952 from orbea/dummy
Fix crashes with '--disable-menu' and the Qt frontend.
2019-01-09 19:29:03 +01:00
orbea 7eead5c59f Fix crashes with '--disable-menu' and the Qt frontend.
When failing to load content in the companion ui when HAVE_MENU is not
defined RetroArch will crash in just about every input and video driver.
Even if several sanity checks are added the dummy core will immediately
exit.

Now it will print that it failed to load the core in the companion ui
and reinit the dummy core to match the behavior with the null menu
driver.
2019-01-09 10:02:32 -08:00
jdgleaver c433934415 (RGUI) Fix background + border colours for PS2 2019-01-09 15:34:52 +00:00
Twinaphex db36f08920 Merge pull request #7942 from ArnaudFaucher/master
msvc-uwp: fixed certificate file name
2019-01-09 13:00:56 +01:00
Twinaphex 9bbbb929f8 Merge pull request #7950 from jdgleaver/rgui-colour-themes
(RGUI) Add colour themes
2019-01-09 12:46:41 +01:00
jdgleaver faaa6e081b (RGUI) Add colour themes 2019-01-09 10:50:24 +00:00
Twinaphex f500cf19ab Merge pull request #7945 from fr500/master
[discord] early return if avatar isn't set
2019-01-09 11:49:09 +01:00
Twinaphex a3f7588ec5 Merge pull request #7947 from orbea/null
Fix crash with the null menu driver and Qt frontend.
2019-01-09 11:48:50 +01:00
Twinaphex 6420ea8f27 Merge pull request #7946 from bparker06/playlist
fix heap overflow with playlists
2019-01-09 11:48:25 +01:00
orbea 248c944ff8 Fix crash with the null menu driver and Qt frontend.
When failing to load content in the Qt companion ui while using the
null menu driver RetroArch will crash.

Now it just prints that it failed to load content in the Qt ui.
2019-01-08 23:01:05 -08:00
Brad Parker 0c634382f9 fix heap overflow with playlists 2019-01-08 23:08:58 -05:00
radius 77c2c7b946 [discord] early return if avatar isn't set 2019-01-08 20:54:52 -05:00
twinaphex 01b2b9c3a6 Buildfix 2019-01-09 01:01:03 +01:00
Twinaphex cdc0a79508 Merge pull request #7872 from natinusala/libnx-swkbd
libnx: implement swkbd for menu drivers
2019-01-09 00:29:31 +01:00
Twinaphex ac04c1bfc5 Merge pull request #7892 from Datamats/libnx_nwindow
libnx: refactor all the code of the now deprecated gfx api over to the new nwindow / framebuffer api
2019-01-08 23:36:20 +01:00
Arnaud Faucher 12aaf615a8 msvc-uwp: fixed certificate file name 2019-01-08 16:29:54 -05:00
Twinaphex 9caf71df7a Merge pull request #7885 from myfreeweb/more-wayland
Wayland: track multiple displays and their scales
2019-01-08 21:45:53 +01:00
Twinaphex d2f7853d49 Merge branch 'master' into more-wayland 2019-01-08 21:45:43 +01:00
twinaphex ddbb1a4d43 Update 2019-01-08 21:43:40 +01:00
twinaphex ef35cf5ac0 Add fopen_utf8 for Salamander builds 2019-01-08 21:42:52 +01:00
twinaphex 9b801aee17 Buildfixes 2019-01-08 20:43:03 +01:00
twinaphex 6bd4d91038 Cleanups 2019-01-08 20:32:40 +01:00
twinaphex b74b24e648 Change to C comment 2019-01-08 20:22:44 +01:00
Twinaphex 6aa501bc70 Merge pull request #7938 from frangarcj/orbis2
[ORBIS] Some driver fixes and host filesystem support
2019-01-08 20:18:48 +01:00
Twinaphex 40997473ed Merge branch 'master' into orbis2 2019-01-08 20:18:08 +01:00
Twinaphex 19c4fcda88 Merge pull request #7941 from orbea/squeeze
Squeeze extra blank lines with cat(1).
2019-01-08 20:14:17 +01:00
orbea bfc366decc Squeeze extra blank lines with cat(1).
Example:

find . -type f -iname '*.c' | while read -r i; do
  cat -s "$i" > "$i.new"
  mv "$i.new" "$i"
done
2019-01-08 11:04:58 -08:00
twinaphex 93346fed6b Buildfix 2019-01-08 17:53:58 +01:00
Twinaphex c2047c8c04 Merge pull request #7935 from orbea/menu
Makefile.common: Remove redundant HAVE_MENU check.
2019-01-08 12:31:27 +01:00
Twinaphex 3c8ca30b07 Merge pull request #7932 from fr500/master
WIP: [netplay] subsystem support
2019-01-08 12:31:02 +01:00
Twinaphex 2c8ca91cf0 Merge pull request #7930 from orbea/opt
Fix crash with quick menu options.
2019-01-08 12:30:48 +01:00
Twinaphex 7493f9cf37 Merge pull request #7936 from orbea/threads
Fix savestates without HAVE_MENU.
2019-01-08 12:30:28 +01:00
Twinaphex 1673c73702 Merge pull request #7939 from alfrix/master
Fix #7934
2019-01-08 12:28:20 +01:00
Alfredo Monclus 628fc8a690 Fix #7934 2019-01-08 07:52:17 -03:00
orbea afc00cf155 Fix savestates without HAVE_MENU.
Fixes https://github.com/libretro/RetroArch/issues/7933
2019-01-07 22:40:09 -08:00
orbea 6a0ac8584c Makefile.common: Remove redundant HAVE_MENU check. 2019-01-07 21:51:04 -08:00
hizzlekizzle 3e5237ed72 Merge pull request #7931 from fr500/master
[subsystem] fix sram
2019-01-07 22:32:57 -06:00
radius 58e192881a [netplay] announce subsystems 2019-01-07 23:30:48 -05:00
radius cb00455f12 [subsystem] fix sram 2019-01-07 22:27:22 -05:00
orbea 098dc61ad3 Fix crash with quick menu options.
If the 'game specific options' setting is disabled the drop down menu
for the core options will crash on the first option and then have an
offset with all of the additional options.

Fixes https://github.com/libretro/RetroArch/issues/7915
2019-01-07 18:10:31 -08:00
Twinaphex cf49f0c050 Merge pull request #7927 from orbea/qb
qb: Remove outdated checks.
2019-01-08 01:14:36 +01:00
Twinaphex be12b8ff82 Merge pull request #7929 from fr500/master
[discord] fix
2019-01-08 01:14:29 +01:00
Twinaphex 983e0a900f Merge pull request #7928 from fjtrujy/feature/PS2Controller
[PS2] Input Driver - 2 Player
2019-01-08 01:13:56 +01:00
radius 6613421537 [discord] fix 2019-01-07 19:08:53 -05:00
Francisco Javier Trujillo Mata 9370fb604d Enable 2 controller for PS2 Driver (multiplayer is not implemented yet) 2019-01-08 00:28:14 +01:00
CozmoP f5f4630133 Qt: quick fix for file browser core selection. 2019-01-07 23:50:21 +01:00
orbea 35f6dd640d qb: Remove outdated checks. 2019-01-07 14:42:06 -08:00
Francisco Javier Trujillo Mata cd764ac37b Remove not needed free in the FONT driver 2019-01-07 23:02:01 +01:00
CozmoP c1d126d3bf Qt: make playlist list icons 32x32 2019-01-07 22:48:45 +01:00
Twinaphex 54a795bfd7 Merge pull request #7924 from orbea/menu_null
menu: Fix quick menu toggle crash with the null menu driver.
2019-01-07 21:57:18 +01:00
Twinaphex d325752183 Merge pull request #7926 from fjtrujy/feature/PS2FontDriver
[PS2] Create Font driver for PS2
2019-01-07 21:56:14 +01:00
Francisco Javier Trujillo Mata 26ce69694f Create Font driver for PS2 2019-01-07 21:51:48 +01:00
CozmoP 8df7540c96 Merge branch 'master' into sync 2019-01-07 21:24:44 +01:00
CozmoP 017abf4148 Qt: Detailed file browser table. Don't allow dropping files on file browser table. Share selection between playlist views. Show grid footer on list view too. Add items count to footer. Rename a couple functions. 2019-01-07 20:56:23 +01:00
orbea d37547e6fd menu: Fix quick menu toggle crash with the null menu driver. 2019-01-07 11:42:48 -08:00
Twinaphex aa231dca10 Merge pull request #7922 from natinusala/master
libnx: add HAVE_CHD to the Makefile
2019-01-07 20:29:27 +01:00
natinusala 27d1cc9905 libnx: add HAVE_CHD to the Makefile 2019-01-07 19:08:41 +01:00
Mats 462a4b24fd libnx: refactor all the code of the now deprecated gfx api over to the new nwindow / framebuffer api 2019-01-07 15:03:44 +01:00
Twinaphex 6384313279 Merge pull request #7914 from orbea/menu
menu: Display menu drivers in alphabetical order.
2019-01-07 10:03:27 +01:00
Twinaphex 9bd97784a3 Merge pull request #7916 from orbea/qb
qb: Fix typo in --help.
2019-01-07 10:02:45 +01:00
Twinaphex c44235611d Merge pull request #7918 from orbea/rgui
qb: Improve menu check without opengl, opengles or vulkan.
2019-01-07 10:02:30 +01:00
Twinaphex c1477c10b9 Merge pull request #7919 from orbea/osx
Attempt to fix xcode8 travis build failure.
2019-01-07 10:02:16 +01:00
orbea 58fa3bc940 Attempt to fix xcode8 travis build failure. 2019-01-06 22:47:03 -08:00
orbea 23c8a31d69 qb: Improve menu check without opengl, opengles or vulkan. 2019-01-06 22:18:02 -08:00
Brad Parker 459a19be57 fix infinite loop with null menu driver 2019-01-07 00:31:57 -05:00
orbea 749e882b58 qb: Fix typo in --help. 2019-01-06 21:18:36 -08:00
orbea d25b632b88 Fix segfault with null menu driver. (#7913) 2019-01-06 23:34:25 -05:00
Brad Parker 5bedd981ec allow shaders when menu is disabled 2019-01-06 23:03:28 -05:00
Brad Parker 13ee5ccfdf init core info when menu is disabled, remove more menu dependance from Qt 2019-01-06 22:04:23 -05:00
orbea 161785f588 menu: Display menu drivers in alphabetical order. 2019-01-06 17:38:16 -08:00
Twinaphex 9b46caa6db Merge pull request #7911 from fjtrujy/feature/PS2OpenRGUIMenu
[PS2] Open RetroArch menu from Core
2019-01-07 01:42:01 +01:00
Francisco Javier Trujillo Mata f48ffb9aac Open RetroArch Menu Long Pressing Start button 2019-01-07 01:38:48 +01:00
Twinaphex 49776510ce Merge pull request #7912 from fr500/discord
[discord] rewrite secret/join logic to use a queried lobby name
2019-01-07 01:14:03 +01:00
radius b8f20e60c2 [discord] rewrite secret/join logic to use a queried lobby name 2019-01-06 19:04:08 -05:00
Brad Parker 22598feca3 Qt: there is no core info with --disable-menu 2019-01-06 17:45:22 -05:00
Brad Parker 8343cf2680 re-word warning message 2019-01-06 17:39:19 -05:00
Brad Parker 65c6bb69a4 allow building Qt with --disable-menu 2019-01-06 17:37:36 -05:00
orbea 65c6caf5a6 qb: Add '--disable-menu'. (#7910)
This adds '--disable-menu' which will disable all of the menu drivers
including Qt. This will also allow disabling only rgui and not the other
menu drivers.
2019-01-06 17:30:50 -05:00
Francisco Javier Trujillo Mata 3bb0c7caa4 Disable the time function, after start core is not working fine. 2019-01-06 23:26:34 +01:00
orbea 5428d2a833 Fix warning with '--disable-rgui' and '--disable-easteregg'. (#7908)
Fixes:

retroarch.c: In function ‘runloop_check_state’:
retroarch.c:2593:20: warning: variable ‘seq’ set but not used [-Wunused-but-set-variable]
    static uint64_t seq              = 0;
                    ^~~
2019-01-06 17:21:15 -05:00
Tatsuya79 92e2221c2d fix gong scaling (#7907) 2019-01-06 13:10:40 -05:00
twinaphex 2686cf1498 Fix disable-rgui 2019-01-06 17:04:28 +01:00
Twinaphex ad3e66dcb0 Merge pull request #7737 from CozmoP/modelview
Qt: custom playlist model and playlist view
2019-01-06 16:07:05 +01:00
Twinaphex 2ccde34813 Merge pull request #7906 from krzys-h/uwp-minor-fixes
(UWP) Minor fixes
2019-01-06 15:53:39 +01:00
krzys-h ced5af9314 (UWP) Don't try to access C:\Windows\Fonts
It's going to fail anyway
2019-01-06 15:46:03 +01:00
krzys-h dcdcc938bf (UWP) Fix win32 nbio 2019-01-06 15:45:51 +01:00
krzys-h 0129f7e4ad (UWP) Fix signing certificate path for non-free cores
Broken in ff1ca99748
2019-01-06 15:45:51 +01:00
Twinaphex bd9146ed72 Merge pull request #7905 from alfrix/more_icons
More icons
2019-01-06 09:16:25 +01:00
Twinaphex 56c246482e Merge pull request #7902 from orbea/rgui
qb: Fix '--disable-rgui'.
2019-01-06 09:16:01 +01:00
Twinaphex d1a65f15cc Merge pull request #7899 from orbea/command
Remove duplicate command.h includes.
2019-01-06 09:15:24 +01:00
alfrix 18db7104cc More icons to ozone, update changelog 2019-01-06 01:04:32 -03:00
alfrix c92136015a a couple more icons 2019-01-06 01:03:27 -03:00
alfrix ac8d3d7a51 Simplify the icon search and handle incomplete themes better 2019-01-06 01:03:27 -03:00
alfrix e83b3adc20 More Icons 2019-01-06 01:03:27 -03:00
Brad Parker 13d6ff899c Update CHANGES.md 2019-01-05 20:20:45 -05:00
orbea 2b0838ac02 udev: Disable the mouse when the window has lost focus. (#7851)
Fixes https://github.com/libretro/RetroArch/issues/5520

v2: Move check to udev_handle_mouse().
v3: Change check to udev_get_mouse to fix issue reported by RobLoach.
2019-01-05 19:56:41 -05:00
orbea 34f3eb7277 qb: Fix '--disable-rgui'.
Also fixes a crash on startup with '--disable-rgui'.

Thread 1 "retroarch" received signal SIGSEGV, Segmentation fault.
0x0000000000529f52 in strlcpy_retro__ (dest=0x7fffffffbb17 "treaming_toggle",
    source=0x1 <error: Cannot access memory at address 0x1>, size=250)
    at libretro-common/compat/compat_strl.c:38
38	      while (--n && (*dest++ = *source++)) src_size++;
(gdb) bt
    dest=0x7fffffffbb17 "treaming_toggle",
    source=0x1 <error: Cannot access memory at address 0x1>, size=250)
    at libretro-common/compat/compat_strl.c:38
    size=250) at libretro-common/compat/compat_strl.c:60
    out_path=0x7fffffffbb10 "input_", dir=0x94b460 "input", path=0x0,
    delim=95 '_', size=256) at libretro-common/file/file_path.c:964
    prefix=0x94b460 "input", btn=0x0, bind=0x151e180 <input_autoconf_binds+4672>)
    at input/input_driver.c:2483
    binds=0x151cf40 <input_autoconf_binds>) at tasks/task_autodetect.c:172
    params=0x26adb40, task=0x26b74f0) at tasks/task_autodetect.c:252
    params=0x26adb40, task=0x26b74f0) at tasks/task_autodetect.c:393
    at tasks/task_autodetect.c:851
    at libretro-common/queues/task_queue.c:182
    at libretro-common/queues/task_queue.c:609
    at frontend/frontend.c:146
    at frontend/frontend.c:170

Fixes https://github.com/libretro/RetroArch/issues/7893
2019-01-05 16:54:40 -08:00
Brad Parker 85b560e76b vc2003 buildfix 2019-01-05 19:19:53 -05:00
Andrés 714631b38d Discord ask-to-join fixes (#7903)
* C89 Fix

* use strlcat instead

* declare i on top

* declare buf on top
2019-01-05 19:16:28 -05:00
Brad Parker bbfbefa9dd easter egg 2019-01-05 18:33:29 -05:00
Twinaphex f97336ac86 Merge pull request #7900 from casdevel/i7861
Fix issue #7861
2019-01-05 23:05:29 +01:00
orbea 2081346358 Remove duplicate command.h includes. 2019-01-05 13:55:07 -08:00
Twinaphex 90baac517d Merge pull request #7732 from fr500/discord
WIP: Discord ask-to-join
2019-01-05 22:31:21 +01:00
Twinaphex aadc299cc2 Merge pull request #7898 from krzys-h/uwp-gamepads
(UWP) Fix multiple gamepads on xinput
2019-01-05 21:56:24 +01:00
krzys-h fce7ca80c1 (UWP) Fix multiple gamepads on xinput 2019-01-05 21:50:58 +01:00
radius ec53480a66 [discord] let's rewrite this to do the same but different 2019-01-05 15:11:58 -05:00
Twinaphex 95a27bc28e Merge pull request #7896 from fjtrujy/feature/dateImprovement
PS2 Timing Improvement
2019-01-05 19:09:34 +01:00
Francisco Javier Trujillo Mata d5a8c30dfe PS2 Timing Improvement 2019-01-05 18:47:39 +01:00
Twinaphex 6d0b6da60d Merge pull request #7895 from orbea/opt2
Makefile.orbis: Fix makefile.
2019-01-05 17:53:17 +01:00
orbea 1db0a280b0 Makefile.orbis: Fix makefile. 2019-01-05 08:34:59 -08:00
Twinaphex e827c3648f Merge pull request #7772 from orbea/opt
Makefile: Better respect CFLAGS and CXXFLAGS as environment variables.
2019-01-05 17:21:16 +01:00
Twinaphex e70806c51c Merge pull request #7817 from orbea/clear
menu: Reset initial menu position after selecting a core.
2019-01-05 17:17:16 +01:00
Twinaphex 33c777cbfc Merge pull request #7881 from orbea/sort
libretro-common: Sort config file conditionally.
2019-01-05 17:07:59 +01:00
Twinaphex deb5c9b03c Merge pull request #7889 from jdgleaver/rgui-colours-psp-gekko
(RGUI) Fix colours for PSP and GEKKO builds
2019-01-04 18:30:32 +01:00
jdgleaver 1398d889cb (RGUI) Fix colours for PSP and GEKKO builds 2019-01-04 13:41:15 +00:00
natinusala 6cd7c49c66 libnx: add fail-safe to swkbd 2019-01-04 14:37:28 +01:00
Zoran Vuckovic 6def3b36a8 Fix issue #7861 2019-01-04 14:00:19 +01:00
Raphaël Zumer 5cef12160a Ignore trainer data for NES hashing 2019-01-03 21:14:29 -05:00
Twinaphex 74c8c13102 Merge pull request #7882 from Sunderland93/master
[Wayland] Fix drag with "Alt" key on non xdg_wm_base shell's
2019-01-04 02:28:11 +01:00
Twinaphex a5635eff27 Merge pull request #7886 from fjtrujy/feature/colorRefactorRGUI
Improvements RGUI colors management
2019-01-04 02:27:57 +01:00
CozmoP 5012b27853 Merge branch 'master' into modelview 2019-01-04 01:33:30 +01:00
Brad Parker 88d61ddaf3 griffin: vc2005 buildfix 2019-01-03 18:57:00 -05:00
Francisco Javier Trujillo Mata 577456e3e7 Make a struct to save the colors used in the RGUI 2019-01-04 00:38:06 +01:00
Francisco Javier Trujillo Mata cca9bcc09d Make general functions to lead with RGUI colors 2019-01-04 00:38:06 +01:00
orbea 849259d8f6 libretro-common: Sort config file conditionally.
This allows optionally sorting configure files and is needed to fix the
order of inputs in the autoconfig profiles which should not be sorted
alphabetically.

Fixes https://github.com/libretro/RetroArch/issues/7873
2019-01-03 15:28:32 -08:00
Greg V e36bf32490 Wayland: track current output and its scale
Ideally, we would track all outputs we're on and choose the highest DPI among them,
but that is pretty difficult. Let's at least use the latest output we've entered
as the current one.
2019-01-04 01:58:44 +03:00
Greg V 60c8f51009 Wayland: keep track of all outputs (displays)
Required to support multiple monitors with varying scales (HiDPI/LoDPI)
2019-01-04 00:37:02 +03:00
Francisco José García García 433ae4d7fc [ORBIS] Fix for loading content 2019-01-03 21:46:29 +01:00
Greg V 056c7fffe1 Wayland: consistently store wl->width/height unscaled
No functional change
2019-01-03 23:43:36 +03:00
psxdev b695e6a867 [ORBIS] Add my name to the AUTHORS file 2019-01-03 21:23:44 +01:00
psxdev 11186dd5e0 [ORBIS] Workaround weird behaviour with task with bg.png in xmb 2019-01-03 21:23:44 +01:00
psxdev 263d82146c [ORBIS] Fix uncontrolled custoa.inim path for orbis ind dirs.c 2019-01-03 21:23:44 +01:00
psxdev 967bca8f9d [ORBIS] Add partial support for file_path 2019-01-03 21:23:44 +01:00
psxdev 1fd88b865e [ORBIS] Add retro_dirent support 2019-01-03 21:23:44 +01:00
psxdev d52de24e79 [ORBIS] Add support to config save for orbis 2019-01-03 21:23:44 +01:00
psxdev 66ba53c79b [ORBIS] Add vfs implementation for orbis 2019-01-03 21:23:44 +01:00
psxdev 63d61b05ca [ORBIS] Added nbio implementation for orbis 2019-01-03 21:23:44 +01:00
psxdev d0d49aa581 [ORBIS] added orbisFile initialization and standard for host directory structure 2019-01-03 21:23:44 +01:00
psxdev ae0c4bde1e [ORBIS] Limit path legth to avoid calloc issues 2019-01-03 21:23:44 +01:00
psxdev dea948e9ed [ORBIS] Enable ZLIB to avoid null pointer exception 2019-01-03 21:23:44 +01:00
Greg V b7a13a02cb Wayland: use lowercase 'retroarch' as app_id
It should match the name of the .desktop file.
2019-01-03 22:16:55 +03:00
Greg V c151ad1bb2 Wayland: remove bogus condition
Pointy hat: @sardemff7
2019-01-03 22:15:48 +03:00
Sunderland93 d374e8415f Fix drag with "Alt" key on non xdg_wm_base shell's 2019-01-03 22:54:01 +04:00
Francisco Javier Trujillo Mata b5cf8e90c9 Improve aspect_ratio detection in PS2 GFX (#7879) 2019-01-03 12:51:00 -05:00
natinusala a164f77c94 libnx: only use swkbd if in an application 2019-01-03 14:14:13 +01:00
Twinaphex ab2010c494 Update CHANGES.md 2019-01-03 14:12:10 +01:00
Twinaphex d5c524c53e Update CHANGES.md 2019-01-03 14:11:55 +01:00
twinaphex 6f093e8474 Turn C++ comment to C 2019-01-03 14:02:31 +01:00
twinaphex 3c36a27505 Add this 2019-01-03 13:56:41 +01:00
twinaphex 42d5c0037e Create separate platform_uwp.c 2019-01-03 13:55:43 +01:00
twinaphex e53ac5b38b (PS2) platform_ps2.c - style nits 2019-01-03 13:34:12 +01:00
twinaphex 24ef966ca3 (PS2 audio) Style nit changes 2019-01-03 13:26:45 +01:00
Twinaphex 56bf1c53ca Merge pull request #7877 from fjtrujy/feature/PS2AudioSupport
PS2 Audio Support
2019-01-03 13:21:55 +01:00
Francisco Javier Trujillo Mata 56207bd08e Improvement in:
* Makefile.ps2
* ps2_gfx
* ps2_platform
* ps2_audio
2019-01-03 13:16:28 +01:00
Francisco Javier Trujillo Mata e2ca8aa1b5 Apply NTCS mode 2019-01-03 13:16:28 +01:00
Francisco Javier Trujillo Mata 1591bc2db2 Create Audio Driver from PS2 2019-01-03 13:16:27 +01:00
twinaphex 8b0f7051ac (MSVC 2003) Buildfix 2019-01-03 11:45:24 +01:00
twinaphex f1fc622e99 (UWP) - Implement retro_sleep with SleepEx (untested) 2019-01-03 11:40:21 +01:00
Twinaphex 33ecd40d55 Merge pull request #7875 from orbea/animation
menu: Add sublabel for 'menu_horizontal_animation'.
2019-01-03 08:08:04 +01:00
orbea 5fcec0f561 menu: Add sublabel for 'menu_horizontal_animation'.
Fixes https://github.com/libretro/RetroArch/issues/5271.
2019-01-02 20:36:35 -08:00
natinusala 39282915f8 libnx: implement swkbd for menu drivers 2019-01-02 16:24:31 +01:00
Raphaël Zumer 0ebf5a2563 Fall back to GENERIC_MD5 for headerless SNES 2019-01-02 10:16:13 -05:00
meleu 2a9f6d9d40 SNES hashing, just ignore header if it has one 2019-01-02 09:48:55 -05:00
twinaphex 9c5c0aea58 Start replacing WinRT ifdefs so that Windows Phone 8 can be detected
too
2019-01-02 13:30:58 +01:00
Francisco José García García 4204bfc67f [ORBIS] Add Menu toggle combo and some cleaning 2019-01-02 12:13:17 +01:00
twinaphex ff1ca99748 (MSVC 2017 UWP) Buildfix
(MSVC 2017 UWP) Renaming
2019-01-02 07:27:47 +01:00
Raphaël Zumer dc45fbada6 Include VROM in cheevos NES hash 2019-01-01 21:02:28 -05:00
Twinaphex 8f2fa4527c Merge pull request #7849 from krzys-h/fix-7842
Fix the taskbar extension not initializing properly
2019-01-02 02:34:19 +01:00
Twinaphex aa75ae5f04 Update CHANGES.md 2019-01-02 02:26:17 +01:00
Twinaphex 6f7e670609 Merge pull request #7869 from orbea/sdl2
sdl: Flush the joypad events.
2019-01-02 02:24:04 +01:00
orbea 7ac080ea50 sdl: Flush the joypad events.
Bastien found a fix to the issue
"The lag after 10-15 minutes issue appears to be a bug in the sdl2 input
driver in RetroArch. RetroArch never clears the SDL event queue. After a
while it is so large it takes a significant time to traverse."

Fixes https://github.com/libretro/RetroArch/issues/7868

Solution thanks to Bastien.
2019-01-01 17:16:35 -08:00
twinaphex 541dc13d64 We cannot have VLAs 2019-01-02 01:15:30 +01:00
Twinaphex 731ef11e2f Merge pull request #7866 from fr500/master
cleanup
2019-01-01 23:29:37 +01:00
radius b8129a1381 cleanup 2019-01-01 14:34:10 -05:00
Twinaphex e7befaba37 Merge pull request #7864 from fr500/master
[info] use sublabels for controller information
2019-01-01 18:35:58 +01:00
radius 051e5bd262 [gui] add sublabel for start core 2019-01-01 12:35:29 -05:00
radius 88b4ec61e7 [info] use sublabels for controller information 2019-01-01 12:29:20 -05:00
Twinaphex e64f713942 Merge pull request #7860 from krzys-h/uwp
(UWP) Add optional packages support and fix ARM builds
2019-01-01 18:17:37 +01:00
Twinaphex 589d715fbc Merge pull request #7862 from fr500/master
A couple fixes
2019-01-01 18:15:14 +01:00
Twinaphex f635bfa35d Merge pull request #7863 from krzys-h/fix-paths
Fix path problems after b201d669b5, again
2019-01-01 18:14:51 +01:00
krzys-h 54ac14e205 Fix path problems after b201d669b5, again
My previous patch sometimes generated double slashes. All of these
problems are because the original version of this function assumed that
the app path always ends with a slash and the home path never does,
which is not true on UWP (they both have a slash)
2019-01-01 17:53:02 +01:00
krzys-h 9c75b9cb7f Add missing CoUninitialize calls, fix COM initialization problems
It turns out, some of the CoInitialize calls were failing because they
specified conflicting threading models
2019-01-01 17:30:43 +01:00
radius 0a6df1743c [netplay] print upnp failed messages
[cheevos] fix warning
2019-01-01 11:22:58 -05:00
krzys-h 2c4d2418d6 (UWP) Fix ARM builds 2019-01-01 16:21:47 +01:00
krzys-h 48d82929ff (UWP) Add support for loading cores from optional packages 2019-01-01 16:21:47 +01:00
twinaphex 556bcc18e4 Find different ifdef for Windows Phone 2019-01-01 03:57:37 +01:00
twinaphex ac32bff71a (MSVC 2017) Add Glslang 2019-01-01 03:47:55 +01:00
Twinaphex b31e0324a0 Merge pull request #7858 from myfreeweb/freebsd
FreeBSD build fixes for Wayland and udev
2019-01-01 02:38:35 +01:00
Greg V a838582b11 udev: support on FreeBSD via libepoll-shim/libudev-devd 2019-01-01 03:16:33 +03:00
Greg V a1c15b5362 Wayland: try /usr/local for wayland-scanner/protocols
Default prefix is /usr/local on FreeBSD
2019-01-01 03:07:20 +03:00
Greg V f1e516bfaf keymaps: define 'x11' and 'linux' on any platform with Wayland
Such as FreeBSD
2019-01-01 03:03:29 +03:00
Twinaphex 1520f022c5 Merge pull request #7857 from myfreeweb/wayland-hidpi-resize
Wayland: unbreak Vulkan after fixing HiDPI resizing
2019-01-01 00:55:00 +01:00
Greg V a9a53fdb64 Wayland: create fullscreen Vulkan surface multiplied by the scale 2019-01-01 02:43:59 +03:00
Greg V 6d943e10a6 Wayland: unbreak Vulkan after fixing HiDPI resizing 2019-01-01 02:38:14 +03:00
Twinaphex eaef091915 Merge pull request #7855 from myfreeweb/wayland-hidpi-resize
Wayland: Fix window resizing on HiDPI monitors
2019-01-01 00:35:16 +01:00
Twinaphex 2b38e126f4 Merge pull request #7856 from m4xw/1080p
[LIBNX] Native 1080p support
2019-01-01 00:30:43 +01:00
M4xw a2eaa6a19d [LIBNX] Native 1080p support 2019-01-01 00:26:18 +01:00
Greg V c901866864 Wayland: Fix window resizing on HiDPI monitors 2019-01-01 02:23:39 +03:00
twinaphex bb5cd1dfeb Change C++ comments to c 2018-12-31 21:08:25 +01:00
Twinaphex 8ca9797a16 Merge pull request #7850 from orbea/log
cli: Only print verbose output when '--verbose' is used.
2018-12-31 20:40:19 +01:00
Twinaphex c095f8bdd2 Merge pull request #7848 from orbea/mpv
qb: Fix mpv check.
2018-12-31 20:39:20 +01:00
Twinaphex 91e05eab21 Merge pull request #7852 from fjtrujy/master
Buildbot: PS2 Generation
2018-12-31 20:38:38 +01:00
Twinaphex b9c6cdf50f Merge pull request #7853 from Wiimpathy/Wii_fixes
WII: Fix .cfg not found with loaders + compiling with external libogc
2018-12-31 20:38:11 +01:00
benoa d58c71cc3e Fix compiling with external libogc 2018-12-31 19:01:14 +01:00
Francisco Javier Trujillo Mata d44ad6abd4 PS2 TODOs 2018-12-31 18:56:22 +01:00
Francisco Javier Trujillo Mata f7f602c1f7 Dist-cores support PS2 platform 2018-12-31 18:56:21 +01:00
benoa b5eedbaed7 Fix .cfg not found with external loaders. 2018-12-31 18:50:58 +01:00
Francisco José García García 63044b204e [ORBIS] Remove main 2018-12-31 17:45:32 +01:00
orbea c9c604a37a cli: Only print verbose output when '--verbose' is used.
Fixes https://github.com/libretro/RetroArch/issues/7844
2018-12-31 08:35:18 -08:00
Francisco José García García 43b8763fd4 [ORBIS] Enable frontend driver 2018-12-31 14:16:42 +01:00
Francisco José García García 5d8585df84 [ORBIS] Fix audio init 2018-12-31 12:32:21 +01:00
krzys-h 13517bc226 Fix the taskbar extension not initializing properly
The COM interface is initialized a thousand times everywhere, but
apparently not before the taskbar extension is loaded ;)

Somehow this managed to work sometimes and even return a valid object,
but that object was destroyed soon afterwards causing crashes
2018-12-31 11:17:39 +01:00
orbea a7f5fc9431 qb: Fix mpv check.
This fixes the mpv configure check and disables it by default
to avoid exposing other bugs. It can be enabled again when those
isssues are fixed.
2018-12-30 20:04:42 -08:00
twinaphex 99e5791ae4 Style nits 2018-12-31 04:40:10 +01:00
twinaphex 44ebcbd044 Some buildfixes for MSVC 2012 2018-12-31 04:34:55 +01:00
orbea fb6fe1a87c Makefile: Better respect CFLAGS and CXXFLAGS as environment variables.
This fixes a few subtle problems with passing CFLAGS and CXXFLAGS as
environment variables for configure.

First it will now only add these variables to config.mk when they are
actually set. If they are unset then the default optimizations in the
Makefile are set. This avoids passing more than one conflicting
optimization level to the compiler.

Next all CFLAGS are added to CXXFLAGS to avoid issues with forgetting to
set both CFLAGS and CXXFLAGS. This results in the cxx compiler getting
passed several redundant optimization levels when both the CFLAGS and
CXXFLAGS environment variabls are used. Now these uses of CFLAGS in
Makefile.common are set to DEF_FLAGS. This allows adding $(DEF_FLAGS)
to the CXXFLAGS variable without adding redundant flags from CFLAGS.

v2: Update other build files.
2018-12-30 17:17:19 -08:00
twinaphex c6ba5d9ebc (UWP) Start adding some Windows Phone 8.1 ifdefs 2018-12-31 01:38:45 +01:00
Francisco José García García a1e455d197 [ORBIS] Initial audio driver 2018-12-31 00:37:08 +01:00
Francisco José García García ea2ed2fb07 [ORBIS] More input driver changes 2018-12-31 00:14:56 +01:00
Francisco José García García 1b35b75d45 [ORBIS] Fix height / width typo 2018-12-31 00:07:39 +01:00
twinaphex 6b35e8d4f6 (UWP) Implement cpu_features_get_core_amount 2018-12-30 22:13:55 +01:00
Twinaphex 87c13a4f5f Merge pull request #7845 from alfrix/master
Update Spanish
2018-12-30 22:03:56 +01:00
Twinaphex 4a81b66c99 Merge pull request #7846 from fr500/master
update CHANGES.MD with my changes since last release
2018-12-30 22:03:42 +01:00
radius d7a7d8cb59 update CHANGES.MD with my changes since last release 2018-12-30 16:01:09 -05:00
Alfredo Monclus 428011693e Fix msg_hash_us styling 2018-12-30 16:12:34 -03:00
Alfredo Monclus bcdcdbf2c3 Update Spanish 2018-12-30 16:12:34 -03:00
twinaphex aecd532dac UWP needs this to return true for some reason 2018-12-30 20:03:14 +01:00
twinaphex 74f391de9b This fixes all-non Xinput/Xbox pads - they were all non-working
before
2018-12-30 19:55:37 +01:00
Twinaphex 4ae4b6d4d0 Merge pull request #7843 from fr500/drmingw
add drmingw's exchndl support
2018-12-30 19:28:11 +01:00
radius 0b13cba4ea add drmingw's exchndl support 2018-12-30 12:12:55 -05:00
Francisco José García García c56e9b1ff6 [ORBIS] eglSwapInterval workaround 2018-12-30 14:01:10 +01:00
Francisco José García García 4ad083cb97 [ORBIS] Update input driver 2018-12-30 14:00:18 +01:00
twinaphex fc8abd7baf Add header include for printf 2018-12-30 07:53:09 +01:00
twinaphex de6e6a2ef3 Update xaudio29.h 2018-12-30 07:22:08 +01:00
twinaphex 1c010e3622 Change C++ comments to C 2018-12-30 06:38:23 +01:00
twinaphex 815c525bb6 Buildfix for MSVC 2012 2018-12-30 05:21:30 +01:00
twinaphex 1cb9f7c1bf Fix D3D10/11/12 drivers for Win32 build 2018-12-30 05:08:57 +01:00
twinaphex 88e283f0c1 (D3D10/11/12) Some buildfixes 2018-12-30 04:51:03 +01:00
Francisco José García García 9c5a934529 [ORBIS] Untested input driver 2018-12-30 01:29:34 +01:00
Twinaphex 22e54dfc6b Merge pull request #7839 from frangarcj/orbis2
[WIP] ORBIS / PS4 Port
2018-12-30 01:04:50 +01:00
Francisco José García García d34b94a661 [ORBIS] Several EGL and GL fixes 2018-12-30 00:11:53 +01:00
Francisco José García García 167537ac10 [ORBIS] Fix Makefile and enable XMB 2018-12-30 00:10:37 +01:00
Francisco José García García 3aa8d22238 [ORBIS] Fix main 2018-12-30 00:09:44 +01:00
Twinaphex 50fcf4c190 Merge pull request #7837 from krzys-h/uwp
Bugfixes to #7235 - creating swap chain twice in d3d11 and HOME path problems
2018-12-29 16:06:42 +01:00
krzys-h ad782e6eb4 Fix HOME path issues after b201d6 (libretro#7836) 2018-12-29 15:21:18 +01:00
krzys-h 1cb1ea55b1 Bugfix - creating swap chain twice in d3d11
Not sure what I was thinking when writing this

https://github.com/libretro/RetroArch/commit/dd60b5d5764dae20974e1df3dea50e1ccf738205#commitcomment-31801518
2018-12-29 11:38:09 +01:00
twinaphex bddcd2d5e5 Buildfix - include header for prototype definition 2018-12-29 06:04:46 +01:00
twinaphex 118d155360 Buildfix 2018-12-29 04:39:13 +01:00
twinaphex 65cc022c31 Update uwp_main.cpp 2018-12-29 03:20:50 +01:00
twinaphex 34cb50f8da Update MSVC 2017 UWP 2018-12-29 03:06:31 +01:00
twinaphex dd60b5d576 MSVC2017 Non-UWP buildfixes 2018-12-29 02:54:17 +01:00
twinaphex 8f67cf7384 Some buildfixes 2018-12-29 02:20:25 +01:00
twinaphex 0e5fbbb9e1 Silence some warnings 2018-12-29 02:12:50 +01:00
Twinaphex f82b6e07ba Merge pull request #7834 from krzys-h/uwp
UWP and Xbox One port
2018-12-29 01:15:27 +01:00
radius 9aa7b2bd62 [discord] add user avatar to ozone 2018-12-28 17:16:17 -05:00
radius 3cedc83bfa [discord] cleanup, add helper functions 2018-12-28 17:16:16 -05:00
radius c2e3b5bfbf [discord] do not toggle menu 2018-12-28 17:16:16 -05:00
radius 69d020e16d [discord] disable confirmation dialog because in-game widgets will never happen
see:
https://github.com/libretro/RetroArch/issues/4572
2018-12-28 17:16:15 -05:00
radius f909f98e1a [discord] download our own avatar to use in-menu 2018-12-28 17:16:15 -05:00
radius 87c99a491b [discord] make the avatar download code a function instead of this mess 2018-12-28 17:16:15 -05:00
radius a6e6ccc244 [discord] **not-working** download the connecting user avatar seems something special needs to be done for https transfers on windows at least
see: https://github.com/libretro/RetroArch/issues/7451
2018-12-28 17:16:14 -05:00
radius 583273d81b [discord] show connection confirmation dialog 2018-12-28 17:16:14 -05:00
radius 325d85ed4b [discord] nasty hack to register the application with the current runtime args
basically saves the whole argv string to reuse it on game launch

Not working due to:
https://github.com/discordapp/discord-rpc/issues/240
https://github.com/discordapp/discord-rpc/issues/163
2018-12-28 17:16:14 -05:00
radius d4b8e1c4fd [discord] add more logging, fix partyId, for some reason this strdup is required for linux hosts 2018-12-28 17:16:13 -05:00
radius 9c4b307dcb Update Discord RPC
Squashed 'deps/discord-rpc/' changes from ba9fe00c4d..7716eadca3

7716eadca3 Update D binding link (#234)
e32d001809 readme nits
2cb9813eb6 Unity specific DLL setup
af380116a0 Check C# strings against UTF8 bytes instead of clamping (#221)
3d3ae7129d Fix mismatched signs in comparison after b44defe (#209)
b44defe60a [Linux] Null-terminate output from readlink in Discord_Register. (#208)
dfad394be0 Added enum for response codes (#207)
a3ad6afee2 Added Discord RPC C# implementation to list. (#205)
7c41a8ec19 Fixed issue with Discord RPC not updating presence during shutdown (#189)
5df1c5ae6d copy the whole folder UE4
c05c7148dd Updated README with UE plugin instructions (#183)

git-subtree-dir: deps/discord-rpc
git-subtree-split: 7716eadca31a0d556f9d71fb610943b203470533
2018-12-28 17:16:13 -05:00
krzys-h 4fb06703b3 Port d3d12 driver for UWP 2018-12-28 22:10:26 +01:00
krzys-h f6c8a0c5c2 Add UWP input driver
Keyboard, mouse and touch support: done
2018-12-28 22:09:30 +01:00
krzys-h cc686ba9bc Upgrade XAudio2 headers
XAudio 2.7 was part of the old DirectX SDKs. XAudio 2.8+ is part of the
Windows OS itself (starting from Windows 8). Since UWP lets you access
only libraries that are built-in to the OS, the headers had to be
upgraded to the newer version to get audio support working.
2018-12-28 22:09:30 +01:00
krzys-h 6038060cd7 Update appx manifest and icons
These were generated using Visual Studio icon generation tools
2018-12-28 22:09:29 +01:00
krzys-h b201d669b5 First iteration of UWP support
Enough to kind of run

Working drivers: xinput, d3d11
Still missing: input driver with keyboard support, audio driver
2018-12-28 22:09:22 +01:00
Twinaphex 671b49afcd Merge pull request #7833 from orbea/ffmpeg
qb: Only print threading warning when ffmpeg is not disabled.
2018-12-28 21:09:15 +01:00
Twinaphex 055f880775 Merge pull request #7832 from orbea/lua2
qb: Disable the builtin lua by default.
2018-12-28 21:09:05 +01:00
waitingmoon 9872111dbc Update msg_hash_ja.h (#7831) 2018-12-28 15:06:52 -05:00
orbea 1e513598d3 qb: Only print threading warning when ffmpeg is not disabled. 2018-12-28 11:51:27 -08:00
orbea 465b3e5774 qb: Disable the builtin lua by default.
Disables the builtin lua as it causes the mpv core to segfault and
doesn't do anything yet.
2018-12-28 10:32:02 -08:00
Francisco José García García 912060fc4b [ORBIS] Use SceWindow 2018-12-28 11:19:28 +01:00
Francisco José García García 48167d46bc [ORBIS] Initial video context driver 2018-12-28 01:27:13 +01:00
Twinaphex d8468c5d8c Merge pull request #7829 from orbea/screenshot
Fix png file names for screenshots with contentless cores.
2018-12-28 00:35:18 +01:00
orbea 06d0a19e95 Fix png file names for screenshots with contentless cores.
For contentless cores like 2048 and the retropad RetroArch will save png
files with the content field missing.

  -181227-133151.png

Now RetroArch will save png files with the correct names for contentless
cores.

  2048-181227-133151.png
  RetroPad Remote-181227-133202.png

Cores with content will have no change in behavior.

  Akumajou Dracula (J)-181227-133232.png

And with cores that support content and no content such as 4DO both
variations will work.

  4DO-181227-144102.png
  LuciennesQuest-181227-144118.png

Fixes https://github.com/libretro/RetroArch/issues/7828
2018-12-27 14:50:09 -08:00
Francisco José García García 19549ddccf [ORBIS] Fix __assert 2018-12-27 20:18:53 +01:00
Francisco José García García f02ef2e0c6 [ORBIS] Initial Platform driver + minor changes 2018-12-27 20:17:48 +01:00
Francisco José García García 39343f99a7 [ORBIS] Add Makefile 2018-12-27 20:16:43 +01:00
Twinaphex 3548956509 Merge pull request #7827 from orbea/kiosk
menu: Hide options for the kiosk menu.
2018-12-26 19:10:41 +01:00
Twinaphex 8cee39bbd3 Merge pull request #7826 from orbea/archive
menu: Hide 'Parent Directory' in compressed archives.
2018-12-26 19:10:18 +01:00
orbea b84b1b083a menu: Hide options for the kiosk menu.
This hides 'reset core association', 'start recording' and
'start streaming' when the kiosk menu is active.

Fixes https://github.com/libretro/RetroArch/issues/7824
Fixes https://github.com/libretro/RetroArch/issues/7825
2018-12-26 09:40:42 -08:00
orbea ff63852a7c menu: Hide 'Parent Directory' in compressed archives.
When browsing compressed archives 'Parent Directory' will not work and
will endlessly recurse into non-existent empty directories where the
user will have to press the back button to get out of every instance.

This will now hide 'Parent Directory' in compressed archives to avoid
this issue. The user will still be able to press the back button to
exit.

Fixes https://github.com/libretro/RetroArch/issues/2604
2018-12-26 09:19:03 -08:00
Twinaphex 16c56eb9f3 Merge pull request #7823 from fjtrujy/feature/ps2Support
PS2 Support QuickNes
2018-12-26 18:00:23 +01:00
Francisco Javier Trujillo Mata 9ec293bb5b Including fjtrujy in the list of Authors ;) 2018-12-26 14:26:46 +01:00
Francisco Javier Trujillo Mata 0224bf22b2 Add release option in the Makefile.ps2 2018-12-26 14:17:25 +01:00
Francisco Javier Trujillo Mata 38397370e6 Apply proper color correction for 16 bits 2018-12-26 14:17:25 +01:00
Francisco Javier Trujillo Mata 69ad3273b9 Disable use of setvbuf for the PS2 2018-12-26 14:17:25 +01:00
Francisco Javier Trujillo Mata 5b7a71abd3 Make logs work for the PS2 2018-12-26 14:17:25 +01:00
Francisco Javier Trujillo Mata 282e688ee6 Cleaning not needed libraries for the PS2 2018-12-26 14:17:25 +01:00
Francisco Javier Trujillo Mata 40b028ebce Replace malloc for calloc in the ps2_gfx 2018-12-26 13:48:48 +01:00
Francisco Javier Trujillo Mata 90ba2df972 Put proper license in the files for the PS2 development 2018-12-26 13:48:48 +01:00
Twinaphex 1b94483078 Merge pull request #7819 from orbea/patch
cli: Fix the --no-patch argument.
2018-12-26 04:46:32 +01:00
Twinaphex 8845b674fd Merge pull request #7821 from fr500/master
try to fix #7811
2018-12-26 04:46:05 +01:00
Twinaphex 5e1ec17742 Merge pull request #7804 from fr500/fixes
reset on hardcore enable
2018-12-26 04:45:43 +01:00
radius 6e25978be5 try to fix #7811 2018-12-25 20:23:56 -05:00
radius bcfa332be9 stop litering emmmc for temporary files 2018-12-25 20:18:19 -05:00
meepingsnesroms a6f097c873 Buttons are only 16 bits so only use uint16_t to prevent wasting 6 bytes 2018-12-25 14:33:43 -08:00
orbea 80ed61f257 cli: Fix the --no-patch argument.
Fixes https://github.com/libretro/RetroArch/issues/5885

First bad commit:
  https://github.com/libretro/RetroArch/commit/d28c138d09922f5458c8ee86a049aa3a961d0262
2018-12-25 13:12:59 -08:00
Jean-André Santoni fcf75fda17 Merge pull request #7675 from natinusala/lakka-restart
Lakka: rename Quit RetroArch to Restart RetroArch (english & french)
2018-12-26 00:10:01 +07:00
orbea 7e2aafa382 menu: Reset initial menu position after selecting a core.
Fixes https://github.com/libretro/RetroArch/issues/2506 (Again)

v2: Only reset the menu posiition after selecting a core and not when
    just toggling the menu.
2018-12-24 22:45:19 -08:00
Twinaphex c9a0b8c42d Merge pull request #7815 from orbea/glui
materialui: Move 'Start Core' before 'Load Core'.
2018-12-25 03:14:08 +01:00
orbea 476abf7dad materialui: Move 'Start Core' before 'Load Core'.
This matches other menu drivers better where its already like this in
rgui, xmb and ozone.
2018-12-24 15:32:24 -08:00
Twinaphex 3ad6ca75cc Merge pull request #7814 from fr500/master
allow playing video from http/https sources
2018-12-24 12:39:30 +01:00
radius abc31fa092 allow playing video from http/https sources 2018-12-24 00:49:19 -05:00
twinaphex 374384128c Revert "(D3D8/D3D9) Buildfixes"
This reverts commit 992d221af9.
2018-12-24 03:34:58 +01:00
Twinaphex 4bd5e23601 Merge pull request #7812 from libretro/revert-7807-fix-2791-black-bug
Revert "Fix issue #2791 black bug"
2018-12-24 03:33:28 +01:00
Twinaphex 1aee59f9f4 Revert "Fix issue #2791 black bug" 2018-12-24 03:33:18 +01:00
twinaphex 992d221af9 (D3D8/D3D9) Buildfixes 2018-12-24 03:31:01 +01:00
Twinaphex 740cf4034e Merge pull request #7810 from fr500/master
fix #935 thanks to @bparker
2018-12-24 01:58:53 +01:00
radius d2a2878b2c fix #935 thanks to @bparker 2018-12-23 19:55:26 -05:00
Twinaphex 8c4587d83a Merge pull request #7808 from orbea/assets
Makefile: Install assets only for enabled menus.
2018-12-24 00:37:03 +01:00
Twinaphex 5d0e430c23 Merge pull request #7807 from daliaetnano/fix-2791-black-bug
Fix issue #2791 black bug
2018-12-24 00:36:50 +01:00
Twinaphex 30fc94ae19 Merge pull request #7809 from orbea/ozone
ozone: Fix crash with menu_use_preferred_system_color_theme.
2018-12-24 00:35:23 +01:00
radius 90d816f31a reset on toggle everytime 2018-12-23 16:24:18 -05:00
orbea d51b801221 ozone: Fix crash with menu_use_preferred_system_color_theme.
Fixes https://github.com/libretro/RetroArch/issues/7805
2018-12-23 11:41:43 -08:00
orbea c079a2f953 Makefile: Install assets only for enabled menus.
Currently RetroArch will install assets for xmb, materialui and ozone
unconditionally.

This change will now only install assets when RetroArch is compiled
with support for the relevant menu driver. This also exposes assets
from the nuklear and zarch menu drivers which are still disabled by
default.
2018-12-23 09:55:05 -08:00
Nano 770bd52411 Fix issue #2791 black bug 2018-12-23 18:31:21 +01:00
Twinaphex 80371728e1 Merge pull request #7806 from langerhans/phoenix-gradle
Android: Implement Gradle build for easy debugging
2018-12-23 18:31:07 +01:00
langerhansandnatinusala 3c5a391c9e Android: Implement Gradle build for easy debugging
Adds a CoreSideLoadingActivity to sideload cores for debugging purposes.
Adds instructions on how to debug both the RetroArch frontend and cores from within Android Studio

Co-authored-by: natinusala <[email protected]>
2018-12-23 18:02:38 +01:00
radius 6eae0df010 reset on hardcore enable 2018-12-23 11:16:55 -05:00
Twinaphex 0d7cb7edc2 Merge pull request #7801 from markwkidd/patch-6
Update theme selection sublabel in msg_hash_us.h
2018-12-23 16:53:51 +01:00
markwkidd 2675fa26c0 Update theme selection sublabel in msg_hash_us.h
This PR updates the sub-label for the Menu Icon Theme in order to:
  1. remove the outdated instruction to restart RA
  2. reflect that the theme setting controls more than just icons
2018-12-23 10:16:18 -05:00
Twinaphex c46e3468e2 Merge pull request #7796 from orbea/xmb
xmb: Don't show a black background without assets.
2018-12-23 13:39:33 +01:00
Twinaphex 0f06734d0a Merge pull request #7799 from fr500/master
fix #7002
2018-12-23 11:35:57 +01:00
CozmoP ab9c235cfa Qt: Initialize m_thumbnailType. 2018-12-23 02:59:42 +01:00
radius 0b8e39dd6b fix #7002 2018-12-22 20:36:42 -05:00
CozmoP e484f30af6 revert commit e981afcca8 2018-12-23 01:10:04 +01:00
CozmoP 6382bc48c3 Merge branch 'master' into modelview 2018-12-23 00:55:12 +01:00
orbea 45c85aa6fe xmb: Don't show a black background without assets.
This also now only hides the time icon instead of the entire time
without assets.

Fixes https://github.com/libretro/RetroArch/issues/7795
2018-12-22 15:51:43 -08:00
CozmoP e0c01d658d Revert "Qt: Implement custom playlist model and grid view."
This reverts commit 240856f19c.
2018-12-23 00:46:44 +01:00
CozmoP ca9952ceef Qt: make grid view customizable by stylesheet 2018-12-23 00:45:00 +01:00
Twinaphex e3235eeef4 Merge pull request #7785 from orbea/ozone
Makefile: Install ozone assets.
2018-12-22 19:45:46 +01:00
Twinaphex 456b891994 Merge pull request #7788 from orbea/quotes
qb: Minor cleanup.
2018-12-22 19:45:37 +01:00
Twinaphex f353feba8a Merge pull request #7789 from jdgleaver/buff-size-fix
Fix gcc -Wformat-truncation= warning (redux)
2018-12-22 19:45:24 +01:00
Twinaphex 326395ff17 Merge pull request #7794 from orbea/load
menu: Reset position after pushing quick menu.
2018-12-22 19:45:08 +01:00
Twinaphex 1df95bb28b Merge pull request #7793 from fr500/fixes
move core sideloading to load core menu
2018-12-22 19:44:45 +01:00
orbea 4da7092aff menu: Reset position after pushing quick menu.
Fixes:
  https://github.com/libretro/RetroArch/issues/5595
  https://github.com/libretro/RetroArch/issues/2506
2018-12-21 18:43:14 -08:00
radius c70e322496 cleanup 2018-12-21 18:19:48 -05:00
radius 09deb96397 move core sideloading to load core menu 2018-12-21 18:17:17 -05:00
orbea 0c01e35c2b Makefile: Install ozone assets.
v2: Remove extra mkdir commands.
2018-12-21 09:02:56 -08:00
orbea 7e4723e37a qb: Minor cleanup.
This uses safer quoting and removes an unneeded use of printf.

Fixes the following shellcheck warning.

In qb/qb.libs.sh line 143:
	if [ $3 ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.

v2: Remove redundant conditional.
2018-12-21 08:32:01 -08:00
jdgleaver c2d4b70f8c menu_displaylist_parse_options_remappings(): increase buffer sizes, remove string precision qualifier (alternative to PR #7782) 2018-12-21 16:12:20 +00:00
Twinaphex b55ed9e3ce Merge pull request #7783 from theheroGAC/patch-40
Update msg_hash_it.h
2018-12-21 15:25:34 +01:00
Twinaphex c3f2c49e84 Merge pull request #7784 from orbea/dir
menu: Use the default dir for recording output when unset.
2018-12-21 15:25:28 +01:00
Twinaphex 7ec32337b5 Merge pull request #7786 from orbea/version
Remove some hardcoded version strings.
2018-12-21 15:25:18 +01:00
Twinaphex e239a46800 Merge pull request #7787 from ensra/netbsd-audio
Add an AudioIO dirver for NetBSD and Solaris.
2018-12-21 15:24:55 +01:00
nia 1721bd07c4 Use the correct message when printing macro tests. 2018-12-21 14:23:13 +00:00
nia 3ef9bbb592 Add an AudioIO dirver for NetBSD and Solaris. 2018-12-21 14:15:30 +00:00
orbea 6c4f0be0a5 Remove some hardcoded version strings. 2018-12-20 22:13:19 -08:00
orbea 2ab78dc67b menu: Use the default dir for recording output when unset. 2018-12-20 16:13:10 -08:00
theheroGAC 970e3515b1 Update msg_hash_it.h 2018-12-20 23:08:04 +01:00
Twinaphex 1d3874a142 Merge pull request #7779 from jdgleaver/rgui-colours
(RGUI) Enable customisation of background and border colours
2018-12-20 20:51:12 +01:00
Twinaphex 3bd1c3fa6a Merge pull request #7782 from orbea/format
Fix gcc -Wformat-truncation= warning.
2018-12-20 20:49:37 +01:00
Twinaphex e9e917ab29 Merge pull request #7781 from orbea/c89
Makefile.common: Remove redundant conditionals.
2018-12-20 20:48:58 +01:00
Twinaphex 1532b75d26 Merge pull request #7780 from orbea/dir
menu: Fix directory settings.
2018-12-20 20:48:19 +01:00
orbea e6eedd05f5 Fix gcc -Wformat-truncation= warning.
menu/menu_displaylist.c: In function ‘menu_displaylist_ctl’:
menu/menu_displaylist.c:3441:28: warning: ‘ [’ directive output may be truncated writing 2 bytes into a region of size between 1 and 255 [-Wformat-truncation=]
                         "%s [%s %u]", descriptor, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), p + 1);
                            ^~
menu/menu_displaylist.c:3441:25: note: using the range [0, 4294967295] for directive argument
                         "%s [%s %u]", descriptor, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), p + 1);
                         ^~~~~~~~~~~~
menu/menu_displaylist.c:3440:16: note: ‘snprintf’ output 6 or more bytes (assuming 260) into a destination of size 255
                snprintf(desc_label, sizeof(desc_label),
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                         "%s [%s %u]", descriptor, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), p + 1);
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-12-20 11:45:48 -08:00
orbea 5175c67381 menu: Fix directory settings.
The "Recording Output" and "Screenshot" directory settings accidentally
overwrote each other.

Fixes https://github.com/libretro/RetroArch/issues/7776
2018-12-20 11:13:28 -08:00
orbea 066bbd1a29 Makefile.common: Remove redundant conditionals.
C89 builds are only used for the qb build system currently and these are
already checked in qb/config.params.sh.

Additionally the HAVE_NETWORKING check is handled with qb/config.lib.sh
where HAVE_SSL and HAVE_BUILTINMBEDTLS are disabled if networking is
also disabled. The other build systems should never define HAVE_SSL or
HAVE_BUILTINMBEDTLS without HAVE_NETWORKING. Also there are no other
build systems that rely on Makefile.common using this yet.
2018-12-20 10:49:23 -08:00
jdgleaver f603d4ec30 (RGUI) Enable customisation of background and border colours 2018-12-20 16:13:16 +00:00
Brad Parker d41bb64d17 remove unused code 2018-12-20 09:00:48 -05:00
Twinaphex a0a22a044a Merge pull request #7773 from orbea/comment
Makefile.ctr: Add missing comment.
2018-12-20 13:58:36 +01:00
Twinaphex 4f270449f9 Merge pull request #7774 from bparker06/hold_start
add option to toggle menu by holding down start button
2018-12-20 13:58:18 +01:00
CozmoP 7bb23d15bd Fix last commit and a couple style changes. 2018-12-19 21:28:11 +01:00
Brad Parker 458bb9fbb5 add option to toggle menu by holding down start button 2018-12-19 14:53:17 -05:00
orbea 2c09a6f37b Makefile.ctr: Add missing comment. 2018-12-19 11:27:10 -08:00
Brad Parker fd93e5e26e Update CHANGES.md 2018-12-19 12:04:11 -05:00
Twinaphex 26568a6bc2 Merge pull request #7770 from jdgleaver/rgui-user-index
(RGUI) Add user index label to control menu entries
2018-12-19 17:47:53 +01:00
Twinaphex a7bb1e60aa Merge pull request #7771 from libretro/sgc-menu-animation
Animations deleted whilst in update loop may cause crash
2018-12-19 17:45:58 +01:00
jdgleaver f68d756af3 (RGUI) Add user index label to control menu entries 2018-12-19 12:19:29 +00:00
CozmoP a396008bf6 Qt: More C89 changes. 2018-12-19 08:57:00 +01:00
Twinaphex 7835d0c54c Merge pull request #7745 from orbea/mbedtls
Support building with the system mbedtls.
2018-12-19 01:53:14 +01:00
Twinaphex 0b0a21b742 Merge pull request #7768 from jdgleaver/3ds-named-inputs
(3DS) Add joypad input labels
2018-12-19 01:21:05 +01:00
Stuart Carnie 11a7d34358 fix: animations deleted during update mutate tween list, causing crash
defer deletes resulting from callbacks until after update loop
2018-12-18 17:12:19 -07:00
CozmoP 95ed844d81 Qt: C89 changes and other cleanups. 2018-12-19 01:11:52 +01:00
jdgleaver 37acbd1ecf (3DS) Add joypad input labels 2018-12-18 16:30:05 +00:00
Twinaphex 22fcd0be67 Merge pull request #7762 from orbea/rgui
Fix gcc -Wformat-truncation= warnings.
2018-12-18 10:12:50 +01:00
Brad Parker d6741651b7 net_socket_ssl: keep reading data from server until finished, fixes #7451 2018-12-18 03:01:52 -05:00
Twinaphex c565bb1b0b Merge pull request #7763 from bparker06/sideload_vfs
use filestream/VFS for core sideload
2018-12-17 21:40:32 +01:00
Brad Parker 4b323a45df paths can be const 2018-12-17 09:38:12 -05:00
Brad Parker 971591fb9c use filestream/VFS for core sideload 2018-12-17 09:25:52 -05:00
orbea 13e29308d5 Fix gcc -Wformat-truncation= warnings.
menu/drivers/rgui.c: In function ‘rgui_render’:
menu/drivers/rgui.c:670:53: warning: ‘%-*s’ directive output may be truncated writing up to 2147483648 bytes into a region of size between 0 and 252 [-Wformat-truncation=]
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
                                                     ^~~~
menu/drivers/rgui.c:676:13:
             type_str_buf);
             ~~~~~~~~~~~~
menu/drivers/rgui.c:670:42: note: assuming directive output of 254 bytes
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
                                          ^~~~~~~~~~~~~~~~
menu/drivers/rgui.c:670:7: note: ‘snprintf’ output between 4 and 4294967300 bytes into a destination of size 255
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             entry_selected ? '>' : ' ',
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
             (int)(RGUI_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len),
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             (int)(RGUI_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len),
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             entry_title_buf,
             ~~~~~~~~~~~~~~~~
             entry_spacing,
             ~~~~~~~~~~~~~~
             type_str_buf);
             ~~~~~~~~~~~~~
menu/drivers/rgui.c:670:53: warning: ‘%-*s’ directive output may be truncated writing up to 2147483648 bytes into a region of size between 0 and 252 [-Wformat-truncation=]
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
                                                     ^~~~
menu/drivers/rgui.c:676:13:
             type_str_buf);
             ~~~~~~~~~~~~
menu/drivers/rgui.c:670:42: note: assuming directive output of 254 bytes
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
                                          ^~~~~~~~~~~~~~~~
menu/drivers/rgui.c:670:7: note: ‘snprintf’ output between 4 and 4294967300 bytes into a destination of size 255
       snprintf(message, sizeof(message), "%c %-*.*s %-*s",
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             entry_selected ? '>' : ' ',
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
             (int)(RGUI_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len),
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             (int)(RGUI_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len),
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             entry_title_buf,
             ~~~~~~~~~~~~~~~~
             entry_spacing,
             ~~~~~~~~~~~~~~
             type_str_buf);
             ~~~~~~~~~~~~~
2018-12-16 20:22:53 -08:00
Twinaphex af0bf7a992 Merge pull request #7761 from orbea/c89
Fix gcc warnings with C89_BUILD.
2018-12-17 05:18:13 +01:00
Twinaphex 6dcdb843e8 Merge pull request #7758 from fr500/sideload
Sideload
2018-12-17 05:15:41 +01:00
orbea d557ab09ce Fix a gcc -Wformat= warning with C89_BUILD.
network/netplay/netplay_frontend.c: In function ‘netplay_announce_cb’:
network/netplay/netplay_frontend.c:734:32: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 3 has type ‘int *’ [-Wformat=]
                sscanf(val, "%08X", &host_room->gamecrc);
                             ~~~^   ~~~~~~~~~~~~~~~~~~~
                             %08X
2018-12-16 19:59:53 -08:00
orbea 14905e33e1 Fix more gcc -Wformat= warnings with C89_BUILD.
The "z" modifier was introduced in c99, but using "l" instead
seems to work.

setting_list.c: In function ‘setting_get_string_representation_size’:
setting_list.c:175:24: warning: ISO C90 does not support the ‘z’ gnu_printf length modifier [-Wformat=]
       snprintf(s, len, "%" PRI_SIZET,
                        ^~~
setting_list.c: In function ‘setting_get_string_representation_size_in_mb’:
setting_list.c:183:24: warning: ISO C90 does not support the ‘z’ gnu_printf length modifier [-Wformat=]
       snprintf(s, len, "%" PRI_SIZET,
                        ^~~
setting_list.c: In function ‘setting_set_with_string_representation’:
setting_list.c:508:24: warning: ISO C90 does not support the ‘z’ gnu_scanf length modifier [-Wformat=]
          sscanf(value, "%" PRI_SIZET, setting->value.target.sizet);
                        ^~~

libretro-common/file/config_file.c: In function ‘config_get_size_t’:
libretro-common/file/config_file.c:692:32: warning: ISO C90 does not support the ‘z’ gnu_scanf length modifier [-Wformat=]
       if (sscanf(entry->value, "%" PRI_SIZET, &val) == 1
2018-12-16 19:59:50 -08:00
orbea 169002ef7f Fix a gcc -Wformat= warning with C89_BUILD.
The posix spec claims "%r" is equivelent to "%I : %M : %S %p".

Source: http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html

menu/menu_driver.c:395:15: warning: ISO C90 does not support the ‘%r’ gnu_strftime format [-Wformat=]
             "%r", localtime(&time_));
               ^
2018-12-16 19:59:47 -08:00
orbea 30e5f1dfef Fix gcc -Wformat warnings with C89_BUILD.
gfx/display_servers/dispserv_x11.c: In function ‘x11_display_server_set_resolution’:
gfx/display_servers/dispserv_x11.c:221:76: warning: ISO C90 does not support the ‘%lf’ gnu_printf format [-Wformat=]
       snprintf(xrandr, sizeof(xrandr), "xrandr --newmode \"%dx%d_%0.2f\" %lf %d %d %d %d %d %d %d %d -hsync -vsync", width, height, hz, pixel_clock,
                                                                            ^
gfx/display_servers/dispserv_x11.c:228:76: warning: ISO C90 does not support the ‘%lf’ gnu_printf format [-Wformat=]
       snprintf(xrandr, sizeof(xrandr), "xrandr --newmode \"%dx%d_%0.2f\" %lf %d %d %d %d %d %d %d %d interlace -hsync -vsync", width, height, hz, pixel_clock,
                                                                            ^
2018-12-16 19:15:45 -08:00
Twinaphex 26cb223852 Merge pull request #7760 from orbea/clang
Fix warnings with clang.
2018-12-17 01:54:13 +01:00
orbea 47666fb4a8 Fix clang -Wuninitialized warning.
dynamic.c:188:26: warning: variable 'i' is uninitialized when used here [-Wuninitialized]
         unsigned size = i;
                         ^
dynamic.c:187:20: note: initialize the variable 'i' to silence this warning
         unsigned i, j;
                   ^
                    = 0
1 warning generated.
2018-12-16 16:28:37 -08:00
Twinaphex 9feeaecb12 Merge pull request #7759 from grant2258/mouse
use none zero as requested for udev mouse
2018-12-17 01:25:32 +01:00
orbea 4bc0aacd8b Fix clang -Wreorder warnings.
gfx/drivers_shader/shader_vulkan.cpp:1109:6: warning: field 'id' will be initialized after field 'device' [-Wreorder]
   : id(move(id)),
     ^
gfx/drivers_shader/shader_vulkan.cpp:2107:4: warning: field 'device' will be initialized after field 'memory_properties' [-Wreorder]
   device(device),
   ^
2 warnings generated.
2018-12-16 16:16:07 -08:00
grant2258 3a0c27e753 use none zero as requested 2018-12-17 00:07:00 +00:00
twinaphex 862a4e099b Duplicate entry removed 2018-12-17 00:07:35 +01:00
Twinaphex fbb095cc06 Merge pull request #7730 from grant2258/mouse
fix udev mouse
2018-12-16 23:17:06 +01:00
radius 6c936274b7 make file copy operation a function
add sublabels

improve localization
2018-12-16 16:55:12 -05:00
grant2258 74de0ade03 resolve changes 2018-12-16 20:52:15 +00:00
Twinaphex 708c9c0774 Merge pull request #7754 from orbea/c89
Fix C89 build with clang.
2018-12-16 19:47:17 +01:00
Twinaphex fc6b3b7335 Merge pull request #7755 from fr500/fixes
subsystem: remember last used folder
2018-12-16 19:46:01 +01:00
radius 16d1cf28f7 only show with advanced options and on dynamic platforms 2018-12-16 12:42:10 -05:00
radius bfd23150b5 add core sideloading option 2018-12-16 12:42:09 -05:00
radius 319124c7a0 subsystem: remember last used folder 2018-12-16 12:33:27 -05:00
orbea d40da6aca3 Fix c89 'keyword is hidden by macro definition' with clang. 2018-12-16 08:01:03 -08:00
orbea 6e95a62fdf Fix c89 build with clang. 2018-12-16 07:02:14 -08:00
Twinaphex c0ea6e7574 Merge pull request #7753 from orbea/c89
Fix c89 build.
2018-12-16 07:53:05 +01:00
orbea f4a5c3bd55 Fix c89 build. 2018-12-15 21:03:28 -08:00
Twinaphex 94d5457106 Merge pull request #7752 from orbea/typo
qb: Fix typo.
2018-12-16 05:39:52 +01:00
orbea e0c634cd76 qb: Fix typo. 2018-12-15 19:02:36 -08:00
Twinaphex 72f32b702f Merge pull request #7751 from orbea/c89
Fix c89 incompatible comments.
2018-12-16 04:00:34 +01:00
orbea 7c50dfb397 Fix c89 incompatible comments. 2018-12-15 18:55:21 -08:00
CozmoP f5840ae6f2 Qt: Don't sort history playlist. Declare variables at top. 2018-12-16 01:20:11 +01:00
Twinaphex 3b33edd49e Merge pull request #7750 from libretro/sgc-memory-fixes
fix: Fix use of freed memory in menu animations
2018-12-15 23:01:18 +01:00
Stuart Carnie c00b6e0750 fix: Fix use of freed memory in menu animations
`menu_animation_update` enumerates `menu_animation.list` to process each
`tween`. It was observed that some tweens execute a callback that
pushes more animations via `menu_animation_push`. During the push, if
the tween `list` does not have enough space, a `realloc` occurs,
potentially invalidating the existing list. The remaining pointer access
in menu_animation_update is therefore invalid. Best case is the memory
is unused and thus does not affect the program. Worst case is memory
corruption.
2018-12-15 14:55:10 -07:00
orbea dc020f2569 qb: Support building with the system mbedtls.
Fixes https://github.com/libretro/RetroArch/issues/7639

v2: Fix build failures with griffin.
2018-12-15 09:10:43 -08:00
Twinaphex 90abb7846a Merge pull request #7740 from orbea/hide
menu: Add 'Show Start Recording' and 'Show Start Streaming'.
2018-12-15 18:09:10 +01:00
Twinaphex d55a27f380 Merge pull request #7742 from markwkidd/patch-5
add libretro-db docs for consolidating DATs
2018-12-15 18:08:57 +01:00
Twinaphex 9c9d1741b5 Merge pull request #7743 from orbea/c89
Fix c89 build.
2018-12-15 18:08:48 +01:00
orbea 9be245ad75 qb: Extend check_header.
Now the check_header function can test any number of header files
instead of only four.
2018-12-14 19:16:20 -08:00
orbea 2ea6d5a060 Fix c89 build. 2018-12-14 15:41:52 -08:00
CozmoP b6f36fcf40 Qt: enable table sorting and hide vertical header 2018-12-14 23:33:42 +01:00
CozmoP 20900463f4 Qt: fix crash when switching playlists 2018-12-14 23:33:42 +01:00
Pau López 240856f19c Qt: Implement custom playlist model and grid view.
Only load images when they become visible and cache them.
Add option to change thumbnail type displayed in grid view.
Add option to change thumbnail cache limit.
2018-12-14 23:33:41 +01:00
markwkidd 638ab39dfb add libretro-db docs for consolidating DATs 2018-12-14 14:08:32 -05:00
orbea 2646e49eb4 menu: Add 'Show Start Recording' and 'Show Start Streaming'.
Fixes https://github.com/libretro/RetroArch/issues/7739

These options are located at:

  Settings -> User Interface -> Views -> Quick Menu -> Show Start Recording

and

  Settings -> User Interface -> Views -> Quick Menu -> Show Start Streaming

The quick menu options 'Stop Recording' and 'Stop Streaming' are
intentionally not hidden to prevent users from silently recording or
streaming without realizing.
2018-12-13 18:40:32 -08:00
CozmoP 7b9c094052 Merge branch 'master' into modelview 2018-12-12 21:38:32 +01:00
Pau López a868ef29e8 Qt: Implement custom playlist model and grid view.
Only load images when they become visible and cache them.
Add option to change thumbnail type displayed in grid view.
Add option to change thumbnail cache limit.
2018-12-12 21:06:04 +01:00
grant2258 fd6856ce20 fix tpouchpad as well 2018-12-12 18:27:29 +00:00
grant2258 1d8dd133b7 tidy code up 2018-12-12 17:29:31 +00:00
Twinaphex bd2fb04a47 Merge pull request #7735 from Themaister/master
Vulkan: Fix potential crash when toggling fullscreen.
2018-12-12 15:36:05 +01:00
Themaister 077b108aa1 Vulkan: Fix potential crash when toggling fullscreen.
If we have HW rendering, and we toggle fullscreen while in the menu, we
don't have a ready HW image, so fall back to black dummy texture.
2018-12-12 13:28:46 +01:00
Twinaphex ac536cd28c Merge pull request #7731 from fr500/fixes
fix fullscreen=>windowed when remember window positions is on
2018-12-12 06:27:52 +01:00
radius a7e4d8359b fix fullscreen=>windowed when remember window positions is on 2018-12-11 19:34:12 -05:00
grant2258 07b17059f1 fix udev mouse 2018-12-11 23:24:21 +00:00
Twinaphex c7b3b0f784 Merge pull request #7729 from Themaister/master
EGL: Add callback to select EGLConfig.
2018-12-11 20:29:35 +01:00
Themaister 868465ad01 EGL: Add callback to select EGLConfig.
A more robust fix for DRM/GBM shenanigans.
2018-12-11 20:12:25 +01:00
Twinaphex 669f16c00c Merge pull request #7726 from fr500/subsystem
start at the current loaded content dir for subsystem and disk image …
2018-12-11 05:56:00 +01:00
radius ced0f09f0e start at the current loaded content dir for subsystem and disk image append 2018-12-10 23:51:41 -05:00
Twinaphex e33dfb53cf Merge pull request #7725 from fr500/subsystem
Subsystem
2018-12-11 05:35:47 +01:00
radius 479104ee05 cleanup task_content.c too 2018-12-10 23:27:04 -05:00
radius 7a36190a0e cleanup filebrowser too 2018-12-10 23:20:27 -05:00
radius 45228d0307 massive subsystem cleanup & use the proper data in each instance 2018-12-10 23:01:21 -05:00
radius cad5ae287f fix https://github.com/libretro/fbalpha/issues/24#issuecomment-445803876 2018-12-10 22:09:42 -05:00
Twinaphex 574972c1be Merge pull request #7665 from yoshisuga/master
iOS: Home screen indicator handling for iPhone X/iPad Pro 2018
2018-12-11 03:51:11 +01:00
Twinaphex 048b2df5b0 Merge pull request #7722 from jdgleaver/hide-scan-content
Hide 'scan content' entries from Collections menu when 'Show Import content Tab' is disabled
2018-12-10 18:57:35 +01:00
jdgleaver 11391d601c Hide 'scan content' entries from Collections menu when 'Show Import content Tab' is disabled (RGUI, GLUI) 2018-12-10 17:01:13 +00:00
Brad Parker 51c9914cbb add montreal MITM server for radius 2018-12-09 22:15:45 -05:00
Twinaphex 02ee0112fc Merge pull request #7720 from orbea/reset_core
menu: Add "Show Reset Core Association".
2018-12-10 03:29:47 +01:00
orbea 23bbcdf8ce menu: Add "Show Reset Core Association".
This can be found at:

Settings -> User Interface -> Views -> Quick Menu -> Show Reset Core Association

This could be helpful for child friendly devices where someone may
accidentally reset the core and then not now which core they were using
before or how to set it again.

Also fixes an issue where "Show Add To Favorites" hides
"Reset Core Association" when that is not desired or expected.

Fixes https://github.com/libretro/RetroArch/issues/7714
2018-12-09 17:46:40 -08:00
Twinaphex 7e49146c91 Merge pull request #7717 from Sunderland93/master
Implement support for xdg-decoration
2018-12-09 22:11:43 +01:00
Aleksey Samoilov d82987b1b5 Merge branch 'master' into master 2018-12-09 20:56:20 +03:00
Sunderland93 27f2cc0bff Increase minimal Wayland version to 1.15 2018-12-09 19:28:45 +04:00
Sunderland93 830882e296 Merge branch 'server-decorations' 2018-12-09 19:03:57 +04:00
Sunderland93 613e3f2655 Add generated wayland-protocols to .gitignore 2018-12-09 18:55:30 +04:00
Sunderland93 d1c15efc24 Revert "Add KDE's server-decoration protocol as fallback (for KDE)"
This reverts commit 058a880a8b.
2018-12-09 18:47:47 +04:00
Sunderland93 058a880a8b Add KDE's server-decoration protocol as fallback (for KDE) 2018-12-09 18:42:45 +04:00
Sunderland93 f45154f15c Add support for zxdg_decoration_manager_v1 2018-12-09 14:56:36 +04:00
Twinaphex d823a18025 Merge pull request #7715 from natinusala/master
Add more generated Wayland files to gitignore
2018-12-08 19:48:49 +01:00
natinusala 7ed7b7b436 Add more generated Wayland files to gitignore 2018-12-08 13:27:57 +01:00
Yoshi Sugawara 5d7663ce96 Merge remote-tracking branch 'upstream/master' 2018-12-07 16:39:17 -10:00
twinaphex bfd9141577 Play it safe for non-GBM targets 2018-12-07 21:15:38 +01:00
twinaphex 96840572ef Add HAVE_GBM ifdefs 2018-12-07 20:18:01 +01:00
Twinaphex d6e96b986f Merge pull request #7707 from fr500/upstream
make windowed size take into account window border and title height
2018-12-07 16:33:29 +01:00
Twinaphex 39b1883967 Merge pull request #7711 from jdgleaver/3ds-defaults
(3DS) Improve default configuration
2018-12-07 16:33:02 +01:00
jdgleaver e27e1114c7 (3DS) Improve default configuration 2018-12-07 14:20:28 +00:00
twinaphex 7638637518 Cleanups 2018-12-07 00:51:56 +01:00
Twinaphex e036470e33 Merge pull request #7708 from orbea/kms
Fix KMS with OpenGL.
2018-12-07 00:49:20 +01:00
orbea 5898f3e5d2 Fix KMS with OpenGL.
All credit for this patch goes to dtsarr.

Fixes https://github.com/libretro/RetroArch/issues/7119
2018-12-06 08:34:26 -08:00
radius defe82c9ce fix the menubar height growing issue too 2018-12-06 10:15:50 -05:00
orbea 0735fbcd57 Fix build with '--enable-sixel'. (#7704)
First bad commit 2edd03361c
2018-12-06 10:09:03 -05:00
radius e050ca89c7 make windowed size take into account window border and title height 2018-12-06 10:03:48 -05:00
Aleksey Samoilov 6cf90f739b Merge pull request #4 from libretro/master
Merge master
2018-12-06 17:17:22 +04:00
Twinaphex 7287f84de4 Merge pull request #7705 from Themaister/master
Vulkan: Fix blue/red flip when using HW rendered cores with history.
2018-12-06 14:07:17 +01:00
Themaister 124d9b57d6 Vulkan: Fix blue/red flip when using HW rendered cores with history.
Was using frontend format of BGRA8 when core was RGBA8, with blind
vkCmdCopyImage. Fix is to use the same format as core is pushing to
history buffer.
2018-12-06 11:38:30 +01:00
Twinaphex 890a6aac9a Merge pull request #7701 from rsn8887/master
[LIBNX] Fix switching from Split Joycon mode to Dual Joycon mode
2018-12-06 01:53:16 +01:00
rsn8887 44cd329125 [LIBNX] Fix switching from Split Joycon mode to Dual Joycon mode 2018-12-05 18:29:28 -06:00
Twinaphex 59193b4cd9 Merge pull request #7700 from rsn8887/master
[LIBNX] Fix Split Joycon mode for horizontal holding
2018-12-06 01:24:41 +01:00
rsn8887 f953962d08 [LIBNX] Fix Split Joycon mode for horizontal holding 2018-12-05 18:12:55 -06:00
Twinaphex b3e754466c Merge pull request #7699 from Sunderland93/master
[Wayland] Add fallback interfaces
2018-12-05 22:00:35 +01:00
Sunderland93 f960144212 Merge branch 'fallback' into 'master' 2018-12-05 23:23:02 +04:00
Aleksey Samoilov ff9ebb3998 Merge pull request #3 from libretro/master
Merge master
2018-12-05 23:22:25 +04:00
Twinaphex 5e74115a41 Merge pull request #7676 from Sunderland93/master
Wayland: fixes
2018-12-05 20:15:54 +01:00
Sunderland93 dc94886664 Initial support for xdg-decoration-unstable-v1 2018-12-05 22:51:07 +04:00
Sunderland93 e12caa94d4 Style fixes 2018-12-05 22:36:37 +04:00
Sunderland93 dcec570d05 Style fix 2018-12-05 21:20:15 +04:00
Twinaphex b17b226f94 Merge pull request #7698 from hizzlekizzle/master
add a couple more qualifiers for the autosave interval
2018-12-05 14:01:20 +01:00
Rob Loach a42cacaaf6 autosave_interval: Fix syntax error 2018-12-05 01:55:22 -05:00
hunterk 687fe77cd7 add a couple more qualifiers for the autosave interval 2018-12-04 23:30:57 -06:00
Twinaphex fa904de2f2 Merge pull request #7691 from hizzlekizzle/master
set a default SRAM autosave interval on modern platforms
2018-12-03 14:28:05 +01:00
Sunderland93 72eb7c4f59 Temp fix resizing 2018-12-03 14:48:13 +04:00
Sunderland93 2b6fbbdfe0 Temp fix resizing 2018-12-03 14:46:57 +04:00
Sunderland93 9b0bad5d9f Add zxdg_shell_v6 and wl_shell ad fallback interfaces 2018-12-03 14:32:31 +04:00
hunterk be285b6aca set a default SRAM autosave interval on modern platforms 2018-12-02 20:23:36 -06:00
twinaphex b027395341 (Android/Vulkan) Enable 'emulate mailbox' for Android 2018-12-03 00:40:50 +01:00
Sunderland93 eda342262b Fix 2018-12-02 21:15:57 +04:00
Aleksey Samoilov 3d159d424e Cleanup 2018-12-02 17:53:03 +04:00
Twinaphex 67699be3be Merge pull request #7688 from Tatsuya79/patch-3
Frame count should be OFF by default.
2018-12-01 12:10:47 +01:00
Tatsuya79 a617f0d436 Frame count should be OFF by default. 2018-12-01 11:27:39 +01:00
Twinaphex 646b24c9fc Merge pull request #7686 from alfrix/master
Add icons for apply on toggle and autoapply
2018-11-30 22:27:02 +01:00
alfrix cd2d2f8807 Add icons for apply on toggle and autoapply 2018-11-30 18:10:28 -03:00
Sunderland93 0f5729354e Initial support for toplevel resizing 2018-11-30 21:36:42 +04:00
Twinaphex c749660462 Merge pull request #7684 from Tatsuya79/patch-2
Fix title window fps counter.
2018-11-30 09:35:32 +01:00
Twinaphex 05ea7a6225 Merge pull request #7683 from Tatsuya79/patch-1
Default framecount_show to off.
2018-11-30 09:35:21 +01:00
Twinaphex 4578b82027 Merge pull request #7681 from alfrix/master
Menu drivers asset handling updates
2018-11-30 09:35:06 +01:00
Twinaphex d1a760c72e Merge pull request #7685 from libretro/sgc-metal-rotate
Add native rotation support for Metal driver
2018-11-30 09:34:48 +01:00
Stuart Carnie 0e295716b9 feat(metal): Add native rotation support for Metal driver
* fix crash when frame or frame size is 0
2018-11-29 22:04:43 -07:00
Tatsuya79 c0cada4b55 Fix title window fps counter. 2018-11-30 00:30:12 +01:00
Tatsuya79 3934cec597 Default framecount_show to off. 2018-11-29 22:40:23 +01:00
Twinaphex 1caf10e1e9 Merge pull request #7682 from m4xw/OC
[LIBNX] Implement Over-/Downclocking and minor fixes
2018-11-29 19:30:28 +01:00
alfrix 982b39a8bf Simplify and cleanup path handling, log the specific assets missing 2018-11-29 14:49:39 -03:00
alfrix ab34b21f8d XMB asset handling refactors also do not show black boxes 2018-11-29 14:49:39 -03:00
M4xw 8764d7be28 [LIBNX] Implement Over-/Downclocking and minor fixes 2018-11-29 18:42:44 +01:00
Twinaphex 6d1655a5c3 Merge pull request #7680 from Tatsuya79/master
Add FPS counter hotkey.
2018-11-29 14:50:59 +01:00
Tatsuya79 e37c1c330d Fix missing label. 2018-11-29 13:45:06 +01:00
Tatsuya79 d52b38eadc Add FPS counter hotkey. 2018-11-29 13:12:11 +01:00
twinaphex a24a788e52 Fix subsystem for ozone 2018-11-29 12:12:00 +01:00
twinaphex 0e93fade3e Fix load content not showing up 2018-11-28 19:57:19 +01:00
Twinaphex d794b9069c Merge pull request #7678 from fr500/upstream
Update msg_hash_us.h
2018-11-28 17:02:25 +01:00
Andrés 9989cc38d7 Update msg_hash_us.h 2018-11-28 10:59:42 -05:00
Sunderland93 d81e9a08b2 Add toplevel width and height 2018-11-28 17:59:06 +04:00
Twinaphex 2b2bb0ceb7 Merge pull request #7674 from natinusala/libnx-focus
libnx: implement focus gain and loss callbacks
2018-11-28 14:56:35 +01:00
natinusala bdc68b1044 Lakka: rename Quit RetroArch to Restart RetroArch (english & french) 2018-11-28 14:52:05 +01:00
natinusala 9cad7135a9 libnx: implement focus gain and loss callbacks 2018-11-28 14:11:42 +01:00
twinaphex 1fa89d67c5 (GX audio) Backport https://github.com/netux79/myra1002/commit/eefc216b0d6739f5b73f85bdc1286d32d53dc072 2018-11-28 11:14:21 +01:00
twinaphex ca0bd95c0a FIx MSVC builds 2018-11-28 11:03:52 +01:00
twinaphex 1c6602e35d Add thread safety note 2018-11-28 11:02:36 +01:00
Sunderland93 1e097b0e1d Implement xdg_toplevel_close event 2018-11-28 13:58:14 +04:00
twinaphex af469698da Silence threading error 2018-11-28 09:56:12 +01:00
twinaphex 2777ee2fa4 Fix memory leak 2018-11-28 09:49:28 +01:00
Twinaphex c24fbb7a12 Merge pull request #7672 from grant2258/master
add missing %s
2018-11-28 09:40:29 +01:00
grant2258 b89410043a add missing %s 2018-11-28 08:22:33 +00:00
Twinaphex 723ad2ba53 Merge pull request #7668 from dukemiller/add-toggle-for-dx-memory-use
Create option for dx video drivers to toggle displaying memory use
2018-11-28 08:11:13 +01:00
dukemiller 8294bf86df Create option for dx video drivers to toggle displaying memory use 2018-11-28 00:01:09 -07:00
Twinaphex 3d913b8569 Merge pull request #7669 from dukemiller/show-framecounter-independent-of-fps
Show framecounter independent of fps
2018-11-28 07:46:05 +01:00
Twinaphex 70c4cf0140 Merge pull request #7667 from libretro/revert-7666-revert-7664-ozone-subsystem
Revert "Revert "ozone: Fix subsystem_data being undefined""
2018-11-28 06:11:16 +01:00
Twinaphex 34fe9205db Revert "Revert "ozone: Fix subsystem_data being undefined"" 2018-11-28 06:11:08 +01:00
Twinaphex e400c73636 Merge pull request #7666 from libretro/revert-7664-ozone-subsystem
Revert "ozone: Fix subsystem_data being undefined"
2018-11-28 06:08:52 +01:00
Twinaphex 4d55c74f29 Revert "ozone: Fix subsystem_data being undefined" 2018-11-28 06:08:44 +01:00
dukemiller be9d4c63ec Re-arrange menu options to put related settings closer together 2018-11-27 21:32:15 -07:00
dukemiller f3c682186c Add submenu label for framecount and change wording 2018-11-27 21:32:15 -07:00
dukemiller 1d14512cb0 Allow framecount to be displayed independently without fps counter 2018-11-27 21:32:15 -07:00
Yoshi Sugawara 83c1199403 iOS: Hide home screen indicator and make the user swipe twice to go home/app switching for iPhone X/2018 iPad Pro 2018-11-27 09:37:21 -10:00
Twinaphex ada21dbe8d Merge pull request #7664 from libretro/ozone-subsystem
ozone: Fix subsystem_data being undefined
2018-11-27 19:53:20 +01:00
twinaphex 09698d33a2 Buildfix 2018-11-27 19:52:30 +01:00
Rob Loach e15dd10237 ozone: Fix subsystem_data being undefined
subsystem_data was not defined, seemed like a declaration of subsystem was in the wrong place.
2018-11-27 13:19:50 -05:00
Twinaphex 02e7b16461 Merge pull request #7643 from fr500/subsystem
WIP: try to load subsystems without loading content
2018-11-27 18:56:41 +01:00
Twinaphex 978b5814e1 Merge pull request #7662 from natinusala/ozone
ozone: fix scroll when rebinding inputs
2018-11-27 16:53:07 +01:00
Twinaphex c2b37e6ffc Merge pull request #7663 from natinusala/master
Add generated Wayland protos to .gitignore
2018-11-27 16:52:53 +01:00
natinusala a7b93ff501 Add generated Wayland protos to .gitignore 2018-11-27 15:44:48 +01:00
natinusala ffaafbc77c ozone: fix scroll when rebinding inputs 2018-11-27 15:32:43 +01:00
twinaphex 803af8a890 Add brackets around this 2018-11-27 11:55:39 +01:00
twinaphex 4ca7ebc9da Add xrandr implementation for get_output_options 2018-11-27 11:28:24 +01:00
Twinaphex 1acad3522e Merge pull request #7659 from fr500/upstream
only apply fixed window size when the setting is enabled
2018-11-27 07:50:35 +01:00
Twinaphex c8eaebeb23 Merge pull request #7657 from fr500/patch-2
Update config.def.h
2018-11-27 03:15:15 +01:00
radius aab6a86633 only apply fixed window size when the setting is enabled 2018-11-26 21:15:03 -05:00
Andrés 9d76a6bb00 Update config.def.h 2018-11-26 18:59:50 -05:00
twinaphex bc0dbffc01 Revert "Change custom_command_method_t returntype to int64_t"
This reverts commit e13efbd400.
2018-11-26 20:30:53 +01:00
Aleksey Samoilov 2c35f05560 Merge pull request #2 from libretro/master
Merge master
2018-11-26 22:32:54 +04:00
Twinaphex c16a3a6b88 Update CHANGES.md 2018-11-26 19:26:32 +01:00
Twinaphex 7a174d290e Merge pull request #7655 from Sunderland93/master
[Wayland] Implement idle-inhibit support
2018-11-26 19:25:46 +01:00
Sunderland93 ea180a1775 Relax wayland and wayland-protocols version's 2018-11-26 21:58:43 +04:00
Sunderland93 b538786b00 Implement zwp_idle_inhibit_v1 protocol 2018-11-26 21:54:39 +04:00
twinaphex e13efbd400 Change custom_command_method_t returntype to int64_t 2018-11-26 17:39:04 +01:00
Twinaphex 0bf3007f0a Merge pull request #7654 from natinusala/ozone
ozone: fix flickering sidebar cursor
2018-11-26 14:23:28 +01:00
natinusala 04797d9406 ozone: fix flickering sidebar cursor 2018-11-26 14:02:32 +01:00
twinaphex 6bf35ab6e8 (x11_common.c) Cleanups 2018-11-26 13:54:51 +01:00
twinaphex 098e62067e Small cleanups 2018-11-26 13:37:35 +01:00
twinaphex 136a9db13f Silence warning - variable too small 2018-11-26 12:14:13 +01:00
Twinaphex afb7ee36c9 Merge pull request #7653 from DEX357/patch-25
Update msg_hash_pl.h
2018-11-26 12:11:57 +01:00
DEX357 83bf27ac9b Update msg_hash_pl.h 2018-11-26 12:10:50 +01:00
twinaphex 48dcd9640e Remove this 2018-11-26 01:48:26 +01:00
Twinaphex c90eda14e5 Merge pull request #7651 from natinusala/master
xmb: fix hang when resizing with threaded video driver
2018-11-26 00:19:29 +01:00
natinusala 94211bf833 xmb: fix hang when resizing with threaded video driver 2018-11-26 00:16:25 +01:00
Twinaphex 9f3efd03ea Merge pull request #7650 from fr500/upstream
restore old functionality till the change is done in other platforms
2018-11-25 23:32:15 +01:00
radius 1187df922a restore old functionality till the change is done in other platforms 2018-11-25 17:24:54 -05:00
Twinaphex 7caabe3335 Merge pull request #7649 from fr500/upstream
recording improvements
2018-11-25 21:54:52 +01:00
radius 665be01b6b [record] add recording threads setting 2018-11-25 15:51:52 -05:00
twinaphex 0bf0e355ec This stops the crashes with video_get_output_size/next/prev 2018-11-25 21:51:09 +01:00
radius f9c12866bf [record] add more recording options 2018-11-25 15:20:11 -05:00
twinaphex de903c650d Reinitialize context in a different way 2018-11-25 20:34:50 +01:00
Twinaphex 3ca4ac2a21 (Ozone) Fix redefinition of typedef 2018-11-25 19:22:55 +01:00
twinaphex fb957f29a8 Set current_display_server by default to dispserv_null 2018-11-25 19:12:21 +01:00
twinaphex ff4fa3be7a Fix more string is too small warnings 2018-11-25 18:49:04 +01:00
twinaphex b14ff4d504 - Try to fix Screen Resolution hang on platforms other than PC
by hiding the setting if display server is NULL
- Fix some warnings that had to do with certain strings being too
small
2018-11-25 18:43:08 +01:00
Aleksey Samoilov 2489313d28 Merge pull request #1 from libretro/master
Merge master
2018-11-25 21:25:46 +04:00
Twinaphex 0b50328c6f Merge pull request #7645 from fr500/upstream
repurpose the old settings to the new window sizing code
2018-11-25 17:52:59 +01:00
radius 77ae2dc0cd don't change window position on fullscreen changes 2018-11-25 11:51:13 -05:00
radius a4479e6738 pack the fullscreen settings together 2018-11-25 11:39:05 -05:00
Twinaphex 24b8c99f57 Merge pull request #7644 from natinusala/ozone
ozone: fix toggle crash and cheevos badges opacity
2018-11-25 17:13:17 +01:00
radius c2fc35f2cc repurpose the old settings to the new window sizing code 2018-11-25 11:10:58 -05:00
twinaphex 418f28b57a (dispserv_x11.c) Use snprintf instead of sprintf 2018-11-25 17:09:00 +01:00
twinaphex 8b86c49b39 Fix some warnings 2018-11-25 17:06:55 +01:00
natinusala 44ae11ee60 ozone: fix toggle crash and cheevos badges opacity 2018-11-25 15:46:41 +01:00
twinaphex 4a4a6511e0 Workaround - fullscreen mode was no longer working properly 2018-11-25 10:08:50 +01:00
twinaphex 5313c50b0e (Windows) Saves/remembers window size now too - still some edge case
when clicking maximize button - you need to then move the window
slightly in order for x/y position to be saved - just clicking maximize
alone is not enough
2018-11-25 09:50:08 +01:00
twinaphex cc4f834d74 Rename string to 'Remember Window Positions' 2018-11-25 09:08:43 +01:00
twinaphex e1afdf8c3c (Windows) Start implementing 'remember window positions'. Right now only
saves/remembers X, Y position
2018-11-25 09:02:32 +01:00
twinaphex 881a7d571e Add unfinished patch 2018-11-25 07:19:23 +01:00
radius 77faf4ac4a [subsystem] try to load subsystems without loading content 2018-11-24 23:34:51 -05:00
twinaphex 4e796ae86e (XMB) Cleanups 2018-11-25 05:29:40 +01:00
twinaphex 8be504e5e5 Don't reupload the textures all the time 2018-11-25 03:39:46 +01:00
twinaphex 0486979bc9 Should now work across core context resets 2018-11-25 03:01:41 +01:00
twinaphex 006a002f19 Revert "Should now correctly rescale after resolution changes"
This reverts commit c9bb537cdd.
2018-11-25 02:48:14 +01:00
twinaphex c9bb537cdd Should now correctly rescale after resolution changes 2018-11-25 02:45:13 +01:00
Twinaphex 80f89479bf Merge pull request #7640 from alfrix/master
Add more icons XMB/OZONE
2018-11-25 00:52:19 +01:00
Twinaphex 8ba1b3f20f Merge pull request #7641 from meepingsnesroms/master
Add NULL check to prevent empty password from crashing RetroArch
2018-11-25 00:52:03 +01:00
meepingsnesroms bcb4d61510 Add NULL check to prevent empty password from crashing RetroArch 2018-11-24 12:58:17 -08:00
twinaphex 3a666373b4 Set currently selected icon 2018-11-24 20:26:34 +01:00
twinaphex d04f3c01a1 Add initial implementation for resolution switching for Win32 2018-11-24 20:12:57 +01:00
twinaphex 0eb8acd766 (Win32 display server) Try to set current resolution 2018-11-24 19:50:25 +01:00
twinaphex 7d9e564667 Turn some C++ comments into C comments 2018-11-24 19:40:14 +01:00
twinaphex 2945d450f3 Cleanups 2018-11-24 19:38:40 +01:00
Twinaphex 3d4fc5d38f Merge pull request #7607 from Sunderland93/master
Wayland: xdg-shell support
2018-11-24 18:45:20 +01:00
Sunderland93 17fd203141 Waiting for the "initial" set of globals to appear
(fixed xdg_wm_base_ping working)
2018-11-24 20:52:22 +04:00
Alfrix 1356577c2e Add more icons 2018-11-24 13:21:43 -03:00
twinaphex a561f789e2 Rename switch_resolution to set_resolution 2018-11-24 10:35:32 +01:00
twinaphex 7730828560 Start implementing dropdown list for resolution - Win32 right now at first - now need to make OK button do something 2018-11-24 10:31:41 +01:00
Twinaphex ab8e02617d Merge pull request #7637 from GregorR/revert-7635-master
Fix Buffer Overflow with netplay passwords
2018-11-24 05:04:58 +01:00
twinaphex 0ae3d3873d Create video_display_server_get_resolution_list 2018-11-24 02:50:04 +01:00
twinaphex fdb4d2b6ad Add get_resolution_list for Win32 2018-11-24 02:47:22 +01:00
twinaphex 5d8666e226 Only one function calls EnumDisplaySettings now 2018-11-24 02:06:28 +01:00
twinaphex 45e075c8fe Cleanup 2018-11-24 01:54:39 +01:00
twinaphex 62c6d60c57 Revert "Cleanup shaders_common.h"
This reverts commit c1de2e5697.
2018-11-24 01:29:35 +01:00
twinaphex c5b9352c34 Revert "Rename some files"
This reverts commit 03a8bc9875.
2018-11-24 01:26:05 +01:00
twinaphex 08d024ecad Revert "Get rid of the header guards in shaders_common.h/glsl_common.h"
This reverts commit eef67ee0cd.
2018-11-24 01:25:55 +01:00
twinaphex eef67ee0cd Get rid of the header guards in shaders_common.h/glsl_common.h 2018-11-24 00:37:07 +01:00
twinaphex 03a8bc9875 Rename some files 2018-11-24 00:30:46 +01:00
twinaphex c1de2e5697 Cleanup shaders_common.h 2018-11-23 23:57:22 +01:00
twinaphex 747bf136f2 Simplify strip_parameter_pragmas 2018-11-23 23:42:33 +01:00
Sunderland93 fbcab67d8b Fix wrong toplevel geometry 2018-11-23 23:04:06 +04:00
Sunderland93 cd8bf003d1 Add toplevel configuration 2018-11-23 21:23:53 +04:00
Sunderland93 9d5cb529c1 Add wait event for surface configure 2018-11-23 21:08:42 +04:00
Gregor Richards f897b95d09 Avoid buffer overflows due to sha256_hash's nul-terminator. 2018-11-23 08:24:54 -05:00
Gregor Richards 2a67be3a7c Revert "This should fix netplay passwords" 2018-11-23 08:15:22 -05:00
Twinaphex 145f3ca2a6 Merge pull request #7635 from meepingsnesroms/master
This should fix netplay passwords
2018-11-23 04:25:03 +01:00
Twinaphex 72d9c18837 Merge pull request #7636 from libretro/revert-7633-shaders
Revert "Fix shader warnings"
2018-11-23 04:19:58 +01:00
Twinaphex 8514d6ccc8 Revert "Fix shader warnings" 2018-11-23 04:18:38 +01:00
meepingsnesroms 129beaefb0 This should fix netplay passwords 2018-11-22 18:46:33 -08:00
Twinaphex 350a7477d6 Merge pull request #7633 from alfrix/shaders
Fix shader warnings
2018-11-22 21:40:51 +01:00
Alfrix 3e7328b00a Fix shader warnings 2018-11-22 16:18:11 -03:00
Twinaphex e99e1c47cb Merge pull request #7625 from ayssia/master
Update Simplified Chinese Localization
2018-11-21 22:22:28 +01:00
Twinaphex da928a9b41 Merge pull request #7630 from Royerson/patch-1
add more model names for Xperia Play hack
2018-11-21 22:20:33 +01:00
Royerson ba435ce22a add more model names for Xperia Play hack 2018-11-21 14:06:34 -07:00
Pau López e981afcca8 Fix msvc2017 project 2018-11-21 20:35:06 +01:00
Sunderland93 2615ad3f55 Make it works! 2018-11-21 21:28:32 +04:00
Ayssia 1372d408eb Fix newline at eof 2018-11-21 16:34:27 +08:00
Ayssia 930b1214fd Minor Update 2018-11-21 16:32:52 +08:00
ayssia d0df92f542 Update to latest official
Update to latest official
2018-11-21 16:23:54 +08:00
Twinaphex b3d38c46aa Merge pull request #7622 from altiereslima/master
Update msg_hash_pt_br.h
2018-11-21 00:33:03 +01:00
twinaphex e0658d16d9 Update Griffin 2018-11-21 00:31:50 +01:00
altiereslima 2a630b6590 delete .bak 2018-11-20 19:01:49 -02:00
altiereslima 7aa6311c64 Update msg_hash_pt_br.h 2018-11-20 18:44:37 -02:00
hizzlekizzle d7041f495d Merge pull request #7620 from meepingsnesroms/master
Move the resolutions so they are listed smallest to biggest instead o…
2018-11-19 18:52:19 -06:00
meepingsnesroms 98cae65974 Move the resolutions so they are listed smallest to biggest instead of random, fix some typos 2018-11-19 16:36:01 -08:00
Twinaphex 4d550d7f13 Merge pull request #7617 from natinusala/libnx-clean-depends
libnx: make clean removes *.d files
2018-11-19 19:54:55 +01:00
Twinaphex 6677e47fe8 Merge pull request #7618 from alfrix/master
Fix Travis
2018-11-19 19:54:41 +01:00
Twinaphex 2694c2cb11 Merge pull request #7616 from natinusala/ozone
Ozone improvements and fixes
2018-11-19 19:54:13 +01:00
Twinaphex db0d58e337 Merge pull request #7619 from Royerson/patch-1
add CM9/10 default model names for Xperia Play
2018-11-19 19:39:03 +01:00
Sunderland93 b64f302eb7 Check for resize 2018-11-19 22:31:17 +04:00
Royerson 6044044852 add CM9/10 default model names for Xperia Play 2018-11-19 10:25:11 -07:00
Alfrix 6519120379 Fix Travis 2018-11-19 12:04:43 -03:00
natinusala 678de3a122 libnx: make clean removes *.d files 2018-11-19 14:06:26 +01:00
natinusala 33ecec05c5 ozone: split into multiple files 2018-11-19 13:15:09 +01:00
natinusala b694608251 ozone: increase legibility of menu when content is running 2018-11-19 10:34:02 +01:00
natinusala bca0669833 ozone: fix cheevos badges, convert cheevos.c to LF 2018-11-19 10:23:55 +01:00
natinusala fa96962fa7 ozone: fix osk visual glitch 2018-11-19 09:55:12 +01:00
natinusala 186cc288bb ozone: fix typo, show images tab properly 2018-11-19 09:34:27 +01:00
twinaphex f318f4a1a9 (MSVC) Buildfix 2018-11-19 04:23:20 +01:00
Twinaphex 3638a876fe Merge pull request #7611 from meepingsnesroms/master
Clarify libretro.h documentation
2018-11-19 03:15:16 +01:00
hizzlekizzle fbdcb793ac Merge pull request #7612 from fr500/upstream
xperia play hack
2018-11-18 18:32:11 -06:00
radius 390c9a4dde xperia play hack 2018-11-18 17:34:54 -05:00
meepingsnesroms 94f691e5d2 More info 2018-11-18 11:44:46 -08:00
meepingsnesroms ca5eddf7ff Clarify documentation 2018-11-18 11:18:40 -08:00
Sunderland93 4d8defb4c9 Remove D-bus based screensaver inhibition
(will replaced to idle-inhibit in future)
2018-11-18 21:50:39 +04:00
Sunderland93 c0adb18eff Fix build 2018-11-18 21:29:31 +04:00
twinaphex 7d35bd1649 (Android/Mac/iOS) Add ozone 2018-11-18 17:26:57 +01:00
twinaphex 0942bc6268 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-18 17:24:27 +01:00
Twinaphex c0d5579cf2 Merge pull request #7608 from alfrix/master
Add missing assets warning to XMB
2018-11-17 23:20:00 +01:00
Twinaphex af0a9712a6 Merge pull request #7609 from Dwedit/msvc-wasapi
Modify MSVC 2017 project to add in WASAPI support
2018-11-17 17:06:28 +01:00
Dwedit ff844a56c4 Modify MSVC 2017 project to add in WASAPI support
Add conditional code for MSVC to resolve missing GUIDs into wasapi.c
2018-11-17 09:23:12 -06:00
Alfrix 780d77e29e Relax the warning in XMB 2018-11-17 12:00:01 -03:00
Alfrix cabcf490bd Update Spanish 2018-11-17 10:35:42 -03:00
Alfrix 2400da6129 Ozone: Localize and log asset warning 2018-11-17 10:35:20 -03:00
Alfrix f4b6dcb6a1 Add missing assets warning to xmb 2018-11-17 10:34:37 -03:00
Sunderland93 c32c98e667 Very WIP: xdg-shell support 2018-11-17 16:01:51 +04:00
twinaphex 438bb2eb24 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-15 22:48:19 +01:00
Twinaphex 292249b79a Merge pull request #7578 from markwkidd/patch-1
GUI English translation: clarify "Configurations" as "Configuration File"
2018-11-15 22:39:22 +01:00
twinaphex 90f6d34055 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-15 21:51:55 +01:00
Twinaphex 2a39dc7045 Merge pull request #7594 from markwkidd/patch-2
fix libretro-db Makefile
2018-11-15 21:50:57 +01:00
Twinaphex 6b9dc925b9 Merge pull request #7598 from natinusala/ozone
ozone: fix playlists icons
2018-11-15 21:50:47 +01:00
natinusala fe2f9bdcbc ozone: fix missing content icons 2018-11-15 20:47:59 +01:00
natinusala c421df494b ozone: fix playlists icons 2018-11-15 20:47:59 +01:00
twinaphex ce0195b456 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-15 19:28:26 +01:00
Twinaphex 1dcca0ea53 Merge pull request #7596 from natinusala/ozone
ozone: don't break playlists without a hyphen in their name
2018-11-15 19:20:36 +01:00
Twinaphex 611f7f47b1 Merge pull request #7597 from markwkidd/patch-3
update, expand, and re-sequence the libretro-db doc
2018-11-15 19:20:29 +01:00
markwkidd 04bdca8e1f update, expand, and re-sequence libretro-db doc 2018-11-15 13:02:41 -05:00
natinusala 1abab059f9 ozone: don't break playlists without a hyphen in their name 2018-11-15 19:01:30 +01:00
Twinaphex f2d184ead6 Merge pull request #7595 from natinusala/ozone
Ozone: add console playlists support, always enable, set as default for libnx
2018-11-15 18:59:40 +01:00
natinusala 6f631309cd ozone: always enable and build, set to default menu driver for libnx 2018-11-15 18:46:38 +01:00
natinusala 48cdac2a64 ozone: add console playlists support 2018-11-15 18:41:50 +01:00
markwkidd 0aca0afa07 fix libretro-db Makefile
The current Makefile doesn't work. This patch comes via @grant2258 and originally from @natinusala and is intended to resolve https://github.com/libretro/RetroArch/issues/7586
2018-11-15 10:38:24 -05:00
twinaphex 1ea3252602 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-15 03:51:11 +01:00
Twinaphex 460e7481d0 Merge pull request #7591 from natinusala/ozone
Ozone and menu_display improvements
2018-11-14 18:16:19 +01:00
Twinaphex b2c2a33389 Merge pull request #7593 from jdgleaver/3ds-persistent-bottom-screen-toggle
(3DS) Add 'bottom screen' enable to User Interface menu
2018-11-14 18:16:10 +01:00
jdgleaver ca13805937 (3DS) Add 'bottom screen' enable to User Interface menu 2018-11-14 16:41:19 +00:00
Jean-André Santoni c190ceb9f8 Merge pull request #7592 from libretro/kivutar/lakka-tmp-fix
(Lakka) Temporary fix for the settings tab
2018-11-14 22:39:55 +07:00
Jean-André Santoni f7d0a1fcce (Lakka) Temporary fix for the settings tab 2018-11-14 22:26:56 +07:00
natinusala c1f3f79119 menu_display: fix glitch in draw_texture_slice 2018-11-14 15:30:09 +01:00
natinusala 228f8ca0ef ozone: display correct tabs 2018-11-14 14:41:41 +01:00
natinusala f493c114b5 ozone: fix visual issues, add fade in/out to messagebox 2018-11-14 14:18:14 +01:00
Twinaphex ca29032e1b Merge pull request #7590 from kwyxz/master
Quick fix for "multiple definitions of osk_dark" in Ozone
2018-11-13 20:56:15 +01:00
Benjamin FRANCOIS fd863e2607 Fix build 2018-11-13 10:34:21 -08:00
Twinaphex 6110616c0c Merge pull request #7589 from natinusala/ozone
Ozone improvements, new menu_animation features
2018-11-13 17:32:13 +01:00
natinusala a8a5f286b9 ozone: see content behind menu if content is running 2018-11-13 16:05:24 +01:00
natinusala 73f6e51892 ozone: improve OSK display 2018-11-13 15:48:16 +01:00
natinusala 4af4582204 ozone: fix empty playlist message position 2018-11-13 14:35:15 +01:00
natinusala d35f747b5a menu_animation: add menu_timer system 2018-11-13 14:33:32 +01:00
natinusala 2c628860c8 ozone: fix some values display 2018-11-13 14:08:28 +01:00
natinusala 8a1afb0a52 ozone: add support for cursor height, improve empty playlists display 2018-11-13 14:01:59 +01:00
natinusala f9d74ad0e0 ozone: add is_playlist flag 2018-11-13 13:09:47 +01:00
natinusala 28b415f9f2 ozone: implement bind_init 2018-11-13 12:54:06 +01:00
natinusala eee619f64b ozone: go back to main menu tab when pressing B on the sidebar 2018-11-13 12:52:20 +01:00
natinusala 3b08a377db vscode: don't detect indentation, use 3 spaces as default 2018-11-13 12:46:57 +01:00
natinusala 145f4fd712 Fix and update vscode tasks 2018-11-13 10:24:03 +01:00
twinaphex ce2944b09f Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-12 23:38:22 +01:00
Twinaphex 94a4574a7b Merge pull request #7585 from kwyxz/master
Temporary fix until Haiku implements the optional POSIX functions
2018-11-12 23:10:05 +01:00
Benjamin FRANCOIS d8483a9dc9 Temporary fix until Haiku implements the optional POSIX functions 2018-11-12 21:52:01 +00:00
twinaphex 5bc8b131b3 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-12 21:54:59 +01:00
Twinaphex 1ef286ec7c Merge pull request #7583 from alfrix/input_icons
Input icons (User Binds)
2018-11-12 21:53:07 +01:00
Twinaphex e9afbe8651 Merge pull request #7584 from jdgleaver/ctr-pokemini-assets
[CTR] Add PokeMini assets
2018-11-12 19:15:38 +01:00
jdgleaver 6bf61155bb [CTR] Add PokeMini assets 2018-11-12 17:12:15 +00:00
Alfrix 989ddb35a8 Cleanup 2018-11-12 00:54:24 -03:00
Alfrix 53e89f6bd1 Fix shutdown icon and add restart 2018-11-12 00:38:12 -03:00
Alfrix e5c7de8607 Input icons (User binds) 2018-11-12 00:30:09 -03:00
twinaphex a20fc528e1 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-11 22:29:50 +01:00
Twinaphex 62eb7822e0 Merge pull request #7579 from AdrianoML/master
Major improvements to the video processor core
2018-11-11 22:08:18 +01:00
Rob Loach dd869e30d3 Merge pull request #7582 from DEX357/patch-24
Update msg_hash_pl.h
2018-11-11 15:02:09 -05:00
Adriano de Moura Leite 85a3f952b9 Removes the return in the audio callback and restores samplerate to
48khz
2018-11-11 17:44:35 -02:00
DEX357 f295793c70 Update msg_hash_pl.h 2018-11-11 19:45:17 +01:00
Adriano de Moura Leite 0634e38ede Fixes an audio freewheeling situation where a capture card with no
sound capture captabilities would result in an empty audio_handle,
therefore making audio_callback thread spin forever
2018-11-11 04:48:46 -02:00
Adriano de Moura Leite 7b4652ac27 Reverts a change I mistakelny left behind for temporarely disabling the
audio callback, which was causing a freewheeling issue with my setup.
2018-11-11 04:35:21 -02:00
Adriano de Moura Leite 4c67888671 Major improvements to the video processor core.
Supports multiple capture and output modes with deinterlacing
New dummy mode for testing the core even without a capture device
Ability to display frametimes
alternate_hack mode allows capture cards without alternate capture mode
to capture progressive or interlaced inputs at 16ms rather than 33ms
2018-11-11 04:25:51 -02:00
Twinaphex b166ba7810 Merge pull request #7576 from DEX357/patch-23
Update msg_hash_pl.h
2018-11-10 20:31:13 +01:00
Twinaphex 5ebe0fc4a1 Merge pull request #7577 from Tatsuya79/master
Analog stick to trigger remap functionality.
2018-11-10 20:30:58 +01:00
markwkidd a811f181e6 GUI English translation: clarify "Configurations" 2018-11-10 08:42:05 -08:00
DEX357 0d2cd4982d Update msg_hash_pl.h 2018-11-10 17:27:42 +01:00
Tatsuya79 1e5192462e Analog stick to trigger remap functionality. 2018-11-10 17:27:14 +01:00
Rob Loach 07677fa85a Merge pull request #7575 from meepingsnesroms/master
Add Mu to Web Player
2018-11-10 11:14:09 -05:00
meepingsnesroms 1b1dac7f40 Add Mu to Web Player 2018-11-10 07:10:01 -08:00
Twinaphex e0a411dd24 Merge pull request #7574 from natinusala/ozone
ozone: fix content clear color
2018-11-10 15:30:49 +01:00
natinusala 6733eaa330 ozone: fix content clear color 2018-11-10 15:25:29 +01:00
Twinaphex 314f9279b8 Merge pull request #7573 from Zlika/master
emscripten: fix README and add Theodore core
2018-11-10 14:58:18 +01:00
Zlika 6a93ad0dce Add Theodore core to emscripten 2018-11-10 14:45:20 +01:00
Zlika 064eb16ceb Fix emscripten README 2018-11-10 14:44:46 +01:00
twinaphex 4c11295c99 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-10 00:31:17 +01:00
Twinaphex cce9e343aa Merge pull request #7570 from fjtrujy/feature/ps2Support
First Integration RetroArch For PS2
2018-11-10 00:28:23 +01:00
Francisco Javier Trujillo Mata 8065e19cc1 Improve Initalisation of GSTextures 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 4655e15a85 Remove unusefull things in Makefile 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 801927aaf5 Fixed issues with the colors. Now it is working fine with 2048 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 7fa7bd32d3 Now it supports force_aspect ratio 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 52544115db Add fullscreen parameter 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 4e1624359a Added Filter option in the creation of Textures 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 66159a44e5 Some clean in gfx 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata b4d2c5d85a Refactor method where transfer the frame to the textures 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 6b5ae4cdd6 Make more generic to choose the 32bits or 16bits 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 18dc40117d Applied color correction to the libretro core 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata b378ecf26b Test Core working with 2 textures 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 4c77e426fa Replaced a lot of functions from libc to C implementation in compat_ctype.c 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 99b77a2c9c Copied from core compat string methods 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 17d30f9dd5 Use SDL timer for counters and sleep the thread 2018-11-09 22:40:51 +01:00
Francisco Javier Trujillo Mata 5ba2509e7c Now the directories are working 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata b4aedc801b Fixed issue on retro_dirent with if clausules 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata 802c38bd92 Fix why default entries doesn't appear 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata fc9cd8f639 JoyPad implemented 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata 8a0266cf8d PS2 Input looks to be ready 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata 21587ba2a4 Now RGUI shows fullscreen proper colors 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata f4680b03eb now it looks full screen 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata 1f756533f9 First Content on the Screen!! 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata d7cc3b7983 PS2 making the gfx driver clean the screen 2018-11-09 22:40:50 +01:00
Francisco Javier Trujillo Mata 0880bd00b0 PS2 is compiling with null drivers 2018-11-09 22:40:50 +01:00
Twinaphex 43a42d0d13 Merge pull request #7568 from orbea/cleanup
Makefile.common: Cleanup pt. 2
2018-11-09 22:01:34 +01:00
orbea 6a66ec9e45 Makefile.common: Cleanup pt. 2 2018-11-09 12:00:45 -08:00
Twinaphex abfacf32e7 Merge pull request #7567 from natinusala/ozone
Ozone cursor improvements + missing assets message
2018-11-09 20:17:37 +01:00
Twinaphex 53787c19ca Merge pull request #7566 from orbea/cleanup
Makefile.common: Cleanup.
2018-11-09 20:17:26 +01:00
orbea 139b886abe Makefile.common: Cleanup. 2018-11-09 11:14:15 -08:00
natinusala 650f9e9e36 ozone: pulsating cursor 2018-11-09 18:50:27 +01:00
natinusala 5406e19c3e ozone: add missing assets message 2018-11-09 17:00:44 +01:00
natinusala 20a8e1b40f ozone: fancy new cursor 2018-11-09 16:51:34 +01:00
Twinaphex d514539867 Merge pull request #7564 from alfrix/master
Add more icons OZONE/XMB
2018-11-08 23:56:37 +01:00
Alfrix 0b29a93bf3 Add more icons OZONE/XMB 2018-11-08 19:43:42 -03:00
twinaphex d7e7c94a17 Merge branch 'master' of https://github.com/libretro/RetroArch 2018-11-08 22:34:05 +01:00
Twinaphex 56b6ef9d74 Merge pull request #7563 from Themaister/master
Vulkan: Fix scissor and slang \r endings.
2018-11-08 22:23:10 +01:00
Themaister f51ef85f27 Vulkan: Fix scissor in menu driver. 2018-11-08 21:57:53 +01:00
Themaister afcd25a3f8 Vulkan: Fix scissor in menu driver. 2018-11-08 21:45:51 +01:00
Themaister 3f344660c0 Remove Windows \r line endings in glslang parser. 2018-11-08 21:34:21 +01:00
Twinaphex 723741fc60 Merge pull request #7561 from natinusala/ozone
ozone: implement messagebox and OSK, fix font
2018-11-08 12:03:14 +01:00
natinusala b5f869bf25 ozone: implement messagebox and OSK 2018-11-08 12:00:06 +01:00
natinusala 019e6d8e2d ozone: fix restore clear color on toggle 2018-11-08 12:00:06 +01:00
hizzlekizzle 65d205f431 Merge pull request #7558 from alfrix/check
More icons XMB
2018-11-07 13:43:08 -06:00
Alfrix e1f97646ee More icons XMB 2018-11-07 15:10:13 -03:00
Twinaphex dc0fdd7c68 Merge pull request #7557 from yoshisuga/ios-fix-cmd-event
iOS: fix stack overflow when loading glsl shader
2018-11-07 18:00:36 +01:00
Yoshi Sugawara 559ae6dfd0 iOS: fix to avoid stack overflow when loading glsl shader; see issue 7298. Re-applying this fix after the reverting to use cocoa_gl_ctx.m for the driver context 2018-11-07 06:57:04 -10:00
Twinaphex 59fdd8eabd Merge pull request #7554 from alfrix/check
Do not draw icons in the dropdown (only the checkmark)
2018-11-07 17:12:49 +01:00
Twinaphex b932d3f031 Merge pull request #7556 from natinusala/ozone
ozone: don't use subsetting icon for config
2018-11-07 16:47:48 +01:00
natinusala 9ceceef2b8 ozone: don't use subsetting icon for config 2018-11-07 13:45:51 +01:00
Twinaphex ffd709f823 Merge pull request #7555 from natinusala/ozone
ozone: never draw cogs
2018-11-07 13:40:45 +01:00
natinusala 265683b0aa ozone: never draw cogs 2018-11-07 12:50:17 +01:00
Alfrix a1213f372c Do not draw icons in the dropdown (only the checkmark) 2018-11-07 08:42:16 -03:00
Twinaphex d5bfc4efb2 Merge pull request #7550 from alfrix/check
Add checkmark to XMB dropdown lists
2018-11-07 11:59:15 +01:00
Twinaphex a6485d42dd Merge pull request #7553 from natinusala/ozone
Ozone improvements
2018-11-07 11:59:02 +01:00
natinusala 4312868080 ozone: don't draw icons if all entries are cogs 2018-11-07 11:52:08 +01:00
natinusala 6fa40df7fd ozone: fix missing icons 2018-11-07 11:25:49 +01:00
Alfrix 2c7f24590a Add checkmark to XMB dropdown lists 2018-11-06 22:48:38 -03:00
twinaphex f271ea789d (VG) Buildfix 2018-11-06 20:58:41 +01:00
Twinaphex e4b30eb087 Merge pull request #7547 from theheroGAC/patch-39
Update msg_hash_it.h
2018-11-06 19:22:10 +01:00
theheroGAC 03e6ad8831 Update msg_hash_it.h 2018-11-06 17:50:12 +01:00
Twinaphex 3a47901a90 Merge pull request #7546 from natinusala/ozone
ozone: don't crash if font_driver_get_message_width isn't implemented
2018-11-06 17:01:17 +01:00
natinusala 7227e1147e ozone: don't crash if font_driver_get_message_width isn't implemented 2018-11-06 16:57:44 +01:00
Twinaphex 1193eda5d9 Merge pull request #7545 from libretro/sgc-metal-cleanup
Metal cleanup and scissor support; enable ozone menu system
2018-11-06 16:02:47 +01:00
Stuart Carnie fd2524429d chore(meta): Cleanup 2018-11-06 07:56:05 -07:00
Stuart Carnie b59f05500e feat(macOS): Enable ozone menu system 2018-11-06 07:56:05 -07:00
Stuart Carnie 8569ee79bc feat(metal): Add scissor rect support
This is required for correct rendering of the ozone menu
2018-11-06 07:56:05 -07:00
Stuart Carnie 0485d741a2 fix(ozone): Fix crash on shutdown; check for NULL 2018-11-06 07:56:05 -07:00
Stuart Carnie 68760b36f2 chore(cocoa): Cleanup unnecessary conditionals in Metal source files 2018-11-06 07:56:05 -07:00
Stuart Carnie 98e6adcfca chore(cocoa): Remove Gestalt compiler warnings for macOS 10.13+ 2018-11-06 07:56:04 -07:00
Twinaphex 3919ac7c7d Merge pull request #7544 from natinusala/ozone
Ozone improvements
2018-11-06 15:52:20 +01:00
natinusala 9e2db18480 ozone: fix sublabel wrapping 2018-11-06 15:39:38 +01:00
natinusala 7f17c50738 ozone: implement battery display 2018-11-06 14:58:17 +01:00
twinaphex c9cccfbd30 Fix title for dropdown box list special 2018-11-06 09:24:27 +01:00
twinaphex 180bb3bdd2 Implement natinusala's commit - dropdown lists - fix checked attribute
for ints, uints and floats
2018-11-06 09:22:49 +01:00
twinaphex 5984d16da9 Fix Window Width / Height settings 2018-11-05 20:53:53 +01:00
twinaphex 2e8b25a6dc Fix 'Fullscreen Width' / 'Fullscreen Height' dropdown lists 2018-11-05 20:50:32 +01:00
twinaphex c2fc821fad Audio Output Rate should use special dropdown list callbacks 2018-11-05 20:46:56 +01:00
twinaphex 165a5d7208 Fix dropdown uint item 2018-11-05 20:36:39 +01:00
Twinaphex fd2d47a9a8 Merge pull request #7537 from natinusala/ozone
Dropdown lists: Add a checked bool to menu_entry_t
2018-11-05 17:37:05 +01:00
natinusala 07068e5035 Dropdown lists: Add a checked bool to menu_entry_t 2018-11-05 17:34:57 +01:00
Twinaphex d34f96866e Merge pull request #7535 from natinusala/ozone
ozone: fix horizontal animation direction
2018-11-05 16:58:03 +01:00
natinusala 1a575dec7a ozone: fix horizontal animation direction 2018-11-05 15:48:55 +01:00
Twinaphex 9a15354314 Merge pull request #7534 from libretro/sgc-fix-context
Enable GL context for HAVE_COCOA_METAL
2018-11-05 14:57:05 +01:00
Stuart Carnie 3a64ddc287 fix(metal): Enable GL context for HAVE_COCOA_METAL 2018-11-05 06:54:46 -07:00
twinaphex 73e7a0760a Update label 2018-11-05 14:52:57 +01:00
twinaphex e37f5a2465 Update libretro-common 2018-11-05 14:47:06 +01:00
twinaphex 6c90b63835 Add 'No Favorites Available' text 2018-11-05 14:30:08 +01:00
twinaphex c55b9c8c22 Add 'No Videos Available' / 'No Images Available' text 2018-11-05 14:23:17 +01:00
twinaphex 88a71175aa Simplify some code 2018-11-05 14:02:53 +01:00
twinaphex 70ccbb6fb5 Add customized string for 'no Music Available' 2018-11-05 13:59:38 +01:00
Twinaphex 1116e9afda Merge pull request #7530 from libretro/sgc-separate
Introduce separate macOS Metal+GL source and restore GL-legacy + iOS code
2018-11-05 06:32:31 +01:00
Twinaphex db1e312da0 Merge pull request #7529 from natinusala/ozone
ozone: fix ghost sidebar when toggling menu + icons update
2018-11-05 06:31:54 +01:00
Stuart Carnie 879a1b7092 fix(cocoa): Update Metal xib to use deployment target 2018-11-04 20:50:52 -07:00
Stuart Carnie dde3545600 chore(cocoa): Revert to using cocoa_gl_ctx.m; remove macos_ctx.m 2018-11-04 20:50:51 -07:00
Stuart Carnie 43e8702e12 fix(cocoa): Copy xib for PPC compat; upgrade GL-legacy xib to 10.6 2018-11-04 20:50:51 -07:00
twinaphex 69aae94e5f (Cocoa) Dehardcode some strings
(cherry picked from commit 7c93a0934e)
2018-11-04 20:50:51 -07:00
twinaphex 512a681345 Use runloop_get_libretro_system_info in more places - clean some code up
(cherry picked from commit a662b62d19)
2018-11-04 20:50:51 -07:00
twinaphex 9a73bae868 Buildfix
(cherry picked from commit 7717631909)
2018-11-04 20:50:51 -07:00
twinaphex 0db432ca68 Add HAVE_QT ifdefs
(cherry picked from commit 9f74b05b13)
2018-11-04 20:50:51 -07:00
twinaphex 7880e11ca0 Warning fix
(cherry picked from commit fa1096a604)
2018-11-04 20:50:51 -07:00
twinaphex 04c046e831 Update
(cherry picked from commit 64cc28a487)
2018-11-04 20:50:50 -07:00
Stuart Carnie 5c1075127b chore(metal): Separate legacy GL and Metal source
* Forks of Cocoa / Cocoa Touch to *_metal.* version
* Reverted original GL Cocoa / Cocoa Touch versions
* GL and Metal projects still build
2018-11-04 20:50:50 -07:00
natinusala fd65daebbb ozone: update icons to be on par with XMB 2018-11-05 00:42:18 +01:00
natinusala ea736cea19 ozone: fix ghost sidebar when toggling menu 2018-11-05 00:28:24 +01:00
Twinaphex 1e7ee00c60 Merge pull request #7527 from alfrix/input_icons
Input icons (Quickmenu-controls)
2018-11-04 21:23:45 +01:00
Alfrix 6292c8ed2e Input icons (Quickmenu) 2018-11-04 17:15:30 -03:00
Twinaphex 183da9f83a Merge pull request #7525 from alfrix/lakka
add some icons
2018-11-04 20:15:04 +01:00
Alfrix 1b39b73b61 add some Lakka icons 2018-11-04 15:11:19 -03:00
twinaphex 52606fbc8e Should fix dropdown list UINT settings like Audio Output Rate 2018-11-04 17:21:51 +01:00
twinaphex 5a506ac16c Hide Recording settings if record driver is set to null 2018-11-04 15:51:49 +01:00
twinaphex a25ec048d4 Fix library version string 2018-11-04 15:14:08 +01:00
Twinaphex d59d42b901 Update CHANGES.md 2018-11-02 17:55:21 +01:00
Twinaphex 2a3a8ce849 Merge pull request #7518 from jdgleaver/normal2x-cpu-filter
Add Normal2x CPU filter
2018-11-02 17:55:02 +01:00
twinaphex 7ec627d41d Cleanups 2018-11-02 16:32:32 +01:00
twinaphex e374061f90 Cleanups 2018-11-02 16:30:52 +01:00
jdgleaver 7be48c8034 Add Normal2x CPU filter 2018-11-02 14:30:26 +00:00
twinaphex 1aded41b33 Add more localized strings 2018-11-02 15:29:29 +01:00
twinaphex ad6f891290 Hide MIDI settings if driver is set to null 2018-11-02 15:18:29 +01:00
twinaphex 62cf1d6c37 (NL) Update Dutch 2018-11-02 11:18:54 +01:00
Twinaphex 97c1b20a8b Merge pull request #7516 from DEX357/patch-22
Update msg_hash_pl.h
2018-11-02 03:25:12 +01:00
DEX357 f92f5366b1 Update msg_hash_pl.h 2018-11-01 13:54:14 +01:00
Twinaphex c9c833806b Merge pull request #7514 from theheroGAC/patch-38
Update msg_hash_it.h
2018-11-01 10:52:42 +01:00
theheroGAC 01864b4f6e Update msg_hash_it.h 2018-11-01 09:25:36 +01:00
hizzlekizzle af5eef427e Merge pull request #7513 from natinusala/libnx-video-recording
libnx: enable video recording
2018-10-31 20:23:44 -05:00
natinusala 49082a8c80 libnx: enable video recording 2018-11-01 01:55:05 +01:00
Twinaphex 02e43719bf Merge pull request #7511 from natinusala/ozone
Don't link WIP menu drivers by default
2018-10-31 12:29:31 +01:00
natinusala a552f26f76 Don't link WIP menu drivers by default 2018-10-31 12:02:24 +01:00
twinaphex 7c93a0934e (Cocoa) Dehardcode some strings 2018-10-30 19:32:52 +01:00
twinaphex 6cec123fc3 Try this instead 2018-10-30 18:24:37 +01:00
twinaphex e2888aa5a2 Apply madmonkeys' diff 2018-10-30 17:25:28 +01:00
twinaphex a662b62d19 Use runloop_get_libretro_system_info in more places - clean some code up 2018-10-30 17:11:07 +01:00
twinaphex 51430e9e5f Add runloop_get_libretro_system_info 2018-10-30 08:21:32 +01:00
twinaphex 6c51c4458b Cleanups 2018-10-29 07:38:26 +01:00
twinaphex 03dac742cb (task_content.c) Some more cleanups 2018-10-29 04:59:54 +01:00
twinaphex e6dfa35f9d (task_content.c) More cleanups 2018-10-29 04:48:22 +01:00
twinaphex 305a07a3f3 Create some variables for size 2018-10-29 04:43:05 +01:00
twinaphex e31c4f541a Simplify init_subsystem function 2018-10-29 04:04:25 +01:00
Twinaphex d938861f1a Merge pull request #7502 from fr500/upstream
Couple fixes
2018-10-29 01:55:15 +01:00
radius 8f2b91d95e [cheevos] fix badges 2018-10-28 19:46:23 -05:00
radius 32766f0017 [content] CRC calculation for needs_fullpath should be within else block 2018-10-28 19:40:18 -05:00
Twinaphex 57e3b313e2 Merge pull request #7499 from natinusala/ozone
ozone: load textures for every theme (#7498 workaround)
2018-10-27 23:28:38 +02:00
natinusala 7d058e61b5 ozone: load textures for every theme (#7498 workaround) 2018-10-27 23:08:20 +02:00
Twinaphex 3e04b88113 Merge pull request #7494 from p-sam/libnx-sanitize-exit
libnx: call retroarch_main_quit on exit
2018-10-27 20:23:05 +02:00
Twinaphex aeeb8e188a Merge pull request #7496 from natinusala/ozone
More ozone improvements
2018-10-27 20:16:46 +02:00
Twinaphex 39df55fec8 Merge pull request #7495 from m4xw/develop
[LIBNX] Initialize HID anyway, might fix randomly having no controls
2018-10-27 20:16:35 +02:00
natinusala 67ed8d3986 ozone: fix entries centering 2018-10-27 19:28:18 +02:00
M4xw efb71fc38e [LIBNX] Initialize HID anyway, might fix randomly having no controls 2018-10-27 19:27:24 +02:00
natinusala c9a5156e5d ozone: fix on the fly theme setting 2018-10-27 19:19:52 +02:00
natinusala b56da6919c Convert msg_hash_el.h to LF 2018-10-27 19:13:18 +02:00
p-sam 4c5c2170b6 libnx: call retroarch_main_quit on exit 2018-10-27 16:18:56 +00:00
natinusala d7be8c4cf2 ozone: fix tabs wrapping, again 2018-10-27 17:25:13 +02:00
twinaphex c00d3e809a (Ozone) Fix default value for 'Use Preferred System Color Theme' 2018-10-27 17:11:43 +02:00
twinaphex 689e612af8 (Ozone) Add 'Use System Preferred Color Theme' (enabled for Switch) 2018-10-27 17:10:53 +02:00
twinaphex 624698d2d9 (Ozone) Add menu color theme 2018-10-27 16:51:17 +02:00
Twinaphex aad127ed2c Merge pull request #7492 from lambolighting/master
Update Greek Translation
2018-10-27 15:45:19 +02:00
Twinaphex 099b04c557 Merge pull request #7493 from natinusala/ozone
Ozone libnx fixes
2018-10-27 15:44:57 +02:00
natinusala 52ab4a58a2 ozone: fix tabs wrapping 2018-10-27 14:52:26 +02:00
natinusala 8e37ad858a ozone: fix horizontal animation on libnx 2018-10-27 14:52:22 +02:00
natinusala f50b184149 ozone: build it for libnx platform, don't set it as default yet 2018-10-27 14:32:55 +02:00
LamboLighting b1c9b4919a Update Greek Translation
More updates. Most of the basic menu has been translated.
2018-10-27 11:41:56 +03:00
twinaphex 75d36ebc1f (Ozone) Button legend now responds to 'Menu Swap OK/Cancel' setting 2018-10-27 06:18:56 +02:00
twinaphex 622bef1f7a Dehardcode some more strings 2018-10-27 05:48:44 +02:00
twinaphex 9b72a3337c (Dutch) Update Dutch translation
(Ozone) Update hardcoded label
2018-10-27 05:29:28 +02:00
twinaphex 199bc744b3 (Ozone) Use strlcpy/strlcat 2018-10-27 04:47:12 +02:00
twinaphex 2fd2649eb8 Fix ton of C89 warnings/errors 2018-10-27 04:40:43 +02:00
twinaphex a4d75e3dd8 C89 buildfix 2018-10-27 02:57:50 +02:00
Twinaphex eb734e4f37 Merge pull request #7491 from natinusala/ozone
[WIP] Ozone menu driver
2018-10-27 01:10:22 +02:00
natinusala 158ddc0b2a New menu driver : ozone (Nintendo Switch lookalike) 2018-10-26 13:24:32 +02:00
Twinaphex 20b9d12914 Merge pull request #7487 from nayslayer/fix-menudriver-leaks
Fix xmb.c and stripes.c menu drivers texture memory leak
2018-10-25 19:55:48 +02:00
Twinaphex 0183361254 Merge pull request #7485 from Classicmods/master
Added Official RA "Classic" build platform including ARM7 A7 optimisations and Hakchi Build
2018-10-25 19:55:06 +02:00
Ryan 'Swingflip' Hamlin 4a4d7f5e2f Revert MM dynamic code for seperate PR and rework 2018-10-25 18:48:10 +01:00
Nay Slayer 6b96ff82de Fix xmb.c and stripes.c menu drivers texture memory leak 2018-10-25 19:40:24 +03:00
Ryan 'Swingflip' Hamlin cff8c7741c Fixed tabbing and grammar on Makefile for A7A7 2018-10-25 16:47:46 +01:00
Ryan 'Swingflip' Hamlin 2a4f42aba0 Updated wording included link to support page incase/when help is required. 2018-10-25 16:45:15 +01:00
Ryan 'Swingflip' Hamlin a45f3a2d59 Added MadMonkey's compression (and the fixes) 2018-10-25 16:30:07 +01:00
Ryan 'Swingflip' Hamlin e83ccbafe2 Updated version and updated clean for A7A7 2018-10-25 14:20:20 +01:00
Ryan 'Swingflip' Hamlin c3bfab9285 Finished up Classic Platform (hopefully) 2018-10-25 13:47:22 +01:00
Ryan 'Swingflip' Hamlin 5da7494bfc whoops 2018-10-25 13:15:41 +01:00
Ryan 'Swingflip' Hamlin 75008d0a22 Added Optimisation for A7A7 and fixed Classic platform 2018-10-25 13:11:55 +01:00
Twinaphex 86434d8e18 Merge pull request #7483 from natinusala/libnx-multitouch
libnx: add multitouch to input driver
2018-10-24 17:27:54 +02:00
natinusala ce873906fc libnx: add multitouch to input driver 2018-10-24 17:23:22 +02:00
twinaphex 07c45cadd1 Only display CRT SwitchRes settings if video display server is
implemented
2018-10-24 04:49:53 +02:00
twinaphex 183aede716 Update CHANGES.md 2018-10-24 04:44:29 +02:00
twinaphex 49b657fce2 Menu Font Green/Blue Color can now be manipulated with the GUI 2018-10-24 04:42:58 +02:00
Ryan 'Swingflip' Hamlin eff5914fa2 Forgot the new brand name lol. 2018-10-23 17:28:23 +01:00
Ryan 'Swingflip' Hamlin 63d44c0ebc Added cleanup to A7A7 2018-10-23 17:17:07 +01:00
Ryan 'Swingflip' Hamlin a8cb30b9c5 Static compiling of ARMv7 CortexA7 2018-10-23 17:16:15 +01:00
Ryan 'Swingflip' Hamlin 93ac62012d Cleaned up ARMV7A7 2018-10-23 16:55:23 +01:00
Ryan 'Swingflip' Hamlin 8d883bda4b Removed old hakchi platform 2018-10-23 16:49:11 +01:00
Ryan 'Swingflip' Hamlin ccceabc541 Added Makefile.classic_armv7_a7 2018-10-23 16:43:28 +01:00
Ryan 'Swingflip' Hamlin 899da1b87c Merge pull request #1 from libretro/master
Rebase
2018-10-23 16:35:49 +01:00
twinaphex c17135df3e Revert "Use sceCtrlIsMultiControllerSupported to detect"
This reverts commit ef10b7897d.
2018-10-23 02:42:06 +02:00
Twinaphex 805f159154 Merge pull request #7476 from stuartcarnie/sgc-cocoa-events
fix(cocoa): Use RApplication for OpenGL
2018-10-22 17:36:40 +02:00
Stuart Carnie 1e6503c0d9 fix(cocoa): Use RApplication for OpenGL 2018-10-21 15:57:05 -07:00
twinaphex e5b9ca5187 Silence code warnings 2018-10-21 05:43:23 +02:00
twinaphex 726de8e447 Apply diff to fix #6382 2018-10-21 05:40:50 +02:00
Twinaphex 0abb93228e Merge pull request #7458 from gblues/master
Capture CRC content for deferred-loading cores
2018-10-20 22:13:54 +02:00
Twinaphex 35b9167c60 Merge pull request #7468 from alfrix/unused
Fix Wunused complains
2018-10-20 22:13:02 +02:00
Twinaphex 83dca0ad0a Merge pull request #7470 from DEX357/patch-21
Update msg_hash_pl.h
2018-10-20 22:12:45 +02:00
DEX357 365fb4b4eb Update msg_hash_pl.h 2018-10-20 20:36:59 +02:00
Alfrix d5c56e4601 Rework sublabels to avoid the unhelpful enable/disable 2018-10-20 14:29:28 -03:00
Alfrix 82c3103f82 Fix Wunused complains 2018-10-20 09:50:06 -03:00
twinaphex 882a25326c Add ctr to the list too 2018-10-20 03:05:22 +02:00
Alfrix 605113a20a Remove input from main labels at the input menu 2018-10-19 10:11:28 -03:00
Alfrix 50880e6435 Remove audio from main labels at the audio menu 2018-10-19 10:01:35 -03:00
Alfrix cb7df5a665 Remove driver from main labels at the driver menu 2018-10-19 09:50:21 -03:00
Alfrix d2f472ba7a Rework some sublabels 2018-10-19 09:42:22 -03:00
Alfrix e2dd2c2d69 Remove Enable from main labels 2018-10-19 09:28:44 -03:00
Twinaphex 7f2e21de81 Merge pull request #7459 from lambolighting/master
Update Greek Translation
2018-10-19 07:45:10 +02:00
Twinaphex 342ae6e68d Merge pull request #7462 from stuartcarnie/sgc-cocoa-events
fix(cocoa): Move sendEvent implementation to RAWindow
2018-10-19 07:44:54 +02:00
Twinaphex 222e5faab8 Update CHANGES.md 2018-10-19 07:44:35 +02:00
Twinaphex a1bc9805ce Update CHANGES.md 2018-10-19 07:44:24 +02:00
twinaphex c55e65c895 Change this to vita2d 2018-10-19 07:41:41 +02:00
Stuart Carnie ab1242f368 fix(cocoa): Move sendEvent implementation to RAWindow
Introduced independent Info_Metal.plist and MainMenu_Metal.xib files,
to avoid breaking earlier builds.
2018-10-18 19:03:10 -07:00
Nathan Strong dc18196844 get rid of TODO 2018-10-18 16:44:30 -07:00
Nathan Strong d03c0be71d Rewrite file hasher to limit amount hashed
== DETAILS
Since the content file could potentially be huge, hashing the
whole thing at runtime may take a really long time. Plus, it
was loading the whole file into RAM at once.

Now, we only load 1MB at a time and hash up to the first 64MB.

== TESTING
I don't have any large content files to test it with, but I
tested it with a small one and confirmed that the hash was
correct.
2018-10-18 16:38:02 -07:00
Twinaphex 6ad2727835 Merge pull request #7461 from Themaister/master
Vulkan: Keep enable state the same after loading new overlay.
2018-10-19 00:45:14 +02:00
Themaister 66e7c73193 Keep enable state the same after loading new overlay. 2018-10-18 23:37:45 +02:00
LamboLighting 5353e29afa Update intl/msg_hash_el.h 2018-10-18 22:57:11 +03:00
Nathan Strong edacf67e75 Capture CRC content for deferred-loading cores
== DETAILS

Fixes a bug where content CRC32 is not calculated when content loading
is done by the core instead of libretro. This impacts the ability to
do accurate content matching on netplay.

This notably affects MAME, but is by no means limited to MAME.

Change summary:
- adds a method to the crc32 implementation that calculates crc32 for
  a file (as opposed to an in-memory buffer)
- fix a minor bug that would print the "core will load its own content"
  right before attempting to load compressed content
- in the actual "core will load its own content" path, calculate the CRC32
  and log it before returning

== TESTING
Tested locally on OSX:
- loaded content
- started netplay
- confirmed CRC showing in netplay data
- verified CRC32 against external crc32 tool
2018-10-18 11:26:45 -07:00
Twinaphex ad87112cfc Merge pull request #7454 from stuartcarnie/sgc-fix-events
Suppress event propagation when event is not for main RA window
2018-10-18 07:43:00 +02:00
Stuart Carnie ca0c1533e3 fix(cocoa): Suppress event propagation when event is not for RA window
This is required when the Qt window is focused.

Ideally, event handling should be reviewed and refactored such that this
hack is not necessary.
2018-10-17 22:39:45 -07:00
twinaphex 0957017a32 Update Dutch localization 2018-10-18 05:49:58 +02:00
Twinaphex af88f0ccb2 Merge pull request #7453 from stuartcarnie/sgc-fix-quit
fix: Post CMD_EVENT_QUIT directly to command event queue
2018-10-18 04:38:54 +02:00
Stuart Carnie 9370123133 fix: Post CMD_EVENT_QUIT directly to command queue 2018-10-17 19:36:18 -07:00
Twinaphex aaafa18235 Merge pull request #7452 from meleu/patch-4
added cheevos console ID for atari7800
2018-10-17 21:48:00 +02:00
meleu 87467be496 added cheevos console ID for atari7800 2018-10-17 16:37:41 -03:00
twinaphex 421e6178e5 Buildfix 2018-10-17 18:20:01 +02:00
Twinaphex f11bc8304c Merge pull request #7449 from gblues/master
Rewrite content search task
2018-10-17 07:54:00 +02:00
Twinaphex 697d8a3ba4 Update CHANGES.md 2018-10-17 07:42:01 +02:00
Nathan Strong 0abe42d9a4 Rewrite content search task
== DETAILS

In attempting to identify where netplay lobby errors were occuring,
I found that the code which does the content search was pretty messy,
so I've cleaned it up.

- Search is now more efficient. Playlists are only iterated over once,
  instead of twice.
- Error messages are more helpful
- Eliminated goto abuse
- code is easier to follow and has comments describing the logical
  flow.

== TESTING
Tested lightly locally, although hard to test thoroughly due to tight
netplay requirements.
2018-10-16 22:40:13 -07:00
twinaphex 3d731aec19 Call network_init before processing the network information list 2018-10-17 07:36:46 +02:00
twinaphex 63eff7f236 Create menu_animation_get_delta_time 2018-10-17 06:55:49 +02:00
twinaphex 4692e95fd8 Refactor 'kill by tag' and 'kill by subject' 2018-10-17 06:49:24 +02:00
twinaphex ebd8e5bbc2 Cleanup 2018-10-17 06:20:22 +02:00
twinaphex cf9341f2ea Update libretro-common 2018-10-17 05:45:43 +02:00
Twinaphex e3e4abf846 Remove some unused variables 2018-10-17 05:44:05 +02:00
twinaphex 5017063a7e Fix stripes.c 2018-10-17 05:34:59 +02:00
twinaphex 131d77875e Create menu_displaylist_setting 2018-10-17 05:33:22 +02:00
Twinaphex 927c65a1ba Update CHANGES.md 2018-10-17 04:57:47 +02:00
Twinaphex 0c3ad40249 Merge pull request #7446 from Themaister/master
Fix RGUI regression on Vulkan.
2018-10-16 23:40:54 +02:00
Themaister 3f41cd533b Fix RGUI regression on Vulkan. 2018-10-16 23:29:17 +02:00
Twinaphex b804c087fe Merge pull request #7445 from Tatsuya79/patch-6
Menu driver fallback: don't change menu for null video driver
2018-10-16 19:20:49 +02:00
Tatsuya79 d0e083ac18 Menu driver fallback: don't change menu for null video driver 2018-10-16 19:14:19 +02:00
Brad Parker a92a27a230 gdi: ignore menu_shader_pipeline setting 2018-10-16 10:30:57 -04:00
Twinaphex 2aefc7af1c Merge pull request #7443 from alfrix/master
Move Privacy settings to User
2018-10-16 04:43:36 +02:00
Alfrix 6338039ac0 Move Privacy settings to User 2018-10-15 22:32:03 -03:00
twinaphex 778c3fff73 (GL) Use shader_driver directly 2018-10-15 06:47:18 +02:00
twinaphex 9e90316da9 CXX_BUILD fixes 2018-10-15 04:01:11 +02:00
twinaphex 7717631909 Buildfix 2018-10-15 03:38:43 +02:00
twinaphex 9f74b05b13 Add HAVE_QT ifdefs 2018-10-15 03:38:15 +02:00
twinaphex 9e2d688e1d Get rid of video_context_driver_get_context_data 2018-10-15 01:27:18 +02:00
Twinaphex d854ba5c05 Merge pull request #7386 from fr500/master
force fast-save-states while netplay is enabled
2018-10-14 21:30:57 +02:00
Twinaphex cabb39fc2c Merge pull request #7438 from RetroSven/master
extend cheat searching to accommodate multiple memory pointers
2018-10-14 21:24:12 +02:00
Sven 1dcc292f41 Merge remote-tracking branch 'upstream/master' 2018-10-14 14:26:14 -04:00
Sven b48768c023 extend cheat searching to accommodate multiple memory pointers 2018-10-14 14:25:44 -04:00
Twinaphex aea73403ce Merge pull request #7437 from stuartcarnie/sgc-qt-deploy
feat(Qt): Use macdeployqt to embed Qt frameworks and plugins to .app bundle
2018-10-14 20:12:24 +02:00
Stuart Carnie 35620ffe47 feat(Metal): Add support for screen shots 2018-10-14 11:07:57 -07:00
twinaphex 6b03a95b8d Cleanup 2018-10-14 20:04:29 +02:00
twinaphex 454761a6ed Get rid of video_context_driver_bind_hw_render 2018-10-14 19:49:24 +02:00
twinaphex 2edd03361c Remove video_context_driver_check_window 2018-10-14 17:49:29 +02:00
Twinaphex d58dc3186d Merge pull request #7436 from lambolighting/master
Update Greek Translation
2018-10-14 16:45:17 +02:00
LamboLighting d4861e0952 More Greek translations and some fixes
More things translated and fixed some spelling mistakes from the previous commit.
2018-10-14 15:06:35 +03:00
waitingmoon 4e99132e23 Update JP translation (#7407)
* Update JP translation (Video and Audio)

* Update JP translation (Main Menu, Settings)

* Update JP translation (Netplay, Import)

* minor change

* Change システム to 全般

* Change 全般 to メイン (refrect 5ch users opinion)

* restore explanation of non-windowed fullscreen mode
2018-10-14 04:41:51 -04:00
twinaphex c73d13d4bc Don't use video_context_driver_check_window anymore - go call it
directly
2018-10-14 08:40:00 +02:00
twinaphex 448d2d333c Set ctx_driver 2018-10-14 08:22:26 +02:00
twinaphex e661cf3cfd Rewrite video_context_driver_init_first 2018-10-14 08:13:05 +02:00
twinaphex 2bca74bbaa Fix this 2018-10-14 08:00:42 +02:00
twinaphex 24e18fcce6 Simplify video_context_driver_init_first 2018-10-14 07:59:43 +02:00
twinaphex 4d6dfd163d Remove unused function 2018-10-14 06:00:26 +02:00
Twinaphex 2e67f4f02c Merge pull request #7435 from fr500/lanrooms
start registering the application so it can be started from discord
2018-10-14 04:25:18 +02:00
radius bf7c3f17b3 start registering the application so it can be started from discord 2018-10-13 21:09:19 -05:00
Twinaphex f0494a5645 Merge pull request #7434 from fr500/lanrooms
make discord app id configurable
2018-10-14 01:18:34 +02:00
radius 32c346a3e7 make discord app id configurable 2018-10-13 18:17:17 -05:00
Twinaphex 6662456e02 Merge pull request #7399 from fr500/cheevos
[cheevos] autoload state may kick in before achievements are loaded, …
2018-10-13 23:44:34 +02:00
Twinaphex b38f21dcc3 Merge pull request #7433 from fr500/lanrooms
fix these two
2018-10-13 23:44:19 +02:00
radius 8c9e6a7c4e fix these two 2018-10-13 16:31:58 -05:00
Twinaphex dbe35078dd (Mojave) have to bump up deployment target to OSX 10.6 2018-10-13 22:07:34 +02:00
twinaphex 84948c9b8b Backport orbea commits - don't unload content if it was never loaded -
don't deinit core when they are not inited - sorry for the long delays
2018-10-12 23:12:06 +02:00
twinaphex 4a67dd8d02 Buildfix 2018-10-12 21:31:59 +02:00
Twinaphex bd7656a80f Merge pull request #7422 from ayssia/master
Update Simplified Chinese Localization
2018-10-12 19:39:04 +02:00
Twinaphex 81fdcff708 Merge pull request #7425 from altiereslima/master
Update intl/msg_hash_pt_br.h
2018-10-12 19:38:52 +02:00
altiereslima 56a69b073f Update intl/msg_hash_pt_br.h 2018-10-12 14:15:02 -03:00
twinaphex ba020720db Add HAVE_NETPLAYDISCOVERY 2018-10-12 18:29:52 +02:00
Twinaphex 264c1ee381 Merge pull request #7424 from natinusala/libnx-network-info
libnx: add network interfaces info
2018-10-12 17:47:27 +02:00
natinusala eac0d603f4 libnx: add network interfaces info 2018-10-12 17:37:03 +02:00
Ayssia 92eb209c6f Minor Fix 2018-10-12 13:51:43 +08:00
Ayssia 7dd05d4750 Minor Fix 2018-10-12 13:10:44 +08:00
Twinaphex 75485e79a0 Merge pull request #7418 from fr500/lanrooms
enable local room discovery on WiiU
2018-10-12 03:27:51 +02:00
radius 8daff7e3da force fast-save-states while netplay is enabled 2018-10-11 20:18:40 -05:00
radius e1227b2d68 enable local room discovery on WiiU 2018-10-11 20:15:50 -05:00
twinaphex b8cb3fd4a7 (CHANGES.md) Update 2018-10-12 01:38:12 +02:00
Twinaphex 9e03e396ab Merge pull request #7414 from ayssia/master
Update simplified Chinese localization
2018-10-12 01:37:38 +02:00
Twinaphex 58f8c2eddb Merge pull request #7416 from lambolighting/master
(Language) Greek Translation of RetroArch - WIP
2018-10-12 01:35:20 +02:00
Twinaphex 58443cafe5 Merge pull request #7417 from gblues/master
WiiU: fix network information
2018-10-12 01:11:24 +02:00
Twinaphex 50682c9a46 Merge pull request #7014 from mickski56/master
address #6920 Proper analog trigger support
2018-10-12 01:08:39 +02:00
Nathan Strong c5f9fc0a34 WiiU: fix network information
== DETAILS

For local netplay, it's useful to have your IP address easily
available. This commit makes the Information > Network Information
menu display the Wii U's IP address.

Change summary:
- Fix the logging init to be reentrant to avoid socket consumption
- Add implementation of POSIX `getifaddrs()` and `freeifaddrs()`
  to `missing_libc_functions.c`
- Remove compiler directives protecting the code paths that call
  `getifaddrs()` from being used in Wii U builds

== TESTING

Have tested locally, successfully get IP address information in
the Information > Network Information.

I think this may also fix NAT traversal. Will need to be tested.
2018-10-11 15:37:15 -07:00
LamboLighting 8509132ebd (Language) Greek translation of RetroArch
First steps of the translation.
Still a WIP. Most of the menu labels have been translated. Lots of sublabels still need translation.
2018-10-12 01:22:33 +03:00
Ayssia 7d0b041bfa Fix duplicate line 2018-10-11 18:52:26 +08:00
Ayssia 7059f2b645 Major update by @loverlf 2018-10-11 18:48:36 +08:00
twinaphex 85c1de7d3a Cleanups 2018-10-11 05:05:21 +02:00
Twinaphex 21e39c0389 Cleanups 2018-10-11 05:00:49 +02:00
Ayssia 5d6c4c3a46 Minor fix & Multiline formatting 2018-10-11 10:55:56 +08:00
twinaphex 75f8e2e7a1 Revert 2018-10-11 03:52:38 +02:00
twinaphex 08e8fa3144 This shouldn't return false 2018-10-11 03:38:50 +02:00
twinaphex 49a3514147 Revert "Revert "bugfix cheat saving""
This reverts commit 9862579610.
2018-10-11 03:27:06 +02:00
twinaphex c443d6b475 Revert "Revert this - was getting crashes in both OSX and MSVC 2003"
This reverts commit 7d0dba3007.
2018-10-11 03:26:58 +02:00
twinaphex 0782c3c820 Cleanups 2018-10-11 03:26:39 +02:00
Twinaphex 77f508dccb Merge pull request #7411 from fr500/presets
fix auto shader preset loading in d3d10, d3d11, d3d12
2018-10-11 02:34:12 +02:00
radius 454efe03dc fix auto shader preset loading in d3d10, d3d11, d3d12 2018-10-10 19:02:36 -05:00
Brad Parker 2517670f80 gdi: remove unused variable 2018-10-10 17:54:38 -04:00
twinaphex 7d0dba3007 Revert this - was getting crashes in both OSX and MSVC 2003
in config_file.c inside config_get_entry
2018-10-10 23:34:16 +02:00
twinaphex 9862579610 Revert "bugfix cheat saving"
This reverts commit 4c3b06d640.
2018-10-10 23:27:19 +02:00
Twinaphex e9752fb546 Merge pull request #7409 from gblues/master
wiiu: small cleanup
2018-10-10 21:13:28 +02:00
Nathan Strong d3f8d8a08d wiiu: small cleanup
== DETAILS
- remove extraneous '+' from a manually applied diff
- fix the net_listen.sh script so it works properly on
  Mac OSX

== TESTING
Works locally.
2018-10-10 11:38:03 -07:00
twinaphex d32b08b0f4 Add split joycon settings 2018-10-10 20:31:55 +02:00
twinaphex 192d1f6dd4 Updates 2018-10-10 20:17:33 +02:00
twinaphex c2112c4cbf Commit this diff patch by gblues 2018-10-10 20:15:31 +02:00
Twinaphex f00f2e3ccf Merge pull request #7169 from GregorR/wii-u-netplay-fix
Fix netplay on Wii U
2018-10-10 20:14:24 +02:00
Twinaphex 6aba49f60f Merge pull request #7408 from ayssia/master
Update Simplified Chinese Localization
2018-10-10 19:57:05 +02:00
Ayssia eddf441a2a Minor Fix 2018-10-11 01:52:36 +08:00
Ayssia 1bda769fab Update Simplified Chinese Localization 2018-10-11 01:51:18 +08:00
twinaphex 5b4473b948 Create gl_set_core_context 2018-10-10 18:24:41 +02:00
twinaphex c3c169aeab Add this 2018-10-10 18:08:13 +02:00
Twinaphex 8c845a249e Merge pull request #7406 from RetroSven/master
bugfix cheat saving
2018-10-10 17:28:05 +02:00
twinaphex b61c67b5c6 Don't have GDI fallback to rgui 2018-10-10 17:17:02 +02:00
Sven 46d147ee95 Merge remote-tracking branch 'upstream/master' 2018-10-10 11:11:07 -04:00
Sven 4c3b06d640 bugfix cheat saving 2018-10-10 11:10:49 -04:00
Brad Parker 230a7fd7b0 Win95 buildfix 2018-10-10 10:59:49 -04:00
Twinaphex 724e135f27 Merge pull request #7405 from ayssia/master
Update Simplified Chinese Localization
2018-10-10 16:47:39 +02:00
twinaphex f336fa0337 CXX_BUILD fixes 2018-10-10 16:38:13 +02:00
Ayssia 455d0d83f0 Update Simplified Chinese Localization 2018-10-10 22:25:48 +08:00
ayssia 92075da942 Merge pull request #1 from libretro/master
merge libretro master
2018-10-10 22:22:59 +08:00
twinaphex 04cc181771 Cleanups 2018-10-10 16:18:29 +02:00
Twinaphex 1fae526337 Merge pull request #7403 from bparker06/gdi_imp
win32: Improvements to GDI drivers
2018-10-10 16:13:10 +02:00
Brad Parker b9699f4780 gdi: texture load support, fix menu text alignment, support multi-line messages 2018-10-10 09:58:49 -04:00
Twinaphex 1a55492ff1 Merge pull request #7402 from RetroSven/master
fix new rumble types ; increase max displayed cheats to 6000
2018-10-10 15:26:59 +02:00
Sven 30d4df7634 Merge remote-tracking branch 'upstream/master' 2018-10-10 09:16:39 -04:00
Sven f53e1ca4b1 fix new rumble types ; increase max displayed cheats to 6000 2018-10-10 09:15:46 -04:00
twinaphex 641d593216 Add note 2018-10-10 05:32:00 +02:00
twinaphex 4ed151fb35 Cleanups - don't set core profile bit immediately 2018-10-10 05:30:50 +02:00
twinaphex a31cf3c868 Bake in MD5 2018-10-10 04:49:40 +02:00
twinaphex b46ce0dec9 Buildfix 2018-10-10 04:36:53 +02:00
twinaphex d1022d9040 Cleanups 2018-10-10 04:32:36 +02:00
twinaphex 13a0274f57 Localize some strings 2018-10-10 04:25:11 +02:00
twinaphex f1c5b268ca Hide Quick Menu properly 2018-10-10 04:00:51 +02:00
radius 6dc8862220 [cheevos] autoload state may kick in before achievements are loaded, disable autoload state altogether if cheevos hardcode is enabled 2018-10-09 19:07:05 -05:00
twinaphex 1b1a0c8d27 Stub this out for GEKKO 2018-10-10 02:01:34 +02:00
Twinaphex 2a46d73c95 Merge pull request #7397 from alfrix/master
Use subsetting as placeholder icon until themes are updated
2018-10-10 01:45:46 +02:00
Alfrix 304b4f3f57 Use subsetting as placeholder until themes are updated 2018-10-09 20:31:19 -03:00
Twinaphex 1ffcd2795a Merge pull request #7396 from alfrix/master
WIP New Netplay icons
2018-10-10 01:13:41 +02:00
Twinaphex 26e88c6af0 Merge pull request #7395 from meepingsnesroms/master
Disable all the non working defines for 3DS
2018-10-10 01:13:25 +02:00
Alfrix fa03a634d0 New Netplay icons 2018-10-09 19:52:28 -03:00
meepingsnesroms 96b8099015 Disable all the non working defines for 3DS
The network stuff I started implementing and never finished and the threads are broken for an unknown reason.

This basicly just disabled the menu options associated with these things as none of them are currently working
2018-10-09 15:44:03 -07:00
twinaphex c02536af08 Roll all this back 2018-10-09 20:42:47 +02:00
Twinaphex 28b18fe4c2 Merge pull request #7394 from flyinghead/fh/nogl-fix
Do not force the requested hw context to be Open GL
2018-10-09 20:37:45 +02:00
flyinghead 8d586e1a0c Do not force the requested hw context to be Open GL 2018-10-09 20:31:40 +02:00
Twinaphex 8bd0c84e03 Merge pull request #7392 from flyinghead/fh/gl4-reinit-fix
Update the rendering context with the GL version whether it is a core context
2018-10-09 19:45:42 +02:00
flyinghead c11e47b08a Checking for core context returns an error in GL3
This error should be ignored.
Mac build fix
2018-10-09 19:27:55 +02:00
Flyinghead d4815084ec Update the rendering context with the GL version whether it is a core context 2018-10-09 17:58:36 +02:00
twinaphex a27bce38cd Simplify gl_get_context 2018-10-09 16:46:40 +02:00
twinaphex f277489efc Comment out pthread attr for 3DS 2018-10-09 15:35:39 +02:00
twinaphex 0b3ac4e39d Fix C++ comment 2018-10-09 15:28:09 +02:00
Twinaphex d191517ac5 Merge pull request #7388 from ayssia/master
Update Simplified Chinese localization
2018-10-09 15:26:29 +02:00
Ayssia 1fab4cfd2b Fix typo 2018-10-09 21:17:13 +08:00
Ayssia 7f0c73f67a Update Simplified Chinese localization 2018-10-09 14:57:24 +08:00
waitingmoon a49253cb6e Update JP translation (#7371)
* Update JP translation

* Update msg_hash_ja.h
2018-10-08 23:30:01 -04:00
Brad Parker 262634739c xmb: increase sublabel size limit to handle longer strings (especially CJK languages) 2018-10-08 23:29:17 -04:00
twinaphex 0d699208d3 Update rthreads 2018-10-09 03:55:34 +02:00
twinaphex 521b978d31 Add sthread_create_with_priority - missing functionality from desmume
rthreads implementation
2018-10-09 03:43:34 +02:00
Twinaphex dc36691f2c Update CHANGES.md 2018-10-09 01:31:30 +02:00
Twinaphex 6cf0f1b08c Update CHANGES.md 2018-10-09 01:27:20 +02:00
Twinaphex 0309d62bc9 Merge pull request #7377 from WerWolv98/master
Updated German translation
2018-10-09 01:25:57 +02:00
Twinaphex a6cd8abb90 Merge pull request #7381 from ayssia/master
Update Simp. Chinese Localization
2018-10-09 01:25:43 +02:00
twinaphex 4468671cef Go back to this version by radius - the other one didn't work 2018-10-09 01:15:47 +02:00
twinaphex 1bd91193fd (Menu) All the ident names should be identical to the video driver ident names 2018-10-09 01:05:46 +02:00
twinaphex 57adfe0141 (WIIU) menu_display_wiiu.c should have the same ident name as the video driver 2018-10-09 01:03:29 +02:00
Twinaphex 4c8e0c808a Merge pull request #7385 from alfrix/master
Update PS3 icon
2018-10-08 21:48:03 +02:00
Alfrix 2ef314e27d Update PS3 icon 2018-10-08 16:39:04 -03:00
twinaphex 508e5efdd7 Revert "Should hopefully fix Reicast issues"
This reverts commit 509ecab3fe.
2018-10-08 18:54:26 +02:00
twinaphex 509ecab3fe Should hopefully fix Reicast issues 2018-10-08 15:39:00 +02:00
Twinaphex 22dafd6251 Merge pull request #7383 from natinusala/nx-input-capabilities
switch_input: add pointer capabilities for libnx
2018-10-08 14:39:26 +02:00
natinusala 57db04b389 switch_input: add pointer capabilities 2018-10-08 14:36:03 +02:00
Ayssia a2548288b3 Update Simplified Chinese Localization 2018-10-08 17:15:22 +08:00
Ayssia 6748efe020 Fix duplicate line 2018-10-08 11:44:49 +08:00
Ayssia ec793c7955 Update Simp. Chinese Localization 2018-10-08 11:40:22 +08:00
Ayssia 4abc718f05 Update Simp. Chinese Localization 2018-10-08 11:17:48 +08:00
twinaphex 247b21b151 (platform_switch.c) Set retro_rating level to 11 - some minor
cleanups
2018-10-08 04:20:07 +02:00
WerWolv f35ee6c0c1 Updated German translation 2018-10-07 22:32:41 +02:00
Twinaphex 58dac5c0a5 Merge pull request #7375 from ayssia/master
Update Simplified Chinese Localization
2018-10-07 14:32:42 +02:00
Ayssia 7771b0db10 Fix typo 2018-10-07 14:00:27 +08:00
Ayssia 5b92570f50 Update Simplified Chinese Localization 2018-10-07 12:00:09 +08:00
Ayssia cb9ff15cc4 Update Simplified Chinese Localization 2018-10-07 10:47:31 +08:00
twinaphex 4d8a3db02f (iOS) Fix issue https://github.com/libretro/RetroArch/issues/7298#issuecomment-427618317 2018-10-07 04:33:06 +02:00
Twinaphex c29654b504 Merge pull request #7332 from grimpunch/master
Date Time setting for AM:PM as an option
2018-10-07 02:31:21 +02:00
Ayssia 8269d6837c Update Simplified Chinese Localization 2018-10-07 01:33:42 +08:00
Stuart Carnie 4240c895bf fix(macOS/Qt): Rename produce RetroArchQT → RetroArch (#7374) 2018-10-06 12:27:53 -04:00
twinaphex c496657556 Fix issue with GL 2018-10-06 17:52:03 +02:00
twinaphex 7260e52a23 Make improved version of this - https://github.com/libretro/RetroArch/pull/7350/commits/873d60151fb7ff88fca5353a02b498dff7fc964b 2018-10-06 17:48:12 +02:00
twinaphex 50eb4adc4b (libnx) Use audio_switch_thread by default 2018-10-06 17:35:52 +02:00
twinaphex cf5b8a5fca (libnx) Enable threaded video by default 2018-10-06 17:34:35 +02:00
twinaphex 31ba215c94 Update GLSM 2018-10-06 17:05:06 +02:00
twinaphex 9b68aa23a9 (libnx) Add HAVE_LANGEXTRA 2018-10-06 16:30:55 +02:00
Twinaphex d628e01247 Merge pull request #7373 from natinusala/lakka-switch
Added Lakka Switch menu entries + translations + default config
2018-10-06 15:53:33 +02:00
natinusala 8250007b8e Added Lakka Switch menu entries 2018-10-06 15:44:37 +02:00
twinaphex f1e7e0c5f7 Update GLSM 2018-10-06 15:40:48 +02:00
twinaphex 22424fce0f Update libretro-common 2018-10-06 15:16:33 +02:00
twinaphex 1cb4a0a34f Update 2018-10-06 15:15:37 +02:00
Twinaphex 088a7ed60d Merge pull request #7372 from gvbr/build
Fix error when compiling without cheevos
2018-10-06 14:05:24 +02:00
gvbr f11bb03825 Fix error when compiling without cheevos 2018-10-06 04:37:37 -07:00
twinaphex 09c8e52387 Cleanups 2018-10-06 04:23:57 +02:00
twinaphex f94d7e07af Cleanups 2018-10-06 04:20:54 +02:00
twinaphex 653544d4c3 Cleanups 2018-10-06 04:13:58 +02:00
twinaphex 944ca22d76 Localize some strings 2018-10-06 04:11:01 +02:00
Christian Murphy 61285cfd4b Merge pull request #1 from bparker06/ampm_mb
convert AM/PM string from local encoding to utf8
2018-10-06 02:21:19 +01:00
Twinaphex 41de006be6 Update CHANGES.md 2018-10-06 02:58:03 +02:00
Brad Parker 7366a46bc2 convert AM/PM string from local encoding to utf8 2018-10-05 19:02:50 -04:00
=Christian Murphy 017d1b710e Restore default time mode, replace non-sensical time date formats with more commonly used ones 2018-10-05 23:11:38 +01:00
Dan Weiss 75a1ea749b Fix missing BOM markers (#7367) 2018-10-04 19:42:41 -04:00
Twinaphex 1b96d82cf2 Merge pull request #7366 from casdevel/midi
Add ALSA MIDI driver
2018-10-04 23:34:39 +02:00
Zoran Vuckovic c1662ded34 Add ALSA MIDI driver 2018-10-04 21:48:11 +02:00
waitingmoon cdea2a0ba6 Update msg_hash_ja.h (#7363) 2018-10-04 13:34:04 -04:00
twinaphex 4206d7ac8a Silence warnings 2018-10-04 16:40:47 +02:00
twinaphex 57c77a9a28 Silence more warnings 2018-10-04 16:32:40 +02:00
twinaphex 0ba8597041 Cleanups/silence warnings 2018-10-04 16:24:10 +02:00
Twinaphex 295e39300c Update CHANGES.md 2018-10-04 05:46:36 +02:00
Twinaphex 982c3df480 Update CHANGES.md 2018-10-04 05:45:21 +02:00
Twinaphex 34ed72fcd0 Update CHANGES.md 2018-10-04 05:44:26 +02:00
Twinaphex 532e815e32 Update CHANGES.md 2018-10-04 05:43:42 +02:00
Twinaphex a4834270fc Merge pull request #7315 from waitingmoon/patch-4
Update msg_hash_ja.h
2018-10-04 02:15:50 +02:00
Twinaphex c7b7661340 Merge branch 'master' into patch-4 2018-10-04 02:15:17 +02:00
Twinaphex 212c3b399d Merge pull request #7361 from rsn8887/master
[SWITCH] Use proper button labels
2018-10-04 02:10:37 +02:00
rsn8887 827aa4936a [SWITCH] Use proper button labels 2018-10-03 18:50:33 -05:00
Twinaphex a7e96cd9d4 Merge pull request #7357 from theheroGAC/patch-37
Update msg_hash_it.h
2018-10-03 21:38:18 +02:00
Twinaphex 43bbb5b231 Merge pull request #7349 from RetroSven/master
fix gdi scanning
2018-10-03 21:38:00 +02:00
theheroGAC 748bc6cf4d Update msg_hash_it.h 2018-10-03 21:05:16 +02:00
Twinaphex 1924673700 Merge pull request #7356 from natinusala/libnx-touch2
libnx: improve touch scaling calc
2018-10-03 20:43:40 +02:00
natinusala a5f122a84e libnx: improve touch scaling calc 2018-10-03 18:50:36 +02:00
Brad Parker 826c77d523 style cleanup 2018-10-02 16:56:40 -04:00
waitingmoon cf939aefe2 Update msg_hash_ja.h
minor change
2018-10-03 04:50:05 +09:00
Sven b6aec689fe Merge remote-tracking branch 'upstream/master' 2018-10-02 15:16:05 -04:00
Sven fc40e6ac85 fix gdi scanning - database only contains crcs for track 1 - so do not try to find largest track - just stop on track 1 2018-10-02 15:15:45 -04:00
Sven 7271cba7f0 do not display applying cheat message unless there are actually cheats (#7348)
* do not display applying cheat message unless there are actually cheats

* code style

* style
2018-10-02 14:10:17 -04:00
twinaphex 64b2e6ea5f Update platform_unix.c 2018-10-02 20:08:23 +02:00
Sven ce8dc3634f style 2018-10-02 14:06:40 -04:00
Sven 4d0547adcd code style 2018-10-02 14:03:59 -04:00
Sven c204d7b33f do not display applying cheat message unless there are actually cheats 2018-10-02 13:58:58 -04:00
Twinaphex 075a5eff5a Update CHANGES.md 2018-10-02 19:13:21 +02:00
=Christian Murphy 940a03f552 Linux friendly datetime locale settings, slightly less friendly datetime locale settings for Windows 2018-10-01 23:32:54 +01:00
twinaphex c9c6c5a5a6 Bump up APK codes 2018-10-01 21:45:07 +02:00
twinaphex a70057a5c8 Update CHANGES.md 2018-10-01 21:42:43 +02:00
twinaphex bba6f438cf Cleanups; set pointer_enable for libnx 2018-10-01 21:42:05 +02:00
Twinaphex 8fc474e8c5 Merge pull request #7344 from natinusala/libnx-touch
libnx: added touch support
2018-10-01 21:38:01 +02:00
natinusala fef4448ddb libnx: added touch support 2018-10-01 21:22:21 +02:00
Twinaphex 997ff1968f Merge pull request #7343 from m4xw/libnx
[LIBNX] Split non-inline functions from the header, increase stack
2018-10-01 21:18:04 +02:00
M4xw b8ec926078 [LIBNX] Split non-inline functions from the header, increase stack 2018-10-01 21:12:59 +02:00
twinaphex 0ed42e2920 Add some more to CHANGES.md 2018-10-01 17:52:24 +02:00
Twinaphex 30ee9d4a3d Update CHANGES.md 2018-10-01 17:20:28 +02:00
Twinaphex bef0127348 Merge pull request #7342 from natinusala/libnx-cheevos
libnx: enable cheevos
2018-10-01 17:18:11 +02:00
natinusala eb6d384798 libnx: enable cheevos 2018-10-01 16:38:34 +02:00
twinaphex 983c234a3e Update libretro.h 2018-10-01 16:23:08 +02:00
twinaphex 7a72619eff Update libretro-common 2018-10-01 15:50:41 +02:00
twinaphex 3dcefa9316 Update libretro.h 2018-10-01 15:49:54 +02:00
twinaphex ac14ea6d01 Go back to old cheevos 2018-10-01 15:02:51 +02:00
Brad Parker ead5b2c0f7 doxygen: quiet output 2018-09-30 23:37:45 -04:00
twinaphex 85ed60cf9a Cleanups 2018-10-01 03:46:12 +02:00
twinaphex fa1096a604 Warning fix 2018-10-01 03:43:53 +02:00
twinaphex 3ec182110a Buildfix 2018-10-01 03:42:54 +02:00
twinaphex 2c546597b4 Don't bake in cheevos for C89 for now until issues are fixed 2018-10-01 03:33:54 +02:00
twinaphex 072848445c Fix some C89_BUILD errors 2018-10-01 03:31:13 +02:00
twinaphex f0c684707f Fix C89_BUILD 2018-10-01 03:28:39 +02:00
Twinaphex 1bba09461b Merge pull request #7338 from libretro/emscripten-docs
Add Emscripten compile documentation
2018-10-01 03:24:29 +02:00
twinaphex 4ec5197bc9 Update CHANGES.md 2018-10-01 03:21:11 +02:00
Twinaphex e774faf45d Merge pull request #7339 from RobLoach/stb-truetype-check
Add STB TrueType Support Check
2018-10-01 03:06:56 +02:00
Rob Loach b523b9ec22 Add check for STB TrueType 2018-09-30 20:42:09 -04:00
Rob Loach 5a870f9190 Add language entry for STB TrueType support 2018-09-30 20:38:59 -04:00
Rob Loach db46d91ec6 emscripten: Add Emscripten compile documentation
This adds some documentation about compiling emscripten.
2018-09-30 20:23:05 -04:00
Twinaphex 20cc284d57 Update CHANGES.md 2018-10-01 02:17:28 +02:00
Twinaphex 8548e00503 Merge pull request #7335 from fr500/master
use stb font in emscripten (untested)
2018-10-01 02:15:28 +02:00
twinaphex 7245cb2732 Add Reset To Defaults setting 2018-10-01 02:13:53 +02:00
Twinaphex d4d9ec97a7 Merge pull request #7337 from libretro/coverity_scan
Coverity scan
2018-10-01 02:02:24 +02:00
Twinaphex cd40b26c39 Update CHANGES.md 2018-10-01 02:01:56 +02:00
twinaphex cbcc1a5ef4 Update 2018-10-01 02:00:07 +02:00
twinaphex f457dea880 Don't show Joy-Con Split for non-Switch 2018-10-01 02:00:07 +02:00
twinaphex 60eb45c102 prevent some pointer grabbing 2018-10-01 02:00:07 +02:00
twinaphex 7367407ee4 Update 2018-10-01 01:59:36 +02:00
twinaphex 146f445774 Don't show Joy-Con Split for non-Switch 2018-10-01 01:59:10 +02:00
twinaphex a098ce9fdd prevent some pointer grabbing 2018-10-01 01:54:56 +02:00
Twinaphex 85bf71c0c2 Update CHANGES.md 2018-10-01 01:38:03 +02:00
twinaphex 527228e571 Add L + R Menu toggle 2018-10-01 01:36:53 +02:00
Twinaphex 6847bb8845 Merge pull request #7336 from libretro/switch_nxlink_threading
Switch nxlink threading
2018-10-01 01:31:17 +02:00
lifajucejo 8ad8ec5344 [LIBNX] Removed extraneous logging when blocked in switch_audio 2018-09-30 19:09:20 -04:00
lifajucejo c39bc4ecab [LIBNX] Synchronize nxlink logging
- Logs were interleaved and caused instability on certain setups
2018-09-30 19:09:20 -04:00
twinaphex 77fba6d58d (Vulkan) Silence warning 2018-10-01 00:41:29 +02:00
radius 3c8264e9f2 use stb font in emscripten (untested) 2018-09-30 17:41:24 -05:00
twinaphex 4f2c108088 Add another toggle 2018-10-01 00:21:07 +02:00
Twinaphex c8a764177e Merge pull request #7334 from m4xw/libnx
[LIBNX] Add Split Joycon support
2018-10-01 00:13:16 +02:00
M4xw be85ec4627 [LIBNX] Add Split Joycon support 2018-10-01 00:03:57 +02:00
twinaphex 8cd07ab692 (3DS) Add rcheevos include dir 2018-09-30 23:50:41 +02:00
twinaphex 97e4687f1b Move Split Joy-Con options 2018-09-30 23:49:38 +02:00
twinaphex a3f98a21f8 Add split joycon setting 2018-09-30 23:39:31 +02:00
=Christian Murphy b3cf7150d5 Date Time setting for AM:PM as an option 2018-09-30 18:01:43 +01:00
Twinaphex cb21aa91cc Merge pull request #7331 from RetroSven/master
do not initialize cheat system if memory size is 0 to avoid potential NPE
2018-09-30 18:14:03 +02:00
Brad Parker 4d41488963 Qt: disable item changed signal while populating file browser 2018-09-30 12:05:55 -04:00
Sven 11d2b5c9fb Merge remote-tracking branch 'upstream/master' 2018-09-30 11:44:49 -04:00
Sven adeff434fd do not initialize cheat system if memory size is 0 to avoid potential NPE 2018-09-30 11:44:37 -04:00
Twinaphex 1f3bdde45c Merge pull request #7330 from RetroSven/master
add sublabels to the new cheat options
2018-09-30 16:26:57 +02:00
Sven 9ab3b1715d Merge remote-tracking branch 'upstream/master' 2018-09-30 10:22:57 -04:00
Sven 183d722b56 add sublabels to the new cheat options 2018-09-30 10:22:28 -04:00
waitingmoon 908574f3c4 Update msg_hash_ja.h 2018-09-30 22:23:04 +09:00
Twinaphex 2e562d39e7 Merge pull request #7329 from leiradel/master
Updated rcheevos to 7.1.1
2018-09-30 14:36:25 +02:00
leiradel e3eff970f9 Updated rcheevos to 7.1.1 2018-09-30 13:06:42 +01:00
twinaphex 9387eb559f (MSVC 2017) Fix MSVC 2017 2018-09-30 13:48:58 +02:00
twinaphex 2125f92281 Silence warnings/cleanups 2018-09-30 13:43:56 +02:00
twinaphex 2d652663af (MSVC 2015) Buildfix 2018-09-30 13:41:21 +02:00
twinaphex 4c23fa02e9 (MSVC 2013) Fix build for rcheevos
(MSVC) Fix some warnings; unused variables, etc.
2018-09-30 13:38:58 +02:00
twinaphex ac51c0013c Fix typo 2018-09-30 13:33:53 +02:00
Twinaphex d74fd1e0f7 Merge pull request #7327 from m4xw/libnx_stb
[LIBNX] Enable Stb font
2018-09-30 04:38:54 +02:00
M4xw 373bf932b3 [LIBNX] Enable Stb font 2018-09-30 04:33:00 +02:00
Twinaphex bbdf32cf1e Merge pull request #7326 from m4xw/freetype
[LIBNX] Remove freetype again
2018-09-30 04:14:55 +02:00
M4xw 48056e41fc [LIBNX] Remove freetype again 2018-09-30 04:12:25 +02:00
twinaphex fe8a9d7dc3 Cleanups 2018-09-30 03:09:49 +02:00
twinaphex f4d86ddddc Fix OSX PPC 2018-09-30 02:55:34 +02:00
Twinaphex d9da21f1ff Merge pull request #7325 from m4xw/libnx
[LIBNX] Fix dummy core
2018-09-30 02:35:38 +02:00
M4xw 808368b577 [LIBNX] Fix dummy core 2018-09-30 02:31:38 +02:00
Twinaphex be4557c277 Update CHANGES.md 2018-09-30 01:51:59 +02:00
Twinaphex e63b771fd4 Merge pull request #7324 from RetroSven/master
add cheat variables to allow for updating large portions of memory
2018-09-30 01:51:36 +02:00
twinaphex 4c5638f89d Fix libnx URL 2018-09-30 01:50:29 +02:00
twinaphex de02353983 Update Visual Studio solutions 2018-09-29 21:33:44 +02:00
Twinaphex c4d0cdc7ea Get rid of some unused variables 2018-09-29 21:19:06 +02:00
Twinaphex b747208a7b Fix Metal Qt build 2018-09-29 21:14:04 +02:00
twinaphex 5b4500141d Add RC_DISABLE_LUA for now for non-Makefile.common targets as general
precaution
2018-09-29 21:08:35 +02:00
twinaphex b526e1bff2 Add missing rcheevos 2018-09-29 20:58:39 +02:00
Twinaphex 433f2d8fe6 Update Metal pbxproj 2018-09-29 20:55:00 +02:00
Sven 25b5a7e3b8 add cheat variables to allow for updating large portions of memory - e.g. unlock all levels 2018-09-29 14:52:10 -04:00
twinaphex aaf48bdef0 Add include dirs for OSX/iOS 2018-09-29 20:51:36 +02:00
twinaphex fcc4454c9d Update griffin.c 2018-09-29 20:48:05 +02:00
twinaphex a44c9bf011 Update Android Makefiles 2018-09-29 20:45:08 +02:00
twinaphex fb2846f0a2 Add another include dir for Android 2018-09-29 20:28:18 +02:00
twinaphex 469f6b45bc Change message 2018-09-29 20:16:48 +02:00
Twinaphex c4a7ac39dc Merge pull request #7321 from leiradel/integrate_rcheevos
Integrate rcheevos
2018-09-29 20:12:47 +02:00
twinaphex 3e8bd3473b Add failsafe when there are no network devices found 2018-09-29 20:12:00 +02:00
Andre Leiradella 46e621b4a0 Don't use long long in Lua 2018-09-29 19:07:00 +01:00
Twinaphex 14afecd700 Merge pull request #7323 from fr500/master
Packaging update
2018-09-29 19:55:19 +02:00
Andrés bf2af7cada Merge pull request #2 from m4xw/libnx
Libnx
2018-09-29 12:47:29 -05:00
M4xw 694af39c9c [LIBNX] Update hb icon 2018-09-29 19:46:46 +02:00
radius 78714d92dc update dist-cores again 2018-09-29 12:46:19 -05:00
M4xw da5bf9659e [LIBNX] dist-cores cleanup, add hbmenu icon 2018-09-29 19:40:55 +02:00
Andre Leiradella 77df31256d Only build Lua if HAVE_LUA is defined; define HAVE_LUA by default
Define RC_DISABLE_LUA if HAVE_LUA is not defined
2018-09-29 18:39:29 +01:00
Andre Leiradella 3aa200e3ba Updated rcheevos to 7.1.0 2018-09-29 18:38:21 +01:00
M4xw 6b24ca4632 [LIBNX] Add Static Dummy 2018-09-29 19:36:15 +02:00
M4xw 7a841eae24 [SWITCH] Change platform dir layout to match unix, fixes autodetect 2018-09-29 19:36:14 +02:00
M4xw af21a6ad36 [LIBNX] Prefered default for Analog DPAD Mode 2018-09-29 19:36:14 +02:00
M4xw 0a70d92da5 [LIBNX] Add HAVE_UPDATE_ASSETS and cleanup 2018-09-29 19:36:13 +02:00
M4xw 03ad3b5c30 [LIBNX] Remove task_autodetect workaround 2018-09-29 19:36:12 +02:00
Twinaphex 7ae781ecc5 Merge pull request #7322 from fr500/master
update dist-cores for switch
2018-09-29 19:25:43 +02:00
radius 04ac076927 update dist-cores for switch 2018-09-29 12:20:43 -05:00
Andre Leiradella 60010b4545 Updated rcheevos to 7.0.2 2018-09-29 16:04:49 +01:00
twinaphex 67347205d4 Simplify function callback 2018-09-29 15:39:03 +02:00
Andre Leiradella 48e9dd6baf Merge branch 'master' into integrate_rcheevos 2018-09-29 14:33:31 +01:00
twinaphex dbf7e89a87 Simplify some code 2018-09-29 15:31:11 +02:00
Twinaphex 78fea999a7 Merge pull request #7319 from m4xw/libnx_freetype
[LIBNX] Add freetype, force freetype off on thread. Add Shaderpipeline define.
2018-09-29 11:48:11 +02:00
M4xw b4ae829b3f [LIBNX] Workaround for freezes caused by freetype with video threaded, revert later 2018-09-29 03:01:41 +02:00
M4xw 41c1b5ce97 [LIBNX] Add freetype 2018-09-29 02:59:31 +02:00
Twinaphex 2bac4a414a Merge pull request #7318 from fr500/master
[libnx] this will be required for core updater
2018-09-29 01:41:04 +02:00
radius cca7b55d3f [libnx] this will be required for core updater 2018-09-28 18:39:57 -05:00
twinaphex f1f2377826 (WiiU) Use MIN/MAX 2018-09-29 01:20:35 +02:00
Twinaphex 1793540218 Merge pull request #7317 from m4xw/libnx_gfx
[LIBNX] Fix Switch video driver with enabled GL build
2018-09-28 23:01:49 +02:00
M4xw a8555a76c5 [LIBNX] Fix Switch video driver with enabled GL build 2018-09-28 22:53:46 +02:00
twinaphex b0dd64c9f3 Change function prototype for scissor_end 2018-09-28 22:52:00 +02:00
twinaphex 4a305a8652 (libnx) Add buildbot server URL 2018-09-28 22:47:27 +02:00
twinaphex 29b4da6643 (GX2) Implement end_scissor 2018-09-28 22:40:23 +02:00
twinaphex fcaced91cc (GX2) Implement scissoring for GX2 2018-09-28 22:33:58 +02:00
twinaphex 624ffc98c1 (Vulkan) Implement scissoring for Vulkan 2018-09-28 22:00:47 +02:00
twinaphex b108dafa3e Enlarge strings to avoid warnings 2018-09-28 21:49:06 +02:00
twinaphex 1012416b67 Change size of video_driver_window_title to 512 2018-09-28 21:43:23 +02:00
twinaphex 761644ee57 Increase size of string to 8192 2018-09-28 21:42:09 +02:00
twinaphex 931397671f Increase size of string to silence warning 2018-09-28 21:40:17 +02:00
waitingmoon a6836584c7 Update msg_hash_ja.h 2018-09-28 23:23:51 +09:00
Twinaphex f7e4f440c8 Merge pull request #7311 from m4xw/libnx
[LIBNX] GL by default, enable XMB, rgui color changes for Libnx only
2018-09-28 11:09:24 +02:00
twinaphex ababce6461 Hide Resampler Quality setting 2018-09-28 11:05:19 +02:00
Twinaphex 335230fc24 Merge pull request #7314 from asakous/master
update traditional chinese translation
2018-09-28 10:42:01 +02:00
Twinaphex acb9921ab3 Merge pull request #7312 from lifajucejo/switch_networking
Add networking support to libnx
2018-09-28 10:41:38 +02:00
Twinaphex f62e2f4a9f Merge pull request #7313 from lifajucejo/switch_battery
Add battery percentage (psm) to switch
2018-09-28 10:29:11 +02:00
Matthew Wang e904fa851e update traditional chinese translation 2018-09-28 15:46:31 +08:00
lifajucejo a1aec9a870 Add battery percentage (psm) to switch 2018-09-27 23:52:08 -04:00
M4xw ef736d02c2 [LIBNX] Improve Threading, Fix Video Threaded. Scan content no longer crashes. 2018-09-28 03:24:12 +02:00
lifajucejo 9be2321c02 Add networking support to libnx 2018-09-27 21:23:01 -04:00
M4xw 26eca6bbd6 [LIBNX] Don't enable custom rgui bg colors for OpenGL build and change ifdef to libnx only 2018-09-28 02:38:58 +02:00
M4xw 2b564781b6 [LIBNX] Enable default OpenGL Build, enable XMB 2018-09-28 02:35:40 +02:00
Twinaphex 4ad6a5f683 Merge pull request #7310 from m4xw/libnx_ci
[LIBNX] Add dist-cores target
2018-09-28 01:18:59 +02:00
M4xw 6195f6360a Add libnx dist-cores target 2018-09-28 01:10:25 +02:00
M4xw 520f242051 [LIBNX] Change static lib name to libretro_libnx.a 2018-09-28 01:05:46 +02:00
Twinaphex 0aef172fff Merge pull request #7309 from alfrix/spanish
Spanish Update
2018-09-28 00:07:05 +02:00
Andre Leiradella d67aa83f48 Merge branch 'master' into integrate_rcheevos 2018-09-27 21:48:34 +01:00
Andre Leiradella 793205e457 Updated rcheevos to 7.0.1 2018-09-27 21:45:50 +01:00
Alfrix 307630722c Correct styling in msg_hash_us 2018-09-27 17:40:08 -03:00
Alfrix 9dfa48395e Update Spanish 2018-09-27 17:38:33 -03:00
Twinaphex 6dc232dd65 Merge pull request #7308 from alfrix/master
Add Recording and Streaming icons
2018-09-27 22:38:25 +02:00
Alfrix 7a66be2346 Add Recording and Streaming icons 2018-09-27 17:18:04 -03:00
Twinaphex 7c2291cc62 Merge pull request #7307 from m4xw/develop
[LIBNX] Mesa EGL backend has been fixed, remove workaround.
2018-09-27 21:03:00 +02:00
M4xw be2cba3200 [LIBNX] Mesa EGL backend has been fixed, remove workaround. 2018-09-27 20:02:30 +02:00
twinaphex 519cd84265 Fix hotkeys for streaming toggle/recording toggle 2018-09-27 19:06:39 +02:00
twinaphex 67fdd53263 implement recording/streaming hotkeys 2018-09-27 18:58:41 +02:00
Brad Parker acd40ff899 add doxygen file 2018-09-27 10:10:56 -04:00
twinaphex c9b6df10f2 Add HAVE_NETWORKING ifdef around these menu entries 2018-09-27 14:17:34 +02:00
twinaphex 9dde33b5c1 Cleanups 2018-09-27 14:02:11 +02:00
twinaphex a52b6a2c16 Add Streaming Title setting 2018-09-27 13:38:32 +02:00
twinaphex 0a9c78c26d Cleanup 2018-09-27 13:14:32 +02:00
twinaphex 3dc303f929 Take out this ifdef 2018-09-27 11:55:36 +02:00
twinaphex ddc256e410 Take out the HAVE_FFMPEG ifdefs 2018-09-27 11:53:27 +02:00
twinaphex ebcf4c5a95 Only show this if recording driver is not NULL 2018-09-27 11:50:26 +02:00
Twinaphex 1baf58716f Merge pull request #7302 from fr500/master
[record] streaming & recording refinements
2018-09-27 11:47:57 +02:00
twinaphex f588ea8d76 Take out this ifdef 2018-09-27 10:44:58 +02:00
Twinaphex c4da97aeed Merge pull request #7303 from m4xw/libnx_opengl
[LIBNX] Threading changes, implement OpenGL support, Font fix
2018-09-27 10:25:49 +02:00
radius c0f9f7b9a9 [recording] update streaming url at startup and whenever the stream keys are updated 2018-09-26 21:40:57 -05:00
radius 70dcdc7cf0 [record] fixes 2018-09-26 20:04:08 -05:00
radius 2c59716e77 [record] refinements 2018-09-26 18:46:00 -05:00
M4xw fd155db9cc [LIBNX] Fix font driver 2018-09-27 01:23:29 +02:00
M4xw 870cd941e3 Build fix if HAVE_NETWORKING isn't defined 2018-09-27 01:23:28 +02:00
M4xw cf097d7f42 [LIBNX] Implement OpenGL 2018-09-27 01:23:24 +02:00
radius ef3677633c [record] fix logging 2018-09-26 18:00:39 -05:00
radius 7fc210a0c3 [record] fix some defaults and value ranges 2018-09-26 17:55:47 -05:00
M4xw 72ed1c0b82 [LIBNX] Threading; Use a ThreadCoreMask and let the system schedule it. 2018-09-27 00:53:26 +02:00
radius b328731fe5 [record] refine the menu, make streaming actually follow the menu settings 2018-09-26 17:42:39 -05:00
Andre Leiradella ad992d227b Guard against null settings; only test leaderboards if enabled 2018-09-26 23:03:31 +01:00
twinaphex 95974f9f3a Should correct setting somewhat 2018-09-26 23:50:29 +02:00
radius 6f0a79acf9 [record] hide these on non suitable platforms 2018-09-26 16:49:48 -05:00
twinaphex 1764bfe60f Added Streaming Mode 2018-09-26 23:34:45 +02:00
twinaphex cf7eea30cb Add Youtube/Twitch Stream key settings 2018-09-26 23:22:12 +02:00
twinaphex bb0059c721 Add Twitch list/Youtube list 2018-09-26 23:00:20 +02:00
neville 8c101fdfd6 Buildfix 2018-09-26 18:48:30 +02:00
twinaphex d955af64a0 Cleanup 2018-09-26 16:16:17 +02:00
Twinaphex 76399013a1 Silence some warnings 2018-09-26 16:13:42 +02:00
twinaphex 0a9eb98cc8 Cleanups 2018-09-26 15:46:27 +02:00
twinaphex 60d537fa32 Create menu_driver_list_insert 2018-09-26 14:25:28 +02:00
twinaphex 5d1fff541b Create new functions 2018-09-26 14:22:22 +02:00
twinaphex fb0c816110 Cleanups 2018-09-26 14:03:29 +02:00
twinaphex 04cb02cec7 Use setting->size for size when strlcpying for string variables 2018-09-26 12:57:00 +02:00
twinaphex 7ba7bc3a1d Add recording options at radius' request 2018-09-26 00:55:17 +02:00
twinaphex e4df100377 Don't bake in mbedtls when networking is not builtin 2018-09-26 00:16:37 +02:00
twinaphex 6ebf4b860b Buildfix 2018-09-26 00:12:52 +02:00
twinaphex 7aea66677b Merge menu_input.c and menu_event.c 2018-09-25 16:46:15 +02:00
twinaphex 44a0c70c8a Removed unused RARCH_MENU_CTL_REFRESH 2018-09-25 16:28:36 +02:00
twinaphex bf5879a97f (wii/PSP) Disable HAVE_LANGEXTRA - these systems are RAM-strapped 2018-09-25 15:57:28 +02:00
twinaphex 8f2cda7388 Cleanup 2018-09-25 15:43:40 +02:00
twinaphex aa89791b60 Update 2018-09-25 15:40:16 +02:00
twinaphex 839940b4bb Add representation to state slot setting 2018-09-25 15:22:25 +02:00
twinaphex 1e10ab1ab6 Reimplement string representation for CRT Switch Resolution super 2018-09-25 15:18:51 +02:00
twinaphex b7be322170 Cleanups 2018-09-25 15:00:29 +02:00
twinaphex 8a43580e6b Cleanups 2018-09-25 14:47:20 +02:00
twinaphex 50bb491ba2 Bind driver settings action OK callback to dropdown list 2018-09-25 14:45:55 +02:00
twinaphex a0e218bd44 Cleanups 2018-09-25 01:49:48 +02:00
twinaphex 1631577b8e Simplify code 2018-09-25 01:37:15 +02:00
twinaphex 390cb578a9 Reimplement left/right callbacks for netplay MITM server setting 2018-09-25 01:30:47 +02:00
twinaphex a0efad3cc8 menu_cbs_select.c - String option settings were not being bound to
action OK callback
2018-09-25 00:07:24 +02:00
twinaphex 919a23c442 Revert "Fix for #7130, take two"
This reverts commit 8f40baf7ff.
2018-09-24 20:06:41 +02:00
waitingmoon a945b7b985 Update msg_hash_ja.h (#7284) 2018-09-24 13:51:01 -04:00
twinaphex 9fd580e5de Don't enable adaptive vsync by default 2018-09-24 17:03:11 +02:00
twinaphex d5a1ce272c Add dropdown lists for most float settings 2018-09-24 15:02:12 +02:00
twinaphex 384b36ac4c Comment this out for now - initial implementation of dropdown list
for float
2018-09-24 14:34:43 +02:00
twinaphex 007e8dbd20 Add dropdown lists for cheat options 2018-09-24 14:16:07 +02:00
Twinaphex 0f4f11a70c Update CHANGES.md 2018-09-24 13:59:44 +02:00
Twinaphex 8d484568ad Update CHANGES.md 2018-09-24 13:52:26 +02:00
Twinaphex e170c3db29 Merge pull request #7295 from fr500/master
WIP: Streaming/Recording Options
2018-09-24 12:26:54 +02:00
Twinaphex 70f5f49c33 Update CHANGES.md 2018-09-24 11:56:35 +02:00
Twinaphex dc83e1162a Update CHANGES.md 2018-09-24 11:55:40 +02:00
Twinaphex 72cf259d49 Update CHANGES.md 2018-09-24 11:55:05 +02:00
Twinaphex 66dcf0f6f7 Update CHANGES.md 2018-09-24 11:54:18 +02:00
Twinaphex a0e550911a Update CHANGES.md 2018-09-24 11:53:33 +02:00
Twinaphex 393d15ee0d Update CHANGES.md 2018-09-24 11:53:02 +02:00
Twinaphex 0782418a90 Merge pull request #7297 from yoshisuga/ios-iphone-x-notch
[iOS] Support iPhone X displays by adjusting for the 'notch'
2018-09-24 11:49:23 +02:00
Yoshi Sugawara f071460d7a use safe area to account for notch for iPhone X and adjust main view size 2018-09-23 22:45:44 -10:00
Twinaphex 8e06a4233d Merge pull request #7296 from gblues/master
Wii U: Fix menu lag when built with DevKitPro r32
2018-09-24 04:34:32 +02:00
radius 58b7621559 [record] add settings for video scale factor 2018-09-23 19:53:13 -05:00
radius 554ad5a494 [record] hookup quality 2018-09-23 19:42:43 -05:00
Nathan Strong 0900f08696 Wii U: Fix menu lag when built with DevKitPro r32
== DETAILS

Updates to the newlib library bundled with DevKitPro have caused
incorrect behavior in `cpu_features_get_time_usec()`. Specifically,
it defines `_POSIX_MONTONIC_CLOCK` which results in calling newlib's
time functions which are.. buggy, at least on Wii U.

By moving the WIIU case higher up, we end up calling the actual
Wii U time library routines, and get nice snappy animations as a
result.

== TESTING
I tested this locally on my wiiu and confirmed resolved menu sluggishness.
2018-09-23 17:26:45 -07:00
radius bcb960d248 record] start adding menu entries 2018-09-23 19:09:28 -05:00
radius c427847944 [record] define quality profiles 2018-09-23 18:43:26 -05:00
Twinaphex 8a5ef19de9 Merge pull request #7285 from Zlika/master
(Menu) Fix crash when changing core's options on Android
2018-09-23 22:32:42 +02:00
Twinaphex ba4bb5c98c Merge pull request #7293 from alphanu1/master
Added functionality for new CRT SwitchRes options
2018-09-23 22:32:20 +02:00
twinaphex e0f01fd85e Cleanups 2018-09-23 22:16:31 +02:00
twinaphex c9494a922b Use menu_setting_find_enum 2018-09-23 22:05:51 +02:00
twinaphex 6d16b5fc93 This is unnecessary - if you already know the enum_idx - use
menu_setting_find_by_enum instead - it will be faster
2018-09-23 22:02:20 +02:00
Twinaphex 2fabcb5b63 Merge pull request #7292 from RetroSven/master
add ability to edit emu-style cheat code value ; change default handler to emu
2018-09-23 21:53:58 +02:00
alphanu1 b3cfe1d337 Merge pull request #95 from alphanu1/alphanu1-patch-86
Added functions for new CRT SwitchRes options
2018-09-23 20:43:28 +01:00
alphanu1 e6b8dcf5b0 Added functions for new CRT SwitchRes options 2018-09-23 20:42:31 +01:00
alphanu1 0241ddb3ba Merge pull request #94 from alphanu1/alphanu1-patch-85
Added functions for new CRT SwitchRes options
2018-09-23 20:40:44 +01:00
alphanu1 c362a6d7f4 Added functions for new CRT SwitchRes options 2018-09-23 20:39:40 +01:00
twinaphex 8140d90ebc Add dropdown list for state slot 2018-09-23 21:29:00 +02:00
Sven b62fa8d9ed add ability to edit emu-style cheat code value ; change default handler to emu 2018-09-23 15:25:51 -04:00
Twinaphex 6de2ca7bd8 Merge pull request #7291 from Dwedit/bugfix-random-filename
Fixed random filename generator for secondary core
2018-09-23 21:22:26 +02:00
Dwedit 1987b74179 Fixed random filename generator, no longer resets to the first value each attempt. 2018-09-23 14:20:25 -05:00
twinaphex badac565da Take this out 2018-09-23 20:45:24 +02:00
alphanu1 0da456e48c Merge pull request #93 from libretro/master
Update
2018-09-23 19:39:05 +01:00
twinaphex 26775a625a Add more dropdown lists 2018-09-23 20:34:27 +02:00
twinaphex 0204e28542 Add more dropdown lists 2018-09-23 20:31:36 +02:00
twinaphex 2001489006 Disable action OK callback for playlist associations for now - difficult
to hook up
2018-09-23 20:22:05 +02:00
Twinaphex 76b48e4907 Merge pull request #7290 from Dwedit/dirty_input_fix
Fix input IDs outside of range 0-35 causing slow performance in runahead
2018-09-23 19:59:38 +02:00
Dwedit a129cffbd6 Fix the dirty input system badly mishandling IDs out of the range of 0-35.
Now the state array is dynamic, and can handle any size.  The initial size is 256 elements (0-255, fixes FBA).

An arbitrary limit of 65536 IDs is currently in there, intended to detect invalid arguments.
2018-09-23 11:37:33 -05:00
twinaphex baa909f296 Add dropdown lists for core options 2018-09-23 18:36:48 +02:00
twinaphex 3b6f3d027c Add dropdown list for playlist history size 2018-09-23 17:21:00 +02:00
twinaphex 1f864e379b Add dropdown lists for driver settings 2018-09-23 17:13:45 +02:00
twinaphex c3e1dd0605 Add HAVE_NETWORKING ifdef 2018-09-23 16:23:47 +02:00
twinaphex 3e95d3efd4 Add dropdown list for DPI Override 2018-09-23 16:17:49 +02:00
twinaphex 2b7a1c7f3c Add dropdown list for X-Axis Centering 2018-09-23 16:13:54 +02:00
twinaphex 21ac77ced2 Cleanups 2018-09-23 15:54:02 +02:00
twinaphex 9671df2b67 Add dropdown list to show physical inputs port setting 2018-09-23 15:23:21 +02:00
twinaphex 9b43c1fc21 Move Mixer Settings to Audio 2018-09-23 15:07:35 +02:00
twinaphex 45a1d4d1e4 Add dropdown list to XMB scaling factor / XMB opacity factor 2018-09-23 14:49:01 +02:00
twinaphex 53e3299e6f Add dropdown list to another setting 2018-09-23 14:44:42 +02:00
twinaphex 19a2af4ee3 Cleanup 2018-09-23 14:39:21 +02:00
twinaphex 962680abb8 Add dropdown list for Netplay Latency Frame settings 2018-09-23 14:34:51 +02:00
twinaphex ff949328d2 Add dropdown list for Hard GPU Sync Frames and Delay Frames 2018-09-23 14:22:11 +02:00
twinaphex 96340f0d89 Add dropdown list for core logging level 2018-09-23 14:18:36 +02:00
twinaphex d2d5ea3508 Change offset_by to signed integer 2018-09-23 14:15:03 +02:00
twinaphex 3169dea1cc Cleanup 2018-09-23 14:13:56 +02:00
twinaphex 8d4d1b2e38 Use setting->offset_by properly 2018-09-23 14:12:47 +02:00
twinaphex 3d051667ce Don't use offset_by 2018-09-23 14:08:42 +02:00
twinaphex cbfb1cb320 Add dropdown list for max users and set index offset by 1 -
doesn't report correct representation values but too much hassle
to implement for now
2018-09-23 13:53:36 +02:00
twinaphex 3f8ec4c067 Add dropdown list for analog Dpad mode 2018-09-23 13:30:45 +02:00
twinaphex 652f25436f Cleanup analog dpad mode representation 2018-09-23 13:15:33 +02:00
twinaphex b3ba9acc25 Cleanup 2018-09-23 12:58:53 +02:00
twinaphex 5b6b6b6076 Cleanups 2018-09-23 12:55:20 +02:00
twinaphex 3c02608218 Cleanups 2018-09-23 12:52:56 +02:00
twinaphex 0c96b51ed4 Style nit cleanups 2018-09-23 12:49:48 +02:00
twinaphex 55def68da8 Style nit cleanups 2018-09-23 12:49:05 +02:00
twinaphex 51d3ddff6a Add dropdown lists for thumbnails 2018-09-23 12:39:01 +02:00
twinaphex 69fbbfb284 Add dropdown list for MaterialUI menu color theme 2018-09-23 12:34:20 +02:00
twinaphex a67c18f955 use min variable 2018-09-23 12:29:30 +02:00
twinaphex 540270d3ed (cheevos) This needs to be behind HAVE_CHEEVOS ifdefs 2018-09-23 12:25:31 +02:00
twinaphex 35764a7200 'select/touch callback' - if action OK callback is bound for ST_UINT and
other settings, bind to action OK callback instead of action right
2018-09-23 12:22:41 +02:00
twinaphex 67b83d9d5f Add dropdown list for XMB menu color theme 2018-09-23 12:19:53 +02:00
twinaphex 1d962e960b Style nits 2018-09-23 12:10:33 +02:00
twinaphex e04d3da985 Add new dropdown lists 2018-09-23 12:05:21 +02:00
twinaphex 991688f35c Add dropdown list for User Language 2018-09-23 11:54:49 +02:00
twinaphex cadb9539b6 Add dropdown lists for Netplay share Digital/Analog 2018-09-23 11:46:03 +02:00
twinaphex ba9150f7c0 Add dropdown lists for poll type behavior and menu toggle type 2018-09-23 11:40:26 +02:00
twinaphex 6c3610decc Move get representation implementation to menu_setting.c 2018-09-23 11:34:30 +02:00
twinaphex 242a7eb914 Reimplement get_value callback for audio resampler quality - action OK
now triggers a dropdown list
2018-09-23 11:25:24 +02:00
twinaphex e9516827b9 (Video) Add dropdow list for Video -> Rotation
(Dropdown list) Fix off-by-one entry - last entry was not being
displayed
2018-09-23 11:05:07 +02:00
twinaphex f00f73c5ed Add 'dropdown list' when pressing the OK/Confirm button on Video -> Aspect Ratio 2018-09-23 10:59:49 +02:00
Twinaphex a1d876b44e Merge pull request #7268 from fr500/master
WIP: prevent loading states before achievements are fully loaded
2018-09-23 08:42:53 +02:00
radius a0339e95ec Reset the flag on reset 2018-09-22 21:27:19 -05:00
Zlika 8f40baf7ff Fix for #7130, take two 2018-09-22 22:27:07 +02:00
Twinaphex 06d7f717d4 Merge pull request #7283 from yoshisuga/ios-iphonex-support
[iOS] Support iPhone X/Xr/XS/XS Max screen sizes
2018-09-22 20:21:29 +02:00
Yoshi Sugawara cdc0510e1c add launch images for iPhone X/Xr/XS/XS Max 2018-09-22 08:11:07 -10:00
Alfredo Monclus 599ed980c6 Fix linux icon (#7282) 2018-09-22 13:37:22 -04:00
radius c4d678a1ce reset the flag on Resume 2018-09-22 11:43:41 -05:00
radius 986a8d3003 add write handler for achievement_hardcore_mode_write_handler 2018-09-22 11:43:41 -05:00
radius c07744564a prevent retroachievements cheating exploit
Revert "prevent retroachievements cheating exploit" and reimplement it in a better way

This reverts commit d323338caa4882925d184f5ee7a506bfa8c78c1e.
2018-09-22 11:43:34 -05:00
Twinaphex baa6330b13 Merge pull request #7280 from alfrix/16x16
New 16x16 icon
2018-09-22 18:24:28 +02:00
Alfrix 244b3bed3d New 16x16 icon 2018-09-22 12:14:18 -03:00
Twinaphex c094c8e9e3 Merge pull request #7277 from alfrix/fix_master
Revert "Merge pull request #7271 from Zlika/master"
2018-09-22 16:59:15 +02:00
Alfrix 061c3e5614 Revert "Merge pull request #7271 from Zlika/master"
This reverts commit 4ae2f00d45, reversing
changes made to 2ee6b75d11.
2018-09-22 11:57:14 -03:00
Twinaphex 4ae2f00d45 Merge pull request #7271 from Zlika/master
(Menu) Fix crash when changing core's options on Android
2018-09-22 14:51:01 +02:00
Zlika e2c82d9ef8 Fix C89 error 2018-09-22 13:27:55 +02:00
Twinaphex 2ee6b75d11 Merge pull request #7274 from alphanu1/master
Small fix for low res cores for CRT switching < 200
2018-09-22 12:59:45 +02:00
alphanu1 e88e8ca614 Merge pull request #92 from libretro/master
update
2018-09-22 10:41:11 +01:00
alphanu1 60e57edc6b Merge pull request #91 from alphanu1/alphanu1-patch-84
Low res LCD core fix for CRT
2018-09-22 10:39:42 +01:00
alphanu1 eaeb4cc1b8 Low res LCD core fix for CRT 2018-09-22 10:39:28 +01:00
Twinaphex a1ddb2ecf2 Merge pull request #7270 from DEX357/patch-20
Update msg_hash_pl.h
2018-09-22 09:33:57 +02:00
Brad Parker c2a09b4d9c Qt: fix signedness comparisons 2018-09-21 16:40:31 -04:00
Zlika efb2f31a3b Fixes #7130 2018-09-21 22:36:09 +02:00
Brad Parker 329d472ee7 Qt: allow special playlists (excluding all) to add/edit/delete 2018-09-21 16:32:38 -04:00
Brad Parker e64b371955 Qt: current right click options for playlist entries are not valid for special playlists 2018-09-21 14:15:25 -04:00
DEX357 560d6767f4 Update msg_hash_pl.h 2018-09-21 19:23:36 +02:00
Twinaphex 48e7f7b7fb Update AndroidManifest.xml 2018-09-21 10:43:20 +02:00
Twinaphex fd9636beb2 Update AndroidManifest.xml 2018-09-21 10:43:07 +02:00
Twinaphex aebfe95895 Merge pull request #7266 from lifajucejo/libnx_vsync_mitigation
gfxWaitForVsync not needed with libnx 1.4
2018-09-21 10:42:16 +02:00
lifajucejo 1c097fbd5b gfxWaitForVsync not needed with libnx 1.4
- still honors ctx->vsync if enabled in _frame callback for throttling
2018-09-20 22:11:52 -04:00
waitingmoon a1e3530c77 Update msg_hash_ja.h (#7261)
* Update msg_hash_ja.h

* fix typo

解答 to 解凍
2018-09-20 21:56:32 -04:00
Twinaphex 9303cf382f Merge pull request #7260 from natinusala/menu_display_scissor
menu_display_gl: added scissoring support
2018-09-20 14:58:02 +02:00
natinusala 7ec2011ccf menu_display_gl: added scissoring support 2018-09-20 14:48:07 +02:00
twinaphex 6825cb2cc7 task_database.c - use string_is_equal 2018-09-20 12:48:00 +02:00
Twinaphex 765e225f48 Merge pull request #7258 from yoshisuga/ios-startup-fix
[iOS] Comment out unsupported code for iOS for now, so that it does not crash
2018-09-20 10:53:36 +02:00
Yoshi Sugawara 2b72a9151d Comment out unsupported code for iOS for now, so that it does not crash on startup; fix for building in Xcode 10 2018-09-19 22:09:29 -10:00
Twinaphex 62b0722ec5 Merge pull request #7249 from alondero/master
Add support for Rumble when increase or decrease by the rumble value
2018-09-20 09:53:36 +02:00
Twinaphex 11cacad8d9 Merge pull request #7257 from fr500/master
update icons again
2018-09-20 04:40:46 +02:00
radius 3dd3aae5f1 update icons again 2018-09-19 21:29:10 -05:00
Alfredo Monclus c91fd2aa7e fix screenshot sublabel (#7255) 2018-09-19 14:00:50 -04:00
waitingmoon 099317a2e2 Update msg_hash_ja.h (#7250) 2018-09-19 08:19:15 -04:00
Twinaphex 0d82c2830f Merge pull request #7253 from fr500/master
update the svg too
2018-09-19 10:51:14 +02:00
radius 203177e440 update the svg too 2018-09-19 02:46:05 -05:00
twinaphex c9dd7db1a0 Fix line 2018-09-19 09:44:50 +02:00
Twinaphex 391f972037 Merge pull request #7252 from fr500/master
add icon to bypass google nonsense
2018-09-19 09:44:07 +02:00
radius f0889b668c add icon to bypass google nonsense 2018-09-19 02:42:49 -05:00
Twinaphex 80333e1899 Merge pull request #7251 from fr500/master
refine the icons again, made them bigger within the canvas
2018-09-19 09:38:45 +02:00
radius 4898d733d0 refine the icons again, made them bigger within the canvas 2018-09-19 02:37:29 -05:00
twinaphex b56d4e83ba (Android Aarch64) Set it to 16:9 aspect ratio to comply with Android TV
policies
2018-09-19 08:31:56 +02:00
twinaphex 60f4e39092 Buildfix 2018-09-19 02:10:10 +02:00
Adam Londero 69074f877b Add support for Rumble when memory increases or decreases by the rumble value 2018-09-18 22:04:22 +01:00
Twinaphex cfd52f8e73 Merge pull request #7248 from bparker06/qt_rename_playlist
Qt: add option to rename playlists
2018-09-18 22:28:47 +02:00
Brad Parker 1db4a6822b Update CHANGES.md 2018-09-18 16:16:18 -04:00
Brad Parker 162c0ebf33 Qt: fix shader parameter checkboxes 2018-09-18 16:15:29 -04:00
Brad Parker 010fad236a Qt: add option to rename playlists 2018-09-18 14:09:25 -04:00
waitingmoon bca86728b0 Update msg_hash_ja.h (#7246)
* Update msg_hash_ja.h

Update JP translation

* Update msg_hash_ja.h
2018-09-18 11:10:06 -04:00
twinaphex dbfcd02b82 Start adding a way to set a hardbaked config 2018-09-18 11:27:18 +02:00
twinaphex b4dc1fbb5b Rename ffemu_audio_data/ffemu_video_data 2018-09-18 10:22:34 +02:00
twinaphex c2cee6e8f0 Move CRT SwitchRes to Video Settings as submenu 2018-09-18 09:24:29 +02:00
twinaphex cb8148878c Add hotkeys for 'Toggle Recording' / 'Toggle Streaming' 2018-09-18 08:52:09 +02:00
Twinaphex 6c84072c3b Merge pull request #7243 from fr500/master
[recording] release file handles on stop record
2018-09-18 07:44:58 +02:00
radius 5a1bfe2cfd [record] release file handles 2018-09-18 00:43:19 -05:00
waitingmoon d2ab86f333 Update msg_hash_ja.h (#7240)
Update JP translation
2018-09-18 01:39:42 -04:00
radius f3db15b282 [record] further cleanups of the workflow 2018-09-18 00:34:25 -05:00
Twinaphex e012971519 Merge pull request #7242 from fr500/master
[record] further cleanups of the workflow
2018-09-18 07:32:51 +02:00
radius 356d4e2c5e [record] further cleanups of the workflow 2018-09-18 00:30:46 -05:00
Twinaphex 2aed5a34ef Merge pull request #7241 from fr500/master
[recording] handle failure to start recording properly
2018-09-18 07:21:18 +02:00
radius 6351e80946 [recording] handle failure to start recording properly 2018-09-18 00:04:18 -05:00
Brad Parker 8e41665939 travis: use a newer gcc 2018-09-17 23:29:46 -04:00
Brad Parker 1a3259079c travis: include Qt 2018-09-17 23:16:47 -04:00
Brad Parker 6bc3cd49d5 Qt: add fallback path for older versions 2018-09-17 23:16:47 -04:00
Twinaphex ab6a46f2ba Merge pull request #7238 from fr500/master
update AARCH64 icon
2018-09-18 04:28:49 +02:00
Twinaphex 79f26b947d Remove unused variables 2018-09-18 04:28:08 +02:00
radius a0cab184db update AARCH64 icon 2018-09-17 21:26:53 -05:00
Twinaphex 8351b0481f Merge pull request #7234 from theheroGAC/patch-36
Update msg_hash_it.h
2018-09-18 04:16:51 +02: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
theheroGAC bd0f7002bc Update msg_hash_it.h 2018-09-17 20:42:26 +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
Andre Leiradella 377d256ce9 Properly initialize cheevos_locals 2018-09-03 22:51:07 +01:00
Andre Leiradella 4c01697d3f Use the correct console id 2018-09-03 19:17:03 +01: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
Andre Leiradella 2d7c4b4f9d Use CHEEVOS_TAG 2018-09-02 15:11:33 +01:00
Andre Leiradella 0f6cdde65b Fixed indentation 2018-09-02 15:00:42 +01:00
Andre Leiradella ae5ff31b45 Fixed screenshot code after merge 2018-09-02 14:56:12 +01:00
Andre Leiradella 7b5e317ad0 Fix merge error 2018-09-02 14:50:16 +01:00
Andre Leiradella 83169e5fcb Merge branch 'master' into integrate_rcheevos 2018-09-02 14:46:48 +01:00
Andre Leiradella 84124fc70c Removed duplicated Lua files 2018-09-02 14:34:47 +01:00
Andre Leiradella 720ecaff17 Updated rcheevos to 7.0.0 2018-09-02 14:32:08 +01:00
Andre Leiradella 613a3e8479 Integrated rcheevos 2018-09-02 14:23:37 +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
Gregor Richards 7634b1bbb0 Fix netplay on Wii U
getaddrinfo on Wii U doesn't support node==NULL. As I don't know of this
bug on any other platform, I've made a Wii-U-specific workaround in
getaddrinfo_retro.
2018-09-01 21:14:56 -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
Alfrix 107cc364b5 Add neoactive and retroactive to menu icons 2018-08-28 19:43:02 -03:00
Andre Leiradella 3f72e1fd96 Updated rcheevos to 6.5.0 2018-08-28 22:20:38 +01:00
Andre Leiradella 4b2bc29775 Updated rcheevos to 6.4.0 2018-08-28 21:58:13 +01:00
Andre Leiradella 1c3ae4f01d Added Lua as a dependency 2018-07-31 22:21:49 +01:00
Andre Leiradella e2fc3c11a6 Added rcheevos as a dependency 2018-07-31 22:21:36 +01:00
mickski56 aa0e0de1d9 address #6920 Proper analog trigger support 2018-07-24 22:48:50 +01:00
2363 changed files with 413551 additions and 60477 deletions

No files matched your search

+25 -2
View File
@@ -11,6 +11,8 @@
.tmp
.tmp.c
.tmp.cxx
.moc.h
.moc.cpp
config.log
/.project
/.externalToolBuilders/
@@ -53,7 +55,6 @@ DerivedData
apple/tmp
apple/*.mobileprovision
apple/RetroArch_iOS.xcodeproj/project.xcworkspace/*
menu/driverspzarch.c
/Cg/
/GL/
/SDL/
@@ -74,6 +75,7 @@ libretro-super
run.sh
convert_rumble.awk
*~
assets
# Wii U
*.depend
@@ -119,7 +121,9 @@ wiiu/wut/elf2rpl/elf2rpl
/media/libretrodb/
pkg/apple/iOS/build/
pkg/apple/iOS/modules/
pkg/apple/build/
ui/drivers/qt/moc_*
ui/drivers/moc_*
obj-unix/
.vagrant/
@@ -151,3 +155,22 @@ 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
# Wayland
gfx/common/wayland/idle-inhibit-unstable-v1.c
gfx/common/wayland/idle-inhibit-unstable-v1.h
gfx/common/wayland/xdg-shell-unstable-v6.c
gfx/common/wayland/xdg-shell-unstable-v6.h
gfx/common/wayland/xdg-decoration-unstable-v1.h
gfx/common/wayland/xdg-decoration-unstable-v1.c
gfx/common/wayland/xdg-shell.c
gfx/common/wayland/xdg-shell.h
+34 -22
View File
@@ -10,7 +10,9 @@ matrix:
- g++-mingw-w64-i686
- mingw-w64-i686-dev
script:
- 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
- ./configure --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 --enable-builtinzlib
- make
env: CROSS_COMPILE=i686-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501"
- compiler: mingw-x64
addons:
apt:
@@ -18,22 +20,35 @@ matrix:
- g++-mingw-w64-x86-64
- mingw-w64-x86-64-dev
script:
- 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
- ./configure --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 --enable-builtinzlib
- make
env: CROSS_COMPILE=x86_64-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501"
- compiler: gcc
# Install a more recent gcc than the default
before_install:
- sudo apt-get install -y g++-8
env: CC=gcc-8 CXX=g++-8
- compiler: clang
addons:
# Install a more recent clang than the default
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
packages:
- clang-3.8
env: COMPILER_NAME=clang-3.8 CXX=clang++-3.8 CC=clang-3.8
# Install a more recent clang than the default
before_install:
- sudo apt-get install -y libstdc++-7-dev
- sudo apt-get install -y clang-6.0
env: CC=clang-6.0 CXX=clang++-6.0
- os: osx
osx_image: xcode7.3
osx_image: xcode8
script:
- xcodebuild -target RetroArch -configuration Release -project pkg/apple/RetroArch.xcodeproj
- xcodebuild -target RetroArch -configuration Release -project pkg/apple/RetroArch.xcodeproj
- os: osx
osx_image: xcode10.1
script:
- brew install --force-bottle qt5
- xcodebuild -target RetroArchQt -configuration Release -project pkg/apple/RetroArch_Metal.xcodeproj
deploy:
skip_cleanup: true
provider: script
script: bash travis_metal_deploy.sh
on:
branch: master
script:
- ./configure
@@ -46,16 +61,13 @@ env:
addons:
apt:
packages:
- curl
- pkg-config
- libglu1-mesa-dev
- freeglut3-dev
- mesa-common-dev
- libsdl1.2-dev
- libsdl-image1.2-dev
- libsdl-mixer1.2-dev
- libsdl-ttf2.0-dev
- libsdl2-dev
- libusb-1.0-0-dev
- qtbase5-dev
- qtdeclarative5-dev
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-6.0
coverity_scan:
project:
name: "RetroArch"
+5 -2
View File
@@ -29,7 +29,9 @@
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
"${workspaceRoot}",
"${workspaceFolder}/libretro-common/include",
"${workspaceRoot}/libretro-common/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
@@ -50,7 +52,8 @@
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
"${workspaceRoot}",
"${workspaceFolder}/libretro-common/include"
],
"defines": [
"_DEBUG",
+1 -1
View File
@@ -13,7 +13,7 @@
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
+29
View File
@@ -7,6 +7,7 @@
"terminal.integrated.cursorBlinking": true,
"editor.tabSize": 3,
"editor.detectIndentation": false,
"editor.renderWhitespace": "all",
"editor.insertSpaces": true,
"files.associations": {
@@ -14,6 +15,34 @@
"*.in": "c",
"*.rh": "c",
"array": "c",
"file_stream.h": "c",
"driver.h": "c",
"iosfwd": "c",
"xlocbuf": "c",
"xmemory0": "c",
"ios": "c",
"list": "c",
"input_driver.h": "c",
"video_driver.h": "c",
"menu_driver.h": "c",
"file_path.h": "c",
"unordered_map": "c",
"unordered_set": "c",
"sstream": "cpp",
"hash_map": "c",
"hash_set": "c",
"initializer_list": "c",
"string_view": "c",
"utility": "c",
"menu_input.h": "c",
"tasks_internal.h": "c",
"ozone.h": "c",
"ozone_theme.h": "c",
"ozone_texture.h": "c",
"string_list.h": "c",
"core_info.h": "c"
"thread": "c",
"xlocale": "c"
},
"C_Cpp.dimInactiveRegions": false,
}
+47 -10
View File
@@ -4,12 +4,49 @@
"version": "2.0.0",
"tasks": [
{
"taskName": "msys2-mingw64 build",
"label": "linux clean build",
"type": "shell",
"group": "build",
"command": "make clean && ./configure && make -j12"
},
{
"label": "linux clean",
"type": "shell",
"group": "build",
"command": "make clean"
},
{
"label": "linux build with debug symbols",
"type": "shell",
"group": "build",
"command": "DEBUG=1 make -j12"
},
{
"label": "linux build",
"type": "shell",
"group": "build",
"command": "make -j12"
},
{
"label": "linux build and run",
"type": "shell",
"group": "build",
"command": "make -j12 && ./retroarch -v"
},
{
"label": "linux build and run with debug symbols",
"type": "shell",
"group": "build",
"command": "DEBUG=1 make -j12 && ./retroarch -v"
},
{
"label": "msys2-mingw64 build",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true },
"isDefault": true
},
"command": "./configure; make -j2",
"options": {
@@ -20,9 +57,9 @@
]
}
}
}
},
{
"taskName": "msys2-mingw64 build with debug symbols",
"label": "msys2-mingw64 build with debug symbols",
"type": "shell",
"group": "build",
@@ -36,9 +73,9 @@
]
}
}
}
},
{
"taskName": "msys2-mingw64 rebuild",
"label": "msys2-mingw64 rebuild",
"type": "shell",
"group": "build",
@@ -52,9 +89,9 @@
]
}
}
}
},
{
"taskName": "msys2-mingw64 clean",
"label": "msys2-mingw64 clean",
"type": "shell",
"group": "build",
@@ -68,9 +105,9 @@
]
}
}
}
},
{
"taskName": "msys2-mingw64 run",
"label": "msys2-mingw64 run",
"type": "shell",
"group": {
+96
View File
@@ -0,0 +1,96 @@
diff --git a/gfx/drivers_context/wgl_ctx.c b/gfx/drivers_context/wgl_ctx.c
index b90a8e40c3..e57c4df194 100644
--- a/gfx/drivers_context/wgl_ctx.c
+++ b/gfx/drivers_context/wgl_ctx.c
@@ -78,6 +78,47 @@
#ifndef WGL_CONTEXT_DEBUG_BIT_ARB
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
#endif
+
+#ifndef WGL_ACCELERATION_ARB
+#define WGL_ACCELERATION_ARB 0x2003
+#endif
+
+#ifndef WGL_FULL_ACCELERATION_ARB
+#define WGL_FULL_ACCELERATION_ARB 0x2027
+#endif
+
+#ifndef WGL_DRAW_TO_WINDOW_ARB
+#define WGL_DRAW_TO_WINDOW_ARB 0x2001
+#endif
+
+#ifndef WGL_DOUBLE_BUFFER_ARB
+#define WGL_DOUBLE_BUFFER_ARB 0x2011
+#endif
+
+#ifndef WGL_RED_BITS_ARB
+#define WGL_RED_BITS_ARB 0x2015
+#endif
+
+#ifndef WGL_GREEN_BITS_ARB
+#define WGL_GREEN_BITS_ARB 0x2017
+#endif
+
+#ifndef WGL_BLUE_BITS_ARB
+#define WGL_BLUE_BITS_ARB 0x2019
+#endif
+
+#ifndef WGL_ALPHA_BITS_ARB
+#define WGL_ALPHA_BITS_ARB 0x201B
+#endif
+
+#ifndef WGL_PIXEL_TYPE_ARB
+#define WGL_PIXEL_TYPE_ARB 0x2013
+#endif
+
+#ifndef WGL_TYPE_RGBA_ARB
+#define WGL_TYPE_RGBA_ARB 0x202B
+#endif
+
#endif
#if defined(HAVE_OPENGL)
@@ -313,6 +354,43 @@ static void create_gl_context(HWND hwnd, bool *quit)
RARCH_LOG("[WGL]: Adaptive VSync supported.\n");
wgl_adaptive_vsync = true;
}
+ if (wgl_has_extension("WGL_ARB_pixel_format", extensions))
+ {
+ BOOL (WINAPI * wglChoosePixelFormatARB)
+ (HDC hdc,
+ const int *piAttribIList,
+ const FLOAT *pfAttribFList,
+ UINT nMaxFormats,
+ int *piFormats,
+ UINT *nNumFormats);
+ UINT nMatchingFormats;
+ int index = 0;
+ int attribsDesired[] = {
+ WGL_DRAW_TO_WINDOW_ARB, 1,
+ WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
+ WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_ARB,
+ WGL_RED_BITS_ARB, 10,
+ WGL_GREEN_BITS_ARB, 10,
+ WGL_BLUE_BITS_ARB, 10,
+ WGL_ALPHA_BITS_ARB, 2,
+ WGL_DOUBLE_BUFFER_ARB, 1,
+ 0,0
+ };
+ wglChoosePixelFormatARB = (BOOL (WINAPI *) (HDC, const int *,
+ const FLOAT*, UINT, int*, UINT*))
+ gfx_ctx_wgl_get_proc_address("wglChoosePixelFormatARB");
+
+ RARCH_LOG("[WGL]: ARB pixel format supported.\n");
+
+ if (wglChoosePixelFormatARB(win32_hdc, attribsDesired,
+ NULL, 1, &index, &nMatchingFormats))
+ {
+ if (nMatchingFormats == 0)
+ {
+ RARCH_WARN("No 10bpc WGL_ARB_pixel_formats found!\n");
+ }
+ }
+ }
}
}
#endif
+3
View File
@@ -25,6 +25,7 @@ Amiga1200Gamer (amigagamer)
Andre Leiradella (leiradel)
Andrés (fr500)
Anthony J. Bentley (bentley)
Antonio Jose Ramos Marquez (psxdev)
AridRayne
Arto Vainiolehto (arakerlu)
asako (asakous)
@@ -94,6 +95,7 @@ FIX94
Flame Sage (chris062689)
flyinghead
Francisco José García García (frangarcj)
Francisco Javier Trujillo Mata (fjtrujy)
GameDragon2k
Garrett Brown (garbear)
gblues
@@ -141,6 +143,7 @@ JuanVCS
Justin Jacobs (dorkster)
Justin Weiss (justinweiss)
Ken Rossato (rossato)
Krzysztof Haładyn (krzys_h)
kurumushi
kwyxz
l3iggs
+117 -1
View File
@@ -1,4 +1,120 @@
# 1.7.4 (future)
# 1.7.7 (future)
# 1.7.6
- ANDROID: Fix Xperia Play input binding.
- CHEEVOS: Reset when hardcore mode is toggled.
- CHEEVOS: Update the hashing methods to identify NES, SNES and Lynx games (more accurate and accepting headerless ROMs).
- COMMON: Add new JSON playlist format.
- COMMON: Fix playlist corruption when deleting items.
- COMMON: Fix archive progress display calculation.
- COMMON: Fix playlist entries appearing with previously used names.
- COMMON: Fix screenshot filename with no core or content.
- COMMON: Allow compiling without menu support.
- CORE UPDATER: Allow sideloading cores from the menu.
- CPU FILTERS: Add Normal2x filter.
- CRT/LINUX: New Linux switching method partially implemented.
- CRT/LINUX: Linux restore desktop resolution fixed.
- CRT/LINUX: Monitor index switching and auto enumerate for output detection in Linux (still working on the windows method).
- CRT/RASPBERRY PI: Initial support.
- DATE: Add Date / Time style options.
- DEBUGGING: Add an integrated crash handler for debug builds (see https://docs.libretro.com/tech/debugging)
- DISCORD: Register the application name properly.
- DISK CONTROL: Remember the last used folder / current active folder to make disk-swapping faster.
- INPUT: Add new menu toggle (hold start button for 2 seconds)
- INPUT: Fix arrow keys being incorrectly bound as numpad keys
- INPUT/SDL: Flush the joypad events. Decreases cpu usage over time with the SDL joypad driver.
- LOCALIZATION: Add Greek translation.
- LOCALIZATION: Update German translation.
- LOCALIZATION: Update Italian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Simplified Chinese translation.
- LOCALIZATION: Update Spanish translation.
- MENU: New "ozone" menu driver.
- MENU: Only show CRT SwitchRes if video display server is implemented (Windows/Linux for now)
- MENU: User Interface -> Appearance -> 'Menu Font Green/Blue Color' settings now work properly.
- MENU: Add option to enable in-menu sound effects.
- MENU/D3D: Scissoring support (will be used for Ozone and menu widgets).
- MENU/QT/WIMP: Allow building with MSVC2017.
- MENU/QT/WIMP: Add detailed file browser table.
- MENU/QT/WIMP: New grid view implementation that is faster and loads thumbnails on-demand.
- MENU/QT/WIMP: Thumbnail drag and drop support.
- MENU/RGUI: Overhaul custom theme interface + add wallpaper support.
- MENU/RGUI: Thumbnail support and thumbnail downscaling.
- MENU: Hide password values.
- MENU/SOUNDS: Implement in-menu sound effects (not enabled by default for now, still experimental).
- MIDI: Add a Linux ALSA driver for MIDI.
- NETPLAY: Force fast-save-states when netplay is enabled.
- NETPLAY: Allow quick joining subsystem lobbies.
- OSX: Initial CoreAudio V3 audio driver (not yet used in release builds).
- OSX: OpenGL 3.2 Core support for cores.
- PS2: Initial PlayStation2 port.
- PS4: Initial PlayStation4 port.
- RECORDING: Implement recording options in the menu complete with quality profiles, streaming, and proper file naming
- SCANNER: Fix GDI disc scanning.
- SHADERS: Fix auto shader preset loading on D3D10, D3D11, D3D12
- SUBSYSTEM: Allow more than 10 subsystems
- SUBSYSTEM: Cores that use subsystem for complex scenarios can now load content without starting a regular content first
- SUBSYSTEM: Remember the last used folder to make loading subsystem type content faster
- SWITCH/LIBNX: Improve touch scaling calculation.
- SWITCH: Proper button labels.
- TVOS: Initial tvOS port.
- VULKAN: Fix RGUI crashing at startup.
- VULKAN/RGUI: Enable 'Menu Linear Filter' option.
- VULKAN: Fix secondary screens in overlays not working.
- WAYLAND: Implement idle-inhibit support (needed for screensaver suspend).
- WAYLAND: Fix fullscreen toggle.
- WIIU: Initial netplay peer-to-peer support. Network information working.
- WINDOWS/WSA: Network Information info is blank until first network operation.
- WINDOWS: Fix an ancient bug that caused wrong mappings for keyboard arrows.
- WINDOWS: Remember window size and position if so desired.
- WINDOWS: SSL/TLS connections now work properly.
- WINDOWS: Fall back to GDI driver if no accelerated graphics driver is found.
- UWP: Initial UWP port.
- VFS: Update to version 3.
- XBONE: Initial Xbox One port.
- XMB/OZONE: Add more icons
- XMB: Add Automatic Inverted theme
- ???: Easter Egg
# 1.7.5
- CAMERA: Fix Video4Linux2 driver that broke years ago.
- CONFIG: Add 'Reset To Defaults' setting in Configurations. Thi will reset your config file to defaults.
- CHEATS: Add support for Rumble when increase or decrease by the rumble value.
- CHEATS: Add cheat variables to allow for updating large portions of memory.
- CHEEVOS: Prevent loading states before achievements are fully loaded.
- CRT: New porches and interlaced bug fix.
- CRT: New functionality, ability to switch between 15KHz and 31KHz, etc.
- COMMON: Support for "OEM-102" key (usually '\' on Euro keyboards).
- DISCORD: Add 'Ask To Join' Feature.
- EMSCRIPTEN: Add stb_font support.
- INPUT: Add new menu toggle combos 'L3 + R' and 'L + R' (useful for Switch).
- IOS: Use safe area to account for notch for iPhone X and adjust main view.
- LOCALIZATION: Update Portuguese / Brazilian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Polish translation.
- LOCALIZATION: Update Spanish translation.
- MENU: Add dropdown lists for many settings.
- MENU: Fix crash that could happen when changing core's options on Android.
- MENU/QT/WIMP: Add option to rename playlists.
- 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.
- MENU/QT/WIMP: Fix shader parameter checkboxes not working
- 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.
- RUNAHEAD: Fix performance degradation that could happen over time (after approx. 30 mins). Fixed input IDs outside of range 0-35 causing slow performance in runahead.
- SWITCH: Add stb_font support.
- SWITCH: Add Retro Achievements support.
- SWITCH: Add networking support.
- SWITCH: Add touchscreen support.
- SWITCH: Add OpenGL support.
- SWITCH: Merging of RetroNX Nintendo Switch port, based on libnx SDK.
- VULKAN: Fix race condition in threaded mailbox emulation.
- VULKAN: Maintenance fixes.
- WIIU: Fix menu lag when built with DevKitPro r32.
# 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).
+2482
View File
File diff suppressed because it is too large. Load diff
+35 -21
View File
@@ -16,26 +16,36 @@ include config.mk
TARGET = retroarch
OBJ :=
LIBS :=
DEF_FLAGS :=
ASFLAGS :=
DEFINES := -DHAVE_CONFIG_H -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64
DEFINES += -DGLOBAL_CONFIG_DIR='"$(GLOBAL_CONFIG_DIR)"'
OBJDIR_BASE := obj-unix
ifeq ($(DEBUG), 1)
OBJDIR := $(OBJDIR_BASE)/debug
CFLAGS ?= -O0 -g
CXXFLAGS ?= -O0 -g
DEFINES += -DDEBUG -D_DEBUG
else
OBJDIR := $(OBJDIR_BASE)/release
CFLAGS ?= -O3
CXXFLAGS ?= -O3
DEF_FLAGS += -ffast-math
endif
OBJ :=
LIBS :=
DEFINES := -DHAVE_CONFIG_H -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64
DEFINES += -DGLOBAL_CONFIG_DIR='"$(GLOBAL_CONFIG_DIR)"'
ifneq ($(findstring BSD,$(OS)),)
CFLAGS += -DBSD
DEF_FLAGS += -DBSD
LDFLAGS += -L/usr/local/lib
UDEV_CFLAGS += -I/usr/local/include/libepoll-shim
UDEV_LIBS += -lepoll-shim
endif
ifneq ($(findstring DOS,$(OS)),)
CFLAGS += -march=i386
DEF_FLAGS += -march=i386
LDFLAGS += -lemu
endif
@@ -75,21 +85,19 @@ ifneq ($(V),1)
Q := @
endif
ifeq ($(DEBUG), 1)
OPTIMIZE_FLAG = -O0 -g
DEFINES += -DDEBUG -D_DEBUG
else
OPTIMIZE_FLAG = -O3 -ffast-math
ifeq ($(HAVE_DRMINGW), 1)
DEF_FLAGS += -DHAVE_DRMINGW
LDFLAGS += $(DRMINGW_LIBS)
endif
ifneq ($(findstring Win32,$(OS)),)
LDFLAGS += -mwindows
endif
CFLAGS += -Wall $(OPTIMIZE_FLAG) $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb
DEF_FLAGS += -Wall $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb
APPEND_CFLAGS := $(CFLAGS)
CXXFLAGS += $(APPEND_CFLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS
CFLAGS += $(DEF_FLAGS)
CXXFLAGS += $(DEF_FLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS
OBJCFLAGS := $(CFLAGS) -D__STDC_CONSTANT_MACROS
ifeq ($(HAVE_CXX), 1)
@@ -164,7 +172,7 @@ all: $(TARGET) config.mk
$(MOC_SRC):
@$(if $(Q), $(shell echo echo MOC $<),)
$(eval MOC_TMP := $(patsubst %.h,%_moc.cpp,$@))
$(Q)$(MOC) -o $(MOC_TMP) $<
$(Q)QT_SELECT=$(QT_VERSION) $(MOC) -o $(MOC_TMP) $<
$(foreach x,$(join $(addsuffix :,$(MOC_SRC)),$(MOC_HEADERS)),$(eval $x))
@@ -243,12 +251,18 @@ install: $(TARGET)
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch.6
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6
chmod 644 $(DESTDIR)$(DATA_DIR)/pixmaps/retroarch.svg
@if test -d media/assets; then \
@if test -d media/assets && test $(HAVE_ASSETS); then \
echo "Installing media assets..."; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/assets/xmb; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/assets/glui; \
cp -r media/assets/xmb/ $(DESTDIR)$(ASSETS_DIR)/assets; \
cp -r media/assets/glui/ $(DESTDIR)$(ASSETS_DIR)/assets; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/assets; \
if test $(HAVE_MATERIALUI) = 1; then \
cp -r media/assets/glui/ $(DESTDIR)$(ASSETS_DIR)/assets; \
fi; \
if test $(HAVE_XMB) = 1; then \
cp -r media/assets/xmb/ $(DESTDIR)$(ASSETS_DIR)/assets; \
fi; \
if test $(HAVE_OZONE) = 1; then \
cp -r media/assets/ozone/ $(DESTDIR)$(ASSETS_DIR)/assets; \
fi; \
cp media/assets/COPYING $(DESTDIR)$(DOC_DIR)/COPYING.assets; \
echo "Asset copying done."; \
fi
+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 '$*=$($*)'
+113
View File
@@ -0,0 +1,113 @@
# This build was put together and is maintained by ModMyClassic.com for Libretro.
# The purpose is to give Libretro a proper "official" build platform for classic consoles.
# If you need any help in building for the classics or have any questions then please visit
# https://modmyclassic.com/comp and we will help in any way possible!
# Building Prerequisites ##############
# arm-linux-gnueabihf-gcc-8
# arm-linux-gnueabihf-g++-8
# arm-linux-gnueabihf-as
# arm-linux-gnueabihf-strip
# patchelf
# bc
include version.all
# Classic Readme Variables ############
CLASSIC_ALT_VER := $(shell echo $(RARCH_VERSION) | tr . _)
CLASSIC_MODS_VER := Official_Retroarch_v$(CLASSIC_ALT_VER)c_COptimised
CLASSIC_MODS_NAME := RetroArch v$(RARCH_VERSION)c \(Official Classic Optimised\)
CLASSIC_VERSION := $(RARCH_VERSION)c \(Classic+\)
MOD_CREATOR := Libretro + ModMyClassic
MOD_CATEGORY := RetroArch
GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`")
# Platform dependant Variables ########
HAKCHI_DIR := RA_Platform-Hakchi
HAKCHI_GIT := https://github.com/Classicmods/RA_Platform-Hakchi
# General Shared Variables ############
TARGET := retroarch
CC_V = arm-linux-gnueabihf-gcc-8
CXX_V = arm-linux-gnueabihf-g++-8
AS_V = arm-linux-gnueabihf-as
CC_AS_V = arm-linux-gnueabihf-gcc-8
# Libretro Defines ####################
#HAVE_CLASSIC = Classic Hook, disable some features
#HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override
#HAVE_HAKCHI = Hakchi Hook, change default configurations etc (TODO)
all: $(TARGET)
retroarch:
#Backup vanilla version files + ammend version
cp version.all version_BACKUP.all && cp version.dtd version_BACKUP.dtd
sed -i -e 's/RARCH_VERSION="[^"]*"/RARCH_VERSION="$(CLASSIC_VERSION)"/g' version.all
sed -i -e 's/PACKAGE_VERSION "[^"]*"/PACKAGE_VERSION "$(CLASSIC_VERSION)"/g' version.all
sed -i -e 's/ENTITY version "[^"]*"/ENTITY version "$(CLASSIC_VERSION)"/g' version.dtd
#Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7)
patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf)
./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord
make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it
arm-linux-gnueabihf-strip -v retroarch
patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary...
#HAKCHI BUILD (NESC, SNESC)
#FYI this build was originally known as RetroArch 'Neo' for Hakchi.
@echo "** BUILDING CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **"
rm -fr /tmp/$(HAKCHI_DIR)
cd /tmp/; git clone $(HAKCHI_GIT)
cp retroarch /tmp/$(HAKCHI_DIR)/bin/retroarch
echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > /tmp/$(HAKCHI_DIR)/etc/libretro/retroarch_version
cp /tmp/$(HAKCHI_DIR)/readme.md /tmp/$(HAKCHI_DIR)/readme_COPY.md
printf "%s\n" \
"---" \
"Name: $(CLASSIC_MODS_NAME)" \
"Creator: $(MOD_CREATOR)" \
"Category: $(MOD_CATEGORY)" \
"Version: $(CLASSIC_MODS_VER)" \
"Built on: $(shell date)" \
"Git commit: $(GIT_COMMIT)" \
"---" > /tmp/$(HAKCHI_DIR)/readme.md
cat /tmp/$(HAKCHI_DIR)/readme_COPY.md >> /tmp/$(HAKCHI_DIR)/readme.md
rm /tmp/$(HAKCHI_DIR)/readme_COPY.md
@echo "** COMPRESSING $(CLASSIC_MODS_VER) HMOD PACKAGE **"
cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" *
mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod .
@echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **"
rm -fr /tmp/$(HAKCHI_DIR) #clean up tmp
#COMMODORE 64 MINI BUILD (WIP)
#Clean down dirty files
rm -f version.all version.dtd
mv version_BACKUP.all version.all && mv version_BACKUP.dtd version.dtd
@echo "*********************************************************************"
@echo "*** Classic ARM7 Cortex A7 build and packages built successfully! ***"
@echo "****************** Winner, Winner, Chicken Dinner! ******************"
@echo "*********************************************************************"
clean:
rm -rf obj-unix
rm -f *.d
rm -f *.o
rm -f audio/*.o
rm -f conf/*.o
rm -f gfx/*.o
rm -f gfx/drivers_font/*.o
rm -f gfx/drivers_font_renderer/*.o
rm -f gfx/drivers_context/*.o
rm -f gfx/py_state/*.o
rm -f compat/*.o
rm -f record/*.o
rm -f input/*.o
rm -f tools/*.o
rm -f $(BINDIR)/retroarch
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
rm -f $(CLASSIC_MODS_VER).hmod
rm -f version.all version.dtd
mv -f version_BACKUP.all version.all || echo "Backup Doesn't Exist - Ignoring..."
mv -f version_BACKUP.dtd version.dtd || echo "Backup Doesn't Exist - Ignoring..."
rm -f *_BACKUP*
+738 -580
View File
File diff suppressed because it is too large. Load diff
+16 -15
View File
@@ -52,8 +52,8 @@ ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB
DEFINES += -DHAVE_NETWORKING -DHAVE_CHEEVOS -DHAVE_SOCKET_LEGACY -DHAVE_THREADS
#-DHAVE_SSL -DMBEDTLS_SSL_DEBUG_ALL
#DEFINES += -DHAVE_NETWORKING -DHAVE_CHEEVOS -DRC_DISABLE_LUA -DHAVE_SOCKET_LEGACY -DHAVE_THREADS
#-DHAVE_SSL -DHAVE_BUILTINMBEDTLS -DMBEDTLS_SSL_DEBUG_ALL
#ssl is currently incompatible with griffin due to use of the "static" flag on repeating functions that will conflict when included in one file
else
HAVE_CC_RESAMPLER = 1
@@ -62,23 +62,25 @@ else
HAVE_RPNG = 1
HAVE_RJPEG = 1
HAVE_RBMP = 1
HAVE_MENU = 1
HAVE_RGUI = 1
HAVE_ZLIB = 1
HAVE_7ZIP = 1
HAVE_BUILTINZLIB = 1
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 1
HAVE_XMB = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_NETWORKING = 1
HAVE_CHEEVOS = 1
HAVE_SOCKET_LEGACY = 1
HAVE_THREADS = 1
HAVE_SSL = 1
#HAVE_NETWORKING = 1
#HAVE_CHEEVOS = 1
#HAVE_SOCKET_LEGACY = 1
#HAVE_THREADS = 1
#HAVE_SSL = 1
#HAVE_BUILTINMBEDTLS = 1
include Makefile.common
CFLAGS += $(DEF_FLAGS)
BLACKLIST :=
BLACKLIST += input/input_overlay.o
BLACKLIST += tasks/task_overlay.o
@@ -104,7 +106,6 @@ MAKEROM_ARGS_COMMON = -rsf $(APP_RSF) -exefslogo -elf $(TARGET).elf -icon $(TARG
INCDIRS := -I$(CTRULIB)/include
LIBDIRS := -L. -L$(CTRULIB)/lib
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
CFLAGS += -mword-relocations \
@@ -130,7 +131,12 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_END := -Wl,--no-whole-archive
endif
CFLAGS += -I. -Ideps -Ideps/libz -Ideps/7zip -Ideps/stb -Ilibretro-common/include
CFLAGS += -I. \
-Ideps \
-Ideps/libz \
-Ideps/7zip \
-Ideps/stb \
-Ilibretro-common/include
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
@@ -142,7 +148,6 @@ LDFLAGS += -specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
CFLAGS += -std=gnu99 -ffast-math
LIBS := $(WHOLE_START) -lretro_ctr $(WHOLE_END) -lm
ifeq ($(DEBUG), 1)
@@ -151,7 +156,6 @@ else
LIBS += -lctru
endif
ifeq ($(BUILD_3DSX), 1)
TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh
endif
@@ -261,7 +265,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
clean:
rm -f $(OBJ)
rm -f $(TARGET).3dsx
@@ -275,5 +278,3 @@ clean:
rm -f ctr/3dsx_custom_crt0.o
.PHONY: clean
+1 -4
View File
@@ -27,6 +27,7 @@ OBJ := ctr/ctr_system.o \
frontend/drivers/platform_null.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/file/file_path.o \
libretro-common/string/stdstring.o \
libretro-common/lists/string_list.o \
@@ -94,10 +95,8 @@ LDFLAGS += -specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
CFLAGS += -std=gnu99 -ffast-math
LIBS := -lctru -lm
ifeq ($(BUILD_3DSX), 1)
TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh
endif
@@ -220,5 +219,3 @@ clean:
rm -f ctr/3dsx_custom_crt0.o
.PHONY: clean
+4 -2
View File
@@ -7,7 +7,7 @@ PTHREAD = 0
OS = Emscripten
OBJ :=
DEFINES := -DRARCH_INTERNAL -DHAVE_MAIN -s USE_PTHREADS=$(PTHREAD)
DEFINES += -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DHAVE_FILTERS_BUILTIN
DEFINES += -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DHAVE_FILTERS_BUILTIN -DHAVE_STB_FONT
HAVE_OVERLAY = 1
HAVE_CC_RESAMPLER = 1
@@ -16,6 +16,7 @@ HAVE_OPENGLES = 1
HAVE_RJPEG = 0
HAVE_RPNG = 1
HAVE_EMSCRIPTEN = 1
HAVE_MENU = 1
HAVE_RGUI = 1
HAVE_SDL = 0
HAVE_SDL2 = 0
@@ -25,6 +26,7 @@ HAVE_SHADERPIPELINE = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
MEMORY = 536870912
HAVE_STB_FONT = 1
PRECISE_F32 = 1
@@ -56,7 +58,7 @@ endif
include Makefile.common
CFLAGS += -Ideps/libz -Ideps -Ideps/stb
CFLAGS += $(DEF_FLAGS) -Ideps/libz -Ideps -Ideps/stb
libretro = libretro_emscripten.bc
ifneq ($(V), 1)
+21 -11
View File
@@ -158,8 +158,6 @@ else ifeq ($(libogc_platform), 1)
endif
endif
LIBS += -logc
ifeq ($(EXTERNAL_LIBOGC), 1)
LIBS += -lfat
endif
@@ -176,6 +174,8 @@ else ifeq ($(libogc_platform), 1)
endif
endif
LIBS += -logc
CFLAGS += -DGEKKO -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int
HAVE_RUNAHEAD := 1
@@ -193,7 +193,7 @@ else ifeq ($(libogc_platform), 1)
RARCH_CONSOLE = 1
ifeq ($(platform), wii)
HAVE_LANGEXTRA := 1
#HAVE_LANGEXTRA := 1
HAVE_WIIUSB_HID := 1
HAVE_RARCH_EXEC := 1
HAVE_RSOUND := 1
@@ -250,7 +250,7 @@ else ifeq ($(platform), psp1)
HAVE_RBMP := 1
HAVE_RTGA := 1
HAVE_KERNEL_PRX := 1
HAVE_LANGEXTRA := 1
#HAVE_LANGEXTRA := 1
RARCH_CONSOLE = 1
ifeq ($(BUILD_PRX), 1)
@@ -320,6 +320,7 @@ else ifeq ($(platform), windows_msvc6_x86)
HAVE_7ZIP := 1
HAVE_NETWORKING := 0
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -361,6 +362,7 @@ else ifeq ($(platform), windows_msvc2003_x86)
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -407,6 +409,7 @@ else ifeq ($(platform), windows_msvc2005_x86)
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -427,8 +430,8 @@ else ifeq ($(platform), windows_msvc2005_x86)
CXX = cl.exe
LD = link.exe
PLATCFLAGS += -D_WIN32 -D_WIN32_WINNT=0x0410 -D__STDC_CONSTANT_MACROS -D_MBCS
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib
PLATCFLAGS += -D_WIN32 -D_WIN32_WINNT=0x0410 -D__STDC_CONSTANT_MACROS -D_MBCS -DHAVE_EASTEREGG
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib msimg32.lib
PATH := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin"):$(PATH)
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../IDE")
@@ -454,6 +457,7 @@ else ifneq (,$(findstring windows_msvc2010,$(platform)))
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -475,7 +479,7 @@ else ifneq (,$(findstring windows_msvc2010,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2010_,,$(platform))
@@ -524,6 +528,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform)))
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -545,7 +550,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2012_,,$(platform))
@@ -598,6 +603,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -619,7 +625,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2013_,,$(platform))
@@ -672,6 +678,7 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
HAVE_7ZIP := 1
HAVE_NETWORKING := 1
HAVE_NETWORK_CMD := 1
HAVE_NETPLAYDISCOVERY := 1
HAVE_OVERLAY := 1
HAVE_MATERIALUI := 1
HAVE_XMB := 1
@@ -693,7 +700,7 @@ else ifneq (,$(findstring windows_msvc2015,$(platform)))
LD = link.exe
PLATCFLAGS += -D_WIN32 -D__STDC_CONSTANT_MACROS -D_MBCS
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32
PLATCFLAGS += -D__i686__ -D__SSE__ -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DHAVE_CC_RESAMPLER -DHAVE_GL_SYNC -DHAVE_GLSL -DHAVE_IMAGEVIEWER -DHAVE_LANGEXTRA -DHAVE_OPENGL -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DWIN32 -DHAVE_EASTEREGG
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib iphlpapi.lib
PlatformSuffix = $(subst windows_msvc2015_,,$(platform))
@@ -857,6 +864,10 @@ ifeq ($(HAVE_NETWORKING), 1)
CFLAGS += -DHAVE_NETWORKING
endif
ifeq ($(HAVE_NETPLAYDISCOVERY), 1)
CFLAGS += -DHAVE_NETPLAYDISCOVERY
endif
ifeq ($(RARCH_CONSOLE), 1)
CFLAGS += -DRARCH_CONSOLE
endif
@@ -1063,7 +1074,6 @@ overlays-checkout:
$(GIT) clone git://github.com/libretro/common-overlays.git $(OVERLAY_DIR); \
fi
clean:
rm -f $(EXT_TARGET)
rm -f $(EXT_INTER_TARGET)
+259
View File
@@ -0,0 +1,259 @@
include version.all
#---------------------------------------------------------------------------------
.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 := -D__SWITCH__=1 -U__linux__ -U__linux -DGLM_FORCE_PURE=1 -DRARCH_CONSOLE -DRARCH_INTERNAL -DGLOBAL_CONFIG_DIR='"/switch"' $(DEFINES_THREAD) -DHAVE_STB_VORBIS
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
HAVE_RTGA = 1
HAVE_RPNG = 1
HAVE_RJPEG = 1
HAVE_RBMP = 1
HAVE_ZLIB = 1
HAVE_BUILTINZLIB = 1
HAVE_LIBRETRODB = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_MENU = 1
HAVE_RUNAHEAD = 1
HAVE_NETWORKING = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_STB_FONT = 1
HAVE_CHEEVOS = 1
HAVE_CHD = 0 # disabled due to static libretro-common and libchdr conflicts between different cores
HAVE_STB_VORBIS = 1
# RetroArch libnx useful flags
HAVE_THREADS = 1
HAVE_PTHREADS = 1
HAVE_FREETYPE = 0
HAVE_SWITCH = 1
HAVE_LIBNX = 1
HAVE_OPENGL = 1
HAVE_LANGEXTRA = 1
ifeq ($(HAVE_OPENGL), 1)
HAVE_EGL = 1
HAVE_SHADERPIPELINE = 1
HAVE_RGUI = 1
HAVE_MATERIALUI = 1
HAVE_XMB = 1
HAVE_OZONE = 1
HAVE_OVERLAY = 1
else
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
HAVE_XMB = 0
HAVE_OZONE = 0
HAVE_STRIPES = 0
endif
include Makefile.common
BLACKLIST :=
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 := $(RARCH_VERSION)
APP_AUTHOR := libretro Team
APP_ICON := pkg/libnx/retroarch.jpg
#---------------------------------------------------------------------------------
# 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 -I$(PORTLIBS)/include/ -include $(LIBNX)/include/switch.h #$(shell $(PORTLIBS)/bin/freetype-config --cflags)
CFLAGS += $(INCLUDE) -DSWITCH=1 -DHAVE_LIBNX=1 -DNXLINK=1 -DHAVE_SHADERPIPELINE -DHAVE_UPDATE_ASSETS -DHAVE_STB_FONT #-DHAVE_FREETYPE
ifeq ($(strip $(HAVE_STATIC_DUMMY)),1)
CFLAGS += -DHAVE_STATIC_DUMMY=1
endif
# The following line works around an issue in newlib that produces a compilation
# error in glm. It will be removed as soon as this issue is resolved.
CFLAGS += -D_GLIBCXX_USE_C99_MATH_TR1 -D_LDBL_EQ_DBL
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 := -lstdc++ -lbz2 -lpng -lz -lnx -lm
ifeq ($(HAVE_OPENGL), 1)
LIBS := -lEGL -lglapi -ldrm_nouveau $(LIBS)
endif
#---------------------------------------------------------------------------------
# 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)
ifeq ($(strip $(HAVE_STATIC_DUMMY)),)
OFILES += libretro_libnx.a
endif
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_TMP := $(OFILES:.o=.d)
DEPENDS := $(filter-out libretro_libnx.a,$(DEPENDS_TMP))
.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 $(DEPENDS) $(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
#---------------------------------------------------------------------------------------
-4
View File
@@ -45,7 +45,6 @@ export CXX := $(PREFIX)g++
export AR := $(PREFIX)ar
export OBJCOPY := $(PREFIX)objcopy
ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))
#---------------------------------------------------------------------------------
@@ -131,7 +130,6 @@ INCLUDES := $(DEFINCS) \
MACHDEP := -DBIGENDIAN -DGEKKO -mcpu=750 -meabi -msdata=eabi -mhard-float -ffunction-sections -fdata-sections
ifeq ($(PLATFORM),wii)
MACHDEP += -DHW_RVL
endif
@@ -159,7 +157,6 @@ VPATH := $(LWIPDIR) \
$(LIBWIIKEYB) \
$(STUBSDIR)
#---------------------------------------------------------------------------------
SOURCES_LWIP := $(LWIPDIR)/network.c \
$(LWIPDIR)/netio.c \
@@ -264,7 +261,6 @@ SOURCES_OGC_ASM := $(OGCDIR)/cache_asm.S \
$(OGCDIR)/system_asm.S \
$(OGCDIR)/video_asm.S
ifneq ($(BUILD_LITE), 1)
SOURCES_OGC += $(OGCDIR)/dvd.c
endif
+2 -11
View File
@@ -7,7 +7,6 @@ ARCH = amd64
BUILD_DIR = objs/msvc
CXX_BUILD = 0
WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10\$(NOTHING)
WindowsSDKVersion := 10.0.14393.0\$(NOTHING)
VCINSTALLDIR := C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\$(NOTHING)
@@ -30,6 +29,7 @@ HAVE_WINMM := 1
HAVE_RPNG := 1
HAVE_ZLIB := 1
WANT_ZLIB := 1
HAVE_MENU := 1
HAVE_RGUI := 1
HAVE_XMB := 1
HAVE_MATERIALUI := 1
@@ -59,7 +59,7 @@ HAVE_IMAGEVIEWER := 1
include Makefile.common
INCLUDE_DIRS := $(patsubst -isystem%,-I%,$(INCLUDE_DIRS))
CFLAGS := $(filter-out -Wno-unknown-pragmas,$(CFLAGS))
CFLAGS := $(filter-out -Wno-unknown-pragmas,$(DEF_FLAGS))
CXXFLAGS := $(filter-out -fpermissive -Wno-switch -Wno-sign-compare -fno-strict-aliasing -Wno-maybe-uninitialized -Wno-reorder -Wno-parentheses,$(CXXFLAGS))
LIBS := $(filter-out -lstdc++,$(LIBS))
@@ -90,14 +90,12 @@ ifeq ($(ARCH),x86)
CROSS =
endif
INCLUDE := $(VCINSTALLDIR)include;$(VCINSTALLDIR)atlmfc\include;$(WindowsSdkDir)include\$(WindowsSDKVersion)ucrt;$(WindowsSdkDir)include\$(WindowsSDKVersion)shared;$(WindowsSdkDir)include\$(WindowsSDKVersion)um;
LIB := $(VCINSTALLDIR)LIB\$(CROSS);$(VCINSTALLDIR)atlmfc\lib\$(CROSS);$(WindowsSdkDir)lib\$(WindowsSDKVersion)ucrt\$(TARGET_ARCH2);$(WindowsSdkDir)lib\$(WindowsSDKVersion)um\$(TARGET_ARCH2);C:\Program Files (x86)\NVIDIA Corporation\Cg\lib.$(TARGET_ARCH2);C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Lib\$(TARGET_ARCH2);
LIBPATH := $(VCINSTALLDIR)LIB\$(CROSS);$(VCINSTALLDIR)atlmfc\lib\$(CROSS);
PATH := $(shell IFS=$$'\n'; cygpath "$(VCINSTALLDIR)bin\\$(CROSS)"):$(shell IFS=$$'\n'; cygpath "$(WindowsSdkDir)\bin\\$(ARCH2)"):$(PATH)
export INCLUDE := $(INCLUDE)
export LIB := $(LIB)
export LIBPATH := $(LIBPATH)
@@ -144,7 +142,6 @@ RC = rc.exe
LIBS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib
LDFLAGS += -nologo -wx -nxcompat -machine:$(TARGET_ARCH2)
ifeq ($(DEBUG),1)
FLAGS += -GS -Gy -Od -RTC1 -D_SECURE_SCL=1 -Zi
FLAGS += -MDd
@@ -155,7 +152,6 @@ else
FLAGS += -MD
endif
ifeq ($(DEBUG),1)
BUILD_DIR := $(BUILD_DIR)-debug
endif
@@ -170,7 +166,6 @@ ifneq ($(V), 1)
Q := @
endif
ifeq ($(GRIFFIN_BUILD), 1)
OBJ := griffin/griffin.o griffin/griffin_cpp.o
DEFINES += -DHAVE_GRIFFIN -DUSE_MATH_DEFINES
@@ -188,9 +183,6 @@ OBJ := $(patsubst %rarch.o,%rarch.res,$(OBJ))
OBJ := $(addprefix $(BUILD_DIR)/,$(OBJ))
OBJ := $(OBJ:.o=.obj)
LDFLAGS += -WX -SUBSYSTEM:WINDOWS -ENTRY:mainCRTStartup
DEFINES := $(patsubst -f%,,$(DEFINES))
@@ -198,7 +190,6 @@ LDFLAGS := $(patsubst -l%,%.lib,$(LDFLAGS))
LIBS := $(filter-out -lm,$(LIBS))
LIBS := $(patsubst -l%,%.lib,$(LIBS))
#$(info INCLUDE_DIRS : $(INCLUDE_DIRS))
#$(info DEFINES : $(DEFINES))
#$(info CFLAGS : $(CFLAGS))
-62
View File
@@ -1,62 +0,0 @@
# 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
+166
View File
@@ -0,0 +1,166 @@
TARGET := retroarch_orbis
DEBUG ?= 0
GRIFFIN_BUILD = 0
WHOLE_ARCHIVE_LINK = 0
PS4_TITLE_ID := RETROARCH
PS4_TITLE_NAME := RetroArch
PC_DEVELOPMENT_IP_ADDRESS =
PC_DEVELOPMENT_UDP_PORT =
OBJ :=
DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1
DEFINES += -DHAVE_MENU -DHAVE_LIBRETRODB
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER
ifeq ($(DEBUG), 1)
DEFINES += -DHAVE_NETLOGGER
endif
else
HAVE_FILTERS_BUILTIN := 1
HAVE_LANGEXTRA := 0
HAVE_RPNG := 1
HAVE_RJPEG := 1
HAVE_RBMP := 1
HAVE_RTGA := 1
HAVE_ZLIB := 1
HAVE_OVERLAY := 1
HAVE_7ZIP := 1
HAVE_EGL := 1
HAVE_OPENGLES := 1
HAVE_NETWORKING := 0
HAVE_SOCKET_LEGACY := 0
HAVE_MENU := 1
HAVE_MENU_COMMON := 1
HAVE_RGUI := 0
HAVE_MATERIALUI := 0
HAVE_XMB := 1
HAVE_THREADS := 1
HAVE_LIBRETRODB := 1
HAVE_CC_RESAMPLER := 1
HAVE_CHEEVOS := 1
RARCH_CONSOLE := 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
ifeq ($(DEBUG), 1)
HAVE_NETLOGGER = 1
endif
include Makefile.common
CFLAGS += $(DEF_FLAGS)
BLACKLIST :=
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
OBJ += input/drivers/ps4_input.o
OBJ += input/drivers_joypad/ps4_joypad.o
OBJ += audio/drivers/psp_audio.o
#OBJ += frontend/drivers/platform_orbis.o
endif
ifeq ($(strip $(PS4SDK)),)
$(error "Please set PS4SDK in your environment. export PS4SDK=<path to>ps4sdk")
endif
export PATH := $(PATH):$(PS4SDK)/bin
PREFIX :=
CC := $(PREFIX)clang
CXX := $(PREFIX)clang
AS := $(PREFIX)clang
AR := $(PREFIX)ar
OBJCOPY := $(PREFIX)objcopy
STRIP := $(PREFIX)strip
NM := $(PREFIX)nm
LD := $(CXX)
INCDIRS := -I. -Ideps/libz -Ideps/7zip -Ilibretro-common/include -Ideps/stb
LIBDIRS := -L.
ARCHFLAGS := -m64 -DORBIS
CFLAGS += $(ARCHFLAGS) -std=c11 -mcmodel=large -ffreestanding -nostdlib -nostdinc -fno-builtin -fno-stack-protector
ifeq ($(DEBUG), 1)
CFLAGS += -O2 -g
else
CFLAGS += -O3
endif
ASFLAGS := $(ARCHFLAGS) -I$(PS4SDK)/include -target x86_64-scei-ps4-elf -fPIE
LDFLAGS := -O3 -Wall -m64 -nostartfiles -nostdlib -L$(PS4SDK)/lib -pie
ARFLAGS := rcs
CRTFILE ?= $(PS4SDK)/crt0.s
CFLAGS += -Wall -pedantic -Wno-zero-length-array -Wno-format-pedantic
CFLAGS += -D__PS4__ -I$(PS4SDK)/include -I $(PS4SDK)/include/sce
CFLAGS += -target x86_64-scei-ps4-elf -fPIE
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
ifneq ($(PC_DEVELOPMENT_IP_ADDRESS),)
CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS='"$(PC_DEVELOPMENT_IP_ADDRESS)"'
endif
ifneq ($(PC_DEVELOPMENT_UDP_PORT),)
CFLAGS += -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
endif
ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_START := -Wl,--whole-archive
WHOLE_END := -Wl,--no-whole-archive
endif
CXXFLAGS := $(CFLAGS)
PS4_LIBS := -lps4link -ldebugnet -lorbisFile -lelfloader -lorbisKeyboard -lorbis2d -lpng -lz -lorbisGl -lorbisPad -lorbisAudio -lmod -lorbisFileBrowser -lorbisXbmFont -lSceNet_stub -lScePigletv2VSH_stub -lSceSystemService_stub -lSceUserService_stub -lScePad_stub -lSceAudioOut_stub -lSceIme_stub -lSceSysmodule_stub \
-lPs4_extension_kernel_call_standard -lPs4_extension_kernel_execute_dynlib_prepare_dlclose -lPs4_common_kernel -lPs4_common_user -lPs4_common_generic -lPs4LibCInternalAdaptive_stub -lPs4LibKernelAdaptive_stub -lSceLibcInternal_stub -lkernel_stub -lps4Kernel_stub -lPs4_base_stub_resolve_minimal -lPs4_base_kernel_dlsym_standard -lPs4_base_kernel_seek_elf_address_standard -lPs4_base_assembler_register_parameter_standard -lPs4_base_assembler_system_call_standard
LIBS := $(WHOLE_START) -lretro_orbis $(WHOLE_END) $(PS4_LIBS)
TARGETS := $(TARGET).elf
DEPFLAGS = -MT $@ -MMD -MP -MF $*.Tdepend
POSTCOMPILE = mv -f $*.Tdepend $*.depend
all: $(TARGETS)
%.o: %.cpp
%.o: %.cpp %.depend
$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
%.o: %.c
%.o: %.c %.depend
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
%.o: %.S
%.o: %.S %.depend
$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
%.o: %.s
%.o: %.s %.depend
$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
%.depend: ;
$(TARGET).elf: $(OBJ) libretro_orbis.a
$(LD) $(CRTFILE) $(OBJ) $(LDFLAGS) $(LIBDIRS) $(LIBS) -o $@
clean:
rm -f $(OBJ) $(TARGET).elf
rm -f $(OBJ:.o=.depend)
.PHONY: clean all
.PRECIOUS: %.depend
-include $(OBJ:.o=.depend)
-1
View File
@@ -52,4 +52,3 @@ clean:
rm -f $(BINDIR)/retroarch-joyconfig
rm -f $(PNDDIR)/readme.html
rm -f retroarch
+114
View File
@@ -0,0 +1,114 @@
BUILD_PRX = 0
DEBUG = 0
HAVE_KERNEL_PRX = 0
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0
HAVE_THREADS = 0
BIG_STACK = 0
MUTE_WARNINGS = 0
PS2_IP = 192.168.1.150
#Configuration for IRX
EE_BIN2O = bin2o
IRX_DIR = $(PS2SDK)/iop/irx
TARGET = retroarchps2.elf
TARGET_RELEASE = retroarchps2-release.elf
ifeq ($(DEBUG), 1)
OPTIMIZE_LV := -O0 -g
RARCH_DEFINES += -DDEBUG
else
OPTIMIZE_LV := -O2
LDFLAGS := -s
endif
ifeq ($(MUTE_WARNINGS), 1)
DISABLE_WARNINGS := -Wno-sign-compare -Wno-unused -Wno-parentheses
endif
INCDIR = -I$(PS2DEV)/gsKit/include -I$(PS2SDK)/ports/include
INCDIR += -Ips2 -Ips2/include -Ilibretro-common/include
INCDIR += -Ideps -Ideps/stb -Ideps/libz -Ideps/7zip -Ideps/pthreads -Ideps/pthreads/platform/ps2 -Ideps/pthreads/platform/helper
GPVAL = -G0
CFLAGS = $(OPTIMIZE_LV) $(DISABLE_WARNINGS) -ffast-math -fsingle-precision-constant
ASFLAGS = $(CFLAGS)
RARCH_DEFINES += -DPS2 -DUSE_IOP_CTYPE_MACRO -D_MIPS_ARCH_R5900 -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DWANT_ZLIB
RARCH_DEFINES += -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
LIBDIR =
LDFLAGS += -L$(PS2SDK)/ports/lib -L$(PS2DEV)/gsKit/lib -L$(PS2SDK)/ee/lib -L.
LIBS += -lretro_ps2 -lgskit -ldmakit -lgskit_toolkit -laudsrv -lpad -lmc -lhdd -lsdl -lfileXio -lpatches -lpoweroff
#IRX modules
# IRX modules - modules have to be in IRX_DIR
IRX = iomanX.irx fileXio.irx mcman.irx mcserv.irx usbd.irx usbhdfsd.irx freesd.irx audsrv.irx poweroff.irx ps2dev9.irx ps2atad.irx ps2hdd.irx ps2fs.irx
IRX_OBJ = $(IRX:.irx=.o)
EE_OBJS += $(IRX_OBJ)
ifeq ($(HAVE_THREADS), 1)
RARCH_DEFINES += -DHAVE_THREADS
endif
ifeq ($(HAVE_FILE_LOGGER), 1)
CFLAGS += -DHAVE_FILE_LOGGER
endif
ifeq ($(HAVE_KERNEL_PRX), 1)
CFLAGS += -DHAVE_KERNEL_PRX
endif
ifeq ($(BIG_STACK), 1)
CFLAGS += -DBIG_STACK
endif
CFLAGS += $(RARCH_DEFINES)
# Missing objecst on the PS2SDK
EE_OBJS += ps2/compat_files/compat_ctype.o ps2/compat_files/time.o
#EE_OBJS = griffin/griffin.o bootstrap/ps2/kernel_functions.o
EE_OBJS += griffin/griffin.o
EE_CFLAGS = $(CFLAGS)
EE_CXXFLAGS = $(CFLAGS)
EE_LDFLAGS = $(LDFLAGS)
EE_LIBS = $(LIBS)
EE_ASFLAGS = $(ASFLAGS)
EE_INCS = $(INCDIR)
EE_IRX_OBJ = $(IRX_OBJ)
EE_BIN = $(TARGET)
EE_GPVAL = $(GPVAL)
all: $(EE_IRX_OBJ) $(EE_BIN)
clean:
rm -f $(EE_BIN) $(EE_OBJS)
prepare:
ps2client -h $(PS2_IP) reset
ps2client -h $(PS2_IP) netdump
run:
ps2client -h $(PS2_IP) execee host:$(EE_BIN)
debug: clean prepare all run
package:
ps2-packer $(EE_BIN) $(TARGET_RELEASE)
release: clean all package
#Specific file name and output per IRX Module
$(EE_IRX_OBJ):
$(EE_BIN2O) $(EE_GPVAL) $(IRX_DIR)/$(@:.o=.irx) $@ $(@:.o=_irx)
#Include preferences
include $(PS2SDK)/samples/Makefile.pref
include $(PS2SDK)/samples/Makefile.eeglobal
#Linking with C++
$(EE_BIN): $(EE_OBJS) $(PS2SDK)/ee/startup/crt0.o
$(EE_CXX) $(EE_NO_CRT) -T$(PS2SDK)/ee/startup/linkfile $(EE_CXXFLAGS) \
-o $(EE_BIN) $(PS2SDK)/ee/startup/crt0.o $(CRTI_OBJ) $(CRTBEGIN_OBJ) $(EE_OBJS) $(CRTEND_OBJ) $(CRTN_OBJ) $(EE_LDFLAGS) $(EE_LIBS)
+1 -1
View File
@@ -112,7 +112,7 @@ PPU_LDLIBS = $(FONT_LIBS) $(GL_LIBS) $(WHOLE_START) -lretro_ps3 $(WHOLE_END) -l
PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe
DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_LANGEXTRA -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_RSOUND -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_7Z -DWANT_ZLIB -D__CELLOS_LV2__ -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -DHAVE_FILTERS_BUILTIN -DHAVE_CHEEVOS
DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_LANGEXTRA -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_RSOUND -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DHAVE_7Z -DWANT_ZLIB -D__CELLOS_LV2__ -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -DHAVE_FILTERS_BUILTIN -DHAVE_CHEEVOS -DRC_DISABLE_LUA
#DEFINES += -DHAVE_IMAGEVIEWER
+1
View File
@@ -55,6 +55,7 @@ PPU_SRCS = frontend/frontend_salamander.c \
libretro-common/encodings/encoding_utf.c \
libretro-common/compat/compat_strl.c \
libretro-common/compat/compat_strcasestr.c \
libretro-common/compat/fopen_utf8.c \
libretro-common/streams/file_stream.c \
libretro-common/vfs/vfs_implementation.c \
libretro-common/file/config_file.c \
-1
View File
@@ -128,4 +128,3 @@ clean:
rm -f $(OBJ)
.PHONY: clean
-1
View File
@@ -49,7 +49,6 @@ endif
CFLAGS += $(RARCH_DEFINES)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = RetroArch PSP1
+1
View File
@@ -42,6 +42,7 @@ OBJS = frontend/frontend_salamander.o \
libretro-common/lists/dir_list.o \
libretro-common/file/retro_dirent.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/compat/compat_strl.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/file/config_file.o \
+5 -6
View File
@@ -24,7 +24,6 @@ else
HAVE_ZLIB = 1
HAVE_BUILTINZLIB = 1
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 0 # enable later?
HAVE_XMB = 0
HAVE_STATIC_VIDEO_FILTERS = 1
@@ -34,15 +33,15 @@ else
HAVE_DYNAMIC = 1
include Makefile.common
BLACKLIST :=
CFLAGS += $(DEF_FLAGS)
BLACKLIST :=
BLACKLIST += input/input_overlay.o
BLACKLIST += tasks/task_overlay.o
BLACKLIST += tasks/task_overlay.o
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
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
@@ -52,7 +51,7 @@ 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)
+1 -3
View File
@@ -55,6 +55,7 @@ else
endif
include Makefile.common
CFLAGS += $(DEF_FLAGS)
BLACKLIST :=
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
@@ -64,7 +65,6 @@ else
OBJ += frontend/drivers/platform_psp.o
endif
ifeq ($(strip $(VITASDK)),)
$(error "Please set VITASDK in your environment. export VITASDK=<path to>vitasdk")
endif
@@ -127,7 +127,6 @@ TARGETS := $(TARGET).vpk
DEPFLAGS = -MT $@ -MMD -MP -MF $*.Tdepend
POSTCOMPILE = mv -f $*.Tdepend $*.depend
all: $(TARGETS)
%.o: %.cpp
@@ -140,7 +139,6 @@ all: $(TARGETS)
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS) $(DEPFLAGS)
$(POSTCOMPILE)
%.o: %.S
%.o: %.S %.depend
$(CC) -c -o $@ $< $(ASFLAGS) $(INCDIRS) $(DEPFLAGS)
+1
View File
@@ -44,6 +44,7 @@ OBJS = frontend/frontend_salamander.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strl.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/file/config_file.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
+4 -2
View File
@@ -42,12 +42,13 @@ endif
MACHDEP := -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float
CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE)
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map
LIBS := -lwiiuse -logc -lbte
ifeq ($(EXTERNAL_LIBOGC), 1)
LIBS += -lfat
LIBS := -lfat
endif
LIBS += -lwiiuse -logc -lbte
APP_BOOTER_DIR = wii/app_booter
OBJ = frontend/frontend_salamander.o \
@@ -66,6 +67,7 @@ OBJ = frontend/frontend_salamander.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strl.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/compat/fopen_utf8.o \
libretro-common/file/config_file.o \
file_path_str.o \
verbosity.o \
+4 -7
View File
@@ -64,6 +64,7 @@ ifeq ($(SALAMANDER_BUILD),1)
OBJ += frontend/drivers/platform_null.o
OBJ += libretro-common/encodings/encoding_utf.o
OBJ += libretro-common/compat/compat_strcasestr.o
OBJ += libretro-common/compat/fopen_utf8.o
OBJ += libretro-common/file/file_path.o
OBJ += libretro-common/string/stdstring.o
OBJ += libretro-common/lists/string_list.o
@@ -105,7 +106,7 @@ endif
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_LIBRETRODB
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING
DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING -DHAVE_NETPLAYDISCOVERY
# DEFINES += -DWANT_IFADDRS
# DEFINES += -DHAVE_FREETYPE
DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI
@@ -115,12 +116,12 @@ endif
HAVE_RPNG = 1
HAVE_RJPEG = 1
HAVE_RBMP = 1
HAVE_MENU = 1
HAVE_RGUI = 1
HAVE_ZLIB = 1
HAVE_7ZIP = 1
HAVE_BUILTINZLIB = 0
HAVE_LIBRETRODB = 1
HAVE_ZARCH = 0
HAVE_MATERIALUI = 1
HAVE_XMB = 1
HAVE_STB_FONT = 1
@@ -128,6 +129,7 @@ endif
HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_NETWORKING = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_CHEEVOS = 1
# WANT_IFADDRS = 1
HAVE_OVERLAY = 1
@@ -137,8 +139,6 @@ endif
WANT_IOSUHAX = 1
include Makefile.common
BLACKLIST := $(LIBRETRO_COMM_DIR)/net/net_ifinfo.o
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
OBJ += gfx/drivers/gx2_gfx.o
OBJ += gfx/drivers_font/wiiu_font.o
@@ -242,7 +242,6 @@ ifneq ($(WANT_IOSUHAX), 1)
LIBS += -liosuhax
endif
RPX_OBJ = $(BUILD_DIR)/wiiu/system/stubs_rpl.o
HBL_ELF_OBJ = $(BUILD_DIR)/wiiu/system/dynamic.o $(BUILD_DIR)/wiiu/system/stubs_elf.o
@@ -264,13 +263,11 @@ endif
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.depend
all: $(TARGETS)
%: $(BUILD_DIR)/%
cp $< $@
$(BUILD_DIR)/%.o: %.cpp %.depend
@$(if $(Q), echo CXX $<,)
@mkdir -p $(dir $@)
+3 -3
View File
@@ -8,9 +8,11 @@ HAVE_OPENGL = 1
HAVE_DYLIB = 1
HAVE_D3D9 = 1
HAVE_NETWORKING = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_STDIN_CMD = 1
HAVE_COMMAND = 1
HAVE_THREADS = 1
HAVE_MENU = 1
HAVE_RGUI = 1
HAVE_MATERIALUI = 1
HAVE_7ZIP = 1
@@ -101,7 +103,6 @@ else
WINDRES = windres
endif
libretro ?= -lretro
ifeq ($(DYNAMIC), 1)
@@ -122,7 +123,7 @@ else
CXXFLAGS += -O3 -ffast-math
endif
CFLAGS += -Wall -Wno-unused-result -Wno-unused-variable -I. -Ideps
CFLAGS += $(DEF_FLAGS) -Wall -Wno-unused-result -Wno-unused-variable -I. -Ideps
CXXFLAGS += -Wall -Wno-unused-result -Wno-unused-variable -I. -Ideps -std=c++98 -D__STDC_CONSTANT_MACROS
ifeq ($(CXX_BUILD), 1)
CFLAGS += -std=c++98 -xc++ -D__STDC_CONSTANT_MACROS
@@ -171,4 +172,3 @@ clean:
rm -f *.d
.PHONY: all install uninstall clean
+17 -17
View File
@@ -189,46 +189,46 @@ The default super resolution is 2560. It is displayed just under the CRT switch
If native resolutions are activated you will need a whole new set of modelines:
- 512 x 240 @ 50.006977 SNESpal
- 256 x 240 @ 50.006977 SNESpal
- 256 x 448 @ 50.006977 SNESpal
- 512 x 224 @ 50.006977 SNESpal
- 512 x 240 @ 50.006977 SNESpal
- 512 x 448 @ 50.006977 SNESpal
- 256 x 240 @ 60.098812 SNESntsc
- 256 x 448 @ 60.098812 SNESntsc
- 512 x 240 @ 60.098812 SNESntsc
- 512 x 224 @ 60.098812 SNESntsc
- 512 x 448 @ 60.098812 SNESntsc
- 256 x 240 @ 50.006977 SNESpal
- 256 x 448 @ 50.006977 SNESpal
- 256 x 240 @ 60.098812 SNESntsc
- 256 x 448 @ 60.098812 SNESntsc
- 320 x 240 @ 59.922745 MDntsc
- 320 x 448 @ 59.922745 MDntp
- 320 x 480 @ 59.922745 MDntsc
- 256 x 192 @ 59.922745 MDntsc
- 320 x 224 @ 59.922745 MDntsc
- 256 x 224 @ 59.922745 MDntsc
- 320 x 288 @ 49.701458 MDpal
- 320 x 576 @ 49.701458 MDpal
- 320 x 224 @ 59.922745 MDntsc
- 320 x 240 @ 59.922745 MDntsc
- 320 x 448 @ 59.922745 MDntsc
- 320 x 480 @ 59.922745 MDntsc
- 256 x 192 @ 49.701458 MDpal
- 256 x 224 @ 49.701458 MDpal
- 320 x 224 @ 49.701458 MDpal
- 320 x 240 @ 49.701458 MDpal
- 320 x 288 @ 49.701458 MDpal
- 320 x 448 @ 49.701458 MDpal
- 320 x 480 @ 49.701458 MDpal
- 256 x 224 @ 49.701458 MDpal
- 320 x 576 @ 49.701458 MDpal
- 256 x 288 @ 49.701458 MSYSpal
- 256 x 240 @ 60.098812 NESntsc
- 256 x 240 @ 50.006977 NESpal
- 640 x 480 @ 60.130001 N64ntsc
- 640 x 237 @ 60.130001 N64ntsc
- 640 x 240 @ 60.130001 N64ntsc
- 640 x 480 @ 60.130001 N64ntsc
- 640 x 288 @ 50.000000 N64pal
- 640 x 480 @ 50.000000 N64pal
- 640 x 576 @ 50.000000 n64pal
- 640 x 288 @ 50.000000 n64pal
- 640 x 576 @ 50.000000 N64pal
- 256 x 252 @ 49.759998 PSXpal
- 384 x 252 @ 49.759998 PSXpal
- 640 x 540 @ 49.759998 PSXpal
- 320 x 252 @ 49.759998 PSXpal
- 384 x 252 @ 49.759998 PSXpal
- 640 x 252 @ 49.759998 PSXpal
- 640 x 540 @ 49.759998 PSXpal
- 384 x 240 @ 59.941002 PSXntsc
- 256 x 480 @ 59.941002 PSXntsc
+88
View File
@@ -0,0 +1,88 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __AUDIO_DEFINES__H
#define __AUDIO_DEFINES__H
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
#define AUDIO_CHUNK_SIZE_BLOCKING 512
/* So we don't get complete line-noise when fast-forwarding audio. */
#define AUDIO_CHUNK_SIZE_NONBLOCKING 2048
#define AUDIO_MAX_RATIO 16
#define AUDIO_MIXER_MAX_STREAMS 16
#define AUDIO_MIXER_MAX_SYSTEM_STREAMS (AUDIO_MIXER_MAX_STREAMS + 4)
/* do not define more than (MAX_SYSTEM_STREAMS - MAX_STREAMS) */
enum audio_mixer_system_slot
{
AUDIO_MIXER_SYSTEM_SLOT_OK = AUDIO_MIXER_MAX_STREAMS,
AUDIO_MIXER_SYSTEM_SLOT_CANCEL,
AUDIO_MIXER_SYSTEM_SLOT_NOTICE,
AUDIO_MIXER_SYSTEM_SLOT_BGM
};
enum audio_action
{
AUDIO_ACTION_NONE = 0,
AUDIO_ACTION_RATE_CONTROL_DELTA,
AUDIO_ACTION_MIXER_MUTE_ENABLE,
AUDIO_ACTION_MUTE_ENABLE,
AUDIO_ACTION_VOLUME_GAIN,
AUDIO_ACTION_MIXER_VOLUME_GAIN,
AUDIO_ACTION_MIXER
};
enum audio_mixer_slot_selection_type
{
AUDIO_MIXER_SLOT_SELECTION_AUTOMATIC = 0,
AUDIO_MIXER_SLOT_SELECTION_MANUAL
};
enum audio_mixer_stream_type
{
AUDIO_STREAM_TYPE_NONE = 0,
AUDIO_STREAM_TYPE_USER,
AUDIO_STREAM_TYPE_SYSTEM
};
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_statistics
{
float average_buffer_saturation;
float std_deviation_percentage;
float close_to_underrun;
float close_to_blocking;
unsigned samples;
} audio_statistics_t;
RETRO_END_DECLS
#endif
+303 -36
View File
@@ -21,10 +21,12 @@
#include <lists/string_list.h>
#include <audio/conversion/float_to_s16.h>
#include <audio/conversion/s16_to_float.h>
#include <audio/audio_resampler.h>
#include <audio/dsp_filter.h>
#include <file/file_path.h>
#include <lists/dir_list.h>
#include <string/stdstring.h>
#include <streams/file_stream.h>
#ifdef HAVE_CONFIG_H
#include "../config.h"
@@ -35,6 +37,8 @@
#include "../gfx/video_driver.h"
#include "../record/record_driver.h"
#include "../frontend/frontend_driver.h"
#include "../tasks/task_audio_mixer.h"
#include "../tasks/tasks_internal.h"
#include "../command.h"
#include "../driver.h"
@@ -42,9 +46,17 @@
#include "../retroarch.h"
#include "../verbosity.h"
#include "../list_special.h"
#include "../file_path_special.h"
#include "../content.h"
#ifdef HAVE_THREADS
#include <rthreads/rthreads.h>
#endif
#define AUDIO_BUFFER_FREE_SAMPLES_COUNT (8 * 1024)
#define MENU_SOUND_FORMATS "ogg|mod|xm|s3m|mp3|flac"
/**
* db_to_gain:
* @db : Decibels.
@@ -65,6 +77,9 @@ static const audio_driver_t *audio_drivers[] = {
#ifdef HAVE_TINYALSA
&audio_tinyalsa,
#endif
#if defined(HAVE_AUDIOIO)
&audio_audioio,
#endif
#if defined(HAVE_OSS) || defined(HAVE_OSS_BSD)
&audio_oss,
#endif
@@ -74,6 +89,9 @@ static const audio_driver_t *audio_drivers[] = {
#ifdef HAVE_COREAUDIO
&audio_coreaudio,
#endif
#ifdef HAVE_COREAUDIO3
&audio_coreaudio3,
#endif
#ifdef HAVE_AL
&audio_openal,
#endif
@@ -116,21 +134,25 @@ static const audio_driver_t *audio_drivers[] = {
#ifdef EMSCRIPTEN
&audio_rwebaudio,
#endif
#if defined(PSP) || defined(VITA)
#if defined(PSP) || defined(VITA) || defined(ORBIS)
&audio_psp,
#endif
#if defined(PS2)
&audio_ps2,
#endif
#ifdef _3DS
&audio_ctr_csnd,
&audio_ctr_dsp,
#endif
#ifdef SWITCH
&audio_switch_thread,
&audio_switch,
#endif
&audio_null,
NULL,
};
static struct audio_mixer_stream audio_mixer_streams[AUDIO_MIXER_MAX_STREAMS] = {{0}};
static struct audio_mixer_stream audio_mixer_streams[AUDIO_MIXER_MAX_SYSTEM_STREAMS] = {{0}};
static size_t audio_driver_chunk_size = 0;
static size_t audio_driver_chunk_nonblock_size = 0;
@@ -178,13 +200,36 @@ static const audio_driver_t *current_audio = NULL;
static void *audio_driver_context_audio_data = NULL;
static bool audio_suspended = false;
static bool audio_is_threaded = false;
#ifdef HAVE_THREADS
static slock_t* s_audio_driver_lock = NULL;
#endif
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);
static void audio_mixer_menu_stop_cb(
audio_mixer_sound_t *sound, unsigned reason);
enum resampler_quality audio_driver_get_resampler_quality(void)
#ifdef HAVE_THREADS
#define audio_driver_lock() \
if (s_audio_driver_lock) \
slock_lock(s_audio_driver_lock)
#else
#define audio_driver_lock()
#endif
#ifdef HAVE_THREADS
#define audio_driver_unlock() \
if (s_audio_driver_lock) \
slock_unlock(s_audio_driver_lock)
#else
#define audio_driver_unlock()
#endif
static enum resampler_quality audio_driver_get_resampler_quality(void)
{
settings_t *settings = config_get_ptr();
@@ -196,14 +241,14 @@ enum resampler_quality audio_driver_get_resampler_quality(void)
audio_mixer_stream_t *audio_driver_mixer_get_stream(unsigned i)
{
if (i > (AUDIO_MIXER_MAX_STREAMS-1))
if (i > (AUDIO_MIXER_MAX_SYSTEM_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))
if (i > (AUDIO_MIXER_MAX_SYSTEM_STREAMS-1))
return "N/A";
if (!string_is_empty(audio_mixer_streams[i].name))
return audio_mixer_streams[i].name;
@@ -385,12 +430,11 @@ static bool audio_driver_deinit_internal(void)
return true;
}
static void audio_driver_mixer_init(unsigned out_rate)
static void audio_driver_mixer_init(unsigned audio_out_rate)
{
audio_mixer_init(out_rate);
audio_mixer_init(audio_out_rate);
}
static bool audio_driver_init_internal(bool audio_cb_inited)
{
unsigned new_rate = 0;
@@ -441,6 +485,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
#ifdef HAVE_THREADS
if (audio_cb_inited)
{
audio_is_threaded = true;
RARCH_LOG("[Audio]: Starting threaded audio driver ...\n");
if (!audio_init_thread(
&current_audio,
@@ -459,6 +504,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
else
#endif
{
audio_is_threaded = false;
audio_driver_context_audio_data =
current_audio->init(*settings->arrays.audio_device ?
settings->arrays.audio_device : NULL,
@@ -501,6 +547,15 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
audio_source_ratio_original = audio_source_ratio_current =
(double)settings->uints.audio_out_rate / audio_driver_input;
#ifdef HAVE_THREADS
if (s_audio_driver_lock)
slock_free(s_audio_driver_lock);
s_audio_driver_lock = slock_new();
#endif
audio_resampler_lock_init();
audio_resampler_lock();
if (!retro_resampler_realloc(
&audio_driver_resampler_data,
&audio_driver_resampler,
@@ -513,6 +568,8 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
audio_driver_active = false;
}
audio_resampler_unlock();
aud_inp_data = (float*)malloc(max_bufsamples * sizeof(float));
retro_assert(aud_inp_data != NULL);
@@ -583,9 +640,13 @@ void audio_driver_set_nonblocking_state(bool enable)
audio_driver_context_audio_data,
settings->bools.audio_sync ? enable : true);
audio_driver_lock();
audio_driver_chunk_size = enable ?
audio_driver_chunk_nonblock_size :
audio_driver_chunk_block_size;
audio_driver_unlock();
}
/**
@@ -603,6 +664,7 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
bool is_paused = false;
bool is_idle = false;
bool is_slowmotion = false;
bool is_active = false;
const void *output_data = NULL;
unsigned output_frames = 0;
float audio_volume_gain = !audio_driver_mute_enable ?
@@ -611,9 +673,13 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
src_data.data_out = NULL;
src_data.output_frames = 0;
recording_driver_lock();
if (recording_data)
recording_push_audio(data, samples);
recording_driver_unlock();
runloop_get_status(&is_paused, &is_idle, &is_slowmotion,
&is_perfcnt_enable);
@@ -623,13 +689,16 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
!audio_driver_output_samples_buf)
return;
audio_driver_lock();
convert_s16_to_float(audio_driver_input_data, data, samples,
audio_volume_gain);
audio_driver_unlock();
src_data.data_in = audio_driver_input_data;
src_data.input_frames = samples >> 1;
if (audio_driver_dsp)
{
struct retro_dsp_data dsp_data;
@@ -690,9 +759,15 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
src_data.ratio *= settings->floats.slowmotion_ratio;
}
audio_driver_resampler->process(audio_driver_resampler_data, &src_data);
audio_driver_lock();
if (audio_mixer_active)
audio_resampler_lock();
audio_driver_resampler->process(audio_driver_resampler_data, &src_data);
audio_resampler_unlock();
is_active = audio_mixer_active;
if (is_active)
{
bool override = audio_driver_mixer_mute_enable ? true :
(audio_driver_mixer_volume_gain != 1.0f) ? true : false;
@@ -702,6 +777,8 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
src_data.output_frames, mixer_gain, override);
}
audio_driver_unlock();
output_data = audio_driver_output_samples_buf;
output_frames = (unsigned)src_data.output_frames;
@@ -716,9 +793,13 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
output_frames *= sizeof(int16_t);
}
audio_driver_lock();
if (current_audio->write(audio_driver_context_audio_data,
output_data, output_frames * 2) < 0)
audio_driver_active = false;
audio_driver_unlock();
}
/**
@@ -730,14 +811,24 @@ static void audio_driver_flush(const int16_t *data, size_t samples)
**/
void audio_driver_sample(int16_t left, int16_t right)
{
audio_driver_lock();
if (audio_suspended)
{
audio_driver_unlock();
return;
}
audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = left;
audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = right;
if (audio_driver_data_ptr < audio_driver_chunk_size)
{
audio_driver_unlock();
return;
}
audio_driver_unlock();
audio_driver_flush(audio_driver_output_samples_conv_buf,
audio_driver_data_ptr);
@@ -748,9 +839,8 @@ void audio_driver_sample(int16_t left, int16_t right)
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 =
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)
@@ -795,6 +885,9 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
**/
void audio_driver_sample_rewind(int16_t left, int16_t right)
{
if (audio_driver_rewind_ptr == 0)
return;
audio_driver_rewind_buf[--audio_driver_rewind_ptr] = right;
audio_driver_rewind_buf[--audio_driver_rewind_ptr] = left;
}
@@ -818,7 +911,10 @@ size_t audio_driver_sample_batch_rewind(const int16_t *data, size_t frames)
size_t samples = frames << 1;
for (i = 0; i < samples; i++)
audio_driver_rewind_buf[--audio_driver_rewind_ptr] = data[i];
{
if (audio_driver_rewind_ptr > 0)
audio_driver_rewind_buf[--audio_driver_rewind_ptr] = data[i];
}
return frames;
}
@@ -904,11 +1000,13 @@ void audio_driver_setup_rewind(void)
for (i = 0; i < audio_driver_data_ptr; i += 2)
{
audio_driver_rewind_buf[--audio_driver_rewind_ptr] =
audio_driver_output_samples_conv_buf[i + 1];
if (audio_driver_rewind_ptr > 0)
audio_driver_rewind_buf[--audio_driver_rewind_ptr] =
audio_driver_output_samples_conv_buf[i + 1];
audio_driver_rewind_buf[--audio_driver_rewind_ptr] =
audio_driver_output_samples_conv_buf[i + 0];
if (audio_driver_rewind_ptr > 0)
audio_driver_rewind_buf[--audio_driver_rewind_ptr] =
audio_driver_output_samples_conv_buf[i + 0];
}
audio_driver_data_ptr = 0;
@@ -953,10 +1051,13 @@ bool audio_driver_find_driver(void)
void audio_driver_deinit_resampler(void)
{
audio_resampler_lock();
if (audio_driver_resampler && audio_driver_resampler_data)
audio_driver_resampler->free(audio_driver_resampler_data);
audio_driver_resampler = NULL;
audio_driver_resampler_data = NULL;
audio_resampler_unlock();
audio_resampler_lock_free();
}
bool audio_driver_free_devices_list(void)
@@ -1040,7 +1141,7 @@ static int audio_mixer_find_index(audio_mixer_sound_t *sound)
{
unsigned i;
for (i = 0; i < AUDIO_MIXER_MAX_STREAMS; i++)
for (i = 0; i < AUDIO_MIXER_MAX_SYSTEM_STREAMS; i++)
{
audio_mixer_sound_t *handle = audio_mixer_streams[i].handle;
if (handle == sound)
@@ -1082,6 +1183,28 @@ static void audio_mixer_play_stop_cb(
}
}
static void audio_mixer_menu_stop_cb(
audio_mixer_sound_t *sound, unsigned reason)
{
int idx = audio_mixer_find_index(sound);
switch (reason)
{
case AUDIO_MIXER_SOUND_FINISHED:
if (idx >= 0)
{
unsigned i = (unsigned)idx;
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_STOPPED;
audio_mixer_streams[i].volume = 0.0f;
}
break;
case AUDIO_MIXER_SOUND_STOPPED:
break;
case AUDIO_MIXER_SOUND_REPEATED:
break;
}
}
static void audio_mixer_play_stop_sequential_cb(
audio_mixer_sound_t *sound, unsigned reason)
{
@@ -1099,6 +1222,11 @@ static void audio_mixer_play_stop_sequential_cb(
if (!string_is_empty(audio_mixer_streams[i].name))
free(audio_mixer_streams[i].name);
if (i < AUDIO_MIXER_MAX_STREAMS)
audio_mixer_streams[i].stream_type = AUDIO_STREAM_TYPE_USER;
else
audio_mixer_streams[i].stream_type = AUDIO_STREAM_TYPE_SYSTEM;
audio_mixer_streams[i].name = NULL;
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
audio_mixer_streams[i].volume = 0.0f;
@@ -1109,7 +1237,7 @@ static void audio_mixer_play_stop_sequential_cb(
i++;
for (; i < AUDIO_MIXER_MAX_STREAMS; i++)
for (; i < AUDIO_MIXER_MAX_SYSTEM_STREAMS; i++)
{
if (audio_mixer_streams[i].state == AUDIO_STREAM_STATE_STOPPED)
{
@@ -1126,10 +1254,11 @@ static void audio_mixer_play_stop_sequential_cb(
}
}
bool audio_driver_mixer_get_free_stream_slot(unsigned *id)
static bool audio_driver_mixer_get_free_stream_slot(unsigned *id, enum audio_mixer_stream_type type)
{
unsigned i;
for (i = 0; i < AUDIO_MIXER_MAX_STREAMS; i++)
unsigned i = (type == AUDIO_STREAM_TYPE_USER) ? 0 : AUDIO_MIXER_MAX_STREAMS;
unsigned count = (type == AUDIO_STREAM_TYPE_USER) ? AUDIO_MIXER_MAX_STREAMS : AUDIO_MIXER_MAX_SYSTEM_STREAMS;
for (; i < count; i++)
{
if (audio_mixer_streams[i].state == AUDIO_STREAM_STATE_NONE)
{
@@ -1149,9 +1278,22 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
audio_mixer_stop_cb_t stop_cb = audio_mixer_play_stop_cb;
bool looped = false;
void *buf = NULL;
if (!audio_driver_mixer_get_free_stream_slot(&free_slot))
if (params->stream_type == AUDIO_STREAM_TYPE_NONE)
return false;
switch (params->slot_selection_type)
{
case AUDIO_MIXER_SLOT_SELECTION_MANUAL:
free_slot = params->slot_selection_idx;
break;
case AUDIO_MIXER_SLOT_SELECTION_AUTOMATIC:
default:
if (!audio_driver_mixer_get_free_stream_slot(
&free_slot, params->stream_type))
return false;
break;
}
if (params->state == AUDIO_STREAM_STATE_NONE)
return false;
@@ -1211,22 +1353,28 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
break;
}
audio_driver_lock();
audio_mixer_active = true;
audio_mixer_streams[free_slot].name = !string_is_empty(params->basename) ? strdup(params->basename) : NULL;
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].stream_type = params->stream_type;
audio_mixer_streams[free_slot].type = params->type;
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;
audio_driver_unlock();
return true;
}
enum audio_mixer_state audio_driver_mixer_get_stream_state(unsigned i)
{
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return AUDIO_STREAM_STATE_NONE;
return audio_mixer_streams[i].state;
@@ -1236,7 +1384,7 @@ static void audio_driver_mixer_play_stream_internal(unsigned i, unsigned type)
{
bool set_state = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return;
switch (audio_mixer_streams[i].state)
@@ -1258,12 +1406,128 @@ static void audio_driver_mixer_play_stream_internal(unsigned i, unsigned type)
audio_mixer_streams[i].state = (enum audio_mixer_state)type;
}
static void audio_driver_load_menu_bgm_callback(void *task_data, void *user_data, const char *error)
{
bool contentless = false;
bool is_inited = false;
content_get_status(&contentless, &is_inited);
if (!is_inited)
audio_driver_mixer_play_menu_sound_looped(AUDIO_MIXER_SYSTEM_SLOT_BGM);
}
void audio_driver_load_menu_sounds(void)
{
settings_t *settings = config_get_ptr();
char *sounds_path = NULL;
char *sounds_fallback_path = NULL;
const char *path_ok = NULL;
const char *path_cancel = NULL;
const char *path_notice = NULL;
const char *path_bgm = NULL;
struct string_list *list = NULL;
struct string_list *list_fallback = NULL;
int i = 0;
sounds_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
sounds_fallback_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
sounds_path[0] = sounds_fallback_path[0] = '\0';
fill_pathname_join(
sounds_fallback_path,
settings->paths.directory_assets,
"sounds",
PATH_MAX_LENGTH * sizeof(char)
);
fill_pathname_application_special(sounds_path, PATH_MAX_LENGTH * sizeof(char), APPLICATION_SPECIAL_DIRECTORY_ASSETS_SOUNDS);
list = dir_list_new(sounds_path, MENU_SOUND_FORMATS, false, false, false, false);
list_fallback = dir_list_new(sounds_fallback_path, MENU_SOUND_FORMATS, false, false, false, false);
if (!list)
{
list = list_fallback;
list_fallback = NULL;
}
if (!list || list->size == 0)
goto end;
if (list_fallback && list_fallback->size > 0)
{
for (i = 0; i < list_fallback->size; i++)
{
if (list->size == 0 || !string_list_find_elem(list, list_fallback->elems[i].data))
{
union string_list_elem_attr attr = {0};
string_list_append(list, list_fallback->elems[i].data, attr);
}
}
}
for (i = 0; i < list->size; i++)
{
const char *path = list->elems[i].data;
const char *ext = path_get_extension(path);
char basename_noext[PATH_MAX_LENGTH];
basename_noext[0] = '\0';
fill_pathname_base_noext(basename_noext, path, sizeof(basename_noext));
if (audio_driver_mixer_extension_supported(ext))
{
if (string_is_equal_noncase(basename_noext, "ok"))
path_ok = path;
if (string_is_equal_noncase(basename_noext, "cancel"))
path_cancel = path;
if (string_is_equal_noncase(basename_noext, "notice"))
path_notice = path;
if (string_is_equal_noncase(basename_noext, "bgm"))
path_bgm = path;
}
}
if (path_ok && settings->bools.audio_enable_menu_ok)
task_push_audio_mixer_load(path_ok, NULL, NULL, true, AUDIO_MIXER_SLOT_SELECTION_MANUAL, AUDIO_MIXER_SYSTEM_SLOT_OK);
if (path_cancel && settings->bools.audio_enable_menu_cancel)
task_push_audio_mixer_load(path_cancel, NULL, NULL, true, AUDIO_MIXER_SLOT_SELECTION_MANUAL, AUDIO_MIXER_SYSTEM_SLOT_CANCEL);
if (path_notice && settings->bools.audio_enable_menu_notice)
task_push_audio_mixer_load(path_notice, NULL, NULL, true, AUDIO_MIXER_SLOT_SELECTION_MANUAL, AUDIO_MIXER_SYSTEM_SLOT_NOTICE);
if (path_bgm && settings->bools.audio_enable_menu_bgm)
task_push_audio_mixer_load(path_bgm, audio_driver_load_menu_bgm_callback, NULL, true, AUDIO_MIXER_SLOT_SELECTION_MANUAL, AUDIO_MIXER_SYSTEM_SLOT_BGM);
end:
if (list)
string_list_free(list);
if (list_fallback)
string_list_free(list_fallback);
if (sounds_path)
free(sounds_path);
if (sounds_fallback_path)
free(sounds_fallback_path);
}
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_menu_sound_looped(unsigned i)
{
audio_mixer_streams[i].stop_cb = audio_mixer_menu_stop_cb;
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING_LOOPED);
}
void audio_driver_mixer_play_menu_sound(unsigned i)
{
audio_mixer_streams[i].stop_cb = audio_mixer_menu_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;
@@ -1278,7 +1542,7 @@ void audio_driver_mixer_play_stream_sequential(unsigned i)
float audio_driver_mixer_get_stream_volume(unsigned i)
{
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return 0.0f;
return audio_mixer_streams[i].volume;
@@ -1288,7 +1552,7 @@ void audio_driver_mixer_set_stream_volume(unsigned i, float vol)
{
audio_mixer_voice_t *voice = NULL;
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return;
audio_mixer_streams[i].volume = vol;
@@ -1303,7 +1567,7 @@ void audio_driver_mixer_stop_stream(unsigned i)
{
bool set_state = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return;
switch (audio_mixer_streams[i].state)
@@ -1333,7 +1597,7 @@ void audio_driver_mixer_remove_stream(unsigned i)
{
bool destroy = false;
if (i >= AUDIO_MIXER_MAX_STREAMS)
if (i >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
return;
switch (audio_mixer_streams[i].state)
@@ -1375,7 +1639,7 @@ static void audio_driver_mixer_deinit(void)
audio_mixer_active = false;
for (i = 0; i < AUDIO_MIXER_MAX_STREAMS; i++)
for (i = 0; i < AUDIO_MIXER_MAX_SYSTEM_STREAMS; i++)
{
audio_driver_mixer_stop_stream(i);
audio_driver_mixer_remove_stream(i);
@@ -1388,6 +1652,11 @@ bool audio_driver_deinit(void)
{
audio_driver_mixer_deinit();
audio_driver_free_devices_list();
#ifdef HAVE_THREADS
slock_free(s_audio_driver_lock);
s_audio_driver_lock = NULL;
#endif
if (!audio_driver_deinit_internal())
return false;
return true;
@@ -1489,7 +1758,6 @@ error:
return false;
}
bool audio_driver_stop(void)
{
if (!current_audio || !current_audio->stop
@@ -1579,7 +1847,6 @@ void audio_set_bool(enum audio_action action, bool val)
}
}
void audio_set_float(enum audio_action action, float val)
{
switch (action)
+28 -51
View File
@@ -22,46 +22,21 @@
#include <sys/types.h>
#include <boolean.h>
#include <audio/audio_mixer.h>
#include <audio/audio_resampler.h>
#include <retro_common_api.h>
#include <audio/audio_mixer.h>
#include "audio_defines.h"
RETRO_BEGIN_DECLS
#define AUDIO_CHUNK_SIZE_BLOCKING 512
/* So we don't get complete line-noise when fast-forwarding audio. */
#define AUDIO_CHUNK_SIZE_NONBLOCKING 2048
#define AUDIO_MAX_RATIO 16
#define AUDIO_MIXER_MAX_STREAMS 16
enum audio_action
{
AUDIO_ACTION_NONE = 0,
AUDIO_ACTION_RATE_CONTROL_DELTA,
AUDIO_ACTION_MIXER_MUTE_ENABLE,
AUDIO_ACTION_MUTE_ENABLE,
AUDIO_ACTION_VOLUME_GAIN,
AUDIO_ACTION_MIXER_VOLUME_GAIN,
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_stream_type stream_type;
enum audio_mixer_type type;
enum audio_mixer_state state;
float volume;
void *buf;
@@ -69,14 +44,19 @@ typedef struct audio_mixer_stream
size_t bufsize;
} audio_mixer_stream_t;
typedef struct audio_statistics
typedef struct audio_mixer_stream_params
{
float average_buffer_saturation;
float std_deviation_percentage;
float close_to_underrun;
float close_to_blocking;
unsigned samples;
} audio_statistics_t;
float volume;
enum audio_mixer_slot_selection_type slot_selection_type;
unsigned slot_selection_idx;
enum audio_mixer_stream_type stream_type;
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;
typedef struct audio_driver
{
@@ -160,17 +140,6 @@ typedef struct audio_driver
size_t (*buffer_size)(void *data);
} audio_driver_t;
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;
void audio_driver_destroy_data(void);
void audio_driver_set_own_driver(void);
@@ -295,6 +264,10 @@ 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_menu_sound(unsigned i);
void audio_driver_mixer_play_menu_sound_looped(unsigned i);
void audio_driver_mixer_play_stream_sequential(unsigned i);
void audio_driver_mixer_play_stream_looped(unsigned i);
@@ -307,15 +280,16 @@ 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);
void audio_driver_load_menu_sounds(void);
extern audio_driver_t audio_rsound;
extern audio_driver_t audio_audioio;
extern audio_driver_t audio_oss;
extern audio_driver_t audio_alsa;
extern audio_driver_t audio_alsathread;
@@ -330,14 +304,17 @@ extern audio_driver_t audio_pulse;
extern audio_driver_t audio_dsound;
extern audio_driver_t audio_wasapi;
extern audio_driver_t audio_coreaudio;
extern audio_driver_t audio_coreaudio3;
extern audio_driver_t audio_xenon360;
extern audio_driver_t audio_ps3;
extern audio_driver_t audio_gx;
extern audio_driver_t audio_ax;
extern audio_driver_t audio_psp;
extern audio_driver_t audio_ps2;
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;
-1
View File
@@ -43,4 +43,3 @@ bool audio_init_thread(const audio_driver_t **out_driver, void **out_data,
const audio_driver_t *driver);
#endif
-2
View File
@@ -219,7 +219,6 @@ static int check_pcm_status(void *data, int channel_type)
return ret;
}
static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size)
{
alsa_t *alsa = (alsa_t*)data;
@@ -328,7 +327,6 @@ static void alsa_qsa_set_nonblock_state(void *data, bool state)
alsa->nonblock = state;
}
static bool alsa_qsa_use_float(void *data)
{
alsa_t *alsa = (alsa_t*)data;
+204
View File
@@ -0,0 +1,204 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/audioio.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "../audio_driver.h"
#include "../../verbosity.h"
#define DEFAULT_DEV "/dev/audio"
static void *audioio_init(const char *device, unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_out_rate)
{
int *fd = (int*)calloc(1, sizeof(int));
const char *audiodev = device ? device : DEFAULT_DEV;
struct audio_info info;
if (!fd)
return NULL;
AUDIO_INITINFO(&info);
#ifdef AUMODE_PLAY_ALL
info.mode = AUMODE_PLAY_ALL;
#endif
info.play.sample_rate = rate;
info.play.channels = 2;
info.play.precision = 16;
#ifdef AUDIO_ENCODING_SLINEAR
info.play.encoding = AUDIO_ENCODING_SLINEAR;
#else
info.play.encoding = AUDIO_ENCODING_LINEAR;
#endif
if ((*fd = open(audiodev, O_WRONLY)) < 0)
{
free(fd);
perror("open");
return NULL;
}
if (ioctl(*fd, AUDIO_SETINFO, &info) < 0)
goto error;
if (ioctl(*fd, AUDIO_GETINFO, &info) < 0)
goto error;
*new_out_rate = info.play.sample_rate;
return fd;
error:
close(*fd);
free(fd);
perror("ioctl");
return NULL;
}
static ssize_t audioio_write(void *data, const void *buf, size_t size)
{
ssize_t ret;
int *fd = (int*)data;
if (size == 0)
return 0;
if ((ret = write(*fd, buf, size)) < 0)
{
if (errno == EAGAIN && (fcntl(*fd, F_GETFL) & O_NONBLOCK))
return 0;
return -1;
}
return ret;
}
static bool audioio_stop(void *data)
{
struct audio_info info;
int *fd = (int*)data;
if (ioctl(*fd, AUDIO_FLUSH, NULL) < 0)
return false;
if (ioctl(*fd, AUDIO_GETINFO, &info) < 0)
return false;
info.play.pause = true;
return ioctl(*fd, AUDIO_SETINFO, &info) == 0;
}
static bool audioio_start(void *data, bool is_shutdown)
{
struct audio_info info;
int *fd = (int*)data;
if (ioctl(*fd, AUDIO_FLUSH, NULL) < 0)
return false;
if (ioctl(*fd, AUDIO_GETINFO, &info) < 0)
return false;
info.play.pause = false;
return ioctl(*fd, AUDIO_SETINFO, &info) == 0;
}
static bool audioio_alive(void *data)
{
struct audio_info info;
int *fd = (int*)data;
if (ioctl(*fd, AUDIO_GETINFO, &info) < 0)
return false;
return !info.play.pause;
}
static void audioio_set_nonblock_state(void *data, bool state)
{
int rc;
int *fd = (int*)data;
if (state)
rc = fcntl(*fd, F_SETFL, fcntl(*fd, F_GETFL) | O_NONBLOCK);
else
rc = fcntl(*fd, F_SETFL, fcntl(*fd, F_GETFL) & (~O_NONBLOCK));
if (rc != 0)
RARCH_WARN("Could not set nonblocking on audio file descriptor. Will not be able to fast-forward.\n");
}
static void audioio_free(void *data)
{
int *fd = (int*)data;
(void)ioctl(*fd, AUDIO_FLUSH, NULL);
close(*fd);
free(fd);
}
static size_t audioio_buffer_size(void *data)
{
struct audio_info info;
int *fd = (int*)data;
if (ioctl(*fd, AUDIO_GETINFO, &info) < 0)
return false;
return info.play.buffer_size;
}
static size_t audioio_write_avail(void *data)
{
return audioio_buffer_size(data);
}
static bool audioio_use_float(void *data)
{
(void)data;
return false;
}
audio_driver_t audio_audioio = {
audioio_init,
audioio_write,
audioio_stop,
audioio_start,
audioio_alive,
audioio_set_nonblock_state,
audioio_free,
audioio_use_float,
"audioio",
NULL,
NULL,
audioio_write_avail,
audioio_buffer_size,
};
+3 -2
View File
@@ -15,7 +15,6 @@
*/
#include <stdlib.h>
#if TARGET_OS_IPHONE
#include <AudioToolbox/AudioToolbox.h>
#else
@@ -126,7 +125,9 @@ static OSStatus audio_write_cb(void *userdata,
static void coreaudio_interrupt_listener(void *data, UInt32 interrupt_state)
{
(void)data;
#if TARGET_OS_IOS
g_interrupted = (interrupt_state == kAudioSessionBeginInterruption);
#endif
}
#else
static void choose_output_device(coreaudio_t *dev, const char* device)
@@ -219,7 +220,7 @@ static void *coreaudio_init(const char *device,
dev->lock = slock_new();
dev->cond = scond_new();
#if TARGET_OS_IPHONE
#if TARGET_OS_IOS
if (!session_initialized)
{
session_initialized = true;
+382
View File
@@ -0,0 +1,382 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2019 - Stuart Carnie
*
* 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/>.
*/
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
#include <stdio.h>
#include <stdatomic.h>
#include <stdlib.h>
#include <memory.h>
#include "../audio_driver.h"
#pragma mark - ringbuffer
typedef struct ringbuffer
{
float *buffer;
size_t cap;
atomic_int len;
size_t writePtr;
size_t readPtr;
} ringbuffer_t;
typedef ringbuffer_t * ringbuffer_h;
static inline size_t rb_len(ringbuffer_h r)
{
return atomic_load_explicit(&r->len, memory_order_relaxed);
}
static inline size_t rb_cap(ringbuffer_h r)
{
return (r->readPtr + r->cap - r->writePtr) % r->cap;
}
static inline size_t rb_avail(ringbuffer_h r)
{
return r->cap - rb_len(r);
}
static inline void rb_advance_write(ringbuffer_h r)
{
r->writePtr = (r->writePtr + 1) % r->cap;
}
static inline void rb_advance_write_n(ringbuffer_h r, size_t n)
{
r->writePtr = (r->writePtr + n) % r->cap;
}
static inline void rb_advance_read(ringbuffer_h r)
{
r->readPtr = (r->readPtr + 1) % r->cap;
}
static inline void rb_len_add(ringbuffer_h r, int n)
{
atomic_fetch_add(&r->len, n);
}
static inline void rb_len_sub(ringbuffer_h r, int n)
{
atomic_fetch_sub(&r->len, n);
}
static void rb_init(ringbuffer_h r, size_t cap)
{
r->buffer = malloc(cap * sizeof(float));
r->cap = cap;
atomic_init(&r->len, 0);
r->writePtr = 0;
r->readPtr = 0;
}
static void rb_free(ringbuffer_h r)
{
free(r->buffer);
bzero(r, sizeof(*r));
}
#define UNLIKELY(x) __builtin_expect((x), 0)
#define LIKELY(x) __builtin_expect((x), 1)
static void rb_write_data(ringbuffer_h r, const float *data, size_t len)
{
size_t avail = rb_avail(r);
size_t n = MIN(len, avail);
size_t first_write = n;
size_t rest_write = 0;
if (r->writePtr + n > r->cap)
{
first_write = r->cap - r->writePtr;
rest_write = n - first_write;
}
memcpy(r->buffer + r->writePtr, data, first_write*sizeof(float));
memcpy(r->buffer, data + first_write, rest_write*sizeof(float));
rb_advance_write_n(r, n);
rb_len_add(r, (int)n);
}
static void rb_read_data(ringbuffer_h r, float *d0, float *d1, size_t len)
{
size_t need = len*2;
do {
size_t have = rb_len(r);
size_t n = MIN(have, need);
int i = 0;
for (; i < n/2; i++)
{
d0[i] = r->buffer[r->readPtr];
rb_advance_read(r);
d1[i] = r->buffer[r->readPtr];
rb_advance_read(r);
}
need -= n;
rb_len_sub(r, (int)n);
if (UNLIKELY(need > 0))
{
/* we got more data */
if (rb_len(r) > 0)
continue;
// underflow
const float quiet = 0.0f;
size_t fill = (need/2)*sizeof(float);
memset_pattern4(&d0[i], &quiet, fill);
memset_pattern4(&d1[i], &quiet, fill);
}
} while (0);
}
#pragma mark - CoreAudio3
static bool g_interrupted;
@interface CoreAudio3 : NSObject {
ringbuffer_t _rb;
dispatch_semaphore_t _sema;
AUAudioUnit *_au;
size_t _bufferSize;
BOOL _nonBlock;
}
@property (nonatomic, readwrite) BOOL nonBlock;
@property (nonatomic, readonly) BOOL paused;
@property (nonatomic, readonly) size_t writeAvailableInBytes;
@property (nonatomic, readonly) size_t bufferSizeInBytes;
- (instancetype)initWithRate:(NSUInteger)rate
latency:(NSUInteger)latency;
- (ssize_t)writeFloat:(const float *)data samples:(size_t)samples;
- (void)start;
- (void)stop;
@end
@implementation CoreAudio3
- (instancetype)initWithRate:(NSUInteger)rate
latency:(NSUInteger)latency {
if (self = [super init])
{
_sema = dispatch_semaphore_create(0);
_bufferSize = (latency * rate) / 1000;
_bufferSize *= 2; // stereo
rb_init(&_rb, _bufferSize);
AudioComponentDescription desc = {
.componentType = kAudioUnitType_Output,
.componentSubType = kAudioUnitSubType_DefaultOutput,
.componentManufacturer = kAudioUnitManufacturer_Apple,
};
NSError *err;
AUAudioUnit *au = [[AUAudioUnit alloc] initWithComponentDescription:desc error:&err];
if (err != nil)
return nil;
AVAudioFormat *format = au.outputBusses[0].format;
if (format.channelCount != 2)
return nil;
AVAudioFormat *renderFormat = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:rate channels:2];
[au.inputBusses[0] setFormat:renderFormat error:&err];
if (err != nil)
return nil;
ringbuffer_h rb = &_rb;
__block dispatch_semaphore_t sema = _sema;
au.outputProvider = ^AUAudioUnitStatus(AudioUnitRenderActionFlags * actionFlags, const AudioTimeStamp * timestamp, AUAudioFrameCount frameCount, NSInteger inputBusNumber, AudioBufferList * inputData) {
rb_read_data(rb, inputData->mBuffers[0].mData, inputData->mBuffers[1].mData, frameCount);
dispatch_semaphore_signal(sema);
return 0;
};
[au allocateRenderResourcesAndReturnError:&err];
if (err != nil)
return nil;
_au = au;
RARCH_LOG("[CoreAudio3]: Using buffer size of %u bytes: (latency = %u ms)\n", (unsigned)self.bufferSizeInBytes, latency);
[self start];
}
return self;
}
- (void)dealloc {
rb_free(&_rb);
}
- (BOOL)paused {
return !_au.running;
}
- (size_t)bufferSizeInBytes {
return _bufferSize * sizeof(float);
}
- (size_t)writeAvailableInBytes {
return rb_avail(&_rb) * sizeof(float);
}
- (void)start {
NSError *err;
[_au startHardwareAndReturnError:&err];
}
- (void)stop {
[_au stopHardware];
}
- (ssize_t)writeFloat:(const float *)data samples:(size_t)samples {
size_t written = 0;
while (!g_interrupted && samples > 0)
{
size_t write_avail = rb_avail(&_rb);
if (write_avail > samples)
write_avail = samples;
rb_write_data(&_rb, data, write_avail);
data += write_avail;
written += write_avail;
samples -= write_avail;
if (_nonBlock)
break;
if (write_avail == 0)
dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER);
}
return written;
}
@end
static void coreaudio3_free(void *data)
{
CoreAudio3 *dev = (__bridge_transfer CoreAudio3 *)data;
if (dev == nil)
return;
[dev stop];
dev = nil;
}
static void *coreaudio3_init(const char *device,
unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
CoreAudio3 *dev = [[CoreAudio3 alloc] initWithRate:rate
latency:latency];
*new_rate = rate;
return (__bridge_retained void *)dev;
}
static ssize_t coreaudio3_write(void *data, const void *buf_, size_t size)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
return [dev writeFloat:(const float *)buf_ samples:size/sizeof(float)] * sizeof(float);
}
static void coreaudio3_set_nonblock_state(void *data, bool state)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return;
dev.nonBlock = state;
}
static bool coreaudio3_alive(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
return !dev.paused;
}
static bool coreaudio3_stop(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
[dev stop];
return dev.paused;
}
static bool coreaudio3_start(void *data, bool is_shutdown)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return NO;
[dev start];
return !dev.paused;
}
static bool coreaudio3_use_float(void *data)
{
return YES;
}
static size_t coreaudio3_write_avail(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return 0;
return dev.writeAvailableInBytes;
}
static size_t coreaudio3_buffer_size(void *data)
{
CoreAudio3 *dev = (__bridge CoreAudio3 *)data;
if (dev == nil)
return 0;
return dev.bufferSizeInBytes;
}
audio_driver_t audio_coreaudio3 = {
coreaudio3_init,
coreaudio3_write,
coreaudio3_stop,
coreaudio3_start,
coreaudio3_alive,
coreaudio3_set_nonblock_state,
coreaudio3_free,
coreaudio3_use_float,
"coreaudio3",
coreaudio3_write_avail,
coreaudio3_buffer_size,
};
-2
View File
@@ -56,7 +56,6 @@ static void ctr_csnd_audio_update_playpos(ctr_csnd_audio_t* ctr)
ctr->cpu_ticks_last += samples_played * CTR_CSND_CPU_TICKS_PER_SAMPLE;
}
Result csndPlaySound_custom(int chn, u32 flags, float vol, float pan,
void* data0, void* data1, u32 size)
{
@@ -289,7 +288,6 @@ static size_t ctr_csnd_audio_buffer_size(void *data)
return CTR_CSND_AUDIO_COUNT;
}
audio_driver_t audio_ctr_csnd = {
ctr_csnd_audio_init,
ctr_csnd_audio_write,
-2
View File
@@ -195,7 +195,6 @@ static size_t ctr_dsp_audio_buffer_size(void *data)
return CTR_DSP_AUDIO_COUNT;
}
audio_driver_t audio_ctr_dsp = {
ctr_dsp_audio_init,
ctr_dsp_audio_write,
@@ -211,4 +210,3 @@ audio_driver_t audio_ctr_dsp = {
ctr_dsp_audio_write_avail,
ctr_dsp_audio_buffer_size
};
-2
View File
@@ -51,7 +51,6 @@
#pragma comment(lib, "dxguid")
#endif
typedef struct dsound
{
LPDIRECTSOUND ds;
@@ -174,7 +173,6 @@ static DWORD CALLBACK dsound_thread(PVOID data)
/* No space to write, or we don't have data in our fifo,
* but we can wait some time before it underruns ... */
/* We could opt for using the notification interface,
* but it is not guaranteed to work, so use high
* priority sleeping patterns.
+1 -11
View File
@@ -39,7 +39,6 @@ typedef struct
volatile unsigned dma_write;
size_t write_ptr;
OSCond cond;
bool nonblock;
bool is_paused;
} gx_audio_t;
@@ -63,8 +62,6 @@ static void dma_callback(void)
DCFlushRange(wa->data[wa->dma_next], CHUNK_SIZE);
AIInitDMA((uint32_t)wa->data[wa->dma_next], CHUNK_SIZE);
OSSignalCond(wa->cond);
}
static void *gx_audio_init(const char *device,
@@ -95,8 +92,6 @@ static void *gx_audio_init(const char *device,
*new_rate = 48000;
}
OSInitThreadQueue(&wa->cond);
wa->dma_write = BLOCKS - 1;
DCFlushRange(wa->data, sizeof(wa->data));
stop_audio = false;
@@ -133,8 +128,7 @@ static ssize_t gx_audio_write(void *data, const void *buf_, size_t size)
/* FIXME: Nonblocking audio should break out of loop
* when it has nothing to write. */
while ((wa->dma_write == wa->dma_next ||
wa->dma_write == wa->dma_busy) && !wa->nonblock)
OSSleepThread(wa->cond);
wa->dma_write == wa->dma_busy) && !wa->nonblock);
copy_swapped(wa->data[wa->dma_write] + wa->write_ptr, buf, to_write);
@@ -205,10 +199,6 @@ static void gx_audio_free(void *data)
AIStopDMA();
AIRegisterDMACallback(NULL);
if (wa->cond)
OSCloseThreadQueue(wa->cond);
wa->cond = 0;
free(data);
}
+1 -1
View File
@@ -21,7 +21,7 @@ static void *null_audio_init(const char *device, unsigned rate, unsigned latency
unsigned block_frames,
unsigned *new_rate)
{
RARCH_ERR("Using the null audio driver. RetroArch will be silent.");
RARCH_ERR("Using the null audio driver. RetroArch will be silent.\n");
(void)device;
(void)rate;
-1
View File
@@ -232,7 +232,6 @@ static bool sl_start(void *data, bool is_shutdown)
return sl->is_paused ? false : true;
}
static ssize_t sl_write(void *data, const void *buf_, size_t size)
{
sl_t *sl = (sl_t*)data;
+292
View File
@@ -0,0 +1,292 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2014-2017 - Francisco Javier Trujillo Mata
*
* 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 <stdint.h>
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <kernel.h>
#include <audsrv.h>
#include "../audio_driver.h"
typedef struct ps2_audio
{
fifo_buffer_t* buffer;
bool nonblocking;
volatile bool running;
int worker_thread;
int lock;
int cond_lock;
} ps2_audio_t;
static ps2_audio_t *backup_ps2;
static u8 audioThreadStack[4 * 1024] __attribute__ ((aligned(16)));
#define AUDIO_OUT_BUFFER 2 * 1024
#define AUDIO_BUFFER 64 * 1024
#define AUDIO_CHANNELS 2
#define AUDIO_BITS 16
#define AUDIO_PRIORITY 0x7F /* LOWER VALUE GRATHER PRIORITY*/
static void audioMainLoop(void *data)
{
char out_tmp[AUDIO_OUT_BUFFER];
ps2_audio_t* ps2 = backup_ps2;
while (ps2->running)
{
size_t size;
WaitSema(ps2->lock);
size = MIN(fifo_read_avail(ps2->buffer), sizeof(out_tmp));
fifo_read(ps2->buffer, out_tmp, size);
iSignalSema(ps2->lock);
iSignalSema(ps2->cond_lock);
audsrv_wait_audio(size);
audsrv_play_audio(out_tmp, size);
}
audsrv_stop_audio();
ExitDeleteThread();
}
static void audioCreateThread(ps2_audio_t *ps2)
{
int ret;
ee_thread_t thread;
thread.func=&audioMainLoop;
thread.stack=audioThreadStack;
thread.stack_size=sizeof(audioThreadStack);
thread.gp_reg=&_gp;
thread.initial_priority=AUDIO_PRIORITY;
thread.attr=thread.option=0;
/*Backup the PS2 content to be used in the thread */
backup_ps2 = ps2;
ps2->running = true;
ps2->worker_thread = CreateThread(&thread);
if (ps2->worker_thread >= 0)
{
ret = StartThread(ps2->worker_thread, NULL);
if (ret < 0)
printf("sound_init: StartThread returned %d\n", ret);
}
else
printf("CreateThread failed: %d\n", ps2->worker_thread);
}
static void audioStopNDeleteThread(ps2_audio_t *ps2)
{
ps2->running = false;
if (ps2->worker_thread)
ps2->worker_thread = 0;
}
static void audioConfigure(ps2_audio_t *ps2, unsigned rate)
{
int err;
struct audsrv_fmt_t format;
format.bits = AUDIO_BITS;
format.freq = rate;
format.channels = AUDIO_CHANNELS;
err = audsrv_set_format(&format);
if (err){
printf("set format returned %d\n", err);
printf("audsrv returned error string: %s\n", audsrv_get_error_string());
}
audsrv_set_volume(MAX_VOLUME);
}
static void audioCreateSemas(ps2_audio_t *ps2)
{
ee_sema_t lock_info;
ee_sema_t cond_lock_info;
lock_info.max_count = 1;
lock_info.init_count = 1;
lock_info.option = 0;
ps2->lock = CreateSema(&lock_info);
cond_lock_info.init_count = 1;
cond_lock_info.max_count = 1;
cond_lock_info.option = 0;
ps2->cond_lock = CreateSema(&cond_lock_info);
}
static void *ps2_audio_init(const char *device,
unsigned rate, unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
ps2_audio_t *ps2 = (ps2_audio_t*)calloc(1, sizeof(ps2_audio_t));
if (!ps2)
return NULL;
ps2->buffer = fifo_new(AUDIO_BUFFER);
audioConfigure(ps2, rate);
audioCreateSemas(ps2);
audioCreateThread(ps2);
return ps2;
}
static void ps2_audio_free(void *data)
{
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if(!ps2)
return;
if(ps2->running){
audioStopNDeleteThread(ps2);
if (ps2->lock){
iDeleteSema(ps2->lock);
ps2->lock = 0;
}
if (ps2->cond_lock){
iDeleteSema(ps2->cond_lock);
ps2->cond_lock = 0;
}
}
fifo_free(ps2->buffer);
free(ps2);
}
static ssize_t ps2_audio_write(void *data, const void *buf, size_t size)
{
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (!ps2->running)
return -1;
if (ps2->nonblocking)
{
if (fifo_write_avail(ps2->buffer) < size)
return 0;
}
while (fifo_write_avail(ps2->buffer) < size)
WaitSema(ps2->cond_lock);
WaitSema(ps2->lock);
fifo_write(ps2->buffer, buf, size);
iSignalSema(ps2->lock);
return size;
}
static bool ps2_audio_alive(void *data)
{
bool alive = false;
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (ps2)
alive = ps2->running;
return alive;
}
static bool ps2_audio_stop(void *data)
{
bool stop = true;
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (ps2)
{
audioStopNDeleteThread(ps2);
audsrv_stop_audio();
}
return stop;
}
static bool ps2_audio_start(void *data, bool is_shutdown)
{
ps2_audio_t* ps2 = (ps2_audio_t*)data;
bool start = true;
if (ps2)
{
if (!ps2->running && !ps2->worker_thread)
audioCreateThread(ps2);
}
return start;
}
static void ps2_audio_set_nonblock_state(void *data, bool toggle)
{
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (ps2)
ps2->nonblocking = toggle;
}
static bool ps2_audio_use_float(void *data)
{
return false;
}
static size_t ps2_audio_write_avail(void *data)
{
ps2_audio_t* ps2 = (ps2_audio_t*)data;
if (ps2 && ps2->running)
{
size_t size;
WaitSema(ps2->lock);
size = AUDIO_BUFFER - fifo_read_avail(ps2->buffer);
iSignalSema(ps2->lock);
return size;
}
return 0;
}
static size_t ps2_audio_buffer_size(void *data)
{
return AUDIO_BUFFER;
}
audio_driver_t audio_ps2 = {
ps2_audio_init,
ps2_audio_write,
ps2_audio_stop,
ps2_audio_start,
ps2_audio_alive,
ps2_audio_set_nonblock_state,
ps2_audio_free,
ps2_audio_use_float,
"ps2",
NULL,
NULL,
ps2_audio_write_avail,
ps2_audio_buffer_size
};
+32 -8
View File
@@ -16,21 +16,28 @@
*/
#include <stdint.h>
#if defined(VITA) || defined(PSP)
#include <malloc.h>
#endif
#include <stdio.h>
#include <string.h>
#include <rthreads/rthreads.h>
#include <queues/fifo_queue.h>
#ifdef VITA
#if defined(VITA)
#include <psp2/kernel/processmgr.h>
#include <psp2/kernel/threadmgr.h>
#include <psp2/kernel/sysmem.h>
#include <psp2/audioout.h>
#else
#elif defined(PSP)
#include <pspkernel.h>
#include <pspaudio.h>
#elif defined(ORBIS)
#include <audioout.h>
#define SCE_AUDIO_OUT_PORT_TYPE_MAIN 0
#define SCE_AUDIO_OUT_MODE_STEREO 1
#define SceUID uint32_t
#endif
#include "../audio_driver.h"
@@ -64,10 +71,14 @@ static void audioMainLoop(void *data)
{
psp_audio_t* psp = (psp_audio_t*)data;
#ifdef VITA
#if defined(VITA)
int port = sceAudioOutOpenPort(
SCE_AUDIO_OUT_PORT_TYPE_MAIN, AUDIO_OUT_COUNT,
psp->rate, SCE_AUDIO_OUT_MODE_STEREO);
#elif defined(ORBIS)
int port = sceAudioOutOpen(0xff,
SCE_AUDIO_OUT_PORT_TYPE_MAIN, 0, AUDIO_OUT_COUNT,
psp->rate, SCE_AUDIO_OUT_MODE_STEREO);
#else
sceAudioSRCChReserve(AUDIO_OUT_COUNT, psp->rate, 2);
#endif
@@ -95,7 +106,7 @@ static void audioMainLoop(void *data)
scond_signal(psp->cond);
slock_unlock(psp->cond_lock);
#ifdef VITA
#if defined(VITA) || defined(ORBIS)
sceAudioOutOutput(port,
cond ? (psp->zeroBuffer)
: (psp->buffer + read_pos_2));
@@ -105,8 +116,10 @@ static void audioMainLoop(void *data)
#endif
}
#ifdef VITA
#if defined(VITA)
sceAudioOutReleasePort(port);
#elif defined(ORBIS)
sceAudioOutClose(port);
#else
sceAudioSRCChRelease();
#endif
@@ -127,12 +140,23 @@ static void *psp_audio_init(const char *device,
(void)device;
(void)latency;
#ifdef ORBIS
psp->buffer = (uint32_t*)
malloc(AUDIO_BUFFER_SIZE * sizeof(uint32_t));
#else
/* Cache aligned, not necessary but helpful. */
psp->buffer = (uint32_t*)
memalign(64, AUDIO_BUFFER_SIZE * sizeof(uint32_t));
#endif
memset(psp->buffer, 0, AUDIO_BUFFER_SIZE * sizeof(uint32_t));
#ifdef ORBIS
psp->zeroBuffer = (uint32_t*)
malloc(AUDIO_OUT_COUNT * sizeof(uint32_t));
#else
psp->zeroBuffer = (uint32_t*)
memalign(64, AUDIO_OUT_COUNT * sizeof(uint32_t));
#endif
memset(psp->zeroBuffer, 0, AUDIO_OUT_COUNT * sizeof(uint32_t));
psp->read_pos = 0;
@@ -228,7 +252,6 @@ static bool psp_audio_alive(void *data)
return psp->running;
}
static bool psp_audio_stop(void *data)
{
psp_audio_t* psp = (psp_audio_t*)data;
@@ -294,7 +317,6 @@ static size_t psp_buffer_size(void *data)
return AUDIO_BUFFER_SIZE /** sizeof(uint32_t)*/;
}
audio_driver_t audio_psp = {
psp_audio_init,
psp_audio_write,
@@ -304,8 +326,10 @@ audio_driver_t audio_psp = {
psp_audio_set_nonblock_state,
psp_audio_free,
psp_audio_use_float,
#ifdef VITA
#if defined(VITA)
"vita",
#elif defined(ORBIS)
"orbis",
#else
"psp",
#endif
+136 -73
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;
@@ -69,51 +94,48 @@ static ssize_t switch_audio_write(void *data, const void *buf, size_t size)
{
if (swa->blocking)
{
RARCH_LOG("No buffer, blocking...\n");
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 +147,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 +188,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 +232,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 +244,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 +260,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 +283,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
+447
View File
@@ -0,0 +1,447 @@
/* 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
View File
@@ -296,7 +296,6 @@
#define SNDRV_PCM_MMAP_OFFSET_STATUS 0x80000000
#define SNDRV_PCM_MMAP_OFFSET_CONTROL 0x81000000
/** Audio sample format of a PCM.
* The first letter specifiers whether the sample is signed or unsigned.
* The letter 'S' means signed. The letter 'U' means unsigned.
+9 -9
View File
@@ -29,6 +29,15 @@
#include <mmreg.h>
#include <audioclient.h>
#ifdef _MSC_VER
DEFINE_GUID(IID_IAudioClient, 0x1CB9AD4C, 0xDBFA, 0x4C32, 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2);
DEFINE_GUID(IID_IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483, 0xA7, 0xBF, 0xAD, 0xDC, 0xA7, 0xC2, 0x60, 0xE2);
DEFINE_GUID(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6);
DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E);
#undef KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
DEFINE_GUID(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
#endif
#include <lists/string_list.h>
#include <queues/fifo_queue.h>
@@ -580,7 +589,6 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
unsigned u1, unsigned *u2)
{
HRESULT hr;
bool com_initialized = false;
UINT32 frame_count = 0;
REFERENCE_TIME dev_period = 0;
BYTE *dest = NULL;
@@ -592,11 +600,6 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
WASAPI_CHECK(w, "Out of memory", return NULL);
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
WASAPI_HR_CHECK(hr, "CoInitializeEx", goto error);
com_initialized = true;
w->device = wasapi_init_device(dev_id);
if (!w->device && dev_id)
w->device = wasapi_init_device(NULL);
@@ -676,8 +679,6 @@ error:
if (w->buffer)
fifo_free(w->buffer);
free(w);
if (com_initialized)
CoUninitialize();
return NULL;
}
@@ -889,7 +890,6 @@ static void wasapi_free(void *wh)
_IAudioClient_Stop(w->client);
WASAPI_RELEASE(w->client);
WASAPI_RELEASE(w->device);
CoUninitialize();
if (w->buffer)
fifo_free(w->buffer);
free(w);
-1
View File
@@ -318,7 +318,6 @@ static size_t ax_audio_buffer_size(void* data)
return AX_AUDIO_COUNT;
}
audio_driver_t audio_ax =
{
ax_audio_init,
+5 -4
View File
@@ -202,10 +202,6 @@ static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels,
xaudio2_t *handle = NULL;
WAVEFORMATEX wfx = {0};
#ifndef _XBOX
CoInitializeEx(0, COINIT_MULTITHREADED);
#endif
#if defined(__cplusplus) && !defined(CINTERFACE)
handle = new xaudio2;
#else
@@ -222,8 +218,13 @@ static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels,
if (FAILED(XAudio2Create(&handle->pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR)))
goto error;
#if (_WIN32_WINNT >= 0x0602 /*_WIN32_WINNT_WIN8*/)
if (FAILED(IXAudio2_CreateMasteringVoice(handle->pXAudio2, &handle->pMasterVoice, channels, samplerate, 0, device, NULL, AudioCategory_GameEffects)))
goto error;
#else
if (FAILED(IXAudio2_CreateMasteringVoice(handle->pXAudio2, &handle->pMasterVoice, channels, samplerate, 0, device, NULL)))
goto error;
#endif
xaudio2_set_wavefmt(&wfx, channels, samplerate);
+10 -348
View File
@@ -1,7 +1,5 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2010-2014 - OV2
* Copyright (C) 2018 - Krzysztof Haładyn
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
@@ -15,350 +13,14 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
/* Kinda stripped down. Only contains the bare essentials used in RetroArch. */
#ifndef XAUDIO2_STRIPPED_H
#define XAUDIO2_STRIPPED_H
#include <retro_inline.h>
#include <retro_environment.h>
/* All structures defined in this file use tight field packing */
#pragma pack(push, 1)
#if defined(__cplusplus) && !defined(CINTERFACE)
#define X2DEFAULT(x) = (x)
#if (_WIN32_WINNT >= 0x0602 /*_WIN32_WINNT_WIN8*/)
/* XAudio 2.7 it part of the old DirectX SDKs. XAudio 2.8+ is part of the
* Windows OS itself (starting from Windows 8). Since UWP lets you access
* only libraries that are built-in to the OS, the headers had to be
* upgraded to the newer version to get audio support working. */
#include "xaudio29.h"
#else
#define X2DEFAULT(x)
/* The old version still has to be there since XAudio 2.8 is not available
* on Windows 7 and earlier */
#include "xaudio27.h"
#endif
#ifdef _XBOX
#include <xtl.h>
#ifndef __cplusplus
#define OPAQUE interface
#endif
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
DEFINE_CLSID(XAudio2, 3eda9b49, 2085, 498b, 9b, b2, 39, a6, 77, 84, 93, de);
DEFINE_CLSID(XAudio2_Debug, 47199894, 7cc2, 444d, 98, 73, ce, d2, 56, 2c, c6, 0e);
DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#include <audiodefs.h> /* Basic audio data types and constants */
#else
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <basetyps.h>
#include <objbase.h>
#include <mmreg.h>
#ifndef __cplusplus
#undef OPAQUE
#define OPAQUE struct
#endif
#define DEFINE_GUID_X(n, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
static const GUID n = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#define DEFINE_CLSID_X(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID_X(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#define DEFINE_IID_X(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID_X(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#ifndef __cplusplus
#ifndef INTERFACE
#define INTERFACE void
#endif
#endif
DEFINE_CLSID_X(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af); /* 2.7 */
DEFINE_IID_X(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#endif
#ifdef _XBOX
#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f
#else
#define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f
#endif
#define XAUDIO2_COMMIT_NOW 0
#define XAUDIO2_DEFAULT_CHANNELS 0
#define XAUDIO2_DEFAULT_SAMPLERATE 0
#define XAUDIO2_DEBUG_ENGINE 0x0001
#define XAUDIO2_VOICE_NOSRC 0x0004
typedef enum XAUDIO2_DEVICE_ROLE
{
NotDefaultDevice = 0x0,
DefaultConsoleDevice = 0x1,
DefaultMultimediaDevice = 0x2,
DefaultCommunicationsDevice = 0x4,
DefaultGameDevice = 0x8,
GlobalDefaultDevice = 0xf,
InvalidDeviceRole = ~GlobalDefaultDevice
} XAUDIO2_DEVICE_ROLE;
#ifdef _XBOX
typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
{
XboxThread0 = 0x01,
XboxThread1 = 0x02,
XboxThread2 = 0x04,
XboxThread3 = 0x08,
XboxThread4 = 0x10,
XboxThread5 = 0x20,
XAUDIO2_ANY_PROCESSOR = XboxThread4,
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_XBOX_HWTHREAD_SPECIFIER, XAUDIO2_PROCESSOR;
#else
typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
{
#if defined(__STDC_C89__)
XAUDIO2_ANY_PROCESSOR = 0xffff,
#else
XAUDIO2_ANY_PROCESSOR = 0xffffffff,
#endif
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR;
#endif
typedef enum XAUDIO2_FILTER_TYPE {
LowPassFilter,
BandPassFilter,
HighPassFilter
} XAUDIO2_FILTER_TYPE;
typedef struct XAUDIO2_DEVICE_DETAILS
{
WCHAR DeviceID[256];
WCHAR DisplayName[256];
XAUDIO2_DEVICE_ROLE Role;
WAVEFORMATEXTENSIBLE OutputFormat;
} XAUDIO2_DEVICE_DETAILS;
/* Forward declarations. */
#ifdef __cplusplus
struct XAUDIO2_VOICE_DETAILS;
struct XAUDIO2_VOICE_SENDS;
struct XAUDIO2_EFFECT_DESCRIPTOR;
struct XAUDIO2_EFFECT_CHAIN;
struct XAUDIO2_FILTER_PARAMETERS;
struct XAUDIO2_BUFFER_WMA;
struct XAUDIO2_VOICE_STATE;
struct XAUDIO2_PERFORMANCE_DATA;
struct XAUDIO2_DEBUG_CONFIGURATION;
struct IXAudio2EngineCallback;
struct IXAudio2SubmixVoice;
#else
typedef OPAQUE XAUDIO2_VOICE_DETAILS XAUDIO2_VOICE_DETAILS;
typedef OPAQUE XAUDIO2_VOICE_SENDS XAUDIO2_VOICE_SENDS;
typedef OPAQUE XAUDIO2_EFFECT_DESCRIPTOR XAUDIO2_EFFECT_DESCRIPTOR;
typedef OPAQUE XAUDIO2_EFFECT_CHAIN XAUDIO2_EFFECT_CHAIN;
typedef OPAQUE XAUDIO2_FILTER_PARAMETERS XAUDIO2_FILTER_PARAMETERS;
typedef OPAQUE XAUDIO2_BUFFER_WMA XAUDIO2_BUFFER_WMA;
typedef OPAQUE XAUDIO2_VOICE_STATE XAUDIO2_VOICE_STATE;
typedef OPAQUE XAUDIO2_PERFORMANCE_DATA XAUDIO2_PERFORMANCE_DATA;
typedef OPAQUE XAUDIO2_DEBUG_CONFIGURATION XAUDIO2_DEBUG_CONFIGURATION;
typedef OPAQUE IXAudio2EngineCallback IXAudio2EngineCallback;
typedef OPAQUE IXAudio2SubmixVoice IXAudio2SubmixVoice;
#endif
typedef struct XAUDIO2_BUFFER
{
UINT32 Flags;
UINT32 AudioBytes;
const BYTE* pAudioData;
UINT32 PlayBegin;
UINT32 PlayLength;
UINT32 LoopBegin;
UINT32 LoopLength;
UINT32 LoopCount;
void *pContext;
} XAUDIO2_BUFFER;
#undef INTERFACE
#define INTERFACE IXAudio2VoiceCallback
DECLARE_INTERFACE(IXAudio2VoiceCallback)
{
STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE;
STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE;
STDMETHOD_(void, OnStreamEnd) (THIS) PURE;
STDMETHOD_(void, OnBufferStart) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnBufferEnd) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnLoopEnd) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnVoiceError) (THIS_ void *pBufferContext, HRESULT Error) PURE;
};
#undef INTERFACE
#define INTERFACE IXAudio2Voice
DECLARE_INTERFACE(IXAudio2Voice)
{
#define Declare_IXAudio2Voice_Methods() \
STDMETHOD_(void, GetVoiceDetails) (THIS_ XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \
STDMETHOD(SetOutputVoices) (THIS_ const XAUDIO2_VOICE_SENDS* pSendList) PURE; \
STDMETHOD(SetEffectChain) (THIS_ const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \
STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, BOOL* pEnabled) PURE; \
STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \
const void *pParameters, \
UINT32 ParametersByteSize, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, void *pParameters, \
UINT32 ParametersByteSize) PURE; \
STDMETHOD(SetFilterParameters) (THIS_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetFilterParameters) (THIS_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \
STDMETHOD_(void, SetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, const XAUDIO2_FILTER_PARAMETERS* param, \
UINT32 op X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, XAUDIO2_FILTER_PARAMETERS* param) PURE; \
STDMETHOD(SetVolume) (THIS_ float Volume, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetVolume) (THIS_ float* pVolume) PURE; \
STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, const float* pVolumes, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, float* pVolumes) PURE; \
STDMETHOD(SetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
const float* pLevelMatrix, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
float* pLevelMatrix) PURE; \
STDMETHOD_(void, DestroyVoice) (THIS) PURE
Declare_IXAudio2Voice_Methods();
};
#undef INTERFACE
#define INTERFACE IXAudio2MasteringVoice
DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice)
{
Declare_IXAudio2Voice_Methods();
};
#undef INTERFACE
#define INTERFACE IXAudio2SourceVoice
DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice)
{
Declare_IXAudio2Voice_Methods();
STDMETHOD(Start) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD(Stop) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD(SubmitSourceBuffer) (THIS_ const XAUDIO2_BUFFER* pBuffer, const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE;
STDMETHOD(FlushSourceBuffers) (THIS) PURE;
STDMETHOD(Discontinuity) (THIS) PURE;
STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD_(void, GetState) (THIS_ XAUDIO2_VOICE_STATE* pVoiceState) PURE;
STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio,
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD_(void, GetFrequencyRatio) (THIS_ float* pRatio) PURE;
};
#undef INTERFACE
#define INTERFACE IXAudio2
DECLARE_INTERFACE_(IXAudio2, IUnknown)
{
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvInterface) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
STDMETHOD(GetDeviceCount) (THIS_ UINT32* pCount) PURE;
STDMETHOD(GetDeviceDetails) (THIS_ UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails) PURE;
STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)) PURE;
STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE;
STDMETHOD_(void, UnregisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE;
STDMETHOD(CreateSourceVoice) (THIS_ IXAudio2SourceVoice** ppSourceVoice,
const WAVEFORMATEX* pSourceFormat,
UINT32 Flags X2DEFAULT(0),
float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO),
IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL),
const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(CreateSubmixVoice) (THIS_ IXAudio2SubmixVoice** ppSubmixVoice,
UINT32 InputChannels, UINT32 InputSampleRate,
UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0),
const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(CreateMasteringVoice) (THIS_ IXAudio2MasteringVoice** ppMasteringVoice,
UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS),
UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE),
UINT32 Flags X2DEFAULT(0), UINT32 DeviceIndex X2DEFAULT(0),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(StartEngine) (THIS) PURE;
STDMETHOD_(void, StopEngine) (THIS) PURE;
STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE;
STDMETHOD_(void, GetPerformanceData) (THIS_ XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE;
STDMETHOD_(void, SetDebugConfiguration) (THIS_ const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,
void *pReserved X2DEFAULT(NULL)) PURE;
};
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ hooks */
#define IXAudio2_Initialize(handle,a,b) handle->Initialize(a, b)
#define IXAudio2SourceVoice_SubmitSourceBuffer(handle, a, b) handle->SubmitSourceBuffer(a, b)
#define IXAudio2SourceVoice_Stop(handle, a, b) handle->Stop(a, b)
#define IXAudio2SourceVoice_DestroyVoice(handle) handle->DestroyVoice()
#define IXAudio2MasteringVoice_DestroyVoice(handle) handle->DestroyVoice()
#define IXAudio2_Release(handle) handle->Release()
#define IXAudio2_CreateSourceVoice(handle, a, b, c, d, e, f, g) handle->CreateSourceVoice(a, b, c, d, e, f, g)
#define IXAudio2_CreateMasteringVoice(handle, a, b, c, d, e, f) handle->CreateMasteringVoice(a, b, c, d, e, f)
#define IXAudio2SourceVoice_Start(handle, a, b) handle->Start(a, b)
#else
/* C hooks */
#define IXAudio2_Initialize(handle,a,b) (handle)->lpVtbl->Initialize(handle, a, b)
#define IXAudio2_Release(handle) (handle)->lpVtbl->Release(handle)
#define IXAudio2_CreateSourceVoice(handle,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) (handle)->lpVtbl->CreateSourceVoice(handle, ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)
#define IXAudio2_CreateMasteringVoice(handle,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) (handle)->lpVtbl->CreateMasteringVoice(handle, ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)
#define IXAudio2_GetDeviceCount(handle, puCount) (handle)->lpVtbl->GetDeviceCount(handle, puCount)
#define IXAudio2_GetDeviceDetails(handle, Index,pDeviceDetails) (handle)->lpVtbl->GetDeviceDetails(handle, Index, pDeviceDetails)
#define IXAudio2SourceVoice_Start(handle, Flags, OperationSet) (handle)->lpVtbl->Start(handle, Flags, OperationSet)
#define IXAudio2SourceVoice_Stop(handle, Flags, OperationSet) (handle)->lpVtbl->Stop(handle, Flags, OperationSet)
#define IXAudio2SourceVoice_SubmitSourceBuffer(handle, pBuffer, pBufferWMA) (handle)->lpVtbl->SubmitSourceBuffer(handle, pBuffer, pBufferWMA)
#define IXAudio2SourceVoice_DestroyVoice(handle) (handle)->lpVtbl->DestroyVoice(handle)
#define IXAudio2MasteringVoice_DestroyVoice(handle) (handle)->lpVtbl->DestroyVoice(handle)
#endif
#ifdef _XBOX
STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR));
#else
static INLINE HRESULT XAudio2Create(IXAudio2 **ppXAudio2, UINT32 flags, XAUDIO2_PROCESSOR proc)
{
IXAudio2 *pXAudio2 = NULL;
#ifdef __cplusplus
HRESULT hr = CoCreateInstance(CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2);
#else
HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
#endif
if (SUCCEEDED(hr))
{
hr = IXAudio2_Initialize(pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR);
if (SUCCEEDED(hr))
*ppXAudio2 = pXAudio2;
else
IXAudio2_Release(pXAudio2);
}
return hr;
}
#endif
/* Undo the #pragma pack(push, 1) directive at the top of this file */
#pragma pack(pop)
#endif
+362
View File
@@ -0,0 +1,362 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2010-2014 - OV2
*
* 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/>.
*/
/* Kinda stripped down. Only contains the bare essentials used in RetroArch. */
#ifndef XAUDIO2_STRIPPED_H
#define XAUDIO2_STRIPPED_H
#include <retro_inline.h>
#include <retro_environment.h>
/* All structures defined in this file use tight field packing */
#pragma pack(push, 1)
#if defined(__cplusplus) && !defined(CINTERFACE)
#define X2DEFAULT(x) = (x)
#else
#define X2DEFAULT(x)
#endif
#ifdef _XBOX
#include <xtl.h>
#ifndef __cplusplus
#define OPAQUE interface
#endif
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
DEFINE_CLSID(XAudio2, 3eda9b49, 2085, 498b, 9b, b2, 39, a6, 77, 84, 93, de);
DEFINE_CLSID(XAudio2_Debug, 47199894, 7cc2, 444d, 98, 73, ce, d2, 56, 2c, c6, 0e);
DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#include <audiodefs.h> /* Basic audio data types and constants */
#else
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <basetyps.h>
#include <objbase.h>
#include <mmreg.h>
#ifndef __cplusplus
#undef OPAQUE
#define OPAQUE struct
#endif
#define DEFINE_GUID_X(n, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
static const GUID n = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#define DEFINE_CLSID_X(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID_X(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#define DEFINE_IID_X(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID_X(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#ifndef __cplusplus
#ifndef INTERFACE
#define INTERFACE void
#endif
#endif
DEFINE_CLSID_X(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af); /* 2.7 */
DEFINE_IID_X(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#endif
#ifdef _XBOX
#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f
#else
#define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f
#endif
#define XAUDIO2_COMMIT_NOW 0
#define XAUDIO2_DEFAULT_CHANNELS 0
#define XAUDIO2_DEFAULT_SAMPLERATE 0
#define XAUDIO2_DEBUG_ENGINE 0x0001
#define XAUDIO2_VOICE_NOSRC 0x0004
typedef enum XAUDIO2_DEVICE_ROLE
{
NotDefaultDevice = 0x0,
DefaultConsoleDevice = 0x1,
DefaultMultimediaDevice = 0x2,
DefaultCommunicationsDevice = 0x4,
DefaultGameDevice = 0x8,
GlobalDefaultDevice = 0xf,
InvalidDeviceRole = ~GlobalDefaultDevice
} XAUDIO2_DEVICE_ROLE;
#ifdef _XBOX
typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
{
XboxThread0 = 0x01,
XboxThread1 = 0x02,
XboxThread2 = 0x04,
XboxThread3 = 0x08,
XboxThread4 = 0x10,
XboxThread5 = 0x20,
XAUDIO2_ANY_PROCESSOR = XboxThread4,
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_XBOX_HWTHREAD_SPECIFIER, XAUDIO2_PROCESSOR;
#else
typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
{
#if defined(__STDC_C89__)
XAUDIO2_ANY_PROCESSOR = 0xffff,
#else
XAUDIO2_ANY_PROCESSOR = 0xffffffff,
#endif
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR;
#endif
typedef enum XAUDIO2_FILTER_TYPE {
LowPassFilter,
BandPassFilter,
HighPassFilter
} XAUDIO2_FILTER_TYPE;
typedef struct XAUDIO2_DEVICE_DETAILS
{
WCHAR DeviceID[256];
WCHAR DisplayName[256];
XAUDIO2_DEVICE_ROLE Role;
WAVEFORMATEXTENSIBLE OutputFormat;
} XAUDIO2_DEVICE_DETAILS;
/* Forward declarations. */
#ifdef __cplusplus
struct XAUDIO2_VOICE_DETAILS;
struct XAUDIO2_VOICE_SENDS;
struct XAUDIO2_EFFECT_DESCRIPTOR;
struct XAUDIO2_EFFECT_CHAIN;
struct XAUDIO2_FILTER_PARAMETERS;
struct XAUDIO2_BUFFER_WMA;
struct XAUDIO2_VOICE_STATE;
struct XAUDIO2_PERFORMANCE_DATA;
struct XAUDIO2_DEBUG_CONFIGURATION;
struct IXAudio2EngineCallback;
struct IXAudio2SubmixVoice;
#else
typedef OPAQUE XAUDIO2_VOICE_DETAILS XAUDIO2_VOICE_DETAILS;
typedef OPAQUE XAUDIO2_VOICE_SENDS XAUDIO2_VOICE_SENDS;
typedef OPAQUE XAUDIO2_EFFECT_DESCRIPTOR XAUDIO2_EFFECT_DESCRIPTOR;
typedef OPAQUE XAUDIO2_EFFECT_CHAIN XAUDIO2_EFFECT_CHAIN;
typedef OPAQUE XAUDIO2_FILTER_PARAMETERS XAUDIO2_FILTER_PARAMETERS;
typedef OPAQUE XAUDIO2_BUFFER_WMA XAUDIO2_BUFFER_WMA;
typedef OPAQUE XAUDIO2_VOICE_STATE XAUDIO2_VOICE_STATE;
typedef OPAQUE XAUDIO2_PERFORMANCE_DATA XAUDIO2_PERFORMANCE_DATA;
typedef OPAQUE XAUDIO2_DEBUG_CONFIGURATION XAUDIO2_DEBUG_CONFIGURATION;
typedef OPAQUE IXAudio2EngineCallback IXAudio2EngineCallback;
typedef OPAQUE IXAudio2SubmixVoice IXAudio2SubmixVoice;
#endif
typedef struct XAUDIO2_BUFFER
{
UINT32 Flags;
UINT32 AudioBytes;
const BYTE* pAudioData;
UINT32 PlayBegin;
UINT32 PlayLength;
UINT32 LoopBegin;
UINT32 LoopLength;
UINT32 LoopCount;
void *pContext;
} XAUDIO2_BUFFER;
#undef INTERFACE
#define INTERFACE IXAudio2VoiceCallback
DECLARE_INTERFACE(IXAudio2VoiceCallback)
{
STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE;
STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE;
STDMETHOD_(void, OnStreamEnd) (THIS) PURE;
STDMETHOD_(void, OnBufferStart) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnBufferEnd) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnLoopEnd) (THIS_ void *pBufferContext) PURE;
STDMETHOD_(void, OnVoiceError) (THIS_ void *pBufferContext, HRESULT Error) PURE;
};
#undef INTERFACE
#define INTERFACE IXAudio2Voice
DECLARE_INTERFACE(IXAudio2Voice)
{
#define Declare_IXAudio2Voice_Methods() \
STDMETHOD_(void, GetVoiceDetails) (THIS_ XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \
STDMETHOD(SetOutputVoices) (THIS_ const XAUDIO2_VOICE_SENDS* pSendList) PURE; \
STDMETHOD(SetEffectChain) (THIS_ const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \
STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, BOOL* pEnabled) PURE; \
STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \
const void *pParameters, \
UINT32 ParametersByteSize, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, void *pParameters, \
UINT32 ParametersByteSize) PURE; \
STDMETHOD(SetFilterParameters) (THIS_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetFilterParameters) (THIS_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \
STDMETHOD_(void, SetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, const XAUDIO2_FILTER_PARAMETERS* param, \
UINT32 op X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, XAUDIO2_FILTER_PARAMETERS* param) PURE; \
STDMETHOD(SetVolume) (THIS_ float Volume, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetVolume) (THIS_ float* pVolume) PURE; \
STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, const float* pVolumes, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, float* pVolumes) PURE; \
STDMETHOD(SetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
const float* pLevelMatrix, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
STDMETHOD_(void, GetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
float* pLevelMatrix) PURE; \
STDMETHOD_(void, DestroyVoice) (THIS) PURE
Declare_IXAudio2Voice_Methods();
};
#undef INTERFACE
#define INTERFACE IXAudio2MasteringVoice
DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice)
{
Declare_IXAudio2Voice_Methods();
};
#undef INTERFACE
#define INTERFACE IXAudio2SourceVoice
DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice)
{
Declare_IXAudio2Voice_Methods();
STDMETHOD(Start) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD(Stop) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD(SubmitSourceBuffer) (THIS_ const XAUDIO2_BUFFER* pBuffer, const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE;
STDMETHOD(FlushSourceBuffers) (THIS) PURE;
STDMETHOD(Discontinuity) (THIS) PURE;
STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD_(void, GetState) (THIS_ XAUDIO2_VOICE_STATE* pVoiceState) PURE;
STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio,
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
STDMETHOD_(void, GetFrequencyRatio) (THIS_ float* pRatio) PURE;
};
#undef INTERFACE
#define INTERFACE IXAudio2
DECLARE_INTERFACE_(IXAudio2, IUnknown)
{
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvInterface) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
STDMETHOD(GetDeviceCount) (THIS_ UINT32* pCount) PURE;
STDMETHOD(GetDeviceDetails) (THIS_ UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails) PURE;
STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)) PURE;
STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE;
STDMETHOD_(void, UnregisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE;
STDMETHOD(CreateSourceVoice) (THIS_ IXAudio2SourceVoice** ppSourceVoice,
const WAVEFORMATEX* pSourceFormat,
UINT32 Flags X2DEFAULT(0),
float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO),
IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL),
const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(CreateSubmixVoice) (THIS_ IXAudio2SubmixVoice** ppSubmixVoice,
UINT32 InputChannels, UINT32 InputSampleRate,
UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0),
const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(CreateMasteringVoice) (THIS_ IXAudio2MasteringVoice** ppMasteringVoice,
UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS),
UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE),
UINT32 Flags X2DEFAULT(0), UINT32 DeviceIndex X2DEFAULT(0),
const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
STDMETHOD(StartEngine) (THIS) PURE;
STDMETHOD_(void, StopEngine) (THIS) PURE;
STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE;
STDMETHOD_(void, GetPerformanceData) (THIS_ XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE;
STDMETHOD_(void, SetDebugConfiguration) (THIS_ const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,
void *pReserved X2DEFAULT(NULL)) PURE;
};
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ hooks */
#define IXAudio2_Initialize(handle,a,b) handle->Initialize(a, b)
#define IXAudio2SourceVoice_SubmitSourceBuffer(handle, a, b) handle->SubmitSourceBuffer(a, b)
#define IXAudio2SourceVoice_Stop(handle, a, b) handle->Stop(a, b)
#define IXAudio2SourceVoice_DestroyVoice(handle) handle->DestroyVoice()
#define IXAudio2MasteringVoice_DestroyVoice(handle) handle->DestroyVoice()
#define IXAudio2_Release(handle) handle->Release()
#define IXAudio2_CreateSourceVoice(handle, a, b, c, d, e, f, g) handle->CreateSourceVoice(a, b, c, d, e, f, g)
#define IXAudio2_CreateMasteringVoice(handle, a, b, c, d, e, f) handle->CreateMasteringVoice(a, b, c, d, e, f)
#define IXAudio2SourceVoice_Start(handle, a, b) handle->Start(a, b)
#else
/* C hooks */
#define IXAudio2_Initialize(handle,a,b) (handle)->lpVtbl->Initialize(handle, a, b)
#define IXAudio2_Release(handle) (handle)->lpVtbl->Release(handle)
#define IXAudio2_CreateSourceVoice(handle,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) (handle)->lpVtbl->CreateSourceVoice(handle, ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)
#define IXAudio2_CreateMasteringVoice(handle,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) (handle)->lpVtbl->CreateMasteringVoice(handle, ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)
#define IXAudio2_GetDeviceCount(handle, puCount) (handle)->lpVtbl->GetDeviceCount(handle, puCount)
#define IXAudio2_GetDeviceDetails(handle, Index,pDeviceDetails) (handle)->lpVtbl->GetDeviceDetails(handle, Index, pDeviceDetails)
#define IXAudio2SourceVoice_Start(handle, Flags, OperationSet) (handle)->lpVtbl->Start(handle, Flags, OperationSet)
#define IXAudio2SourceVoice_Stop(handle, Flags, OperationSet) (handle)->lpVtbl->Stop(handle, Flags, OperationSet)
#define IXAudio2SourceVoice_SubmitSourceBuffer(handle, pBuffer, pBufferWMA) (handle)->lpVtbl->SubmitSourceBuffer(handle, pBuffer, pBufferWMA)
#define IXAudio2SourceVoice_DestroyVoice(handle) (handle)->lpVtbl->DestroyVoice(handle)
#define IXAudio2MasteringVoice_DestroyVoice(handle) (handle)->lpVtbl->DestroyVoice(handle)
#endif
#ifdef _XBOX
STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR));
#else
static INLINE HRESULT XAudio2Create(IXAudio2 **ppXAudio2, UINT32 flags, XAUDIO2_PROCESSOR proc)
{
IXAudio2 *pXAudio2 = NULL;
#ifdef __cplusplus
HRESULT hr = CoCreateInstance(CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2);
#else
HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
#endif
if (SUCCEEDED(hr))
{
hr = IXAudio2_Initialize(pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR);
if (SUCCEEDED(hr))
*ppXAudio2 = pXAudio2;
else
IXAudio2_Release(pXAudio2);
}
return hr;
}
#endif
/* Undo the #pragma pack(push, 1) directive at the top of this file */
#pragma pack(pop)
#endif
File diff suppressed because it is too large. Load diff
-6
View File
@@ -55,7 +55,6 @@ typedef struct rarch_CC_resampler
void (*process)(void *re, struct resampler_data *data);
} rarch_CC_resampler_t;
#ifdef _MIPS_ARCH_ALLEGREX
static void resampler_CC_process(void *re_, struct resampler_data *data)
{
@@ -115,7 +114,6 @@ static void resampler_CC_process(void *re_, struct resampler_data *data)
"vadd.q c720, c720, c620 \n"
"vadd.s s730, s730, s730[1] \n"
"mfv %0, s730 \n"
@@ -216,7 +214,6 @@ static void resampler_CC_downsample(void *re_, struct resampler_data *data)
vec_ww1 = _mm_mul_ps(vec_w1, vec_w1);
vec_ww2 = _mm_mul_ps(vec_w2, vec_w2);
vec_ww1 = _mm_mul_ps(vec_ww1, _mm_sub_ps(_mm_set_ps1(3.0),vec_ww1));
vec_ww2 = _mm_mul_ps(vec_ww2, _mm_sub_ps(_mm_set_ps1(3.0),vec_ww2));
@@ -307,7 +304,6 @@ static void resampler_CC_upsample(void *re_, struct resampler_data *data)
vec_ww1 = _mm_mul_ps(vec_w1, vec_w1);
vec_ww2 = _mm_mul_ps(vec_w2, vec_w2);
vec_ww1 = _mm_mul_ps(vec_ww1,_mm_sub_ps(_mm_set_ps1(3.0),vec_ww1));
vec_ww2 = _mm_mul_ps(vec_ww2,_mm_sub_ps(_mm_set_ps1(3.0),vec_ww2));
@@ -349,7 +345,6 @@ static void resampler_CC_upsample(void *re_, struct resampler_data *data)
data->output_frames = outp - (audio_frame_float_t*)data->data_out;
}
#elif defined (__ARM_NEON__) && !defined(DONT_WANT_ARM_OPTIMIZATIONS)
#define CC_RESAMPLER_IDENT "NEON"
@@ -492,7 +487,6 @@ static void resampler_CC_process(void *re_, struct resampler_data *data)
re->process(re_, data);
}
static void *resampler_CC_init(const struct resampler_config *config,
double bandwidth_mod,
enum resampler_quality quality,
+4 -8
View File
@@ -46,14 +46,17 @@
#define NETWORK_COMPAT_HEADERS 1
#endif
#ifdef NETWORK_COMPAT_HEADERS
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#ifdef __CELLOS_LV2__
#include <sys/poll.h>
#else
#include <poll.h>
#endif
#endif
#include <fcntl.h>
#ifdef _WIN32
@@ -158,7 +161,6 @@ static int rsnd_poll(struct pollfd *fd, int numfd, int timeout);
static void rsnd_cb_thread(void *thread_data);
static void rsnd_thread(void *thread_data);
/* Determine whether we're running big- or little endian */
static INLINE int rsnd_is_little_endian(void)
{
@@ -242,7 +244,6 @@ static int rsnd_connect_server( rsound_t *rd )
rd->conn_type = RSD_CONN_TCP;
rd->conn.socket = net_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if ( rd->conn.socket < 0 )
goto error;
@@ -312,7 +313,6 @@ static int rsnd_send_header_info(rsound_t *rd)
#define FRAMESIZE 34
#define FORMAT 42
uint32_t temp_rate = rd->rate;
uint16_t temp_channels = rd->channels;
@@ -980,7 +980,6 @@ static int rsnd_close_ctl(rsound_t *rd)
return 0;
}
// Sends delay info request to server on the ctl socket. This code section isn't critical, and will work if it works.
// It will never block.
static int rsnd_send_info_query(rsound_t *rd)
@@ -1296,7 +1295,6 @@ static int rsnd_reset(rsound_t *rd)
return 0;
}
int rsd_stop(rsound_t *rd)
{
retro_assert(rd != NULL);
@@ -1403,7 +1401,6 @@ int rsd_exec(rsound_t *rsound)
return fd;
}
/* ioctl()-ish param setting :D */
int rsd_set_param(rsound_t *rd, enum rsd_settings option, void* param)
{
@@ -1493,7 +1490,6 @@ void rsd_delay_wait(rsound_t *rd)
/* Latency of stream in ms */
int latency_ms = rsd_delay_ms(rd);
/* Should we sleep for a while to keep the latency low? */
if ( rd->max_latency < latency_ms )
{
-1
View File
@@ -46,7 +46,6 @@ void _init_vita_heap(void) {
_newlib_vm_memblock = 0;
}
// Create a mutex to use inside _sbrk_r
if (sceKernelCreateLwMutex((struct SceKernelLwMutexWork*)_newlib_sbrk_mutex, "sbrk mutex", 0, 0, 0) < 0) {
goto failure;
+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;
+59
View File
@@ -0,0 +1,59 @@
#include <file/file_path.h>
#include <string/stdstring.h>
#include <streams/file_stream.h>
#ifdef HAVE_MENU
#include "../menu/menu_driver.h"
#endif
#include "../file_path_special.h"
#include "../configuration.h"
#include "../verbosity.h"
#include "../network/net_http_special.h"
#include "badges.h"
badges_ctx_t badges_ctx;
bool badge_exists(const char* filepath)
{
return filestream_exists(filepath);
}
void set_badge_menu_texture(badges_ctx_t * badges, int i)
{
char badge_file[16];
char fullpath[PATH_MAX_LENGTH];
snprintf(badge_file, sizeof(badge_file), "%s%s", badges->badge_id_list[i],
badges->badge_locked[i] ? "_lock.png" : ".png");
fill_pathname_application_special(fullpath,
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES);
#ifdef HAVE_MENU
menu_display_reset_textures_list(badge_file, fullpath,
&badges->menu_texture_list[i],TEXTURE_FILTER_MIPMAP_LINEAR);
#endif
}
void set_badge_info (badges_ctx_t *badge_struct, int id,
const char *badge_id, bool active)
{
if (!badge_struct)
return;
badge_struct->badge_id_list[id] = badge_id;
badge_struct->badge_locked[id] = active;
set_badge_menu_texture(badge_struct, id);
}
menu_texture_item get_badge_texture(int id)
{
settings_t *settings = config_get_ptr();
if (!settings || !settings->bools.cheevos_badges_enable)
return (menu_texture_item)NULL;
return badges_ctx.menu_texture_list[id];
}
+44
View File
@@ -0,0 +1,44 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_BADGE_H
#define __RARCH_CHEEVOS_BADGE_H
#include "../menu/menu_driver.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
#define CHEEVOS_BADGE_LIMIT 256
typedef struct
{
bool badge_locked[CHEEVOS_BADGE_LIMIT];
const char * badge_id_list[CHEEVOS_BADGE_LIMIT];
menu_texture_item menu_texture_list[CHEEVOS_BADGE_LIMIT];
} badges_ctx_t;
bool badge_exists(const char* filepath);
void set_badge_menu_texture(badges_ctx_t * badges, int i);
extern void set_badge_info (badges_ctx_t *badge_struct, int id, const char *badge_id, bool active);
extern menu_texture_item get_badge_texture(int id);
extern badges_ctx_t badges_ctx;
static badges_ctx_t new_badges_ctx;
RETRO_END_DECLS
#endif
File diff suppressed because it is too large. Load diff
+76
View File
@@ -0,0 +1,76 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2016 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_CHEEVOS_H
#define __RARCH_CHEEVOS_CHEEVOS_H
#include <stdint.h>
#include <stdlib.h>
#include <boolean.h>
#include "../verbosity.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef struct cheevos_ctx_desc
{
unsigned idx;
char *s;
size_t len;
} cheevos_ctx_desc_t;
enum
{
CHEEVOS_ACTIVE_SOFTCORE = 1 << 0,
CHEEVOS_ACTIVE_HARDCORE = 1 << 1
};
bool cheevos_load(const void *data);
void cheevos_reset_game(void);
void cheevos_populate_menu(void *data);
bool cheevos_get_description(cheevos_ctx_desc_t *desc);
bool cheevos_apply_cheats(bool *data_bool);
bool cheevos_unload(void);
bool cheevos_toggle_hardcore_mode(void);
void cheevos_test(void);
bool cheevos_set_cheats(void);
void cheevos_set_support_cheevos(bool state);
bool cheevos_get_support_cheevos(void);
int cheevos_get_console(void);
extern bool cheevos_loaded;
extern bool cheevos_hardcore_active;
extern bool cheevos_hardcore_paused;
extern bool cheevos_state_loaded_flag;
extern int cheats_are_enabled;
extern int cheats_were_enabled;
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_CHEEVOS_H */
+75
View File
@@ -0,0 +1,75 @@
#ifndef __RARCH_CHEEVOS_CORO_H
#define __RARCH_CHEEVOS_CORO_H
/*
Released under the CC0: https://creativecommons.org/publicdomain/zero/1.0/
*/
/* Use at the beginning of the coroutine, you must have declared a variable coro_t* coro */
#define CORO_ENTER() \
{ \
CORO_again: ; \
switch ( coro->step ) { \
case CORO_BEGIN: ;
/* Use to define labels which are targets to GOTO and GOSUB */
#define CORO_SUB( x ) \
case x: ;
/* Use at the end of the coroutine */
#define CORO_LEAVE() \
} } \
do { return 0; } while ( 0 )
/* Go to the x label */
#define CORO_GOTO( x ) \
do { \
coro->step = ( x ); \
goto CORO_again; \
} while ( 0 )
/* Go to a subroutine, execution continues until the subroutine returns via RET */
#define CORO_GOSUB( x ) \
do { \
coro->stack[ coro->sp++ ] = __LINE__; \
coro->step = ( x ); \
goto CORO_again; \
case __LINE__: ; \
} while ( 0 )
/* Returns from a subroutine */
#define CORO_RET() \
do { \
coro->step = coro->stack[ --coro->sp ]; \
goto CORO_again; \
} while ( 0 )
/* Yields to the caller, execution continues from this point when the coroutine is resumed */
#define CORO_YIELD() \
do { \
coro->step = __LINE__; \
return 1; \
case __LINE__: ; \
} while ( 0 )
/* The coroutine entry point, never use 0 as a label */
#define CORO_BEGIN 0
/* Sets up the coroutine */
#define CORO_SETUP() \
do { \
coro->step = CORO_BEGIN; \
coro->sp = 0; \
} while ( 0 )
#define CORO_STOP() \
do { \
return 0; \
} while ( 0 )
/* Add this macro to your coro_t structure containing the variables for the coroutine */
#define CORO_FIELDS \
int step, sp; \
int stack[ 8 ];
#endif /* __RARCH_CHEEVOS_CORO_H */
+264
View File
@@ -0,0 +1,264 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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 "fixup.h"
#include "cheevos.h"
#include "util.h"
#include "../retroarch.h"
#include "../core.h"
#include <rcheevos.h>
static int cheevos_cmpaddr(const void* e1, const void* e2)
{
const cheevos_fixup_t* f1 = (const cheevos_fixup_t*)e1;
const cheevos_fixup_t* f2 = (const cheevos_fixup_t*)e2;
if (f1->address < f2->address)
{
return -1;
}
else if (f1->address > f2->address)
{
return 1;
}
else
{
return 0;
}
}
static size_t cheevos_var_reduce(size_t addr, size_t mask)
{
while (mask)
{
size_t tmp = (mask - 1) & ~mask;
addr = (addr & tmp) | ((addr >> 1) & ~tmp);
mask = (mask & (mask - 1)) >> 1;
}
return addr;
}
static size_t cheevos_var_highest_bit(size_t n)
{
n |= n >> 1;
n |= n >> 2;
n |= n >> 4;
n |= n >> 8;
n |= n >> 16;
return n ^ (n >> 1);
}
void cheevos_fixup_init(cheevos_fixups_t* fixups)
{
fixups->elements = NULL;
fixups->capacity = fixups->count = 0;
fixups->dirty = false;
}
void cheevos_fixup_destroy(cheevos_fixups_t* fixups)
{
CHEEVOS_FREE(fixups->elements);
cheevos_fixup_init(fixups);
}
const uint8_t* cheevos_fixup_find(cheevos_fixups_t* fixups, unsigned address, int console)
{
cheevos_fixup_t key;
cheevos_fixup_t* found;
const uint8_t* location;
if (fixups->dirty)
{
qsort(fixups->elements, fixups->count, sizeof(cheevos_fixup_t), cheevos_cmpaddr);
fixups->dirty = false;
}
key.address = address;
found = (cheevos_fixup_t*)bsearch(&key, fixups->elements, fixups->count, sizeof(cheevos_fixup_t), cheevos_cmpaddr);
if (found != NULL)
{
return found->location;
}
if (fixups->count == fixups->capacity)
{
unsigned new_capacity = fixups->capacity == 0 ? 16 : fixups->capacity * 2;
cheevos_fixup_t* new_elements = (cheevos_fixup_t*)
realloc(fixups->elements, new_capacity * sizeof(cheevos_fixup_t));
if (new_elements == NULL)
{
return NULL;
}
fixups->elements = new_elements;
fixups->capacity = new_capacity;
}
fixups->elements[fixups->count].address = address;
fixups->elements[fixups->count++].location = location =
cheevos_patch_address(address, console);
fixups->dirty = true;
return location;
}
const uint8_t* cheevos_patch_address(unsigned address, int console)
{
rarch_system_info_t* system = runloop_get_system_info();
const void* pointer = NULL;
if (console == RC_CONSOLE_NINTENDO)
{
if (address >= 0x0800 && address < 0x2000)
{
/* Address in the mirrorred RAM, adjust to real RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "NES memory address in mirrorred RAM %X, adjusted to %X\n", address, address & 0x07ff);
address &= 0x07ff;
}
}
else if (console == RC_CONSOLE_GAMEBOY_COLOR)
{
if (address >= 0xe000 && address <= 0xfdff)
{
/* Address in the echo RAM, adjust to real RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "GBC memory address in echo RAM %X, adjusted to %X\n", address, address - 0x2000);
address -= 0x2000;
}
}
if (system->mmaps.num_descriptors != 0)
{
/* We have memory descriptors, use it. */
const rarch_memory_descriptor_t* desc = NULL;
const rarch_memory_descriptor_t* end = NULL;
/* Patch the address to correctly map it to the mmaps. */
if (console == RC_CONSOLE_GAMEBOY_ADVANCE)
{
if (address < 0x8000)
{
/* Internal RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", address, address + 0x3000000);
address += 0x3000000;
}
else
{
/* Work RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", address, address + 0x2000000 - 0x8000);
address += 0x2000000 - 0x8000;
}
}
else if (console == RC_CONSOLE_PC_ENGINE)
{
/* RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "PCE memory address %X adjusted to %X\n", address, address + 0x1f0000);
address += 0x1f0000;
}
else if (console == RC_CONSOLE_SUPER_NINTENDO)
{
if (address < 0x020000)
{
/* Work RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", address, address + 0x7e0000);
address += 0x7e0000;
}
else
{
/* Save RAM. */
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", address, address + 0x006000 - 0x020000);
address += 0x006000 - 0x020000;
}
}
desc = system->mmaps.descriptors;
end = desc + system->mmaps.num_descriptors;
for (; desc < end; desc++)
{
if (((desc->core.start ^ address) & desc->core.select) == 0)
{
unsigned addr = address;
pointer = desc->core.ptr;
address = (unsigned)cheevos_var_reduce(
(addr - desc->core.start) & desc->disconnect_mask,
desc->core.disconnect);
if (address >= desc->core.len)
address -= cheevos_var_highest_bit(address);
address += desc->core.offset;
CHEEVOS_LOG(CHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", addr, (int)((desc - system->mmaps.descriptors) + 1), address);
break;
}
}
}
else
{
unsigned i;
for (i = 0; i < 4; i++)
{
retro_ctx_memory_info_t meminfo;
switch (i)
{
case 0:
meminfo.id = RETRO_MEMORY_SYSTEM_RAM;
break;
case 1:
meminfo.id = RETRO_MEMORY_SAVE_RAM;
break;
case 2:
meminfo.id = RETRO_MEMORY_VIDEO_RAM;
break;
case 3:
meminfo.id = RETRO_MEMORY_RTC;
break;
}
core_get_memory(&meminfo);
if (address < meminfo.size)
{
pointer = meminfo.data;
break;
}
/**
* HACK Subtract the correct amount of bytes to reach the save RAM as
* it's size is not always set correctly in the core.
*/
if (i == 0 && console == RC_CONSOLE_NINTENDO)
address -= 0x6000;
else
address -= meminfo.size;
}
}
if (pointer == NULL)
{
return NULL;
}
return (const uint8_t*)pointer + address;
}
+48
View File
@@ -0,0 +1,48 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_FIXUP_H
#define __RARCH_CHEEVOS_FIXUP_H
#include <stdint.h>
#include <boolean.h>
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef struct
{
unsigned address;
const uint8_t* location;
} cheevos_fixup_t;
typedef struct
{
cheevos_fixup_t* elements;
unsigned capacity, count;
bool dirty;
} cheevos_fixups_t;
void cheevos_fixup_init(cheevos_fixups_t* fixups);
void cheevos_fixup_destroy(cheevos_fixups_t* fixups);
const uint8_t* cheevos_fixup_find(cheevos_fixups_t* fixups, unsigned address, int console);
const uint8_t* cheevos_patch_address(unsigned address, int console);
RETRO_END_DECLS
#endif
+12
View File
@@ -0,0 +1,12 @@
#include "hash.h"
uint32_t cheevos_djb2(const char* str, size_t length)
{
const unsigned char* aux = (const unsigned char*)str;
uint32_t hash = 5381;
while (length--)
hash = ( hash << 5 ) + hash + *aux++;
return hash;
}
+30
View File
@@ -0,0 +1,30 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_HASH_H
#define __RARCH_CHEEVOS_HASH_H
#include <stdint.h>
#include <stddef.h>
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
uint32_t cheevos_djb2(const char* str, size_t length);
RETRO_END_DECLS
#endif
+674
View File
@@ -0,0 +1,674 @@
#include "parser.h"
#include "hash.h"
#include "util.h"
#include <formats/jsonsax.h>
#include <string/stdstring.h>
#include <compat/strl.h>
/* C89 wants only int values in enums. */
#define CHEEVOS_JSON_KEY_GAMEID 0xb4960eecU
#define CHEEVOS_JSON_KEY_ACHIEVEMENTS 0x69749ae1U
#define CHEEVOS_JSON_KEY_ID 0x005973f2U
#define CHEEVOS_JSON_KEY_MEMADDR 0x1e76b53fU
#define CHEEVOS_JSON_KEY_TITLE 0x0e2a9a07U
#define CHEEVOS_JSON_KEY_DESCRIPTION 0xe61a1f69U
#define CHEEVOS_JSON_KEY_POINTS 0xca8fce22U
#define CHEEVOS_JSON_KEY_AUTHOR 0xa804edb8U
#define CHEEVOS_JSON_KEY_MODIFIED 0xdcea4fe6U
#define CHEEVOS_JSON_KEY_CREATED 0x3a84721dU
#define CHEEVOS_JSON_KEY_BADGENAME 0x887685d9U
#define CHEEVOS_JSON_KEY_CONSOLE_ID 0x071656e5U
#define CHEEVOS_JSON_KEY_TOKEN 0x0e2dbd26U
#define CHEEVOS_JSON_KEY_FLAGS 0x0d2e96b2U
#define CHEEVOS_JSON_KEY_LEADERBOARDS 0xf1247d2dU
#define CHEEVOS_JSON_KEY_MEM 0x0b8807e4U
#define CHEEVOS_JSON_KEY_FORMAT 0xb341208eU
#define CHEEVOS_JSON_KEY_SUCCESS 0x110461deU
#define CHEEVOS_JSON_KEY_ERROR 0x0d2011cfU
/*****************************************************************************
Gets a value in a JSON
*****************************************************************************/
typedef struct
{
unsigned key_hash;
int is_key;
const char* value;
size_t length;
} cheevos_getvalueud_t;
static int cheevos_getvalue_key(void* userdata,
const char* name, size_t length)
{
cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata;
ud->is_key = cheevos_djb2(name, length) == ud->key_hash;
return 0;
}
static int cheevos_getvalue_string(void* userdata,
const char* string, size_t length)
{
cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata;
if (ud->is_key)
{
ud->value = string;
ud->length = length;
ud->is_key = 0;
}
return 0;
}
static int cheevos_getvalue_boolean(void* userdata, int istrue)
{
cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata;
if (ud->is_key)
{
if (istrue)
{
ud->value = "true";
ud->length = 4;
}
else
{
ud->value = "false";
ud->length = 5;
}
ud->is_key = 0;
}
return 0;
}
static int cheevos_getvalue_null(void* userdata)
{
cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata;
if (ud->is_key )
{
ud->value = "null";
ud->length = 4;
ud->is_key = 0;
}
return 0;
}
static int cheevos_get_value(const char* json, unsigned key_hash,
char* value, size_t length)
{
static const jsonsax_handlers_t handlers =
{
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
cheevos_getvalue_key,
NULL,
cheevos_getvalue_string,
cheevos_getvalue_string, /* number */
cheevos_getvalue_boolean,
cheevos_getvalue_null
};
cheevos_getvalueud_t ud;
ud.key_hash = key_hash;
ud.is_key = 0;
ud.value = NULL;
ud.length = 0;
*value = 0;
if ((jsonsax_parse(json, &handlers, (void*)&ud) == JSONSAX_OK)
&& ud.value && ud.length < length)
{
strlcpy(value, ud.value, ud.length + 1);
return 0;
}
return -1;
}
/*****************************************************************************
Returns the token of the error message
*****************************************************************************/
int cheevos_get_token(const char* json, char* token, size_t length)
{
cheevos_get_value(json, CHEEVOS_JSON_KEY_ERROR, token, length);
if (!string_is_empty(token))
return -1;
return cheevos_get_value(json, CHEEVOS_JSON_KEY_TOKEN, token, length);
}
/*****************************************************************************
Count number of achievements in a JSON file
*****************************************************************************/
typedef struct
{
int in_cheevos;
int in_lboards;
uint32_t field_hash;
unsigned core_count;
unsigned unofficial_count;
unsigned lboard_count;
} cheevos_countud_t;
static int cheevos_count_end_array(void* userdata)
{
cheevos_countud_t* ud = (cheevos_countud_t*)userdata;
ud->in_cheevos = 0;
ud->in_lboards = 0;
return 0;
}
static int cheevos_count_key(void* userdata,
const char* name, size_t length)
{
cheevos_countud_t* ud = (cheevos_countud_t*)userdata;
ud->field_hash = cheevos_djb2(name, length);
if (ud->field_hash == CHEEVOS_JSON_KEY_ACHIEVEMENTS)
ud->in_cheevos = 1;
else if (ud->field_hash == CHEEVOS_JSON_KEY_LEADERBOARDS)
ud->in_lboards = 1;
return 0;
}
static int cheevos_count_number(void* userdata,
const char* number, size_t length)
{
cheevos_countud_t* ud = (cheevos_countud_t*)userdata;
if (ud->in_cheevos && ud->field_hash == CHEEVOS_JSON_KEY_FLAGS)
{
long flags = strtol(number, NULL, 10);
if (flags == 3)
ud->core_count++; /* Core achievements */
else if (flags == 5)
ud->unofficial_count++; /* Unofficial achievements */
}
else if (ud->in_lboards && ud->field_hash == CHEEVOS_JSON_KEY_ID)
ud->lboard_count++;
return 0;
}
static int cheevos_count_cheevos(const char* json,
unsigned* core_count, unsigned* unofficial_count,
unsigned* lboard_count)
{
static const jsonsax_handlers_t handlers =
{
NULL,
NULL,
NULL,
NULL,
NULL,
cheevos_count_end_array,
cheevos_count_key,
NULL,
NULL,
cheevos_count_number,
NULL,
NULL
};
int res;
cheevos_countud_t ud;
ud.in_cheevos = 0;
ud.in_lboards = 0;
ud.core_count = 0;
ud.unofficial_count = 0;
ud.lboard_count = 0;
res = jsonsax_parse(json, &handlers, (void*)&ud);
*core_count = ud.core_count;
*unofficial_count = ud.unofficial_count;
*lboard_count = ud.lboard_count;
return res;
}
/*****************************************************************************
Parses the cheevos in the JSON
*****************************************************************************/
typedef struct
{
const char* string;
size_t length;
} cheevos_field_t;
typedef struct
{
int in_cheevos;
int in_lboards;
int is_console_id;
unsigned core_count;
unsigned unofficial_count;
unsigned lboard_count;
cheevos_field_t* field;
cheevos_field_t id, memaddr, title, desc, points, author;
cheevos_field_t modified, created, badge, flags, format;
cheevos_rapatchdata_t* patchdata;
} cheevos_readud_t;
static const char* cheevos_dupstr(const cheevos_field_t* field)
{
char* string = (char*)malloc(field->length + 1);
if (!string)
return NULL;
memcpy((void*)string, (void*)field->string, field->length);
string[field->length] = 0;
return string;
}
static int cheevos_new_cheevo(cheevos_readud_t* ud)
{
cheevos_racheevo_t* cheevo = NULL;
unsigned flags = (unsigned)strtol(ud->flags.string, NULL, 10);
if (flags == 3)
cheevo = ud->patchdata->core + ud->core_count++;
else if (flags == 5)
cheevo = ud->patchdata->unofficial + ud->unofficial_count++;
else
return 0;
cheevo->title = cheevos_dupstr(&ud->title);
cheevo->description = cheevos_dupstr(&ud->desc);
cheevo->badge = cheevos_dupstr(&ud->badge);
cheevo->memaddr = cheevos_dupstr(&ud->memaddr);
cheevo->points = (unsigned)strtol(ud->points.string, NULL, 10);
cheevo->id = (unsigned)strtol(ud->id.string, NULL, 10);
if ( !cheevo->title
|| !cheevo->description
|| !cheevo->badge
|| !cheevo->memaddr)
{
CHEEVOS_FREE(cheevo->title);
CHEEVOS_FREE(cheevo->description);
CHEEVOS_FREE(cheevo->badge);
CHEEVOS_FREE(cheevo->memaddr);
return -1;
}
return 0;
}
static int cheevos_new_lboard(cheevos_readud_t* ud)
{
cheevos_ralboard_t* lboard = ud->patchdata->lboards + ud->lboard_count++;
lboard->title = cheevos_dupstr(&ud->title);
lboard->description = cheevos_dupstr(&ud->desc);
lboard->format = cheevos_dupstr(&ud->format);
lboard->mem = cheevos_dupstr(&ud->memaddr);
lboard->id = (unsigned)strtol(ud->id.string, NULL, 10);
if ( !lboard->title
|| !lboard->description
|| !lboard->format
|| !lboard->mem)
{
CHEEVOS_FREE(lboard->title);
CHEEVOS_FREE(lboard->description);
CHEEVOS_FREE(lboard->format);
CHEEVOS_FREE(lboard->mem);
return -1;
}
return 0;
}
static int cheevos_read_end_object(void* userdata)
{
cheevos_readud_t* ud = (cheevos_readud_t*)userdata;
if (ud->in_cheevos)
return cheevos_new_cheevo(ud);
if (ud->in_lboards)
return cheevos_new_lboard(ud);
return 0;
}
static int cheevos_read_end_array(void* userdata)
{
cheevos_readud_t* ud = (cheevos_readud_t*)userdata;
ud->in_cheevos = 0;
ud->in_lboards = 0;
return 0;
}
static int cheevos_read_key(void* userdata,
const char* name, size_t length)
{
cheevos_readud_t* ud = (cheevos_readud_t*)userdata;
int common = ud->in_cheevos || ud->in_lboards;
uint32_t hash = cheevos_djb2(name, length);
ud->field = NULL;
switch (hash)
{
case CHEEVOS_JSON_KEY_ACHIEVEMENTS:
ud->in_cheevos = 1;
break;
case CHEEVOS_JSON_KEY_LEADERBOARDS:
ud->in_lboards = 1;
break;
case CHEEVOS_JSON_KEY_CONSOLE_ID:
ud->is_console_id = 1;
break;
case CHEEVOS_JSON_KEY_ID:
if (common)
ud->field = &ud->id;
break;
case CHEEVOS_JSON_KEY_MEMADDR:
if (ud->in_cheevos)
ud->field = &ud->memaddr;
break;
case CHEEVOS_JSON_KEY_MEM:
if (ud->in_lboards)
ud->field = &ud->memaddr;
break;
case CHEEVOS_JSON_KEY_TITLE:
if (common)
ud->field = &ud->title;
break;
case CHEEVOS_JSON_KEY_DESCRIPTION:
if (common)
ud->field = &ud->desc;
break;
case CHEEVOS_JSON_KEY_POINTS:
if (ud->in_cheevos)
ud->field = &ud->points;
break;
case CHEEVOS_JSON_KEY_AUTHOR:
if (ud->in_cheevos)
ud->field = &ud->author;
break;
case CHEEVOS_JSON_KEY_MODIFIED:
if (ud->in_cheevos)
ud->field = &ud->modified;
break;
case CHEEVOS_JSON_KEY_CREATED:
if (ud->in_cheevos)
ud->field = &ud->created;
break;
case CHEEVOS_JSON_KEY_BADGENAME:
if (ud->in_cheevos)
ud->field = &ud->badge;
break;
case CHEEVOS_JSON_KEY_FLAGS:
if (ud->in_cheevos)
ud->field = &ud->flags;
break;
case CHEEVOS_JSON_KEY_FORMAT:
if (ud->in_lboards)
ud->field = &ud->format;
break;
default:
break;
}
return 0;
}
static int cheevos_read_string(void* userdata,
const char* string, size_t length)
{
cheevos_readud_t* ud = (cheevos_readud_t*)userdata;
if (ud->field)
{
ud->field->string = string;
ud->field->length = length;
}
return 0;
}
static int cheevos_read_number(void* userdata,
const char* number, size_t length)
{
cheevos_readud_t* ud = (cheevos_readud_t*)userdata;
if (ud->field)
{
ud->field->string = number;
ud->field->length = length;
}
else if (ud->is_console_id)
{
ud->patchdata->console_id = strtol(number, NULL, 10);
ud->is_console_id = 0;
}
return 0;
}
int cheevos_get_patchdata(const char* json, cheevos_rapatchdata_t* patchdata)
{
static const jsonsax_handlers_t handlers =
{
NULL,
NULL,
NULL,
cheevos_read_end_object,
NULL,
cheevos_read_end_array,
cheevos_read_key,
NULL,
cheevos_read_string,
cheevos_read_number,
NULL,
NULL
};
cheevos_readud_t ud;
int res;
/* Count the number of achievements in the JSON file. */
res = cheevos_count_cheevos(json, &patchdata->core_count,
&patchdata->unofficial_count, &patchdata->lboard_count);
if (res != JSONSAX_OK)
return -1;
/* Allocate the achievements. */
patchdata->core = (cheevos_racheevo_t*)
calloc(patchdata->core_count, sizeof(cheevos_racheevo_t));
patchdata->unofficial = (cheevos_racheevo_t*)
calloc(patchdata->unofficial_count, sizeof(cheevos_racheevo_t));
patchdata->lboards = (cheevos_ralboard_t*)
calloc(patchdata->lboard_count, sizeof(cheevos_ralboard_t));
if (!patchdata->core ||
!patchdata->unofficial ||
!patchdata->lboards)
{
CHEEVOS_FREE(patchdata->core);
CHEEVOS_FREE(patchdata->unofficial);
CHEEVOS_FREE(patchdata->lboards);
return -1;
}
/* Load the achievements. */
ud.in_cheevos = 0;
ud.in_lboards = 0;
ud.is_console_id = 0;
ud.field = NULL;
ud.core_count = 0;
ud.unofficial_count = 0;
ud.lboard_count = 0;
ud.patchdata = patchdata;
if (jsonsax_parse(json, &handlers, (void*)&ud) != JSONSAX_OK)
{
cheevos_free_patchdata(patchdata);
return -1;
}
return 0;
}
/*****************************************************************************
Frees the patchdata
*****************************************************************************/
void cheevos_free_patchdata(cheevos_rapatchdata_t* patchdata)
{
unsigned i = 0, count = 0;
const cheevos_racheevo_t* cheevo = NULL;
const cheevos_ralboard_t* lboard = NULL;
cheevo = patchdata->core;
for (i = 0, count = patchdata->core_count; i < count; i++, cheevo++)
{
CHEEVOS_FREE(cheevo->title);
CHEEVOS_FREE(cheevo->description);
CHEEVOS_FREE(cheevo->badge);
CHEEVOS_FREE(cheevo->memaddr);
}
cheevo = patchdata->unofficial;
for (i = 0, count = patchdata->unofficial_count; i < count; i++, cheevo++)
{
CHEEVOS_FREE(cheevo->title);
CHEEVOS_FREE(cheevo->description);
CHEEVOS_FREE(cheevo->badge);
CHEEVOS_FREE(cheevo->memaddr);
}
lboard = patchdata->lboards;
for (i = 0, count = patchdata->lboard_count; i < count; i++, lboard++)
{
CHEEVOS_FREE(lboard->title);
CHEEVOS_FREE(lboard->description);
CHEEVOS_FREE(lboard->format);
CHEEVOS_FREE(lboard->mem);
}
CHEEVOS_FREE(patchdata->core);
CHEEVOS_FREE(patchdata->unofficial);
CHEEVOS_FREE(patchdata->lboards);
patchdata->console_id = 0;
patchdata->core = NULL;
patchdata->unofficial = NULL;
patchdata->lboards = NULL;
patchdata->core_count = 0;
patchdata->unofficial_count = 0;
patchdata->lboard_count = 0;
}
/*****************************************************************************
Deactivates unlocked cheevos
*****************************************************************************/
typedef struct
{
int is_element;
cheevos_unlock_cb_t unlock_cb;
void* userdata;
} cheevos_deactivate_t;
static int cheevos_deactivate_index(void* userdata, unsigned int index)
{
cheevos_deactivate_t* ud = (cheevos_deactivate_t*)userdata;
ud->is_element = 1;
return 0;
}
static int cheevos_deactivate_number(void* userdata,
const char* number, size_t length)
{
cheevos_deactivate_t* ud = (cheevos_deactivate_t*)userdata;
unsigned id = 0;
if (ud->is_element)
{
ud->is_element = 0;
id = (unsigned)strtol(number, NULL, 10);
ud->unlock_cb(id, ud->userdata);
}
return 0;
}
void cheevos_deactivate_unlocks(const char* json, cheevos_unlock_cb_t unlock_cb, void* userdata)
{
static const jsonsax_handlers_t handlers =
{
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
cheevos_deactivate_index,
NULL,
cheevos_deactivate_number,
NULL,
NULL
};
cheevos_deactivate_t ud;
ud.is_element = 0;
ud.unlock_cb = unlock_cb;
ud.userdata = userdata;
jsonsax_parse(json, &handlers, (void*)&ud);
}
/*****************************************************************************
Returns the game ID
*****************************************************************************/
unsigned chevos_get_gameid(const char* json)
{
char gameid[32];
if (cheevos_get_value(json, CHEEVOS_JSON_KEY_GAMEID, gameid, sizeof(gameid)) != 0)
return 0;
return (unsigned)strtol(gameid, NULL, 10);
}
+69
View File
@@ -0,0 +1,69 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_PARSER_H
#define __RARCH_CHEEVOS_PARSER_H
#include <stdint.h>
#include <stddef.h>
#include <boolean.h>
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef struct {
const char* title;
const char* description;
const char* badge;
const char* memaddr;
unsigned points;
unsigned id;
} cheevos_racheevo_t;
typedef struct {
const char* title;
const char* description;
const char* format;
const char* mem;
unsigned id;
} cheevos_ralboard_t;
typedef struct {
unsigned console_id;
cheevos_racheevo_t* core;
cheevos_racheevo_t* unofficial;
cheevos_ralboard_t* lboards;
unsigned core_count;
unsigned unofficial_count;
unsigned lboard_count;
} cheevos_rapatchdata_t;
typedef void (*cheevos_unlock_cb_t)(unsigned id, void* userdata);
int cheevos_get_token(const char* json, char* token, size_t length);
int cheevos_get_patchdata(const char* json, cheevos_rapatchdata_t* patchdata);
void cheevos_free_patchdata(cheevos_rapatchdata_t* patchdata);
void cheevos_deactivate_unlocks(const char* json, cheevos_unlock_cb_t unlock_cb, void* userdata);
unsigned chevos_get_gameid(const char* json);
RETRO_END_DECLS
#endif
+53
View File
@@ -0,0 +1,53 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2016 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_UTIL_H
#define __RARCH_CHEEVOS_UTIL_H
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
/*****************************************************************************
Setup - mainly for debugging
*****************************************************************************/
/* Define this macro to get extra-verbose log for cheevos. */
#undef CHEEVOS_VERBOSE
/*****************************************************************************
End of setup
*****************************************************************************/
#define CHEEVOS_TAG "[CHEEVOS]: "
#define CHEEVOS_FREE(p) do { void* q = (void*)p; if (q != NULL) free(q); } while (0)
#ifdef CHEEVOS_VERBOSE
#define CHEEVOS_LOG RARCH_LOG
#define CHEEVOS_ERR RARCH_ERR
#else
#define CHEEVOS_LOG cheevos_log
#define CHEEVOS_ERR RARCH_ERR
void cheevos_log(const char *fmt, ...);
#endif
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_UTIL_H */
+15
View File
@@ -1,3 +1,18 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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 <file/file_path.h>
#include <string/stdstring.h>
#include <streams/file_stream.h>
+23 -2
View File
@@ -1,5 +1,24 @@
#ifndef __RARCH_BADGE_H
#define __RARCH_BADGE_H
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_OLD_BADGE_H
#define __RARCH_CHEEVOS_OLD_BADGE_H
#ifdef HAVE_NEW_CHEEVOS
#include "../cheevos-new/badges.h"
#else
#include "../menu/menu_driver.h"
@@ -27,3 +46,5 @@ static badges_ctx_t new_badges_ctx;
RETRO_END_DECLS
#endif
#endif
+39 -71
View File
@@ -1,5 +1,5 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2016 - Andre Leiradella
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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-
@@ -288,6 +288,7 @@ static cheevos_locals_t cheevos_locals =
bool cheevos_loaded = false;
bool cheevos_hardcore_active = false;
bool cheevos_hardcore_paused = false;
bool cheevos_state_loaded_flag = false;
int cheats_are_enabled = 0;
int cheats_were_enabled = 0;
@@ -1665,7 +1666,7 @@ static void cheevos_test_cheevo_set(const cheevoset_t *set)
if (settings && settings->bools.cheevos_auto_screenshot)
{
char shotname[256];
char shotname[4200];
snprintf(shotname, sizeof(shotname), "%s/%s-cheevo-%u",
settings->paths.directory_screenshot,
@@ -2570,10 +2571,12 @@ enum
static int cheevos_iterate(coro_t *coro)
{
ssize_t num_read = 0;
size_t to_read = 4096;
uint8_t *buffer = NULL;
const char *end = NULL;
const int snes_header_len = 0x200;
const int lynx_header_len = 0x40;
ssize_t num_read = 0;
size_t to_read = 4096;
uint8_t *buffer = NULL;
const char *end = NULL;
static const uint32_t genesis_exts[] =
{
@@ -2611,18 +2614,16 @@ static int cheevos_iterate(coro_t *coro)
static cheevos_finder_t finders[] =
{
{SNES_MD5, "SNES (8Mb padding)", snes_exts},
{SNES_MD5, "SNES (discards header)", snes_exts},
{GENESIS_MD5, "Genesis (6Mb padding)", genesis_exts},
{LYNX_MD5, "Atari Lynx (only first 512 bytes)", lynx_exts},
{NES_MD5, "NES (discards VROM)", NULL},
{LYNX_MD5, "Atari Lynx (discards header)", lynx_exts},
{NES_MD5, "NES (discards header)", NULL},
{GENERIC_MD5, "Generic (plain content)", NULL},
{FILENAME_MD5, "Generic (filename)", NULL}
};
CORO_ENTER();
cheevos_locals.addrs_patched = false;
coro->settings = config_get_ptr();
@@ -2901,30 +2902,21 @@ found:
MD5_Init(&coro->md5);
coro->offset = 0;
/* Checks for the existence of a headered SNES file.
Unheadered files fall back to GENERIC_MD5. */
if (coro->len < 0x2000 || coro->len % 0x2000 != snes_header_len)
{
coro->gameid = 0;
CORO_RET();
}
coro->offset = 512;
coro->count = 0;
CORO_GOSUB(EVAL_MD5);
if (coro->count == 0)
{
MD5_Final(coro->hash, &coro->md5);
coro->gameid = 0;
CORO_RET();
}
if (coro->count < size_in_megabytes(8))
{
/*
* Inputs: CHEEVOS_VAR_MD5, CHEEVOS_VAR_OFFSET, CHEEVOS_VAR_COUNT
* Outputs: CHEEVOS_VAR_MD5
*/
coro->offset = 0;
coro->count = size_in_megabytes(8) - coro->count;
CORO_GOSUB(FILL_MD5);
}
MD5_Final(coro->hash, &coro->md5);
CORO_GOTO(GET_GAMEID);
/**************************************************************************
@@ -2964,16 +2956,19 @@ found:
*************************************************************************/
CORO_SUB(LYNX_MD5)
if (coro->len < 0x0240)
/* Checks for the existence of a headered Lynx file.
Unheadered files fall back to GENERIC_MD5. */
if (coro->len <= lynx_header_len ||
memcmp("LYNX", (void *)coro->data, 5) != 0)
{
coro->gameid = 0;
CORO_RET();
}
MD5_Init(&coro->md5);
coro->offset = 0x0040;
coro->count = 0x0200;
coro->offset = lynx_header_len;
coro->count = coro->len - lynx_header_len;
CORO_GOSUB(EVAL_MD5);
MD5_Final(coro->hash, &coro->md5);
@@ -2986,12 +2981,8 @@ found:
*************************************************************************/
CORO_SUB(NES_MD5)
/* Note about the references to the FCEU emulator below. There is no
* core-specific code in this function, it's rather Retro Achievements
* specific code that must be followed to the letter so we compute
* the correct ROM hash. Retro Achievements does indeed use some
* FCEU related method to compute the hash, since its NES emulator
* is based on it. */
/* Checks for the existence of a headered NES file.
Unheadered files fall back to GENERIC_MD5. */
if (coro->len < sizeof(coro->header))
{
@@ -3011,37 +3002,11 @@ found:
CORO_RET();
}
{
size_t romsize = 256;
/* from FCEU core - compute size using the cart mapper */
int mapper = (coro->header.rom_type >> 4) | (coro->header.rom_type2 & 0xF0);
if (coro->header.rom_size)
romsize = next_pow2(coro->header.rom_size);
/* for games not to the power of 2, so we just read enough
* PRG rom from it, but we have to keep ROM_size to the power of 2
* since PRGCartMapping wants ROM_size to be to the power of 2
* so instead if not to power of 2, we just use head.ROM_size when
* we use FCEU_read. */
coro->round = mapper != 53 && mapper != 198 && mapper != 228;
coro->bytes = coro->round ? romsize : coro->header.rom_size;
}
/* from FCEU core - check if Trainer included in ROM data */
MD5_Init(&coro->md5);
coro->offset = sizeof(coro->header) + (coro->header.rom_type & 4
? sizeof(coro->header) : 0);
coro->count = 0x4000 * coro->bytes;
coro->offset = sizeof(coro->header);
coro->count = coro->len - coro->offset;
CORO_GOSUB(EVAL_MD5);
if (coro->count < 0x4000 * coro->bytes)
{
coro->offset = 0xff;
coro->count = 0x4000 * coro->bytes - coro->count;
CORO_GOSUB(FILL_MD5);
}
MD5_Final(coro->hash, &coro->md5);
CORO_GOTO(GET_GAMEID);
@@ -3228,7 +3193,10 @@ found:
{
settings_t *settings = config_get_ptr();
if (!string_is_equal(settings->arrays.menu_driver, "xmb") ||
if (!(
string_is_equal(settings->arrays.menu_driver, "xmb") ||
string_is_equal(settings->arrays.menu_driver, "ozone")
) ||
!settings->bools.cheevos_badges_enable)
CORO_RET();
}
@@ -3389,7 +3357,7 @@ found:
/* Save token to config and clear pass on success */
*coro->settings->arrays.cheevos_password = '\0';
strlcpy(
strncpy(
coro->settings->arrays.cheevos_token,
cheevos_locals.token, sizeof(coro->settings->arrays.cheevos_token)
);
+171 -163
View File
@@ -1,163 +1,171 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2016 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_H
#define __RARCH_CHEEVOS_H
#include <stdint.h>
#include <stdlib.h>
#include <boolean.h>
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
/*****************************************************************************
Setup - mainly for debugging
*****************************************************************************/
/* Define this macro to get extra-verbose log for cheevos. */
#undef CHEEVOS_VERBOSE
/*****************************************************************************
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;
char *s;
size_t len;
} cheevos_ctx_desc_t;
typedef enum
{
CHEEVOS_CONSOLE_NONE = 0,
/* Don't change those, the values match the console IDs
* at retroachievements.org. */
CHEEVOS_CONSOLE_MEGA_DRIVE = 1,
CHEEVOS_CONSOLE_NINTENDO_64 = 2,
CHEEVOS_CONSOLE_SUPER_NINTENDO = 3,
CHEEVOS_CONSOLE_GAMEBOY = 4,
CHEEVOS_CONSOLE_GAMEBOY_ADVANCE = 5,
CHEEVOS_CONSOLE_GAMEBOY_COLOR = 6,
CHEEVOS_CONSOLE_NINTENDO = 7,
CHEEVOS_CONSOLE_PC_ENGINE = 8,
CHEEVOS_CONSOLE_SEGA_CD = 9,
CHEEVOS_CONSOLE_SEGA_32X = 10,
CHEEVOS_CONSOLE_MASTER_SYSTEM = 11,
CHEEVOS_CONSOLE_PLAYSTATION = 12,
CHEEVOS_CONSOLE_ATARI_LYNX = 13,
CHEEVOS_CONSOLE_NEOGEO_POCKET = 14,
CHEEVOS_CONSOLE_GAME_GEAR = 15,
CHEEVOS_CONSOLE_GAMECUBE = 16,
CHEEVOS_CONSOLE_ATARI_JAGUAR = 17,
CHEEVOS_CONSOLE_NINTENDO_DS = 18,
CHEEVOS_CONSOLE_WII = 19,
CHEEVOS_CONSOLE_WII_U = 20,
CHEEVOS_CONSOLE_PLAYSTATION_2 = 21,
CHEEVOS_CONSOLE_XBOX = 22,
CHEEVOS_CONSOLE_SKYNET = 23,
CHEEVOS_CONSOLE_XBOX_ONE = 24,
CHEEVOS_CONSOLE_ATARI_2600 = 25,
CHEEVOS_CONSOLE_MS_DOS = 26,
CHEEVOS_CONSOLE_ARCADE = 27,
CHEEVOS_CONSOLE_VIRTUAL_BOY = 28,
CHEEVOS_CONSOLE_MSX = 29,
CHEEVOS_CONSOLE_COMMODORE_64 = 30,
CHEEVOS_CONSOLE_ZX81 = 31
} cheevos_console_t;
enum
{
CHEEVOS_DIRTY_TITLE = 1 << 0,
CHEEVOS_DIRTY_DESC = 1 << 1,
CHEEVOS_DIRTY_POINTS = 1 << 2,
CHEEVOS_DIRTY_AUTHOR = 1 << 3,
CHEEVOS_DIRTY_ID = 1 << 4,
CHEEVOS_DIRTY_BADGE = 1 << 5,
CHEEVOS_DIRTY_CONDITIONS = 1 << 6,
CHEEVOS_DIRTY_VOTES = 1 << 7,
CHEEVOS_DIRTY_DESCRIPTION = 1 << 8,
CHEEVOS_DIRTY_ALL = (1 << 9) - 1
};
enum
{
CHEEVOS_ACTIVE_SOFTCORE = 1 << 0,
CHEEVOS_ACTIVE_HARDCORE = 1 << 1
};
enum
{
CHEEVOS_FORMAT_FRAMES = 0,
CHEEVOS_FORMAT_SECS,
CHEEVOS_FORMAT_MILLIS,
CHEEVOS_FORMAT_SCORE,
CHEEVOS_FORMAT_VALUE,
CHEEVOS_FORMAT_OTHER
};
bool cheevos_load(const void *data);
void cheevos_reset_game(void);
void cheevos_populate_menu(void *data);
bool cheevos_get_description(cheevos_ctx_desc_t *desc);
bool cheevos_apply_cheats(bool *data_bool);
bool cheevos_unload(void);
bool cheevos_toggle_hardcore_mode(void);
void cheevos_test(void);
bool cheevos_set_cheats(void);
void cheevos_set_support_cheevos(bool state);
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;
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_H */
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_OLD_H
#define __RARCH_CHEEVOS_OLD_H
#ifdef HAVE_NEW_CHEEVOS
#include "../cheevos-new/cheevos.h"
#else
#include <stdint.h>
#include <stdlib.h>
#include <boolean.h>
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
/*****************************************************************************
Setup - mainly for debugging
*****************************************************************************/
/* Define this macro to get extra-verbose log for cheevos. */
#undef CHEEVOS_VERBOSE
/*****************************************************************************
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;
char *s;
size_t len;
} cheevos_ctx_desc_t;
typedef enum
{
CHEEVOS_CONSOLE_NONE = 0,
/* Don't change those, the values match the console IDs
* at retroachievements.org. */
CHEEVOS_CONSOLE_MEGA_DRIVE = 1,
CHEEVOS_CONSOLE_NINTENDO_64 = 2,
CHEEVOS_CONSOLE_SUPER_NINTENDO = 3,
CHEEVOS_CONSOLE_GAMEBOY = 4,
CHEEVOS_CONSOLE_GAMEBOY_ADVANCE = 5,
CHEEVOS_CONSOLE_GAMEBOY_COLOR = 6,
CHEEVOS_CONSOLE_NINTENDO = 7,
CHEEVOS_CONSOLE_PC_ENGINE = 8,
CHEEVOS_CONSOLE_SEGA_CD = 9,
CHEEVOS_CONSOLE_SEGA_32X = 10,
CHEEVOS_CONSOLE_MASTER_SYSTEM = 11,
CHEEVOS_CONSOLE_PLAYSTATION = 12,
CHEEVOS_CONSOLE_ATARI_LYNX = 13,
CHEEVOS_CONSOLE_NEOGEO_POCKET = 14,
CHEEVOS_CONSOLE_GAME_GEAR = 15,
CHEEVOS_CONSOLE_GAMECUBE = 16,
CHEEVOS_CONSOLE_ATARI_JAGUAR = 17,
CHEEVOS_CONSOLE_NINTENDO_DS = 18,
CHEEVOS_CONSOLE_WII = 19,
CHEEVOS_CONSOLE_WII_U = 20,
CHEEVOS_CONSOLE_PLAYSTATION_2 = 21,
CHEEVOS_CONSOLE_XBOX = 22,
CHEEVOS_CONSOLE_SKYNET = 23,
CHEEVOS_CONSOLE_XBOX_ONE = 24,
CHEEVOS_CONSOLE_ATARI_2600 = 25,
CHEEVOS_CONSOLE_MS_DOS = 26,
CHEEVOS_CONSOLE_ARCADE = 27,
CHEEVOS_CONSOLE_VIRTUAL_BOY = 28,
CHEEVOS_CONSOLE_MSX = 29,
CHEEVOS_CONSOLE_COMMODORE_64 = 30,
CHEEVOS_CONSOLE_ZX81 = 31,
CHEEVOS_CONSOLE_ATARI_7800 = 51
} cheevos_console_t;
enum
{
CHEEVOS_DIRTY_TITLE = 1 << 0,
CHEEVOS_DIRTY_DESC = 1 << 1,
CHEEVOS_DIRTY_POINTS = 1 << 2,
CHEEVOS_DIRTY_AUTHOR = 1 << 3,
CHEEVOS_DIRTY_ID = 1 << 4,
CHEEVOS_DIRTY_BADGE = 1 << 5,
CHEEVOS_DIRTY_CONDITIONS = 1 << 6,
CHEEVOS_DIRTY_VOTES = 1 << 7,
CHEEVOS_DIRTY_DESCRIPTION = 1 << 8,
CHEEVOS_DIRTY_ALL = (1 << 9) - 1
};
enum
{
CHEEVOS_ACTIVE_SOFTCORE = 1 << 0,
CHEEVOS_ACTIVE_HARDCORE = 1 << 1
};
enum
{
CHEEVOS_FORMAT_FRAMES = 0,
CHEEVOS_FORMAT_SECS,
CHEEVOS_FORMAT_MILLIS,
CHEEVOS_FORMAT_SCORE,
CHEEVOS_FORMAT_VALUE,
CHEEVOS_FORMAT_OTHER
};
bool cheevos_load(const void *data);
void cheevos_reset_game(void);
void cheevos_populate_menu(void *data);
bool cheevos_get_description(cheevos_ctx_desc_t *desc);
bool cheevos_apply_cheats(bool *data_bool);
bool cheevos_unload(void);
bool cheevos_toggle_hardcore_mode(void);
void cheevos_test(void);
bool cheevos_set_cheats(void);
void cheevos_set_support_cheevos(bool state);
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 bool cheevos_state_loaded_flag;
extern int cheats_are_enabled;
extern int cheats_were_enabled;
RETRO_END_DECLS
#endif
#endif /* __RARCH_CHEEVOS_H */
+189 -189
View File
@@ -1,189 +1,189 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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 "cond.h"
#include "var.h"
#include "../retroarch.h"
#include "../verbosity.h"
/*****************************************************************************
Parsing
*****************************************************************************/
static cheevos_cond_op_t cheevos_cond_parse_operator(const char** memaddr)
{
const char *str = *memaddr;
cheevos_cond_op_t op;
if (*str == '=' && str[1] == '=')
{
op = CHEEVOS_COND_OP_EQUALS;
str += 2;
}
else if (*str == '=')
{
op = CHEEVOS_COND_OP_EQUALS;
str++;
}
else if (*str == '!' && str[1] == '=')
{
op = CHEEVOS_COND_OP_NOT_EQUAL_TO;
str += 2;
}
else if (*str == '<' && str[1] == '=')
{
op = CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL;
str += 2;
}
else if (*str == '<')
{
op = CHEEVOS_COND_OP_LESS_THAN;
str++;
}
else if (*str == '>' && str[1] == '=')
{
op = CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL;
str += 2;
}
else if (*str == '>')
{
op = CHEEVOS_COND_OP_GREATER_THAN;
str++;
}
else
{
CHEEVOS_ERR(CHEEVOS_TAG "unknown operator %c\n.", *str);
op = CHEEVOS_COND_OP_EQUALS;
}
*memaddr = str;
return op;
}
void cheevos_cond_parse(cheevos_cond_t* cond, const char** memaddr)
{
const char* str = *memaddr;
cond->type = CHEEVOS_COND_TYPE_STANDARD;
if (*str != 0 && str[1] == ':')
{
int skip = 2;
switch (*str)
{
case 'R':
cond->type = CHEEVOS_COND_TYPE_RESET_IF;
break;
case 'P':
cond->type = CHEEVOS_COND_TYPE_PAUSE_IF;
break;
case 'A':
cond->type = CHEEVOS_COND_TYPE_ADD_SOURCE;
break;
case 'B':
cond->type = CHEEVOS_COND_TYPE_SUB_SOURCE;
break;
case 'C':
cond->type = CHEEVOS_COND_TYPE_ADD_HITS;
break;
default:
skip = 0;
break;
}
str += skip;
}
cheevos_var_parse(&cond->source, &str);
cond->op = cheevos_cond_parse_operator(&str);
cheevos_var_parse(&cond->target, &str);
cond->curr_hits = 0;
if (*str == '(' || *str == '.')
{
char* end;
cond->req_hits = (unsigned)strtol(str + 1, &end, 10);
str = end + (*end == ')' || *end == '.');
}
else
cond->req_hits = 0;
*memaddr = str;
}
unsigned cheevos_cond_count_in_set(const char* memaddr, unsigned which)
{
cheevos_cond_t dummy;
unsigned index = 0;
unsigned count = 0;
for (;;)
{
for (;;)
{
cheevos_cond_parse(&dummy, &memaddr);
if (index == which)
count++;
if (*memaddr != '_')
break;
memaddr++;
}
index++;
if (*memaddr != 'S')
break;
memaddr++;
}
return count;
}
void cheevos_cond_parse_in_set(cheevos_cond_t* cond, const char* memaddr, unsigned which)
{
cheevos_cond_t dummy;
unsigned index = 0;
for (;;)
{
for (;;)
{
if (index == which)
{
cheevos_cond_parse(cond, &memaddr);
cond++;
}
else
cheevos_cond_parse(&dummy, &memaddr);
if (*memaddr != '_')
break;
memaddr++;
}
index++;
if (*memaddr != 'S')
break;
memaddr++;
}
}
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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 "cond.h"
#include "var.h"
#include "../retroarch.h"
#include "../verbosity.h"
/*****************************************************************************
Parsing
*****************************************************************************/
static cheevos_cond_op_t cheevos_cond_parse_operator(const char** memaddr)
{
const char *str = *memaddr;
cheevos_cond_op_t op;
if (*str == '=' && str[1] == '=')
{
op = CHEEVOS_COND_OP_EQUALS;
str += 2;
}
else if (*str == '=')
{
op = CHEEVOS_COND_OP_EQUALS;
str++;
}
else if (*str == '!' && str[1] == '=')
{
op = CHEEVOS_COND_OP_NOT_EQUAL_TO;
str += 2;
}
else if (*str == '<' && str[1] == '=')
{
op = CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL;
str += 2;
}
else if (*str == '<')
{
op = CHEEVOS_COND_OP_LESS_THAN;
str++;
}
else if (*str == '>' && str[1] == '=')
{
op = CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL;
str += 2;
}
else if (*str == '>')
{
op = CHEEVOS_COND_OP_GREATER_THAN;
str++;
}
else
{
CHEEVOS_ERR(CHEEVOS_TAG "unknown operator %c\n.", *str);
op = CHEEVOS_COND_OP_EQUALS;
}
*memaddr = str;
return op;
}
void cheevos_cond_parse(cheevos_cond_t* cond, const char** memaddr)
{
const char* str = *memaddr;
cond->type = CHEEVOS_COND_TYPE_STANDARD;
if (*str != 0 && str[1] == ':')
{
int skip = 2;
switch (*str)
{
case 'R':
cond->type = CHEEVOS_COND_TYPE_RESET_IF;
break;
case 'P':
cond->type = CHEEVOS_COND_TYPE_PAUSE_IF;
break;
case 'A':
cond->type = CHEEVOS_COND_TYPE_ADD_SOURCE;
break;
case 'B':
cond->type = CHEEVOS_COND_TYPE_SUB_SOURCE;
break;
case 'C':
cond->type = CHEEVOS_COND_TYPE_ADD_HITS;
break;
default:
skip = 0;
break;
}
str += skip;
}
cheevos_var_parse(&cond->source, &str);
cond->op = cheevos_cond_parse_operator(&str);
cheevos_var_parse(&cond->target, &str);
cond->curr_hits = 0;
if (*str == '(' || *str == '.')
{
char* end;
cond->req_hits = (unsigned)strtol(str + 1, &end, 10);
str = end + (*end == ')' || *end == '.');
}
else
cond->req_hits = 0;
*memaddr = str;
}
unsigned cheevos_cond_count_in_set(const char* memaddr, unsigned which)
{
cheevos_cond_t dummy;
unsigned index = 0;
unsigned count = 0;
for (;;)
{
for (;;)
{
cheevos_cond_parse(&dummy, &memaddr);
if (index == which)
count++;
if (*memaddr != '_')
break;
memaddr++;
}
index++;
if (*memaddr != 'S')
break;
memaddr++;
}
return count;
}
void cheevos_cond_parse_in_set(cheevos_cond_t* cond, const char* memaddr, unsigned which)
{
cheevos_cond_t dummy;
unsigned index = 0;
for (;;)
{
for (;;)
{
if (index == which)
{
cheevos_cond_parse(cond, &memaddr);
cond++;
}
else
cheevos_cond_parse(&dummy, &memaddr);
if (*memaddr != '_')
break;
memaddr++;
}
index++;
if (*memaddr != 'S')
break;
memaddr++;
}
}
+63 -63
View File
@@ -1,63 +1,63 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_COND_H
#define __RARCH_CHEEVOS_COND_H
#include "var.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef enum
{
CHEEVOS_COND_TYPE_STANDARD,
CHEEVOS_COND_TYPE_PAUSE_IF,
CHEEVOS_COND_TYPE_RESET_IF,
CHEEVOS_COND_TYPE_ADD_SOURCE,
CHEEVOS_COND_TYPE_SUB_SOURCE,
CHEEVOS_COND_TYPE_ADD_HITS
} cheevos_cond_type_t;
typedef enum
{
CHEEVOS_COND_OP_EQUALS,
CHEEVOS_COND_OP_LESS_THAN,
CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL,
CHEEVOS_COND_OP_GREATER_THAN,
CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL,
CHEEVOS_COND_OP_NOT_EQUAL_TO
} cheevos_cond_op_t;
typedef struct
{
cheevos_cond_type_t type;
unsigned req_hits;
unsigned curr_hits;
char pause;
cheevos_var_t source;
cheevos_cond_op_t op;
cheevos_var_t target;
} cheevos_cond_t;
void cheevos_cond_parse(cheevos_cond_t* cond, const char** memaddr);
unsigned cheevos_cond_count_in_set(const char* memaddr, unsigned which);
void cheevos_cond_parse_in_set(cheevos_cond_t* cond, const char* memaddr, unsigned which);
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_COND_H */
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_COND_H
#define __RARCH_CHEEVOS_COND_H
#include "var.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef enum
{
CHEEVOS_COND_TYPE_STANDARD,
CHEEVOS_COND_TYPE_PAUSE_IF,
CHEEVOS_COND_TYPE_RESET_IF,
CHEEVOS_COND_TYPE_ADD_SOURCE,
CHEEVOS_COND_TYPE_SUB_SOURCE,
CHEEVOS_COND_TYPE_ADD_HITS
} cheevos_cond_type_t;
typedef enum
{
CHEEVOS_COND_OP_EQUALS,
CHEEVOS_COND_OP_LESS_THAN,
CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL,
CHEEVOS_COND_OP_GREATER_THAN,
CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL,
CHEEVOS_COND_OP_NOT_EQUAL_TO
} cheevos_cond_op_t;
typedef struct
{
cheevos_cond_type_t type;
unsigned req_hits;
unsigned curr_hits;
char pause;
cheevos_var_t source;
cheevos_cond_op_t op;
cheevos_var_t target;
} cheevos_cond_t;
void cheevos_cond_parse(cheevos_cond_t* cond, const char** memaddr);
unsigned cheevos_cond_count_in_set(const char* memaddr, unsigned which);
void cheevos_cond_parse_in_set(cheevos_cond_t* cond, const char* memaddr, unsigned which);
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_COND_H */
+75 -75
View File
@@ -1,75 +1,75 @@
#ifndef CORO_H
#define CORO_H
/*
Released under the CC0: https://creativecommons.org/publicdomain/zero/1.0/
*/
/* Use at the beginning of the coroutine, you must have declared a variable coro_t* coro */
#define CORO_ENTER() \
{ \
CORO_again: ; \
switch ( coro->step ) { \
case CORO_BEGIN: ;
/* Use to define labels which are targets to GOTO and GOSUB */
#define CORO_SUB( x ) \
case x: ;
/* Use at the end of the coroutine */
#define CORO_LEAVE() \
} } \
do { return 0; } while ( 0 )
/* Go to the x label */
#define CORO_GOTO( x ) \
do { \
coro->step = ( x ); \
goto CORO_again; \
} while ( 0 )
/* Go to a subroutine, execution continues until the subroutine returns via RET */
#define CORO_GOSUB( x ) \
do { \
coro->stack[ coro->sp++ ] = __LINE__; \
coro->step = ( x ); \
goto CORO_again; \
case __LINE__: ; \
} while ( 0 )
/* Returns from a subroutine */
#define CORO_RET() \
do { \
coro->step = coro->stack[ --coro->sp ]; \
goto CORO_again; \
} while ( 0 )
/* Yields to the caller, execution continues from this point when the coroutine is resumed */
#define CORO_YIELD() \
do { \
coro->step = __LINE__; \
return 1; \
case __LINE__: ; \
} while ( 0 )
/* The coroutine entry point, never use 0 as a label */
#define CORO_BEGIN 0
/* Sets up the coroutine */
#define CORO_SETUP() \
do { \
coro->step = CORO_BEGIN; \
coro->sp = 0; \
} while ( 0 )
#define CORO_STOP() \
do { \
return 0; \
} while ( 0 )
/* Add this macro to your coro_t structure containing the variables for the coroutine */
#define CORO_FIELDS \
int step, sp; \
int stack[ 8 ];
#endif /* CORO_H */
#ifndef CORO_H
#define CORO_H
/*
Released under the CC0: https://creativecommons.org/publicdomain/zero/1.0/
*/
/* Use at the beginning of the coroutine, you must have declared a variable coro_t* coro */
#define CORO_ENTER() \
{ \
CORO_again: ; \
switch ( coro->step ) { \
case CORO_BEGIN: ;
/* Use to define labels which are targets to GOTO and GOSUB */
#define CORO_SUB( x ) \
case x: ;
/* Use at the end of the coroutine */
#define CORO_LEAVE() \
} } \
do { return 0; } while ( 0 )
/* Go to the x label */
#define CORO_GOTO( x ) \
do { \
coro->step = ( x ); \
goto CORO_again; \
} while ( 0 )
/* Go to a subroutine, execution continues until the subroutine returns via RET */
#define CORO_GOSUB( x ) \
do { \
coro->stack[ coro->sp++ ] = __LINE__; \
coro->step = ( x ); \
goto CORO_again; \
case __LINE__: ; \
} while ( 0 )
/* Returns from a subroutine */
#define CORO_RET() \
do { \
coro->step = coro->stack[ --coro->sp ]; \
goto CORO_again; \
} while ( 0 )
/* Yields to the caller, execution continues from this point when the coroutine is resumed */
#define CORO_YIELD() \
do { \
coro->step = __LINE__; \
return 1; \
case __LINE__: ; \
} while ( 0 )
/* The coroutine entry point, never use 0 as a label */
#define CORO_BEGIN 0
/* Sets up the coroutine */
#define CORO_SETUP() \
do { \
coro->step = CORO_BEGIN; \
coro->sp = 0; \
} while ( 0 )
#define CORO_STOP() \
do { \
return 0; \
} while ( 0 )
/* Add this macro to your coro_t structure containing the variables for the coroutine */
#define CORO_FIELDS \
int step, sp; \
int stack[ 8 ];
#endif /* CORO_H */
+415 -416
View File
@@ -1,416 +1,415 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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 <ctype.h>
#include <stdint.h>
#include <libretro.h>
#include "var.h"
#include "../retroarch.h"
#include "../core.h"
#include "../verbosity.h"
/*****************************************************************************
Parsing
*****************************************************************************/
static cheevos_var_size_t cheevos_var_parse_prefix(const char** memaddr)
{
/* Careful not to use ABCDEF here, this denotes part of an actual variable! */
const char* str = *memaddr;
cheevos_var_size_t size;
switch (toupper((unsigned char)*str++))
{
case 'M':
size = CHEEVOS_VAR_SIZE_BIT_0;
break;
case 'N':
size = CHEEVOS_VAR_SIZE_BIT_1;
break;
case 'O':
size = CHEEVOS_VAR_SIZE_BIT_2;
break;
case 'P':
size = CHEEVOS_VAR_SIZE_BIT_3;
break;
case 'Q':
size = CHEEVOS_VAR_SIZE_BIT_4;
break;
case 'R':
size = CHEEVOS_VAR_SIZE_BIT_5;
break;
case 'S':
size = CHEEVOS_VAR_SIZE_BIT_6;
break;
case 'T':
size = CHEEVOS_VAR_SIZE_BIT_7;
break;
case 'L':
size = CHEEVOS_VAR_SIZE_NIBBLE_LOWER;
break;
case 'U':
size = CHEEVOS_VAR_SIZE_NIBBLE_UPPER;
break;
case 'H':
size = CHEEVOS_VAR_SIZE_EIGHT_BITS;
break;
case 'X':
size = CHEEVOS_VAR_SIZE_THIRTYTWO_BITS;
break;
default:
str--;
/* fall through */
case ' ':
size = CHEEVOS_VAR_SIZE_SIXTEEN_BITS;
break;
}
*memaddr = str;
return size;
}
static size_t cheevos_var_reduce(size_t addr, size_t mask)
{
while (mask)
{
size_t tmp = (mask - 1) & ~mask;
addr = (addr & tmp) | ((addr >> 1) & ~tmp);
mask = (mask & (mask - 1)) >> 1;
}
return addr;
}
static size_t cheevos_var_highest_bit(size_t n)
{
n |= n >> 1;
n |= n >> 2;
n |= n >> 4;
n |= n >> 8;
n |= n >> 16;
return n ^ (n >> 1);
}
void cheevos_var_parse(cheevos_var_t* var, const char** memaddr)
{
char *end = NULL;
const char *str = *memaddr;
unsigned base = 16;
var->is_bcd = false;
if (toupper((unsigned char)*str) == 'D' && str[1] == '0' && toupper((unsigned char)str[2]) == 'X')
{
/* d0x + 4 hex digits */
str += 3;
var->type = CHEEVOS_VAR_TYPE_DELTA_MEM;
}
else if (toupper((unsigned char)*str) == 'B' && str[1] == '0' && toupper((unsigned char)str[2]) == 'X')
{
/* b0x (binary-coded decimal) */
str += 3;
var->is_bcd = true;
var->type = CHEEVOS_VAR_TYPE_ADDRESS;
}
else if (*str == '0' && toupper((unsigned char)str[1]) == 'X')
{
/* 0x + 4 hex digits */
str += 2;
var->type = CHEEVOS_VAR_TYPE_ADDRESS;
}
else
{
var->type = CHEEVOS_VAR_TYPE_VALUE_COMP;
if (toupper((unsigned char)*str) == 'H')
str++;
else
{
if (toupper((unsigned char)*str) == 'V')
str++;
base = 10;
}
}
if (var->type != CHEEVOS_VAR_TYPE_VALUE_COMP)
{
var->size = cheevos_var_parse_prefix(&str);
}
var->value = (unsigned)strtol(str, &end, base);
*memaddr = end;
}
void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console)
{
rarch_system_info_t *system = runloop_get_system_info();
var->bank_id = -1;
if (console == CHEEVOS_CONSOLE_NINTENDO)
{
if (var->value >= 0x0800 && var->value < 0x2000)
{
CHEEVOS_LOG(CHEEVOS_TAG "NES memory address in mirrorred RAM %X, adjusted to %X\n", var->value, var->value & 0x07ff);
var->value &= 0x07ff;
}
}
else if (console == CHEEVOS_CONSOLE_GAMEBOY_COLOR)
{
if (var->value >= 0xe000 && var->value <= 0xfdff)
{
CHEEVOS_LOG(CHEEVOS_TAG "GBC memory address in echo RAM %X, adjusted to %X\n", var->value, var->value - 0x2000);
var->value -= 0x2000;
}
}
if (system->mmaps.num_descriptors != 0)
{
const rarch_memory_descriptor_t *desc = NULL;
const rarch_memory_descriptor_t *end = NULL;
/* Patch the address to correctly map it to the mmaps */
if (console == CHEEVOS_CONSOLE_GAMEBOY_ADVANCE)
{
if (var->value < 0x8000) /* Internal RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", var->value, var->value + 0x3000000);
var->value += 0x3000000;
}
else /* Work RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", var->value, var->value + 0x2000000 - 0x8000);
var->value += 0x2000000 - 0x8000;
}
}
else if (console == CHEEVOS_CONSOLE_PC_ENGINE)
{
CHEEVOS_LOG(CHEEVOS_TAG "PCE memory address %X adjusted to %X\n", var->value, var->value + 0x1f0000);
var->value += 0x1f0000;
}
else if (console == CHEEVOS_CONSOLE_SUPER_NINTENDO)
{
if (var->value < 0x020000) /* Work RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", var->value, var->value + 0x7e0000);
var->value += 0x7e0000;
}
else /* Save RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", var->value, var->value + 0x006000 - 0x020000);
var->value += 0x006000 - 0x020000;
}
}
desc = system->mmaps.descriptors;
end = desc + system->mmaps.num_descriptors;
for (; desc < end; desc++)
{
if (((desc->core.start ^ var->value) & desc->core.select) == 0)
{
unsigned addr = var->value;
var->bank_id = (int)(desc - system->mmaps.descriptors);
var->value = (unsigned)cheevos_var_reduce(
(addr - desc->core.start) & desc->disconnect_mask,
desc->core.disconnect);
if (var->value >= desc->core.len)
var->value -= cheevos_var_highest_bit(var->value);
var->value += desc->core.offset;
CHEEVOS_LOG(CHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", addr, var->bank_id + 1, var->value);
break;
}
}
}
else
{
unsigned i;
for (i = 0; i < 4; i++)
{
retro_ctx_memory_info_t meminfo;
switch (i)
{
case 0:
meminfo.id = RETRO_MEMORY_SYSTEM_RAM;
break;
case 1:
meminfo.id = RETRO_MEMORY_SAVE_RAM;
break;
case 2:
meminfo.id = RETRO_MEMORY_VIDEO_RAM;
break;
case 3:
meminfo.id = RETRO_MEMORY_RTC;
break;
}
core_get_memory(&meminfo);
if (var->value < meminfo.size)
{
var->bank_id = i;
break;
}
/* HACK subtract the correct amount of bytes to reach the save RAM */
if (i == 0 && console == CHEEVOS_CONSOLE_NINTENDO)
var->value -= 0x6000;
else
var->value -= meminfo.size;
}
}
}
/*****************************************************************************
Testing
*****************************************************************************/
uint8_t* cheevos_var_get_memory(const cheevos_var_t* var)
{
uint8_t* memory = NULL;
if (var->bank_id >= 0)
{
rarch_system_info_t* system = runloop_get_system_info();
if (system->mmaps.num_descriptors != 0)
memory = (uint8_t*)system->mmaps.descriptors[var->bank_id].core.ptr;
else
{
retro_ctx_memory_info_t meminfo = {NULL, 0, 0};
switch (var->bank_id)
{
case 0:
meminfo.id = RETRO_MEMORY_SYSTEM_RAM;
break;
case 1:
meminfo.id = RETRO_MEMORY_SAVE_RAM;
break;
case 2:
meminfo.id = RETRO_MEMORY_VIDEO_RAM;
break;
case 3:
meminfo.id = RETRO_MEMORY_RTC;
break;
default:
CHEEVOS_ERR(CHEEVOS_TAG "invalid bank id: %s\n", var->bank_id);
break;
}
core_get_memory(&meminfo);
memory = (uint8_t*)meminfo.data;
}
if (memory)
memory += var->value;
}
return memory;
}
unsigned cheevos_var_get_value(cheevos_var_t* var)
{
const uint8_t* memory = NULL;
unsigned value = 0;
switch (var->type)
{
case CHEEVOS_VAR_TYPE_VALUE_COMP:
value = var->value;
break;
case CHEEVOS_VAR_TYPE_ADDRESS:
case CHEEVOS_VAR_TYPE_DELTA_MEM:
memory = cheevos_var_get_memory(var);
if (memory)
{
value = memory[0];
switch (var->size)
{
case CHEEVOS_VAR_SIZE_BIT_0:
value &= 1;
break;
case CHEEVOS_VAR_SIZE_BIT_1:
value = (value >> 1) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_2:
value = (value >> 2) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_3:
value = (value >> 3) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_4:
value = (value >> 4) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_5:
value = (value >> 5) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_6:
value = (value >> 6) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_7:
value = (value >> 7) & 1;
break;
case CHEEVOS_VAR_SIZE_NIBBLE_LOWER:
value &= 0x0f;
break;
case CHEEVOS_VAR_SIZE_NIBBLE_UPPER:
value = (value >> 4) & 0x0f;
break;
case CHEEVOS_VAR_SIZE_EIGHT_BITS:
break;
case CHEEVOS_VAR_SIZE_SIXTEEN_BITS:
value |= memory[1] << 8;
break;
case CHEEVOS_VAR_SIZE_THIRTYTWO_BITS:
value |= memory[1] << 8;
value |= memory[2] << 16;
value |= memory[3] << 24;
break;
}
}
if (var->type == CHEEVOS_VAR_TYPE_DELTA_MEM)
{
unsigned previous = var->previous;
var->previous = value;
value = previous;
}
break;
case CHEEVOS_VAR_TYPE_DYNAMIC_VAR:
/* We shouldn't get here... */
break;
}
if(var->is_bcd)
return (((value >> 4) & 0xf) * 10) + (value & 0xf);
else
return value;
}
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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 <ctype.h>
#include <stdint.h>
#include <libretro.h>
#include "var.h"
#include "../retroarch.h"
#include "../core.h"
#include "../verbosity.h"
/*****************************************************************************
Parsing
*****************************************************************************/
static cheevos_var_size_t cheevos_var_parse_prefix(const char** memaddr)
{
/* Careful not to use ABCDEF here, this denotes part of an actual variable! */
const char* str = *memaddr;
cheevos_var_size_t size;
switch (toupper((unsigned char)*str++))
{
case 'M':
size = CHEEVOS_VAR_SIZE_BIT_0;
break;
case 'N':
size = CHEEVOS_VAR_SIZE_BIT_1;
break;
case 'O':
size = CHEEVOS_VAR_SIZE_BIT_2;
break;
case 'P':
size = CHEEVOS_VAR_SIZE_BIT_3;
break;
case 'Q':
size = CHEEVOS_VAR_SIZE_BIT_4;
break;
case 'R':
size = CHEEVOS_VAR_SIZE_BIT_5;
break;
case 'S':
size = CHEEVOS_VAR_SIZE_BIT_6;
break;
case 'T':
size = CHEEVOS_VAR_SIZE_BIT_7;
break;
case 'L':
size = CHEEVOS_VAR_SIZE_NIBBLE_LOWER;
break;
case 'U':
size = CHEEVOS_VAR_SIZE_NIBBLE_UPPER;
break;
case 'H':
size = CHEEVOS_VAR_SIZE_EIGHT_BITS;
break;
case 'X':
size = CHEEVOS_VAR_SIZE_THIRTYTWO_BITS;
break;
default:
str--;
/* fall through */
case ' ':
size = CHEEVOS_VAR_SIZE_SIXTEEN_BITS;
break;
}
*memaddr = str;
return size;
}
static size_t cheevos_var_reduce(size_t addr, size_t mask)
{
while (mask)
{
size_t tmp = (mask - 1) & ~mask;
addr = (addr & tmp) | ((addr >> 1) & ~tmp);
mask = (mask & (mask - 1)) >> 1;
}
return addr;
}
static size_t cheevos_var_highest_bit(size_t n)
{
n |= n >> 1;
n |= n >> 2;
n |= n >> 4;
n |= n >> 8;
n |= n >> 16;
return n ^ (n >> 1);
}
void cheevos_var_parse(cheevos_var_t* var, const char** memaddr)
{
char *end = NULL;
const char *str = *memaddr;
unsigned base = 16;
var->is_bcd = false;
if (toupper((unsigned char)*str) == 'D' && str[1] == '0' && toupper((unsigned char)str[2]) == 'X')
{
/* d0x + 4 hex digits */
str += 3;
var->type = CHEEVOS_VAR_TYPE_DELTA_MEM;
}
else if (toupper((unsigned char)*str) == 'B' && str[1] == '0' && toupper((unsigned char)str[2]) == 'X')
{
/* b0x (binary-coded decimal) */
str += 3;
var->is_bcd = true;
var->type = CHEEVOS_VAR_TYPE_ADDRESS;
}
else if (*str == '0' && toupper((unsigned char)str[1]) == 'X')
{
/* 0x + 4 hex digits */
str += 2;
var->type = CHEEVOS_VAR_TYPE_ADDRESS;
}
else
{
var->type = CHEEVOS_VAR_TYPE_VALUE_COMP;
if (toupper((unsigned char)*str) == 'H')
str++;
else
{
if (toupper((unsigned char)*str) == 'V')
str++;
base = 10;
}
}
if (var->type != CHEEVOS_VAR_TYPE_VALUE_COMP)
{
var->size = cheevos_var_parse_prefix(&str);
}
var->value = (unsigned)strtol(str, &end, base);
*memaddr = end;
}
void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console)
{
rarch_system_info_t *system = runloop_get_system_info();
var->bank_id = -1;
if (console == CHEEVOS_CONSOLE_NINTENDO)
{
if (var->value >= 0x0800 && var->value < 0x2000)
{
CHEEVOS_LOG(CHEEVOS_TAG "NES memory address in mirrorred RAM %X, adjusted to %X\n", var->value, var->value & 0x07ff);
var->value &= 0x07ff;
}
}
else if (console == CHEEVOS_CONSOLE_GAMEBOY_COLOR)
{
if (var->value >= 0xe000 && var->value <= 0xfdff)
{
CHEEVOS_LOG(CHEEVOS_TAG "GBC memory address in echo RAM %X, adjusted to %X\n", var->value, var->value - 0x2000);
var->value -= 0x2000;
}
}
if (system->mmaps.num_descriptors != 0)
{
const rarch_memory_descriptor_t *desc = NULL;
const rarch_memory_descriptor_t *end = NULL;
/* Patch the address to correctly map it to the mmaps */
if (console == CHEEVOS_CONSOLE_GAMEBOY_ADVANCE)
{
if (var->value < 0x8000) /* Internal RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", var->value, var->value + 0x3000000);
var->value += 0x3000000;
}
else /* Work RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "GBA memory address %X adjusted to %X\n", var->value, var->value + 0x2000000 - 0x8000);
var->value += 0x2000000 - 0x8000;
}
}
else if (console == CHEEVOS_CONSOLE_PC_ENGINE)
{
CHEEVOS_LOG(CHEEVOS_TAG "PCE memory address %X adjusted to %X\n", var->value, var->value + 0x1f0000);
var->value += 0x1f0000;
}
else if (console == CHEEVOS_CONSOLE_SUPER_NINTENDO)
{
if (var->value < 0x020000) /* Work RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", var->value, var->value + 0x7e0000);
var->value += 0x7e0000;
}
else /* Save RAM */
{
CHEEVOS_LOG(CHEEVOS_TAG "SNES memory address %X adjusted to %X\n", var->value, var->value + 0x006000 - 0x020000);
var->value += 0x006000 - 0x020000;
}
}
desc = system->mmaps.descriptors;
end = desc + system->mmaps.num_descriptors;
for (; desc < end; desc++)
{
if (((desc->core.start ^ var->value) & desc->core.select) == 0)
{
unsigned addr = var->value;
var->bank_id = (int)(desc - system->mmaps.descriptors);
var->value = (unsigned)cheevos_var_reduce(
(addr - desc->core.start) & desc->disconnect_mask,
desc->core.disconnect);
if (var->value >= desc->core.len)
var->value -= cheevos_var_highest_bit(var->value);
var->value += desc->core.offset;
CHEEVOS_LOG(CHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", addr, var->bank_id + 1, var->value);
break;
}
}
}
else
{
unsigned i;
for (i = 0; i < 4; i++)
{
retro_ctx_memory_info_t meminfo;
switch (i)
{
case 0:
meminfo.id = RETRO_MEMORY_SYSTEM_RAM;
break;
case 1:
meminfo.id = RETRO_MEMORY_SAVE_RAM;
break;
case 2:
meminfo.id = RETRO_MEMORY_VIDEO_RAM;
break;
case 3:
meminfo.id = RETRO_MEMORY_RTC;
break;
}
core_get_memory(&meminfo);
if (var->value < meminfo.size)
{
var->bank_id = i;
break;
}
/* HACK subtract the correct amount of bytes to reach the save RAM */
if (i == 0 && console == CHEEVOS_CONSOLE_NINTENDO)
var->value -= 0x6000;
else
var->value -= meminfo.size;
}
}
}
/*****************************************************************************
Testing
*****************************************************************************/
uint8_t* cheevos_var_get_memory(const cheevos_var_t* var)
{
uint8_t* memory = NULL;
if (var->bank_id >= 0)
{
rarch_system_info_t* system = runloop_get_system_info();
if (system->mmaps.num_descriptors != 0)
memory = (uint8_t*)system->mmaps.descriptors[var->bank_id].core.ptr;
else
{
retro_ctx_memory_info_t meminfo = {NULL, 0, 0};
switch (var->bank_id)
{
case 0:
meminfo.id = RETRO_MEMORY_SYSTEM_RAM;
break;
case 1:
meminfo.id = RETRO_MEMORY_SAVE_RAM;
break;
case 2:
meminfo.id = RETRO_MEMORY_VIDEO_RAM;
break;
case 3:
meminfo.id = RETRO_MEMORY_RTC;
break;
default:
CHEEVOS_ERR(CHEEVOS_TAG "invalid bank id: %s\n", var->bank_id);
break;
}
core_get_memory(&meminfo);
memory = (uint8_t*)meminfo.data;
}
if (memory)
memory += var->value;
}
return memory;
}
unsigned cheevos_var_get_value(cheevos_var_t* var)
{
const uint8_t* memory = NULL;
unsigned value = 0;
switch (var->type)
{
case CHEEVOS_VAR_TYPE_VALUE_COMP:
value = var->value;
break;
case CHEEVOS_VAR_TYPE_ADDRESS:
case CHEEVOS_VAR_TYPE_DELTA_MEM:
memory = cheevos_var_get_memory(var);
if (memory)
{
value = memory[0];
switch (var->size)
{
case CHEEVOS_VAR_SIZE_BIT_0:
value &= 1;
break;
case CHEEVOS_VAR_SIZE_BIT_1:
value = (value >> 1) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_2:
value = (value >> 2) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_3:
value = (value >> 3) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_4:
value = (value >> 4) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_5:
value = (value >> 5) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_6:
value = (value >> 6) & 1;
break;
case CHEEVOS_VAR_SIZE_BIT_7:
value = (value >> 7) & 1;
break;
case CHEEVOS_VAR_SIZE_NIBBLE_LOWER:
value &= 0x0f;
break;
case CHEEVOS_VAR_SIZE_NIBBLE_UPPER:
value = (value >> 4) & 0x0f;
break;
case CHEEVOS_VAR_SIZE_EIGHT_BITS:
break;
case CHEEVOS_VAR_SIZE_SIXTEEN_BITS:
value |= memory[1] << 8;
break;
case CHEEVOS_VAR_SIZE_THIRTYTWO_BITS:
value |= memory[1] << 8;
value |= memory[2] << 16;
value |= memory[3] << 24;
break;
}
}
if (var->type == CHEEVOS_VAR_TYPE_DELTA_MEM)
{
unsigned previous = var->previous;
var->previous = value;
value = previous;
}
break;
case CHEEVOS_VAR_TYPE_DYNAMIC_VAR:
/* We shouldn't get here... */
break;
}
if(var->is_bcd)
return (((value >> 4) & 0xf) * 10) + (value & 0xf);
return value;
}
+78 -78
View File
@@ -1,78 +1,78 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2017 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_VAR_H
#define __RARCH_CHEEVOS_VAR_H
#include <stdint.h>
#include "cheevos.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef enum
{
CHEEVOS_VAR_SIZE_BIT_0 = 0,
CHEEVOS_VAR_SIZE_BIT_1,
CHEEVOS_VAR_SIZE_BIT_2,
CHEEVOS_VAR_SIZE_BIT_3,
CHEEVOS_VAR_SIZE_BIT_4,
CHEEVOS_VAR_SIZE_BIT_5,
CHEEVOS_VAR_SIZE_BIT_6,
CHEEVOS_VAR_SIZE_BIT_7,
CHEEVOS_VAR_SIZE_NIBBLE_LOWER,
CHEEVOS_VAR_SIZE_NIBBLE_UPPER,
/* Byte, */
CHEEVOS_VAR_SIZE_EIGHT_BITS, /* =Byte, */
CHEEVOS_VAR_SIZE_SIXTEEN_BITS,
CHEEVOS_VAR_SIZE_THIRTYTWO_BITS
} cheevos_var_size_t;
typedef enum
{
/* compare to the value of a live address in RAM */
CHEEVOS_VAR_TYPE_ADDRESS = 0,
/* a number. assume 32 bit */
CHEEVOS_VAR_TYPE_VALUE_COMP,
/* the value last known at this address. */
CHEEVOS_VAR_TYPE_DELTA_MEM,
/* a custom user-set variable */
CHEEVOS_VAR_TYPE_DYNAMIC_VAR
} cheevos_var_type_t;
typedef struct
{
cheevos_var_size_t size;
cheevos_var_type_t type;
int bank_id;
bool is_bcd;
unsigned value;
unsigned previous;
} cheevos_var_t;
void cheevos_var_parse(cheevos_var_t* var, const char** memaddr);
void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console);
uint8_t* cheevos_var_get_memory(const cheevos_var_t* var);
unsigned cheevos_var_get_value(cheevos_var_t* var);
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_VAR_H */
/* RetroArch - A frontend for libretro.
* Copyright (C) 2015-2018 - Andre Leiradella
*
* 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/>.
*/
#ifndef __RARCH_CHEEVOS_VAR_H
#define __RARCH_CHEEVOS_VAR_H
#include <stdint.h>
#include "cheevos.h"
#include <retro_common_api.h>
RETRO_BEGIN_DECLS
typedef enum
{
CHEEVOS_VAR_SIZE_BIT_0 = 0,
CHEEVOS_VAR_SIZE_BIT_1,
CHEEVOS_VAR_SIZE_BIT_2,
CHEEVOS_VAR_SIZE_BIT_3,
CHEEVOS_VAR_SIZE_BIT_4,
CHEEVOS_VAR_SIZE_BIT_5,
CHEEVOS_VAR_SIZE_BIT_6,
CHEEVOS_VAR_SIZE_BIT_7,
CHEEVOS_VAR_SIZE_NIBBLE_LOWER,
CHEEVOS_VAR_SIZE_NIBBLE_UPPER,
/* Byte, */
CHEEVOS_VAR_SIZE_EIGHT_BITS, /* =Byte, */
CHEEVOS_VAR_SIZE_SIXTEEN_BITS,
CHEEVOS_VAR_SIZE_THIRTYTWO_BITS
} cheevos_var_size_t;
typedef enum
{
/* compare to the value of a live address in RAM */
CHEEVOS_VAR_TYPE_ADDRESS = 0,
/* a number. assume 32 bit */
CHEEVOS_VAR_TYPE_VALUE_COMP,
/* the value last known at this address. */
CHEEVOS_VAR_TYPE_DELTA_MEM,
/* a custom user-set variable */
CHEEVOS_VAR_TYPE_DYNAMIC_VAR
} cheevos_var_type_t;
typedef struct
{
cheevos_var_size_t size;
cheevos_var_type_t type;
int bank_id;
bool is_bcd;
unsigned value;
unsigned previous;
} cheevos_var_t;
void cheevos_var_parse(cheevos_var_t* var, const char** memaddr);
void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console);
uint8_t* cheevos_var_get_memory(const cheevos_var_t* var);
unsigned cheevos_var_get_value(cheevos_var_t* var);
RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_VAR_H */
+179 -158
View File
@@ -41,8 +41,12 @@
#ifdef HAVE_CHEEVOS
#include "cheevos/cheevos.h"
#ifdef HAVE_NEW_CHEEVOS
#include "cheevos-new/fixup.h"
#else
#include "cheevos/var.h"
#endif
#endif
#ifdef HAVE_DISCORD
#include "discord/discord.h"
@@ -85,6 +89,7 @@
#include "managers/cheat_manager.h"
#include "managers/state_manager.h"
#include "ui/ui_companion_driver.h"
#include "tasks/task_content.h"
#include "tasks/tasks_internal.h"
#include "list_special.h"
@@ -98,6 +103,8 @@
#define DEFAULT_NETWORK_CMD_PORT 55355
#define STDIN_BUF_SIZE 4096
extern bool discord_is_inited;
enum cmd_source_t
{
CMD_NONE = 0,
@@ -111,12 +118,14 @@ struct cmd_map
unsigned id;
};
#ifdef HAVE_COMMAND
struct cmd_action_map
{
const char *str;
bool (*action)(const char *arg);
const char *arg_desc;
};
#endif
struct command
{
@@ -131,9 +140,50 @@ struct command
#endif
};
static bool command_version(const char *arg);
#if defined(HAVE_COMMAND)
static enum cmd_source_t lastcmd_source;
#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING)
static int lastcmd_net_fd;
static struct sockaddr_storage lastcmd_net_source;
static socklen_t lastcmd_net_source_len;
#endif
#if defined(HAVE_COMMAND) && defined(HAVE_CHEEVOS)
#if defined(HAVE_CHEEVOS) && (defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING))
static void command_reply(const char * data, size_t len)
{
switch (lastcmd_source)
{
case CMD_STDIN:
#ifdef HAVE_STDIN_CMD
fwrite(data, 1,len, stdout);
#endif
break;
case CMD_NETWORK:
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORK_CMD)
sendto(lastcmd_net_fd, data, len, 0,
(struct sockaddr*)&lastcmd_net_source, lastcmd_net_source_len);
#endif
break;
case CMD_NONE:
default:
break;
}
}
#endif
static bool command_version(const char* arg)
{
char reply[256] = {0};
snprintf(reply, sizeof(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_CHEEVOS)
static bool command_read_ram(const char *arg);
static bool command_write_ram(const char *arg);
#endif
@@ -141,7 +191,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)
#if defined(HAVE_CHEEVOS)
{ "READ_CORE_RAM", command_read_ram, "<address> <number of bytes>" },
{ "WRITE_CORE_RAM", command_write_ram, "<address> <byte1> <byte2> ..." },
#endif
@@ -159,7 +209,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 },
@@ -171,6 +221,7 @@ static const struct cmd_map map[] = {
{ "SCREENSHOT", RARCH_SCREENSHOT },
{ "MUTE", RARCH_MUTE },
{ "OSK", RARCH_OSK },
{ "FPS_TOGGLE", RARCH_FPS_TOGGLE },
{ "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH },
{ "VOLUME_UP", RARCH_VOLUME_UP },
{ "VOLUME_DOWN", RARCH_VOLUME_DOWN },
@@ -182,6 +233,8 @@ static const struct cmd_map map[] = {
{ "UI_COMPANION_TOGGLE", RARCH_UI_COMPANION_TOGGLE },
{ "GAME_FOCUS_TOGGLE", RARCH_GAME_FOCUS_TOGGLE },
{ "MENU_TOGGLE", RARCH_MENU_TOGGLE },
{ "RECORDING_TOGGLE", RARCH_RECORDING_TOGGLE },
{ "STREAMING_TOGGLE", RARCH_STREAMING_TOGGLE },
{ "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP },
{ "MENU_DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN },
{ "MENU_LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT },
@@ -190,40 +243,6 @@ static const struct cmd_map map[] = {
{ "MENU_B", RETRO_DEVICE_ID_JOYPAD_B },
{ "MENU_B", RETRO_DEVICE_ID_JOYPAD_B },
};
static enum cmd_source_t lastcmd_source;
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORK_CMD)
static int lastcmd_net_fd;
static struct sockaddr_storage lastcmd_net_source;
static socklen_t lastcmd_net_source_len;
#endif
#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)
{
case CMD_NONE:
break;
case CMD_STDIN:
#ifdef HAVE_STDIN_CMD
fwrite(data, 1,len, stdout);
return true;
#else
break;
#endif
case CMD_NETWORK:
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORK_CMD)
sendto(lastcmd_net_fd, data, len, 0,
(struct sockaddr*)&lastcmd_net_source, lastcmd_net_source_len);
return true;
#else
break;
#endif
}
return false;
}
#endif
bool command_set_shader(const char *arg)
@@ -253,48 +272,27 @@ bool command_set_shader(const char *arg)
#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;
#if defined(HAVE_NEW_CHEEVOS)
unsigned i;
char *reply = NULL;
const uint8_t * data = NULL;
char *reply_at = NULL;
unsigned int nbytes = 0;
unsigned int alloc_size = 0;
int addr = -1;
unsigned int addr = -1;
if (sscanf(arg, "%x %d", &addr, &nbytes) != 2)
return true;
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;
cheevos_var_patch_addr(&var, cheevos_get_console());
data = cheevos_var_get_memory(&var);
data = cheevos_patch_address(addr, cheevos_get_console());
if (data)
{
for (i=0;i<nbytes;i++)
for (i = 0; i < nbytes; i++)
sprintf(reply_at+3*i, " %.2X", data[i]);
reply_at[3*nbytes] = '\n';
command_reply(reply, reply_at+3*nbytes+1 - reply);
@@ -305,6 +303,38 @@ static bool command_read_ram(const char *arg)
command_reply(reply, reply_at+strlen(" -1\n") - reply);
}
free(reply);
#else
cheevos_var_t var;
unsigned i;
char reply[256] = {0};
const uint8_t * data = NULL;
char *reply_at = NULL;
reply[0] = '\0';
strlcpy(reply, "READ_CORE_RAM ", sizeof(reply));
reply_at = reply + strlen("READ_CORE_RAM ");
strlcpy(reply_at, arg, sizeof(reply)-strlen(reply));
var.value = strtoul(reply_at, (char**)&reply_at, 16);
cheevos_var_patch_addr(&var, cheevos_get_console());
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';
command_reply(reply, reply_at+3*nbytes+1 - reply);
}
else
{
strlcpy(reply_at, " -1\n", sizeof(reply)-strlen(reply));
command_reply(reply, reply_at+strlen(" -1\n") - reply);
}
#endif
return true;
}
@@ -312,14 +342,19 @@ static bool command_read_ram(const char *arg)
static bool command_write_ram(const char *arg)
{
cheevos_var_t var;
unsigned nbytes = 0;
#if defined(HAVE_NEW_CHEEVOS)
unsigned int addr = strtoul(arg, (char**)&arg, 16);
uint8_t *data = (uint8_t *)cheevos_patch_address(addr, cheevos_get_console());
#else
cheevos_var_t var;
uint8_t *data = NULL;
var.value = strtoul(arg, (char**)&arg, 16);
cheevos_var_patch_addr(&var, cheevos_get_console());
data = cheevos_var_get_memory(&var);
#endif
if (data)
{
@@ -389,7 +424,6 @@ static bool command_network_init(command_t *handle, uint16_t port)
msg_hash_to_str(MSG_BRINGING_UP_COMMAND_INTERFACE_ON_PORT),
(unsigned short)port);
if (fd < 0)
goto error;
@@ -610,7 +644,7 @@ bool command_network_new(
return true;
#if (defined(HAVE_NETWORK_CMD) && defined(HAVE_NETWORKING)) || defined(HAVE_STDIN_CMD)
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORK_CMD) && defined(HAVE_COMMAND) || defined(HAVE_STDIN_CMD)
error:
command_free(handle);
return false;
@@ -1113,7 +1147,6 @@ static void command_event_init_cheats(void)
cheat_manager_alloc_if_empty() ;
cheat_manager_load_game_specific_cheats() ;
if (settings != NULL && settings->bools.apply_cheats_after_load)
cheat_manager_apply_cheats();
}
@@ -1242,6 +1275,7 @@ static bool event_init_content(void)
{
bool contentless = false;
bool is_inited = false;
settings_t *settings = config_get_ptr();
content_get_status(&contentless, &is_inited);
@@ -1268,7 +1302,18 @@ static bool event_init_content(void)
RARCH_LOG("%s.\n",
msg_hash_to_str(MSG_SKIPPING_SRAM_LOAD));
/*
Since the operations are asynchronouse we can't guarantee users will not use auto_load_state to cheat on
achievements so we forbid auto_load_state from happening if cheevos_enable and cheevos_hardcode_mode_enable
are true
*/
#ifdef HAVE_CHEEVOS
if (!settings->bools.cheevos_enable || !settings->bools.cheevos_hardcore_mode_enable)
command_event_load_auto_state();
#else
command_event_load_auto_state();
#endif
command_event(CMD_EVENT_BSV_MOVIE_INIT, NULL);
command_event(CMD_EVENT_NETPLAY_INIT, NULL);
@@ -1298,7 +1343,6 @@ static bool command_event_init_core(enum rarch_core_type *data)
if(settings->bools.auto_shaders_enable)
config_load_shader_preset();
/* reset video format to libretro's default */
video_driver_set_pixel_format(RETRO_PIXEL_FORMAT_0RGB1555);
@@ -1321,7 +1365,6 @@ 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);
return true;
}
@@ -1585,7 +1628,6 @@ static void command_event_save_current_config(enum override_type type)
break;
}
if (!string_is_empty(msg))
runloop_msg_queue_push(msg, 1, 180, true);
}
@@ -1634,8 +1676,8 @@ static bool command_event_main_state(unsigned cmd)
{
retro_ctx_size_info_t info;
char msg[128];
char *state_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
size_t state_path_size = PATH_MAX_LENGTH * sizeof(char);
size_t state_path_size = 16384 * sizeof(char);
char *state_path = (char*)malloc(state_path_size);
global_t *global = global_get_ptr();
bool ret = false;
bool push_msg = true;
@@ -1671,6 +1713,9 @@ static bool command_event_main_state(unsigned cmd)
case CMD_EVENT_LOAD_STATE:
if (content_load_state(state_path, false, false))
{
#ifdef HAVE_CHEEVOS
cheevos_state_loaded_flag = true;
#endif
ret = true;
#ifdef HAVE_NETWORKING
netplay_driver_ctl(RARCH_NETPLAY_CTL_LOAD_SAVESTATE, NULL);
@@ -1722,59 +1767,6 @@ static bool command_event_resize_windowed_scale(void)
return true;
}
void command_playlist_push_write(
void *data,
const char *path,
const char *label,
const char *core_path,
const char *core_name)
{
playlist_t *playlist = (playlist_t*)data;
if (!playlist)
return;
if (playlist_push(
playlist,
path,
label,
core_path,
core_name,
NULL,
NULL
))
playlist_write_file(playlist);
}
void command_playlist_update_write(
void *data,
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)
{
playlist_t *plist = (playlist_t*)data;
playlist_t *playlist = plist ? plist : playlist_get_cached();
if (!playlist)
return;
playlist_update(
playlist,
idx,
path,
label,
core_path,
core_display_name,
crc32,
db_name);
playlist_write_file(playlist);
}
/**
* command_event:
* @cmd : Event command index.
@@ -1785,18 +1777,10 @@ void command_playlist_update_write(
**/
bool command_event(enum event_command cmd, void *data)
{
#ifdef HAVE_DISCORD
static bool discord_inited = false;
#endif
bool boolean = false;
switch (cmd)
{
case CMD_EVENT_MENU_REFRESH:
#ifdef HAVE_MENU
menu_driver_ctl(RARCH_MENU_CTL_REFRESH, NULL);
#endif
break;
case CMD_EVENT_SET_PER_GAME_RESOLUTION:
#if defined(GEKKO)
{
@@ -1856,7 +1840,11 @@ bool command_event(enum event_command cmd, void *data)
break;
case CMD_EVENT_LOAD_CORE:
{
bool success = command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
bool success = false;
subsystem_current_count = 0;
content_clear_subsystem();
success = command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
(void)success;
#ifndef HAVE_DYNAMIC
command_event(CMD_EVENT_QUIT, NULL);
@@ -1903,6 +1891,10 @@ bool command_event(enum event_command cmd, void *data)
command_event_init_controllers();
break;
case CMD_EVENT_RESET:
#ifdef HAVE_CHEEVOS
cheevos_state_loaded_flag = false;
cheevos_hardcore_paused = false;
#endif
RARCH_LOG("%s.\n", msg_hash_to_str(MSG_RESET));
runloop_msg_queue_push(msg_hash_to_str(MSG_RESET), 1, 120, true);
@@ -1971,15 +1963,28 @@ bool command_event(enum event_command cmd, void *data)
command_event(CMD_EVENT_RESTORE_REMAPS, NULL);
if (is_inited)
{
if (!task_push_start_dummy_core(&content_info))
return false;
}
#ifdef HAVE_DYNAMIC
path_clear(RARCH_PATH_CORE);
rarch_ctl(RARCH_CTL_SYSTEM_INFO_FREE, NULL);
#endif
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
if (is_inited)
{
subsystem_current_count = 0;
content_clear_subsystem();
}
}
break;
case CMD_EVENT_QUIT:
@@ -2120,6 +2125,12 @@ TODO: Add a setting for these tweaks */
RARCH_LOG("%s\n", msg);
}
break;
case CMD_EVENT_FPS_TOGGLE:
{
settings_t *settings = config_get_ptr();
settings->bools.video_fps_show = !(settings->bools.video_fps_show);
}
break;
case CMD_EVENT_OVERLAY_DEINIT:
#ifdef HAVE_OVERLAY
input_overlay_free(overlay_ptr);
@@ -2160,13 +2171,22 @@ TODO: Add a setting for these tweaks */
video_driver_gpu_record_deinit();
break;
case CMD_EVENT_RECORD_DEINIT:
if (!recording_deinit())
return false;
{
recording_set_state(false);
streaming_set_state(false);
if (!recording_deinit())
return false;
}
break;
case CMD_EVENT_RECORD_INIT:
command_event(CMD_EVENT_HISTORY_DEINIT, NULL);
if (!recording_init())
return false;
{
recording_set_state(true);
if (!recording_init())
{
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
return false;
}
}
break;
case CMD_EVENT_HISTORY_DEINIT:
if (g_defaults.content_history)
@@ -2379,17 +2399,12 @@ TODO: Add a setting for these tweaks */
break;
case CMD_EVENT_ADD_TO_FAVORITES:
{
global_t *global = global_get_ptr();
rarch_system_info_t *sys_info = runloop_get_system_info();
const char *core_name = NULL;
const char *core_path = NULL;
const char *label = NULL;
if (sys_info)
{
core_name = sys_info->info.library_name;
core_path = path_get(RARCH_PATH_CORE);
}
/* TODO/FIXME - does path_get(RARCH_PATH_CORE) depend on the system info struct? Investigate */
global_t *global = global_get_ptr();
struct retro_system_info *system = runloop_get_libretro_system_info();
const char *label = NULL;
const char *core_path = system ? path_get(RARCH_PATH_CORE) : NULL;
const char *core_name = system ? system->library_name : NULL;
if (!string_is_empty(global->name.label))
label = global->name.label;
@@ -2432,6 +2447,9 @@ TODO: Add a setting for these tweaks */
command_event(CMD_EVENT_QUIT, NULL);
#endif
break;
case CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG:
config_set_defaults();
break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG:
command_event_save_current_config(OVERRIDE_NONE);
break;
@@ -2664,9 +2682,12 @@ TODO: Add a setting for these tweaks */
settings_t *settings = config_get_ptr();
bool new_fullscreen_state = !settings->bools.video_fullscreen
&& !retroarch_is_forced_fullscreen();
if (!video_driver_has_windowed())
return false;
retroarch_set_switching_display_mode();
/* we toggled manually, write the new value to settings */
configuration_set_bool(settings, settings->bools.video_fullscreen,
new_fullscreen_state);
@@ -2682,6 +2703,8 @@ TODO: Add a setting for these tweaks */
video_driver_hide_mouse();
else
video_driver_show_mouse();
retroarch_unset_switching_display_mode();
}
break;
case CMD_EVENT_COMMAND_DEINIT:
@@ -2900,26 +2923,24 @@ TODO: Add a setting for these tweaks */
if (!settings->bools.discord_enable)
return false;
if (discord_inited)
if (discord_is_ready())
return true;
discord_init();
discord_inited = true;
}
#endif
break;
case CMD_EVENT_DISCORD_DEINIT:
#ifdef HAVE_DISCORD
if (!discord_inited)
if (!discord_is_ready())
return false;
discord_shutdown();
discord_inited = false;
#endif
break;
case CMD_EVENT_DISCORD_UPDATE:
#ifdef HAVE_DISCORD
if (!data || !discord_inited)
if (!data || !discord_is_ready())
return false;
{
+3 -18
View File
@@ -83,6 +83,8 @@ enum event_command
CMD_EVENT_AUDIO_START,
/* Mutes audio. */
CMD_EVENT_AUDIO_MUTE_TOGGLE,
/* Toggles FPS counter. */
CMD_EVENT_FPS_TOGGLE,
/* Initializes overlay. */
CMD_EVENT_OVERLAY_INIT,
/* Deinitializes overlay. */
@@ -147,6 +149,7 @@ enum event_command
/* Unpauses retroArch. */
CMD_EVENT_PAUSE,
CMD_EVENT_PAUSE_CHECKS,
CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR,
@@ -155,7 +158,6 @@ enum event_command
CMD_EVENT_MENU_PAUSE_LIBRETRO,
/* Toggles menu on/off. */
CMD_EVENT_MENU_TOGGLE,
CMD_EVENT_MENU_REFRESH,
/* Applies shader changes. */
CMD_EVENT_SHADERS_APPLY_CHANGES,
/* A new shader preset has been loaded */
@@ -268,23 +270,6 @@ bool command_free(command_t *handle);
**/
bool command_event(enum event_command action, void *data);
void command_playlist_push_write(
void *data,
const char *path,
const char *label,
const char *core_path,
const char *core_name);
void command_playlist_update_write(
void *data,
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);
RETRO_END_DECLS
#endif
+118 -30
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2016 - Daniel De Matteis
* Copyright (C) 2016 - Brad Parker
* Copyright (C) 2016-2019 - Brad Parker
*
* 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-
@@ -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"
@@ -47,7 +48,7 @@
#define DEFAULT_ASPECT_RATIO -1.0f
#endif
#ifdef RARCH_MOBILE
#if defined(RARCH_MOBILE) || defined(HAVE_LIBNX)
static const bool pointer_enable = true;
#else
static const bool pointer_enable = false;
@@ -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;
@@ -116,14 +117,18 @@ static const unsigned monitor_index = 0;
/* Window */
/* Window size. A value of 0 uses window scale
* multiplied by the core framebuffer size. */
static const unsigned window_x = 0;
static const unsigned window_y = 0;
static const unsigned window_width = 1280;
static const unsigned window_height = 720;
/* Fullscreen resolution. A value of 0 uses the desktop
* resolution. */
static const unsigned fullscreen_x = 0;
static const unsigned fullscreen_y = 0;
/* Number of threads to use for video recording */
static const unsigned video_record_threads = 2;
/* Amount of transparency to use for the main window.
* 1 is the most transparent while 100 is opaque.
*/
@@ -147,6 +152,8 @@ static const bool vsync = true;
static const unsigned max_swapchain_images = 3;
static const bool adaptive_vsync = false;
/* Attempts to hard-synchronize CPU and GPU.
* Can reduce latency at cost of performance. */
static const bool hard_sync = false;
@@ -178,10 +185,14 @@ static unsigned swap_interval = 1;
/* Threaded video. Will possibly increase performance significantly
* at the cost of worse synchronization and latency.
*/
#if defined(HAVE_LIBNX)
static const bool video_threaded = true;
#else
static const bool video_threaded = false;
#endif
#if defined(HAVE_THREADS)
#if defined(GEKKO) || defined(PSP)
#if defined(GEKKO) || defined(PSP) || defined(PS2)
/* For single-core consoles right now it's better to have this be disabled. */
static const bool threaded_data_runloop_enable = false;
#else
@@ -233,6 +244,11 @@ static const bool aspect_ratio_auto = false;
static unsigned aspect_ratio_idx = ASPECT_RATIO_16_9;
#elif defined(PSP)
static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE;
#elif defined(_3DS)
/* Previously defaulted to ASPECT_RATIO_4_3.
* Non-4:3 content looks dreadful when stretched
* to 4:3 on the 3DS screen... */
static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE;
#elif defined(RARCH_CONSOLE)
static unsigned aspect_ratio_idx = ASPECT_RATIO_4_3;
#else
@@ -259,15 +275,26 @@ static const float default_input_overlay_opacity = 0.7f;
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_information = true;
#ifdef HAVE_LIBNX
static bool menu_use_preferred_system_color_theme = true;
#else
static bool menu_use_preferred_system_color_theme = false;
#endif
static bool quick_menu_show_take_screenshot = true;
static bool quick_menu_show_save_load_state = true;
static bool quick_menu_show_undo_save_load_state = true;
static bool quick_menu_show_add_to_favorites = true;
static bool quick_menu_show_start_recording = true;
static bool quick_menu_show_start_streaming = true;
static bool quick_menu_show_reset_core_association = true;
static bool quick_menu_show_options = true;
static bool quick_menu_show_controls = true;
static bool quick_menu_show_cheats = true;
static bool quick_menu_show_shaders = true;
static bool quick_menu_show_information = true;
static bool quick_menu_show_recording = true;
static bool quick_menu_show_streaming = true;
static bool quick_menu_show_save_core_overrides = true;
static bool quick_menu_show_save_game_overrides = true;
@@ -275,6 +302,7 @@ static bool quick_menu_show_save_content_dir_overrides = true;
static bool kiosk_mode_enable = false;
static bool menu_horizontal_animation = true;
static bool menu_show_online_updater = true;
static bool menu_show_load_core = true;
static bool menu_show_load_content = true;
@@ -283,7 +311,11 @@ 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;
#ifdef HAVE_LAKKA_SWITCH
static bool menu_show_shutdown = false;
#else
static bool menu_show_shutdown = true;
#endif
#if defined(HAVE_LAKKA) || defined(VITA) || defined(_3DS)
static bool menu_show_core_updater = false;
#else
@@ -341,9 +373,7 @@ static unsigned menu_shader_pipeline = 2;
#endif
static bool show_advanced_settings = false;
static const uint32_t menu_entry_normal_color = 0xffffffff;
static const uint32_t menu_entry_hover_color = 0xff64ff64;
static const uint32_t menu_title_color = 0xff64ff64;
static unsigned rgui_color_theme = RGUI_THEME_CLASSIC_GREEN;
#else
static bool default_block_config_read = false;
@@ -365,10 +395,14 @@ static bool default_screenshots_in_content_dir = false;
#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
#elif defined(PS2) || defined(PSP)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_HOLD_START;
#elif defined(VITA)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT;
#elif defined(SWITCH)
#elif defined(SWITCH) || defined(ORBIS)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT;
#elif TARGET_OS_TV
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_DOWN_Y_L_R;
#else
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE;
#endif
@@ -447,9 +481,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
@@ -457,11 +493,23 @@ static const float refresh_rate = 60/1.001;
* Used for setups where one manually rotates the monitor. */
static const bool allow_rotate = true;
#ifdef _3DS
/* Enable bottom LCD screen */
static const bool video_3ds_lcd_bottom = true;
#endif
/* AUDIO */
/* Will enable audio or not. */
static const bool audio_enable = true;
/* Enable menu audio sounds. */
static const bool audio_enable_menu = false;
static const bool audio_enable_menu_ok = false;
static const bool audio_enable_menu_cancel = false;
static const bool audio_enable_menu_notice = false;
static const bool audio_enable_menu_bgm = false;
/* Output samplerate. */
#ifdef GEKKO
static const unsigned out_rate = 32000;
@@ -519,8 +567,11 @@ static const int wasapi_sh_buffer_length = -16; /* auto */
/* Enables displaying the current frames per second. */
static const bool fps_show = false;
/* Show frame count on FPS display */
static const bool framecount_show = true;
/* Enables displaying the current frame count. */
static const bool framecount_show = false;
/* Includes displaying the current memory usage/total with FPS/Frames. */
static const bool memory_show = false;
/* Enables use of rewind. This will incur some memory footprint
* depending on the save state buffer. */
@@ -551,7 +602,13 @@ static const bool pause_nonactive = true;
/* Saves non-volatile SRAM at a regular interval.
* It is measured in seconds. A value of 0 disables autosave. */
#if defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(__x86_64__) || defined(_M_X64) || defined(_WIN32) || defined(OSX) || defined(ANDROID) || defined(IOS)
/* Flush to file every 10 seconds on modern platforms by default */
static const unsigned autosave_interval = 10;
#else
/* Default to disabled on I/O-constrained platforms */
static const unsigned autosave_interval = 0;
#endif
/* Publicly announce netplay */
static const bool netplay_public_announce = true;
@@ -634,6 +691,9 @@ static const uint16_t network_remote_base_port = 55400;
/* Number of entries that will be kept in content history playlist file. */
static const unsigned default_content_history_size = 100;
/* File format to use when writing playlists to disk */
static const bool playlist_use_old_format = false;
/* Show Menu start-up screen on boot. */
static const bool default_menu_show_start_screen = true;
@@ -654,6 +714,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)
@@ -686,8 +750,12 @@ static const unsigned menu_thumbnails_default = 3;
static const unsigned menu_left_thumbnails_default = 0;
static const unsigned menu_timedate_style = 5;
static const bool xmb_vertical_thumbnails = false;
static unsigned rgui_thumbnail_downscaler = RGUI_THUMB_SCALE_POINT;
#ifdef IOS
static const bool ui_companion_start_on_boot = false;
#else
@@ -704,7 +772,7 @@ 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)
#elif defined(PSP) || defined(_3DS) || defined(VITA) || defined(PS2)
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_LOWEST;
#else
static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL;
@@ -747,7 +815,23 @@ static char buildbot_server_url[] = "http://bot.libretro.com/nightly/apple/osx/x
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/osx/ppc/latest/";
#endif
#elif defined(_WIN32) && !defined(_XBOX)
#if _MSC_VER == 1600
#if _MSC_VER >= 1910
#ifndef __WINRT__
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x86_64/latest/";
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-desktop/x86/latest/";
#endif
#else
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x86_64/latest/";
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/x86/latest/";
#elif defined(__arm__) || defined(_M_ARM)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2017-uwp/arm/latest/";
#endif
#endif
#elif _MSC_VER == 1600
#if defined(__x86_64__) || defined(_M_X64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2010/x86_64/latest/";
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
@@ -776,6 +860,8 @@ static char buildbot_server_url[] = "";
#endif
#elif defined(WIIU)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/wiiu/latest/";
#elif defined(HAVE_LIBNX)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/switch/libnx/latest/";
#elif defined(__CELLOS_LV2__) && defined(DEX_BUILD)
static char buildbot_server_url[] = "http://libretro.xbins.org/libretro/nightly/playstation/ps3/latest/dex-ps3/";
#elif defined(__CELLOS_LV2__) && defined(CEX_BUILD)
@@ -788,4 +874,6 @@ static char buildbot_server_url[] = "";
static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/";
static char default_discord_app_id[] = "475456035851599874";
#endif
+8 -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 },
@@ -87,6 +87,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -99,6 +100,8 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ 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 },
{ true, RARCH_RECORDING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STREAMING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, RETROK_UNKNOWN, 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 },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_a, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -151,7 +154,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 },
@@ -163,6 +166,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_F8, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_F3, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, NO_BTN, 0, AXIS_NONE },
@@ -175,6 +179,8 @@ static const struct retro_keybind retro_keybinds_1[] = {
{ 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 },
{ true, RARCH_RECORDING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STREAMING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
#endif
};
+13 -1
View File
@@ -152,6 +152,12 @@ static const bool _coreaudio_supp = true;
static const bool _coreaudio_supp = false;
#endif
#ifdef HAVE_COREAUDIO3
static const bool _coreaudio3_supp = true;
#else
static const bool _coreaudio3_supp = false;
#endif
#if defined(HAVE_OSS) || defined(HAVE_OSS_BSD)
static const bool _oss_supp = true;
#else
@@ -290,6 +296,12 @@ static const bool _freetype_supp = true;
static const bool _freetype_supp = false;
#endif
#ifdef HAVE_STB_FONT
static const bool _stbfont_supp = true;
#else
static const bool _stbfont_supp = false;
#endif
#ifdef HAVE_NETWORKING
static const bool _netplay_supp = true;
#else
@@ -302,7 +314,7 @@ static const bool _python_supp = true;
static const bool _python_supp = false;
#endif
#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)
#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) || defined(HAVE_COCOA_METAL)
static const bool _cocoa_supp = true;
#else
static const bool _cocoa_supp = false;
+250 -71
View File
@@ -3,7 +3,7 @@
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2014-2017 - Jean-André Santoni
* Copyright (C) 2015-2017 - Andrés Suárez
* Copyright (C) 2016-2017 - Brad Parker
* Copyright (C) 2016-2019 - Brad Parker
*
* 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-
@@ -50,10 +50,17 @@
#include "verbosity.h"
#include "lakka.h"
#include "tasks/task_content.h"
#include "tasks/tasks_internal.h"
#include "../list_special.h"
#include "record/record_driver.h"
#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
#include "uwp/uwp_func.h"
#endif
static const char* invalid_filename_chars[] = {
/* https://support.microsoft.com/en-us/help/905231/information-about-the-characters-that-you-cannot-use-in-site-names--fo */
"~", "#", "%", "&", "*", "{", "}", "\\", ":", "[", "]", "?", "/", "|", "\'", "\"",
@@ -146,6 +153,7 @@ enum video_driver_enum
VIDEO_XENON360,
VIDEO_PSP1,
VIDEO_VITA2D,
VIDEO_PS2,
VIDEO_CTR,
VIDEO_SWITCH,
VIDEO_D3D8,
@@ -183,12 +191,14 @@ enum audio_driver_enum
AUDIO_DSOUND,
AUDIO_WASAPI,
AUDIO_COREAUDIO,
AUDIO_COREAUDIO3,
AUDIO_PS3,
AUDIO_XENON360,
AUDIO_WII,
AUDIO_WIIU,
AUDIO_RWEBAUDIO,
AUDIO_PSP,
AUDIO_PS2,
AUDIO_CTR,
AUDIO_SWITCH,
AUDIO_NULL
@@ -210,14 +220,17 @@ enum input_driver_enum
INPUT_X,
INPUT_WAYLAND,
INPUT_DINPUT,
INPUT_PS4,
INPUT_PS3,
INPUT_PSP,
INPUT_PS2,
INPUT_CTR,
INPUT_SWITCH,
INPUT_XENON360,
INPUT_WII,
INPUT_WIIU,
INPUT_XINPUT,
INPUT_UWP,
INPUT_UDEV,
INPUT_LINUXRAW,
INPUT_COCOA,
@@ -234,7 +247,9 @@ enum joypad_driver_enum
JOYPAD_GX,
JOYPAD_WIIU,
JOYPAD_XDK,
JOYPAD_PS4,
JOYPAD_PSP,
JOYPAD_PS2,
JOYPAD_CTR,
JOYPAD_SWITCH,
JOYPAD_DINPUT,
@@ -285,7 +300,7 @@ enum menu_driver_enum
MENU_MATERIALUI,
MENU_XMB,
MENU_STRIPES,
MENU_NUKLEAR,
MENU_OZONE,
MENU_NULL
};
@@ -298,6 +313,7 @@ enum record_driver_enum
enum midi_driver_enum
{
MIDI_WINMM = RECORD_NULL + 1,
MIDI_ALSA,
MIDI_NULL
};
@@ -311,6 +327,13 @@ static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_WII;
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_WIIU;
#elif defined(XENON)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XENON360;
#elif defined(HAVE_D3D12) && false
/* FIXME: DX12 performance on Xbox is horrible for some reason, so use d3d11 as default */
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D12;
#elif defined(HAVE_D3D11)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D11;
#elif defined(HAVE_D3D10)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D10;
#elif defined(HAVE_D3D9)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D9;
#elif defined(HAVE_D3D8)
@@ -321,6 +344,8 @@ static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VG;
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VITA2D;
#elif defined(PSP)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_PSP1;
#elif defined(PS2)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_PS2;
#elif defined(_3DS)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_CTR;
#elif defined(SWITCH)
@@ -349,8 +374,10 @@ static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_XENON360;
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_WII;
#elif defined(WIIU)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_WIIU;
#elif defined(PSP) || defined(VITA)
#elif defined(PSP) || defined(VITA) || defined(ORBIS)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_PSP;
#elif defined(PS2)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_PS2;
#elif defined(_3DS)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_CTR;
#elif defined(SWITCH)
@@ -367,6 +394,8 @@ static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_TINYALSA;
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_OSS;
#elif defined(HAVE_JACK)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_JACK;
#elif defined(HAVE_COREAUDIO3)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_COREAUDIO3;
#elif defined(HAVE_COREAUDIO)
static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_COREAUDIO;
#elif defined(HAVE_XAUDIO)
@@ -409,11 +438,15 @@ static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_NULL;
#ifdef HAVE_WINMM
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_WINMM;
#elif defined HAVE_ALSA
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_ALSA;
#else
static enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_NULL;
#endif
#if defined(XENON)
#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_UWP;
#elif defined(XENON)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XENON360;
#elif defined(_XBOX360) || defined(_XBOX) || defined(HAVE_XINPUT2) || defined(HAVE_XINPUT_XBOX1)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XINPUT;
@@ -425,10 +458,14 @@ static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL2;
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_RWEBINPUT;
#elif defined(_WIN32)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_DINPUT;
#elif defined(ORBIS)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PS4;
#elif defined(__CELLOS_LV2__)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PS3;
#elif defined(PSP) || defined(VITA)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PSP;
#elif defined(PS2)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PS2;
#elif defined(_3DS)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_CTR;
#elif defined(SWITCH)
@@ -445,7 +482,7 @@ static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_UDEV;
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_LINUXRAW;
#elif defined(HAVE_WAYLAND)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_WAYLAND;
#elif defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)
#elif defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) || defined(HAVE_COCOA_METAL)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_COCOA;
#elif defined(__QNX__)
static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_QNX;
@@ -469,8 +506,12 @@ static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_GX;
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_WIIU;
#elif defined(_XBOX)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_XDK;
#elif defined(ORBIS)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_PS4;
#elif defined(PSP) || defined(VITA)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_PSP;
#elif defined(PS2)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_PS2;
#elif defined(_3DS)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_CTR;
#elif defined(SWITCH)
@@ -487,14 +528,14 @@ static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_ANDROID;
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_SDL;
#elif defined(DJGPP)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_DOS;
#elif defined(IOS)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_MFI;
#elif defined(HAVE_HID)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_HID;
#elif defined(__QNX__)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_QNX;
#elif defined(EMSCRIPTEN)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_RWEBPAD;
#elif defined(IOS)
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_MFI;
#else
static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_NULL;
#endif
@@ -505,7 +546,7 @@ static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_V4L2;
static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_RWEBCAM;
#elif defined(ANDROID)
static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_ANDROID;
#elif defined(HAVE_AVFOUNDATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH))
#elif defined(HAVE_AVFOUNDATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) || defined(HAVE_COCOA_METAL))
static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_AVFOUNDATION;
#else
static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_NULL;
@@ -519,16 +560,21 @@ static enum wifi_driver_enum WIFI_DEFAULT_DRIVER = WIFI_NULL;
#if defined(ANDROID)
static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_ANDROID;
#elif defined(HAVE_CORELOCATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH))
#elif defined(HAVE_CORELOCATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) || defined(HAVE_COCOA_METAL))
static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_CORELOCATION;
#else
static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL;
#endif
#if defined(_3DS) && defined(HAVE_RGUI)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_RGUI;
#else
#if defined(HAVE_XUI)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XUI;
#elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_MATERIALUI;
#elif defined(HAVE_OZONE) && (defined(HAVE_LIBNX) || TARGET_OS_TV)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_OZONE;
#elif defined(HAVE_XMB) && !defined(_XBOX)
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XMB;
#elif defined(HAVE_RGUI)
@@ -536,7 +582,7 @@ static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_RGUI;
#else
static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL;
#endif
#endif
#define GENERAL_SETTING(key, configval, default_enable, default_setting, type, handle_setting) \
{ \
@@ -623,6 +669,8 @@ const char *config_get_default_audio(void)
return "roar";
case AUDIO_COREAUDIO:
return "coreaudio";
case AUDIO_COREAUDIO3:
return "coreaudio3";
case AUDIO_AL:
return "openal";
case AUDIO_SL:
@@ -650,13 +698,17 @@ const char *config_get_default_audio(void)
case AUDIO_WIIU:
return "AX";
case AUDIO_PSP:
#ifdef VITA
#if defined(VITA)
return "vita";
#elif defined(ORBIS)
return "orbis";
#else
return "psp";
#endif
case AUDIO_PS2:
return "ps2";
case AUDIO_CTR:
return "csnd";
return "dsp";
case AUDIO_SWITCH:
return "switch";
case AUDIO_RWEBAUDIO:
@@ -750,6 +802,8 @@ const char *config_get_default_video(void)
return "d3d12";
case VIDEO_PSP1:
return "psp1";
case VIDEO_PS2:
return "ps2";
case VIDEO_VITA2D:
return "vita2d";
case VIDEO_CTR:
@@ -802,6 +856,8 @@ const char *config_get_default_input(void)
{
case INPUT_ANDROID:
return "android";
case INPUT_PS4:
return "ps4";
case INPUT_PS3:
return "ps3";
case INPUT_PSP:
@@ -810,6 +866,8 @@ const char *config_get_default_input(void)
#else
return "psp";
#endif
case INPUT_PS2:
return "ps2";
case INPUT_CTR:
return "ctr";
case INPUT_SWITCH:
@@ -828,6 +886,8 @@ const char *config_get_default_input(void)
return "xenon360";
case INPUT_XINPUT:
return "xinput";
case INPUT_UWP:
return "uwp";
case INPUT_WII:
return "gx";
case INPUT_WIIU:
@@ -864,6 +924,8 @@ const char *config_get_default_joypad(void)
switch (default_driver)
{
case JOYPAD_PS4:
return "ps4";
case JOYPAD_PS3:
return "ps3";
case JOYPAD_XINPUT:
@@ -880,6 +942,8 @@ const char *config_get_default_joypad(void)
#else
return "psp";
#endif
case JOYPAD_PS2:
return "ps2";
case JOYPAD_CTR:
return "ctr";
case JOYPAD_SWITCH:
@@ -915,7 +979,6 @@ const char *config_get_default_joypad(void)
return "null";
}
/**
* config_get_default_camera:
*
@@ -1023,14 +1086,14 @@ const char *config_get_default_menu(void)
return "rgui";
case MENU_XUI:
return "xui";
case MENU_OZONE:
return "ozone";
case MENU_MATERIALUI:
return "glui";
case MENU_XMB:
return "xmb";
case MENU_STRIPES:
return "stripes";
case MENU_NUKLEAR:
return "nuklear";
case MENU_NULL:
break;
}
@@ -1047,6 +1110,8 @@ const char *config_get_default_midi(void)
{
case MIDI_WINMM:
return "winmm";
case MIDI_ALSA:
return "alsa";
case MIDI_NULL:
break;
}
@@ -1071,6 +1136,9 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
unsigned count = 0;
struct config_array_setting *tmp = (struct config_array_setting*)calloc(1, (*size + 1) * sizeof(struct config_array_setting));
if (!tmp)
return NULL;
/* Arrays */
SETTING_ARRAY("playlist_names", settings->arrays.playlist_names, false, NULL, true);
SETTING_ARRAY("playlist_cores", settings->arrays.playlist_cores, false, NULL, true);
@@ -1103,6 +1171,8 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
SETTING_ARRAY("midi_driver", settings->arrays.midi_driver, false, NULL, true);
SETTING_ARRAY("midi_input", settings->arrays.midi_input, true, midi_input, true);
SETTING_ARRAY("midi_output", settings->arrays.midi_output, true, midi_output, true);
SETTING_ARRAY("youtube_stream_key", settings->arrays.youtube_stream_key, true, NULL, true);
SETTING_ARRAY("discord_app_id", settings->arrays.discord_app_id, true, default_discord_app_id, true);
*size = count;
return tmp;
@@ -1114,6 +1184,9 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
global_t *global = global_get_ptr();
struct config_path_setting *tmp = (struct config_path_setting*)calloc(1, (*size + 1) * sizeof(struct config_path_setting));
if (!tmp)
return NULL;
/* Paths */
#ifdef HAVE_XMB
SETTING_PATH("xmb_font", settings->paths.path_menu_xmb_font, false, NULL, true);
@@ -1145,6 +1218,8 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
#ifdef HAVE_MENU
SETTING_PATH("menu_wallpaper",
settings->paths.path_menu_wallpaper, false, NULL, true);
SETTING_PATH("rgui_menu_theme_preset",
settings->paths.path_rgui_theme_preset, false, NULL, true);
#endif
SETTING_PATH("content_history_path",
settings->paths.path_content_history, false, NULL, true);
@@ -1160,6 +1235,12 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
SETTING_PATH("input_overlay",
settings->paths.path_overlay, false, NULL, true);
#endif
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);
SETTING_PATH("video_font_path",
settings->paths.path_font, false, NULL, true);
SETTING_PATH("cursor_directory",
@@ -1234,6 +1315,7 @@ 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);
@@ -1276,7 +1358,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false);
SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, false, false);
SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, false, false);
SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, true, false);
SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, false, false);
SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, false, false);
SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false);
SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false);
SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false);
@@ -1306,9 +1389,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, adaptive_vsync, false);
SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, hard_sync, false);
SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, black_frame_insertion, false);
SETTING_BOOL("crt_switch_resolution", &settings->bools.crt_switch_resolution, true, crt_switch_resolution, false);
SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, disable_composition, false);
SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, pause_nonactive, false);
SETTING_BOOL("video_gpu_screenshot", &settings->bools.video_gpu_screenshot, true, gpu_screenshot, false);
@@ -1316,7 +1399,11 @@ 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_enable_menu", &settings->bools.audio_enable_menu, true, audio_enable_menu, false);
SETTING_BOOL("audio_enable_menu_ok", &settings->bools.audio_enable_menu_ok, true, audio_enable_menu_ok, false);
SETTING_BOOL("audio_enable_menu_cancel", &settings->bools.audio_enable_menu_cancel, true, audio_enable_menu_cancel, false);
SETTING_BOOL("audio_enable_menu_notice", &settings->bools.audio_enable_menu_notice, true, audio_enable_menu_notice, false);
SETTING_BOOL("audio_enable_menu_bgm", &settings->bools.audio_enable_menu_bgm, true, audio_enable_menu_bgm, 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);
@@ -1334,11 +1421,11 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
#ifdef GEKKO
SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, video_vfilter, false);
#endif
#ifdef HAVE_MENU
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false);
#ifdef HAVE_THREADS
SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, threaded_data_runloop_enable, false);
#endif
#ifdef HAVE_MENU
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false);
SETTING_BOOL("menu_throttle_framerate", &settings->bools.menu_throttle_framerate, true, true, false);
SETTING_BOOL("menu_linear_filter", &settings->bools.menu_linear_filter, true, true, false);
SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, true, false);
@@ -1350,10 +1437,16 @@ 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);
SETTING_BOOL("quick_menu_show_add_to_favorites", &settings->bools.quick_menu_show_add_to_favorites, true, quick_menu_show_add_to_favorites, false);
SETTING_BOOL("quick_menu_show_start_recording", &settings->bools.quick_menu_show_start_recording, true, quick_menu_show_start_recording, false);
SETTING_BOOL("quick_menu_show_start_streaming", &settings->bools.quick_menu_show_start_streaming, true, quick_menu_show_start_streaming, false);
SETTING_BOOL("quick_menu_show_reset_core_association", &settings->bools.quick_menu_show_reset_core_association, true, quick_menu_show_reset_core_association, false);
SETTING_BOOL("quick_menu_show_options", &settings->bools.quick_menu_show_options, true, quick_menu_show_options, false);
SETTING_BOOL("quick_menu_show_controls", &settings->bools.quick_menu_show_controls, true, quick_menu_show_controls, false);
SETTING_BOOL("quick_menu_show_cheats", &settings->bools.quick_menu_show_cheats, true, quick_menu_show_cheats, false);
@@ -1363,6 +1456,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
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("menu_use_preferred_system_color_theme", &settings->bools.menu_use_preferred_system_color_theme, true, menu_use_preferred_system_color_theme, false);
SETTING_BOOL("content_show_settings", &settings->bools.menu_content_show_settings, true, content_show_settings, false);
SETTING_BOOL("content_show_favorites", &settings->bools.menu_content_show_favorites, true, content_show_favorites, false);
#ifdef HAVE_IMAGEVIEWER
@@ -1469,9 +1563,16 @@ 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("video_window_save_positions", &settings->bools.video_window_save_positions, true, false, false);
SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false);
#ifdef _3DS
SETTING_BOOL("video_3ds_lcd_bottom", &settings->bools.video_3ds_lcd_bottom, true, video_3ds_lcd_bottom, false);
#endif
SETTING_BOOL("playlist_use_old_format", &settings->bools.playlist_use_old_format, true, playlist_use_old_format, false);
*size = count;
return tmp;
@@ -1482,8 +1583,12 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
unsigned count = 0;
struct config_float_setting *tmp = (struct config_float_setting*)calloc(1, (*size + 1) * sizeof(struct config_float_setting));
if (!tmp)
return NULL;
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);
@@ -1517,6 +1622,13 @@ 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));
if (!tmp)
return NULL;
#ifdef HAVE_NETWORKING
SETTING_UINT("streaming_mode", &settings->uints.streaming_mode, true, STREAMING_MODE_TWITCH, false);
#endif
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);
@@ -1535,8 +1647,6 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, monitor_index, false);
SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, fullscreen_x, false);
SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, fullscreen_y, false);
SETTING_UINT("video_window_x", &settings->uints.video_window_x, true, fullscreen_x, false);
SETTING_UINT("video_window_y", &settings->uints.video_window_y, true, fullscreen_y, false);
SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, window_opacity, false);
#ifdef HAVE_COMMAND
SETTING_UINT("network_cmd_port", &settings->uints.network_cmd_port, true, network_cmd_port, false);
@@ -1550,6 +1660,19 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
#ifdef HAVE_MENU
SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false);
SETTING_UINT("menu_thumbnails", &settings->uints.menu_thumbnails, true, menu_thumbnails_default, false);
SETTING_UINT("menu_timedate_style", &settings->uints.menu_timedate_style, true, menu_timedate_style, false);
SETTING_UINT("rgui_menu_color_theme", &settings->uints.menu_rgui_color_theme, true, rgui_color_theme, false);
SETTING_UINT("rgui_thumbnail_downscaler", &settings->uints.menu_rgui_thumbnail_downscaler, true, rgui_thumbnail_downscaler, false);
#ifdef HAVE_LIBNX
SETTING_UINT("split_joycon_p1", &settings->uints.input_split_joycon[0], true, 0, false);
SETTING_UINT("split_joycon_p2", &settings->uints.input_split_joycon[1], true, 0, false);
SETTING_UINT("split_joycon_p3", &settings->uints.input_split_joycon[2], true, 0, false);
SETTING_UINT("split_joycon_p4", &settings->uints.input_split_joycon[3], true, 0, false);
SETTING_UINT("split_joycon_p5", &settings->uints.input_split_joycon[4], true, 0, false);
SETTING_UINT("split_joycon_p6", &settings->uints.input_split_joycon[5], true, 0, false);
SETTING_UINT("split_joycon_p7", &settings->uints.input_split_joycon[6], true, 0, false);
SETTING_UINT("split_joycon_p8", &settings->uints.input_split_joycon[7], true, 0, false);
#endif
#ifdef HAVE_XMB
SETTING_UINT("menu_left_thumbnails", &settings->uints.menu_left_thumbnails, true, menu_left_thumbnails_default, false);
SETTING_UINT("xmb_alpha_factor", &settings->uints.menu_xmb_alpha_factor, true, xmb_alpha_factor, false);
@@ -1563,6 +1686,9 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
#endif
SETTING_UINT("materialui_menu_color_theme", &settings->uints.menu_materialui_color_theme, true, MATERIALUI_THEME_BLUE, false);
SETTING_UINT("menu_shader_pipeline", &settings->uints.menu_xmb_shader_pipeline, true, menu_shader_pipeline, false);
#ifdef HAVE_OZONE
SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 1, false);
#endif
#endif
SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, out_rate, false);
SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false);
@@ -1599,6 +1725,22 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("midi_volume", &settings->uints.midi_volume, true, midi_volume, false);
SETTING_UINT("video_stream_port", &settings->uints.video_stream_port, true, RARCH_STREAM_DEFAULT_PORT, false);
SETTING_UINT("video_record_quality", &settings->uints.video_record_quality, true, RECORD_CONFIG_TYPE_RECORDING_LOSSLESS_QUALITY, false);
SETTING_UINT("video_stream_quality", &settings->uints.video_stream_quality, true, RECORD_CONFIG_TYPE_STREAMING_LOW_QUALITY, false);
SETTING_UINT("video_record_scale_factor", &settings->uints.video_record_scale_factor, true, 1, false);
SETTING_UINT("video_stream_scale_factor", &settings->uints.video_stream_scale_factor, true, 1, false);
SETTING_UINT("video_windowed_position_x", &settings->uints.window_position_x, true, 0, false);
SETTING_UINT("video_windowed_position_y", &settings->uints.window_position_y, true, 0, false);
SETTING_UINT("video_windowed_position_width", &settings->uints.window_position_width, true, window_width, false);
SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, window_height, false);
SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, video_record_threads, false);
#ifdef HAVE_LIBNX
SETTING_UINT("libnx_overclock", &settings->uints.libnx_overclock, true, SWITCH_DEFAULT_CPU_PROFILE, false);
#endif
*size = count;
return tmp;
@@ -1609,6 +1751,9 @@ static struct config_size_setting *populate_settings_size(settings_t *settings,
unsigned count = 0;
struct config_size_setting *tmp = (struct config_size_setting*)calloc((*size + 1), sizeof(struct config_size_setting));
if (!tmp)
return NULL;
SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, rewind_buffer_size, false);
*size = count;
@@ -1621,6 +1766,9 @@ static struct config_int_setting *populate_settings_int(settings_t *settings, in
unsigned count = 0;
struct config_int_setting *tmp = (struct config_int_setting*)calloc((*size + 1), sizeof(struct config_int_setting));
if (!tmp)
return NULL;
SETTING_INT("state_slot", &settings->ints.state_slot, false, 0 /* TODO */, false);
#ifdef HAVE_NETWORKING
SETTING_INT("netplay_check_frames", &settings->ints.netplay_check_frames, true, netplay_check_frames, false);
@@ -1629,6 +1777,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;
@@ -1640,7 +1789,7 @@ static struct config_int_setting *populate_settings_int(settings_t *settings, in
*
* Set 'default' configuration values.
**/
static void config_set_defaults(void)
void config_set_defaults(void)
{
unsigned i, j;
#ifdef HAVE_MENU
@@ -1772,6 +1921,9 @@ static void config_set_defaults(void)
*settings->paths.path_menu_xmb_font = '\0';
#endif
strlcpy(settings->arrays.discord_app_id,
default_discord_app_id, sizeof(settings->arrays.discord_app_id));
#ifdef HAVE_MATERIALUI
if (g_defaults.menu.materialui.menu_color_theme_enable)
settings->uints.menu_materialui_color_theme = g_defaults.menu.materialui.menu_color_theme;
@@ -1817,9 +1969,6 @@ static void config_set_defaults(void)
#ifdef HAVE_MENU
if (first_initialized)
settings->bools.menu_show_start_screen = default_menu_show_start_screen;
settings->uints.menu_entry_normal_color = menu_entry_normal_color;
settings->uints.menu_entry_hover_color = menu_entry_hover_color;
settings->uints.menu_title_color = menu_title_color;
#endif
#ifdef HAVE_CHEEVOS
@@ -1853,7 +2002,11 @@ static void config_set_defaults(void)
for (i = 0; i < MAX_USERS; i++)
{
settings->uints.input_joypad_map[i] = i;
#ifdef SWITCH /* Switch prefered default dpad mode */
settings->uints.input_analog_dpad_mode[i] = ANALOG_DPAD_LSTICK;
#else
settings->uints.input_analog_dpad_mode[i] = ANALOG_DPAD_NONE;
#endif
input_config_set_device(i, RETRO_DEVICE_JOYPAD);
settings->uints.input_mouse_index[i] = 0;
}
@@ -1918,8 +2071,12 @@ static void config_set_defaults(void)
#endif
*settings->paths.path_cheat_database = '\0';
*settings->paths.path_menu_wallpaper = '\0';
*settings->paths.path_rgui_theme_preset = '\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';
@@ -2116,8 +2273,13 @@ static config_file_t *open_default_config_file(void)
(void)path_size;
#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__)
fill_pathname_application_path(app_path, path_size);
#if defined(_WIN32) && !defined(_XBOX)
#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
/* On UWP, the app install directory is not writable so use the writable LocalState dir instead */
fill_pathname_home_dir(app_path, path_size);
#else
fill_pathname_application_dir(app_path, path_size);
#endif
fill_pathname_resolve_relative(conf_path, app_path,
file_path_str(FILE_PATH_MAIN_CONFIG), path_size);
@@ -2141,7 +2303,6 @@ static config_file_t *open_default_config_file(void)
/* Try to create a new config file. */
conf = config_file_new(NULL);
if (conf)
{
/* Since this is a clean config file, we can
@@ -2149,7 +2310,7 @@ static config_file_t *open_default_config_file(void)
fill_pathname_resolve_relative(conf_path, app_path,
file_path_str(FILE_PATH_MAIN_CONFIG), path_size);
config_set_bool(conf, "config_save_on_exit", true);
saved = config_file_write(conf, conf_path);
saved = config_file_write(conf, conf_path, true);
}
if (!saved)
@@ -2185,7 +2346,7 @@ static config_file_t *open_default_config_file(void)
if (conf)
{
config_set_bool(conf, "config_save_on_exit", true);
saved = config_file_write(conf, conf_path);
saved = config_file_write(conf, conf_path, true);
}
if (!saved)
@@ -2260,7 +2421,7 @@ static config_file_t *open_default_config_file(void)
{
/* Since this is a clean config file, we can safely use config_save_on_exit. */
config_set_bool(conf, "config_save_on_exit", true);
saved = config_file_write(conf, conf_path);
saved = config_file_write(conf, conf_path, true);
}
if (!saved)
@@ -2302,6 +2463,36 @@ error:
return NULL;
}
#if defined(HAVE_MENU) && defined(HAVE_RGUI)
static bool check_menu_driver_compatibility(void)
{
settings_t *settings = config_get_ptr();
char *video_driver = settings->arrays.video_driver;
char *menu_driver = settings->arrays.menu_driver;
if (string_is_equal (menu_driver, "rgui") ||
string_is_equal(menu_driver, "null") ||
string_is_equal(video_driver, "null"))
return true;
/* TODO/FIXME - maintenance hazard */
if (string_is_equal(video_driver, "d3d9") ||
string_is_equal(video_driver, "d3d10") ||
string_is_equal(video_driver, "d3d11") ||
string_is_equal(video_driver, "d3d12") ||
string_is_equal(video_driver, "gdi") ||
string_is_equal(video_driver, "gl") ||
string_is_equal(video_driver, "gx2") ||
string_is_equal(video_driver, "vulkan") ||
string_is_equal(video_driver, "metal") ||
string_is_equal(video_driver, "ctr") ||
string_is_equal(video_driver, "vita2d"))
return true;
return false;
}
#endif
static void read_keybinds_keyboard(config_file_t *conf, unsigned user,
unsigned idx, struct retro_keybind *bind)
{
@@ -2465,6 +2656,8 @@ static void config_file_dump_all(config_file_t *conf)
}
#endif
/*
* This is no longer used, so comment out to silence warnings...
#ifdef HAVE_MENU
static void config_get_hex_base(config_file_t *conf,
const char *key, unsigned *base)
@@ -2476,7 +2669,7 @@ static void config_get_hex_base(config_file_t *conf,
*base = tmp;
}
#endif
*/
/**
* config_load:
@@ -2552,11 +2745,11 @@ static bool config_load_file(const char *path, bool set_defaults,
while (extra_path)
{
bool ret = config_append_file(conf, extra_path);
bool result = config_append_file(conf, extra_path);
RARCH_LOG("Config: appending config \"%s\"\n", extra_path);
if (!ret)
if (!result)
RARCH_ERR("Config: failed to append config \"%s\"\n", extra_path);
extra_path = strtok_r(NULL, "|", &save);
}
@@ -2684,7 +2877,6 @@ static bool config_load_file(const char *path, bool set_defaults,
CONFIG_GET_INT_BASE(conf, settings, uints.led_map[i], buf);
}
/* Hexadecimal settings */
if (config_get_hex(conf, "video_message_color", &msg_color))
@@ -2693,14 +2885,6 @@ static bool config_load_file(const char *path, bool set_defaults,
settings->floats.video_msg_color_g = ((msg_color >> 8) & 0xff) / 255.0f;
settings->floats.video_msg_color_b = ((msg_color >> 0) & 0xff) / 255.0f;
}
#ifdef HAVE_MENU
config_get_hex_base(conf, "menu_entry_normal_color",
&settings->uints.menu_entry_normal_color);
config_get_hex_base(conf, "menu_entry_hover_color",
&settings->uints.menu_entry_hover_color);
config_get_hex_base(conf, "menu_title_color",
&settings->uints.menu_title_color);
#endif
/* Float settings */
for (i = 0; i < (unsigned)float_settings_size; i++)
@@ -2860,7 +3044,6 @@ static bool config_load_file(const char *path, bool set_defaults,
}
}
if (!string_is_empty(settings->paths.directory_screenshot))
{
if (string_is_equal(settings->paths.directory_screenshot, "default"))
@@ -2890,6 +3073,8 @@ static bool config_load_file(const char *path, bool set_defaults,
if (string_is_equal(settings->paths.path_menu_wallpaper, "default"))
*settings->paths.path_menu_wallpaper = '\0';
if (string_is_equal(settings->paths.path_rgui_theme_preset, "default"))
*settings->paths.path_rgui_theme_preset = '\0';
if (string_is_equal(settings->paths.directory_video_shader, "default"))
*settings->paths.directory_video_shader = '\0';
if (string_is_equal(settings->paths.directory_video_filter, "default"))
@@ -2927,7 +3112,6 @@ static bool config_load_file(const char *path, bool set_defaults,
if (settings->floats.fastforward_ratio < 0.0f)
configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f);
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
@@ -3007,11 +3191,22 @@ static bool config_load_file(const char *path, bool set_defaults,
}
}
#if defined(HAVE_MENU) && defined(HAVE_RGUI)
if (!check_menu_driver_compatibility())
strlcpy(settings->arrays.menu_driver, "rgui", sizeof(settings->arrays.menu_driver));
#endif
#ifdef HAVE_LIBNX
// Apply initial clocks
extern void libnx_apply_overclock();
libnx_apply_overclock();
#endif
frontend_driver_set_sustained_performance_mode(settings->bools.sustained_performance_mode);
recording_driver_update_streaming_url();
ret = true;
end:
if (conf)
config_file_free(conf);
@@ -3322,7 +3517,6 @@ bool config_load_remap(void)
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);
@@ -3389,7 +3583,6 @@ bool config_load_remap(void)
input_remapping_set_defaults(false);
}
/* Create a new config file from core_path */
new_conf = config_file_new(core_path);
@@ -3615,8 +3808,6 @@ static void parse_config_file(void)
path_get(RARCH_PATH_CONFIG));
}
static void save_keybind_key(config_file_t *conf, const char *prefix,
const char *base, const struct retro_keybind *bind)
{
@@ -3870,13 +4061,12 @@ static bool config_save_keybinds_file(const char *path)
for (i = 0; i < MAX_USERS; i++)
save_keybinds_user(conf, i);
ret = config_file_write(conf, path);
ret = config_file_write(conf, path, true);
config_file_free(conf);
return ret;
}
#endif
/**
* config_save_autoconf_profile:
* @path : Path that shall be written to.
@@ -3979,7 +4169,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
&input_config_binds[user][i], false, false);
}
ret = config_file_write(conf, autoconf_file);
ret = config_file_write(conf, autoconf_file, false);
config_file_free(conf);
free(buf);
@@ -3994,7 +4184,6 @@ error:
return false;
}
/**
* config_save_file:
* @path : Path that shall be written to.
@@ -4185,15 +4374,6 @@ bool config_save_file(const char *path)
/* Hexadecimal settings */
config_set_hex(conf, "video_message_color", msg_color);
#ifdef HAVE_MENU
config_set_hex(conf, "menu_entry_normal_color",
settings->uints.menu_entry_normal_color);
config_set_hex(conf, "menu_entry_hover_color",
settings->uints.menu_entry_hover_color);
config_set_hex(conf, "menu_title_color",
settings->uints.menu_title_color);
#endif
video_driver_save_settings(conf);
@@ -4221,7 +4401,7 @@ bool config_save_file(const char *path)
for (i = 0; i < MAX_USERS; i++)
save_keybinds_user(conf, i);
ret = config_file_write(conf, path);
ret = config_file_write(conf, path, true);
config_file_free(conf);
return ret;
@@ -4467,7 +4647,6 @@ 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]
@@ -4493,17 +4672,17 @@ bool config_save_overrides(int override_type)
case OVERRIDE_CORE:
/* Create a new config file from core_path */
RARCH_LOG ("[overrides] path %s\n", core_path);
ret = config_file_write(conf, core_path);
ret = config_file_write(conf, core_path, true);
break;
case OVERRIDE_GAME:
/* Create a new config file from core_path */
RARCH_LOG ("[overrides] path %s\n", game_path);
ret = config_file_write(conf, game_path);
ret = config_file_write(conf, game_path, true);
break;
case OVERRIDE_CONTENT_DIR:
/* Create a new config file from content_path */
RARCH_LOG ("[overrides] path %s\n", content_path);
ret = config_file_write(conf, content_path);
ret = config_file_write(conf, content_path, true);
break;
default:
break;
@@ -4552,7 +4731,7 @@ bool config_save_overrides(int override_type)
/* Replaces currently loaded configuration file with
* another one. Will load a dummy core to flush state
* properly. */
bool config_replace(bool config_save_on_exit, char *path)
bool config_replace(bool config_replace_save_on_exit, char *path)
{
content_ctx_info_t content_info = {0};
@@ -4564,7 +4743,7 @@ bool config_replace(bool config_save_on_exit, char *path)
if (string_is_equal(path, path_get(RARCH_PATH_CONFIG)))
return false;
if (config_save_on_exit && !path_is_empty(RARCH_PATH_CONFIG))
if (config_replace_save_on_exit && !path_is_empty(RARCH_PATH_CONFIG))
config_save_file(path_get(RARCH_PATH_CONFIG));
path_set(RARCH_PATH_CONFIG, path);
+62 -9
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2016 - Daniel De Matteis
* Copyright (C) 2014-2016 - Jean-André Santoni
* Copyright (C) 2016 - Brad Parker
* Copyright (C) 2016-2019 - Brad Parker
*
* 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-
@@ -25,7 +25,7 @@
#include <retro_common_api.h>
#include <retro_miscellaneous.h>
#include "gfx/video_driver.h"
#include "gfx/video_defines.h"
#include "input/input_defines.h"
#include "led/led_defines.h"
@@ -53,6 +53,13 @@
var = newvar; \
}
enum crt_switch_type
{
CRT_SWITCH_NONE = 0,
CRT_SWITCH_15KHZ,
CRT_SWITCH_31KHZ
};
enum override_type
{
OVERRIDE_NONE = 0,
@@ -73,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,12 +103,17 @@ typedef struct settings
bool video_fps_show;
bool video_statistics_show;
bool video_framecount_show;
bool video_memory_show;
bool video_msg_bgcolor_enable;
bool crt_switch_resolution;
bool video_3ds_lcd_bottom;
/* Audio */
bool audio_enable;
bool audio_enable_menu;
bool audio_enable_menu_ok;
bool audio_enable_menu_cancel;
bool audio_enable_menu_notice;
bool audio_enable_menu_bgm;
bool audio_sync;
bool audio_rate_control;
bool audio_wasapi_exclusive_mode;
@@ -168,11 +181,16 @@ typedef struct settings
bool menu_content_show_history;
bool menu_content_show_add;
bool menu_content_show_playlists;
bool menu_use_preferred_system_color_theme;
bool menu_preferred_system_color_theme_set;
bool menu_unified_controls;
bool quick_menu_show_take_screenshot;
bool quick_menu_show_save_load_state;
bool quick_menu_show_undo_save_load_state;
bool quick_menu_show_add_to_favorites;
bool quick_menu_show_start_recording;
bool quick_menu_show_start_streaming;
bool quick_menu_show_reset_core_association;
bool quick_menu_show_options;
bool quick_menu_show_controls;
bool quick_menu_show_cheats;
@@ -181,8 +199,12 @@ typedef struct settings
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;
@@ -279,8 +301,10 @@ typedef struct settings
bool automatically_add_content_to_playlist;
bool video_window_show_decorations;
bool video_window_save_positions;
bool sustained_performance_mode;
bool playlist_use_old_format;
} bools;
struct
@@ -289,6 +313,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;
@@ -321,6 +346,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
@@ -356,9 +382,8 @@ typedef struct settings
unsigned network_cmd_port;
unsigned network_remote_base_port;
unsigned keymapper_port;
unsigned video_window_x;
unsigned video_window_y;
unsigned video_window_opacity;
unsigned crt_switch_resolution;
unsigned crt_switch_resolution_super;
unsigned video_monitor_index;
unsigned video_fullscreen_x;
@@ -373,13 +398,18 @@ typedef struct settings
unsigned video_msg_bgcolor_red;
unsigned video_msg_bgcolor_green;
unsigned video_msg_bgcolor_blue;
unsigned video_stream_port;
unsigned video_record_quality;
unsigned video_stream_quality;
unsigned video_record_scale_factor;
unsigned video_stream_scale_factor;
unsigned menu_timedate_style;
unsigned menu_thumbnails;
unsigned menu_left_thumbnails;
unsigned menu_rgui_thumbnail_downscaler;
unsigned menu_dpi_override_value;
unsigned menu_entry_normal_color;
unsigned menu_entry_hover_color;
unsigned menu_title_color;
unsigned menu_rgui_color_theme;
unsigned menu_xmb_layout;
unsigned menu_xmb_shader_pipeline;
unsigned menu_xmb_scale_factor;
@@ -387,6 +417,7 @@ typedef struct settings
unsigned menu_xmb_theme;
unsigned menu_xmb_color_theme;
unsigned menu_materialui_color_theme;
unsigned menu_ozone_color_theme;
unsigned menu_font_color_red;
unsigned menu_font_color_green;
unsigned menu_font_color_blue;
@@ -396,6 +427,7 @@ typedef struct settings
unsigned input_overlay_show_physical_inputs_port;
unsigned input_split_joycon[MAX_USERS];
unsigned input_joypad_map[MAX_USERS];
unsigned input_device[MAX_USERS];
unsigned input_mouse_index[MAX_USERS];
@@ -413,6 +445,16 @@ typedef struct settings
unsigned run_ahead_frames;
unsigned midi_volume;
unsigned streaming_mode;
unsigned window_position_x;
unsigned window_position_y;
unsigned window_position_width;
unsigned window_position_height;
unsigned video_record_threads;
unsigned libnx_overclock;
} uints;
struct
@@ -457,6 +499,11 @@ typedef struct settings
char midi_input[32];
char midi_output[32];
char youtube_stream_key[PATH_MAX_LENGTH];
char twitch_stream_key[PATH_MAX_LENGTH];
char discord_app_id[PATH_MAX_LENGTH];
} arrays;
struct
@@ -477,6 +524,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[8192];
char path_menu_wallpaper[PATH_MAX_LENGTH];
char path_audio_dsp_plugin[PATH_MAX_LENGTH];
char path_softfilter_plugin[PATH_MAX_LENGTH];
@@ -490,7 +540,7 @@ typedef struct settings
char path_cheat_settings[PATH_MAX_LENGTH];
char path_shader[PATH_MAX_LENGTH];
char path_font[PATH_MAX_LENGTH];
char path_rgui_theme_preset[PATH_MAX_LENGTH];
char directory_audio_filter[PATH_MAX_LENGTH];
char directory_autoconfig[PATH_MAX_LENGTH];
@@ -513,6 +563,7 @@ typedef struct settings
char directory_thumbnails[PATH_MAX_LENGTH];
char directory_menu_config[PATH_MAX_LENGTH];
char directory_menu_content[PATH_MAX_LENGTH];
char streaming_title[PATH_MAX_LENGTH];
} paths;
bool modified;
@@ -694,6 +745,8 @@ bool config_init(void);
bool config_overlay_enable_default(void);
void config_set_defaults(void);
void config_free(void);
settings_t *config_get_ptr(void);
Vendored
+6
View File
@@ -4,6 +4,8 @@ PACKAGE_NAME=retroarch
cat /dev/null > config.log
. qb/qb.init.sh
. qb/qb.system.sh
. qb/qb.params.sh
@@ -11,3 +13,7 @@ cat /dev/null > config.log
. qb/qb.comp.sh
. qb/qb.libs.sh
. qb/qb.moc.sh
. qb/qb.make.sh
+11 -2
View File
@@ -82,10 +82,13 @@ bool content_reset_savestate_backups(void);
bool content_undo_load_buf_is_empty(void);
bool content_undo_save_buf_is_empty(void);
/* Clears the pending subsystem rom buffer*/
/* Checks if launched from the commandline */
bool content_launched_from_cli(void);
/* Clears the pending subsystem rom buffer */
bool content_is_subsystem_pending_load(void);
/* Clears the pending subsystem rom buffer*/
/* Clears the pending subsystem rom buffer */
void content_clear_subsystem(void);
/* Set the current subsystem*/
@@ -103,6 +106,12 @@ unsigned content_get_subsystem_rom_id(void);
/* Set environment variables before a subsystem load */
void content_set_subsystem_info(void);
/* Get the path to the last selected subsystem rom */
char* content_get_subsystem_rom(unsigned index);
/* Sets the subsystem by name */
bool content_set_subsystem_by_name(const char* subsystem_name);
RETRO_END_DECLS
#endif
+2
View File
@@ -65,6 +65,8 @@ typedef struct rarch_system_info
const char *input_desc_btn[MAX_USERS][RARCH_FIRST_META_KEY];
char valid_extensions[255];
bool supports_vfs;
struct retro_disk_control_callback disk_control_cb;
struct retro_location_callback location_cb;
+10 -6
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"
@@ -133,7 +134,6 @@ bool core_set_default_callbacks(struct retro_callbacks *cbs)
return true;
}
bool core_deinit(void *data)
{
struct retro_callbacks *cbs = (struct retro_callbacks*)data;
@@ -298,6 +298,7 @@ bool core_load_game(retro_ctx_load_content_info_t *load_info)
#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(
@@ -394,20 +395,23 @@ bool core_unload(void)
{
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_deinit();
if (current_core.inited)
current_core.retro_deinit();
return true;
}
bool core_unload_game(void)
{
video_driver_free_hw_context();
video_driver_set_cached_frame_ptr(NULL);
current_core.retro_unload_game();
current_core.game_loaded = false;
if (current_core.game_loaded)
{
current_core.retro_unload_game();
current_core.game_loaded = false;
}
audio_driver_stop();
+41 -15
View File
@@ -32,6 +32,10 @@
#include "core_info.h"
#include "file_path_special.h"
#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
#include "uwp/uwp_func.h"
#endif
static const char *core_info_tmp_path = NULL;
static const struct string_list *core_info_tmp_list = NULL;
static core_info_t *core_info_current = NULL;
@@ -197,7 +201,7 @@ static bool core_info_list_iterate(
if (!current_path)
return false;
info_path_base = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
info_path_base = (char*)malloc(info_path_base_size);
info_path_base[0] = '\0';
@@ -205,7 +209,7 @@ static bool core_info_list_iterate(
current_path,
info_path_base_size);
#if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA) && !defined(HW_WUP))
#if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA) && !defined(PS2) && !defined(HW_WUP))
substr = strrchr(info_path_base, '_');
if (substr)
*substr = '\0';
@@ -226,17 +230,35 @@ static bool core_info_list_iterate(
static core_info_list_t *core_info_list_new(const char *path,
const char *libretro_info_dir,
const char *exts,
bool show_hidden_files)
bool dir_show_hidden_files)
{
size_t i;
core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL;
const char *path_basedir = libretro_info_dir;
struct string_list *contents = dir_list_new(
path, exts,
false,
show_hidden_files,
false, false);
struct string_list *contents = string_list_new();
bool ok = dir_list_append(contents, path, exts,
false, dir_show_hidden_files, false, false);
#if defined(__WINRT__) || defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
/* UWP: browse the optional packages for additional cores */
struct string_list *core_packages = string_list_new();
uwp_fill_installed_core_packages(core_packages);
for (i = 0; i < core_packages->size; i++)
{
dir_list_append(contents, core_packages->elems[i].data, exts,
false, dir_show_hidden_files, false, false);
}
string_list_free(core_packages);
#else
/* Keep the old 'directory not found' behavior */
if (!ok)
{
string_list_free(contents);
contents = NULL;
}
#endif
if (!contents)
return NULL;
@@ -430,12 +452,12 @@ static core_info_list_t *core_info_list_new(const char *path,
core_info_list_resolve_all_firmware(core_info_list);
}
dir_list_free(contents);
string_list_free(contents);
return core_info_list;
error:
if (contents)
dir_list_free(contents);
string_list_free(contents);
core_info_list_free(core_info_list);
return NULL;
}
@@ -550,7 +572,11 @@ static bool core_info_list_update_missing_firmware_internal(
if (!info)
return false;
path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
path = (char*)malloc(path_size);
if (!path)
return false;
path[0] = '\0';
for (i = 0; i < info->firmware_count; i++)
@@ -652,12 +678,12 @@ void core_info_deinit_list(void)
}
bool core_info_init_list(const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files)
const char *exts, bool dir_show_hidden_files)
{
if (!(core_info_curr_list = core_info_list_new(dir_cores,
!string_is_empty(path_info) ? path_info : dir_cores,
exts,
show_hidden_files)))
dir_show_hidden_files)))
return false;
return true;
}
@@ -773,13 +799,13 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list,
void core_info_get_name(const char *path, char *s, size_t len,
const char *path_info, const char *dir_cores,
const char *exts, bool show_hidden_files)
const char *exts, bool dir_show_hidden_files)
{
size_t i;
const char *path_basedir = !string_is_empty(path_info) ?
path_info : dir_cores;
struct string_list *contents = dir_list_new(
dir_cores, exts, false, show_hidden_files, false, false);
dir_cores, exts, false, dir_show_hidden_files, false, false);
if (!contents)
return;
Loaded 100 of 2363 files, more files were not shown because too many files have changed in this diff. Show more