Compare commits

...
685 Commits
Author SHA1 Message Date
twinaphex 0a2b44273d Disable automatically add content by playlist by default 2017-12-25 18:19:55 +01:00
twinaphex 2fd3f41865 Bump to version 1.7.0 2017-12-25 18:17:57 +01:00
Twinaphex de5d5b0860 Merge pull request #5951 from aliaspider/master
(CTR) build fix.
2017-12-25 09:21:52 +01:00
aliaspider 1f143927ca (CTR) build fix. 2017-12-25 08:51:50 +01:00
Twinaphex 2c865d862b Update CHANGES.md 2017-12-25 08:37:50 +01:00
twinaphex 7321c6c87a (xaudio) Cleanups 2017-12-25 08:11:10 +01:00
twinaphex 3f281bb31f Cleanups 2017-12-25 07:49:07 +01:00
twinaphex c0c9764afe Update 2017-12-25 07:36:49 +01:00
twinaphex 72bf298701 libchdr requires both 7zip and zlib 2017-12-25 04:18:42 +01:00
twinaphex 8ff5c00600 HAVE_7ZIP should not be a requirement for CHD 2017-12-25 04:17:06 +01:00
bparker06 87e5dc9a93 Add DOS to the list of supported operating systems 2017-12-24 21:47:40 -05:00
Brad Parker 89bd38918e win32: correct usage of GetWindowPlacement per MS docs, fixes game window position on Win95/98 2017-12-24 17:17:36 -05:00
twinaphex 6664f8a772 (STB Truetype) Try to silence potential uninitialized reference to winding_lengths
variable
2017-12-24 18:54:57 +01:00
twinaphex 2e1e2cb406 Update 2017-12-24 18:53:03 +01:00
Brad Parker 6d484b7724 xinput: check for valid function pointers before calling them 2017-12-23 23:02:29 -05:00
Brad Parker 9cd3746702 enable STB Unicode font renderer for PS3 2017-12-23 21:35:45 -05:00
Twinaphex 2899d624cc Update config.def.h 2017-12-23 08:13:57 +01:00
twinaphex ca3c101161 Define DEX_BUILD/CEX_BUILD/ODE_BUILD for PS3 versions - set
custom buildbot core updater URL per target
2017-12-23 08:12:39 +01:00
Twinaphex 9bfba320f0 Merge pull request #5947 from esoptron/patch-1
Disable Temporal Interpolation by default in internal FFmpeg core
2017-12-23 04:47:14 +01:00
esoptron 2be322acbb Disable Temporal Interpolation by default in internal FFmpeg core 2017-12-22 17:24:13 -05:00
Twinaphex 05820677db Merge pull request #5942 from RobLoach/c_converter
Update c_converter with libretro-common vfs changes
2017-12-21 02:23:24 +01:00
Rob Loach 4564301bb5 Update c_converter with libretro-common vfs changes 2017-12-20 20:15:33 -05:00
twinaphex c2b8f03e50 Add CHANGES.md 2017-12-21 02:08:18 +01:00
twinaphex 6557bff118 Prevent some warnings on PS3 2017-12-21 02:06:34 +01:00
twinaphex ce50d39ada Update CHANGES.md 2017-12-21 01:29:23 +01:00
Twinaphex 0e3c067a53 Merge pull request #5941 from frangarcj/vita-adrenaline
(PSP) Fix for VITA's Adrenaline
2017-12-21 01:05:28 +01:00
Francisco José García García ab31e05f65 (PSP) Fix for VITA's Adrenaline 2017-12-21 00:09:38 +01:00
Brad Parker aeac9786b1 ps3: copy individual cores to a separate folder for use with the updater 2017-12-20 12:01:15 -05:00
twinaphex a4500eeafc Simplify config_file_write 2017-12-20 17:07:31 +01:00
twinaphex 513885d465 (PS3) Set up cheat dir/autoconfig dir 2017-12-20 16:11:59 +01:00
twinaphex f6e9a624ca (PS3) Add default dir for core download assets 2017-12-20 16:02:40 +01:00
twinaphex 259b077eef (PS3) Set PATH_MAX_LENGTH to CELL_FS_MAX_FS_PATH_LENGTH 2017-12-20 15:45:11 +01:00
twinaphex 7cda1aaab9 Set PATH_MAX_LENGTH to 512 for PS3 2017-12-20 15:39:01 +01:00
twinaphex 6441a25c35 PS3 has AF_INET6 defined yet we still shouldn't take this path 2017-12-20 15:34:57 +01:00
twinaphex 56f9d0a7cf Cleanup 2017-12-20 05:27:20 +01:00
Twinaphex f952123095 Merge pull request #5938 from fr500/master
Get rid of the console window correctly on MSVC 2003
2017-12-20 04:08:16 +01:00
radius 7a89537a16 this line is not required 2017-12-19 21:56:16 -05:00
radius ef7ecf229b try to get rid of the console window in MSVC 2003 builds 2017-12-19 21:56:15 -05:00
Twinaphex 089cb2a34d Merge pull request #5937 from QuarkTheAwesome/master
[WiiU] Add -D__WUT__; fixes integrated libiosuhax
2017-12-20 03:50:25 +01:00
Ash 46bffb8b12 [WiiU] Add -D__WUT__; fixes integrated libiosuhax
There was some type confusion around IOS_Open with libiosuhax, leading
to it treating the first instruction of that function as an address to
point to. Adding -D__WUT__ lets it know that we are using proper symbols
and not function pointers.
2017-12-20 13:47:30 +11:00
twinaphex 2f422a457f Revert config_file.c 2017-12-20 02:52:01 +01:00
Twinaphex 5eb6c5dae9 Merge pull request #5936 from clienthax/ps3res
More ps3 networking fixs.
2017-12-19 23:02:14 +01:00
clienthax 73aa381b27 More ps3 networking fixs. 2017-12-19 21:39:22 +00:00
twinaphex 7c73930a87 Add libiosuhax/libfat 2017-12-19 22:12:58 +01:00
Alcaro b7249525d4 guess drunk is better than untested 2017-12-19 00:13:19 +01:00
Alcaro b2d5fad4f5 strtok is drunk 2017-12-19 00:08:25 +01:00
Alcaro bfeb9ff5c2 that's an interesting double free 2017-12-18 22:29:27 +01:00
twinaphex 106721d943 Update Polish language - use the header 2017-12-18 19:46:28 +01:00
Twinaphex 659b32adb4 Merge pull request #5933 from alfrix/polish
Polish translation update (DEX357)
2017-12-18 18:54:02 +01:00
Alfrix 8371129143 Polish translation update (DEX357)
https://forums.libretro.com/t/polish-translation-characters/13763/7
2017-12-18 14:39:49 -03:00
Andrés 746c5e6845 Fix for empty console window on MSVC2003 builds 2017-12-18 09:42:24 -05:00
twinaphex 95e807749d Simplification/cleanup 2017-12-18 07:09:44 +01:00
twinaphex 422ce9396c Cleanup - input_key_pressed 2017-12-18 06:14:48 +01:00
twinaphex 69f85556a3 Get rid of meta_key_pressed 2017-12-18 05:59:57 +01:00
twinaphex 7b210ccf37 Don't call meta key pressed if not bound 2017-12-18 05:49:17 +01:00
twinaphex 1978689dcb Rewrite input_keys_pressed_iterate 2017-12-18 05:22:45 +01:00
twinaphex 9b9cf7b036 Cleanups 2017-12-18 05:13:57 +01:00
twinaphex 3c5d2f047c Create input_keys_pressed_iterate 2017-12-18 05:09:16 +01:00
Twinaphex db345d8ad6 Update CHANGES.md 2017-12-18 01:56:44 +01:00
twinaphex bd7a8a0479 Show Quick Menu title correctly 2017-12-18 01:55:35 +01:00
Twinaphex 6c266364fc Update CHANGES.md 2017-12-18 01:14:45 +01:00
twinaphex e16a501c46 Update CHANGES.md 2017-12-18 01:01:00 +01:00
Twinaphex b6f9681373 Merge pull request #5931 from fr500/master
fix fullscreen cli option
2017-12-17 19:21:26 +01:00
radius a7f989fdb6 fix fullscreen toggle 2017-12-17 13:16:40 -05:00
Twinaphex d3a72d147f Merge pull request #5930 from fr500/master
update this label to Stop immediately
2017-12-17 18:50:56 +01:00
radius 3ed436dbd0 update this label to Stop immediately 2017-12-17 12:16:34 -05:00
Twinaphex da5d0650d5 Merge pull request #5929 from fr500/master
show the frontend name and CPU architecture on netplay rooms
2017-12-17 18:10:39 +01:00
radius 7bdd8e945a show the frontend name and CPU architecture on netplay rooms 2017-12-17 11:51:50 -05:00
twinaphex d169d51180 Revert "Rewrite menu toggle"
This reverts commit 144ca2cfd8.
2017-12-17 17:21:51 +01:00
twinaphex edae66e413 Faulty fall-through 2017-12-17 17:12:02 +01:00
twinaphex 0f906d0986 Revert "that's a dumb bug."
This reverts commit 69a630f8e0.
2017-12-17 17:06:02 +01:00
Twinaphex 26f483b22d Merge pull request #5882 from hiddenasbestos/dolphinbar
Mayflash DolphinBar
2017-12-17 16:48:26 +01:00
Twinaphex 4758d3e22b Merge pull request #5926 from hyarsan/master
Fix typo in CHANGES.md
2017-12-17 14:30:16 +01:00
hyarsan c87ee34d07 Fix typo in CHANGES.md 2017-12-17 14:10:21 +01:00
Twinaphex bf9b6a7ddd Merge pull request #5925 from hiddenasbestos/overlay_fix
Fixes for overlay buttons
2017-12-17 14:06:18 +01:00
David Walters 02f6301607 fix reversed logic 2017-12-17 12:46:21 +00:00
David Walters adffa5fc4c Fixes for overlay buttons 2017-12-17 12:36:18 +00:00
twinaphex 2fa03755eb Cleanups 2017-12-17 04:11:56 +01:00
twinaphex 144ca2cfd8 Rewrite menu toggle 2017-12-17 03:54:11 +01:00
twinaphex 49634cc46e Create manual get_value cbs callback for URL 2017-12-16 22:31:38 +01:00
twinaphex 9596cc2866 Update 2017-12-16 17:06:37 +01:00
Brad Parker 03970ddacd Show BSD OSes in frontend OS info 2017-12-16 10:46:52 -05:00
Twinaphex 9f336b705a Merge pull request #5918 from bparker06/opacity_x11
x11: enable window transparency
2017-12-16 16:40:09 +01:00
Brad Parker af85c20e56 Update CHANGES.md 2017-12-16 10:35:25 -05:00
Brad Parker 81cd5435a1 x11: enable window transparency 2017-12-16 10:29:30 -05:00
Twinaphex c9716c066f Merge pull request #5919 from orbea/dbus
Ifdef the broken dbus code better.
2017-12-16 14:50:47 +01:00
orbea 1ddcc7be82 Ifdef the broken dbus code better. 2017-12-16 05:19:05 -08:00
twinaphex 6622cb0810 Update libretro API 2017-12-16 14:12:38 +01:00
Andrés 2974258589 Update CHANGES.md 2017-12-16 00:58:29 -05:00
Andrés f26db935ec Update CHANGES.md 2017-12-16 00:57:58 -05:00
Andrés cac184c75c Update CHANGES.md 2017-12-16 00:50:53 -05:00
twinaphex d8068553f4 Update 2017-12-16 02:47:59 +01:00
twinaphex 3fd059e073 Update 2017-12-16 01:20:21 +01:00
twinaphex c63859cca9 Add safeguard suggested by Alcaro 2017-12-16 00:19:56 +01:00
Andrés fbdd53b717 Change the entry point in MSVC2010 builds 2017-12-15 18:03:20 -05:00
twinaphex 4ba1e8336d Update libretro-common 2017-12-15 23:21:22 +01:00
twinaphex 1b6b670882 filestream - use int64_t 2017-12-15 21:10:58 +01:00
Twinaphex 60aa6bf3fb Fix warnings 2017-12-15 20:33:39 +01:00
twinaphex b7eba4b28f Update image_core.c 2017-12-15 19:25:30 +01:00
Andrés 4604faf8d9 Update RetroArch-msvc2010.vcxproj 2017-12-15 12:46:35 -05:00
twinaphex 42462c2ba9 Silence some warnings 2017-12-15 18:31:12 +01:00
twinaphex 4572675a15 (PS3) Fix Salamander build 2017-12-15 18:20:18 +01:00
Alcaro cbdb91a668 Remove file_ prefixes, for consistency with the rest of libretro. They're not useful, anything they'd mean is provided by the vfs_iface-> anyways. Also rename delete to remove to match libc and avoid C++ keywords. 2017-12-15 17:28:55 +01:00
Andrés f25ba04d91 Change the entry point in non DEBUG builds 2017-12-15 09:43:39 -05:00
Twinaphex fde0cca93d Merge pull request #5914 from frangarcj/psp_audio
(PSP) Sync audio thread
2017-12-15 14:19:12 +01:00
ggf906 21aedd46ee (PSP) Sync audio thread 2017-12-15 13:35:10 +01:00
Alcaro 69a630f8e0 that's a dumb bug. 2017-12-15 11:21:43 +01:00
Alcaro c88e5e08a0 Add VFS support to imageviewer (should get Unicode filenames working on Windows too, even without VFS) 2017-12-15 11:00:02 +01:00
Alcaro 29b9ec0b5e Create this thing because makefile 2017-12-15 10:12:01 +01:00
Alcaro 03723118e5 Some minor clarifications 2017-12-15 10:02:49 +01:00
Andrés 0602f8eb79 Try to get rid of the console in MSVC 2010 builds 2017-12-14 21:36:33 -05:00
twinaphex 4369ac1545 Update 2017-12-15 00:35:11 +01:00
twinaphex 1932513edb Update libretro-common 2017-12-15 00:31:37 +01:00
Alcaro ecf5d55a25 Rename this one, to not codify policy in what should be a frontend decision 2017-12-14 21:21:18 +01:00
twinaphex c6217ef14b (file_path.c) Get rid of libretro.h dependency 2017-12-14 20:06:15 +01:00
twinaphex c7c4b723d6 Move path_file_exists to filestream and do away with filestream
dependencies in file/file_path
2017-12-14 20:05:46 +01:00
Brad Parker 8c0adf3594 move path_file_rename and path_file_remove into VFS 2017-12-14 13:32:26 -05:00
twinaphex 842ac40c6e Style nit 2017-12-14 19:09:29 +01:00
Alcaro 26e191f642 These have no reason to not be static 2017-12-14 18:58:20 +01:00
Alcaro ff1d452096 Implement get_path 2017-12-14 18:48:37 +01:00
twinaphex ef3ba4d989 Get rid of retro_vfs_file_putc 2017-12-14 18:45:54 +01:00
Alcaro f282044be2 this doesn't belong here. 2017-12-14 18:10:04 +01:00
Alcaro f536d25013 Too many ifdefs 2017-12-14 17:55:30 +01:00
Alcaro d5847c2391 Revert and fix "Don't use opaque handle to get around warnings and other issues"
This reverts commit e23409926e.
2017-12-14 17:28:13 +01:00
twinaphex 7bf996abe6 Cleanup 2017-12-14 16:53:19 +01:00
twinaphex b20de872a3 Remove file_stream.h dependency on vfs_implementation.c 2017-12-14 16:41:10 +01:00
twinaphex 41b1329bc1 Rewrite filestream_seek call 2017-12-14 15:56:28 +01:00
twinaphex 2c0c6ae65e Attempt to fix MSVC 2017-12-14 15:41:23 +01:00
twinaphex f6937e27f2 Add vfs_implementation to Salamander builds 2017-12-14 15:18:48 +01:00
twinaphex 10199d4c81 Remove this 2017-12-14 15:15:19 +01:00
twinaphex e23409926e Don't use opaque handle to get around warnings and other issues 2017-12-14 15:06:28 +01:00
twinaphex dadf968134 Add TODO/FIXME note 2017-12-14 14:05:55 +01:00
twinaphex 0b6c191354 Start moving file stream code over to vfs_implementation.c 2017-12-14 14:03:42 +01:00
twinaphex 7788a852c0 Some more cleanups 2017-12-14 00:16:18 +01:00
twinaphex d12df0d91f Rewrite file_stream.c - reimplement filestream_error 2017-12-14 00:01:58 +01:00
twinaphex 4dfbfc4d02 Reimplement filestream_gets 2017-12-13 19:19:49 +01:00
twinaphex adb0add226 print_buf_lines - moved 2017-12-13 05:04:52 +01:00
Twinaphex 7abf68a5b3 Merge pull request #5908 from RobLoach/patch-24
Replace double quotes in thumbnail names
2017-12-13 03:51:37 +01:00
twinaphex eeefdf980c Add menu_networking.c/menu_networking.h 2017-12-13 03:35:12 +01:00
Rob Loach cd2ae18ec1 Replace double quotes in thumbnail names 2017-12-12 13:08:24 -05:00
Twinaphex 44be5b0999 Merge pull request #5907 from hyarsan/master
Change "Retroarch" to "RetroArch" in HB Launcher for consistency.
2017-12-12 17:54:53 +01:00
hyarsan a28bc6ed23 Change "Retroarch" to "RetroArch" in HB Launcher for consistency.
In the Homebrew Launcher, RetroArch has always appeared as "Retroarch" which doesn't make sense if everything else is "RetroArch". This just does not look right and I get pissed just looking at it. lol
2017-12-12 16:57:33 +01:00
Francisco José García García 982d616025 Update psp_audio.c 2017-12-12 13:34:45 +01:00
twinaphex f8fd94f6f4 Buildfix 2017-12-12 12:22:06 +01:00
Twinaphex 709c7de40f Merge pull request #5906 from gblues/remove-trailing-whitespace
Remove trailing whitespace
2017-12-12 11:19:12 +01:00
gblues 0f7de204f7 Last batch of whitespace cleanup (post-rebase)
-- looks like a few files committed with DOS line endings
2017-12-12 00:24:46 -08:00
gblues 6904101c44 Clean up trailing whitespace
== DETAILS

Really simple code cleanup, because my editor flags trailing whitespaces
and it's pretty annoying.
2017-12-12 00:24:18 -08:00
Twinaphex 767a1f3d39 Merge pull request #5904 from bparker06/opacity
Add menu setting for window opacity
2017-12-12 00:50:38 +01:00
Brad Parker d53dbbfd4e style nits 2017-12-11 18:50:10 -05:00
Brad Parker b6644e2c3a buildfix again 2017-12-11 18:27:11 -05:00
Brad Parker c265c8328c buildfixes 2017-12-11 18:22:40 -05:00
twinaphex 621d89c52e (PSP1) Change to -O2 2017-12-12 00:17:17 +01:00
Twinaphex 237a0ab44a Merge pull request #5903 from frangarcj/psp1
(PSP) Strip and user 64MB where available
2017-12-12 00:14:58 +01:00
Brad Parker 247b9ea973 add menu setting for window opacity, includes generic display server interface 2017-12-11 18:12:42 -05:00
ggf906 940f0c6b0b (PSP) Strip and user 64MB where available 2017-12-12 00:04:35 +01:00
Twinaphex 9aa3dc2423 Buildfix 2017-12-11 22:01:54 +01:00
twinaphex 779d9a4258 Cleanup 2017-12-11 21:58:17 +01:00
twinaphex dca96ba6ad Reimplement filestream_getc 2017-12-11 21:49:51 +01:00
twinaphex 57b730ab61 Start implementing VFS layer ; first split up VFS libretro functionality
to separate header until things are finalized
2017-12-11 21:24:14 +01:00
twinaphex c03b791b46 Start adding stub VFS implementation 2017-12-11 20:51:46 +01:00
twinaphex 2a5bda2b14 C89_BUILD fix 2017-12-11 20:40:59 +01:00
twinaphex c4d8a8c800 Free after intfstream_close 2017-12-11 20:24:00 +01:00
twinaphex 784bb32c64 Cleanups 2017-12-11 19:55:42 +01:00
twinaphex a1ce8b58c4 Simply formats/xml/rxml.c 2017-12-11 18:01:56 +01:00
twinaphex 5960cd80d2 Simplify filestream_read_file 2017-12-11 17:59:18 +01:00
twinaphex ad70bb9866 Get rid of unused filestream_get_ext 2017-12-11 17:42:00 +01:00
twinaphex 43c9bb374d filestream_set_size can be made a static function 2017-12-11 17:39:56 +01:00
twinaphex 5b8f8b50e3 Reimplement filestream_eof 2017-12-11 17:36:20 +01:00
twinaphex 32511090ca (task_save.c) Move to intfstream 2017-12-11 14:56:58 +01:00
twinaphex 1cd7568f1f (gx_gfx) Go through intfstream 2017-12-11 13:26:52 +01:00
twinaphex e62e9233d7 Add intfstream_get_size 2017-12-11 13:21:44 +01:00
twinaphex 12e6f38999 (gfx/video_shader_parse) Use intfstream instead of file_stream 2017-12-11 13:01:17 +01:00
twinaphex 54ce2ec5e9 playlist.c - use intfstream 2017-12-11 12:57:53 +01:00
twinaphex 61d3f90cae Add hint defines to libretro.h 2017-12-11 12:53:47 +01:00
twinaphex 38e6d2443f Change functions 2017-12-11 12:31:14 +01:00
twinaphex fde596fae4 Cleanups 2017-12-11 12:25:44 +01:00
twinaphex 8aa4d6d148 Move convenience functions to interface_stream.c 2017-12-11 12:23:40 +01:00
twinaphex 6897f9a987 Pass hints to intfstream_open_file 2017-12-11 12:20:06 +01:00
twinaphex 318f17c4cb Start using VFS API constant defines 2017-12-11 12:15:00 +01:00
twinaphex 93ee4df5f5 Move RFILE_HINT_UNBUFFERED to file_stream.c 2017-12-11 11:47:13 +01:00
twinaphex e1461cc0de Get rid of hashes in config_file.c 2017-12-11 11:40:36 +01:00
twinaphex c950613098 C comments 2017-12-11 11:28:48 +01:00
Twinaphex af50e3daf0 Merge pull request #5899 from pyhammond/master
udev device ordering fix that now numbers input joypads correctly
2017-12-11 08:24:02 +01:00
Peter Y. Hammond b14598657c Fixed a bug where the joypad devices were not always being assigned in the same order as they were numbered under /dev/input/. This showed up mainly when using an external USB Bluetooth dongle. In that case, controllers would be assigned often in reverse order. 2017-12-10 22:22:01 -07:00
Brad Parker f3a58f4ff3 remove extra #endif 2017-12-10 22:07:25 -05:00
Brad Parker e877595ff7 add buildbot url for msvc2003 (Windows 95) 2017-12-10 20:20:44 -05:00
Twinaphex 85d9d986eb Buildfix 2017-12-10 22:46:39 +01:00
twinaphex 2fd8210e59 Create shareable filestream_getline 2017-12-10 22:35:08 +01:00
twinaphex 2e979ec537 Replace function signatures of file_stream file functions 2017-12-10 22:25:38 +01:00
twinaphex d19eaeaab8 (file_stream.c) Cleanups; buildfix 2017-12-10 22:10:32 +01:00
twinaphex 1298a257ae Make HAVE_BUFFERED_IO the new default 2017-12-10 22:07:42 +01:00
twinaphex a8e031777e * Get rid of RFILE_MODE_READ_TEXT
* Get rid of PSP ifdef sinside file_stream.c
2017-12-10 22:05:24 +01:00
twinaphex 40f82c26f7 use RFILE_MODE_READ for video_shader_parse 2017-12-10 22:01:48 +01:00
twinaphex 9d54da14b6 Get rid of READ_TEXT requirement for features_cpu 2017-12-10 21:29:49 +01:00
twinaphex 95cc8e12d2 Get rid of RFILE_MODE_READ_TEXT dependency for config file/playlist 2017-12-10 21:28:13 +01:00
Alcaro e07ed18105 Fix text mode dependency 2017-12-10 21:00:24 +01:00
twinaphex d6fd9f0cc1 Add fallback AF_INET6 path 2017-12-10 01:19:58 +01:00
Twinaphex 7654e8e268 Merge pull request #5879 from clienthax/ps3res
[PS3] Partial fix of networking
2017-12-10 00:00:03 +01:00
Twinaphex 70bc2fe3a1 Merge pull request #5895 from Monroe88/input_driver
input_driver: Map Delete key to Y button for non-unified menu keyboard controls
2017-12-09 23:31:17 +01:00
Twinaphex d82812a292 Merge pull request #5896 from bparker06/filepath
omit extra slash at end of path, Win95/98 doesn't like them
2017-12-09 23:30:46 +01:00
Brad Parker 1a928b9c50 omit extra slash at end of path, Win95/98 doesn't like them 2017-12-09 16:38:33 -05:00
Monroe88 cfde6a44db input_driver: Map Delete key to Y button for non-unified menu keyboard controls 2017-12-09 14:17:54 -06:00
Brad Parker 812a99e5ca utf: fallback to ANSI codepage on windows if UTF8 conversion isn't available 2017-12-09 14:35:58 -05:00
Brad Parker 3318cd969b win95: fallback to strdup when MultiByteToWideChar fails (it only works with MSLU) 2017-12-09 14:26:46 -05:00
Twinaphex 5e2a3ec3ff Merge pull request #5894 from Themaister/master
Various stability fixes for WSI
2017-12-09 17:31:32 +01:00
Themaister f8447c4648 Set correct buffer size. 2017-12-09 17:28:20 +01:00
Themaister 75b84b4f94 Support pending swapchain creation. 2017-12-09 17:28:20 +01:00
Themaister ac42b87400 Recreate swapchain directly if vkAcquireNextImageKHR fails. 2017-12-09 17:28:20 +01:00
Themaister 714684a4d3 Don't wait for WSI fence unless it has been signalled. 2017-12-09 17:28:20 +01:00
Twinaphex d05c305210 Merge pull request #5892 from cpsw/patch-1
Small code style change
2017-12-09 15:13:06 +01:00
cpsw 54aec6c9e8 Small code style change
Suggesting a code style change.
2017-12-09 11:01:03 -03:00
Twinaphex 620dad1204 Merge pull request #5890 from Oibaf66/patch-1
Added labels to autoconfig wii controllers
2017-12-09 10:01:23 +01:00
Fabio 0d58d9ca0d Added label to wii controllers, inverted the right stick Y axis of classic controller
The right stick Y axis of classic controller was wrong
2017-12-09 08:24:19 +01:00
Twinaphex ed1a920f46 Update config.def.h 2017-12-09 01:05:55 +01:00
Twinaphex 22d8d35721 Merge pull request #5889 from hiddenasbestos/relpath_dup_fix
Playlist duplication fixes
2017-12-09 01:03:30 +01:00
David Walters deb017e17f On Windows builds, don't use case sensitive path comparisons when pushing to a playlist. 2017-12-08 23:50:00 +00:00
David Walters 004c1d2f0a Fix for relative paths being normalised and generating a duplicate history entry. 2017-12-08 23:37:07 +00:00
Brad Parker 8f7810d921 emscripten: only fire keyup once, and don't wait so long to do so (libretro.js) 2017-12-08 18:15:22 -05:00
Andrés a15820f86a Update index.html 2017-12-08 10:25:00 -05:00
Twinaphex 8b095eda74 Merge pull request #5878 from leiradel/cheevos_loaded
Fixed cheevos_loaded being true when there are no cheevos
2017-12-08 06:39:46 +01:00
Twinaphex c6dd33dbaf Merge pull request #5881 from leiradel/master
Fixed C89 build
2017-12-08 06:39:21 +01:00
leiradel 8c1e3e5d5b Fixed CXX_BUILD 2017-12-08 00:08:16 +00:00
leiradel 4f2398dd08 Merge branch 'master' of https://github.com/libretro/RetroArch 2017-12-07 23:53:05 +00:00
leiradel c53d3d35b8 Removed TODO comment 2017-12-07 23:51:15 +00:00
Andrés 305cb6d647 fix OS identification (#5880) 2017-12-07 18:49:35 -05:00
leiradel bf8f7b444b Fixed cheevos_expr_value to be C89 compliant 2017-12-07 23:48:03 +00:00
David Walters 124ddcd27a Add dolphin bar VID/PID - treat like a wii over bluetooth connection 2017-12-07 23:44:29 +00:00
Brad Parker b0445e1e21 Bliss-Box: Work around Windows sharing violation bug by trying to open device as read/write if read-only fails. Show OSD message if it still fails. 2017-12-07 17:47:20 -05:00
clienthax a565ba0149 [PS3] Partial fix of networking 2017-12-07 22:20:02 +00:00
Brad Parker 55b738a07a implement frontend get_architecture() for windows 2017-12-07 16:32:13 -05:00
Twinaphex d840625fa9 Merge pull request #5877 from clienthax/ps3res
[PS3] Possible fix for 0x0 resolution
2017-12-07 21:03:36 +01:00
leiradel 130a001846 Fixed wrong leaderboard count 2017-12-07 19:49:39 +00:00
clienthax d6daf2f573 [PS3] Possible fix for 0x0 resolution on 2017-12-07 19:49:11 +00:00
Brad Parker fa7cd77d7d win32: improve version reporting under System Information 2017-12-07 13:49:07 -05:00
twinaphex 951918a245 Reduce size of Makefiles 2017-12-07 05:54:54 +01:00
twinaphex 542235ffd7 (XMB) Get rid of hashes 2017-12-06 21:55:21 +01:00
Twinaphex 10cf3bc235 Merge pull request #5874 from RobLoach/patch-23
Update make install for new retroarch-assets src
2017-12-06 21:02:06 +01:00
twinaphex fbf4b4813c Cleanup path_set_redirect - no more hashes 2017-12-06 20:52:29 +01:00
twinaphex fd23a751e4 Fix joypad_driver 2017-12-06 20:40:18 +01:00
twinaphex 4e9cb21e03 Don't use hashes 2017-12-06 20:38:22 +01:00
Rob Loach 494ba8685e Update make install for new retroarch-assets src
The assets over at [retroarch-assets](https://github.com/libretro/retroarch-assets) have [moved the source files](https://github.com/libretro/retroarch-assets/pull/191) so that the asset installation process is a much easier. We no longer have the need to delete the theme src directories.
2017-12-06 14:34:20 -05:00
twinaphex d5b3104cfb Cleanups/warning fixes 2017-12-06 19:51:07 +01:00
twinaphex b1f1f519d5 Don't redefine HAVE_GL_SYNC 2017-12-06 18:28:57 +01:00
twinaphex 23e6f0be37 Update 2017-12-06 16:54:23 +01:00
twinaphex a53927c5aa Fix PS3 build 2017-12-06 16:53:19 +01:00
twinaphex 06a948c706 Update 2017-12-06 14:27:14 +01:00
twinaphex 30eb7f91b4 Fix Coverity warning 2017-12-06 14:25:41 +01:00
twinaphex 47a19483d1 Don't show Overlay Settings if HAVE_OVERLAY is not defined 2017-12-06 12:43:02 +01:00
twinaphex 0cd5b9d14c Update CHANGES.md 2017-12-06 12:04:04 +01:00
Brad Parker 1755cdcdf3 Update CHANGES.md 2017-12-06 01:41:06 -05:00
Brad Parker 75eed7997b GDI: use configured message color for OSD/menu text 2017-12-06 01:41:00 -05:00
Brad Parker 1828e891ad Update CHANGES.md 2017-12-06 00:57:57 -05:00
Brad Parker 21dc650000 update JP translation 2017-12-06 00:57:35 -05:00
twinaphex 24b02bc062 Update CHANGES.md 2017-12-06 04:52:51 +01:00
twinaphex de9b0127f8 (MSVC) Buildfix 2017-12-06 04:33:54 +01:00
Andrés 0c9fce98a2 fix vid/pid enumeration on xinput controllers when the xinput controllers are interleaved with dinput (#5872) 2017-12-05 22:07:48 -05:00
twinaphex 27e5adad27 Cleanups 2017-12-06 04:05:38 +01:00
Twinaphex d881931254 Merge pull request #5867 from hiddenasbestos/more_devices
Don't limit available input devices to user count.
2017-12-06 01:43:52 +01:00
Twinaphex 6876e27e51 Merge pull request #5865 from fr500/master
Improve vscode support
2017-12-05 23:19:31 +01:00
Brad Parker f5ea4a0c65 dinput: add missing function parameter 2017-12-05 17:19:17 -05:00
David Walters 8907a1251e Only show " (#x)" after a device name if it's part of a set (x of y similarly named devices) 2017-12-05 22:10:34 +00:00
David Walters 609bcb4dc2 fix device indexing 2017-12-05 22:03:56 +00:00
Twinaphex 300dbdf883 Merge pull request #5866 from ToKe79/fix-glsync-build-error
GLsync build fix for HAVE_OPENGLES2
2017-12-05 23:03:30 +01:00
David Walters 0d189ae067 Don't limit available input devices to user count. 2017-12-05 21:21:29 +00:00
ToKe79 6bb2a0e142 GLsync build fix for HAVE_OPENGLES2 2017-12-05 21:58:01 +01:00
radius dbe6af08dd Improve vscode support
add c properties

add ming32 config too

rename tasks to allow other targets
2017-12-05 14:50:40 -05:00
Brad Parker bc4bbe79aa don't define UNICODE at all, we don't need it and it causes dinput problems (names are wchar_t) 2017-12-05 14:26:59 -05:00
twinaphex 2bdf4a5bb4 update 2017-12-05 20:08:18 +01:00
twinaphex 408878a7e1 Start making it possible for xinput_joypad to be used without
DirectInput
2017-12-05 20:04:12 +01:00
Twinaphex 7ab7ed35b7 Merge pull request #5863 from bparker06/xinput
xinput: copy VID/PID from dinput so autoconfig does not rely solely on HID name
2017-12-05 20:01:16 +01:00
bparker06 4c9bde61b5 dinput: fix memory leak of joypad name 2017-12-05 13:54:15 -05:00
Twinaphex 4d21a77d9b Merge pull request #5864 from djipi/master
Added Visual Studio 2017 support
2017-12-05 19:48:05 +01:00
Jean-Paul Mari 3eb5b757c3 Merge pull request #2 from libretro/master
Merge #2
2017-12-05 12:51:58 -05:00
Brad Parker 35ab48ee61 xinput: copy VID/PID from dinput so autoconfig does not rely solely on HID name 2017-12-05 12:47:52 -05:00
Jean-Paul Mari 38b899e4d6 Added Visual Studio 2017 support
The msvc-2017 is based on msvc-2015
2017-12-05 11:23:38 -05:00
twinaphex db4387bd30 See if it's always defined this way 2017-12-05 17:10:31 +01:00
Twinaphex 763e6f766c Silence warning 2017-12-05 16:58:20 +01:00
twinaphex b69622ea88 Avoid usage of GLsync type 2017-12-05 16:56:33 +01:00
twinaphex 32c1c3134e Fix another C89 issue 2017-12-05 16:45:57 +01:00
twinaphex f9fa2ab2b7 More C89_BUILD fixes 2017-12-05 16:44:05 +01:00
twinaphex 863858ab00 Can't have anonymous variadic macros in C89 2017-12-05 16:42:37 +01:00
twinaphex 3e81996bd3 Update D3D headers 2017-12-05 16:40:13 +01:00
twinaphex 3ede6a9aeb Some C89_BUILD fixes 2017-12-05 16:35:03 +01:00
twinaphex de900325c6 More C89_BUILD fixes 2017-12-05 16:31:58 +01:00
twinaphex 88b85c2d15 Fix it for C89 2017-12-05 16:27:39 +01:00
twinaphex 69295c2179 Fix BIT_GET 2017-12-05 16:20:52 +01:00
twinaphex 4cb739d45a Update CHANGES.md 2017-12-05 16:09:44 +01:00
twinaphex 4b4ae0c1a0 Update CHANGES.md 2017-12-05 16:09:19 +01:00
twinaphex 7ba46356e6 Cut down on code duplication 2017-12-05 15:44:41 +01:00
twinaphex 5d8df93c99 Cleanups 2017-12-05 14:30:54 +01:00
twinaphex 264d9903e8 Update NL 2017-12-05 14:24:06 +01:00
twinaphex c486fa08ca Cut down on code duplication 2017-12-05 14:11:50 +01:00
twinaphex df8a2274df Update CHANGES.md 2017-12-05 13:47:23 +01:00
twinaphex fafc96d377 Cleanups 2017-12-05 13:31:51 +01:00
twinaphex b432fb4668 Bugfix 2017-12-05 13:21:29 +01:00
twinaphex 53efad05c6 Cleanups 2017-12-05 13:15:15 +01:00
Alcaro 332aee5b0f Dehardcode some sizes (#5856) 2017-12-05 13:03:34 +01:00
twinaphex 53ce29ca31 Cleanups 2017-12-05 12:49:59 +01:00
twinaphex f0c143766e Change to 256bit macros 2017-12-05 12:07:35 +01:00
twinaphex 6c09661a64 Move defines to retro_miscellaneous.h 2017-12-05 10:42:37 +01:00
twinaphex 31cc6a8dd7 Create 256 bit macros 2017-12-05 09:51:58 +01:00
twinaphex e94300a581 Get rid of a lot of RARCH_INPUT_STATE_BIT_ macros - replace them
with BIT128_ equivalents instead
2017-12-05 09:22:56 +01:00
Alcaro 0691c9e0d3 Let's not duplicate those macros more than needed 2017-12-05 08:55:42 +01:00
twinaphex 3ccce249ea Fixes hotkey issues with MSVC 2017-12-05 08:50:24 +01:00
Alcaro 0215648a83 Make booleans boolean again
#5856

why do both BIT_ and BIT128_ exist
2017-12-05 08:34:29 +01:00
Twinaphex d535739648 Merge pull request #5860 from RobLoach/patch-22
Fix to ARM to ensure chain has been declared
2017-12-05 06:38:02 +01:00
Brad Parker 49d0299808 LEGACY_WIN32: check for target of less than Win2K instead of < vc2005, since Win98 does not support Unicode 2017-12-04 22:49:08 -05:00
Rob Loach e8a9471afd Fix to ARM to ensure chain has been declared 2017-12-04 18:53:34 -05:00
leiradel d27e6746a1 Merge branch 'master' into cheevos_loaded 2017-12-04 20:23:02 +00:00
Alcaro 75c59aedcf Update fopen_utf8.h 2017-12-04 20:23:45 +01:00
Alcaro 2f1bcb6409 Update fopen_utf8.c 2017-12-04 20:20:10 +01:00
Alcaro 908784b0ae Update griffin.c 2017-12-04 20:19:35 +01:00
Alcaro 84691c7b9b Update retro_miscellaneous.h 2017-12-04 19:15:35 +01:00
Francisco José García García 90dd2892b0 FIX sceIoOpen return error 2017-12-04 18:09:37 +01:00
Alcaro 6359aee509 Update fopen_utf8.c 2017-12-04 17:03:53 +01:00
Alcaro 486d5e77e3 Update verbosity.c 2017-12-04 16:48:17 +01:00
Alcaro a6ef704369 Update config_file.c 2017-12-04 16:47:27 +01:00
Alcaro cc2dd827b5 Update Makefile.common 2017-12-04 16:46:59 +01:00
Alcaro 8a93a9eb8e Create fopen_utf8.c 2017-12-04 16:44:34 +01:00
Alcaro 8df699984e Update fopen_utf8.h 2017-12-04 16:34:56 +01:00
Alcaro d74ad6cd5e Create fopen_utf8.h 2017-12-04 16:32:40 +01:00
twinaphex 059354de2f Cleanup for config_file_write 2017-12-04 16:26:28 +01:00
Alcaro ff4dca86f9 Turns out this is char*, let's cast because CXX_BUILD wants that 2017-12-04 15:01:58 +01:00
Alcaro fbd3a435d2 Turns out this is char*, let's cast because CXX_BUILD wants that 2017-12-04 15:01:57 +01:00
Alcaro c10859b745 Update file_stream.c 2017-12-04 14:31:31 +01:00
Alcaro dca30d533f Update file_stream.h 2017-12-04 14:31:11 +01:00
Alcaro 300052626f Use FILE* all the way
Fixes platforms where RFILE isn't using the FILE* backend, needed for #5664
2017-12-04 14:30:32 +01:00
Alcaro b9900b1fb8 This cast isn't needed, and probably breaks CXX_BUILD 2017-12-04 14:27:36 +01:00
Alcaro 1aa6ae1b38 Use FILE* all the way
Fixes platforms where RFILE isn't using the FILE* backend, needed for #5664
2017-12-04 14:25:16 +01:00
Alcaro e4bb8e7aeb Update file_stream.c 2017-12-04 13:52:11 +01:00
Alcaro 130e4522e2 Update file_stream.h 2017-12-04 13:51:25 +01:00
Alcaro 2b3cc8898a Fix this one for non-stdio backends
Why does filestream_get_fp exist
2017-12-04 13:41:04 +01:00
Alcaro 0d4ac12310 Update file_stream.c 2017-12-04 13:34:15 +01:00
Alcaro df55e6b4d1 actually, let's just completely remove it 2017-12-04 13:30:38 +01:00
Alcaro 89f7afdc8f silence warning 2017-12-04 13:28:38 +01:00
Alcaro 50148c03e2 not used anymore
https://github.com/libretro/RetroArch/commit/4e66962ba83941b85b206778828596c6ad20be33
2017-12-04 13:27:05 +01:00
twinaphex f08b049520 Move more variables 2017-12-04 13:24:27 +01:00
twinaphex 2fd720bcb3 move more variables over 2017-12-04 13:21:23 +01:00
twinaphex 9a8f73fb6c Move variables 2017-12-04 13:18:34 +01:00
twinaphex 48c3a50932 Move more variables 2017-12-04 13:03:14 +01:00
twinaphex f47888aeda Move more variables to renderchain data 2017-12-04 12:50:22 +01:00
twinaphex 19ad9aa1cb Add resolve extensions callback 2017-12-04 12:43:22 +01:00
twinaphex 69d3fd5047 Get rid of fence_count in gl struct 2017-12-04 12:03:29 +01:00
twinaphex 267e6fe85f Move fence variables to renderchain data struct 2017-12-04 12:02:53 +01:00
twinaphex 072570bbf3 (GL) Update GL1 renderchain too 2017-12-04 11:58:16 +01:00
twinaphex 05ab278aca Pass chain userdata to renderchain driver 2017-12-04 11:54:30 +01:00
twinaphex 241df59771 Get rid of include 2017-12-04 11:20:18 +01:00
twinaphex 4e342956c1 Update comment 2017-12-04 06:13:01 +01:00
twinaphex 512a1b4cb6 Cleanups 2017-12-04 06:03:11 +01:00
twinaphex 9558e569f1 We can still make use of this for PowerPC Mac 2017-12-04 05:56:03 +01:00
twinaphex c869cc5102 Refactor GL code 2017-12-04 05:55:18 +01:00
twinaphex 5a341acb5f Wrap more GL framebuffer functions 2017-12-04 04:57:58 +01:00
twinaphex 44f3341ffe Add EXT versions for OSX PPC 2017-12-04 04:42:40 +01:00
twinaphex 19d7afd0c2 remove 2017-12-04 04:30:28 +01:00
twinaphex e9af9f1b09 Add EXT version 2017-12-04 04:20:54 +01:00
twinaphex b2fbb9aeda Prepare to map DeleteFramebuffersEXT like this 2017-12-04 04:18:28 +01:00
twinaphex 52e7a533f0 Improve FBO check 2017-12-04 04:12:46 +01:00
twinaphex 6221512911 use EXT version of Framebuffer/Renderbuffer functions for MacOS X
PowerPC
2017-12-04 04:04:07 +01:00
twinaphex 0bf461c40f Try to get past OSX PowerPC crash on exit 2017-12-04 03:27:03 +01:00
twinaphex f53093de4d Default to nbio stdio for PowerPC Mac 2017-12-04 03:12:45 +01:00
neville 43f6a03110 (OSX PPC) Buildfixes 2017-12-04 02:59:06 +01:00
twinaphex 97529ade6e OSX PowerPC might not define O_CLOEXEC 2017-12-04 02:48:08 +01:00
Jean-Paul Mari 5ba7433232 Merge pull request #1 from libretro/master
Merge #1
2017-12-03 16:13:17 -05:00
Andrés 5795d9926c Merge pull request #5854 from fr500/master
this probably fixes the shader on noveau and others
2017-12-03 15:11:52 -05:00
radius 2747067f61 this probably fixes the shader on noveau and others 2017-12-03 15:10:24 -05:00
Twinaphex da233c89c9 Merge pull request #5853 from fr500/master
fix the shader and the label
2017-12-03 18:28:58 +01:00
radius 3cd7026819 fix the shader and the label 2017-12-03 12:20:07 -05:00
Twinaphex ecb84c9224 Merge pull request #5852 from fr500/master
let it snow
2017-12-03 09:38:29 +01:00
radius bada13a215 let it snow 2017-12-02 22:47:44 -05:00
twinaphex 04b26fe111 Put braces around macros 2017-12-03 03:43:05 +01:00
twinaphex 0a3fb3ec40 Change value to 1.0f 2017-12-03 03:37:06 +01:00
Twinaphex 7e4cf9b0d0 Merge pull request #5850 from fr500/master
reenable network gamepad and fix slow motion
2017-12-03 03:32:16 +01:00
radius 69c2040e55 fix slow motion 2017-12-02 21:30:09 -05:00
Twinaphex 8082dfe56c Merge pull request #5851 from QuarkTheAwesome/wiiu-toolchain-patch1
[WiiU] Toolchain: Actually fix C++ constructors/destructors (oops!)
2017-12-03 03:14:47 +01:00
Ash e9a3088a79 [WiiU] Toolchain: Actually fix C++ constructors/destructors (oops!)
Looks like I temporarily forgot how external symbols work. Fixes
https://gbatemp.net/posts/7720955; hopefully we finally have C++ under
control.
2017-12-03 11:31:30 +11:00
Brad Parker 4efc8453c2 buildfix for certain mingw environments 2017-12-02 15:59:42 -05:00
radius b1911495ad reenable network gamepad 2017-12-02 13:59:44 -05:00
bparker06 78bf72e29e blissbox: add atari pad type 2017-12-02 13:33:09 -05:00
twinaphex 2608fd1550 (task_autodetect.c) Cleanups 2017-12-02 11:36:22 +01:00
Twinaphex 5f0a9fffbb Merge pull request #5827 from hiddenasbestos/input_driver_x11
Add new lightgun/mouse-bind features to X11 driver
2017-12-02 09:18:17 +01:00
twinaphex a132e33231 Add copyright headers to ps3py 2017-12-02 05:17:14 +01:00
Brad Parker 067f5bcd16 blissbox: add 4-Play to overridden hid name 2017-12-01 22:40:17 -05:00
Brad Parker 0eb8c47166 try to fix lack of GUID type on buildbot that I cannot reproduce 2017-12-01 14:38:13 -05:00
Brad Parker b9394846dc blissbox: use win32 HID API to get pad type on windows, libusb seems broken there 2017-12-01 14:07:40 -05:00
Twinaphex 64ef42c9f9 Merge pull request #5841 from orbea/revert-5824-retroarch-assets-makefile
Revert "Use RetroArch Assets' Makefile to install Assets"
2017-12-01 15:49:12 +01:00
orbea 5d5aa7ca60 Revert "Use RetroArch Assets' Makefile to install Assets" 2017-12-01 06:26:02 -08:00
Twinaphex 8e81b04374 Merge pull request #5840 from QuarkTheAwesome/wiiu-optional-controllerpatcher
[WiiU] Make controller_patcher a compile-time option
2017-12-01 09:20:25 +01:00
Ash bf3e256a43 [WiiU] Input: Make controller_patcher a compile-time option
As discussed in libretro#5357; controller_patcher is now optional. It's
off by default; though this could be changed with a simple makefile
tweak (ENABLE_CONTROLLER_PATCHER ?= 1, perhaps?)

To re-enable controller_patcher; append ENABLE_CONTROLLER_PATCHER=1 to
your usual make command.

controller_patcher was the only user of c++ constructors in the Wii U
port, so you'll need 26a006c in your tree otherwise you will have a
blackscreen on startup.
2017-12-01 18:29:21 +11:00
Ash 26a006cfac [WiiU] Toolchain: Fix C++ constructor/destructor handling
The old setup relied on there being at least one constructor *or* the
value of *__CTOR_LIST__ being NULL. Neither of these are guaranteed; and
having no C++ constructors actually resulted in a random value being
read (which passed the NULL check!). This new setup uses the
__CTOR_END__ symbol; which is a pointer to just after the end of the
list. When there are no constructors, it has the same value as
__CTOR_LIST__; so the while loop is never entered.

This fix also allows us to re-enable destructors; in case they're ever
needed.
2017-12-01 18:18:02 +11:00
Twinaphex 40a6136319 Merge pull request #5824 from RobLoach/retroarch-assets-makefile
Use RetroArch Assets' Makefile to install Assets
2017-12-01 07:53:29 +01:00
Twinaphex f48460b114 Merge pull request #5835 from Q3CPMA/master
Really fixes HOST_NAME_MAX usage this time
2017-12-01 01:31:11 +01:00
Twinaphex 96987e7cac Merge pull request #5836 from QuarkTheAwesome/wiiu-exception
[WiiU] Exception handler fixes - coreinit offsets now working
2017-12-01 01:30:40 +01:00
Ash 52fb8276d7 [WiiU] Exception handler: minor comment tweak 2017-12-01 11:03:09 +11:00
Ash 469662345f [WiiU] Exception handler: remove opcodes; fix strcmp misuse
Thanks for @gblues for finding the strcmp bug.
I've removed the opcode display since it's a bit unsafe - if the
exception handler causes a DSI; Cafe OS will take over and freeze up the
console. This is obviously not a good thing. There are possible
situations where memory is executable and not readable; so this is just
about covering all bases until a better solution can be implemented.
Maybe we can experiment a bit more once this handler isn't being used so
often ;)
2017-12-01 10:56:54 +11:00
Ash a79d3aa8aa [WiiU] Exception handler: fix coreinit handles, add opcode to DSIs
Coreinit seems to get special handles, so adding a special case should
make its relative addresses actually become helpful again. Let's just
hope __PPCExit stays at 0x180!
Also added the violating opcode to the DSI message; may have to move it
in case it pushes stuff off the end of the screen.

Untested at time of commit. Hopefully this should make debugging #5357 a
bit easier...
2017-12-01 10:54:21 +11:00
q3cpma 6e8fb49d05 Whoops 2017-12-01 00:17:50 +01:00
Twinaphex abfb9ec0b5 Merge pull request #5832 from Q3CPMA/master
Fixes compilation on FreeBSD (and hopefully on other POSIX platforms)
2017-11-30 22:24:47 +01:00
Twinaphex b5567b52de Merge pull request #5833 from theheroGAC/patch-26
Update msg_hash_it.h
2017-11-30 22:24:27 +01:00
theheroGAC 9ee5ef0f74 Update msg_hash_it.h 2017-11-30 21:54:59 +01:00
q3cpma fa3aab9768 Fixes compilation on FreeBSD (and hopefully on other POSIX platforms) 2017-11-30 16:53:55 +01:00
David Walters a9451822b5 Improved handling of libusb hotplug capability (#5830)
* Improved handling of libusb hotplug capability

* Only deregister hotplug callback if registration happened.
2017-11-30 10:30:46 -05:00
twinaphex 6c69002ab4 Start adding not-complete kqueue codepaths - bparker - see if you can
finish this up
2017-11-30 07:28:59 +01:00
twinaphex 62280439b7 Rename epfd to fd 2017-11-30 07:00:25 +01:00
Andrés 57d617cd5f Merge pull request #5828 from fr500/master
allow building and debugging RetroArch from Visual Studio code automa…
2017-11-29 21:59:22 -05:00
twinaphex 2203deb499 Need to include config.h here 2017-11-30 03:43:51 +01:00
Brad Parker 9aeddb781a GlobalMemoryStatusEx only exists for 2000 and up 2017-11-29 19:33:39 -05:00
radius 562f7071f0 allow building and debugging RetroArch from Visual Studio code automatically on a MINGW64 (MSYS2) installation
this works if MSYS2 is installed in the default path

allow building RetroArch from the command pallete

Allow building, and starting RetroArch via vscode Tasks

use 3 whitespaces for tabs
2017-11-29 18:21:13 -05:00
leiradel b13c9a89df Merge branch 'master' into cheevos_loaded 2017-11-29 22:10:29 +00:00
Alcaro 4e66962ba8 #5664 2017-11-29 21:39:35 +00:00
David Walters 05578f0634 Show VID/PID values for unsupported devices. (#5825) 2017-11-29 15:56:18 -05:00
David Walters 5f095677a7 fix for wiiu build (#5826) 2017-11-29 15:55:31 -05:00
David Walters 7dfcc169de Add new lighgun/mouse-bind features to X11 driver 2017-11-29 18:32:58 +00:00
Andrés cc2080c04f Rename PULL_REQUEST_TEMPLATE to PULL_REQUEST_TEMPLATE.md 2017-11-29 12:03:42 -05:00
Andrés 825887810b Create PULL_REQUEST_TEMPLATE 2017-11-29 12:03:21 -05:00
Rob Loach ed99c36851 Use retroarch-assets makefile to install assets 2017-11-29 11:46:11 -05:00
Brad Parker 5453853001 remove extra paren 2017-11-29 11:32:32 -05:00
Brad Parker f41187df22 remove extra brace 2017-11-29 11:17:13 -05:00
Brad Parker 44b70efb68 style nits 2017-11-29 10:42:39 -05:00
Brad Parker 42e81dcef4 add back missing code from c5bdc02 2017-11-29 10:35:52 -05:00
Brad Parker aa1f95b3d5 undo changes in c5bdc02 that reverted my previous commits: 34491a6 28c6237 1f58d9c 61bd9d7 2017-11-29 10:22:30 -05:00
Twinaphex 17d4793c3f Merge pull request #5815 from bparker06/blissbox
initial Bliss-Box support
2017-11-29 06:59:13 +01:00
Brad Parker 5279b02dce travis: libusb package was in wrong place 2017-11-28 23:16:38 -05:00
Brad Parker e2837d7dfb add libusb to travis file 2017-11-28 22:34:34 -05:00
Brad Parker 5a2dff0ff1 only use libusb code if we have support for it 2017-11-28 22:32:41 -05:00
Brad Parker def24ef8eb blissbox: print message if detecting update mode or old firmware versions, override vid/pid check for autoconfig profiles, misc comments 2017-11-28 21:25:54 -05:00
Brad Parker 2dd64d9c11 Initial blissbox support, requires firmware 2.0. Currently limited to platforms with libusb support. 2017-11-28 18:25:12 -05:00
Brad Parker 224b581881 C89 buildfix 2017-11-28 11:43:32 -05:00
Twinaphex eddeaddb17 Merge pull request #5813 from altiereslima/master
Updated Portuguese Translation
2017-11-28 17:03:24 +01:00
altiereslima 96b7fa46dc Updated Portuguese Translation 2017-11-28 13:58:03 -02:00
Twinaphex d8af18881f Merge pull request #5812 from hiddenasbestos/input_uint64_fixes
Controller 'get all buttons state' - replace uint64_t with retro_bits_t*
2017-11-28 16:42:40 +01:00
David Walters f09477d46a additional compile fixes 2017-11-28 10:36:16 +00:00
David Walters c5bdc02d6f replace uint64_t with retro_bits_t* for pad buttons state 2017-11-28 10:04:34 +00:00
twinaphex 6ed5a911d7 Create path_mkdir_error 2017-11-28 08:59:33 +01:00
twinaphex 013d2eba40 Fix Griffin build 2017-11-28 02:52:40 +01:00
Brad Parker 130203c431 gdi: fix closing window via X button 2017-11-27 20:49:56 -05:00
Brad Parker 02cb0fc583 griffin: add -DEBUG to linker flags for MSVC is building with DEBUG=1 2017-11-27 19:43:07 -05:00
Twinaphex 54bf818372 Merge pull request #5810 from orbea/systemd
qb: Make systemd support configurable.
2017-11-27 23:57:15 +01:00
Twinaphex 8b8907a715 Merge pull request #5811 from extrowerk/haiku_support
Haiku build fix
2017-11-27 23:56:58 +01:00
Brad Parker ae6892a89a nbio: buildfix for Windows versions older than 2000 2017-11-27 17:48:07 -05:00
Brad Parker 82884b319b add missing UTF-8 BOMs back for MSVC 2017-11-27 17:42:45 -05:00
Brad Parker ab5fa13027 some systems have lowercase drive letters 2017-11-27 17:42:12 -05:00
Zoltán Mizsei 4f46402afb Haiku build fix 2017-11-27 22:33:58 +01:00
orbea 4463c0c815 qb: Make systemd support configurable. 2017-11-27 13:25:20 -08:00
Twinaphex 2fbfbd8eac Merge pull request #5808 from orbea/qb
qb: Silence some shellcheck warnings.
2017-11-27 20:28:00 +01:00
orbea fadea3730f qb: Silence some shellcheck warnings. 2017-11-27 10:03:13 -08:00
Alcaro 26008ca580 #5802 2017-11-27 17:55:05 +01:00
Brad Parker 61bd9d7d70 libusb: early return if we fail to get a config descriptor, otherwise the memory returned is invalid (and should not be freed either) 2017-11-27 11:30:29 -05:00
Brad Parker 1f58d9cd1f comment 2017-11-27 11:30:29 -05:00
Brad Parker 28c6237b47 FreeBSD: support libusb hid input driver 2017-11-27 11:30:29 -05:00
Brad Parker 34491a6025 libusb: prevent crash on driver deinit when there are no pad connections 2017-11-27 11:30:29 -05:00
Alcaro 4cc7cad454 fix missing %s 2017-11-27 17:17:07 +01:00
Alcaro 00fd39c9a0 fix missing %s 2017-11-27 17:16:38 +01:00
Alcaro a96e3e1ead fix missing %s 2017-11-27 17:16:22 +01:00
Alcaro 6394e30cb5 fix missing %s 2017-11-27 17:16:11 +01:00
Alcaro e21de200a6 fix missing %s 2017-11-27 17:15:58 +01:00
Alcaro 485ad9f6f7 add missing %s 2017-11-27 17:15:21 +01:00
Alcaro 9b99a48cdb just remembered these PRIs don't start with % 2017-11-27 17:12:30 +01:00
Alcaro 0e91822ad1 #5802 2017-11-27 17:11:43 +01:00
Alcaro c1f81616b2 #582 2017-11-27 17:09:59 +01:00
Alcaro 6eaa65ebc0 #5802 2017-11-27 17:09:33 +01:00
Alcaro 4fb12c4bd3 #5802 2017-11-27 17:09:16 +01:00
Alcaro 4275dd8f1f #5802 2017-11-27 17:09:03 +01:00
Alcaro da9cddd833 #5802 2017-11-27 17:08:41 +01:00
Alcaro 0f695f074f #5802
aren't most of the memdesc fields size_t aka uintptr_t rather than uint64_t? whatever, good enough
2017-11-27 17:07:31 +01:00
Twinaphex d4d935ce28 Merge pull request #5806 from hiddenasbestos/input_driver_winraw_2
winraw input driver update for new lightgun/mouse changes
2017-11-27 17:01:52 +01:00
Alcaro ab0e1611e7 fix #5497 close #5802
according to https://github.com/libretro/RetroArch/issues/5497#issuecomment-336640951, this header exists on everything we care about except various microsoft platforms, and all of them have constant printf strings
2017-11-27 16:57:15 +01:00
David Walters e06290a06c updated winraw driver for new lightgun/mouse binding api 2017-11-27 12:51:06 +00:00
twinaphex fc9943476c Add another edge case 2017-11-27 07:25:01 +01:00
twinaphex 70769e435c Add another edge case 2017-11-27 07:23:43 +01:00
twinaphex d75c187c5b Don't show 'Scanning of Directory Finished' if we are scanning a
file instead
2017-11-27 07:04:52 +01:00
twinaphex 9f83175182 Add Automatically Load Content To Playlist feature 2017-11-27 06:47:31 +01:00
Twinaphex 03bd93d323 Merge pull request #5801 from orbea/gnu
libretro-common: Silence redefined warning.
2017-11-27 06:35:00 +01:00
orbea 768b1b433c libretro-common: Silence redefined warning. 2017-11-26 20:14:06 -08:00
twinaphex 09c39a91d7 Cleanups 2017-11-27 04:49:21 +01:00
twinaphex 2dc9c8ead7 Comment out unused code 2017-11-27 04:43:13 +01:00
twinaphex 311b786279 Silence Coverity warning 2017-11-27 04:34:45 +01:00
Twinaphex 0273fe769a Merge pull request #5800 from orbea/qb
qb: Used explicit word splitting to silence shellcheck warnings.
2017-11-27 04:31:51 +01:00
orbea a78f72ccd3 qb: Used explicit word splitting to silence shellcheck warnings. 2017-11-26 19:08:56 -08:00
twinaphex cdf1d9a417 Indent nits 2017-11-27 03:53:46 +01:00
Twinaphex d93b9ebf4d Silence warning 2017-11-27 03:53:25 +01:00
twinaphex 88905661e3 Cleanup 2017-11-27 03:50:33 +01:00
Twinaphex 46b6a5043c Merge pull request #5796 from orbea/printf
qb: Use printf and safer quoting in the check_pkgconf and check_header functions.
2017-11-27 00:55:41 +01:00
Andrés 5088797ca5 Merge pull request #5798 from fr500/master
clear the paths here instead
2017-11-26 18:33:30 -05:00
radius 6dfb6da4ec clear the paths here instead 2017-11-26 18:33:05 -05:00
Andrés cea5ffc38c Merge pull request #5797 from fr500/master
remove this again, it causes issues saving remaps/presets/overrides
2017-11-26 18:24:15 -05:00
radius bb5f7d1cc1 remove this again, it causes issues saving remaps/presets/overrides 2017-11-26 18:22:59 -05:00
leiradel ebbd1883ff Merge branch 'master' into cheevos_loaded 2017-11-26 22:50:39 +00:00
orbea 5361950d1c qb: Use printf and safer quoting in the check_pkgconf and check_header functions. 2017-11-26 14:19:29 -08:00
Andre Leiradella 6903602665 Set cheevos_loaded to false if the cheevos and leaderboard lists are empty 2017-11-26 22:03:59 +00:00
twinaphex dfebea9109 Cleanups 2017-11-26 22:58:36 +01:00
twinaphex 00d57af005 C89_BUILD fixes 2017-11-26 22:53:42 +01:00
twinaphex 493d442f8c Silence some warnings 2017-11-26 22:43:58 +01:00
twinaphex e35394d4bd Fix MSVC 2003 build 2017-11-26 22:41:34 +01:00
twinaphex 97f971fd46 Fix C89 build 2017-11-26 22:38:12 +01:00
Twinaphex 2980772fef Merge pull request #5790 from hiddenasbestos/new_lightgun_api
New Lightgun API
2017-11-26 22:17:51 +01:00
Twinaphex fc9f1a42e0 Merge pull request #5794 from orbea/config
qb: Set configure paths without unset variables.
2017-11-26 21:45:38 +01:00
orbea fec63ae8ed qb: Set configure paths without unset variables. 2017-11-26 12:26:33 -08:00
Twinaphex d85db4e759 Merge pull request #5793 from fr500/master
Misc fixes
2017-11-26 19:47:48 +01:00
radius 6e67a6ba63 let's just clear basename instead (used to populate override, remaps, shader preset paths 2017-11-26 13:43:00 -05:00
radius 2dda04787a only disable states when hardcore mode is enabled 2017-11-26 13:40:08 -05:00
radius bc69737dae remove this, it's causing issues with the history list 2017-11-26 13:40:08 -05:00
radius 3991f9b316 add frontend name to netplay announce 2017-11-26 13:40:08 -05:00
Twinaphex 4c38ac9bae Merge pull request #5792 from bkoropoff/no-bin
Remove commited Mac binaries
2017-11-26 19:02:02 +01:00
Brian Koropoff 461b884dc0 Remove commited Mac binaries 2017-11-26 09:58:24 -08:00
meepingsnesroms 34c7d61ec7 Merge pull request #5771 from meepingsnesroms/master
Add 3ds assets, move assets from ctr to pkg/ctr
2017-11-26 09:37:05 -08:00
David Walters 6168db8aeb correct lightgun api comment 2017-11-26 17:20:41 +00:00
David Walters 59c188f75c Implement new lightgun API 2017-11-26 17:09:15 +00:00
David Walters 816ffe6fcf Change mouse button name style in localisation strings. 2017-11-26 17:04:30 +00:00
David Walters dbd9bf3b46 New lightgun binds 2017-11-26 16:59:48 +00:00
Twinaphex a7eea8349c Merge pull request #5789 from fr500/master
Fix some issues with contentless cores
2017-11-26 17:57:01 +01:00
David Walters 70ff6db30c Lightgun input localisation strings. English only 2017-11-26 16:46:52 +00:00
David Walters 218d7f88ff New lightgun API in libretro.h 2017-11-26 16:46:33 +00:00
radius db2ce016de clear paths properly before loading the next core without closing content 2017-11-26 11:33:18 -05:00
radius 1003e681cc don't assume the core never has content 2017-11-26 11:33:02 -05:00
Twinaphex 286886e0a5 Merge pull request #5788 from hiddenasbestos/mbutton_binds
Bind mouse buttons/wheel to inputs
2017-11-26 17:05:02 +01:00
David Walters c733f96a16 listen for mouse buttons/wheel when binding input 2017-11-26 15:42:47 +00:00
David Walters cdb5a656f2 dinput: only support hardware mouse index 0 2017-11-26 15:40:27 +00:00
David Walters 59812e9509 include mouse buttons in block hotkey check 2017-11-26 13:23:39 +00:00
David Walters 9682e2777b support for mouse button binds in Windows input drivers 2017-11-26 12:55:17 +00:00
David Walters b267419551 initialise/clear mbutton field 2017-11-26 11:56:55 +00:00
David Walters 25efae0630 Show mbutton binds on settings list; comma separate joy and key bins 2017-11-26 11:56:02 +00:00
David Walters 1d70fef70c load/save mbutton assignments to retroarch config 2017-11-26 11:54:10 +00:00
David Walters 56ea1253ff msg_hash strings for mouse buttons+wheel *English Only* 2017-11-26 11:51:07 +00:00
David Walters b190ac1943 Add 'mbutton' field to retro_keybind struct 2017-11-26 11:49:37 +00:00
twinaphex 66c7eccd91 Cut down on code duplication 2017-11-26 07:35:06 +01:00
twinaphex 064ad8145a Cut down on code duplication 2017-11-26 07:29:19 +01:00
twinaphex e049b51a21 Cleanup 2017-11-26 07:17:31 +01:00
twinaphex ec92edb998 Cut down on code duplication 2017-11-26 07:10:18 +01:00
twinaphex 1dab4a7f83 Cut dowon on code duplication 2017-11-26 07:04:05 +01:00
twinaphex 2e7a532c89 Cut down on code duplication 2017-11-26 06:57:05 +01:00
twinaphex edfe5e6991 Cut down on code duplication 2017-11-26 06:49:58 +01:00
twinaphex d5c30fd68c Cleanups 2017-11-26 06:35:53 +01:00
twinaphex ce91c082e4 Cut down on code duplication 2017-11-26 06:23:30 +01:00
Twinaphex 3a13b3a065 Merge pull request #5784 from orbea/pkgconf
qb: Create a check_val function for the no pkg-config fallback path.
2017-11-26 06:13:33 +01:00
twinaphex 99fcc63b38 Cut down on code duplication 2017-11-26 06:12:51 +01:00
twinaphex bd1e06bbb7 Group identical functions 2017-11-26 06:03:34 +01:00
twinaphex f15aaa0b2c Reduce differences between the two functions 2017-11-26 05:07:35 +01:00
twinaphex dee66ab6bb Get rid of this - seems to be a highly problematic codepath in
general
2017-11-26 05:04:18 +01:00
Unknown 7f2f90de24 Fix name issue with nekop2, use ${DEVKITPRO} for smdhtool, got devkitarm setup, compiles and works 2017-11-25 18:35:05 -08:00
twinaphex 771efdabc0 Fix edge case issue where game's label was not being properly set
when loading two games one after another from a playlist/collection -
the previous game's name was being used instead
2017-11-26 03:01:28 +01:00
orbea 631f0c4a8b qb: Create a check_val function for the no pkg-config fallback path. 2017-11-25 17:42:41 -08:00
meepingsnesroms 621567e0e6 Merge pull request #2 from libretro/master
Merge upstream
2017-11-25 17:26:02 -08:00
twinaphex 9875bbbd7d Silence some Coverity warnings 2017-11-26 01:06:48 +01:00
Twinaphex 0dfb6e2c64 Merge pull request #5783 from orbea/pkgconf
qb: Define $2_LIBS in the check_lib function.
2017-11-26 01:02:40 +01:00
twinaphex 5e3eb437ac Change RARCH_ERR invocations 2017-11-26 00:57:02 +01:00
orbea 714aee7068 Makefile.common: Use new defines from config.mk. 2017-11-25 15:40:08 -08:00
orbea fc5f04a762 qb: Define $2_LIBS in the check_lib function. 2017-11-25 15:27:01 -08:00
twinaphex cda840683b playlist.c - some optimizations 2017-11-26 00:02:28 +01:00
twinaphex df7513be27 Cleanups 2017-11-25 23:39:31 +01:00
Twinaphex 591ffed24a Merge pull request #5782 from orbea/pkgconf
qb: Add $PKG_CONF_USED to the check_lib function to help avoid undefined references.
2017-11-25 23:10:42 +01:00
twinaphex b4ac3e7b2f Cleanups 2017-11-25 23:06:56 +01:00
twinaphex 8cc2e9bade Cleanups 2017-11-25 23:06:25 +01:00
twinaphex e8b21cbafe Refactor code 2017-11-25 22:59:47 +01:00
twinaphex b604a1871a Create command_playlist_update_write_file and move it to command.c 2017-11-25 22:54:42 +01:00
orbea e0eb2b8a31 qb: Add $PKG_CONF_USED to the check_lib function to help avoid undefined referenecs. 2017-11-25 13:52:52 -08:00
twinaphex ca616f3e32 Cleanup 2017-11-25 22:33:43 +01:00
twinaphex bf8cfe4123 Add HAVE_MENU ifdef 2017-11-25 22:00:56 +01:00
Twinaphex 93451012ec Merge pull request #5781 from orbea/pkgconf
qb: Clean up empty defines in config.mk
2017-11-25 21:58:00 +01:00
twinaphex a2f721a623 Cleanups 2017-11-25 21:54:30 +01:00
twinaphex ee26a2f2af Restore this 2017-11-25 21:52:30 +01:00
twinaphex aa14dca1b9 Cleanups 2017-11-25 21:51:32 +01:00
twinaphex c992d92c99 Updates 2017-11-25 21:45:28 +01:00
twinaphex 7f3738d3cd More refactoring 2017-11-25 21:40:29 +01:00
twinaphex 086ff6e60a More refactoring 2017-11-25 21:35:00 +01:00
orbea bc4d14149a qb: Clean up empty defines in config.mk 2017-11-25 12:27:41 -08:00
twinaphex 1d9d6d2f40 Refactoring some identical code 2017-11-25 21:18:25 +01:00
Alcaro 3fa035ba2a This include doesn't go here 2017-11-25 20:25:59 +01:00
Twinaphex c2a933e16c Merge pull request #5780 from orbea/egl
qb: Fix undefined references to EGL without pkg-config.
2017-11-25 20:24:33 +01:00
orbea 82db21ed0b qb: Fix undefined references to EGL without pkg-config. 2017-11-25 11:05:40 -08:00
Twinaphex 673219a5cc Merge pull request #5779 from RobLoach/playlist
[XMB] Add To Favorites Playlist Icon
2017-11-25 19:01:22 +01:00
Rob Loach 7e7c17596d Add Add To Favorites Playlist icon id 2017-11-25 12:51:12 -05:00
twinaphex 369be389f4 Don't need HAVE_MMAP for linux 2017-11-25 18:42:12 +01:00
Twinaphex ff7a244f5b use Unix mmap for OSX/macOS now 2017-11-25 18:39:09 +01:00
twinaphex e78ec12973 Can't have redefinitions of nbio_t in Griffin 2017-11-25 18:33:22 +01:00
twinaphex fe12e079bb Reimplement NBIO windows mmap 2017-11-25 17:38:37 +01:00
twinaphex 72b157bfcd DOn't rely on HASVE_MMAP for nbio_windowsmmap.c 2017-11-25 07:26:06 +01:00
Twinaphex 3335c9e246 Merge pull request #5773 from orbea/exists
qb: Clean up qb.comp.sh
2017-11-25 06:22:55 +01:00
twinaphex 72fdfb1edd Add HAVE_CONFIG_H to file_stream.c 2017-11-25 06:17:19 +01:00
twinaphex 0485bab0ef Add HAVE_CONFIG_H to nbio_intf.c 2017-11-25 06:15:30 +01:00
Twinaphex 679275857f Fix warnings 2017-11-25 05:55:48 +01:00
Twinaphex 3902d4c1cf Fix warning 2017-11-25 05:53:56 +01:00
twinaphex d4c3108b88 Implement new nbio interface implementations 2017-11-25 05:51:33 +01:00
twinaphex 7a772b9cd4 Create nbio_intf.c 2017-11-25 05:35:55 +01:00
twinaphex 81e543a4c9 Cleanups 2017-11-25 05:21:35 +01:00
twinaphex 64a6d6f184 Turn nbio_windowsmmap.c Unicode compatible 2017-11-25 05:18:30 +01:00
Twinaphex 8087df7c2c Merge pull request #5777 from bkoropoff/fmt-win
task_database: fix crash from Windows-incomptabile format string
2017-11-25 04:00:56 +01:00
Brian Koropoff fb5e788c1e task_database: fix crash from Windows-incomptabile format string 2017-11-24 18:17:43 -08:00
twinaphex 395e84ede2 Style nits 2017-11-25 02:18:24 +01:00
twinaphex ac651b7581 Cleanups 2017-11-25 02:12:15 +01:00
twinaphex 0f6c453428 Cleanups 2017-11-25 02:10:04 +01:00
Alcaro 0868c4e346 Fix build 2017-11-25 01:53:09 +01:00
twinaphex d0eef2579e remove this - shouldn't be necessary 2017-11-25 00:54:51 +01:00
Alcaro b5722127c7 Fix docs 2017-11-25 00:26:13 +01:00
Alcaro 5999999cd3 Add Linux-native nbio too 2017-11-24 23:56:05 +01:00
Twinaphex f929a83ae9 Merge pull request #5775 from hiddenasbestos/blank_bind
Show "---" for unbound controls, not "(Key: )"
2017-11-24 23:25:34 +01:00
Alcaro 5a6aad3dc7 Add mmap nbio for Windows too 2017-11-24 22:43:22 +01:00
David Walters b3a53ac8ca Show "---" for unbound controls, not "(Key: )" 2017-11-24 21:36:49 +00:00
twinaphex cb16aac7ce Revert "Invoke MAPPER_INIT after CONTROLLERS_INIT"
This reverts commit fdf79e2e9b.
2017-11-24 22:18:36 +01:00
Alcaro 7817ba2340 Add ugly check 2017-11-24 22:14:03 +01:00
Alcaro 053fbd6f27 Add mmap-based nbio implementation (which is too fast for the tests but otherwise passes) 2017-11-24 22:08:57 +01:00
twinaphex 92ea40d96e Fix edge case when file is empty 2017-11-24 21:39:10 +01:00
orbea 51dfbd98b1 qb: Prefer pkgconf over the legacy GNU pkg-config. 2017-11-24 12:12:56 -08:00
orbea 06f10d1368 qb: Clean up qb.comp.sh 2017-11-24 12:12:56 -08:00
Twinaphex 5ce0aca435 Merge pull request #5772 from orbea/add
qb: Combine the add_include_dirs and add_library_dirs functions
2017-11-24 20:47:08 +01:00
orbea 892c6b864a qb: Combine the add_include_dirs and add_library_dirs functions 2017-11-24 10:22:57 -08:00
meepingsnesroms 03f2a325fb Add 3ds assets, move assets from ctr to pkg/ctr
NOTE: I do not have the 3ds version of devkitARM installed so I could
not test it if moving the assets to pkg/ctr broke compiling but I did
change the assets paths in Makefile.ctr and Makefile.ctr.salimander so
it should compile.
2017-11-24 09:28:47 -08:00
Twinaphex fe7b12f274 Merge pull request #5770 from orbea/check_lib
qb: Clean up for qb.libs.sh
2017-11-24 17:39:09 +01:00
twinaphex fdf79e2e9b Invoke MAPPER_INIT after CONTROLLERS_INIT 2017-11-24 17:30:08 +01:00
orbea cf45945aa8 qb: Combine the check_switch_c and check_switch_cxx functions. 2017-11-24 08:21:38 -08:00
orbea 0c9308cd87 qb: Remove unused and redundant check_code_c and check_code_cxx functions. 2017-11-24 08:21:38 -08:00
orbea fbbaf7d5b1 qb: Check which c language is being used in its own function. 2017-11-24 08:21:12 -08:00
orbea f952f392b8 qb: Use printf and better quoting in the check_lib function. 2017-11-24 07:16:33 -08:00
Twinaphex 45fb685375 Merge pull request #5762 from hiddenasbestos/extend_input_bits
Extend input bind limit to 256
2017-11-24 14:48:53 +01:00
Andrés 76b24f7bb4 Merge pull request #5769 from fr500/master
fix a mistake I made when rewriting this code
2017-11-24 08:46:56 -05:00
radius 88e84d1c79 fix a mistake I made when rewriting this code 2017-11-24 08:40:29 -05:00
David Walters 5be7921445 reimplement using retro_bits_t; pass by ref; raise bind limit to 256 2017-11-24 11:19:17 +00:00
David Walters 5294d43bf1 use C89 compatible comment style 2017-11-24 09:28:26 +00:00
twinaphex 2916e6c7ac Cleanups 2017-11-24 06:45:21 +01:00
twinaphex a6f2e46b6a Cleanups - don't call path_get so often 2017-11-24 06:40:13 +01:00
Andrés d973a1eeae Merge pull request #5767 from fr500/master
use a single list for achievements
2017-11-23 22:53:28 -05:00
radius 9b19d334c7 use a single list for achievements 2017-11-23 22:49:11 -05:00
Twinaphex a490039253 Merge pull request #5759 from fr500/master
Achievement badges
2017-11-24 04:09:33 +01:00
twinaphex 8662d66f2e Try to be safer with calloc allocation 2017-11-24 04:08:32 +01:00
radius ca2d2e4ba5 undefine this 2017-11-23 21:43:08 -05:00
Twinaphex af41b0fd6b Merge pull request #5766 from orbea/define
qb: Combine the add_define_header and add_define_make functions.
2017-11-24 03:39:49 +01:00
orbea 1ca43bd819 qb: Combine the add_define_header and add_define_make functions. 2017-11-23 18:36:19 -08:00
radius 36b9bd9675 free CHEEVOS_VAR_JSON 2017-11-23 21:33:41 -05:00
Twinaphex 75f9351f7e Merge pull request #5765 from libretro/revert-5763-single_list
Revert "use a single list for achievements"
2017-11-24 02:50:33 +01:00
Andrés 3744108790 Revert "use a single list for achievements" 2017-11-23 20:49:42 -05:00
Twinaphex 67bec764a4 Merge pull request #5764 from orbea/config.h
qb: Turn $CONFIG_DEFINES from a temporary file into a variable.
2017-11-24 02:44:39 +01:00
Twinaphex c2eaf98c00 Merge pull request #5763 from fr500/single_list
use a single list for achievements
2017-11-24 02:43:36 +01:00
orbea 6351e21d9e qb: Turn $CONFIG_DEFINES from a temporary file into a variable. 2017-11-23 17:40:28 -08:00
twinaphex 7ac5eda1e1 Rewrite input_mapper code - no longer have an internal pointer
inside input_mapper
2017-11-24 02:37:53 +01:00
radius 64f927292f use a single list for achievements 2017-11-23 20:35:54 -05:00
Twinaphex 2d3aa5b917 Merge pull request #5760 from orbea/config.h
qb: Rewrite the create_config_header function to use printf instead of echo.
2017-11-24 02:21:12 +01:00
Twinaphex fcde68ecde Merge pull request #5761 from orbea/config.mk
qb: Turn $MAKEFILE_DEFINES from a temporary file into a variable.
2017-11-24 02:20:54 +01:00
radius f641979769 add badges.c to griffin 2017-11-23 19:43:16 -05:00
radius 556eba5e58 update CHANGES.md 2017-11-23 18:26:46 -05:00
David Walters b0e383d5f0 Extend input bind limit to 128 2017-11-23 23:04:09 +00:00
orbea 2fb0cb79ec qb: Turn $MAKEFILE_DEFINES from a temporary file into a variable. 2017-11-23 14:53:39 -08:00
radius faef304755 use filestream_write_file instead 2017-11-23 17:53:28 -05:00
radius a865720d25 indentation 2017-11-23 17:49:55 -05:00
radius 459b669798 use filestream 2017-11-23 17:47:50 -05:00
radius a80fc4a762 revert this for now 2017-11-23 17:40:22 -05:00
orbea ca534ffa56 qb: Rewrite the create_config_header function to use printf instead of echo. 2017-11-23 14:07:37 -08:00
radius 1c0e692070 rewrite so the variables are not allocated on stack 2017-11-23 17:07:22 -05:00
Twinaphex b16f22b357 Merge pull request #5757 from orbea/config.mk
qb: Rewrite the create_config_make function to use printf instead of echo
2017-11-23 22:10:48 +01:00
Twinaphex 60726b78b6 Merge pull request #5756 from Q3CPMA/master
Set _NET_WM_PID
2017-11-23 22:10:25 +01:00
radius e55adf164a Merge remote-tracking branch 'gamedragon/cheevos_badges' 2017-11-23 14:42:55 -05:00
orbea d3139754bc qb: Rewrite the create_config_make function to use printf instead of echo. 2017-11-23 10:30:59 -08:00
q3cpma 18b2bd527c Set _NET_WM_PID
Also set WM_CLIENT_MACHINE since https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html
says you must do so if setting the first.
2017-11-23 19:15:59 +01:00
twinaphex 096686140d Rewrite command_event_save_config 2017-11-23 18:07:28 +01:00
GameDragon2k 2b9636d782 Add xmb menu items 2017-11-23 11:55:53 -05:00
twinaphex 3bda00edaf (libretro-common) Add strldup to compat/strl 2017-11-23 17:51:55 +01:00
Twinaphex 3c99ccbea5 Merge pull request #5747 from meleu/patch-9
cheevos: do not show "0 of 0 cheevos unlocked" msg
2017-11-23 17:10:51 +01:00
Twinaphex 5517e6b2cf Merge pull request #5748 from TotalCaesar659/patch-2
Making shortcut description more concrete and adding Russian translation
2017-11-23 17:10:36 +01:00
Twinaphex 3c0dc87c42 Merge pull request #5750 from orbea/build
qb: Honor the --build option.
2017-11-23 17:10:23 +01:00
Twinaphex d0aed5c03d Merge pull request #5751 from justinweiss/ios-expand-symlinks-for-default-dirs
Expand symlinks in default configuration paths for iOS devices
2017-11-23 17:10:13 +01:00
Twinaphex 3944d77ba9 Merge pull request #5754 from orbea/pkgconf
qb: Fix undefined udev references without pkg-config
2017-11-23 17:08:20 +01:00
orbea c4dd3bbdce qb: Fix undefined udev references without pkg-config 2017-11-23 07:18:33 -08:00
GameDragon2k 4f9119d42e Fix conflict 2017-11-23 08:06:33 -05:00
GameDragon2k cfe59bcf2a Cheevos badges 2017-11-23 08:04:54 -05:00
GameDragon2k 63090ae2e4 Simple http request function to download badges. 2017-11-23 08:02:41 -05:00
GameDragon2k 8b9ad28ecb channges to populate and apply badges. 2017-11-23 07:56:47 -05:00
GameDragon2k ec2808685d Add files to handle all cheevos badges. 2017-11-23 07:56:46 -05:00
GameDragon2k 84e80e47df Initial test for badge icon 2017-11-23 07:53:24 -05:00
Justin Weiss 4069ddc926 Expand symlinks in default configuration paths for iOS devices
CFSearchPathForDirectoriesInDomains returns a path in /var, while
getenv(HOME) returns the same path in /private/var. /var is a symlink
to /private/var, but when config is generated, the difference in paths
means they won't be abbreviated correctly.

This change expands symlinks before filling in the default
directories, so those paths will match.
2017-11-22 20:07:27 -08:00
meleu 4318a43ab3 better grammar 2017-11-22 22:34:48 -02:00
orbea e82502f80a qb: Document syntax better. 2017-11-22 15:52:57 -08:00
orbea 8ab308d9dd qb: Honor the --build option.
This makes some distros happy even if it does nothing.
2017-11-22 15:40:15 -08:00
Alcaro f0becad9d9 Document this one's syntax 2017-11-22 23:46:23 +01:00
TotalCaesar659 e72c2bd34a Making description more concrete and adding Russian translation 2017-11-22 19:04:59 +03:00
meleu 8e0ee72283 cheevos: do not show "0 of 0 cheevos unlocked" msg
**This will happen only if `cheevos_verbose_enable = true`.**

When loading a game tha doesn't have any achievement, instead of showing an OSD message saying "You have 0 of 0 achievements unlocked." just say "This game doesn't have any achievement."

I've just added an `if(cheevos_locals.core.count > 0)` and added indentation. The diff makes it look like it got more changes than it actually got.
2017-11-22 12:56:17 -02:00
Twinaphex d5f950a624 Merge pull request #5740 from theheroGAC/patch-25
small change to translation
2017-11-22 13:08:39 +01:00
Twinaphex d991908ba8 Merge pull request #5741 from orbea/vulkan
Silence -Wunused-function warning.
2017-11-22 13:08:24 +01:00
Twinaphex b35f6a48cb Merge pull request #5742 from TotalCaesar659/patch-1
Updated Russian translation
2017-11-22 13:08:12 +01:00
Twinaphex 74693e62d3 Merge pull request #5744 from bparker06/x11_icon
x11: add RetroArch logo to window title bar
2017-11-22 13:07:02 +01:00
Brad Parker 20b73cd676 x11: add RetroArch logo to window title bar 2017-11-22 00:01:42 -05:00
Brad Parker 3c975fe6bd add option to force 32-bit compilation on 64-bit compilers 2017-11-21 23:57:20 -05:00
TotalCaesar659 bfe84d3348 Updated Russian translation 2017-11-22 04:14:34 +03:00
orbea e10dd4d95e Silence -Wunused-function warning. 2017-11-21 13:29:46 -08:00
theheroGAC ca1ae5276e small change to translation 2017-11-21 20:42:46 +01:00
twinaphex c0567266b1 Fix mistake 2017-11-21 19:40:39 +01:00
twinaphex 29b421512a Try to be safer 2017-11-21 19:22:44 +01:00
meepingsnesroms 9e3d631824 Fix outdated name of function (libretrodb_tool) 2017-11-19 13:25:17 -08:00
1055 changed files with 46367 additions and 29954 deletions

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
## Guidelines
1. Rebase before opening a pull request
2. If you are sending several unrelated fixes or features, use a branch and a separate pull request for each
3. If possible try squashing everything in a single commit. This is particularly beneficial in the case of feature merges since it allows easy bisecting when a problem arises
## Description
[Description of the pull request, detail any issues you are fixing or any features you are implementing]
## Related Issues
[Any issues this pull request may be addressing]
## Related Pull Requests
[Any other PRs from related repositories that might be needed for this pull request to work]
## Reviewers
[If possible @mention all the people that should review your pull request]
+2 -2
View File
@@ -95,8 +95,6 @@ pkg/apple/iOS/modules/
obj-unix/
.vagrant/
.MAKEFILE_DEFINES
.CONFIG_DEFINES
/pkg/msvc/Release Cg/*.exe
/pkg/msvc/Release Cg/*.iobj
/pkg/msvc/Release Cg/*.ipdb
@@ -104,6 +102,8 @@ obj-unix/
/pkg/msvc/Release Cg/*.lpl
/pkg/msvc/Release Cg/*.cfg
/pkg/msvc/*.db
/pkg/msvc/.vs
/pkg/msvc/*/.vs
/pkg/msvc/msvc-2010/Release Cg/RetroArc.27FF7CE1.tlog/*.tlog
/pkg/msvc/msvc-2010/Release Cg/RetroArc.27FF7CE1.tlog/*.lastbuildstate
/pkg/msvc/msvc-2010/Release Cg/*.log
+1
View File
@@ -55,6 +55,7 @@ addons:
- libsdl-image1.2-dev
- libsdl-mixer1.2-dev
- libsdl-ttf2.0-dev
- libusb-1.0-0-dev
coverity_scan:
project:
name: "RetroArch"
+125
View File
@@ -0,0 +1,125 @@
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared",
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw32",
"includePath": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw32/include",
"C:/msys64/mingw32/i686-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "msys2-mingw64",
"includePath": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/msys64/mingw64/include",
"C:/msys64/mingw64/x86_64-w64-mingw32/include",
"${workspaceRoot}/libretro-common/include",
"${workspaceRoot}/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}
+48
View File
@@ -0,0 +1,48 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "msys2-mingw64 debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarch.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "msys2-mingw32 debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/retroarch.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\mingw32\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
+12
View File
@@ -0,0 +1,12 @@
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.env.windows": {
"PATH": "/mingw64/lib/ccache/bin:/mingw64/lib/ccache/bin:/mingw64/lib/ccache/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:$PATH",
"MSYSTEM": "MINGW64",
},
"terminal.integrated.cursorBlinking": true,
"editor.tabSize": 3,
"editor.renderWhitespace": "all",
"editor.insertSpaces": true,
}
+91
View File
@@ -0,0 +1,91 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"taskName": "msys2-mingw64 build",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true },
"command": "./configure; make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
{
"taskName": "msys2-mingw64 build with debug symbols",
"type": "shell",
"group": "build",
"command": "./configure; DEBUG=1 make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
{
"taskName": "msys2-mingw64 rebuild",
"type": "shell",
"group": "build",
"command": "make -j2",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
{
"taskName": "msys2-mingw64 clean",
"type": "shell",
"group": "build",
"command": "make clean",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
{
"taskName": "msys2-mingw64 run",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true },
"command": "./retroarch -v",
"options": {
"shell": {
"executable": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"-c"
]
}
}
}
]
}
+46
View File
@@ -1,4 +1,50 @@
# 1.7.0 (future)
- CHEEVOS: Add badges for achievements, shows thumbnail images of achievements.
- CHEEVOS: Leaderboard support.
- CHEEVOS: Only disable savestates on hardcore mode if achievements are not available.
- COMMANDLINE: Fix fullscreen toggle switch.
- COMMON: Add 'Automatically Load Content To Playlist' feature, enabled by default.
- COMMON: Fix slowmotion ratio always being reset back to 1.
- COMMON: Optimized NBIO implementations now for Apple, Windows, and Linux. Uses mmap for Linux/Windows/BSD if/when available. File I/O should now be much faster for loading images inside the menu.
- COMMON: Native Blissbox support now for latest firmware as of writing (2.0). Implementation through libusb and/or native Windows HID.
- COMMON: New lightgun API.
- COMMON: New VFS (Virtual File System) API.
- COMMON: Fixed some playlist bugs.
- COMMON: New snow shader.
- COMMON: Fix Quick Menu title.
- COMMON: Fix loading cores that require no content one after another.
- EMSCRIPTEN: Fix references to browserfs.
- FREEBSD: Support libusb HID input driver.
- HAIKU: Buildfix.
- INPUT: Map clear button to DEL key.
- LINUX/X11: Add RetroArch logo to window title bar.
- LINUX/X11: Input driver now supports new lightgun code.
- LINUX/X11: Support window transparency (requires a compositing window manager).
- LOBBIES: Fix for crash on join netplay rooms via touch / glui.
- LOCALIZATION: Update Italian translation.
- LOCALIZATION: Update Japanese translation.
- LOCALIZATION: Update Portuguese-Brazilian translation.
- LOCALIZATION: Update Russian translation.
- OSX/PPC: Fix the GL2 renderchain, had to use EXT versions of framebuffer/renderbuffer functions.
- PS3: HTTP requests / downloads should now work.
- PS3: Core Updater now works.
- PS3: Improved font rendering, enable STB Unicode font renderer.
- PSP: Make it work with Vita's Adrenaline.
- PSP: Fix audio sync.
- PSP: Fix content loading, port should be functional again.
- PSP: Use 64MB when available.
- SCANNER: Fix crash from Windows-incompatible format string.
- VITA: Improve packaging, installation times.
- WIIU: Disabled the controller patcher for now since it was the source of many stability issues.
- WINDOWS: Add MSVC 2017 solution.
- WINDOWS: Get rid of the empty console window in MSVC 2010 builds.
- WINDOWS: Raw input driver now supports new lightgun code.
- WINDOWS: Use configured OSD/text message color on GDI driver.
- WINDOWS/XINPUT: Populate XInput VID/PID from DInput so autoconfig doesn't rely solely on joypad names
- WINDOWS/XINPUT: Fix crash that occurs in some situations with Steam running and a Steam Controller plugged in.
- WINDOWS: Improve version reporting under System Information.
- WINDOWS: Support window transparency.
- WINDOWS: Correct usage of GetWindowPlacement per MS docs, fixes game window position on Win95/98.
# 1.6.9
- COMMON: Small memory leak.
+9 -10
View File
@@ -119,10 +119,16 @@ endif
RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ))
ifneq ($(X86),)
CFLAGS += -m32
CXXLAGS += -m32
LDFLAGS += -m32
endif
ifneq ($(SANITIZER),)
CFLAGS := -fsanitize=$(SANITIZER) $(CFLAGS)
CXXFLAGS := -fsanitize=$(SANITIZER) $(CXXFLAGS)
LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS)
CFLAGS := -fsanitize=$(SANITIZER) $(CFLAGS)
CXXFLAGS := -fsanitize=$(SANITIZER) $(CXXFLAGS)
LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS)
endif
ifneq ($(findstring $(GPERFTOOLS),profiler),)
@@ -199,13 +205,6 @@ install: $(TARGET)
mkdir -p $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/glui; \
cp -r media/assets/xmb/ $(DESTDIR)$(ASSETS_DIR)/retroarch/assets; \
cp -r media/assets/glui/ $(DESTDIR)$(ASSETS_DIR)/retroarch/assets; \
echo "Removing unneeded source image files.."; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/flatui/src; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/monochrome/src; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/retroactive/src; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/neoactive/src; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/retrosystem/src; \
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb/dot-art/src; \
echo "Asset copying done."; \
fi
+98 -13
View File
@@ -127,6 +127,10 @@ ifeq ($(HAVE_UNIX), 1)
OBJ += frontend/drivers/platform_unix.o
endif
ifeq ($(TARGET), retroarch_3ds)
OBJ += frontend/drivers/platform_ctr.o
endif
ifeq ($(findstring Haiku,$(OS)),)
LIBS += -lm
DEBUG_FLAG = -g
@@ -170,6 +174,7 @@ OBJ += frontend/frontend.o \
tasks/task_audio_mixer.o \
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.o \
$(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.o \
$(LIBRETRO_COMM_DIR)/compat/fopen_utf8.o \
$(LIBRETRO_COMM_DIR)/lists/file_list.o \
$(LIBRETRO_COMM_DIR)/lists/dir_list.o \
$(LIBRETRO_COMM_DIR)/file/retro_dirent.o \
@@ -178,12 +183,17 @@ OBJ += frontend/frontend.o \
$(LIBRETRO_COMM_DIR)/streams/file_stream_transforms.o \
$(LIBRETRO_COMM_DIR)/streams/interface_stream.o \
$(LIBRETRO_COMM_DIR)/streams/memory_stream.o \
$(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.o \
$(LIBRETRO_COMM_DIR)/lists/string_list.o \
$(LIBRETRO_COMM_DIR)/string/stdstring.o \
$(LIBRETRO_COMM_DIR)/memmap/memalign.o \
setting_list.o \
list_special.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_stdio.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_linux.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_unixmmap.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_windowsmmap.o \
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_intf.o \
$(LIBRETRO_COMM_DIR)/file/file_path.o \
file_path_special.o \
file_path_str.o \
@@ -192,6 +202,7 @@ OBJ += frontend/frontend.o \
$(LIBRETRO_COMM_DIR)/audio/audio_mixer.o \
input/input_driver.o \
gfx/video_coord_array.o \
gfx/video_display_server.o \
gfx/video_driver.o \
camera/camera_driver.o \
wifi/wifi_driver.o \
@@ -238,6 +249,7 @@ OBJ += frontend/frontend.o \
camera/drivers/nullcamera.o \
wifi/drivers/nullwifi.o \
gfx/drivers/nullgfx.o \
gfx/display_servers/dispserv_null.o \
audio/drivers/nullaudio.o \
input/drivers/nullinput.o \
input/drivers_hid/null_hid.o \
@@ -318,7 +330,7 @@ endif
endif
ifeq ($(HAVE_SSA),1)
LIBS += -lass
LIBS += $(SSA_LIBS)
endif
# LibretroDB
@@ -565,12 +577,21 @@ ifeq ($(HAVE_CORETEXT), 1)
OBJ += gfx/drivers_font_renderer/coretext.o
endif
ifeq ($(TARGET), retroarch_3ds)
OBJ += gfx/drivers_font/ctr_font.o
endif
ifeq ($(HAVE_OSS), 1)
OBJ += audio/drivers/oss.o
else ifeq ($(HAVE_OSS_BSD), 1)
OBJ += audio/drivers/oss.o
endif
ifeq ($(TARGET), retroarch_3ds)
OBJ += audio/drivers/ctr_csnd_audio.o \
audio/drivers/ctr_dsp_audio.o
endif
ifeq ($(HAVE_ALSA), 1)
OBJ += audio/drivers/alsa.o
@@ -597,7 +618,7 @@ ifeq ($(HAVE_AL), 1)
ifeq ($(OSX),1)
LIBS += -framework OpenAL
else
LIBS += -lopenal
LIBS += $(AL_LIBS)
endif
endif
@@ -753,6 +774,7 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/menu_event.o \
menu/menu_entries.o \
menu/menu_setting.o \
menu/menu_networking.o \
menu/menu_shader.o \
menu/widgets/menu_filebrowser.o \
menu/widgets/menu_dialog.o \
@@ -808,7 +830,7 @@ ifeq ($(HAVE_THREADS), 1)
audio/audio_thread_wrapper.o
DEFINES += -DHAVE_THREADS
ifeq ($(findstring Haiku,$(OS)),)
LIBS += -lpthread
LIBS += $(THREADS_LIBS)
endif
endif
@@ -840,6 +862,13 @@ endif
CFLAGS += -I$(DEPS_DIR)/libvita2d/include
endif
ifeq ($(TARGET), retroarch_3ds)
OBJ += gfx/drivers/ctr_gfx.o \
menu/drivers_display/menu_display_ctr.o \
input/drivers/ctr_input.o \
input/drivers_joypad/ctr_joypad.o
endif
ifeq ($(HAVE_WAYLAND), 1)
OBJ += gfx/drivers_context/wayland_ctx.o \
input/drivers/wayland_input.o
@@ -870,12 +899,12 @@ endif
ifeq ($(HAVE_X11), 1)
OBJ += input/common/input_x11_common.o \
input/drivers/x11_input.o \
gfx/common/dbus_common.o \
gfx/common/x11_common.o \
gfx/common/xinerama_common.o
gfx/common/xinerama_common.o \
gfx/display_servers/dispserv_x11.o
LIBS += $(X11_LIBS) $(XEXT_LIBS) $(XF86VM_LIBS) $(XINERAMA_LIBS)
DEFINES += $(X11_CFLAGS) $(XEXT_CFLAGS) $(XF86VM_CFLAGS) $(XINERAMA_CFLAGS)
DEFINES += -DHAVE_X11 $(X11_CFLAGS) $(XEXT_CFLAGS) $(XF86VM_CFLAGS) $(XINERAMA_CFLAGS)
ifeq ($(HAVE_XCB),1)
LIBS += -lX11-xcb
endif
@@ -898,6 +927,7 @@ endif
ifeq ($(HAVE_DBUS), 1)
LIBS += $(DBUS_LIBS)
CFLAGS += $(DBUS_CFLAGS)
OBJ += gfx/common/dbus_common.o
endif
ifeq ($(HAVE_UDEV), 1)
@@ -912,7 +942,11 @@ ifeq ($(HAVE_THREADS), 1)
ifeq ($(HAVE_HID), 1)
DEFINES += -DHAVE_LIBUSB
OBJ += input/drivers_hid/libusb_hid.o
LIBS += -lusb-1.0
ifneq ($(findstring BSD,$(OS)),)
LIBS += -lusb
else
LIBS += -lusb-1.0
endif
endif
endif
endif
@@ -1062,7 +1096,7 @@ endif
else
DEFINES += -DHAVE_GL_SYNC
OBJ += $(LIBRETRO_COMM_DIR)/glsym/glsym_gl.o
GL_LIBS := -lGL
GL_LIBS := $(OPENGL_LIBS)
ifeq ($(OSX), 1)
GL_LIBS := -framework OpenGL
OBJ += gfx/drivers_context/cgl_ctx.o
@@ -1394,13 +1428,14 @@ ifeq ($(HAVE_BUILTINZLIB),1)
$(DEPS_DIR)/libz/uncompr.o \
$(DEPS_DIR)/libz/zutil.o
else
ifeq ($(HAVE_ZLIB),1)
ifeq ($(HAVE_ZLIB), 1)
OBJ += $(ZLIB_OBJS)
endif
endif
ifeq ($(HAVE_7ZIP),1)
ifeq ($(HAVE_FLAC),1)
ifeq ($(HAVE_7ZIP), 1)
ifeq ($(HAVE_ZLIB), 1)
ifeq ($(HAVE_FLAC), 1)
DEFINES += -DHAVE_CHD -DWANT_SUBCODE -DWANT_RAW_DATA_SECTOR
CFLAGS += -I$(LIBRETRO_COMM_DIR)/formats/libchdr
OBJ += $(LIBRETRO_COMM_DIR)/formats/libchdr/bitstream.o \
@@ -1411,6 +1446,7 @@ ifeq ($(HAVE_FLAC),1)
$(LIBRETRO_COMM_DIR)/streams/chd_stream.o
endif
endif
endif
# Video4Linux 2
@@ -1476,6 +1512,7 @@ ifeq ($(HAVE_NETWORKING), 1)
OBJ += cheevos/cheevos.o \
cheevos/var.o \
cheevos/cond.o \
cheevos/badges.o \
$(LIBRETRO_COMM_DIR)/utils/md5.o
endif
@@ -1507,7 +1544,7 @@ ifeq ($(HAVE_NETWORKING), 1)
$(DEPS_DIR)/miniupnpc/minixml.o \
$(DEPS_DIR)/miniupnpc/minisoap.o
else
LIBS += -lminiupnpc
LIBS += $(MINIUPNPC_LIBS)
endif
endif
endif
@@ -1520,9 +1557,10 @@ ifneq ($(findstring Win32,$(OS)),)
OBJ += gfx/drivers/gdi_gfx.o \
gfx/drivers_context/gdi_ctx.o \
gfx/drivers_font/gdi_font.o \
gfx/display_servers/dispserv_win32.o \
menu/drivers_display/menu_display_gdi.o
LIBS += -lmsimg32
LIBS += -lmsimg32 -lhid -lsetupapi
endif
ifeq ($(HAVE_AVFOUNDATION), 1)
@@ -1574,3 +1612,50 @@ ifneq ($(findstring DOS,$(OS)),)
OBJ += menu/drivers_display/menu_display_vga.o
endif
endif
ifeq ($(HAVE_STATIC_VIDEO_FILTERS), 1)
OBJ += gfx/video_filters/2xsai.o \
gfx/video_filters/super2xsai.o \
gfx/video_filters/supereagle.o \
gfx/video_filters/2xbr.o \
gfx/video_filters/darken.o \
gfx/video_filters/epx.o \
gfx/video_filters/scale2x.o \
gfx/video_filters/blargg_ntsc_snes.o \
gfx/video_filters/lq2x.o \
gfx/video_filters/phosphor2x.o
endif
ifeq ($(WANT_IOSUHAX), 1)
DEFINES += -I$(DEPS_DIR)/libiosuhax
CFLAGS += -I$(DEPS_DIR)/libiosuhax
OBJ += $(DEPS_DIR)/libiosuhax/iosuhax.o \
$(DEPS_DIR)/libiosuhax/iosuhax_devoptab.o \
$(DEPS_DIR)/libiosuhax/iosuhax_disc_interface.o
endif
ifeq ($(WANT_LIBFAT), 1)
DEFINES += -I$(DEPS_DIR)/libfat/include
CFLAGS += -I$(DEPS_DIR)/libfat/include
OBJ += $(DEPS_DIR)/libfat/cache.o \
$(DEPS_DIR)/libfat/directory.o \
$(DEPS_DIR)/libfat/disc.o \
$(DEPS_DIR)/libfat/fatdir.o \
$(DEPS_DIR)/libfat/fatfile.o \
$(DEPS_DIR)/libfat/file_allocation_table.o \
$(DEPS_DIR)/libfat/filetime.o \
$(DEPS_DIR)/libfat/libfat.o \
$(DEPS_DIR)/libfat/lock.o \
$(DEPS_DIR)/libfat/partition.o
endif
ifeq ($(HAVE_STATIC_AUDIO_FILTERS), 1)
OBJ += libretro-common/audio/dsp_filters/echo.o \
libretro-common/audio/dsp_filters/eq.o \
libretro-common/audio/dsp_filters/chorus.o \
libretro-common/audio/dsp_filters/iir.o \
libretro-common/audio/dsp_filters/panning.o \
libretro-common/audio/dsp_filters/phaser.o \
libretro-common/audio/dsp_filters/reverb.o \
libretro-common/audio/dsp_filters/wahwah.o
endif
+18 -44
View File
@@ -9,21 +9,21 @@ BUILD_3DS = 1
BUILD_CIA = 1
LIBCTRU_NO_DEPRECATION = 1
APP_TITLE = Retroarch 3DS
APP_DESCRIPTION = Retroarch 3DS
APP_TITLE = RetroArch 3DS
APP_DESCRIPTION = RetroArch 3DS
APP_AUTHOR = Team Libretro
APP_PRODUCT_CODE = RETROARCH-3DS
APP_UNIQUE_ID = 0xBAC00
APP_ICON = ctr/assets/default.png
APP_BANNER = ctr/assets/libretro_banner.png
APP_AUDIO = ctr/assets/silent.wav
APP_RSF = ctr/tools/template.rsf
APP_ICON = pkg/ctr/assets/default.png
APP_BANNER = pkg/ctr/assets/libretro_banner.png
APP_AUDIO = pkg/ctr/assets/silent.wav
APP_RSF = pkg/ctr/tools/template.rsf
APP_SYSTEM_MODE = 64MB
APP_SYSTEM_MODE_EXT = 124MB
APP_BIG_TEXT_SECTION = 0
APP_USE_SVCHAX = 0
include ctr/Makefile.cores
include pkg/ctr/Makefile.cores
OBJ :=
OBJ += gfx/drivers/ctr_shaders/ctr_sprite.o
@@ -61,42 +61,16 @@ else
HAVE_ZARCH = 0
HAVE_MATERIALUI = 1
HAVE_XMB = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
include Makefile.common
BLACKLIST :=
BLACKLIST += input/input_overlay.o
BLACKLIST += tasks/task_overlay.o
OBJ := $(filter-out $(BLACKLIST),$(OBJ))
OBJ += gfx/drivers/ctr_gfx.o
OBJ += gfx/drivers_font/ctr_font.o
OBJ += menu/drivers_display/menu_display_ctr.o
OBJ += input/drivers/ctr_input.o
OBJ += input/drivers_joypad/ctr_joypad.o
OBJ += audio/drivers/ctr_csnd_audio.o
OBJ += audio/drivers/ctr_dsp_audio.o
OBJ += frontend/drivers/platform_ctr.o
OBJ += gfx/video_filters/2xsai.o
OBJ += gfx/video_filters/super2xsai.o
OBJ += gfx/video_filters/supereagle.o
OBJ += gfx/video_filters/2xbr.o
OBJ += gfx/video_filters/darken.o
OBJ += gfx/video_filters/epx.o
OBJ += gfx/video_filters/scale2x.o
OBJ += gfx/video_filters/blargg_ntsc_snes.o
OBJ += gfx/video_filters/lq2x.o
OBJ += gfx/video_filters/phosphor2x.o
OBJ += libretro-common/audio/dsp_filters/echo.o
OBJ += libretro-common/audio/dsp_filters/eq.o
OBJ += libretro-common/audio/dsp_filters/chorus.o
OBJ += libretro-common/audio/dsp_filters/iir.o
OBJ += libretro-common/audio/dsp_filters/panning.o
OBJ += libretro-common/audio/dsp_filters/phaser.o
OBJ += libretro-common/audio/dsp_filters/reverb.o
OBJ += libretro-common/audio/dsp_filters/wahwah.o
endif
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitpro")
endif
@@ -190,14 +164,14 @@ NM := $(PREFIX)nm
LD := $(CXX)
ifneq ($(findstring Linux,$(shell uname -a)),)
MAKEROM = ctr/tools/makerom-linux
BANNERTOOL = ctr/tools/bannertool-linux
MAKEROM = pkg/ctr/tools/makerom-linux
BANNERTOOL = pkg/ctr/tools/bannertool-linux
else ifneq ($(findstring Darwin,$(shell uname -a)),)
MAKEROM = ctr/tools/makerom-mac
BANNERTOOL = ctr/tools/bannertool-mac
MAKEROM = pkg/ctr/tools/makerom-mac
BANNERTOOL = pkg/ctr/tools/bannertool-mac
else
MAKEROM = ctr/tools/makerom.exe
BANNERTOOL = ctr/tools/bannertool.exe
MAKEROM = pkg/ctr/tools/makerom.exe
BANNERTOOL = pkg/ctr/tools/bannertool.exe
endif
%.o: %.vsh %.gsh
@@ -228,15 +202,15 @@ endif
%.vsh:
$(TARGET).smdh: $(APP_ICON)
smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
$(DEVKITPRO)/devkitARM/bin/smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
$(TARGET).3dsx: $(TARGET).elf
ifeq ($(APP_BIG_TEXT_SECTION), 1)
cp ctr/big_text_section.xml $(TARGET).xml
cp pkg/ctr/big_text_section.xml $(TARGET).xml
else
rm -f $(TARGET).xml
endif
-3dsxtool $< $@ $(_3DSXFLAGS)
$(DEVKITPRO)/devkitARM/bin/3dsxtool $< $@ $(_3DSXFLAGS)
$(TARGET).elf: ctr/3dsx_custom_crt0.o
$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@
+14 -13
View File
@@ -11,10 +11,10 @@ APP_DESCRIPTION = Retroarch 3DS
APP_AUTHOR = Team Libretro
APP_PRODUCT_CODE = RETROARCH-3DS
APP_UNIQUE_ID = 0xBAC00
APP_ICON = ctr/assets/default.png
APP_BANNER = ctr/assets/libretro_banner.png
APP_AUDIO = ctr/assets/silent.wav
APP_RSF = ctr/tools/template.rsf
APP_ICON = pkg/ctr/assets/default.png
APP_BANNER = pkg/ctr/assets/libretro_banner.png
APP_AUDIO = pkg/ctr/assets/silent.wav
APP_RSF = pkg/ctr/tools/template.rsf
APP_SYSTEM_MODE = 64MB
APP_SYSTEM_MODE_EXT = 124MB
@@ -35,6 +35,7 @@ OBJ := ctr/ctr_system.o \
libretro-common/compat/compat_strl.o \
libretro-common/file/config_file.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
libretro-common/hash/rhash.o \
file_path_str.o \
verbosity.o
@@ -44,7 +45,7 @@ ifeq ($(strip $(DEVKITPRO)),)
endif
ifeq ($(strip $(CTRULIB)),)
CTRULIB = $(DEVKITPRO)/ctrulib
CTRULIB = $(DEVKITPRO)/libctru
endif
APP_TITLE := $(shell echo "$(APP_TITLE)" | cut -c1-128)
@@ -122,14 +123,14 @@ NM := $(PREFIX)nm
LD := $(CXX)
ifneq ($(findstring Linux,$(shell uname -a)),)
MAKEROM = ctr/tools/makerom-linux
BANNERTOOL = ctr/tools/bannertool-linux
MAKEROM = pkg/ctr/tools/makerom-linux
BANNERTOOL = pkg/ctr/tools/bannertool-linux
else ifneq ($(findstring Darwin,$(shell uname -a)),)
MAKEROM = ctr/tools/makerom-mac
BANNERTOOL = ctr/tools/bannertool-mac
MAKEROM = pkg/ctr/tools/makerom-mac
BANNERTOOL = pkg/ctr/tools/bannertool-mac
else
MAKEROM = ctr/tools/makerom.exe
BANNERTOOL = ctr/tools/bannertool.exe
MAKEROM = pkg/ctr/tools/makerom.exe
BANNERTOOL = pkg/ctr/tools/bannertool.exe
endif
%.o: %.vsh %.gsh
@@ -160,11 +161,11 @@ endif
%.vsh:
$(TARGET).smdh: $(APP_ICON)
smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
$(DEVKITPRO)/devkitARM/bin/smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
$(TARGET).3dsx: $(TARGET).elf
ifeq ($(APP_BIG_TEXT_SECTION), 1)
cp ctr/big_text_section.xml $(TARGET).xml
cp pkg/ctr/big_text_section.xml $(TARGET).xml
else
rm -f $(TARGET).xml
endif
+2 -20
View File
@@ -20,6 +20,8 @@ HAVE_SDL = 0
HAVE_SDL2 = 1
HAVE_ZLIB = 1
WANT_ZLIB = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
MEMORY = 536870912
# XXX: setting this to 1/2 currently crashes Firefox nightly
@@ -51,26 +53,6 @@ endif
include Makefile.common
OBJ += gfx/video_filters/2xsai.o
OBJ += gfx/video_filters/super2xsai.o
OBJ += gfx/video_filters/supereagle.o
OBJ += gfx/video_filters/2xbr.o
OBJ += gfx/video_filters/darken.o
OBJ += gfx/video_filters/epx.o
OBJ += gfx/video_filters/scale2x.o
OBJ += gfx/video_filters/blargg_ntsc_snes.o
OBJ += gfx/video_filters/lq2x.o
OBJ += gfx/video_filters/phosphor2x.o
OBJ += libretro-common/audio/dsp_filters/echo.o
OBJ += libretro-common/audio/dsp_filters/eq.o
OBJ += libretro-common/audio/dsp_filters/chorus.o
OBJ += libretro-common/audio/dsp_filters/iir.o
OBJ += libretro-common/audio/dsp_filters/panning.o
OBJ += libretro-common/audio/dsp_filters/phaser.o
OBJ += libretro-common/audio/dsp_filters/reverb.o
OBJ += libretro-common/audio/dsp_filters/wahwah.o
CFLAGS += -Ideps/libz -Ideps -Ideps/stb
libretro = libretro_emscripten.bc
+7 -5
View File
@@ -334,7 +334,7 @@ else ifeq ($(platform), windows_msvc6_x86)
PLATCFLAGS += -D_WIN32 -D_WIN32_WINNT=0x0351 -D__STDC_CONSTANT_MACROS -D_MBCS
LDFLAGS += shell32.lib user32.lib gdi32.lib comdlg32.lib winmm.lib ole32.lib
VCDIR ?= $(shell reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\DevStudio\6.0\Products\Microsoft Visual C++" -v "ProductDir" | grep -o '[A-Z]:\\.*')
VCDIR ?= $(shell reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\DevStudio\6.0\Products\Microsoft Visual C++" -v "ProductDir" | grep -io '[A-Z]:\\.*')
PATH := $(shell IFS=$$'\n'; cygpath "$(VCDIR)/bin"):$(PATH)
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VCDIR)/../Common/MSDev98/Bin")
@@ -493,8 +493,8 @@ else ifneq (,$(findstring windows_msvc2010,$(platform)))
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE")
INCLUDE := $(shell IFS=$$'\n'; cygpath -w "$(VS100COMNTOOLS)../../VC/include")
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -io '[A-Z]:\\.*')
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -io '[A-Z]:\\.*')
WindowsSdkDir := $(WindowsSdkDir:\=)
ifeq ($(HAVE_DIRECTX), 1)
@@ -568,7 +568,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform)))
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS110COMNTOOLS)../IDE")
INCLUDE := $(shell IFS=$$'\n'; cygpath -w "$(VS110COMNTOOLS)../../VC/include")
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -v "KitsRoot81" | grep -o '[A-Z]:\\.*')
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -v "KitsRoot81" | grep -io '[A-Z]:\\.*')
WindowsSdkDir := $(WindowsSdkDir:\=)
ifeq ($(HAVE_DIRECTX), 1)
@@ -642,7 +642,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform)))
PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS120COMNTOOLS)../IDE")
INCLUDE := $(shell IFS=$$'\n'; cygpath -w "$(VS120COMNTOOLS)../../VC/include")
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -v "KitsRoot81" | grep -o '[A-Z]:\\.*')
WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -v "KitsRoot81" | grep -io '[A-Z]:\\.*')
WindowsSdkDir := $(WindowsSdkDir:\=)
ifeq ($(HAVE_DIRECTX), 1)
@@ -833,6 +833,7 @@ ifeq ($(DEBUG), 1)
endif
CFLAGS += -Od -Zi -D_DEBUG -MTd -TP
LDFLAGS += -DEBUG
else
CFLAGS += -O0 -g -DDEBUG
endif
@@ -843,6 +844,7 @@ else ifeq ($(platform), vita)
else ifneq (,$(findstring msvc,$(platform)))
ifeq ($(platform), windows_msvc2003_x86)
CFLAGS += -Wp64
LDFLAGS += -SUBSYSTEM:WINDOWS -ENTRY:mainCRTStartup
endif
CFLAGS += -O2 -DNDEBUG -MT -TP
+13 -1
View File
@@ -63,7 +63,19 @@ endif
PPU_SRCS = griffin/griffin.c
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
endif
ifeq ($(CEX_BUILD), 1)
DEFINES += -DCEX_BUILD
endif
ifeq ($(ODE_BUILD), 1)
DEFINES += -DODE_BUILD
endif
ifeq ($(HAVE_GCMGL), 1)
DEFINES += -DHAVE_GCMGL
+12
View File
@@ -63,6 +63,18 @@ PPU_SRCS = griffin/griffin.c
DEFINES += -DHAVE_RGUI -DHAVE_MATERIALUI -DHAVE_XMB -DHAVE_MENU -DRARCH_INTERNAL
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
endif
ifeq ($(CEX_BUILD), 1)
DEFINES += -DCEX_BUILD
endif
ifeq ($(ODE_BUILD), 1)
DEFINES += -DODE_BUILD
endif
ifeq ($(HAVE_GCMGL), 1)
DEFINES += -DHAVE_GCMGL
GL_LIBS := -L. -lrgl_ps3
+13
View File
@@ -27,6 +27,18 @@ STRIP = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-strip.exe
INCFLAGS = -I. -Idefines -Ilibretro-common/include -Ideps/libz
DEFINES = -D__CELLOS_LV2__ -DIS_SALAMANDER -DRARCH_CONSOLE -DHAVE_SYSUTILS -DHAVE_SYSMODULES -DHAVE_RARCH_EXEC
ifeq ($(DEX_BUILD), 1)
DEFINES += -DDEX_BUILD
endif
ifeq ($(CEX_BUILD), 1)
DEFINES += -DCEX_BUILD
endif
ifeq ($(ODE_BUILD), 1)
DEFINES += -DODE_BUILD
endif
PPU_CFLAGS := $(PPU_OPTIMIZE_LV) $(INCFLAGS) $(DEFINES)
PPU_CXXFLAGS := $(PPU_OPTIMIZE_LV) $(INCFLAGS) $(DEFINES)
@@ -44,6 +56,7 @@ PPU_SRCS = frontend/frontend_salamander.c \
libretro-common/compat/compat_strl.c \
libretro-common/compat/compat_strcasestr.c \
libretro-common/streams/file_stream.c \
libretro-common/vfs/vfs_implementation.c \
libretro-common/file/config_file.c \
file_path_str.c \
verbosity.c
+4 -2
View File
@@ -1,6 +1,8 @@
BUILD_PRX = 1
BUILD_PRX = 0
PSP_LARGE_MEMORY = 1
DEBUG = 0
HAVE_KERNEL_PRX = 1
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0
HAVE_THREADS = 0
BIG_STACK = 0
@@ -11,7 +13,7 @@ TARGET = retroarchpsp
ifeq ($(DEBUG), 1)
OPTIMIZE_LV := -O0 -g
else
OPTIMIZE_LV := -O3 -g
OPTIMIZE_LV := -O2
endif
ifeq ($(WHOLE_ARCHIVE_LINK), 1)
+5 -3
View File
@@ -1,4 +1,5 @@
BUILD_PRX = 1
BUILD_PRX = 0
PSP_LARGE_MEMORY = 1
HAVE_FILE_LOGGER = 0
DEBUG = 0
@@ -7,7 +8,7 @@ TARGET = retroarchpsp_salamander
ifeq ($(DEBUG), 1)
OPTIMIZE_LV := -O0 -g
else
OPTIMIZE_LV := -O2 -g
OPTIMIZE_LV := -O2
endif
INCDIR = $(PSPPATH)/include libretro-common/include
@@ -24,7 +25,7 @@ ifeq ($(HAVE_FILE_LOGGER), 1)
CFLAGS += -DHAVE_FILE_LOGGER
endif
CFLAGS += $(RARCH_DEFINES)
CFLAGS += $(RARCH_DEFINES)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = RetroArch
@@ -45,6 +46,7 @@ OBJS = frontend/frontend_salamander.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/file/config_file.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
libretro-common/hash/rhash.o \
file_path_str.o \
verbosity.o \
+2 -18
View File
@@ -47,6 +47,8 @@ else
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
@@ -60,24 +62,6 @@ else
OBJ += input/drivers_joypad/psp_joypad.o
OBJ += audio/drivers/psp_audio.o
OBJ += frontend/drivers/platform_psp.o
OBJ += gfx/video_filters/2xsai.o
OBJ += gfx/video_filters/super2xsai.o
OBJ += gfx/video_filters/supereagle.o
OBJ += gfx/video_filters/2xbr.o
OBJ += gfx/video_filters/darken.o
OBJ += gfx/video_filters/epx.o
OBJ += gfx/video_filters/scale2x.o
OBJ += gfx/video_filters/blargg_ntsc_snes.o
OBJ += gfx/video_filters/lq2x.o
OBJ += gfx/video_filters/phosphor2x.o
OBJ += libretro-common/audio/dsp_filters/echo.o
OBJ += libretro-common/audio/dsp_filters/eq.o
OBJ += libretro-common/audio/dsp_filters/chorus.o
OBJ += libretro-common/audio/dsp_filters/iir.o
OBJ += libretro-common/audio/dsp_filters/panning.o
OBJ += libretro-common/audio/dsp_filters/phaser.o
OBJ += libretro-common/audio/dsp_filters/reverb.o
OBJ += libretro-common/audio/dsp_filters/wahwah.o
endif
+1
View File
@@ -46,6 +46,7 @@ OBJS = frontend/frontend_salamander.o \
libretro-common/compat/compat_strcasestr.o \
libretro-common/file/config_file.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
libretro-common/hash/rhash.o \
file_path_str.o \
verbosity.o
+1
View File
@@ -61,6 +61,7 @@ OBJ = frontend/frontend_salamander.o \
libretro-common/lists/string_list.o \
libretro-common/lists/dir_list.o \
libretro-common/streams/file_stream.o \
libretro-common/vfs/vfs_implementation.o \
libretro-common/file/retro_dirent.o \
libretro-common/encodings/encoding_utf.o \
libretro-common/compat/compat_strl.o \
+35 -35
View File
@@ -18,24 +18,27 @@ OBJ += wiiu/system/exception_handler.o
OBJ += wiiu/system/missing_libc_functions.o
OBJ += wiiu/fs/sd_fat_devoptab.o
OBJ += wiiu/fs/fs_utils.o
OBJ += wiiu/controller_patcher/ControllerPatcher.o
OBJ += wiiu/controller_patcher/ControllerPatcherWrapper.o
OBJ += wiiu/controller_patcher/ConfigReader.o
OBJ += wiiu/controller_patcher/config/ConfigParser.o
OBJ += wiiu/controller_patcher/config/ConfigValues.o
OBJ += wiiu/controller_patcher/network/ControllerPatcherNet.o
OBJ += wiiu/controller_patcher/network/TCPServer.o
OBJ += wiiu/controller_patcher/network/UDPClient.o
OBJ += wiiu/controller_patcher/network/UDPServer.o
OBJ += wiiu/controller_patcher/patcher/ControllerPatcherUtils.o
OBJ += wiiu/controller_patcher/patcher/ControllerPatcherHID.o
OBJ += wiiu/controller_patcher/utils/CPRetainVars.o
OBJ += wiiu/controller_patcher/utils/CPStringTools.o
OBJ += wiiu/controller_patcher/utils/PadConst.o
OBJ += wiiu/controller_patcher/utils/FSHelper.o
OBJ += wiiu/tex_shader.o
OBJ += wiiu/hbl.o
ifeq ($(ENABLE_CONTROLLER_PATCHER), 1)
OBJ += wiiu/controller_patcher/ControllerPatcher.o
OBJ += wiiu/controller_patcher/ControllerPatcherWrapper.o
OBJ += wiiu/controller_patcher/ConfigReader.o
OBJ += wiiu/controller_patcher/config/ConfigParser.o
OBJ += wiiu/controller_patcher/config/ConfigValues.o
OBJ += wiiu/controller_patcher/network/ControllerPatcherNet.o
OBJ += wiiu/controller_patcher/network/TCPServer.o
OBJ += wiiu/controller_patcher/network/UDPClient.o
OBJ += wiiu/controller_patcher/network/UDPServer.o
OBJ += wiiu/controller_patcher/patcher/ControllerPatcherUtils.o
OBJ += wiiu/controller_patcher/patcher/ControllerPatcherHID.o
OBJ += wiiu/controller_patcher/utils/CPRetainVars.o
OBJ += wiiu/controller_patcher/utils/CPStringTools.o
OBJ += wiiu/controller_patcher/utils/PadConst.o
OBJ += wiiu/controller_patcher/utils/FSHelper.o
endif
DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
@@ -68,6 +71,10 @@ else
HAVE_NETWORKING = 1
HAVE_CHEEVOS = 1
# WANT_IFADDRS = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
WANT_LIBFAT = 1
WANT_IOSUHAX = 1
include Makefile.common
BLACKLIST :=
@@ -83,24 +90,6 @@ else
OBJ += input/drivers_joypad/wiiu_joypad.o
OBJ += audio/drivers/wiiu_audio.o
OBJ += frontend/drivers/platform_wiiu.o
OBJ += gfx/video_filters/2xsai.o
OBJ += gfx/video_filters/super2xsai.o
OBJ += gfx/video_filters/supereagle.o
OBJ += gfx/video_filters/2xbr.o
OBJ += gfx/video_filters/darken.o
OBJ += gfx/video_filters/epx.o
OBJ += gfx/video_filters/scale2x.o
OBJ += gfx/video_filters/blargg_ntsc_snes.o
OBJ += gfx/video_filters/lq2x.o
OBJ += gfx/video_filters/phosphor2x.o
OBJ += libretro-common/audio/dsp_filters/echo.o
OBJ += libretro-common/audio/dsp_filters/eq.o
OBJ += libretro-common/audio/dsp_filters/chorus.o
OBJ += libretro-common/audio/dsp_filters/iir.o
OBJ += libretro-common/audio/dsp_filters/panning.o
OBJ += libretro-common/audio/dsp_filters/phaser.o
OBJ += libretro-common/audio/dsp_filters/reverb.o
OBJ += libretro-common/audio/dsp_filters/wahwah.o
endif
DEFINES += -DHAVE_KEYMAPPER
@@ -154,10 +143,13 @@ CFLAGS += -ffast-math -Werror=implicit-function-declaration
#CFLAGS += -Wall
#todo: remove -DWIIU and use the built-in macros instead (HW_WUP or __wiiu__).
CFLAGS += -DWIIU -DMSB_FIRST
CFLAGS += -DWIIU -DMSB_FIRST -D__WUT__
CFLAGS += -DHAVE_MAIN
CFLAGS += -DHAVE_UPDATE_ASSETS
CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE
ifeq ($(ENABLE_CONTROLLER_PATCHER), 1)
CFLAGS += -DENABLE_CONTROLLER_PATCHER
endif
CFLAGS += -DHAVE_FILTERS_BUILTIN $(DEFINES)
ifneq ($(PC_DEVELOPMENT_IP_ADDRESS),)
@@ -176,7 +168,15 @@ CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -D_GNU_SOURCE
LDFLAGS += -Wl,--gc-sections
LIBS := $(WHOLE_START) -lretro_wiiu $(WHOLE_END) -lm -lfat -liosuhax
LIBS := $(WHOLE_START) -lretro_wiiu $(WHOLE_END) -lm
ifneq ($(WANT_LIBFAT), 1)
LIBS += -lfat
endif
ifneq ($(WANT_IOSUHAX), 1)
LIBS += -liosuhax
endif
RPX_OBJ = wiiu/system/stubs_rpl.o
+1
View File
@@ -26,6 +26,7 @@ OBJ += libretro-common/file/retro_dirent.o
OBJ += libretro-common/compat/compat_strl.o
OBJ += libretro-common/file/config_file.o
OBJ += libretro-common/streams/file_stream.o
OBJ += libretro-common/vfs/vfs_implementation.o
OBJ += libretro-common/hash/rhash.o
OBJ += file_path_str.o
OBJ += verbosity.o
+1
View File
@@ -63,6 +63,7 @@ RetroArch also emphasizes on being easy to integrate into various launcher front
RetroArch has been ported to the following platforms:
- DOS
- Windows
- Linux
- FreeBSD
+38 -38
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -111,7 +111,7 @@ static const audio_driver_t *audio_drivers[] = {
#endif
#if defined(PSP) || defined(VITA)
&audio_psp,
#endif
#endif
#ifdef _3DS
&audio_ctr_csnd,
&audio_ctr_dsp,
@@ -150,7 +150,7 @@ static uint64_t audio_driver_free_samples_count = 0;
static size_t audio_driver_buffer_size = 0;
static size_t audio_driver_data_ptr = 0;
static bool audio_driver_control = false;
static bool audio_driver_control = false;
static bool audio_driver_mixer_mute_enable = false;
static bool audio_driver_mute_enable = false;
static bool audio_driver_use_float = false;
@@ -212,12 +212,12 @@ static void compute_audio_buffer_statistics(void)
accum_var += diff * diff;
}
#if defined(_MSC_VER) && _MSC_VER <= 1200
#if defined(_MSC_VER) && _MSC_VER <= 1200
/* FIXME: error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64 */
#else
stddev = (unsigned)sqrt((double)accum_var / (samples - 2));
avg_filled = 1.0f - (float)avg / audio_driver_buffer_size;
deviation = (float)stddev / audio_driver_buffer_size;
#else
stddev = (unsigned)sqrt((double)accum_var / (samples - 2));
avg_filled = 1.0f - (float)avg / audio_driver_buffer_size;
deviation = (float)stddev / audio_driver_buffer_size;
#endif
low_water_size = (unsigned)(audio_driver_buffer_size * 3 / 4);
high_water_size = (unsigned)(audio_driver_buffer_size / 4);
@@ -335,13 +335,13 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
size_t max_bufsamples = AUDIO_CHUNK_SIZE_NONBLOCKING * 2;
settings_t *settings = config_get_ptr();
/* Accomodate rewind since at some point we might have two full buffers. */
size_t outsamples_max = AUDIO_CHUNK_SIZE_NONBLOCKING * 2 * AUDIO_MAX_RATIO *
size_t outsamples_max = AUDIO_CHUNK_SIZE_NONBLOCKING * 2 * AUDIO_MAX_RATIO *
settings->floats.slowmotion_ratio;
convert_s16_to_float_init_simd();
convert_float_to_s16_init_simd();
conv_buf = (int16_t*)malloc(outsamples_max
conv_buf = (int16_t*)malloc(outsamples_max
* sizeof(int16_t));
/* Used for recording even if audio isn't enabled. */
retro_assert(conv_buf != NULL);
@@ -379,9 +379,9 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
if (!audio_init_thread(
&current_audio,
&audio_driver_context_audio_data,
*settings->arrays.audio_device
*settings->arrays.audio_device
? settings->arrays.audio_device : NULL,
settings->uints.audio_out_rate, &new_rate,
settings->uints.audio_out_rate, &new_rate,
settings->uints.audio_latency,
settings->uints.audio_block_frames,
current_audio))
@@ -393,7 +393,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
else
#endif
{
audio_driver_context_audio_data =
audio_driver_context_audio_data =
current_audio->init(*settings->arrays.audio_device ?
settings->arrays.audio_device : NULL,
settings->uints.audio_out_rate,
@@ -414,7 +414,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
}
audio_driver_use_float = false;
if ( audio_driver_active
if ( audio_driver_active
&& current_audio->use_float(audio_driver_context_audio_data))
audio_driver_use_float = true;
@@ -470,7 +470,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
if (
!audio_cb_inited
&& audio_driver_active
&& audio_driver_active
&& settings->bools.audio_rate_control
)
{
@@ -478,7 +478,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited)
* and buffer_size to be implemented. */
if (current_audio->buffer_size)
{
audio_driver_buffer_size =
audio_driver_buffer_size =
current_audio->buffer_size(audio_driver_context_audio_data);
audio_driver_control = true;
}
@@ -516,8 +516,8 @@ void audio_driver_set_nonblocking_state(bool enable)
audio_driver_context_audio_data,
settings->bools.audio_sync ? enable : true);
audio_driver_chunk_size = enable ?
audio_driver_chunk_nonblock_size :
audio_driver_chunk_size = enable ?
audio_driver_chunk_nonblock_size :
audio_driver_chunk_block_size;
}
@@ -541,7 +541,7 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
bool is_slowmotion = false;
const void *output_data = NULL;
unsigned output_frames = 0;
float audio_volume_gain = !audio_driver_mute_enable ?
float audio_volume_gain = !audio_driver_mute_enable ?
audio_driver_volume_gain : 0.0f;
src_data.data_in = NULL;
@@ -597,7 +597,7 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
unsigned write_idx = audio_driver_free_samples_count++ &
(AUDIO_BUFFER_FREE_SAMPLES_COUNT - 1);
int half_size = (int)(audio_driver_buffer_size / 2);
int avail =
int avail =
(int)current_audio->write_avail(audio_driver_context_audio_data);
int delta_mid = avail - half_size;
double direction = (double)delta_mid / half_size;
@@ -610,7 +610,7 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
audio_driver_free_samples_buf
[write_idx] = avail;
audio_source_ratio_current =
audio_source_ratio_current =
audio_source_ratio_original * adjust;
#if 0
@@ -632,9 +632,9 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
if (audio_mixer_active)
{
bool override = audio_driver_mixer_mute_enable ? true :
bool override = audio_driver_mixer_mute_enable ? true :
(audio_driver_mixer_volume_gain != 0.0f) ? true : false;
float mixer_gain = !audio_driver_mixer_mute_enable ?
float mixer_gain = !audio_driver_mixer_mute_enable ?
audio_driver_mixer_volume_gain : 0.0f;
audio_mixer_mix(audio_driver_output_samples_buf,
src_data.output_frames, mixer_gain, override);
@@ -679,7 +679,7 @@ void audio_driver_sample(int16_t left, int16_t right)
if (audio_driver_data_ptr < audio_driver_chunk_size)
return;
audio_driver_flush(audio_driver_output_samples_conv_buf,
audio_driver_flush(audio_driver_output_samples_conv_buf,
audio_driver_data_ptr);
audio_driver_data_ptr = 0;
@@ -710,8 +710,8 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
* @left : value of the left audio channel.
* @right : value of the right audio channel.
*
* Audio sample render callback function (rewind version).
* This callback function will be used instead of
* Audio sample render callback function (rewind version).
* This callback function will be used instead of
* audio_driver_sample when rewinding is activated.
**/
void audio_driver_sample_rewind(int16_t left, int16_t right)
@@ -725,9 +725,9 @@ void audio_driver_sample_rewind(int16_t left, int16_t right)
* @data : pointer to audio buffer.
* @frames : amount of audio frames to push.
*
* Batched audio sample render callback function (rewind version).
* Batched audio sample render callback function (rewind version).
*
* This callback function will be used instead of
* This callback function will be used instead of
* audio_driver_sample_batch when rewinding is activated.
*
* Returns: amount of frames sampled. Will be equal to @frames
@@ -800,9 +800,9 @@ void audio_driver_monitor_adjust_system_rates(void)
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
float video_refresh_rate = settings->floats.video_refresh_rate;
float max_timing_skew = settings->floats.audio_max_timing_skew;
const struct retro_system_timing *info = av_info ?
const struct retro_system_timing *info = av_info ?
(const struct retro_system_timing*)&av_info->timing : NULL;
if (!info || info->sample_rate <= 0.0)
return;
@@ -882,7 +882,7 @@ bool audio_driver_free_devices_list(void)
if (!current_audio || !current_audio->device_list_free
|| !audio_driver_context_audio_data)
return false;
current_audio->device_list_free(audio_driver_context_audio_data,
current_audio->device_list_free(audio_driver_context_audio_data,
audio_driver_devices_list);
audio_driver_devices_list = NULL;
return true;
@@ -1003,7 +1003,7 @@ 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_mixer_current_max_idx >= AUDIO_MIXER_MAX_STREAMS)
return false;
@@ -1132,7 +1132,7 @@ bool audio_driver_set_callback(const void *data)
bool audio_driver_enable_callback(void)
{
if (!audio_callback.callback)
return false;
return false;
if (audio_callback.set_state)
audio_callback.set_state(true);
return true;
@@ -1152,7 +1152,7 @@ bool audio_driver_disable_callback(void)
void audio_driver_monitor_set_rate(void)
{
settings_t *settings = config_get_ptr();
double new_src_ratio = (double)settings->uints.audio_out_rate /
double new_src_ratio = (double)settings->uints.audio_out_rate /
audio_driver_input;
audio_source_ratio_original = new_src_ratio;
@@ -1191,8 +1191,8 @@ bool audio_driver_mixer_toggle_mute(void)
static INLINE bool audio_driver_alive(void)
{
if ( current_audio
&& current_audio->alive
if ( current_audio
&& current_audio->alive
&& audio_driver_context_audio_data)
return current_audio->alive(audio_driver_context_audio_data);
return false;
@@ -1200,7 +1200,7 @@ static INLINE bool audio_driver_alive(void)
bool audio_driver_start(bool is_shutdown)
{
if (!current_audio || !current_audio->start
if (!current_audio || !current_audio->start
|| !audio_driver_context_audio_data)
goto error;
if (!current_audio->start(audio_driver_context_audio_data, is_shutdown))
@@ -1218,7 +1218,7 @@ error:
bool audio_driver_stop(void)
{
if (!current_audio || !current_audio->stop
if (!current_audio || !current_audio->stop
|| !audio_driver_context_audio_data)
return false;
if (!audio_driver_alive())
+3 -3
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -90,7 +90,7 @@ typedef struct audio_driver
/* Is the audio driver currently running? */
bool (*alive)(void *data);
/* Should we care about blocking in audio thread? Fast forwarding.
/* Should we care about blocking in audio thread? Fast forwarding.
*
* If state is true, nonblocking operation is assumed.
* This is typically used for fast-forwarding. If driver cannot
@@ -103,7 +103,7 @@ typedef struct audio_driver
void (*free)(void *data);
/* Defines if driver will take standard floating point samples,
* or int16_t samples.
* or int16_t samples.
*
* If true is returned, the audio driver is capable of using
* floating point data. This will likely increase performance as the
+5 -5
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -56,7 +56,7 @@ static void audio_thread_loop(void *data)
return;
RARCH_LOG("[Audio Thread]: Initializing audio driver.\n");
thr->driver_data = thr->driver->init(thr->device, thr->out_rate, thr->latency,
thr->driver_data = thr->driver->init(thr->device, thr->out_rate, thr->latency,
thr->block_frames, thr->new_rate);
slock_lock(thr->lock);
thr->inited = thr->driver_data ? 1 : -1;
@@ -68,7 +68,7 @@ static void audio_thread_loop(void *data)
if (thr->inited < 0)
return;
/* Wait until we start to avoid calling
/* Wait until we start to avoid calling
* stop immediately after initialization. */
slock_lock(thr->lock);
while (thr->stopped)
@@ -188,7 +188,7 @@ static bool audio_thread_stop(void *data)
audio_thread_t *thr = (audio_thread_t*)data;
if (!thr)
return false;
return false;
audio_thread_block(thr);
thr->is_paused = true;
@@ -274,7 +274,7 @@ static const audio_driver_t audio_thread = {
*
* Starts a audio driver in a new thread.
* Access to audio driver will be mediated through this driver.
* This driver interfaces with audio callback and is
* This driver interfaces with audio callback and is
* only used in that case.
*
* Returns: true (1) if successful, otherwise false (0).
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+2 -2
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -121,7 +121,7 @@ static void *alsa_init(const char *device, unsigned rate, unsigned latency,
if (snd_pcm_hw_params(alsa->pcm, params) < 0)
goto error;
/* Shouldn't have to bother with this,
/* Shouldn't have to bother with this,
* but some drivers are apparently broken. */
if (snd_pcm_hw_params_get_period_size(params, &buffer_size, NULL))
snd_pcm_hw_params_get_period_size_min(params, &buffer_size, NULL);
+5 -5
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -231,7 +231,7 @@ static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size)
if (avail_write)
{
memcpy(alsa->buffer[alsa->buffer_index] +
memcpy(alsa->buffer[alsa->buffer_index] +
alsa->buffer_ptr, buf, avail_write);
alsa->buffer_ptr += avail_write;
@@ -355,8 +355,8 @@ static void alsa_qsa_free(void *data)
static size_t alsa_qsa_write_avail(void *data)
{
alsa_t *alsa = (alsa_t*)data;
size_t avail = (alsa->buf_count -
(int)alsa->buffered_blocks - 1) * alsa->buf_size +
size_t avail = (alsa->buf_count -
(int)alsa->buffered_blocks - 1) * alsa->buf_size +
(alsa->buf_size - (int)alsa->buffer_ptr);
return avail;
}
@@ -364,7 +364,7 @@ static size_t alsa_qsa_write_avail(void *data)
static size_t alsa_qsa_buffer_size(void *data)
{
alsa_t *alsa = (alsa_t*)data;
return alsa->buf_size * alsa->buf_count;
return alsa->buf_size * alsa->buf_count;
}
audio_driver_t audio_alsa = {
+3 -3
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2012-2015 - Michael Lelli
*
*
* 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.
@@ -77,7 +77,7 @@ static void alsa_worker_thread(void *data)
frames = snd_pcm_writei(alsa->pcm, buf, alsa->period_frames);
if (frames == -EPIPE || frames == -EINTR ||
if (frames == -EPIPE || frames == -EINTR ||
frames == -ESTRPIPE)
{
if (snd_pcm_recover(alsa->pcm, frames, 1) < 0)
@@ -192,7 +192,7 @@ static void *alsa_thread_init(const char *device,
TRY_ALSA(snd_pcm_hw_params(alsa->pcm, params));
/* Shouldn't have to bother with this,
/* Shouldn't have to bother with this,
* but some drivers are apparently broken. */
if (snd_pcm_hw_params_get_period_size(params, &alsa->period_frames, NULL))
snd_pcm_hw_params_get_period_size_min(
+10 -10
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2014 - Chris Moeller
*
*
* 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.
@@ -112,7 +112,7 @@ static OSStatus audio_write_cb(void *userdata,
slock_unlock(dev->lock);
/* Technically possible to deadlock without. */
scond_signal(dev->cond);
scond_signal(dev->cond);
return noErr;
}
@@ -169,10 +169,10 @@ static void choose_output_device(coreaudio_t *dev, const char* device)
size = 1024;
if (AudioObjectGetPropertyData(devices[i],
&propaddr, 0, 0, &size, device_name) == noErr
&propaddr, 0, 0, &size, device_name) == noErr
&& string_is_equal(device_name, device))
{
AudioUnitSetProperty(dev->dev, kAudioOutputUnitProperty_CurrentDevice,
AudioUnitSetProperty(dev->dev, kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global, 0, &devices[i], sizeof(AudioDeviceID));
goto done;
}
@@ -244,7 +244,7 @@ static void *coreaudio_init(const char *device,
#endif
if (comp == NULL)
goto error;
#if (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__)))
component_unavailable = (OpenAComponent(comp, &dev->dev) != noErr);
#else
@@ -269,17 +269,17 @@ static void *coreaudio_init(const char *device,
stream_desc.mBytesPerFrame = 2 * sizeof(float);
stream_desc.mFramesPerPacket = 1;
stream_desc.mFormatID = kAudioFormatLinearPCM;
stream_desc.mFormatFlags = kAudioFormatFlagIsFloat |
kAudioFormatFlagIsPacked | (is_little_endian() ?
stream_desc.mFormatFlags = kAudioFormatFlagIsFloat |
kAudioFormatFlagIsPacked | (is_little_endian() ?
0 : kAudioFormatFlagIsBigEndian);
if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input, 0, &stream_desc, sizeof(stream_desc)) != noErr)
goto error;
/* Check returned audio format. */
i_size = sizeof(real_desc);
if (AudioUnitGetProperty(dev->dev, kAudioUnitProperty_StreamFormat,
if (AudioUnitGetProperty(dev->dev, kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input, 0, &real_desc, &i_size) != noErr)
goto error;
+3 -3
View File
@@ -49,7 +49,7 @@ typedef struct
static void ctr_csnd_audio_update_playpos(ctr_csnd_audio_t* ctr)
{
uint64_t current_tick = svcGetSystemTick();
uint32_t samples_played = (current_tick - ctr->cpu_ticks_last)
uint32_t samples_played = (current_tick - ctr->cpu_ticks_last)
/ CTR_CSND_CPU_TICKS_PER_SAMPLE;
ctr->playpos = (ctr->playpos + samples_played) & CTR_CSND_AUDIO_COUNT_MASK;
@@ -94,7 +94,7 @@ Result csndPlaySound_custom(int chn, u32 flags, float vol, float pan,
if (loopMode == CSND_LOOPMODE_NORMAL && paddr1 > paddr0)
{
/* Now that the first block is playing,
/* Now that the first block is playing,
* configure the size of the subsequent blocks */
size -= paddr1 - paddr0;
CSND_SetBlock(chn, 1, paddr1, size);
@@ -209,7 +209,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
}
static bool ctr_csnd_audio_stop(void *data)
{
{
ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data;
/* using SetPlayState would make tracking the playback
+7 -7
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -93,7 +93,7 @@ static INLINE bool grab_region(dsound_t *ds, uint32_t write_ptr,
struct audio_lock *region)
{
const char *err = NULL;
HRESULT res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE,
HRESULT res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE,
&region->chunk1, &region->size1, &region->chunk2, &region->size2, 0);
if (res == DSERR_BUFFERLOST)
@@ -152,7 +152,7 @@ static void dsound_thread(void *data)
struct audio_lock region;
DWORD read_ptr, avail, fifo_avail;
get_positions(ds, &read_ptr, NULL);
avail = write_avail(read_ptr, write_ptr, ds->buffer_size);
EnterCriticalSection(&ds->crit);
@@ -161,12 +161,12 @@ static void dsound_thread(void *data)
if (avail < CHUNK_SIZE || ((fifo_avail < CHUNK_SIZE) && (avail < ds->buffer_size / 2)))
{
/* No space to write, or we don't have data in our fifo,
/* 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
* but it is not guaranteed to work, so use high
* priority sleeping patterns.
*/
retro_sleep(1);
@@ -182,7 +182,7 @@ static void dsound_thread(void *data)
if (fifo_avail < CHUNK_SIZE)
{
/* Got space to write, but nothing in FIFO (underrun),
/* Got space to write, but nothing in FIFO (underrun),
* fill block with silence. */
memset(region.chunk1, 0, region.size1);
@@ -191,7 +191,7 @@ static void dsound_thread(void *data)
release_region(ds, &region);
write_ptr = (write_ptr + region.size1 + region.size2) % ds->buffer_size;
}
else
else
{
/* All is good. Pull from it and notify FIFO. */
+3 -3
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -129,9 +129,9 @@ static ssize_t gx_audio_write(void *data, const void *buf_, size_t size)
if (frames < to_write)
to_write = frames;
/* FIXME: Nonblocking audio should break out of loop
/* FIXME: Nonblocking audio should break out of loop
* when it has nothing to write. */
while ((wa->dma_write == wa->dma_next ||
while ((wa->dma_write == wa->dma_next ||
wa->dma_write == wa->dma_busy) && !wa->nonblock)
OSSleepThread(wa->cond);
+3 -3
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
*
*
* 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.
@@ -181,7 +181,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
RARCH_ERR("[JACK]: Failed to register ports.\n");
goto error;
}
jports = jack_get_ports(jd->client, NULL, NULL, JackPortIsPhysical | JackPortIsInput);
if (jports == NULL)
{
@@ -222,7 +222,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency,
for (i = 0; i < parsed; i++)
free(dest_ports[i]);
jack_free(jports);
return jd;
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+2 -2
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -200,7 +200,7 @@ error:
static bool sl_stop(void *data)
{
sl_t *sl = (sl_t*)data;
sl->is_paused = (SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_STOPPED)
sl->is_paused = (SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_STOPPED)
== SL_RESULT_SUCCESS) ? true : false;
return sl->is_paused ? true : false;
+2 -2
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -51,7 +51,7 @@ static void *oss_init(const char *device, unsigned rate, unsigned latency,
int frags, frag, channels, format, new_rate;
int *fd = (int*)calloc(1, sizeof(int));
const char *oss_device = device ? device : DEFAULT_OSS_DEV;
if (!fd)
return NULL;
+3 -3
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -110,11 +110,11 @@ static void *ps3_audio_init(const char *device,
return NULL;
}
data->buffer = fifo_new(CELL_AUDIO_BLOCK_SAMPLES *
data->buffer = fifo_new(CELL_AUDIO_BLOCK_SAMPLES *
AUDIO_CHANNELS * AUDIO_BLOCKS * sizeof(float));
#ifdef __PSL1GHT__
sys_lwmutex_attr_t lock_attr =
sys_lwmutex_attr_t lock_attr =
{SYS_LWMUTEX_ATTR_PROTOCOL, SYS_LWMUTEX_ATTR_RECURSIVE, "\0"};
sys_lwmutex_attr_t cond_lock_attr =
{SYS_LWMUTEX_ATTR_PROTOCOL, SYS_LWMUTEX_ATTR_RECURSIVE, "\0"};
+35 -10
View File
@@ -50,6 +50,9 @@ typedef struct psp_audio
char lock[32] __attribute__ ((aligned (8)));
char cond_lock[32] __attribute__ ((aligned (8)));
char cond[32] __attribute__ ((aligned (8)));
#else
SceUID lock;
SceUID cond;
#endif
} psp_audio_t;
@@ -83,15 +86,13 @@ static int audioMainLoop(SceSize args, void* argp)
#ifdef VITA
sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0);
#else
sceKernelWaitSema(psp->lock, 1, 0);
#endif
cond = ((uint16_t)(psp->write_pos - read_pos) & AUDIO_BUFFER_SIZE_MASK)
< (AUDIO_OUT_COUNT * 2);
#ifndef VITA
sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer)
: (psp->buffer + read_pos));
#endif
if (!cond)
{
read_pos += AUDIO_OUT_COUNT;
@@ -106,6 +107,13 @@ static int audioMainLoop(SceSize args, void* argp)
sceAudioOutOutput(port,
cond ? (psp->zeroBuffer)
: (psp->buffer + read_pos_2));
#else
sceKernelSignalSema(psp->lock, 1);
if(!cond){
sceKernelSignalSema(psp->cond, 1);
}
sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer)
: (psp->buffer + read_pos));
#endif
}
@@ -151,6 +159,8 @@ static void *psp_audio_init(const char *device,
psp->thread = sceKernelCreateThread
("audioMainLoop", audioMainLoop, 0x10000100, 0x10000, 0, 0, NULL);
#else
psp->cond=sceKernelCreateSema("audio_start_sema", 0, 0, 1, NULL);
psp->lock=sceKernelCreateSema("audio_lock_sema", 0, 1, 1, NULL);
psp->thread = sceKernelCreateThread
("audioMainLoop", audioMainLoop, 0x08, 0x10000, 0, NULL);
#endif
@@ -177,6 +187,8 @@ static void psp_audio_free(void *data)
sceKernelDeleteLwCond((struct SceKernelLwCondWork*)&psp->cond);
#else
sceKernelWaitThreadEnd(psp->thread, &timeout);
sceKernelDeleteSema(psp->lock);
sceKernelDeleteSema(psp->cond);
#endif
free(psp->buffer);
sceKernelDeleteThread(psp->thread);
@@ -192,9 +204,11 @@ static ssize_t psp_audio_write(void *data, const void *buf, size_t size)
if (psp->nonblocking)
{
//#ifdef VITA
if (AUDIO_BUFFER_SIZE - ((uint16_t)
(psp->write_pos - psp->read_pos) & AUDIO_BUFFER_SIZE_MASK) < size)
return 0;
return 0;
//#endif
}
#ifdef VITA
@@ -203,6 +217,11 @@ static ssize_t psp_audio_write(void *data, const void *buf, size_t size)
sceKernelWaitLwCond((struct SceKernelLwCondWork*)&psp->cond, 0);
sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0);
#else
while (AUDIO_BUFFER_SIZE - ((uint16_t)
(psp->write_pos - psp->read_pos) & AUDIO_BUFFER_SIZE_MASK) < size)
sceKernelWaitSema(psp->cond, 1, 0);
sceKernelWaitSema(psp->lock, 1, 0);
#endif
if((write_pos + sampleCount) > AUDIO_BUFFER_SIZE)
@@ -225,7 +244,9 @@ static ssize_t psp_audio_write(void *data, const void *buf, size_t size)
return size;
#else
return sampleCount;
sceKernelSignalSema(psp->lock, 1);
return size;
#endif
}
@@ -244,9 +265,9 @@ static bool psp_audio_stop(void *data)
SceUInt timeout = 100000;
psp_audio_t* psp = (psp_audio_t*)data;
if(psp && !psp->running)
if(psp && !psp->running)
return true;
info.size = sizeof(SceKernelThreadInfo);
if (sceKernelGetThreadInfo(
@@ -269,8 +290,8 @@ static bool psp_audio_start(void *data, bool is_shutdown)
{
SceKernelThreadInfo info;
psp_audio_t* psp = (psp_audio_t*)data;
if(psp && psp->running)
if(psp && psp->running)
return true;
info.size = sizeof(SceKernelThreadInfo);
@@ -309,6 +330,8 @@ static size_t psp_write_avail(void *data)
#ifdef VITA
sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0);
#else
sceKernelWaitSema(psp->lock, 1, 0);
#endif
val = AUDIO_BUFFER_SIZE - ((uint16_t)
@@ -316,6 +339,8 @@ static size_t psp_write_avail(void *data)
#ifdef VITA
sceKernelUnlockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1);
#else
sceKernelSignalSema(psp->lock, 1);
#endif
return val;
+6 -6
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -88,7 +88,7 @@ static void context_state_cb(pa_context *c, void *data)
}
}
static void stream_state_cb(pa_stream *s, void *data)
static void stream_state_cb(pa_stream *s, void *data)
{
pa_t *pa = (pa_t*)data;
@@ -104,7 +104,7 @@ static void stream_state_cb(pa_stream *s, void *data)
}
}
static void stream_request_cb(pa_stream *s, size_t length, void *data)
static void stream_request_cb(pa_stream *s, size_t length, void *data)
{
pa_t *pa = (pa_t*)data;
@@ -114,7 +114,7 @@ static void stream_request_cb(pa_stream *s, size_t length, void *data)
pa_threaded_mainloop_signal(pa->mainloop, 0);
}
static void stream_latency_update_cb(pa_stream *s, void *data)
static void stream_latency_update_cb(pa_stream *s, void *data)
{
pa_t *pa = (pa_t*)data;
@@ -149,7 +149,7 @@ static void buffer_attr_cb(pa_stream *s, void *data)
}
static void *pulse_init(const char *device, unsigned rate,
unsigned latency,
unsigned latency,
unsigned block_frames,
unsigned *new_rate)
{
@@ -232,7 +232,7 @@ static void *pulse_init(const char *device, unsigned rate,
unlock_error:
pa_threaded_mainloop_unlock(pa->mainloop);
error:
pulse_free(pa);
pulse_free(pa);
return NULL;
}
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+36 -36
View File
@@ -1,6 +1,6 @@
/* RSound - A PCM audio client/server
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
*
*
* RSound 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.
@@ -43,7 +43,7 @@ RETRO_BEGIN_DECLS
#endif
/* Feature tests */
#define RSD_SAMPLERATE RSD_SAMPLERATE
#define RSD_SAMPLERATE RSD_SAMPLERATE
#define RSD_CHANNELS RSD_CHANNELS
#define RSD_HOST RSD_HOST
#define RSD_PORT RSD_PORT
@@ -125,7 +125,7 @@ enum rsd_settings
/* Audio callback for rsd_set_callback. Return -1 to trigger an error in the stream. */
typedef ssize_t (*rsd_audio_callback_t)(void *data, size_t bytes, void *userdata);
/* Error callback. Signals caller that stream has been stopped,
/* Error callback. Signals caller that stream has been stopped,
* either by audio callback returning -1 or stream was hung up. */
typedef void (*rsd_error_callback_t)(void *userdata);
@@ -144,7 +144,7 @@ typedef struct rsound
int conn_type;
volatile int buffer_pointer; /* Obsolete, but kept for backwards header compatibility. */
size_t buffer_size;
size_t buffer_size;
fifo_buffer_t *fifo_buffer;
volatile int thread_active;
@@ -196,13 +196,13 @@ typedef struct rsound
rsd_set_param(rd, RSD_HOST, "foohost");
*sets more params*
rsd_start(rd);
rsd_write(rd, buf, size);
rsd_write(rd, buf, size);
rsd_stop(rd);
rsd_free(rd);
*/
int rsd_init (rsound_t **rd);
/* This is a simpler function that initializes an rsound struct, sets params as given,
/* This is a simpler function that initializes an rsound struct, sets params as given,
and starts the stream. Should this function fail, the structure will stay uninitialized.
Should NULL be passed in either host, port or ident, defaults will be used. */
@@ -211,29 +211,29 @@ int rsd_simple_start (rsound_t **rd, const char* host, const char* port, const c
/* Sets params associated with an rsound_t. These options (int options) include:
RSD_HOST: Server to connect to. Expects (char *) in param.
If not set, will default to environmental variable RSD_SERVER or "localhost".
RSD_HOST: Server to connect to. Expects (char *) in param.
If not set, will default to environmental variable RSD_SERVER or "localhost".
RSD_PORT: Set port. Expects (char *) in param.
RSD_PORT: Set port. Expects (char *) in param.
If not set, will default to environmental variable RSD_PORT or "12345".
RSD_CHANNELS: Set number of audio channels. Expects (int *) in param. Mandatory.
RSD_SAMPLERATE: Set samplerate of audio stream. Expects (int *) in param. Mandatory.
RSD_BUFSIZE: Sets internal buffersize for the stream.
Might be overridden if too small.
RSD_BUFSIZE: Sets internal buffersize for the stream.
Might be overridden if too small.
Expects (int *) in param. Optional.
RSD_LATENCY: Sets maximum audio latency in milliseconds,
(must be used with rsd_delay_wait() or this will have no effect).
Most applications do not need this.
Might be overridden if too small.
RSD_LATENCY: Sets maximum audio latency in milliseconds,
(must be used with rsd_delay_wait() or this will have no effect).
Most applications do not need this.
Might be overridden if too small.
Expects (int *) in param. Optional.
RSD_FORMAT: Sets sample format.
It defaults to S16_LE, so you probably will not use this.
Expects (int *) in param, with available values found in the format enum.
RSD_FORMAT: Sets sample format.
It defaults to S16_LE, so you probably will not use this.
Expects (int *) in param, with available values found in the format enum.
If invalid format is given, param might be changed to reflect the sample format the library will use.
RSD_IDENTITY: Sets an identity string associated with the client.
@@ -244,14 +244,14 @@ Will be truncated if longer than 256 bytes.
int rsd_set_param (rsound_t *rd, enum rsd_settings option, void* param);
/* Enables use of the callback interface. This must be set when stream is not active.
When callback is active, use of the blocking interface is disabled.
Only valid functions to call after rsd_start() is stopping the stream with either rsd_pause() or rsd_stop(). Calling any other function is undefined.
The callback is called at regular intervals and is asynchronous, so thread safety must be ensured by the caller.
If not enough data can be given to the callback, librsound will fill the rest of the callback data with silence.
/* Enables use of the callback interface. This must be set when stream is not active.
When callback is active, use of the blocking interface is disabled.
Only valid functions to call after rsd_start() is stopping the stream with either rsd_pause() or rsd_stop(). Calling any other function is undefined.
The callback is called at regular intervals and is asynchronous, so thread safety must be ensured by the caller.
If not enough data can be given to the callback, librsound will fill the rest of the callback data with silence.
librsound will attempt to obey latency information given with RSD_LATENCY as given before calling rsd_start().
max_size signifies the maximum size that will ever be requested by librsound. Set this to 0 to let librsound decide the maximum size.
Should an error occur to the stream, err_callback will be called, and the stream will be stopped. The stream can be started again.
Should an error occur to the stream, err_callback will be called, and the stream will be stopped. The stream can be started again.
Callbacks can be disabled by setting callbacks to NULL. */
@@ -260,37 +260,37 @@ void rsd_set_callback (rsound_t *rd, rsd_audio_callback_t callback, rsd_error_ca
/* Lock and unlock the callback. When the callback lock is aquired, the callback is guaranteed to not be executing.
The lock has to be unlocked afterwards.
Attemping to call several rsd_callback_lock() in succession might cause a deadlock.
The lock should be held for as short period as possible.
The lock should be held for as short period as possible.
Try to avoid calling code that may block when holding the lock. */
void rsd_callback_lock (rsound_t *rd);
void rsd_callback_unlock (rsound_t *rd);
/* Establishes connection to server. Might fail if connection can't be established or that one of
/* Establishes connection to server. Might fail if connection can't be established or that one of
the mandatory options isn't set in rsd_set_param(). This needs to be called after params have been set
with rsd_set_param(), and before rsd_write(). */
with rsd_set_param(), and before rsd_write(). */
int rsd_start (rsound_t *rd);
/* Shuts down the rsound data structures, but returns the file descriptor associated with the connection.
The control socket will be shut down. If this function returns a negative number, the exec failed,
but the data structures will not be teared down.
The control socket will be shut down. If this function returns a negative number, the exec failed,
but the data structures will not be teared down.
Should a valid file descriptor be returned, it will always be blocking.
This call will block until all internal buffers have been sent to the network. */
int rsd_exec (rsound_t *rd);
/* Disconnects from server. All audio data still in network buffer and other buffers will be dropped.
/* Disconnects from server. All audio data still in network buffer and other buffers will be dropped.
To continue playing, you will need to rsd_start() again. */
int rsd_stop (rsound_t *rd);
/* Writes from buf to the internal buffer. Might fail if no connection is established,
/* Writes from buf to the internal buffer. Might fail if no connection is established,
or there was an unexpected error. This function will block until all data has
been written to the buffer. This function will return the number of bytes written to the buffer,
or 0 should it fail (disconnection from server). You will have to restart the stream again should this occur. */
size_t rsd_write (rsound_t *rd, const void* buf, size_t size);
/* Gets the position of the buffer pointer.
Not really interesting for normal applications.
Might be useful for implementing rsound on top of other blocking APIs.
/* Gets the position of the buffer pointer.
Not really interesting for normal applications.
Might be useful for implementing rsound on top of other blocking APIs.
*NOTE* This function is deprecated, it should not be used in new applications. */
size_t rsd_pointer (rsound_t *rd);
@@ -306,12 +306,12 @@ size_t rsd_delay_ms (rsound_t *rd);
/* Returns bytes per sample */
int rsd_samplesize(rsound_t *rd);
/* Will sleep until latency of stream reaches maximum allowed latency defined earlier by rsd_set_param - RSD_LATENCY
/* Will sleep until latency of stream reaches maximum allowed latency defined earlier by rsd_set_param - RSD_LATENCY
Useful for hard headed blocking I/O design where user defined latency is needed. If rsd_set_param hasn't been set
with RSD_LATENCY, this function will do nothing. */
void rsd_delay_wait(rsound_t *rd);
/* Pauses or unpauses a stream. pause -> enable = 1
/* Pauses or unpauses a stream. pause -> enable = 1
This function essentially calls on start() and stop(). This behavior might be changed later. */
int rsd_pause (rsound_t *rd, int enable);
+1 -1
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2015 - Michael Lelli
* Copyright (C) 2011-2017 - Daniel De Matteis
*
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
+3 -3
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -93,7 +93,7 @@ static void *sdl_audio_init(const char *device,
if (!sdl)
return NULL;
/* We have to buffer up some data ourselves, so we let SDL
/* We have to buffer up some data ourselves, so we let SDL
* carry approximately half of the latency.
*
* SDL double buffers audio and we do as well. */
@@ -119,7 +119,7 @@ static void *sdl_audio_init(const char *device,
sdl->cond = scond_new();
#endif
RARCH_LOG("[SDL audio]: Requested %u ms latency, got %d ms\n",
RARCH_LOG("[SDL audio]: Requested %u ms latency, got %d ms\n",
latency, (int)(out.samples * 4 * 1000 / (*new_rate)));
/* Create a buffer twice as big as needed and prefill the buffer. */
+5 -5
View File
@@ -30,7 +30,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2017 - Charlton Head
*
*
* 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.
@@ -508,7 +508,7 @@ struct snd_pcm_sw_params
struct snd_pcm_hw_params
{
unsigned int flags;
struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
struct snd_mask mres[5]; /* reserved masks */
struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
@@ -2320,7 +2320,7 @@ tinyalsa_write(void *data, const void *buf_, size_t size_)
}
}
return written;
return written;
}
@@ -2366,7 +2366,7 @@ tinyalsa_start(void *data, bool is_shutdown)
RARCH_ERR("[TINYALSA]: Failed to unpause.\n");
return false;
}
tinyalsa->is_paused = false;
}
@@ -2414,7 +2414,7 @@ static size_t tinyalsa_write_avail(void *data)
static size_t tinyalsa_buffer_size(void *data)
{
tinyalsa_t *tinyalsa = (tinyalsa_t*)data;
return tinyalsa->buffer_size;
}
+14 -13
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* 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.
@@ -15,7 +15,7 @@
#include <stdlib.h>
#ifdef _WIN32_WINNT
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x0600
@@ -40,7 +40,7 @@ DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0
#ifdef __cplusplus
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->Item(nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->Start() )
#define _IAudioClient_Start(This) ( (This)->Start() )
#define _IAudioClient_Stop(This) ( (This)->Stop() )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->GetCurrentPadding(pNumPaddingFrames) )
@@ -62,7 +62,7 @@ DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0
#define _IMMDeviceCollection_GetCount(This,cProps) ( (This)->GetCount(cProps) )
#else
#define _IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->lpVtbl->Item(This,nDevice,ppdevice)
#define _IAudioClient_Start(This) ( (This)->lpVtbl -> Start(This) )
#define _IAudioClient_Start(This) ( (This)->lpVtbl -> Start(This) )
#define _IAudioClient_Stop(This) ( (This)->lpVtbl -> Stop(This) )
#define _IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) \
( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) )
@@ -163,7 +163,7 @@ static bool wasapi_check_device_id(IMMDevice *device, const char *id)
id_length = MultiByteToWideChar(CP_ACP, 0, id, -1, dev_cmp_id, id_length);
WASAPI_SR_CHECK(id_length > 0, "MultiByteToWideChar", goto error);
hr = _IMMDevice_GetId(device, &dev_id);
WASAPI_HR_CHECK(hr, "IMMDevice::GetId", goto error);
@@ -306,7 +306,7 @@ static IAudioClient *wasapi_init_client_sh(IMMDevice *device,
bool float_fmt_res = *float_fmt;
unsigned rate_res = *rate;
HRESULT hr = _IMMDevice_Activate(device,
IID_IAudioClient,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
WASAPI_HR_CHECK(hr, "IMMDevice::Activate", return NULL);
@@ -336,9 +336,10 @@ static IAudioClient *wasapi_init_client_sh(IMMDevice *device,
if (hr == AUDCLNT_E_ALREADY_INITIALIZED)
{
HRESULT hr;
WASAPI_RELEASE(client);
HRESULT hr = _IMMDevice_Activate(device,
IID_IAudioClient,
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
WASAPI_HR_CHECK(hr, "IMMDevice::Activate", return NULL);
@@ -390,7 +391,7 @@ static IAudioClient *wasapi_init_client_ex(IMMDevice *device,
REFERENCE_TIME buffer_duration = 0;
UINT32 buffer_length = 0;
HRESULT hr = _IMMDevice_Activate(device,
IID_IAudioClient,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
WASAPI_HR_CHECK(hr, "IMMDevice::Activate", return NULL);
@@ -432,7 +433,7 @@ static IAudioClient *wasapi_init_client_ex(IMMDevice *device,
WASAPI_RELEASE(client);
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
WASAPI_HR_CHECK(hr, "IMMDevice::Activate", return NULL);
@@ -451,7 +452,7 @@ static IAudioClient *wasapi_init_client_ex(IMMDevice *device,
{
WASAPI_RELEASE(client);
hr = _IMMDevice_Activate(device,
IID_IAudioClient,
IID_IAudioClient,
CLSCTX_ALL, NULL, (void**)&client);
WASAPI_HR_CHECK(hr, "IMMDevice::Activate", return NULL);
@@ -668,7 +669,7 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency,
error:
WASAPI_RELEASE(w->renderer);
WASAPI_RELEASE(w->client);
WASAPI_RELEASE(w->client);
WASAPI_RELEASE(w->device);
if (w->write_event)
CloseHandle(w->write_event);
@@ -1044,7 +1045,7 @@ static size_t wasapi_write_avail(void *wh)
hr = _IAudioClient_GetCurrentPadding(w->client, &padding);
WASAPI_HR_CHECK(hr, "IAudioClient::GetCurrentPadding", return 0);
return w->engine_buffer_size - padding * w->frame_size;
}
+36 -40
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -45,6 +45,12 @@ typedef struct xaudio2 xaudio2_t;
#define MAX_BUFFERS_MASK (MAX_BUFFERS - 1)
#ifndef COINIT_MULTITHREADED
#define COINIT_MULTITHREADED 0x00
#endif
#define XAUDIO2_WRITE_AVAILABLE(handle) ((handle)->bufsize * (MAX_BUFFERS - (handle)->buffers - 1))
typedef struct
{
xaudio2_t *xa;
@@ -69,7 +75,7 @@ struct xaudio2
virtual ~xaudio2() {}
STDMETHOD_(void, OnBufferStart) (void *) {}
STDMETHOD_(void, OnBufferEnd) (void *)
STDMETHOD_(void, OnBufferEnd) (void *)
{
InterlockedDecrement((LONG volatile*)&buffers);
SetEvent(hEvent);
@@ -96,27 +102,27 @@ struct xaudio2
};
#ifndef __cplusplus
static void WINAPI voice_on_buffer_end(void *handle_, void *data)
{
xaudio2_t *handle = (xaudio2_t*)handle_;
(void)data;
InterlockedDecrement((LONG volatile*)&handle->buffers);
SetEvent(handle->hEvent);
}
static void WINAPI voice_on_buffer_end(void *handle_, void *data)
{
xaudio2_t *handle = (xaudio2_t*)handle_;
(void)data;
InterlockedDecrement((LONG volatile*)&handle->buffers);
SetEvent(handle->hEvent);
}
static void WINAPI dummy_voidp(void *handle, void *data) { (void)handle; (void)data; }
static void WINAPI dummy_nil(void *handle) { (void)handle; }
static void WINAPI dummy_uint32(void *handle, UINT32 dummy) { (void)handle; (void)dummy; }
static void WINAPI dummy_voidp_hresult(void *handle, void *data, HRESULT dummy) { (void)handle; (void)data; (void)dummy; }
static void WINAPI dummy_voidp(void *handle, void *data) { (void)handle; (void)data; }
static void WINAPI dummy_nil(void *handle) { (void)handle; }
static void WINAPI dummy_uint32(void *handle, UINT32 dummy) { (void)handle; (void)dummy; }
static void WINAPI dummy_voidp_hresult(void *handle, void *data, HRESULT dummy) { (void)handle; (void)data; (void)dummy; }
const struct IXAudio2VoiceCallbackVtbl voice_vtable = {
dummy_uint32,
dummy_nil,
dummy_nil,
dummy_voidp,
voice_on_buffer_end,
dummy_voidp,
dummy_voidp_hresult,
const struct IXAudio2VoiceCallbackVtbl voice_vtable = {
dummy_uint32,
dummy_nil,
dummy_nil,
dummy_voidp,
voice_on_buffer_end,
dummy_voidp,
dummy_voidp_hresult,
};
#endif
@@ -190,10 +196,6 @@ static void xaudio2_free(xaudio2_t *handle)
#endif
}
#ifndef COINIT_MULTITHREADED
#define COINIT_MULTITHREADED 0x00
#endif
static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels,
size_t size, unsigned device)
{
@@ -225,9 +227,9 @@ static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels,
xaudio2_set_wavefmt(&wfx, channels, samplerate);
if (FAILED(IXAudio2_CreateSourceVoice(handle->pXAudio2,
&handle->pSourceVoice, &wfx,
XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO,
if (FAILED(IXAudio2_CreateSourceVoice(handle->pXAudio2,
&handle->pSourceVoice, &wfx,
XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO,
(IXAudio2VoiceCallback*)handle, 0, 0)))
goto error;
@@ -240,7 +242,7 @@ static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels,
if (!handle->buf)
goto error;
if (FAILED(IXAudio2SourceVoice_Start(handle->pSourceVoice, 0,
if (FAILED(IXAudio2SourceVoice_Start(handle->pSourceVoice, 0,
XAUDIO2_COMMIT_NOW)))
goto error;
@@ -251,21 +253,15 @@ error:
return NULL;
}
static size_t xaudio2_write_avail(xaudio2_t *handle)
{
return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1);
}
static size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_)
static size_t xaudio2_write(xaudio2_t *handle, const uint8_t *buffer, size_t bytes_)
{
unsigned bytes = bytes_;
const uint8_t *buffer = (const uint8_t*)buf;
while (bytes)
{
unsigned need = MIN(bytes, handle->bufsize - handle->bufptr);
memcpy(handle->buf + handle->write_buffer *
memcpy(handle->buf + handle->write_buffer *
handle->bufsize + handle->bufptr,
buffer, need);
@@ -344,7 +340,7 @@ static ssize_t xa_write(void *data, const void *buf, size_t size)
if (xa->nonblock)
{
size_t avail = xaudio2_write_avail(xa->xa);
size_t avail = XAUDIO2_WRITE_AVAILABLE(xa->xa);
if (avail == 0)
return 0;
@@ -352,7 +348,7 @@ static ssize_t xa_write(void *data, const void *buf, size_t size)
size = avail;
}
ret = xaudio2_write(xa->xa, buf, size);
ret = xaudio2_write(xa->xa, (const uint8_t*)buf, size);
if (ret == 0 && size > 0)
return -1;
return ret;
@@ -408,7 +404,7 @@ static void xa_free(void *data)
static size_t xa_write_avail(void *data)
{
xa_t *xa = (xa_t*)data;
return xaudio2_write_avail(xa->xa);
return XAUDIO2_WRITE_AVAILABLE(xa->xa);
}
static size_t xa_buffer_size(void *data)
+24 -31
View File
@@ -2,7 +2,7 @@
* 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.
@@ -58,7 +58,7 @@ DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#include <mmreg.h>
#ifndef __cplusplus
#undef OPAQUE
#undef OPAQUE
#define OPAQUE struct
#endif
@@ -131,7 +131,7 @@ typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
typedef enum XAUDIO2_FILTER_TYPE {
LowPassFilter,
BandPassFilter,
HighPassFilter
HighPassFilter
} XAUDIO2_FILTER_TYPE;
typedef struct XAUDIO2_DEVICE_DETAILS
@@ -294,27 +294,27 @@ DECLARE_INTERFACE_(IXAudio2, IUnknown)
#ifdef __cplusplus
/* 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)
#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(THIS,a,b) (THIS)->lpVtbl->Initialize(THIS, a, b)
#define IXAudio2_Release(THIS) (THIS)->lpVtbl->Release(THIS)
#define IXAudio2_CreateSourceVoice(THIS,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) (THIS)->lpVtbl->CreateSourceVoice(THIS, ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)
#define IXAudio2_CreateMasteringVoice(THIS,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) (THIS)->lpVtbl->CreateMasteringVoice(THIS, ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)
#define IXAudio2_GetDeviceCount(THIS, puCount) (THIS)->lpVtbl->GetDeviceCount(THIS, puCount)
#define IXAudio2_GetDeviceDetails(THIS, Index,pDeviceDetails) (THIS)->lpVtbl->GetDeviceDetails(THIS, Index, pDeviceDetails)
#define IXAudio2SourceVoice_Start(THIS, Flags, OperationSet) (THIS)->lpVtbl->Start(THIS, Flags, OperationSet)
#define IXAudio2SourceVoice_Stop(THIS, Flags, OperationSet) (THIS)->lpVtbl->Stop(THIS, Flags, OperationSet)
#define IXAudio2SourceVoice_SubmitSourceBuffer(THIS, pBuffer, pBufferWMA) (THIS)->lpVtbl->SubmitSourceBuffer(THIS, pBuffer, pBufferWMA)
#define IXAudio2SourceVoice_DestroyVoice(THIS) (THIS)->lpVtbl->DestroyVoice(THIS)
#define IXAudio2_Initialize(THIS,a,b) (THIS)->lpVtbl->Initialize(THIS, a, b)
#define IXAudio2_Release(THIS) (THIS)->lpVtbl->Release(THIS)
#define IXAudio2_CreateSourceVoice(THIS,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) (THIS)->lpVtbl->CreateSourceVoice(THIS, ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)
#define IXAudio2_CreateMasteringVoice(THIS,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) (THIS)->lpVtbl->CreateMasteringVoice(THIS, ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)
#define IXAudio2_GetDeviceCount(THIS, puCount) (THIS)->lpVtbl->GetDeviceCount(THIS, puCount)
#define IXAudio2_GetDeviceDetails(THIS, Index,pDeviceDetails) (THIS)->lpVtbl->GetDeviceDetails(THIS, Index, pDeviceDetails)
#define IXAudio2SourceVoice_Start(THIS, Flags, OperationSet) (THIS)->lpVtbl->Start(THIS, Flags, OperationSet)
#define IXAudio2SourceVoice_Stop(THIS, Flags, OperationSet) (THIS)->lpVtbl->Stop(THIS, Flags, OperationSet)
#define IXAudio2SourceVoice_SubmitSourceBuffer(THIS, pBuffer, pBufferWMA) (THIS)->lpVtbl->SubmitSourceBuffer(THIS, pBuffer, pBufferWMA)
#define IXAudio2SourceVoice_DestroyVoice(THIS) (THIS)->lpVtbl->DestroyVoice(THIS)
#define IXAudio2MasteringVoice_DestroyVoice(THIS) (THIS)->lpVtbl->DestroyVoice(THIS)
#endif
@@ -324,16 +324,11 @@ STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0)
#else
static INLINE HRESULT XAudio2Create(IXAudio2 **ppXAudio2, UINT32 flags, XAUDIO2_PROCESSOR proc)
{
HRESULT hr;
IXAudio2 *pXAudio2 = NULL;
(void)flags;
(void)proc;
#ifdef __cplusplus
hr = CoCreateInstance(CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2);
HRESULT hr = CoCreateInstance(CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2);
#else
hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
#endif
if (SUCCEEDED(hr))
@@ -342,9 +337,7 @@ static INLINE HRESULT XAudio2Create(IXAudio2 **ppXAudio2, UINT32 flags, XAUDIO2_
if (SUCCEEDED(hr))
*ppXAudio2 = pXAudio2;
else
{
IXAudio2_Release(pXAudio2);
}
}
return hr;
}
+2 -2
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -70,7 +70,7 @@ static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size)
{
while (xenon_sound_get_unplayed() >= MAX_BUFFER)
{
/* libxenon doesn't have proper
/* libxenon doesn't have proper
* synchronization primitives for this... */
udelay(50);
}
+2 -2
View File
@@ -498,12 +498,12 @@ static void *resampler_CC_init(const struct resampler_config *config,
rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)
memalign_alloc(32, sizeof(rarch_CC_resampler_t));
/* TODO: lookup if NEON support can be detected at
/* TODO: lookup if NEON support can be detected at
* runtime and a funcptr set at runtime for either
* C codepath or NEON codepath. This will help out
* Android. */
(void)mask;
(void)config;
(void)config;
if (!re)
return NULL;
+20 -20
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -16,7 +16,7 @@
/* RSound - A PCM audio client/server
* Copyright (C) 2010 - Hans-Kristian Arntzen
*
*
* RSound 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.
@@ -67,7 +67,7 @@
#include <string.h>
#include <stdarg.h>
#include <time.h>
#include <errno.h>
#include <errno.h>
#include <compat/strl.h>
#include <retro_inline.h>
@@ -75,8 +75,8 @@
#include <retro_miscellaneous.h>
#include <retro_timers.h>
/*
****************************************************************************
/*
****************************************************************************
Naming convention. Functions for use in API are called rsd_*(), *
internal function are called rsnd_*() *
****************************************************************************
@@ -251,7 +251,7 @@ static int rsnd_connect_server( rsound_t *rd )
if ( rd->conn.ctl_socket < 0 )
goto error;
/* Uses non-blocking IO since it performed more deterministic with poll()/send() */
/* Uses non-blocking IO since it performed more deterministic with poll()/send() */
#ifdef __CELLOS_LV2__
setsockopt(rd->conn.socket, SOL_SOCKET, SO_NBIO, &i, sizeof(int));
@@ -302,7 +302,7 @@ static int rsnd_send_header_info(rsound_t *rd)
uint16_t temp16;
uint32_t temp32;
/* These magic numbers represent the position of the elements in the wave header.
/* These magic numbers represent the position of the elements in the wave header.
We can't simply send a wave struct over the network since the compiler is allowed to
pad our structs as they like, so sizeof(waveheader) might not be similar on two different
systems. */
@@ -353,7 +353,7 @@ static int rsnd_send_header_info(rsound_t *rd)
}
/* Since the values in the wave header we are interested in, are little endian (>_<), we need
to determine whether we're running it or not, so we can byte swap accordingly.
to determine whether we're running it or not, so we can byte swap accordingly.
Could determine this compile time, but it was simpler to do it this way. */
// Fancy macros for embedding little endian values into the header.
@@ -501,7 +501,7 @@ static int rsnd_get_backend_info ( rsound_t *rd )
// Can we read the last 8 bytes so we can use the protocol interface?
// This is non-blocking.
if ( rsnd_recv_chunk(rd->conn.socket, rsnd_header, RSND_HEADER_SIZE, 0) == RSND_HEADER_SIZE )
rd->conn_type |= RSD_CONN_PROTO;
rd->conn_type |= RSD_CONN_PROTO;
else
{ RSD_DEBUG("[RSound] Failed to get new proto.\n"); }
@@ -515,7 +515,7 @@ static int rsnd_get_backend_info ( rsound_t *rd )
return 0;
}
/* Makes sure that we're connected and done with wave header handshaking. Returns -1 on error, and 0 on success.
/* Makes sure that we're connected and done with wave header handshaking. Returns -1 on error, and 0 on success.
This goes for all other functions in use. */
static int rsnd_create_connection(rsound_t *rd)
{
@@ -750,7 +750,7 @@ static int64_t rsnd_get_time_usec(void)
/* Calculates how many bytes there are in total in the virtual buffer. This is calculated client side.
It should be accurate enough unless we have big problems with buffer underruns.
This function is called by rsd_delay() to determine the latency.
This function is called by rsd_delay() to determine the latency.
This function might be changed in the future to correctly determine latency from server. */
static void rsnd_drain(rsound_t *rd)
{
@@ -777,7 +777,7 @@ static void rsnd_drain(rsound_t *rd)
}
/* Tries to fill the buffer. Uses signals to determine when the buffer is ready to be filled. Should the thread not be active
it will treat this as an error. Crude implementation of a blocking FIFO. */
it will treat this as an error. Crude implementation of a blocking FIFO. */
static size_t rsnd_fill_buffer(rsound_t *rd, const char *buf, size_t size)
{
@@ -851,7 +851,7 @@ static int rsnd_stop_thread(rsound_t *rd)
sthread_join(rd->thread.thread);
RSD_DEBUG("[RSound] Thread joined successfully.\n");
return 0;
}
else
@@ -981,7 +981,7 @@ static int rsnd_close_ctl(rsound_t *rd)
}
// Sends delay info request to server on the ctl socket. This code section isn't critical, and will work if it works.
// 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)
{
@@ -1111,7 +1111,7 @@ static void rsnd_thread ( void * thread_data )
// We only bother to check after 1 sec of audio has been played, as it might be quite inaccurate in the start of the stream.
if ( (rd->conn_type & RSD_CONN_PROTO) && (rd->total_written > rd->channels * rd->rate * rd->samplesize) )
{
rsnd_send_info_query(rd);
rsnd_send_info_query(rd);
rsnd_update_server_info(rd);
}
@@ -1263,7 +1263,7 @@ static void rsnd_cb_thread(void *thread_data)
if ( (rd->conn_type & RSD_CONN_PROTO) && (rd->total_written > rd->channels * rd->rate * rd->samplesize) )
{
rsnd_send_info_query(rd);
rsnd_send_info_query(rd);
rsnd_update_server_info(rd);
}
@@ -1304,7 +1304,7 @@ int rsd_stop(rsound_t *rd)
const char buf[] = "RSD 5 STOP";
// Do not really care about errors here.
// Do not really care about errors here.
// The socket will be closed down in any case in rsnd_reset().
rsnd_send_chunk(rd->conn.ctl_socket, buf, strlen(buf), 0);
@@ -1325,7 +1325,7 @@ size_t rsd_write( rsound_t *rsound, const void* buf, size_t size)
while ( written < size )
{
size_t write_size = (size - written) > max_write ? max_write : (size - written);
size_t write_size = (size - written) > max_write ? max_write : (size - written);
size_t result = rsnd_fill_buffer(rsound, (const char*)buf + written, write_size);
if (result == 0)
@@ -1454,7 +1454,7 @@ int rsd_set_param(rsound_t *rd, enum rsd_settings option, void* param)
rd->max_latency = *((int*)param);
break;
// Checks if format is valid.
// Checks if format is valid.
case RSD_FORMAT:
rd->format = (uint16_t)(*((int*)param));
rd->samplesize = rsnd_format_to_samplesize(rd->format);
@@ -1509,7 +1509,7 @@ size_t rsd_pointer(rsound_t *rsound)
retro_assert(rsound != NULL);
int ptr;
ptr = rsnd_get_ptr(rsound);
ptr = rsnd_get_ptr(rsound);
return ptr;
}
+1 -1
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
*
*
* 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.
+1 -1
View File
@@ -14,7 +14,7 @@ USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1
LIBDIR =
LDFLAGS = -mno-crt0 -nostartfiles
LDFLAGS = -nostartfiles
LIBS = -lpspdebug -lpspge -lpspsdk -lc -lpspuser
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
+5 -4
View File
@@ -55,9 +55,10 @@ void exitspawn_kernel(const char *fileName, SceSize args, void *argp)
game_param.unk4 = 0;
game_param.unk5 = 0x10000;
pspSdkSetK1(0);
sceKernelSuspendAllUserThreads();
sceKernelLoadExecVSHMs2(fileName, &game_param);
int k1 = pspSdkSetK1(0);
//sceKernelSuspendAllUserThreads();
int ret = sceKernelLoadExecVSHMs2(fileName, &game_param);
pspSdkSetK1(k1);
}
int module_start(SceSize args, void *argp)
@@ -66,7 +67,7 @@ int module_start(SceSize args, void *argp)
(void)argp;
buttons = 0;
thread_active = 0;
thread_active = 0;
main_thread_id = sceKernelCreateThread("main Thread", main_thread, 0x11, 0x200, 0, NULL);
if (main_thread >= 0)
+5 -5
View File
@@ -34,7 +34,7 @@ int __vita_delete_thread_reent(int thid)
// We only need to cleanup if reent is allocated, i.e. if it's on our TLS
// We also don't need to clean up the global reent
struct _reent **on_tls = NULL;
if (thid == 0)
on_tls = TLS_REENT_PTR;
else
@@ -141,16 +141,16 @@ struct _reent *__getreent_for_thread(int thid) {
// A pointer to our reent should be on the TLS
struct _reent **on_tls = NULL;
if (thid == 0)
on_tls = TLS_REENT_PTR;
else
on_tls = TLS_REENT_THID_PTR(thid);
on_tls = TLS_REENT_THID_PTR(thid);
if (*on_tls) {
return *on_tls;
}
sceKernelLockMutex(_newlib_reent_mutex, 1, 0);
// If it's not on the TLS this means the thread doesn't have a reent allocated yet
+7 -7
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -139,7 +139,7 @@ bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data)
case RARCH_CAMERA_CTL_OWNS_DRIVER:
return camera_driver_data_own;
case RARCH_CAMERA_CTL_SET_ACTIVE:
camera_driver_active = true;
camera_driver_active = true;
break;
case RARCH_CAMERA_CTL_FIND_DRIVER:
{
@@ -174,10 +174,10 @@ bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data)
}
break;
case RARCH_CAMERA_CTL_UNSET_ACTIVE:
camera_driver_active = false;
camera_driver_active = false;
break;
case RARCH_CAMERA_CTL_IS_ACTIVE:
return camera_driver_active;
return camera_driver_active;
case RARCH_CAMERA_CTL_DEINIT:
if (camera_data && camera_driver)
{
@@ -191,8 +191,8 @@ bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data)
camera_data = NULL;
break;
case RARCH_CAMERA_CTL_STOP:
if ( camera_driver
&& camera_driver->stop
if ( camera_driver
&& camera_driver->stop
&& camera_data)
camera_driver->stop(camera_data);
break;
@@ -243,6 +243,6 @@ bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data)
default:
break;
}
return true;
}
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+4 -4
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2012-2015 - Michael Lelli
*
*
* 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.
@@ -152,7 +152,7 @@ static void android_camera_stop(void *data)
CALL_VOID_METHOD(env, android_app->activity->clazz,
androidcamera->onCameraStop);
if (androidcamera->tex)
video_driver_texture_unload((uintptr_t*)&androidcamera->tex);
}
@@ -171,12 +171,12 @@ static bool android_camera_poll(void *data,
(void)frame_raw_cb;
CALL_BOOLEAN_METHOD(env, newFrame, android_app->activity->clazz,
CALL_BOOLEAN_METHOD(env, newFrame, android_app->activity->clazz,
androidcamera->onCameraPoll);
if (newFrame)
{
/* FIXME: Identity for now. Use proper texture matrix as
/* FIXME: Identity for now. Use proper texture matrix as
* returned by Android Camera. */
static const float affine[] = {
1.0f, 0.0f, 0.0f,
+1 -1
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2012-2015 - Michael Lelli
* Copyright (C) 2011-2017 - Daniel De Matteis
*
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
+1 -1
View File
@@ -1,7 +1,7 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2012-2015 - Michael Lelli
* Copyright (C) 2011-2017 - Daniel De Matteis
*
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
+1 -1
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2012-2015 - Michael Lelli
*
*
* 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.
+58
View File
@@ -0,0 +1,58 @@
#include <file/file_path.h>
#include <string/stdstring.h>
#include <streams/file_stream.h>
#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 fullpath[PATH_MAX_LENGTH];
const char * locked_suffix = (badges->badge_locked[i] == true)
? "_lock.png" : ".png";
unsigned int bufferSize = 16;
/* TODO/FIXME - variable length forbidden in C89 - rewrite this! */
char badge_file[bufferSize];
snprintf(badge_file, bufferSize, "%s", badges->badge_id_list[i]);
strcat(badge_file, locked_suffix);
fill_pathname_application_special(fullpath,
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES);
menu_display_reset_textures_list(badge_file, fullpath,
&badges->menu_texture_list[i],TEXTURE_FILTER_MIPMAP_LINEAR);
}
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->bools.cheevos_badges_enable)
return (menu_texture_item)NULL;
return badges_ctx.menu_texture_list[id];
}
+29
View File
@@ -0,0 +1,29 @@
#ifndef __RARCH_BADGE_H
#define __RARCH_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
+238 -177
View File
@@ -16,7 +16,10 @@
#include <string.h>
#include <ctype.h>
#include <file/file_path.h>
#include <string/stdstring.h>
#include <formats/jsonsax.h>
#include <streams/interface_stream.h>
#include <streams/file_stream.h>
#include <features/features_cpu.h>
#include <compat/strl.h>
@@ -35,10 +38,12 @@
#include "../menu/menu_entries.h"
#endif
#include "badges.h"
#include "cheevos.h"
#include "var.h"
#include "cond.h"
#include "../file_path_special.h"
#include "../command.h"
#include "../dynamic.h"
#include "../configuration.h"
@@ -76,6 +81,9 @@
* THE USER'S PASSWORD, TAKE CARE! */
#undef CHEEVOS_LOG_PASSWORD
/* Define this macro to log downloaded badge images. */
#undef CHEEVOS_LOG_BADGES
/* C89 wants only int values in enums. */
#define CHEEVOS_JSON_KEY_GAMEID 0xb4960eecU
#define CHEEVOS_JSON_KEY_ACHIEVEMENTS 0x69749ae1U
@@ -213,45 +221,9 @@ typedef struct
cheevos_expr_t value;
} cheevos_leaderboard_t;
/*
typedef struct
{
bool is_lookup;
char* prestring;
cheevos_expr_t expression;
} cheevos_rps_element_t;
typedef struct
{
char* name;
unsigned type;
} cheevos_rps_format_t;
typedef struct
{
unsigned compare;
char* result;
} cheevos_rps_lookup_value;
typedef struct
{
char* name;
cheevos_rps_lookup_value* values;
} cheevos_rps_lookup_t;
typedef struct
{
cheevos_rps_element_t* elements;
cheevos_rps_format_t* formats;
unsigned format_count;
cheevos_rps_lookup_t* lookups;
unsigned lookup_count;
} cheevos_rps_t;
*/
typedef struct
{
int console_id;
cheevos_console_t console_id;
bool core_supports;
bool addrs_patched;
int add_buffer;
@@ -269,7 +241,7 @@ typedef struct
static cheevos_locals_t cheevos_locals =
{
/* console_id */ 0,
/* console_id */ CHEEVOS_CONSOLE_NONE,
/* core_supports */ true,
/* addrs_patched */ false,
/* add_buffer */ 0,
@@ -831,6 +803,7 @@ static int cheevos_count_cheevos(const char *json,
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;
@@ -878,24 +851,27 @@ static unsigned cheevos_count_cond_sets(const char *memaddr)
static int cheevos_parse_condition(cheevos_condition_t *condition, const char* memaddr)
{
if (!condition)
return 0;
condition->count = cheevos_count_cond_sets(memaddr);
if (condition->count)
{
unsigned set = 0;
cheevos_condset_t *condset = NULL;
cheevos_condset_t *conds = NULL;
const cheevos_condset_t* end = NULL;
cheevos_condset_t *conds = NULL;
cheevos_condset_t *condset = NULL;
cheevos_condset_t *condsets = (cheevos_condset_t*)
calloc(condition->count, sizeof(cheevos_condset_t));
(void)conds;
condition->condsets = (cheevos_condset_t*)
calloc(condition->count, sizeof(cheevos_condset_t));
if (!condition->condsets)
if (!condsets)
return -1;
end = condition->condsets + condition->count;
condition->condsets = condsets;
end = condition->condsets + condition->count;
for (condset = condition->condsets; condset < end; condset++, set++)
{
@@ -1047,10 +1023,10 @@ static int cheevos_parse_expression(cheevos_expr_t *expr, const char* mem)
static int cheevos_parse_mem(cheevos_leaderboard_t *lb, const char* mem)
{
lb->start.condsets = NULL;
lb->start.condsets = NULL;
lb->cancel.condsets = NULL;
lb->submit.condsets = NULL;
lb->value.terms = NULL;
lb->value.terms = NULL;
for (;;)
{
@@ -1375,7 +1351,7 @@ static int cheevos_read__json_number(void *userdata,
}
else if (ud->is_console_id)
{
cheevos_locals.console_id = (int)strtol(number, NULL, 10);
cheevos_locals.console_id = (cheevos_console_t)strtol(number, NULL, 10);
ud->is_console_id = 0;
}
@@ -1786,6 +1762,7 @@ static void cheevos_test_cheevo_set(const cheevoset_t *set)
}
else if (valid)
{
char msg[256];
char url[256];
url[0] = '\0';
@@ -1797,7 +1774,6 @@ static void cheevos_test_cheevo_set(const cheevoset_t *set)
RARCH_LOG("[CHEEVOS]: awarding cheevo %u: %s (%s).\n",
cheevo->id, cheevo->title, cheevo->description);
char msg[256];
snprintf(msg, sizeof(msg), "Achievement Unlocked: %s", cheevo->title);
msg[sizeof(msg) - 1] = 0;
runloop_msg_queue_push(msg, 0, 2 * 60, false);
@@ -1846,28 +1822,44 @@ static int cheevos_expr_value(cheevos_expr_t* expr)
{
cheevos_term_t* term = expr->terms;
unsigned i;
/* Separate possible values with '$' operator, submit the largest */
unsigned current_value = 0;
int values[expr->compare_count];
int values[16];
if (expr->compare_count >= sizeof(values) / sizeof(values[0]))
{
RARCH_ERR("[CHEEVOS]: too many values in the leaderboard expression: %u\n", expr->compare_count);
return 0;
}
memset(values, 0, sizeof values);
for (i = expr->count; i != 0; i--, term++)
{
if (current_value >= sizeof(values) / sizeof(values[0]))
{
RARCH_ERR("[CHEEVOS]: too many values in the leaderboard expression: %u\n", current_value);
return 0;
}
values[current_value] += cheevos_var_get_value(&term->var) * term->multiplier;
if (term->compare_next)
current_value++;
}
if (expr->compare_count > 1)
{
unsigned j;
int maximum = values[0];
for (unsigned j = 1; j < expr->compare_count; j++)
for (j = 1; j < expr->compare_count; j++)
maximum = values[j] > maximum ? values[j] : maximum;
return maximum;
}
else return values[0];
else
return values[0];
}
static void cheevos_make_lboard_url(const cheevos_leaderboard_t *lboard,
@@ -1964,12 +1956,13 @@ static void cheevos_test_leaderboards(void)
else
{
char url[256];
char msg[256];
char formatted_value[16];
cheevos_make_lboard_url(lboard, url, sizeof(url));
task_push_http_transfer(url, true, NULL, cheevos_lboard_submit, lboard);
RARCH_LOG("[CHEEVOS]: submit lboard %s\n", lboard->title);
char msg[256];
char formatted_value[16];
cheevos_format_value(value, lboard->format, formatted_value, sizeof(formatted_value));
snprintf(msg, sizeof(msg), "Submitted %s for %s", formatted_value, lboard->title);
msg[sizeof(msg) - 1] = 0;
@@ -1988,11 +1981,12 @@ static void cheevos_test_leaderboards(void)
{
if (cheevos_test_lboard_condition(&lboard->start))
{
char msg[256];
RARCH_LOG("[CHEEVOS]: start lboard %s\n", lboard->title);
lboard->active = 1;
lboard->last_value = -1;
char msg[256];
snprintf(msg, sizeof(msg), "Leaderboard Active: %s", lboard->title);
msg[sizeof(msg) - 1] = 0;
runloop_msg_queue_push(msg, 0, 2 * 60, false);
@@ -2138,7 +2132,7 @@ void cheevos_reset_game(void)
cheevo->last = 1;
}
void cheevos_populate_menu(void *data, bool hardcore)
void cheevos_populate_menu(void *data)
{
#ifdef HAVE_MENU
unsigned i;
@@ -2151,39 +2145,30 @@ void cheevos_populate_menu(void *data, bool hardcore)
for (i = 0; cheevo < end; i++, cheevo++)
{
if (!hardcore)
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{
if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_HARDCORE));
}
else if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
}
else
{
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
}
}
@@ -2195,39 +2180,29 @@ void cheevos_populate_menu(void *data, bool hardcore)
for (i = cheevos_locals.core.count; cheevo < end; i++, cheevo++)
{
if (!hardcore)
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{
if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_HARDCORE));
}
else if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
}
else
{
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
}
}
}
@@ -2514,42 +2489,52 @@ typedef struct
size_t romsize, bytes; \
int mapper; \
bool round; \
RFILE* stream; \
intfstream_t *stream; \
size_t size; \
char url[256]; \
struct http_connection_t *conn; \
struct http_t *http; \
retro_time_t t0;
retro_time_t t0; \
char badge_basepath[PATH_MAX_LENGTH]; \
char badge_fullpath[PATH_MAX_LENGTH]; \
char badge_name[16]; \
cheevo_t *cheevo; \
const cheevo_t *cheevo_end;
#include "coro.h"
#define CHEEVOS_VAR_INFO CORO_VAR(info)
#define CHEEVOS_VAR_DATA CORO_VAR(data)
#define CHEEVOS_VAR_LEN CORO_VAR(len)
#define CHEEVOS_VAR_PATH CORO_VAR(path)
#define CHEEVOS_VAR_SETTINGS CORO_VAR(settings)
#define CHEEVOS_VAR_SYSINFO CORO_VAR(sysinfo)
#define CHEEVOS_VAR_I CORO_VAR(i)
#define CHEEVOS_VAR_J CORO_VAR(j)
#define CHEEVOS_VAR_K CORO_VAR(k)
#define CHEEVOS_VAR_EXT CORO_VAR(ext)
#define CHEEVOS_VAR_MD5 CORO_VAR(md5)
#define CHEEVOS_VAR_HASH CORO_VAR(hash)
#define CHEEVOS_VAR_GAMEID CORO_VAR(gameid)
#define CHEEVOS_VAR_JSON CORO_VAR(json)
#define CHEEVOS_VAR_COUNT CORO_VAR(count)
#define CHEEVOS_VAR_OFFSET CORO_VAR(offset)
#define CHEEVOS_VAR_HEADER CORO_VAR(header)
#define CHEEVOS_VAR_ROMSIZE CORO_VAR(romsize)
#define CHEEVOS_VAR_BYTES CORO_VAR(bytes)
#define CHEEVOS_VAR_MAPPER CORO_VAR(mapper)
#define CHEEVOS_VAR_ROUND CORO_VAR(round)
#define CHEEVOS_VAR_STREAM CORO_VAR(stream)
#define CHEEVOS_VAR_SIZE CORO_VAR(size)
#define CHEEVOS_VAR_URL CORO_VAR(url)
#define CHEEVOS_VAR_CONN CORO_VAR(conn)
#define CHEEVOS_VAR_HTTP CORO_VAR(http)
#define CHEEVOS_VAR_T0 CORO_VAR(t0)
#define CHEEVOS_VAR_INFO CORO_VAR(info)
#define CHEEVOS_VAR_DATA CORO_VAR(data)
#define CHEEVOS_VAR_LEN CORO_VAR(len)
#define CHEEVOS_VAR_PATH CORO_VAR(path)
#define CHEEVOS_VAR_SETTINGS CORO_VAR(settings)
#define CHEEVOS_VAR_SYSINFO CORO_VAR(sysinfo)
#define CHEEVOS_VAR_I CORO_VAR(i)
#define CHEEVOS_VAR_J CORO_VAR(j)
#define CHEEVOS_VAR_K CORO_VAR(k)
#define CHEEVOS_VAR_EXT CORO_VAR(ext)
#define CHEEVOS_VAR_MD5 CORO_VAR(md5)
#define CHEEVOS_VAR_HASH CORO_VAR(hash)
#define CHEEVOS_VAR_GAMEID CORO_VAR(gameid)
#define CHEEVOS_VAR_JSON CORO_VAR(json)
#define CHEEVOS_VAR_COUNT CORO_VAR(count)
#define CHEEVOS_VAR_OFFSET CORO_VAR(offset)
#define CHEEVOS_VAR_HEADER CORO_VAR(header)
#define CHEEVOS_VAR_ROMSIZE CORO_VAR(romsize)
#define CHEEVOS_VAR_BYTES CORO_VAR(bytes)
#define CHEEVOS_VAR_MAPPER CORO_VAR(mapper)
#define CHEEVOS_VAR_ROUND CORO_VAR(round)
#define CHEEVOS_VAR_STREAM CORO_VAR(stream)
#define CHEEVOS_VAR_SIZE CORO_VAR(size)
#define CHEEVOS_VAR_URL CORO_VAR(url)
#define CHEEVOS_VAR_CONN CORO_VAR(conn)
#define CHEEVOS_VAR_HTTP CORO_VAR(http)
#define CHEEVOS_VAR_T0 CORO_VAR(t0)
#define CHEEVOS_VAR_BADGE_PATH CORO_VAR(badge_fullpath)
#define CHEEVOS_VAR_BADGE_BASE_PATH CORO_VAR(badge_fullpath)
#define CHEEVOS_VAR_BADGE_NAME CORO_VAR(badge_name)
#define CHEEVOS_VAR_CHEEVO_CURR CORO_VAR(cheevo)
#define CHEEVOS_VAR_CHEEVO_END CORO_VAR(cheevo_end)
static int cheevos_iterate(coro_t* coro)
{
@@ -2570,11 +2555,12 @@ static int cheevos_iterate(coro_t* coro)
FILL_MD5 = -7,
GET_GAMEID = -8,
GET_CHEEVOS = -9,
LOGIN = -10,
HTTP_GET = -11,
DEACTIVATE = -12,
PLAYING = -13,
DELAY = -14
GET_BADGES = -10,
LOGIN = -11,
HTTP_GET = -12,
DEACTIVATE = -13,
PLAYING = -14,
DELAY = -15
};
static const uint32_t genesis_exts[] =
@@ -2655,14 +2641,17 @@ static int cheevos_iterate(coro_t* coro)
/* Load the content into memory, or copy it over to our own buffer */
if (!CHEEVOS_VAR_DATA)
{
CHEEVOS_VAR_STREAM = filestream_open(CHEEVOS_VAR_PATH, RFILE_MODE_READ, -1);
CHEEVOS_VAR_STREAM = intfstream_open_file(
CHEEVOS_VAR_PATH,
RETRO_VFS_FILE_ACCESS_READ,
RETRO_VFS_FILE_ACCESS_HINT_NONE);
if (!CHEEVOS_VAR_STREAM)
CORO_STOP();
CORO_YIELD();
CHEEVOS_VAR_LEN = 0;
CHEEVOS_VAR_COUNT = filestream_get_size(CHEEVOS_VAR_STREAM);
CHEEVOS_VAR_COUNT = intfstream_get_size(CHEEVOS_VAR_STREAM);
if (CHEEVOS_VAR_COUNT > CHEEVOS_SIZE_LIMIT)
CHEEVOS_VAR_COUNT = CHEEVOS_SIZE_LIMIT;
@@ -2671,7 +2660,8 @@ static int cheevos_iterate(coro_t* coro)
if (!CHEEVOS_VAR_DATA)
{
filestream_close(CHEEVOS_VAR_STREAM);
intfstream_close(CHEEVOS_VAR_STREAM);
free(CHEEVOS_VAR_STREAM);
CORO_STOP();
}
@@ -2683,7 +2673,7 @@ static int cheevos_iterate(coro_t* coro)
if (to_read > CHEEVOS_VAR_COUNT)
to_read = CHEEVOS_VAR_COUNT;
num_read = filestream_read(CHEEVOS_VAR_STREAM, (void*)buffer, to_read);
num_read = intfstream_read(CHEEVOS_VAR_STREAM, (void*)buffer, to_read);
if (num_read <= 0)
break;
@@ -2697,7 +2687,8 @@ static int cheevos_iterate(coro_t* coro)
CORO_YIELD();
}
filestream_close(CHEEVOS_VAR_STREAM);
intfstream_close(CHEEVOS_VAR_STREAM);
free(CHEEVOS_VAR_STREAM);
}
/* Use the supported extensions as a hint
@@ -2814,6 +2805,7 @@ static int cheevos_iterate(coro_t* coro)
if ((void*)CHEEVOS_VAR_JSON)
free((void*)CHEEVOS_VAR_JSON);
cheevos_loaded = true;
/*
@@ -2830,27 +2822,39 @@ static int cheevos_iterate(coro_t* coro)
if(CHEEVOS_VAR_SETTINGS->bools.cheevos_verbose_enable)
{
const cheevo_t* cheevo = cheevos_locals.core.cheevos;
const cheevo_t* end = cheevo + cheevos_locals.core.count;
int number_of_unlocked = cheevos_locals.core.count;
int mode;
char msg[256];
if(cheevos_locals.core.count > 0)
{
int mode;
const cheevo_t* cheevo = cheevos_locals.core.cheevos;
const cheevo_t* end = cheevo + cheevos_locals.core.count;
int number_of_unlocked = cheevos_locals.core.count;
char msg[256];
if(CHEEVOS_VAR_SETTINGS->bools.cheevos_hardcore_mode_enable)
mode = CHEEVOS_ACTIVE_HARDCORE;
if(CHEEVOS_VAR_SETTINGS->bools.cheevos_hardcore_mode_enable)
mode = CHEEVOS_ACTIVE_HARDCORE;
else
mode = CHEEVOS_ACTIVE_SOFTCORE;
for(; cheevo < end; cheevo++)
if(cheevo->active & mode)
number_of_unlocked--;
snprintf(msg, sizeof(msg), "You have %d of %d achievements unlocked.",
number_of_unlocked, cheevos_locals.core.count);
msg[sizeof(msg) - 1] = 0;
runloop_msg_queue_push(msg, 0, 6 * 60, false);
}
else
mode = CHEEVOS_ACTIVE_SOFTCORE;
runloop_msg_queue_push("This game has no achievements.", 0, 5 * 60, false);
for(; cheevo < end; cheevo++)
if(cheevo->active & mode)
number_of_unlocked--;
snprintf(msg, sizeof(msg), "You have %d of %d achievements unlocked.",
number_of_unlocked, cheevos_locals.core.count);
msg[sizeof(msg) - 1] = 0;
runloop_msg_queue_push(msg, 0, 6 * 60, false);
}
if ( cheevos_locals.core.count == 0
&& cheevos_locals.unofficial.count == 0
&& cheevos_locals.lboard_count == 0)
cheevos_unload();
CORO_GOSUB(GET_BADGES);
CORO_STOP();
/**************************************************************************
@@ -3124,14 +3128,12 @@ static int cheevos_iterate(coro_t* coro)
*************************************************************************/
CORO_SUB(GET_CHEEVOS)
CORO_GOSUB(LOGIN);
CORO_GOSUB(LOGIN);
snprintf(
CHEEVOS_VAR_URL, sizeof(CHEEVOS_VAR_URL),
"http://retroachievements.org/dorequest.php?r=patch&u=%s&g=%u&f=3&l=1&t=%s",
CHEEVOS_VAR_SETTINGS->arrays.cheevos_username,
CHEEVOS_VAR_GAMEID, cheevos_locals.token
);
snprintf(CHEEVOS_VAR_URL, sizeof(CHEEVOS_VAR_URL),
"http://retroachievements.org/dorequest.php?r=patch&u=%s&g=%u&f=3&l=1&t=%s",
CHEEVOS_VAR_SETTINGS->arrays.cheevos_username,
CHEEVOS_VAR_GAMEID, cheevos_locals.token);
CHEEVOS_VAR_URL[sizeof(CHEEVOS_VAR_URL) - 1] = 0;
@@ -3150,6 +3152,64 @@ static int cheevos_iterate(coro_t* coro)
RARCH_LOG("[CHEEVOS]: got achievements for game id %u.\n", CHEEVOS_VAR_GAMEID);
CORO_RET();
/**************************************************************************
* Info Gets the achievements from Retro Achievements
* Inputs CHEEVOS_VAR_GAMEID
* Outputs CHEEVOS_VAR_JSON
*************************************************************************/
CORO_SUB(GET_BADGES)
badges_ctx = new_badges_ctx;
{
settings_t *settings = config_get_ptr();
if (!string_is_equal(settings->arrays.menu_driver, "xmb") ||
!settings->bools.cheevos_badges_enable)
CORO_RET();
}
CHEEVOS_VAR_CHEEVO_CURR = cheevos_locals.core.cheevos;
CHEEVOS_VAR_CHEEVO_END = cheevos_locals.core.cheevos + cheevos_locals.core.count;
for (; CHEEVOS_VAR_CHEEVO_CURR < CHEEVOS_VAR_CHEEVO_END ; CHEEVOS_VAR_CHEEVO_CURR++)
{
for (CHEEVOS_VAR_J = 0 ; CHEEVOS_VAR_J < 2; CHEEVOS_VAR_J++)
{
CHEEVOS_VAR_BADGE_PATH[0] = '\0';
fill_pathname_application_special(CHEEVOS_VAR_BADGE_BASE_PATH, sizeof(CHEEVOS_VAR_BADGE_BASE_PATH),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES);
if (!path_is_directory(CHEEVOS_VAR_BADGE_BASE_PATH))
path_mkdir(CHEEVOS_VAR_BADGE_BASE_PATH);
CORO_YIELD();
if (CHEEVOS_VAR_J == 0)
snprintf(CHEEVOS_VAR_BADGE_NAME, sizeof(CHEEVOS_VAR_BADGE_NAME), "%s.png", CHEEVOS_VAR_CHEEVO_CURR->badge);
else
snprintf(CHEEVOS_VAR_BADGE_NAME, sizeof(CHEEVOS_VAR_BADGE_NAME), "%s_lock.png", CHEEVOS_VAR_CHEEVO_CURR->badge);
fill_pathname_join(CHEEVOS_VAR_BADGE_PATH, CHEEVOS_VAR_BADGE_BASE_PATH, CHEEVOS_VAR_BADGE_NAME, sizeof(CHEEVOS_VAR_BADGE_PATH));
if (!badge_exists(CHEEVOS_VAR_BADGE_PATH))
{
#ifdef CHEEVOS_LOG_BADGES
RARCH_LOG("[CHEEVOS]: downloading badge %s\n", CHEEVOS_VAR_BADGE_PATH);
#endif
snprintf(CHEEVOS_VAR_URL, sizeof(CHEEVOS_VAR_URL), "http://i.retroachievements.org/Badge/%s", CHEEVOS_VAR_BADGE_NAME);
CORO_GOSUB(HTTP_GET);
if (CHEEVOS_VAR_JSON != NULL)
{
if (!filestream_write_file(CHEEVOS_VAR_BADGE_PATH, CHEEVOS_VAR_JSON, CHEEVOS_VAR_K))
RARCH_ERR("[CHEEVOS]: error writing badge %s\n", CHEEVOS_VAR_BADGE_PATH);
else
free(CHEEVOS_VAR_JSON);
}
}
}
}
CORO_RET();
/**************************************************************************
* Info Logs in the user at Retro Achievements
*************************************************************************/
@@ -3291,6 +3351,7 @@ static int cheevos_iterate(coro_t* coro)
CHEEVOS_VAR_JSON[length] = 0;
}
CHEEVOS_VAR_K = length;
net_http_delete(CHEEVOS_VAR_HTTP);
net_http_connection_free(CHEEVOS_VAR_CONN);
CORO_RET();
+2 -1
View File
@@ -47,6 +47,7 @@ typedef struct cheevos_ctx_desc
typedef enum
{
CHEEVOS_CONSOLE_NONE = 0,
/* Don't change those, the values match the console IDs
* at retroachievements.org. */
CHEEVOS_CONSOLE_MEGA_DRIVE = 1,
@@ -117,7 +118,7 @@ bool cheevos_load(const void *data);
void cheevos_reset_game(void);
void cheevos_populate_menu(void *data, bool hardcore);
void cheevos_populate_menu(void *data);
bool cheevos_get_description(cheevos_ctx_desc_t *desc);
+8 -3
View File
@@ -24,10 +24,15 @@
#include "../core.h"
#include "../verbosity.h"
static void STUB_LOG(const char *fmt, ...)
{
(void)fmt;
}
#ifdef CHEEVOS_VERBOSE
#define CHEEVOS_LOG RARCH_LOG
#else
#define CHEEVOS_LOG(...)
#define CHEEVOS_LOG STUB_LOG
#endif
/*****************************************************************************
@@ -251,7 +256,7 @@ void cheevos_var_patch_addr(cheevos_var_t* var, cheevos_console_t console)
else
{
unsigned i;
for (i = 0; i < 4; i++)
{
retro_ctx_memory_info_t meminfo;
@@ -347,7 +352,7 @@ unsigned cheevos_var_get_value(cheevos_var_t* var)
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);
+130 -45
View File
@@ -24,6 +24,7 @@
#include <file/file_path.h>
#include <lists/dir_list.h>
#include <string/stdstring.h>
#include <streams/file_stream.h>
#include <streams/stdin_stream.h>
#ifdef HAVE_CONFIG_H
@@ -610,7 +611,7 @@ static void command_stdin_poll(command_t *handle)
handle->stdin_buf_ptr += ret;
handle->stdin_buf[handle->stdin_buf_ptr] = '\0';
last_newline =
last_newline =
strrchr(handle->stdin_buf, '\n');
if (!last_newline)
@@ -1028,7 +1029,7 @@ static void command_event_init_controllers(void)
break;
case RETRO_DEVICE_JOYPAD:
/* Ideally these checks shouldn't be required but if we always
* call core_set_controller_port_device input won't work on
* call core_set_controller_port_device input won't work on
* cores that don't set port information properly */
if (info && info->ports.size != 0 && i < info->ports.size)
set_controller = true;
@@ -1102,7 +1103,7 @@ static void command_event_load_auto_state(void)
#endif
#ifdef HAVE_CHEEVOS
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
goto error;
#endif
@@ -1114,7 +1115,7 @@ static void command_event_load_auto_state(void)
file_path_str(FILE_PATH_AUTO_EXTENSION),
savestate_name_auto_size);
if (!path_file_exists(savestate_name_auto))
if (!filestream_exists(savestate_name_auto))
goto error;
ret = content_load_state(savestate_name_auto, false, true);
@@ -1126,7 +1127,7 @@ static void command_event_load_auto_state(void)
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM),
savestate_name_auto, ret ? "succeeded" : "failed");
RARCH_LOG("%s\n", msg);
free(savestate_name_auto);
return;
@@ -1308,14 +1309,18 @@ static void command_event_restore_default_shader_preset(void)
if (!path_is_empty(RARCH_PATH_DEFAULT_SHADER_PRESET))
{
/* auto shader preset: reload the original shader */
settings_t *settings = config_get_ptr();
settings_t *settings = config_get_ptr();
const char *shader_preset = path_get(RARCH_PATH_DEFAULT_SHADER_PRESET);
RARCH_LOG("%s %s\n",
msg_hash_to_str(MSG_RESTORING_DEFAULT_SHADER_PRESET_TO),
path_get(RARCH_PATH_DEFAULT_SHADER_PRESET));
strlcpy(settings->paths.path_shader,
path_get(RARCH_PATH_DEFAULT_SHADER_PRESET),
sizeof(settings->paths.path_shader));
if (!string_is_empty(shader_preset))
{
RARCH_LOG("%s %s\n",
msg_hash_to_str(MSG_RESTORING_DEFAULT_SHADER_PRESET_TO),
shader_preset);
strlcpy(settings->paths.path_shader,
shader_preset,
sizeof(settings->paths.path_shader));
}
}
path_clear(RARCH_PATH_DEFAULT_SHADER_PRESET);
@@ -1334,7 +1339,7 @@ static bool command_event_save_auto_state(void)
bool is_inited = false;
char *savestate_name_auto = (char*)
calloc(PATH_MAX_LENGTH, sizeof(*savestate_name_auto));
size_t
size_t
savestate_name_auto_size = PATH_MAX_LENGTH * sizeof(char);
settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr();
@@ -1352,7 +1357,7 @@ static bool command_event_save_auto_state(void)
goto error;
#ifdef HAVE_CHEEVOS
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
goto error;
#endif
@@ -1374,24 +1379,32 @@ error:
return false;
}
static bool command_event_save_config(const char *config_path,
static bool command_event_save_config(
const char *config_path,
char *s, size_t len)
{
if (string_is_empty(config_path) || !config_save_file(config_path))
bool path_exists = !string_is_empty(config_path);
const char *str = path_exists ? config_path :
path_get(RARCH_PATH_CONFIG);
if (path_exists && config_save_file(config_path))
{
snprintf(s, len, "[Config]: %s \"%s\".",
msg_hash_to_str(MSG_SAVED_NEW_CONFIG_TO),
config_path);
RARCH_LOG("%s\n", s);
return true;
}
if (!string_is_empty(str))
{
snprintf(s, len, "%s \"%s\".",
msg_hash_to_str(MSG_FAILED_SAVING_CONFIG_TO),
path_get(RARCH_PATH_CONFIG));
str);
RARCH_ERR("%s\n", s);
return false;
}
snprintf(s, len, "[Config]: %s \"%s\".",
msg_hash_to_str(MSG_SAVED_NEW_CONFIG_TO),
path_get(RARCH_PATH_CONFIG));
RARCH_LOG("%s\n", s);
return true;
return false;
}
/**
@@ -1408,6 +1421,7 @@ static bool command_event_save_core_config(void)
bool ret = false;
bool found_path = false;
bool overrides_active = false;
const char *core_path = NULL;
char *config_dir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
char *config_name = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
char *config_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
@@ -1430,8 +1444,10 @@ static bool command_event_save_core_config(void)
goto error;
}
core_path = path_get(RARCH_PATH_CORE);
/* Infer file name based on libretro core. */
if (!string_is_empty(path_get(RARCH_PATH_CORE)) && path_file_exists(path_get(RARCH_PATH_CORE)))
if (!string_is_empty(core_path) && filestream_exists(core_path))
{
unsigned i;
RARCH_LOG("%s\n", msg_hash_to_str(MSG_USING_CORE_NAME_FOR_NEW_CONFIG));
@@ -1443,7 +1459,7 @@ static bool command_event_save_core_config(void)
fill_pathname_base_noext(
config_name,
path_get(RARCH_PATH_CORE),
core_path,
config_size);
fill_pathname_join(config_path, config_dir, config_name,
@@ -1459,7 +1475,7 @@ static bool command_event_save_core_config(void)
sizeof(tmp));
strlcat(config_path, tmp, config_size);
if (!path_file_exists(config_path))
if (!filestream_exists(config_path))
{
found_path = true;
break;
@@ -1490,7 +1506,8 @@ static bool command_event_save_core_config(void)
command_event_save_config(config_path, msg, sizeof(msg));
runloop_msg_queue_push(msg, 1, 180, true);
if (!string_is_empty(msg))
runloop_msg_queue_push(msg, 1, 180, true);
if (overrides_active)
rarch_ctl(RARCH_CTL_SET_OVERRIDES_ACTIVE, NULL);
@@ -1686,6 +1703,62 @@ 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 *core_display_name,
const char *label,
const char *path)
{
playlist_t *plist = (playlist_t*)data;
playlist_t *playlist = NULL;
if (plist)
playlist = plist;
#ifdef HAVE_MENU
else
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist);
#endif
if (!playlist)
return;
playlist_update(
playlist,
idx,
label,
NULL,
path,
core_display_name,
NULL,
NULL);
playlist_write_file(playlist);
}
/**
* command_event:
* @cmd : Event command index.
@@ -1734,18 +1807,23 @@ bool command_event(enum event_command cmd, void *data)
{
#ifdef HAVE_MENU
core_info_ctx_find_t info_find;
rarch_system_info_t *system_info = runloop_get_system_info();
struct retro_system_info *system = &system_info->info;
rarch_system_info_t *system_info = NULL;
struct retro_system_info *system = NULL;
const char *core_path = NULL;
system_info = runloop_get_system_info();
system = &system_info->info;
core_path = path_get(RARCH_PATH_CORE);
#if defined(HAVE_DYNAMIC)
if (string_is_empty(path_get(RARCH_PATH_CORE)))
if (string_is_empty(core_path))
return false;
#endif
libretro_get_system_info(
path_get(RARCH_PATH_CORE),
core_path,
system,
&system_info->load_no_content);
info_find.path = path_get(RARCH_PATH_CORE);
info_find.path = core_path;
if (!core_info_load(&info_find))
{
@@ -1771,7 +1849,7 @@ bool command_event(enum event_command cmd, void *data)
#ifdef HAVE_CHEEVOS
{
settings_t *settings = config_get_ptr();
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
}
#endif
@@ -1813,7 +1891,7 @@ bool command_event(enum event_command cmd, void *data)
{
settings_t *settings = config_get_ptr();
#ifdef HAVE_CHEEVOS
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
#endif
@@ -1879,6 +1957,10 @@ bool command_event(enum event_command cmd, void *data)
cheevos_toggle_hardcore_mode();
#endif
break;
/* this fallthrough is on purpose, it should do
a CMD_EVENT_REINIT too */
case CMD_EVENT_REINIT_FROM_TOGGLE:
retroarch_unset_forced_fullscreen();
case CMD_EVENT_REINIT:
video_driver_reinit();
/* Poll input to avoid possibly stale data to corrupt things. */
@@ -1904,7 +1986,7 @@ bool command_event(enum event_command cmd, void *data)
{
#ifdef HAVE_CHEEVOS
settings_t *settings = config_get_ptr();
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
#endif
@@ -1915,7 +1997,7 @@ bool command_event(enum event_command cmd, void *data)
{
settings_t *settings = config_get_ptr();
#ifdef HAVE_CHEEVOS
if (settings->bools.cheevos_hardcore_mode_enable)
if (cheevos_loaded && settings->bools.cheevos_hardcore_mode_enable)
return false;
#endif
if (settings->bools.rewind_enable)
@@ -2254,16 +2336,13 @@ TODO: Add a setting for these tweaks */
if (!string_is_empty(global->name.label))
label = global->name.label;
playlist_push(
command_playlist_push_write(
g_defaults.content_favorites,
(const char*)data,
label,
core_path,
core_name,
NULL,
NULL
core_name
);
playlist_write_file(g_defaults.content_favorites);
runloop_msg_queue_push(msg_hash_to_str(MSG_ADDED_TO_FAVORITES), 1, 180, true);
break;
}
@@ -2492,15 +2571,21 @@ TODO: Add a setting for these tweaks */
case CMD_EVENT_FULLSCREEN_TOGGLE:
{
settings_t *settings = config_get_ptr();
bool new_fullscreen_state = !settings->bools.video_fullscreen;
bool new_fullscreen_state = !settings->bools.video_fullscreen
&& !retroarch_is_forced_fullscreen();
if (!video_driver_has_windowed())
return false;
/* If we go fullscreen we drop all drivers and
* reinitialize to be safe. */
/* we toggled manually, write the new value to settings */
configuration_set_bool(settings, settings->bools.video_fullscreen,
new_fullscreen_state);
/* we toggled manually, the cli arg is irrelevant now */
if (retroarch_is_forced_fullscreen())
retroarch_unset_forced_fullscreen();
/* If we go fullscreen we drop all drivers and
* reinitialize to be safe. */
command_event(CMD_EVENT_REINIT, NULL);
if (settings->bools.video_fullscreen)
video_driver_hide_mouse();
+17 -1
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2016 - Daniel De Matteis
* Copyright (C) 2016 - 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-
* ation, either version 3 of the License, or (at your option) any later version.
@@ -61,6 +61,8 @@ enum event_command
/* Quits RetroArch. */
CMD_EVENT_QUIT,
/* Reinitialize all drivers. */
CMD_EVENT_REINIT_FROM_TOGGLE,
/* Reinitialize all drivers. */
CMD_EVENT_REINIT,
/* Toggles cheevos hardcore mode. */
CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE,
@@ -259,6 +261,20 @@ 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 *core_display_name,
const char *label,
const char *path);
RETRO_END_DECLS
#endif
+15 -4
View File
@@ -115,6 +115,11 @@ static const unsigned window_y = 0;
static const unsigned fullscreen_x = 0;
static const unsigned fullscreen_y = 0;
/* Amount of transparency to use for the main window.
* 1 is the most transparent while 100 is opaque.
*/
static const unsigned window_opacity = 100;
#if defined(RARCH_CONSOLE) || defined(__APPLE__)
static const bool load_dummy_on_core_shutdown = false;
#else
@@ -293,6 +298,8 @@ static bool xmb_show_add = true;
#endif
#endif
static bool automatically_add_content_to_playlist = false;
static float menu_framebuffer_opacity = 0.900;
static float menu_wallpaper_opacity = 0.300;
@@ -656,11 +663,9 @@ static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/window
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2010/x86/latest/";
#endif
#elif _MSC_VER == 1400
#if defined(__x86_64__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2005/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-msvc2005/x86/latest/";
#endif
#elif _MSC_VER == 1310
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows-msvc2003/x86/latest/";
#else
#if defined(__x86_64__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/windows/x86_64/latest/";
@@ -680,6 +685,12 @@ static char buildbot_server_url[] = "";
#endif
#elif defined(WIIU)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/nintendo/wiiu/latest/";
#elif defined(__CELLOS_LV2__) && defined(DEX_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/dex-ps3/";
#elif defined(__CELLOS_LV2__) && defined(CEX_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/cex-ps3/";
#elif defined(__CELLOS_LV2__) && defined(ODE_BUILD)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/playstation/ps3/latest/ode-ps3/";
#else
static char buildbot_server_url[] = "";
#endif
+184 -145
View File
@@ -22,163 +22,202 @@
/* User 1 */
static const struct retro_keybind retro_keybinds_1[] = {
/* | RetroPad button | enum | keyboard key | js btn | js axis | */
/* | RetroPad button | enum | keyboard key | m-btn | js btn | js axis | */
#ifdef __QNX__
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_k, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_i, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_v, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_b, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_e, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_s, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_w, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_d, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_l, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_o, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_f, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_j, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_r, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_u, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_g, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_h, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_k, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_v, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_b, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_e, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_s, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_w, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_d, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_l, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_o, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_f, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_j, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_r, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_u, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_g, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_h, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_SPACE, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_TRIGGER, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_RELOAD, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_A, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_B, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_C, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_START, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ 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_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 },
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ 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_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_SPACE, NO_BTN, NO_BTN, 0, AXIS_NONE },
#else
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_z, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_a, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_RETURN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UP, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_x, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_s, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_q, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_w, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ 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 },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_RETURN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UP, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_x, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_s, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_q, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_w, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_p, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_k, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_h, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_m, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_n, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_u, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_F8, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_e, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_SCROLLOCK, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_F1, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_TRIGGER, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_RELOAD, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_A, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_B, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_C, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_START, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ 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_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 },
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_m, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_n, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_u, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ 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_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_e, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_SCROLLOCK, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_F1, NO_BTN, NO_BTN, 0, AXIS_NONE },
#endif
};
/* Users 2 to MAX_USERS */
static const struct retro_keybind retro_keybinds_rest[] = {
/* | RetroPad button | desc | keyboard key | js btn | js axis | */
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
/* | RetroPad button | desc | keyboard key | js btn | js axis | */
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_TRIGGER, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_RELOAD, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_A, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_B, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_AUX_C, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_START, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_LIGHTGUN_DPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
};
#endif
+93 -36
View File
@@ -19,6 +19,7 @@
#include <ctype.h>
#include <libretro.h>
#include <file/config_file.h>
#include <file/file_path.h>
#include <compat/strl.h>
@@ -1114,6 +1115,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
unsigned count = 0;
global_t *global = global_get_ptr();
SETTING_BOOL("automatically_add_content_to_playlist", &settings->bools.automatically_add_content_to_playlist, true, automatically_add_content_to_playlist, false);
SETTING_BOOL("ui_companion_start_on_boot", &settings->bools.ui_companion_start_on_boot, true, ui_companion_start_on_boot, false);
SETTING_BOOL("ui_companion_enable", &settings->bools.ui_companion_enable, true, ui_companion_enable, false);
SETTING_BOOL("video_gpu_record", &settings->bools.video_gpu_record, true, gpu_record, false);
@@ -1255,6 +1257,9 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false);
SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false);
SETTING_BOOL("cheevos_leaderboards_enable", &settings->bools.cheevos_leaderboards_enable, true, false, false);
#ifdef HAVE_XMB
SETTING_BOOL("cheevos_badges_enable", &settings->bools.cheevos_badges_enable, true, false, false);
#endif
SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false);
#endif
#ifdef HAVE_OVERLAY
@@ -1373,6 +1378,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
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);
#endif
@@ -1572,11 +1578,6 @@ static void config_set_defaults(void)
#endif
settings->floats.video_scale = scale;
if (retroarch_is_forced_fullscreen())
{
configuration_set_bool(settings, settings->bools.video_fullscreen, true);
}
if (g_defaults.settings.video_threaded_enable != video_threaded)
video_driver_set_threaded(g_defaults.settings.video_threaded_enable);
@@ -1603,9 +1604,9 @@ static void config_set_defaults(void)
settings->rewind_buffer_size = rewind_buffer_size;
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = path_file_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = path_file_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH);
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH);
#endif
#ifdef HAVE_MENU
@@ -1864,7 +1865,7 @@ static void config_set_defaults(void)
temp_str[0] = '\0';
fill_pathname_expand_special(temp_str,
g_defaults.path.config,
g_defaults.path.config,
PATH_MAX_LENGTH * sizeof(char));
path_set(RARCH_PATH_CONFIG, temp_str);
free(temp_str);
@@ -2140,6 +2141,24 @@ static void read_keybinds_axis(config_file_t *conf, unsigned user,
input_config_bind_map_get_base(idx), bind);
}
static void read_keybinds_mbutton(config_file_t *conf, unsigned user,
unsigned idx, struct retro_keybind *bind)
{
const char *prefix = NULL;
if (!input_config_bind_map_get_valid(idx))
return;
if (!input_config_bind_map_get_base(idx))
return;
prefix = input_config_get_prefix(user,
input_config_bind_map_get_meta(idx));
if (prefix)
input_config_parse_mouse_button(conf, prefix,
input_config_bind_map_get_base(idx), bind);
}
static void read_keybinds_user(config_file_t *conf, unsigned user)
{
unsigned i;
@@ -2154,6 +2173,7 @@ static void read_keybinds_user(config_file_t *conf, unsigned user)
read_keybinds_keyboard(conf, user, i, bind);
read_keybinds_button(conf, user, i, bind);
read_keybinds_axis(conf, user, i, bind);
read_keybinds_mbutton(conf, user, i, bind);
}
}
@@ -2262,6 +2282,8 @@ static bool config_load_file(const char *path, bool set_defaults,
#ifdef HAVE_NETWORKING
char *override_netplay_ip_address = NULL;
#endif
const char *path_core = NULL;
const char *path_config = NULL;
int bool_settings_size = sizeof(settings->bools) / sizeof(settings->bools.placeholder);
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
int int_settings_size = sizeof(settings->ints) / sizeof(settings->ints.placeholder);
@@ -2350,9 +2372,6 @@ static bool config_load_file(const char *path, bool set_defaults,
*bool_settings[i].ptr = tmp;
}
if (!retroarch_is_forced_fullscreen())
CONFIG_GET_BOOL_BASE(conf, settings, bools.video_fullscreen, "video_fullscreen");
#ifdef HAVE_NETWORKGAMEPAD
for (i = 0; i < MAX_USERS; i++)
{
@@ -2534,13 +2553,16 @@ static bool config_load_file(const char *path, bool set_defaults,
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, settings->floats.audio_volume);
audio_set_float(AUDIO_ACTION_MIXER_VOLUME_GAIN, settings->floats.audio_mixer_volume);
path_config = path_get(RARCH_PATH_CONFIG);
path_core = path_get(RARCH_PATH_CORE);
if (string_is_empty(settings->paths.path_content_history))
{
if (string_is_empty(settings->paths.directory_content_history))
{
fill_pathname_resolve_relative(
settings->paths.path_content_history,
path_get(RARCH_PATH_CONFIG),
path_config,
file_path_str(FILE_PATH_CONTENT_HISTORY),
sizeof(settings->paths.path_content_history));
}
@@ -2559,7 +2581,7 @@ static bool config_load_file(const char *path, bool set_defaults,
{
fill_pathname_resolve_relative(
settings->paths.path_content_favorites,
path_get(RARCH_PATH_CONFIG),
path_config,
file_path_str(FILE_PATH_CONTENT_FAVORITES),
sizeof(settings->paths.path_content_favorites));
}
@@ -2578,7 +2600,7 @@ static bool config_load_file(const char *path, bool set_defaults,
{
fill_pathname_resolve_relative(
settings->paths.path_content_music_history,
path_get(RARCH_PATH_CONFIG),
path_config,
file_path_str(FILE_PATH_CONTENT_MUSIC_HISTORY),
sizeof(settings->paths.path_content_music_history));
}
@@ -2597,7 +2619,7 @@ static bool config_load_file(const char *path, bool set_defaults,
{
fill_pathname_resolve_relative(
settings->paths.path_content_video_history,
path_get(RARCH_PATH_CONFIG),
path_config,
file_path_str(FILE_PATH_CONTENT_VIDEO_HISTORY),
sizeof(settings->paths.path_content_video_history));
}
@@ -2616,7 +2638,7 @@ static bool config_load_file(const char *path, bool set_defaults,
{
fill_pathname_resolve_relative(
settings->paths.path_content_image_history,
path_get(RARCH_PATH_CONFIG),
path_config,
file_path_str(FILE_PATH_CONTENT_IMAGE_HISTORY),
sizeof(settings->paths.path_content_image_history));
}
@@ -2642,14 +2664,14 @@ static bool config_load_file(const char *path, bool set_defaults,
}
#ifdef RARCH_CONSOLE
if (!string_is_empty(path_get(RARCH_PATH_CORE)))
if (!string_is_empty(path_core))
{
#endif
/* Safe-guard against older behavior. */
if (path_is_directory(path_get(RARCH_PATH_CORE)))
if (path_is_directory(path_core))
{
RARCH_WARN("\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n");
strlcpy(settings->paths.directory_libretro, path_get(RARCH_PATH_CORE),
strlcpy(settings->paths.directory_libretro, path_core,
sizeof(settings->paths.directory_libretro));
path_clear(RARCH_PATH_CORE);
}
@@ -2690,21 +2712,18 @@ static bool config_load_file(const char *path, bool set_defaults,
*settings->paths.directory_system = '\0';
if (settings->floats.slowmotion_ratio < 1.0f)
{
configuration_set_float(settings, settings->floats.slowmotion_ratio, 1.0f);
}
/* Sanitize fastforward_ratio value - previously range was -1
* and up (with 0 being skipped) */
if (settings->floats.fastforward_ratio < 0.0f)
{
configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f);
}
#ifdef HAVE_LAKKA
settings->bools.ssh_enable = path_file_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = path_file_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH);
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH);
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH);
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH);
#endif
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL) &&
@@ -3343,6 +3362,38 @@ static void save_keybind_axis(config_file_t *conf, const char *prefix,
}
}
static void save_keybind_mbutton(config_file_t *conf, const char *prefix,
const char *base, const struct retro_keybind *bind, bool save_empty)
{
char key[64];
key[0] = '\0';
fill_pathname_join_delim_concat(key, prefix,
base, '_', "_mbtn", sizeof(key));
switch ( bind->mbutton )
{
case RETRO_DEVICE_ID_MOUSE_LEFT: config_set_uint64(conf, key, 1); break;
case RETRO_DEVICE_ID_MOUSE_RIGHT: config_set_uint64(conf, key, 2); break;
case RETRO_DEVICE_ID_MOUSE_MIDDLE: config_set_uint64(conf, key, 3); break;
case RETRO_DEVICE_ID_MOUSE_BUTTON_4: config_set_uint64(conf, key, 4); break;
case RETRO_DEVICE_ID_MOUSE_BUTTON_5: config_set_uint64(conf, key, 5); break;
case RETRO_DEVICE_ID_MOUSE_WHEELUP: config_set_string(conf, key, "wu"); break;
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN: config_set_string(conf, key, "wd"); break;
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP: config_set_string(conf, key, "whu"); break;
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN: config_set_string(conf, key, "whd"); break;
default:
if ( save_empty ) {
config_set_string(conf, key, file_path_str(FILE_PATH_NUL));
}
break;
}
}
/**
* save_keybind:
* @conf : pointer to config file object
@@ -3363,6 +3414,7 @@ static void save_keybind(config_file_t *conf, const char *prefix,
save_keybind_key(conf, prefix, base, bind);
save_keybind_joykey(conf, prefix, base, bind, save_empty);
save_keybind_axis(conf, prefix, base, bind, save_empty);
save_keybind_mbutton(conf, prefix, base, bind, save_empty);
}
/**
@@ -3543,8 +3595,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user)
config_file_free(conf);
free(buf);
free(autoconf_file);
if (path_new)
free(path_new);
free(path_new);
return ret;
error:
@@ -3734,17 +3785,23 @@ bool config_save_file(const char *path)
#ifdef HAVE_LAKKA
if (settings->bools.ssh_enable)
filestream_close(filestream_open(LAKKA_SSH_PATH, RFILE_MODE_WRITE, -1));
filestream_close(filestream_open(LAKKA_SSH_PATH,
RETRO_VFS_FILE_ACCESS_WRITE,
RETRO_VFS_FILE_ACCESS_HINT_NONE));
else
path_file_remove(LAKKA_SSH_PATH);
filestream_delete(LAKKA_SSH_PATH);
if (settings->bools.samba_enable)
filestream_close(filestream_open(LAKKA_SAMBA_PATH, RFILE_MODE_WRITE, -1));
filestream_close(filestream_open(LAKKA_SAMBA_PATH,
RETRO_VFS_FILE_ACCESS_WRITE,
RETRO_VFS_FILE_ACCESS_HINT_NONE));
else
path_file_remove(LAKKA_SAMBA_PATH);
filestream_delete(LAKKA_SAMBA_PATH);
if (settings->bools.bluetooth_enable)
filestream_close(filestream_open(LAKKA_BLUETOOTH_PATH, RFILE_MODE_WRITE, -1));
filestream_close(filestream_open(LAKKA_BLUETOOTH_PATH,
RETRO_VFS_FILE_ACCESS_WRITE,
RETRO_VFS_FILE_ACCESS_HINT_NONE));
else
path_file_remove(LAKKA_BLUETOOTH_PATH);
filestream_delete(LAKKA_BLUETOOTH_PATH);
#endif
for (i = 0; i < MAX_USERS; i++)
@@ -3817,7 +3874,7 @@ bool config_save_overrides(int override_type)
fill_pathname_join(override_directory, config_directory, core_name,
path_size);
if(!path_file_exists(override_directory))
if (!filestream_exists(override_directory))
path_mkdir(override_directory);
/* Concatenate strings into full paths for core_path, game_path */
+16 -5
View File
@@ -29,21 +29,28 @@
#include "input/input_defines.h"
#define configuration_set_float(settings, var, newvar) \
{ \
settings->modified = true; \
var = newvar
var = newvar; \
}
#define configuration_set_bool(settings, var, newvar) \
{ \
settings->modified = true; \
var = newvar
var = newvar; \
}
#define configuration_set_uint(settings, var, newvar) \
{ \
settings->modified = true; \
var = newvar
var = newvar; \
}
#define configuration_set_int(settings, var, newvar) \
{ \
settings->modified = true; \
var = newvar
var = newvar; \
}
enum override_type
{
@@ -184,6 +191,7 @@ typedef struct settings
bool cheevos_test_unofficial;
bool cheevos_hardcore_mode_enable;
bool cheevos_leaderboards_enable;
bool cheevos_badges_enable;
bool cheevos_verbose_enable;
/* Camera */
@@ -242,6 +250,8 @@ typedef struct settings
bool ssh_enable;
bool samba_enable;
bool bluetooth_enable;
bool automatically_add_content_to_playlist;
} bools;
struct
@@ -315,6 +325,7 @@ typedef struct settings
unsigned keymapper_port;
unsigned video_window_x;
unsigned video_window_y;
unsigned video_window_opacity;
unsigned video_monitor_index;
unsigned video_fullscreen_x;
unsigned video_fullscreen_y;
+4 -4
View File
@@ -30,14 +30,14 @@ RETRO_BEGIN_DECLS
enum
{
/* Polling is performed before
/* Polling is performed before
* call to retro_run. */
POLL_TYPE_EARLY = 0,
/* Polling is performed when requested. */
POLL_TYPE_NORMAL,
/* Polling is performed on first call to
/* Polling is performed on first call to
* retro_input_state per frame. */
POLL_TYPE_LATE
};
@@ -65,7 +65,7 @@ typedef struct rarch_system_info
const char *input_desc_btn[MAX_USERS][RARCH_FIRST_META_KEY];
char valid_extensions[255];
struct retro_disk_control_callback disk_control_cb;
struct retro_disk_control_callback disk_control_cb;
struct retro_location_callback location_cb;
struct
@@ -79,7 +79,7 @@ typedef struct rarch_system_info
struct retro_controller_info *data;
unsigned size;
} ports;
rarch_memory_map_t mmaps;
} rarch_system_info_t;
+17 -16
View File
@@ -20,6 +20,7 @@
#include <file/file_path.h>
#include <lists/dir_list.h>
#include <file/archive_file.h>
#include <streams/file_stream.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -214,7 +215,7 @@ static bool core_info_list_iterate(
fill_pathname_join(s,
(!string_is_empty(settings->paths.path_libretro_info)) ?
settings->paths.path_libretro_info :
settings->paths.path_libretro_info :
settings->paths.directory_libretro,
info_path_base, len);
@@ -255,9 +256,9 @@ static core_info_list_t *core_info_list_new(const char *path)
info_path[0] = '\0';
if (
if (
core_info_list_iterate(info_path, info_path_size,
contents, i)
contents, i)
&& path_is_valid(info_path))
{
char *tmp = NULL;
@@ -270,14 +271,14 @@ static core_info_list_t *core_info_list_new(const char *path)
if (!conf)
continue;
if (config_get_string(conf, "display_name", &tmp)
if (config_get_string(conf, "display_name", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].display_name = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "corename", &tmp)
if (config_get_string(conf, "corename", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].core_name = strdup(tmp);
@@ -285,7 +286,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "systemname", &tmp)
if (config_get_string(conf, "systemname", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].systemname = strdup(tmp);
@@ -293,7 +294,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "manufacturer", &tmp)
if (config_get_string(conf, "manufacturer", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].system_manufacturer = strdup(tmp);
@@ -305,7 +306,7 @@ static core_info_list_t *core_info_list_new(const char *path)
core_info[i].firmware_count = count;
if (config_get_string(conf, "supported_extensions", &tmp)
if (config_get_string(conf, "supported_extensions", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].supported_extensions = strdup(tmp);
@@ -316,7 +317,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "authors", &tmp)
if (config_get_string(conf, "authors", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].authors = strdup(tmp);
@@ -327,7 +328,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "permissions", &tmp)
if (config_get_string(conf, "permissions", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].permissions = strdup(tmp);
@@ -338,7 +339,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "license", &tmp)
if (config_get_string(conf, "license", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].licenses = strdup(tmp);
@@ -349,7 +350,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "categories", &tmp)
if (config_get_string(conf, "categories", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].categories = strdup(tmp);
@@ -360,7 +361,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "database", &tmp)
if (config_get_string(conf, "database", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].databases = strdup(tmp);
@@ -371,7 +372,7 @@ static core_info_list_t *core_info_list_new(const char *path)
tmp = NULL;
}
if (config_get_string(conf, "notes", &tmp)
if (config_get_string(conf, "notes", &tmp)
&& !string_is_empty(tmp))
{
core_info[i].notes = strdup(tmp);
@@ -540,7 +541,7 @@ static bool core_info_list_update_missing_firmware_internal(
fill_pathname_join(path, systemdir,
info->firmware[i].path, path_size);
info->firmware[i].missing = !path_file_exists(path);
info->firmware[i].missing = !filestream_exists(path);
if (info->firmware[i].missing && !info->firmware[i].optional)
{
rarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL);
@@ -596,7 +597,7 @@ static void core_info_list_get_missing_firmware(
{
fill_pathname_join(path, systemdir,
info->firmware[i].path, sizeof(path));
info->firmware[i].missing = !path_file_exists(path);
info->firmware[i].missing = !filestream_exists(path);
*num_firmware += info->firmware[i].missing;
}
+1 -1
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2016-2017 - 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-
* ation, either version 3 of the License, or (at your option) any later version.
+2 -2
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* 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.
@@ -16,7 +16,7 @@
#ifndef __CORE_TYPE_H
#define __CORE_TYPE_H
enum rarch_core_type
enum rarch_core_type
{
CORE_TYPE_PLAIN = 0,
CORE_TYPE_DUMMY,
+1 -1
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2012-2015 - Michael Lelli
*
*
* 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.
+1 -1
View File
@@ -2,7 +2,7 @@
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2012-2015 - Michael Lelli
*
*
* 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.
+22 -22
View File
@@ -214,7 +214,7 @@ void CORE_PREFIX(retro_init)(void)
av_register_all();
#if 0
/* FIXME: Occasionally crashes inside libavdevice
/* FIXME: Occasionally crashes inside libavdevice
* for some odd reason on reentrancy. Likely a libavdevice bug. */
avdevice_register_all();
#endif
@@ -272,7 +272,7 @@ void CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
{
static const struct retro_variable vars[] = {
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
{ "ffmpeg_temporal_interp", "Temporal Interpolation; enabled|disabled" },
{ "ffmpeg_temporal_interp", "Temporal Interpolation; disabled|enabled" },
#ifdef HAVE_GL_FFT
{ "ffmpeg_fft_resolution", "FFT Resolution; 1280x720|1920x1080|2560x1440|3840x2160|640x360|320x180" },
{ "ffmpeg_fft_multisample", "FFT Multisample; 1x|2x|4x" },
@@ -548,7 +548,7 @@ void CORE_PREFIX(retro_run)(void)
frame_cnt++;
/* Have to decode audio before video
/* Have to decode audio before video
* incase there are PTS fuckups due
* to seeking. */
if (audio_streams_num > 0)
@@ -679,20 +679,20 @@ void CORE_PREFIX(retro_run)(void)
if (!temporal_interpolation)
mix_factor = 1.0f;
glBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer());
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, media.width, media.height);
glUseProgram(prog);
glUniform1f(mix_loc, mix_factor);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, frames[1].tex);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, frames[0].tex);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(vertex_loc, 2, GL_FLOAT, GL_FALSE,
4 * sizeof(GLfloat), (const GLvoid*)(0 * sizeof(GLfloat)));
@@ -701,17 +701,17 @@ void CORE_PREFIX(retro_run)(void)
glEnableVertexAttribArray(vertex_loc);
glEnableVertexAttribArray(tex_loc);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableVertexAttribArray(vertex_loc);
glDisableVertexAttribArray(tex_loc);
glUseProgram(0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 0);
CORE_PREFIX(video_cb)(RETRO_HW_FRAME_BUFFER_VALID,
media.width, media.height, media.width * sizeof(uint32_t));
}
@@ -731,10 +731,10 @@ void CORE_PREFIX(retro_run)(void)
while (frames)
{
unsigned to_read = frames;
/* FFT size we use (1 << 11). Really shouldn't happen,
* unless we use a crazy high sample rate. */
if (to_read > (1 << 11))
if (to_read > (1 << 11))
to_read = 1 << 11;
fft_step_fft(fft, buffer, to_read);
@@ -861,7 +861,7 @@ static bool open_codecs(void)
break;
case AVMEDIA_TYPE_VIDEO:
if ( !vctx
if ( !vctx
&& !codec_is_image(fctx->streams[i]->codec->codec_id))
{
if (!open_codec(&vctx, i))
@@ -872,7 +872,7 @@ static bool open_codecs(void)
case AVMEDIA_TYPE_SUBTITLE:
#ifdef HAVE_SSA
if ( subtitle_streams_num < MAX_STREAMS
if ( subtitle_streams_num < MAX_STREAMS
&& codec_id_is_ass(fctx->streams[i]->codec->codec_id))
{
int size;
@@ -923,7 +923,7 @@ static bool init_media_info(void)
{
media.width = vctx->width;
media.height = vctx->height;
media.aspect = (float)vctx->width *
media.aspect = (float)vctx->width *
av_q2d(vctx->sample_aspect_ratio) / vctx->height;
}
@@ -1149,7 +1149,7 @@ static void render_ass_img(AVFrame *conv_frame, ASS_Image *img)
dst_g = (g * src_alpha + dst_g * dst_alpha) >> 8;
dst_b = (b * src_alpha + dst_b * dst_alpha) >> 8;
dst[x] = (0xffu << 24) | (dst_r << 16) |
dst[x] = (0xffu << 24) | (dst_r << 16) |
(dst_g << 8) | (dst_b << 0);
}
}
@@ -1171,7 +1171,7 @@ static void decode_thread(void *data)
struct SwsContext *sws = NULL;
(void)data;
if (video_stream >= 0)
sws = sws_getCachedContext(NULL,
media.width, media.height, vctx->pix_fmt,
@@ -1295,7 +1295,7 @@ static void decode_thread(void *data)
int stride;
unsigned y;
const uint8_t *src = NULL;
fifo_write(video_decode_fifo, &pts, sizeof(pts));
src = conv_frame->data[0];
stride = conv_frame->linesize[0];
@@ -1377,8 +1377,8 @@ static void context_destroy(void)
#include "gl_shaders/ffmpeg.glsl.vert.h"
/* OpenGL ES note about main() - Get format as GL_RGBA/GL_UNSIGNED_BYTE.
* Assume little endian, so we get ARGB -> BGRA byte order, and
/* OpenGL ES note about main() - Get format as GL_RGBA/GL_UNSIGNED_BYTE.
* Assume little endian, so we get ARGB -> BGRA byte order, and
* we have to swizzle to .BGR. */
#ifdef HAVE_OPENGLES
#include "gl_shaders/ffmpeg_es.glsl.frag.h"
@@ -1445,7 +1445,7 @@ static void context_reset(void)
#if !defined(HAVE_OPENGLES)
glGenBuffers(1, &frames[i].pbo);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, frames[i].pbo);
glBufferData(GL_PIXEL_UNPACK_BUFFER, media.width
glBufferData(GL_PIXEL_UNPACK_BUFFER, media.width
* media.height * sizeof(uint32_t), NULL, GL_STREAM_DRAW);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
#endif
@@ -1611,7 +1611,7 @@ bool CORE_PREFIX(retro_load_game)(const struct retro_game_info *info)
if (video_stream >= 0 || is_fft)
{
video_decode_fifo = fifo_new(media.width
video_decode_fifo = fifo_new(media.width
* media.height * sizeof(uint32_t) * 32);
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
+7 -7
View File
@@ -45,7 +45,7 @@ struct Pass
GLuint parameter_tex;
};
struct GLFFT
struct GLFFT
{
GLuint ms_rb_color;
GLuint ms_rb_ds;
@@ -102,7 +102,7 @@ static GLuint fft_compile_shader(fft_t *fft, GLenum type, const char *source)
glShaderSource(shader, 1, (const GLchar**)&source, NULL);
glCompileShader(shader);
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
if (!status)
@@ -153,7 +153,7 @@ typedef float stub_matrix4x4[4][4];
static INLINE unsigned log2i(unsigned x)
{
unsigned res;
for (res = 0; x; x >>= 1)
res++;
return res - 1;
@@ -297,7 +297,7 @@ static void fft_init(fft_t *fft)
glUniform1i(glGetUniformLocation(fft->prog_complex, "sTexture"), 0);
glUniform1i(glGetUniformLocation(fft->prog_complex, "sParameterTexture"), 1);
glUniform4fv(glGetUniformLocation(fft->prog_complex, "uOffsetScale"), 1, unity);
glUseProgram(fft->prog_resolve);
glUniform1i(glGetUniformLocation(fft->prog_resolve, "sFFT"), 0);
glUniform4fv(glGetUniformLocation(fft->prog_resolve, "uOffsetScale"), 1, unity);
@@ -478,7 +478,7 @@ static bool fft_context_reset(fft_t *fft, unsigned fft_steps,
return true;
}
/* GLFFT requires either GLES3 or
/* GLFFT requires either GLES3 or
* desktop GL with ES3_compat (supported by MESA on Linux) extension. */
fft_t *fft_new(unsigned fft_steps, rglgen_proc_address_t proc)
{
@@ -621,14 +621,14 @@ void fft_step_fft(fft_t *fft, const GLshort *audio_buffer, unsigned frames)
if (i == fft->steps - 1)
{
glBindFramebuffer(GL_FRAMEBUFFER, fft->output.fbo);
glUniform1i(glGetUniformLocation(i == 0
glUniform1i(glGetUniformLocation(i == 0
? fft->prog_real : fft->prog_complex, "uViewportOffset"),
fft->output_ptr);
glViewport(0, fft->output_ptr, fft->size, 1);
}
else
{
glUniform1i(glGetUniformLocation(i == 0
glUniform1i(glGetUniformLocation(i == 0
? fft->prog_real : fft->prog_complex, "uViewportOffset"), 0);
glBindFramebuffer(GL_FRAMEBUFFER, fft->passes[i].target.fbo);
glClear(GL_COLOR_BUFFER_BIT);
@@ -7,7 +7,7 @@ static const char *fragment_source = GLSL(
uniform float uMix;
void main() {
gl_FragColor = vec4(pow(mix(pow(texture2D(sTex0, vTex).bgr, vec3(2.2)), pow(texture2D(sTex1, vTex).bgr, vec3(2.2)), uMix), vec3(1.0 / 2.2)), 1.0);
gl_FragColor = vec4(pow(mix(pow(texture2D(sTex0, vTex).bgr, vec3(2.2)), pow(texture2D(sTex1, vTex).bgr, vec3(2.2)), uMix), vec3(1.0 / 2.2)), 1.0);
}
);
@@ -21,7 +21,7 @@ static const char *fft_vertex_program_heightmap = GLSL_300(
float lod = log2(world_pos.z + 1.0) - 6.0;
vec4 heights = textureLod(sHeight, tex_coord, lod);
float cangle = cos(angle);
float sangle = sin(angle);
+20
View File
@@ -0,0 +1,20 @@
image_core.so: image_core.c
gcc \
-g \
-DHAVE_STB_IMAGE \
image_core.c \
-I../../libretro-common/include/ \
-I../../deps/stb/ \
../../libretro-common/compat/compat_strcasestr.c \
../../libretro-common/compat/compat_strl.c \
../../libretro-common/file/file_path.c \
../../libretro-common/file/retro_dirent.c \
../../libretro-common/lists/dir_list.c \
../../libretro-common/lists/string_list.c \
../../libretro-common/streams/file_stream.c \
../../libretro-common/vfs/vfs_implementation.c \
-shared \
-fPIC \
-Wl,--no-undefined \
-lm \
-o image_core.so
+29 -10
View File
@@ -10,6 +10,8 @@
#include <compat/strl.h>
#include <retro_environment.h>
#include <streams/file_stream.h>
#if defined(HAVE_RPNG) || defined(HAVE_RJPEG) || defined(HAVE_RTGA) || defined(HAVE_RBMP)
#define PREFER_NON_STB_IMAGE
#endif
@@ -157,10 +159,19 @@ void IMAGE_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
static const struct retro_variable vars[] = {
{ NULL, NULL },
};
#ifndef RARCH_INTERNAL
struct retro_vfs_interface_info vfs_iface_info = { 1, NULL };
#endif
IMAGE_CORE_PREFIX(environ_cb) = cb;
cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars);
#ifndef RARCH_INTERNAL
/* I don't trust filestream_vfs_init to work inside rarch */
if (environ_cb(RETRO_ENVIRONMENT_GET_VFS_INTERFACE, &vfs_iface_info))
filestream_vfs_init(&vfs_iface_info);
#endif
}
void IMAGE_CORE_PREFIX(retro_set_video_refresh)(retro_video_refresh_t cb)
@@ -227,6 +238,9 @@ static bool imageviewer_load(const char *path, int image_index)
{
#ifdef STB_IMAGE_IMPLEMENTATION
int comp;
RFILE* f;
size_t len;
void* buf;
#endif
#ifdef RARCH_INTERNAL
extern bool video_driver_supports_rgba(void);
@@ -235,12 +249,17 @@ static bool imageviewer_load(const char *path, int image_index)
imageviewer_free_image();
#ifdef STB_IMAGE_IMPLEMENTATION
image_buffer = (uint32_t*)stbi_load(
path,
&image_width,
&image_height,
&comp,
4);
f = filestream_open(path, RETRO_VFS_FILE_ACCESS_READ, RETRO_VFS_FILE_ACCESS_HINT_NONE);
len = filestream_get_size(f);
buf = malloc(len);
filestream_read(f, buf, len);
filestream_close(f);
image_buffer = (uint32_t*)stbi_load_from_memory(
buf, len,
&image_width, &image_height,
&comp, 4);
free(buf);
#else
#ifdef RARCH_INTERNAL
image_texture.supports_rgba = video_driver_supports_rgba();
@@ -274,7 +293,7 @@ bool IMAGE_CORE_PREFIX(retro_load_game)(const struct retro_game_info *info)
dir_list_sort(file_list, false);
free(dir);
if (!IMAGE_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
{
if (IMAGE_CORE_PREFIX(log_cb))
@@ -437,7 +456,7 @@ void IMAGE_CORE_PREFIX(retro_run)(void)
{
uint32_t pixel = *buf;
uint32_t a = pixel >> 24;
if (a == 255)
*buf = (pixel & 0x0000ff00) | ((pixel << 16) & 0x00ff0000) | ((pixel >> 16) & 0x000000ff);
else
@@ -446,11 +465,11 @@ void IMAGE_CORE_PREFIX(retro_run)(void)
uint32_t g = (pixel & 0x00ff00) >> 8;
uint32_t b = (pixel & 0xff0000) >> 16;
uint32_t bg = ((x & 8) ^ (y & 8)) ? 0x66 : 0x99;
r = a * r / 255 + (255 - a) * bg / 255;
g = a * g / 255 + (255 - a) * bg / 255;
b = a * b / 255 + (255 - a) * bg / 255;
*buf = r << 16 | g << 8 | b;
}
}
@@ -219,7 +219,7 @@ enumerate_audio_devices(char *buf, size_t buflen)
name = snd_device_name_get_hint(*n, "NAME");
ioid = snd_device_name_get_hint(*n, "IOID");
if ((ioid == NULL || string_is_equal(ioid, "Input")) &&
(!strncmp(name, "hw:", strlen("hw:")) ||
(!strncmp(name, "hw:", strlen("hw:")) ||
!strncmp(name, "default:", strlen("default:"))))
{
if (ndevs > 0)
@@ -368,7 +368,7 @@ static bool open_devices(void)
}
error = snd_pcm_hw_params_set_format(audio_handle, hw_params, SND_PCM_FORMAT_S16_LE);
if (error)
{
{
printf("Couldn't set hw param format to SND_PCM_FORMAT_S16_LE: %s\n", snd_strerror(error));
return false;
}
@@ -460,12 +460,12 @@ RETRO_API void VIDEOPROC_CORE_PREFIX(retro_get_system_av_info)(struct retro_syst
cc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
error = v4l2_ioctl(video_fd, VIDIOC_CROPCAP, &cc);
if (error == 0)
info->geometry.aspect_ratio = (double)cc.pixelaspect.denominator
info->geometry.aspect_ratio = (double)cc.pixelaspect.denominator
/ (double)cc.pixelaspect.numerator;
info->geometry.base_width = info->geometry.max_width = video_format.fmt.pix.width;
info->geometry.base_height = info->geometry.max_height = video_format.fmt.pix.height;
info->timing.fps = (double)video_standard.frameperiod.denominator /
info->timing.fps = (double)video_standard.frameperiod.denominator /
(double)video_standard.frameperiod.numerator;
info->timing.sample_rate = AUDIO_SAMPLE_RATE;
@@ -655,7 +655,7 @@ RETRO_API bool VIDEOPROC_CORE_PREFIX(retro_load_game)(const struct retro_game_in
buf.index = index;
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
error = v4l2_ioctl(video_fd, VIDIOC_QBUF, &buf);
if (error != 0)
{
@@ -664,8 +664,8 @@ RETRO_API bool VIDEOPROC_CORE_PREFIX(retro_load_game)(const struct retro_game_in
}
}
conv_data = (uint16_t*)calloc(1,
video_format.fmt.pix.width * video_format.fmt.pix.height * 2);
conv_data = (uint16_t*)calloc(1,
video_format.fmt.pix.width * video_format.fmt.pix.height * 2);
if (!conv_data)
{
printf("Cannot allocate conversion buffer\n");
@@ -707,7 +707,7 @@ RETRO_API void VIDEOPROC_CORE_PREFIX(retro_unload_game)(void)
for (index = 0; index < video_nbuffers; index++)
v4l2_munmap(video_buffer[index].start, video_buffer[index].len);
}
if (conv_data)
free(conv_data);
conv_data = NULL;
+4 -1
View File
@@ -77,7 +77,10 @@ void __system_allocateHeaps(void)
void __attribute__((weak)) __libctru_init(void (*retAddr)(void))
{
/* Store the return address */
__system_retAddr = envIsHomebrew() ? retAddr : NULL;
__system_retAddr = NULL;
if (envIsHomebrew()) {
__system_retAddr = retAddr;
}
/* Initialize the synchronization subsystem */
__sync_init();
+15
View File
@@ -306,3 +306,18 @@ void GPU_FinishDrawing()
GPUCMD_AddWrite(GPUREG_FRAMEBUFFER_INVALIDATE, 0x00000001);
GPUCMD_AddWrite(GPUREG_EARLYDEPTH_CLEAR, 0x00000001);
}
void GPU_Finalize(void)
{
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x8, 0x00000000);
GPUCMD_AddWrite(GPUREG_FRAMEBUFFER_FLUSH, 0x00000001);
GPUCMD_AddWrite(GPUREG_FRAMEBUFFER_INVALIDATE, 0x00000001);
#if 0
GPUCMD_Split(NULL, NULL);
#else
GPUCMD_AddWrite(GPUREG_FINALIZE, 0x12345678);
//not the cleanest way of guaranteeing 0x10-byte size but whatever good enough for now
GPUCMD_AddWrite(GPUREG_FINALIZE,0x12345678);
#endif
}
+2
View File
@@ -235,3 +235,5 @@ void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n) DEPRECA
* @deprecated
*/
void GPU_FinishDrawing() DEPRECATED;
void GPU_Finalize(void) DEPRECATED;
+2 -2
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* 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.
@@ -98,7 +98,7 @@ struct defaults
float video_refresh_rate;
bool video_threaded_enable;
char menu[32];
} settings;
} settings;
#ifndef IS_SALAMANDER
playlist_t *content_history;
+2 -2
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -65,7 +65,7 @@
#define ID3DSURFACE IDirect3DSurface8
#define D3DCREATE_CTX Direct3DCreate8
#if !defined(D3DLOCK_NOSYSLOCK) && defined(_XBOX)
#if !defined(D3DLOCK_NOSYSLOCK) && defined(_XBOX)
#define D3DLOCK_NOSYSLOCK (0)
#endif
#define D3DSAMP_ADDRESSU D3DTSS_ADDRESSU
+1 -1
View File
@@ -1,6 +1,6 @@
/* RetroArch - A frontend for libretro.
* 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.
+1 -1
View File
@@ -1,7 +1,7 @@
/* 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.
+207 -207
View File
@@ -1,207 +1,207 @@
/* 7z.h -- 7z interface
2010-03-11 : Igor Pavlov : Public domain */
#ifndef __7Z_H
#define __7Z_H
#include "7zBuf.h"
#ifdef __cplusplus
extern "C" {
#endif
#define k7zStartHeaderSize 0x20
#define k7zSignatureSize 6
extern uint8_t k7zSignature[k7zSignatureSize];
#define k7zMajorVersion 0
enum EIdEnum
{
k7zIdEnd,
k7zIdHeader,
k7zIdArchiveProperties,
k7zIdAdditionalStreamsInfo,
k7zIdMainStreamsInfo,
k7zIdFilesInfo,
k7zIdPackInfo,
k7zIdUnpackInfo,
k7zIdSubStreamsInfo,
k7zIdSize,
k7zIdCRC,
k7zIdFolder,
k7zIdCodersUnpackSize,
k7zIdNumUnpackStream,
k7zIdEmptyStream,
k7zIdEmptyFile,
k7zIdAnti,
k7zIdName,
k7zIdCTime,
k7zIdATime,
k7zIdMTime,
k7zIdWinAttributes,
k7zIdComment,
k7zIdEncodedHeader,
k7zIdStartPos,
k7zIdDummy
};
typedef struct
{
uint32_t NumInStreams;
uint32_t NumOutStreams;
uint64_t MethodID;
CBuf Props;
} CSzCoderInfo;
void SzCoderInfo_Init(CSzCoderInfo *p);
void SzCoderInfo_Free(CSzCoderInfo *p, ISzAlloc *alloc);
typedef struct
{
uint32_t InIndex;
uint32_t OutIndex;
} CSzBindPair;
typedef struct
{
CSzCoderInfo *Coders;
CSzBindPair *BindPairs;
uint32_t *PackStreams;
uint64_t *UnpackSizes;
uint32_t NumCoders;
uint32_t NumBindPairs;
uint32_t NumPackStreams;
int UnpackCRCDefined;
uint32_t UnpackCRC;
uint32_t NumUnpackStreams;
} CSzFolder;
void SzFolder_Init(CSzFolder *p);
uint64_t SzFolder_GetUnpackSize(CSzFolder *p);
int SzFolder_FindBindPairForInStream(CSzFolder *p, uint32_t inStreamIndex);
uint32_t SzFolder_GetNumOutStreams(CSzFolder *p);
uint64_t SzFolder_GetUnpackSize(CSzFolder *p);
SRes SzFolder_Decode(const CSzFolder *folder, const uint64_t *packSizes,
ILookInStream *stream, uint64_t startPos,
uint8_t *outBuffer, size_t outSize, ISzAlloc *allocMain);
typedef struct
{
uint32_t Low;
uint32_t High;
} CNtfsFileTime;
typedef struct
{
CNtfsFileTime MTime;
uint64_t Size;
uint32_t Crc;
uint32_t Attrib;
uint8_t HasStream;
uint8_t IsDir;
uint8_t IsAnti;
uint8_t CrcDefined;
uint8_t MTimeDefined;
uint8_t AttribDefined;
} CSzFileItem;
void SzFile_Init(CSzFileItem *p);
typedef struct
{
uint64_t *PackSizes;
uint8_t *PackCRCsDefined;
uint32_t *PackCRCs;
CSzFolder *Folders;
CSzFileItem *Files;
uint32_t NumPackStreams;
uint32_t NumFolders;
uint32_t NumFiles;
} CSzAr;
void SzAr_Init(CSzAr *p);
void SzAr_Free(CSzAr *p, ISzAlloc *alloc);
/*
SzExtract extracts file from archive
*outBuffer must be 0 before first call for each new archive.
Extracting cache:
If you need to decompress more than one file, you can send
these values from previous call:
*blockIndex,
*outBuffer,
*outBufferSize
You can consider "*outBuffer" as cache of solid block. If your archive is solid,
it will increase decompression speed.
If you use external function, you can declare these 3 cache variables
(blockIndex, outBuffer, outBufferSize) as static in that external function.
Free *outBuffer and set *outBuffer to 0, if you want to flush cache.
*/
typedef struct
{
CSzAr db;
uint64_t startPosAfterHeader;
uint64_t dataPos;
uint32_t *FolderStartPackStreamIndex;
uint64_t *PackStreamStartPositions;
uint32_t *FolderStartFileIndex;
uint32_t *FileIndexToFolderIndexMap;
size_t *FileNameOffsets; /* in 2-byte steps */
CBuf FileNames; /* UTF-16-LE */
} CSzArEx;
void SzArEx_Init(CSzArEx *p);
void SzArEx_Free(CSzArEx *p, ISzAlloc *alloc);
uint64_t SzArEx_GetFolderStreamPos(const CSzArEx *p, uint32_t folderIndex, uint32_t indexInFolder);
int SzArEx_GetFolderFullPackSize(const CSzArEx *p, uint32_t folderIndex, uint64_t *resSize);
/*
if dest == NULL, the return value specifies the required size of the buffer,
in 16-bit characters, including the null-terminating character.
if dest != NULL, the return value specifies the number of 16-bit characters that
are written to the dest, including the null-terminating character. */
size_t SzArEx_GetFileNameUtf16(const CSzArEx *p, size_t fileIndex, uint16_t *dest);
SRes SzArEx_Extract(
const CSzArEx *db,
ILookInStream *inStream,
uint32_t fileIndex, /* index of file */
uint32_t *blockIndex, /* index of solid block */
uint8_t **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */
size_t *outBufferSize, /* buffer size for output buffer */
size_t *offset, /* offset of stream for required file in *outBuffer */
size_t *outSizeProcessed, /* size of file in *outBuffer */
ISzAlloc *allocMain,
ISzAlloc *allocTemp);
/*
SzArEx_Open Errors:
SZ_ERROR_NO_ARCHIVE
SZ_ERROR_ARCHIVE
SZ_ERROR_UNSUPPORTED
SZ_ERROR_MEM
SZ_ERROR_CRC
SZ_ERROR_INPUT_EOF
SZ_ERROR_FAIL
*/
SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, ISzAlloc *allocMain, ISzAlloc *allocTemp);
#ifdef __cplusplus
}
#endif
#endif
/* 7z.h -- 7z interface
2010-03-11 : Igor Pavlov : Public domain */
#ifndef __7Z_H
#define __7Z_H
#include "7zBuf.h"
#ifdef __cplusplus
extern "C" {
#endif
#define k7zStartHeaderSize 0x20
#define k7zSignatureSize 6
extern uint8_t k7zSignature[k7zSignatureSize];
#define k7zMajorVersion 0
enum EIdEnum
{
k7zIdEnd,
k7zIdHeader,
k7zIdArchiveProperties,
k7zIdAdditionalStreamsInfo,
k7zIdMainStreamsInfo,
k7zIdFilesInfo,
k7zIdPackInfo,
k7zIdUnpackInfo,
k7zIdSubStreamsInfo,
k7zIdSize,
k7zIdCRC,
k7zIdFolder,
k7zIdCodersUnpackSize,
k7zIdNumUnpackStream,
k7zIdEmptyStream,
k7zIdEmptyFile,
k7zIdAnti,
k7zIdName,
k7zIdCTime,
k7zIdATime,
k7zIdMTime,
k7zIdWinAttributes,
k7zIdComment,
k7zIdEncodedHeader,
k7zIdStartPos,
k7zIdDummy
};
typedef struct
{
uint32_t NumInStreams;
uint32_t NumOutStreams;
uint64_t MethodID;
CBuf Props;
} CSzCoderInfo;
void SzCoderInfo_Init(CSzCoderInfo *p);
void SzCoderInfo_Free(CSzCoderInfo *p, ISzAlloc *alloc);
typedef struct
{
uint32_t InIndex;
uint32_t OutIndex;
} CSzBindPair;
typedef struct
{
CSzCoderInfo *Coders;
CSzBindPair *BindPairs;
uint32_t *PackStreams;
uint64_t *UnpackSizes;
uint32_t NumCoders;
uint32_t NumBindPairs;
uint32_t NumPackStreams;
int UnpackCRCDefined;
uint32_t UnpackCRC;
uint32_t NumUnpackStreams;
} CSzFolder;
void SzFolder_Init(CSzFolder *p);
uint64_t SzFolder_GetUnpackSize(CSzFolder *p);
int SzFolder_FindBindPairForInStream(CSzFolder *p, uint32_t inStreamIndex);
uint32_t SzFolder_GetNumOutStreams(CSzFolder *p);
uint64_t SzFolder_GetUnpackSize(CSzFolder *p);
SRes SzFolder_Decode(const CSzFolder *folder, const uint64_t *packSizes,
ILookInStream *stream, uint64_t startPos,
uint8_t *outBuffer, size_t outSize, ISzAlloc *allocMain);
typedef struct
{
uint32_t Low;
uint32_t High;
} CNtfsFileTime;
typedef struct
{
CNtfsFileTime MTime;
uint64_t Size;
uint32_t Crc;
uint32_t Attrib;
uint8_t HasStream;
uint8_t IsDir;
uint8_t IsAnti;
uint8_t CrcDefined;
uint8_t MTimeDefined;
uint8_t AttribDefined;
} CSzFileItem;
void SzFile_Init(CSzFileItem *p);
typedef struct
{
uint64_t *PackSizes;
uint8_t *PackCRCsDefined;
uint32_t *PackCRCs;
CSzFolder *Folders;
CSzFileItem *Files;
uint32_t NumPackStreams;
uint32_t NumFolders;
uint32_t NumFiles;
} CSzAr;
void SzAr_Init(CSzAr *p);
void SzAr_Free(CSzAr *p, ISzAlloc *alloc);
/*
SzExtract extracts file from archive
*outBuffer must be 0 before first call for each new archive.
Extracting cache:
If you need to decompress more than one file, you can send
these values from previous call:
*blockIndex,
*outBuffer,
*outBufferSize
You can consider "*outBuffer" as cache of solid block. If your archive is solid,
it will increase decompression speed.
If you use external function, you can declare these 3 cache variables
(blockIndex, outBuffer, outBufferSize) as static in that external function.
Free *outBuffer and set *outBuffer to 0, if you want to flush cache.
*/
typedef struct
{
CSzAr db;
uint64_t startPosAfterHeader;
uint64_t dataPos;
uint32_t *FolderStartPackStreamIndex;
uint64_t *PackStreamStartPositions;
uint32_t *FolderStartFileIndex;
uint32_t *FileIndexToFolderIndexMap;
size_t *FileNameOffsets; /* in 2-byte steps */
CBuf FileNames; /* UTF-16-LE */
} CSzArEx;
void SzArEx_Init(CSzArEx *p);
void SzArEx_Free(CSzArEx *p, ISzAlloc *alloc);
uint64_t SzArEx_GetFolderStreamPos(const CSzArEx *p, uint32_t folderIndex, uint32_t indexInFolder);
int SzArEx_GetFolderFullPackSize(const CSzArEx *p, uint32_t folderIndex, uint64_t *resSize);
/*
if dest == NULL, the return value specifies the required size of the buffer,
in 16-bit characters, including the null-terminating character.
if dest != NULL, the return value specifies the number of 16-bit characters that
are written to the dest, including the null-terminating character. */
size_t SzArEx_GetFileNameUtf16(const CSzArEx *p, size_t fileIndex, uint16_t *dest);
SRes SzArEx_Extract(
const CSzArEx *db,
ILookInStream *inStream,
uint32_t fileIndex, /* index of file */
uint32_t *blockIndex, /* index of solid block */
uint8_t **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */
size_t *outBufferSize, /* buffer size for output buffer */
size_t *offset, /* offset of stream for required file in *outBuffer */
size_t *outSizeProcessed, /* size of file in *outBuffer */
ISzAlloc *allocMain,
ISzAlloc *allocTemp);
/*
SzArEx_Open Errors:
SZ_ERROR_NO_ARCHIVE
SZ_ERROR_ARCHIVE
SZ_ERROR_UNSUPPORTED
SZ_ERROR_MEM
SZ_ERROR_CRC
SZ_ERROR_INPUT_EOF
SZ_ERROR_FAIL
*/
SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, ISzAlloc *allocMain, ISzAlloc *allocTemp);
#ifdef __cplusplus
}
#endif
#endif
+37 -37
View File
@@ -1,37 +1,37 @@
/* 7zBuf.c -- Byte Buffer
2008-03-28
Igor Pavlov
Public domain */
#include <stdint.h>
#include "7zBuf.h"
void Buf_Init(CBuf *p)
{
p->data = 0;
p->size = 0;
}
int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc)
{
p->size = 0;
if (size == 0)
{
p->data = 0;
return 1;
}
p->data = (uint8_t *)alloc->Alloc(alloc, size);
if (p->data != 0)
{
p->size = size;
return 1;
}
return 0;
}
void Buf_Free(CBuf *p, ISzAlloc *alloc)
{
alloc->Free(alloc, p->data);
p->data = 0;
p->size = 0;
}
/* 7zBuf.c -- Byte Buffer
2008-03-28
Igor Pavlov
Public domain */
#include <stdint.h>
#include "7zBuf.h"
void Buf_Init(CBuf *p)
{
p->data = 0;
p->size = 0;
}
int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc)
{
p->size = 0;
if (size == 0)
{
p->data = 0;
return 1;
}
p->data = (uint8_t *)alloc->Alloc(alloc, size);
if (p->data != 0)
{
p->size = size;
return 1;
}
return 0;
}
void Buf_Free(CBuf *p, ISzAlloc *alloc)
{
alloc->Free(alloc, p->data);
p->data = 0;
p->size = 0;
}
+27 -27
View File
@@ -1,27 +1,27 @@
/* 7zBuf.h -- Byte Buffer
2009-02-07 : Igor Pavlov : Public domain */
#ifndef __7Z_BUF_H
#define __7Z_BUF_H
#include "7zTypes.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
uint8_t *data;
size_t size;
} CBuf;
void Buf_Init(CBuf *p);
int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc);
void Buf_Free(CBuf *p, ISzAlloc *alloc);
#ifdef __cplusplus
}
#endif
#endif
/* 7zBuf.h -- Byte Buffer
2009-02-07 : Igor Pavlov : Public domain */
#ifndef __7Z_BUF_H
#define __7Z_BUF_H
#include "7zTypes.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
uint8_t *data;
size_t size;
} CBuf;
void Buf_Init(CBuf *p);
int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc);
void Buf_Free(CBuf *p, ISzAlloc *alloc);
#ifdef __cplusplus
}
#endif
#endif
Loaded 100 of 1055 files, more files were not shown because too many files have changed in this diff. Show more