Merged upstream and german language files

Signed-off-by: CoalaJoe <dominik.mueller@gibmit.ch>
This commit is contained in:
CoalaJoe 2016-12-17 12:22:14 +01:00
commit d668cf7c21
191 changed files with 4174 additions and 2157 deletions

View File

@ -32,7 +32,7 @@ addons:
- curl
- pkg-config
- libglu1-mesa-dev
- freeglut3-mesa
- freeglut3-dev
- mesa-common-dev
- libsdl1.2-dev
- libsdl-image1.2-dev

View File

@ -1,4 +1,5 @@
HAVE_FILE_LOGGER=1
HAVE_CC_RESAMPLER=1
NEED_CXX_LINKER=0
MISSING_DECLS =0

View File

@ -199,7 +199,7 @@ OBJ += frontend/frontend.o \
managers/cheat_manager.o \
core_info.o \
$(LIBRETRO_COMM_DIR)/file/config_file.o \
config_file_userdata.o \
$(LIBRETRO_COMM_DIR)/file/config_file_userdata.o \
tasks/task_screenshot.o \
$(LIBRETRO_COMM_DIR)/gfx/scaler/scaler.o \
gfx/drivers_shader/shader_null.o \
@ -210,12 +210,11 @@ OBJ += frontend/frontend.o \
$(LIBRETRO_COMM_DIR)/gfx/scaler/scaler_filter.o \
gfx/font_driver.o \
gfx/video_filter.o \
audio/audio_resampler_driver.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/audio_resampler.o \
audio/audio_dsp_filter.o \
audio/drivers_resampler/sinc_resampler.o \
audio/drivers_resampler/nearest_resampler.o \
audio/drivers_resampler/null_resampler.o \
audio/drivers_resampler/cc_resampler.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/sinc_resampler.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/nearest_resampler.o \
$(LIBRETRO_COMM_DIR)/audio/resampler/drivers/null_resampler.o \
location/drivers/nulllocation.o \
camera/drivers/nullcamera.o \
wifi/drivers/nullwifi.o \
@ -232,6 +231,11 @@ OBJ += frontend/frontend.o \
performance_counters.o \
verbosity.o
ifeq ($(HAVE_CC_RESAMPLER), 1)
DEFINES += -DHAVE_CC_RESAMPLER
OBJ += audio/drivers_resampler/cc_resampler.o
endif
ifeq ($(HAVE_LANGEXTRA), 1)
DEFINES += -DHAVE_LANGEXTRA
DEFINES += -finput-charset=UTF-8
@ -272,8 +276,13 @@ endif
# Qt
ifeq ($(HAVE_QT_WRAPPER), 1)
OBJ += ui/drivers/ui_qt.o
LIBS += -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -L./ui/drivers/qt/build/release/
LIBS += -lwrapper
endif
ifeq ($(HAVE_QT), 1)
HAVE_QT_WRAPPER=0
OBJ += ui/drivers/ui_qt.o \
ui/drivers/qt/ui_qt_application.o \
ui/drivers/qt/ui_qt_window.o \
@ -283,13 +292,6 @@ OBJ += ui/drivers/ui_qt.o \
ifneq ($(findstring Linux,$(OS)),)
DEFINES += -I/usr/include/qt -fPIC
endif
# TODO/FIXME - figure out which libraries we need to link against
LIBS += -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -L./ui/drivers/qt/wrapper/build/release
ifeq ($(HAVE_QT_WRAPPER), 1)
LIBS += -lwrapper
endif
endif
ifeq ($(HAVE_SSA),1)
@ -418,7 +420,7 @@ endif
# Audio Resamplers
ifeq ($(HAVE_NEON),1)
OBJ += audio/drivers_resampler/sinc_resampler_neon.o \
OBJ += $(LIBRETRO_COMM_DIR)/audio/resampler/drivers/sinc_resampler_neon.o \
audio/drivers_resampler/cc_resampler_neon.o
# When compiled without this, tries to attempt to compile sinc lerp,
# which will error out
@ -429,12 +431,12 @@ ifeq ($(HAVE_NEON),1)
DEFINES += -DSINC_LOWER_QUALITY
endif
OBJ += $(LIBRETRO_COMM_DIR)/conversion/s16_to_float.o \
$(LIBRETRO_COMM_DIR)/conversion/float_to_s16.o
OBJ += $(LIBRETRO_COMM_DIR)/audio/conversion/s16_to_float.o \
$(LIBRETRO_COMM_DIR)/audio/conversion/float_to_s16.o
ifeq ($(HAVE_NEON),1)
OBJ += $(LIBRETRO_COMM_DIR)/conversion/s16_to_float_neon.o \
$(LIBRETRO_COMM_DIR)/conversion/float_to_s16_neon.o
OBJ += $(LIBRETRO_COMM_DIR)/audio/conversion/s16_to_float_neon.o \
$(LIBRETRO_COMM_DIR)/audio/conversion/float_to_s16_neon.o
endif
ifneq ($(findstring Win32,$(OS)),)
@ -518,6 +520,7 @@ ifeq ($(HAVE_MENU_COMMON), 1)
menu/menu_navigation.o \
menu/menu_setting.o \
menu/menu_shader.o \
menu/widgets/menu_filebrowser.o \
menu/widgets/menu_dialog.o \
menu/widgets/menu_input_dialog.o \
menu/widgets/menu_input_bind_dialog.o \

View File

@ -44,9 +44,10 @@ endif
DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB
else
HAVE_CC_RESAMPLER = 1
HAVE_MENU_COMMON = 1
HAVE_RTGA = 1
HAVE_RPNG = 1

View File

@ -9,6 +9,7 @@ OBJ :=
DEFINES := -DRARCH_INTERNAL -DHAVE_OVERLAY -DHAVE_MAIN -s USE_PTHREADS=$(PTHREAD)
DEFINES += -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_EGL -DHAVE_OVERLAY -DHAVE_GLSL -DHAVE_FILTERS_BUILTIN
HAVE_CC_RESAMPLER = 1
HAVE_EGL = 1
HAVE_OPENGLES = 1
HAVE_RJPEG = 0

View File

@ -1,6 +1,7 @@
DEBUG = 0
HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0
HAVE_CC_RESAMPLER = 1
WHOLE_ARCHIVE_LINK = 0
BIG_STACK = 1
PC_DEVELOPMENT_IP_ADDRESS = 255.255.255.255
@ -218,18 +219,19 @@ else ifeq ($(platform), vita)
-lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub \
-lSceMotion_stub -lSceAppMgr_stub -lpng -lm -lc
PLATEXTRA := deps/libvita2d/shader/compiled/clear_v_gxp.o \
deps/libvita2d/shader/compiled/clear_f_gxp.o \
deps/libvita2d/shader/compiled/color_v_gxp.o \
deps/libvita2d/shader/compiled/color_f_gxp.o \
deps/libvita2d/shader/compiled/texture_v_gxp.o \
deps/libvita2d/shader/compiled/texture_f_gxp.o \
deps/libvita2d/shader/compiled/texture_tint_f_gxp.o
PLATOBJS += libretro-common/conversion/s16_to_float_neon.o \
libretro-common/conversion/float_to_s16_neon.o \
memory/neon/memcpy-neon.o \
audio/drivers_resampler/sinc_resampler_neon.o \
audio/drivers_resampler/cc_resampler_neon.o
PLATEXTRA := deps/libvita2d/shader/compiled/clear_v_gxp.o \
deps/libvita2d/shader/compiled/clear_f_gxp.o \
deps/libvita2d/shader/compiled/color_v_gxp.o \
deps/libvita2d/shader/compiled/color_f_gxp.o \
deps/libvita2d/shader/compiled/texture_v_gxp.o \
deps/libvita2d/shader/compiled/texture_f_gxp.o \
deps/libvita2d/shader/compiled/texture_tint_f_gxp.o
PLATOBJS += \
libretro-common/audio/conversion/s16_to_float_neon.o \
libretro-common/audio/conversion/float_to_s16_neon.o \
memory/neon/memcpy-neon.o \
libretro-common/audio/resampler/drivers/sinc_resampler_neon.o \
audio/drivers_resampler/cc_resampler_neon.o
LIBDIRS += -L.
LDFLAGS += -Wl,-q

View File

@ -68,7 +68,7 @@ ifeq ($(HAVE_RLAUNCH), 1)
DEFINES += -DHAVE_RLAUNCH
endif
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER
ifeq ($(HAVE_GCMGL), 1)
DEFINES += -DHAVE_GCMGL

View File

@ -89,7 +89,7 @@ ifeq ($(HAVE_FILE_LOGGER), 1)
CFLAGS += -DHAVE_FILE_LOGGER
endif
SHARED_FLAGS := -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_GCMGL -DHAVE_FBO -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_MOUSE -DHAVE_ZLIB -DHAVE_RPNG -DWANT_ZLIB -DHAVE_GRIFFIN=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts
SHARED_FLAGS := -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_GCMGL -DHAVE_FBO -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_MOUSE -DHAVE_ZLIB -DHAVE_RPNG -DWANT_ZLIB -DHAVE_GRIFFIN=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts -DHAVE_CC_RESAMPLER
CFLAGS += -std=gnu99 $(SHARED_FLAGS)
CXXFLAGS += $(SHARED_FLAGS)

View File

@ -23,7 +23,7 @@ INCDIR = deps/zlib deps/7zip libretro-common/include
CFLAGS = $(OPTIMIZE_LV) -G0 -std=gnu99 -ffast-math
ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP -D_MIPS_ARCH_ALLEGREX -DHAVE_LANGEXTRA -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DWANT_ZLIB -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DSINC_LOWEST_QUALITY -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP
RARCH_DEFINES = -DPSP -D_MIPS_ARCH_ALLEGREX -DHAVE_LANGEXTRA -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DWANT_ZLIB -DHAVE_GRIFFIN=1 -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_MENU -DHAVE_RGUI -DSINC_LOWEST_QUALITY -DHAVE_FILTERS_BUILTIN -DHAVE_7ZIP -DHAVE_CC_RESAMPLER
LIBDIR =
LDFLAGS =

View File

@ -20,7 +20,7 @@ DEFINES :=
ifeq ($(GRIFFIN_BUILD), 1)
OBJ += griffin/griffin.o
DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_LIBRETRODB
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB
DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER
# DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI
else
HAVE_MENU_COMMON = 1

View File

@ -32,6 +32,7 @@ HAVE_CG := 1
HAVE_LIBXML2 := 0
HAVE_ZLIB := 1
WANT_ZLIB := 1
HAVE_CC_RESAMPLER := 1
ifeq ($(HAVE_CG), 1)
CG_LIBS := -lcg -lcgGL

View File

@ -1,8 +1,5 @@
[![Build Status](https://travis-ci.org/libretro/RetroArch.svg?branch=master)](https://travis-ci.org/libretro/RetroArch)
<a href="https://scan.coverity.com/projects/retroarch">
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/8936/badge.svg"/>
</a>
[![Coverity Scan Build Status](https://scan.coverity.com/projects/8936/badge.svg)](https://scan.coverity.com/projects/retroarch)
# RetroArch
@ -24,11 +21,11 @@ interface to include support for emulators and/or game engines. libretro is comp
## Binaries
Latest Windows binaries are currently hosted on the buildbot -(http://buildbot.libretro.com/).
Latest Windows binaries are currently hosted on the [buildbot](http://buildbot.libretro.com/).
## Support
To reach developers, either make an issue here on Github, make a thread on the [forum](http://www.libretro.com/forums/),
To reach developers, either make an issue here on GitHub, make a thread on the [forum](http://www.libretro.com/forums/),
or visit our IRC channel: #retroarch @ irc.freenode.org.
## Documentation
@ -119,10 +116,11 @@ A sample configuration file is installed to /etc/retroarch.cfg. This is the syst
RetroArch will on startup create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg if doesn't exist.
Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h.
To configure joypads, use the built-in menu or the <tt>retroarch-joyconfig</tt> command-line tool.
To configure joypads, use the built-in menu or the `retroarch-joyconfig` command-line tool.
## Compiling and installing
<b>Linux</b><br/>
**Linux**
- Prerequisites:
```bash
sudo apt-get install -y make git-core curl g++ pkg-config libglu1-mesa-dev freeglut3-dev mesa-common-dev libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
@ -133,7 +131,8 @@ sudo apt-get install -y make git-core curl g++ pkg-config libglu1-mesa-dev freeg
make
```
<b>Mac</b><br/>
**Mac**
- Prerequisites: [XCode](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB4QFjAA&url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fxcode%2Fid497799835%3Fmt%3D12&ei=ZmfeVNPtIILVoASBnoCYBw&usg=AFQjCNGrxKmVtXUdvUU3MhqZhP4MHT6Gtg&sig2=RIXKsWQ79YTQBt_lK5fdKA&bvm=bv.85970519,d.cGU), [Cg](https://developer.nvidia.com/cg-toolkit-download).
- You can open the project (**pkg/apple/RetroArch.xcodeproj**) in the Xcode IDE and build (**&#8984;-B**) and run (**&#8984;-R**) it there. Or you can use the command line...
- Debug:
@ -151,62 +150,63 @@ xcodebuild -target RetroArch -configuration Release -project pkg/apple/RetroArch
open ./pkg/apple/build/Release/RetroArch.app/
```
<b>PC</b><br/>
**PC**
Instructions for compiling on PC can be found in the [wiki](https://github.com/Themaister/RetroArch/wiki).
<b>PlayStation 3</b><br/>
**PlayStation 3**
RetroArch PS3 needs to be compiled in the following order:
1) Compile RetroArch Salamander
<tt>make -f Makefile.ps3.salamander</tt>
make -f Makefile.ps3.salamander
2) Finally, compile RetroArch packed together with the GUI:
<tt>make -f Makefile.ps3</tt>
make -f Makefile.ps3
<b>PlayStation 3 - Creating a PKG installable file</b><br />
**PlayStation 3 - Creating a PKG installable file**
You can add `pkg` as a parameter in order to make a PKG file - for example:
<tt>make -f Makefile.ps3 pkg</tt>
make -f Makefile.ps3 pkg
This creates an NPDRM package. This can be installed on debug PS3s.
To make a non-NPDRM package that can be installed on a jailbroken/CFW PS3 (such as PSGroove or PS3 CFWs and other 3.55 CFW derivatives), do:
<tt>make -f Makefile.ps3 pkg-signed</tt>
make -f Makefile.ps3 pkg-signed
If you're using Kmeaw 3.55 firmware, the package needs to be signed:
<tt>make -f Makefile.ps3 pkg-signed-cfw</tt>
make -f Makefile.ps3 pkg-signed-cfw
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch PS3. This file needs to be called <em><b>`libretro_ps3.a`</b></em>.
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch PS3. This file needs to be called ***`libretro_ps3.a`***.
<b> Xbox 360 (XeXDK)</b><br />
**Xbox 360 (XeXDK)**
You will need Microsoft Visual Studio 2010 installed (or higher) in order to compile RetroArch 360.
The solution file can be found at the following location:
<tt>pkg/msvc-360/RetroArch-360.sln</tt>
pkg/msvc-360/RetroArch-360.sln
NOTE: A pre-existing libretro library needs to be present in the `pkg/msvc-360/RetroArch-360/Release` directory in order to link RetroArch 360. This file needs to be
called <em><b>`libretro_xdk360.lib`</b></em>.
called ***`libretro_xdk360.lib`***.
<b> Xbox 360 (Libxenon)</b><br />
**Xbox 360 (Libxenon)**
You will need to have the libxenon libraries and a working Devkit Xenon toolchain installed in order to compile RetroArch 360 Libxenon.
<tt>make -f Makefile.xenon</tt>
make -f Makefile.xenon
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch 360 Libxenon. This file needs to be called <em><b>`libretro_xenon360.a`</b></em>.
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch 360 Libxenon. This file needs to be called ***`libretro_xenon360.a`***.
<b> Wii</b><br >
**Wii**
You will need to have the libogc libraries and a working Devkit PPC toolchain installed in order to compile RetroArch Wii.
<tt>make -f Makefile.griffin platform=wii</tt>
make -f Makefile.griffin platform=wii
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch Wii. This file needs to be called <em><b>`libretro_wii.a`</b></em>.
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch Wii. This file needs to be called ***`libretro_wii.a`***.

View File

@ -19,8 +19,9 @@
#include <retro_assert.h>
#include <lists/string_list.h>
#include <conversion/float_to_s16.h>
#include <conversion/s16_to_float.h>
#include <audio/conversion/float_to_s16.h>
#include <audio/conversion/s16_to_float.h>
#include <audio/audio_resampler.h>
#ifdef HAVE_CONFIG_H
#include "../config.h"
@ -28,13 +29,8 @@
#include "audio_driver.h"
#include "audio_dsp_filter.h"
#include "audio_resampler_driver.h"
#include "../record/record_driver.h"
#include "audio_thread_wrapper.h"
#ifdef HAVE_NETWORKING
#include "../network/netplay/netplay.h"
#endif
#include "../record/record_driver.h"
#include "../command.h"
#include "../driver.h"
@ -852,13 +848,6 @@ bool audio_driver_deinit(void)
bool audio_driver_set_callback(const void *data)
{
const struct retro_audio_callback *cb = (const struct retro_audio_callback*)data;
#ifdef HAVE_NETWORKING
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
return false;
#endif
if (recording_driver_get_data_ptr()) /* A/V sync is a must. */
return false;
if (cb)
audio_callback = *cb;

View File

@ -22,6 +22,7 @@
#include <dynamic/dylib.h>
#include <file/file_path.h>
#include <file/config_file_userdata.h>
#include <lists/dir_list.h>
#include <features/features_cpu.h>
#include <string/stdstring.h>
@ -29,7 +30,6 @@
#include "audio_dsp_filter.h"
#include "audio_filters/dspfilter.h"
#include "../config_file_userdata.h"
#include "../frontend/frontend_driver.h"
#include "../performance_counters.h"
#include "../dynamic.h"

View File

@ -125,6 +125,7 @@ static void stream_latency_update_cb(pa_stream *s, void *data)
static void underrun_update_cb(pa_stream *s, void *data)
{
#if 0
pa_t *pa = (pa_t*)data;
(void)s;
@ -132,6 +133,7 @@ static void underrun_update_cb(pa_stream *s, void *data)
RARCH_LOG("[PulseAudio]: Underrun (Buffer: %u, Writable size: %u).\n",
(unsigned)pa->buffer_size,
(unsigned)pa_stream_writable_size(pa->stream));
#endif
}
static void buffer_attr_cb(pa_stream *s, void *data)
@ -141,7 +143,9 @@ static void buffer_attr_cb(pa_stream *s, void *data)
if (server_attr)
pa->buffer_size = server_attr->tlength;
#if 0
RARCH_LOG("[PulseAudio]: Got new buffer size %u.\n", (unsigned)pa->buffer_size);
#endif
}
static void *pulse_init(const char *device, unsigned rate, unsigned latency)

View File

@ -27,7 +27,7 @@
#include <memalign.h>
#include <math/float_minmax.h>
#include "../audio_resampler_driver.h"
#include <audio/audio_resampler.h>
/* Since SSE and NEON don't provide support for trigonometric functions
* we approximate those with polynoms

View File

@ -1,66 +0,0 @@
/* 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.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#if defined(__ARM_NEON__)
#ifndef __MACH__
.arm
#endif
.align 4
.globl process_sinc_neon_asm
#ifndef __MACH__
.type process_sinc_neon_asm, %function
#endif
.globl _process_sinc_neon_asm
#ifndef __MACH__
.type _process_sinc_neon_asm, %function
#endif
# void process_sinc_neon(float *out, const float *left, const float *right, const float *coeff, unsigned taps)
# Assumes taps is >= 8, and a multiple of 8.
process_sinc_neon_asm:
_process_sinc_neon_asm:
push {r4, lr}
vmov.f32 q0, #0.0
vmov.f32 q8, #0.0
# Taps argument (r4) goes on stack in armeabi.
ldr r4, [sp, #8]
1:
# Left
vld1.f32 {q2-q3}, [r1]!
# Right
vld1.f32 {q10-q11}, [r2]!
# Coeff
vld1.f32 {q12-q13}, [r3, :128]!
# Left / Right
vmla.f32 q0, q2, q12
vmla.f32 q8, q10, q12
vmla.f32 q0, q3, q13
vmla.f32 q8, q11, q13
subs r4, r4, #8
bne 1b
# Add everything together
vadd.f32 d0, d0, d1
vadd.f32 d16, d16, d17
vpadd.f32 d0, d0, d16
vst1.f32 d0, [r0]
pop {r4, pc}
#endif

View File

@ -294,7 +294,7 @@ static const struct cmd_map map[] = {
{ "DISK_NEXT", RARCH_DISK_NEXT },
{ "DISK_PREV", RARCH_DISK_PREV },
{ "GRAB_MOUSE_TOGGLE", RARCH_GRAB_MOUSE_TOGGLE },
{ "GAME_FOCUS_TOGGLE", RARCH_GAME_FOCUS_TOGGLE },
{ "GAME_FOCUS_TOGGLE", RARCH_GAME_FOCUS_TOGGLE },
{ "MENU_TOGGLE", RARCH_MENU_TOGGLE },
{ "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP },
{ "MENU_DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN },
@ -1920,6 +1920,7 @@ bool command_event(enum event_command cmd, void *data)
#ifdef HAVE_MENU
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_DEINIT, NULL);
#endif
path_clear(RARCH_PATH_CORE);
#else
core_unload_game();
core_unload();
@ -2500,7 +2501,7 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_GAME_FOCUS_TOGGLE:
{
static bool game_focus_state = false;
long int mode = (long int)data;
long int mode = (long int)data;
/* mode = -1: restores current game focus state
* mode = 1: force set game focus, instead of toggling
@ -2515,20 +2516,25 @@ bool command_event(enum event_command cmd, void *data)
"Game focus is: ",
game_focus_state ? "on" : "off");
if (game_focus_state) {
if (game_focus_state)
{
input_driver_grab_mouse();
video_driver_hide_mouse();
input_driver_set_hotkey_block();
input_driver_keyboard_mapping_set_block(1);
runloop_msg_queue_push(msg_hash_to_str(MSG_GAME_FOCUS_ON),
1, 120, true);
} else {
if (mode != -1)
runloop_msg_queue_push(msg_hash_to_str(MSG_GAME_FOCUS_ON),
1, 120, true);
}
else
{
input_driver_ungrab_mouse();
video_driver_show_mouse();
input_driver_unset_hotkey_block();
input_driver_keyboard_mapping_set_block(0);
runloop_msg_queue_push(msg_hash_to_str(MSG_GAME_FOCUS_OFF),
1, 120, true);
if (mode != -1)
runloop_msg_queue_push(msg_hash_to_str(MSG_GAME_FOCUS_OFF),
1, 120, true);
}
}

View File

@ -917,7 +917,7 @@ static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/
#elif defined(_WIN32) && !defined(_XBOX)
#if defined(__x86_64__)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/win-x86_64/latest/";
#elif defined(__i386__) || defined(__i486__) || defined(__i686__)
#elif defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(_M_IX86) || defined(_M_IA64)
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/win-x86/latest/";
#endif
#elif defined(__linux__)

View File

@ -773,6 +773,7 @@ static int populate_settings_bool(settings_t *settings, struct config_bool_setti
SETTING_BOOL("video_vfilter", &settings->video.vfilter, true, video_vfilter, false);
#endif
#ifdef HAVE_MENU
SETTING_BOOL("menu_unified_controls", &settings->menu.unified_controls, true, false, false);
#ifdef HAVE_THREADS
SETTING_BOOL("threaded_data_runloop_enable", &settings->threaded_data_runloop_enable, true, threaded_data_runloop_enable, false);
#endif
@ -2173,6 +2174,7 @@ static bool config_load_file(const char *path, bool set_defaults,
{
if (!check_shader_compatibility((enum file_path_enum)i))
{
/* TODO/FIXME - this check is always triggered even with an empty shader path */
RARCH_LOG("Incompatible shader for backend %s, clearing...\n", settings->video.driver);
settings->path.shader[0] = '\0';
break;
@ -2347,18 +2349,16 @@ bool config_unload_override(void)
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL);
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL);
if (config_load_file(path_get(RARCH_PATH_CONFIG), false, config_get_ptr()))
{
RARCH_LOG("[overrides] configuration overrides unloaded, original configuration restored.\n");
if (!config_load_file(path_get(RARCH_PATH_CONFIG), false, config_get_ptr()))
return false;
/* Reset save paths */
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL);
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL);
RARCH_LOG("[overrides] configuration overrides unloaded, original configuration restored.\n");
return true;
}
/* Reset save paths */
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH, NULL);
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL);
return false;
return true;
}
/**

View File

@ -204,6 +204,8 @@ typedef struct settings
{
unsigned menu_color_theme;
} materialui;
bool unified_controls;
} menu;
#endif

View File

@ -390,7 +390,10 @@ bool core_run(void)
#ifdef HAVE_NETWORKING
if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_PRE_FRAME, NULL))
{
/* Paused due to Netplay */
/* Paused due to netplay. We must poll and display something so that a
* netplay peer pausing doesn't just hang. */
input_poll();
video_driver_cached_frame();
return true;
}
#endif

View File

@ -22,6 +22,8 @@
#include <lists/dir_list.h>
#include <file/archive_file.h>
#include <retro_stat.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -87,10 +89,7 @@ static void core_info_list_resolve_all_firmware(
core_info_t *info = (core_info_t*)&core_info_list->list[i];
config_file_t *config = (config_file_t*)info->config_data;
if (!config)
continue;
if (!config_get_uint(config, "firmware_count", &count))
if (!config || !config_get_uint(config, "firmware_count", &count))
continue;
info->firmware = (core_info_firmware_t*)
@ -101,17 +100,31 @@ static void core_info_list_resolve_all_firmware(
for (c = 0; c < count; c++)
{
char path_key[64] = {0};
char desc_key[64] = {0};
char opt_key[64] = {0};
char path_key[64];
char desc_key[64];
char opt_key[64];
bool tmp_bool = false;
char *tmp = NULL;
path_key[0] = desc_key[0] = opt_key[0] = '\0';
snprintf(path_key, sizeof(path_key), "firmware%u_path", c);
snprintf(desc_key, sizeof(desc_key), "firmware%u_desc", c);
snprintf(opt_key, sizeof(opt_key), "firmware%u_opt", c);
config_get_string(config, path_key, &info->firmware[c].path);
config_get_string(config, desc_key, &info->firmware[c].desc);
config_get_bool(config, opt_key , &info->firmware[c].optional);
if (config_get_string(config, path_key, &tmp))
{
info->firmware[c].path = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(config, desc_key, &tmp))
{
info->firmware[c].desc = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_bool(config, opt_key , &tmp_bool))
info->firmware[c].optional = tmp_bool;
}
}
}
@ -127,6 +140,9 @@ static void core_info_list_free(core_info_list_t *core_info_list)
{
core_info_t *info = (core_info_t*)&core_info_list->list[i];
if (!info)
continue;
free(info->path);
free(info->core_name);
free(info->systemname);
@ -139,8 +155,7 @@ static void core_info_list_free(core_info_list_t *core_info_list)
free(info->categories);
free(info->databases);
free(info->notes);
if (info->supported_extensions_list)
string_list_free(info->supported_extensions_list);
string_list_free(info->supported_extensions_list);
string_list_free(info->authors_list);
string_list_free(info->note_list);
string_list_free(info->permissions_list);
@ -162,21 +177,26 @@ static void core_info_list_free(core_info_list_t *core_info_list)
free(core_info_list);
}
static config_file_t *core_info_list_iterate(
static bool core_info_list_iterate(
char *s, size_t len,
struct string_list *contents, size_t i)
{
char info_path_base[PATH_MAX_LENGTH] = {0};
char info_path[PATH_MAX_LENGTH] = {0};
char info_path_base[PATH_MAX_LENGTH];
#if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA))
char *substr = NULL;
#endif
settings_t *settings = config_get_ptr();
if (!contents->elems[i].data)
return NULL;
if (!contents || !contents->elems[i].data)
return false;
info_path_base[0] = '\0';
fill_pathname_base_noext(info_path_base, contents->elems[i].data,
sizeof(info_path_base));
#if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA))
char *substr = strrchr(info_path_base, '_');
substr = strrchr(info_path_base, '_');
if (substr)
*substr = '\0';
#endif
@ -185,28 +205,21 @@ static config_file_t *core_info_list_iterate(
file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
sizeof(info_path_base));
fill_pathname_join(info_path,
fill_pathname_join(s,
(!string_is_empty(settings->path.libretro_info)) ?
settings->path.libretro_info : settings->directory.libretro,
info_path_base, sizeof(info_path));
info_path_base, len);
return config_file_new(info_path);
return true;
}
static core_info_list_t *core_info_list_new(void)
static core_info_list_t *core_info_list_new(const char *path)
{
size_t i;
core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL;
struct string_list *contents = NULL;
settings_t *settings = config_get_ptr();
if (!settings)
return NULL;
contents = dir_list_new_special(
settings->directory.libretro,
DIR_LIST_CORES, NULL);
struct string_list *contents = dir_list_new_special(
path, DIR_LIST_CORES, NULL);
if (!contents)
return NULL;
@ -219,69 +232,128 @@ static core_info_list_t *core_info_list_new(void)
if (!core_info)
goto error;
core_info_list->list = core_info;
core_info_list->list = core_info;
core_info_list->count = contents->size;
for (i = 0; i < contents->size; i++)
{
config_file_t *conf = core_info_list_iterate(contents, i);
char info_path[PATH_MAX_LENGTH];
if (conf)
info_path[0] = '\0';
if (
core_info_list_iterate(info_path, sizeof(info_path),
contents, i)
&& path_is_valid(info_path))
{
bool tmp_bool = false;
unsigned count = 0;
char *tmp = NULL;
bool tmp_bool = false;
unsigned count = 0;
config_file_t *conf = config_file_new(info_path);
if (!conf)
continue;
if (config_get_string(conf, "display_name", &tmp))
{
core_info[i].display_name = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "corename", &tmp))
{
core_info[i].core_name = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "systemname", &tmp))
{
core_info[i].systemname = strdup(tmp);
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "manufacturer", &tmp))
{
core_info[i].system_manufacturer = strdup(tmp);
free(tmp);
tmp = NULL;
}
config_get_string(conf, "display_name",
&core_info[i].display_name);
config_get_string(conf, "corename",
&core_info[i].core_name);
config_get_string(conf, "systemname",
&core_info[i].systemname);
config_get_string(conf, "manufacturer",
&core_info[i].system_manufacturer);
config_get_uint(conf, "firmware_count", &count);
core_info[i].firmware_count = count;
if (config_get_string(conf, "supported_extensions",
&core_info[i].supported_extensions) &&
core_info[i].supported_extensions)
if (config_get_string(conf, "supported_extensions", &tmp))
{
core_info[i].supported_extensions = strdup(tmp);
core_info[i].supported_extensions_list =
string_split(core_info[i].supported_extensions, "|");
if (config_get_string(conf, "authors",
&core_info[i].authors) &&
core_info[i].authors)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "authors", &tmp))
{
core_info[i].authors = strdup(tmp);
core_info[i].authors_list =
string_split(core_info[i].authors, "|");
if (config_get_string(conf, "permissions",
&core_info[i].permissions) &&
core_info[i].permissions)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "permissions", &tmp))
{
core_info[i].permissions = strdup(tmp);
core_info[i].permissions_list =
string_split(core_info[i].permissions, "|");
if (config_get_string(conf, "license",
&core_info[i].licenses) &&
core_info[i].licenses)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "license", &tmp))
{
core_info[i].licenses = strdup(tmp);
core_info[i].licenses_list =
string_split(core_info[i].licenses, "|");
if (config_get_string(conf, "categories",
&core_info[i].categories) &&
core_info[i].categories)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "categories", &tmp))
{
core_info[i].categories = strdup(tmp);
core_info[i].categories_list =
string_split(core_info[i].categories, "|");
if (config_get_string(conf, "database",
&core_info[i].databases) &&
core_info[i].databases)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "database", &tmp))
{
core_info[i].databases = strdup(tmp);
core_info[i].databases_list =
string_split(core_info[i].databases, "|");
if (config_get_string(conf, "notes",
&core_info[i].notes) &&
core_info[i].notes)
free(tmp);
tmp = NULL;
}
if (config_get_string(conf, "notes", &tmp))
{
core_info[i].notes = strdup(tmp);
core_info[i].note_list = string_split(core_info[i].notes, "|");
free(tmp);
tmp = NULL;
}
if (config_get_bool(conf, "supports_no_game",
&tmp_bool))
core_info[i].supports_no_game = tmp_bool;
@ -354,8 +426,11 @@ static bool core_info_does_support_any_file(const core_info_t *core,
static bool core_info_does_support_file(
const core_info_t *core, const char *path)
{
if (!path || !core || !core->supported_extensions_list)
if (!core || !core->supported_extensions_list)
return false;
if (string_is_empty(path))
return false;
return string_list_find_elem_prefix(
core->supported_extensions_list, ".", path_get_extension(path));
}
@ -388,7 +463,7 @@ static core_info_t *core_info_find_internal(
{
core_info_t *info = core_info_get(list, i);
if (!info)
if (!info || !info->path)
continue;
if (string_is_equal(info->path, core))
return info;
@ -403,20 +478,22 @@ static bool core_info_list_update_missing_firmware_internal(
const char *systemdir)
{
size_t i;
char path[PATH_MAX_LENGTH] = {0};
char path[PATH_MAX_LENGTH];
core_info_t *info = NULL;
if (!core_info_list || !core)
return false;
info = core_info_find_internal(core_info_list, core);
path[0] = '\0';
info = core_info_find_internal(core_info_list, core);
if (!info)
return false;
runloop_ctl(RUNLOOP_CTL_UNSET_MISSING_BIOS, NULL);
for (i = 0; i < info->firmware_count; i++)
{
if (!info->firmware[i].path)
if (string_is_empty(info->firmware[i].path))
continue;
fill_pathname_join(path, systemdir,
@ -452,16 +529,18 @@ static void core_info_list_get_missing_firmware(
const core_info_firmware_t **firmware, size_t *num_firmware)
{
size_t i;
char path[PATH_MAX_LENGTH] = {0};
char path[PATH_MAX_LENGTH];
core_info_t *info = NULL;
if (!core_info_list || !core)
return;
path[0] = '\0';
*firmware = NULL;
*num_firmware = 0;
info = core_info_find_internal(core_info_list, core);
if (!(info = core_info_find_internal(core_info_list, core)))
if (!info)
return;
*firmware = info->firmware;
@ -511,7 +590,10 @@ void core_info_deinit_list(void)
bool core_info_init_list(void)
{
core_info_curr_list = core_info_list_new();
settings_t *settings = config_get_ptr();
if (settings)
core_info_curr_list = core_info_list_new(settings->directory.libretro);
if (!core_info_curr_list)
return false;
@ -625,58 +707,49 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list,
void core_info_get_name(const char *path, char *s, size_t len)
{
size_t i;
core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL;
struct string_list *contents = NULL;
settings_t *settings = config_get_ptr();
if (!settings)
return;
contents = dir_list_new_special(
struct string_list *contents = dir_list_new_special(
settings->directory.libretro,
DIR_LIST_CORES, NULL);
if (!contents)
return;
core_info_list = (core_info_list_t*)calloc(1, sizeof(*core_info_list));
if (!core_info_list)
goto error;
core_info = (core_info_t*)calloc(contents->size, sizeof(*core_info));
if (!core_info)
goto error;
core_info_list->list = core_info;
core_info_list->count = contents->size;
for (i = 0; i < contents->size; i++)
{
config_file_t *conf = NULL;
char info_path[PATH_MAX_LENGTH];
config_file_t *conf = NULL;
char *new_core_name = NULL;
info_path[0] = '\0';
if (!string_is_equal(contents->elems[i].data, path))
continue;
conf = core_info_list_iterate(contents, i);
if (!core_info_list_iterate(info_path,
sizeof(info_path), contents, i)
&& path_is_valid(info_path))
continue;
if (conf)
conf = config_file_new(info_path);
if (!conf)
continue;
if (config_get_string(conf, "corename",
&new_core_name))
{
config_get_string(conf, "corename",
&core_info[i].core_name);
core_info[i].config_data = (void*)conf;
strlcpy(s, new_core_name, len);
free(new_core_name);
}
core_info[i].path = strdup(contents->elems[i].data);
strlcpy(s, core_info[i].core_name, len);
config_file_free(conf);
break;
}
error:
if (contents)
dir_list_free(contents);
contents = NULL;
core_info_list_free(core_info_list);
}
size_t core_info_list_num_info_files(core_info_list_t *core_info_list)
@ -699,10 +772,8 @@ size_t core_info_list_num_info_files(core_info_list_t *core_info_list)
bool core_info_unsupported_content_path(const char *path)
{
size_t i;
const char *delim;
const char *archive_path = NULL;
delim = path_get_archive_delim(path);
const char *delim = path_get_archive_delim(path);
if (delim)
archive_path = delim - 1;
@ -718,18 +789,19 @@ bool core_info_unsupported_content_path(const char *path)
{
const core_info_t *info = &core_info_curr_list->list[i];
if (string_list_find_elem(info->supported_extensions_list, "zip") ||
string_list_find_elem(info->supported_extensions_list, "7z"))
return false;
if ( !string_list_find_elem(info->supported_extensions_list, "zip")
&& !string_list_find_elem(info->supported_extensions_list, "7z"))
continue;
return false;
}
}
for (i = 0; i < core_info_curr_list->count; i++)
{
const core_info_t *info = &core_info_curr_list->list[i];
bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path));
if (path_in_ext_list)
if (string_list_find_elem(info->supported_extensions_list, path_get_extension(path)))
return false;
}
@ -739,8 +811,8 @@ bool core_info_unsupported_content_path(const char *path)
bool core_info_database_supports_content_path(const char *database_path, const char *path)
{
size_t i;
char *database;
const char *delim;
char *database = NULL;
const char *delim = NULL;
const char *archive_path = NULL;
if (!core_info_curr_list)
@ -763,31 +835,30 @@ bool core_info_database_supports_content_path(const char *database_path, const c
{
const core_info_t *info = &core_info_curr_list->list[i];
if (string_list_find_elem(info->databases_list, database))
{
if (string_list_find_elem(info->supported_extensions_list, "zip") ||
string_list_find_elem(info->supported_extensions_list, "7z"))
{
free(database);
return false;
}
}
if (!string_list_find_elem(info->databases_list, database))
continue;
if ( !string_list_find_elem(info->supported_extensions_list, "zip")
&& !string_list_find_elem(info->supported_extensions_list, "7z"))
continue;
free(database);
return false;
}
}
for (i = 0; i < core_info_curr_list->count; i++)
{
const core_info_t *info = &core_info_curr_list->list[i];
bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path));
if (path_in_ext_list)
{
if (string_list_find_elem(info->databases_list, database))
{
free(database);
return true;
}
}
if (!string_list_find_elem(info->supported_extensions_list, path_get_extension(path)))
continue;
if (!string_list_find_elem(info->databases_list, database))
continue;
free(database);
return true;
}
free(database);
@ -805,12 +876,15 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list,
for (i = 0; i < core_info_list->count; i++)
{
const core_info_t *info = &core_info_list->list[i];
if (string_is_equal(path_basename(info->path), path_basename(path))
&& info->display_name)
{
strlcpy(s, info->display_name, len);
return true;
}
if (!string_is_equal(path_basename(info->path), path_basename(path)))
continue;
if (!info->display_name)
continue;
strlcpy(s, info->display_name, len);
return true;
}
return false;
@ -818,40 +892,24 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list,
bool core_info_get_display_name(const char *path, char *s, size_t len)
{
char *core_name = NULL;
char *display_name = NULL;
config_file_t *conf = NULL;
if (!path_file_exists(path))
return false;
conf = config_file_new(path);
bool ret = true;
char *tmp = NULL;
config_file_t *conf = config_file_new(path);
if (!conf)
return false;
config_get_string(conf, "corename",
&core_name);
config_get_string(conf, "display_name",
&display_name);
if (!core_name || !display_name)
{
ret = false;
goto error;
}
config_file_free(conf);
snprintf(s, len,"%s",display_name);
free(core_name);
free(display_name);
return true;
if (config_get_string(conf, "display_name", &tmp))
{
snprintf(s, len, "%s", tmp);
free(tmp);
}
error:
config_file_free(conf);
if (core_name)
free(core_name);
if (display_name)
free(display_name);
return false;
return ret;
}

View File

@ -425,8 +425,8 @@ database_info_handle_t *database_info_dir_init(const char *dir,
if (path_is_compressed_file(path) && !path_contains_compressed_file(path))
{
struct string_list *archive_list =
file_archive_get_file_list(path, NULL);
struct string_list *archive_list = path_is_compressed_file(path) ?
file_archive_get_file_list(path, NULL) : NULL;
if (archive_list && archive_list->size > 0)
{
@ -487,8 +487,8 @@ database_info_handle_t *database_info_file_init(const char *path,
if (path_is_compressed_file(path))
{
struct string_list *archive_list =
file_archive_get_file_list(path, NULL);
struct string_list *archive_list =path_is_compressed_file(path) ?
file_archive_get_file_list(path, NULL) : NULL;
if (archive_list && archive_list->size > 0)
{

2
deps/SPIRV-Cross vendored

@ -1 +1 @@
Subproject commit cc207e32c8668bfe5a5cc514394e7df8f020ecf6
Subproject commit 2f48065ec190d676e9c80c18a208da1ad59dcf9e

@ -1 +1 @@
Subproject commit 2eb0986f10392a4c2365869b17b59ad79226c440
Subproject commit be8462149a3c150fc89db84e57ef06de3ab90d47

View File

@ -18,6 +18,8 @@
#include <compat/posix_string.h>
#include <string/stdstring.h>
#include <audio/audio_resampler.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -30,7 +32,6 @@
#include "msg_hash.h"
#include "audio/audio_driver.h"
#include "audio/audio_resampler_driver.h"
#include "camera/camera_driver.h"
#include "record/record_driver.h"
#include "location/location_driver.h"

View File

@ -36,6 +36,10 @@
#include "cheevos.h"
#endif
#ifdef HAVE_NETWORKING
#include "network/netplay/netplay.h"
#endif
#include "dynamic.h"
#include "command.h"
@ -239,16 +243,17 @@ static bool load_dynamic_core(void)
RARCH_LOG("Loading dynamic libretro core from: \"%s\"\n",
path_get(RARCH_PATH_CORE));
lib_handle = dylib_load(path_get(RARCH_PATH_CORE));
if (!lib_handle)
{
RARCH_ERR("Failed to open libretro core: \"%s\"\n",
path_get(RARCH_PATH_CORE));
RARCH_ERR("Error(s): %s\n", dylib_error());
runloop_msg_queue_push(msg_hash_to_str(MSG_FAILED_TO_OPEN_LIBRETRO_CORE), 1, 180, true);
return false;
}
return true;
if (lib_handle)
return true;
RARCH_ERR("Failed to open libretro core: \"%s\"\n",
path_get(RARCH_PATH_CORE));
RARCH_ERR("Error(s): %s\n", dylib_error());
runloop_msg_queue_push(msg_hash_to_str(MSG_FAILED_TO_OPEN_LIBRETRO_CORE), 1, 180, true);
return false;
}
static dylib_t libretro_get_system_info_lib(const char *path,
@ -344,16 +349,19 @@ bool libretro_get_system_info(const char *path,
{
#ifdef HAVE_DYNAMIC
struct retro_system_info dummy_info = {0};
dylib_t lib = libretro_get_system_info_lib(path,
&dummy_info, load_no_content);
dylib_t lib = libretro_get_system_info_lib(
path, &dummy_info, load_no_content);
if (!lib)
return false;
memcpy(info, &dummy_info, sizeof(*info));
info->library_name = strdup(dummy_info.library_name);
info->library_version = strdup(dummy_info.library_version);
info->library_name = strdup(dummy_info.library_name);
info->library_version = strdup(dummy_info.library_version);
if (dummy_info.valid_extensions)
info->valid_extensions = strdup(dummy_info.valid_extensions);
dylib_close(lib);
#else
if (!libretro_get_system_info_static(info, load_no_content))
@ -804,11 +812,13 @@ static bool mmap_preprocess_descriptors(rarch_memory_descriptor_t *first, unsign
if ((desc->core.len & (desc->core.len - 1)) != 0)
return false;
desc->core.select = top_addr & ~mmap_inflate(mmap_add_bits_down(desc->core.len - 1), desc->core.disconnect);
desc->core.select = top_addr & ~mmap_inflate(mmap_add_bits_down(desc->core.len - 1),
desc->core.disconnect);
}
if (desc->core.len == 0)
desc->core.len = mmap_add_bits_down(mmap_reduce(top_addr & ~desc->core.select, desc->core.disconnect)) + 1;
desc->core.len = mmap_add_bits_down(mmap_reduce(top_addr & ~desc->core.select,
desc->core.disconnect)) + 1;
if (desc->core.start & ~desc->core.select)
return false;
@ -975,7 +985,8 @@ bool rarch_environment_cb(unsigned cmd, void *data)
{
struct retro_variable *var = (struct retro_variable*)data;
if (var) {
if (var)
{
RARCH_LOG("Environ GET_VARIABLE %s: not implemented.\n", var->key);
var->value = NULL;
}
@ -1286,6 +1297,12 @@ bool rarch_environment_cb(unsigned cmd, void *data)
#ifdef HAVE_THREADS
{
RARCH_LOG("Environ SET_AUDIO_CALLBACK.\n");
#ifdef HAVE_NETWORKING
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
return false;
#endif
if (recording_driver_get_data_ptr()) /* A/V sync is a must. */
return false;
audio_driver_set_callback(data);
}
#endif

View File

@ -80,7 +80,7 @@ void fill_pathname_expand_special(char *out_path,
application_dir[0] = '\0';
fill_pathname_application_path(application_dir, sizeof(application_dir));
path_basedir(application_dir);
path_basedir_wrapper(application_dir);
src_size = strlcpy(out_path, application_dir, size);
retro_assert(src_size < size);
@ -122,7 +122,7 @@ void fill_pathname_abbreviate_special(char *out_path,
notations [2] = NULL;
fill_pathname_application_path(application_dir, sizeof(application_dir));
path_basedir(application_dir);
path_basedir_wrapper(application_dir);
for (i = 0; candidates[i]; i++)
{
@ -458,3 +458,79 @@ void fill_pathname_application_special(char *s, size_t len, enum application_spe
break;
}
}
/**
* fill_short_pathname_representation:
* @out_rep : output representation
* @in_path : input path
* @size : size of output representation
*
* Generates a short representation of path. It should only
* be used for displaying the result; the output representation is not
* binding in any meaningful way (for a normal path, this is the same as basename)
* In case of more complex URLs, this should cut everything except for
* the main image file.
*
* E.g.: "/path/to/game.img" -> game.img
* "/path/to/myarchive.7z#folder/to/game.img" -> game.img
*/
void fill_short_pathname_representation_wrapper(char* out_rep,
const char *in_path, size_t size)
{
char path_short[PATH_MAX_LENGTH];
#ifdef HAVE_COMPRESSION
char *last_slash = NULL;
#endif
path_short[0] = '\0';
fill_pathname(path_short, path_basename(in_path), "",
sizeof(path_short));
#ifdef HAVE_COMPRESSION
last_slash = find_last_slash(path_short);
if (last_slash != NULL)
{
/* We handle paths like:
* /path/to/file.7z#mygame.img
* short_name: mygame.img:
*
* We check whether something is actually
* after the hash to avoid going over the buffer.
*/
retro_assert(strlen(last_slash) > 1);
strlcpy(out_rep, last_slash + 1, size);
return;
}
#endif
fill_short_pathname_representation(out_rep, in_path, size);
}
/**
* path_basedir:
* @path : path
*
* Extracts base directory by mutating path.
* Keeps trailing '/'.
**/
void path_basedir_wrapper(char *path)
{
char *last = NULL;
if (strlen(path) < 2)
return;
#ifdef HAVE_COMPRESSION
/* We want to find the directory with the archive in basedir. */
last = (char*)path_get_archive_delim(path);
if (last)
*last = '\0';
#endif
last = find_last_slash(path);
if (last)
last[1] = '\0';
else
snprintf(path, 3, ".%s", path_default_slash());
}

View File

@ -100,6 +100,33 @@ enum application_special_type
APPLICATION_SPECIAL_DIRECTORY_ASSETS_ZARCH_ICONS
};
/**
* fill_short_pathname_representation:
* @out_rep : output representation
* @in_path : input path
* @size : size of output representation
*
* Generates a short representation of path. It should only
* be used for displaying the result; the output representation is not
* binding in any meaningful way (for a normal path, this is the same as basename)
* In case of more complex URLs, this should cut everything except for
* the main image file.
*
* E.g.: "/path/to/game.img" -> game.img
* "/path/to/myarchive.7z#folder/to/game.img" -> game.img
*/
void fill_short_pathname_representation_wrapper(char* out_rep,
const char *in_path, size_t size);
/**
* path_basedir:
* @path : path
*
* Extracts base directory by mutating path.
* Keeps trailing '/'.
**/
void path_basedir_wrapper(char *path);
const char *file_path_str(enum file_path_enum enum_idx);
bool fill_pathname_application_data(char *s, size_t len);

View File

@ -390,7 +390,10 @@ static int frontend_ctr_parse_drive_list(void *data)
return -1;
menu_entries_append_enum(list,
"sdmc:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"sdmc:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
return 0;

View File

@ -640,9 +640,14 @@ static int frontend_darwin_parse_drive_list(void *data)
CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf));
menu_entries_append_enum(list,
home_dir_buf, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
menu_entries_append_enum(list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
home_dir_buf,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, "/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
ret = 0;

View File

@ -472,14 +472,26 @@ static int frontend_gx_parse_drive_list(void *data)
file_list_t *list = (file_list_t*)data;
#ifdef HW_RVL
menu_entries_append_enum(list,
"sd:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"sd:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"usb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"usb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
menu_entries_append_enum(list,
"carda:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"carda:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"cardb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"cardb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
return 0;

View File

@ -58,9 +58,11 @@
#include "../../defaults.h"
#include "../../retroarch.h"
#include "../../verbosity.h"
#include "../../paths.h"
#include "platform_linux.h"
#ifdef HAVE_MENU
#include "../../menu/menu_driver.h"
#include "../../menu/menu_display.h"
#include "../../menu/menu_entries.h"
#endif
@ -1857,24 +1859,29 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
app_dir,
msg_hash_to_str(MSG_APPLICATION_DIR),
MSG_APPLICATION_DIR, FILE_TYPE_DIRECTORY, 0, 0);
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
internal_storage_app_path,
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MSG_EXTERNAL_APPLICATION_DIR,
FILE_TYPE_DIRECTORY, 0, 0);
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
internal_storage_path,
msg_hash_to_str(MSG_INTERNAL_STORAGE),
MSG_INTERNAL_STORAGE, FILE_TYPE_DIRECTORY, 0, 0);
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/storage",
msg_hash_to_str(MSG_REMOVABLE_STORAGE),
MSG_REMOVABLE_STORAGE, FILE_TYPE_DIRECTORY, 0, 0);
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
menu_entries_append_enum(list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
menu_entries_append_enum(list, "/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
return 0;
@ -1901,7 +1908,7 @@ static bool frontend_linux_set_fork(enum frontend_fork fork_mode)
{
char executable_path[PATH_MAX_LENGTH] = {0};
fill_pathname_application_path(executable_path, sizeof(executable_path));
config_set_active_core_path(executable_path);
path_set(RARCH_PATH_CORE, executable_path);
}
command_event(CMD_EVENT_QUIT, NULL);
break;

View File

@ -497,29 +497,65 @@ static int frontend_ps3_parse_drive_list(void *data)
file_list_t *list = (file_list_t*)data;
menu_entries_append_enum(list,
"/app_home/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/app_home/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_hdd0/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_hdd0/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_hdd1/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_hdd1/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_bdvd/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_bdvd/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/host_root/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/host_root/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb000/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb000/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb001/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb001/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb002/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb002/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb003/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb003/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb004/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb004/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb005/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb005/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb006/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"/dev_usb006/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
return 0;

View File

@ -468,18 +468,36 @@ static int frontend_psp_parse_drive_list(void *data)
#ifdef VITA
menu_entries_append_enum(list,
"app0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"app0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ur0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"ur0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ux0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"ux0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#else
menu_entries_append_enum(list,
"ms0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"ms0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ef0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"ef0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"host0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"host0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
#endif

View File

@ -138,8 +138,10 @@ static int frontend_wiiu_parse_drive_list(void *data)
if (!list)
return -1;
menu_entries_append_enum(list,
WIIU_SD_PATH, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
menu_entries_append_enum(list, WIIU_SD_PATH,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
return 0;
}

View File

@ -236,7 +236,10 @@ static int frontend_win32_parse_drive_list(void *data)
drive[0] = 'A' + i;
if (drives & (1 << i))
menu_entries_append_enum(list,
drive, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
drive,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
}
#endif

View File

@ -1373,18 +1373,36 @@ static int frontend_xdk_parse_drive_list(void *data)
#if defined(_XBOX1)
menu_entries_append_enum(list,
"C:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"C:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"D:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"D:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"E:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"E:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"F:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"F:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"G:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"G:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#elif defined(_XBOX360)
menu_entries_append_enum(list,
"game:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
"game:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif
#endif

View File

@ -15,6 +15,7 @@
*/
#include <gfx/math/matrix_4x4.h>
#include <gfx/gl_capabilities.h>
#include "../drivers/gl_symlinks.h"
#include "../video_coord_array.h"
@ -49,3 +50,53 @@ void gl_ff_matrix(const math_matrix_4x4 *mat)
glLoadMatrixf(ident.data);
#endif
}
/* This function should only be used without mipmaps
and when data == NULL */
void gl_load_texture_image(GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data)
{
#ifndef HAVE_PSGL
#ifdef HAVE_OPENGLES2
if (gl_check_capability(GL_CAPS_TEX_STORAGE_EXT))
{
switch (internalFormat)
{
case GL_RGB:
internalFormat = GL_RGB565;
break;
case GL_RGBA:
internalFormat = GL_RGBA8_OES;
break;
case GL_BGRA_EXT:
internalFormat = GL_BGRA8_EXT;
break;
}
glTexStorage2DEXT(target, 1, internalFormat, width, height);
}
#else
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
{
switch (internalFormat)
{
case GL_RGB:
internalFormat = GL_RGB565;
break;
case GL_RGBA:
internalFormat = GL_RGBA8;
break;
}
glTexStorage2D(target, 1, internalFormat, width, height);
}
#endif
else
#endif
glTexImage2D(target, level, internalFormat, width, height, border, format, type, data);
}

View File

@ -177,5 +177,14 @@ static INLINE unsigned gl_wrap_type_to_enum(enum gfx_wrap_type type)
bool gl_query_core_context_in_use(void);
void gl_ff_vertex(const struct video_coords *coords);
void gl_ff_matrix(const math_matrix_4x4 *mat);
void gl_load_texture_image(GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data);
#endif

View File

@ -46,6 +46,8 @@ static bool g_x11_has_focus = false;
static bool g_x11_true_full = false;
Display *g_x11_dpy = NULL;
unsigned g_x11_screen = 0;
Colormap g_x11_cmap;
Window g_x11_win;
@ -57,8 +59,6 @@ static Atom g_x11_quit_atom;
static XIM g_x11_xim;
static XIC g_x11_xic;
unsigned g_x11_screen;
#define XA_INIT(x) XA##x = XInternAtom(dpy, #x, False)
#define _NET_WM_STATE_ADD 1
#define MOVERESIZE_GRAVITY_CENTER 5

View File

@ -606,14 +606,9 @@ static void gl_init_textures_reference(gl_t *gl, unsigned i,
if (gl->egl_images)
return;
#ifndef HAVE_OPENGLES2
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
glTexStorage2D(GL_TEXTURE_2D, 1, internal_fmt, gl->tex_w, gl->tex_h);
else
#endif
glTexImage2D(GL_TEXTURE_2D,
0, internal_fmt, gl->tex_w, gl->tex_h, 0, texture_type,
texture_fmt, gl->empty_buf ? gl->empty_buf : NULL);
gl_load_texture_image(GL_TEXTURE_2D,
0, internal_fmt, gl->tex_w, gl->tex_h, 0, texture_type,
texture_fmt, gl->empty_buf ? gl->empty_buf : NULL);
#endif
}
@ -647,7 +642,7 @@ static void gl_init_textures(gl_t *gl, const video_info_t *video)
texture_fmt = gl->texture_fmt;
#endif
#ifdef HAVE_OPENGLES
#ifdef HAVE_OPENGLES2
/* GLES is picky about which format we use here.
* Without extensions, we can *only* render to 16-bit FBOs. */
@ -655,12 +650,7 @@ static void gl_init_textures(gl_t *gl, const video_info_t *video)
{
if (gl_check_capability(GL_CAPS_ARGB8))
{
#if !defined(HAVE_PSGL)
if (gl_check_capability(GL_CAPS_GLES3_SUPPORTED))
internal_fmt = GL_RGBA8_OES;
else
#endif
internal_fmt = GL_RGBA;
internal_fmt = GL_RGBA;
texture_type = GL_RGBA;
texture_fmt = GL_UNSIGNED_BYTE;
}

View File

@ -163,18 +163,12 @@ static bool gl_recreate_fbo(
glDeleteTextures(1, texture);
glGenTextures(1, texture);
glBindTexture(GL_TEXTURE_2D, *texture);
#if !defined(HAVE_OPENGLES2) && !defined(HAVE_PSGL)
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
glTexStorage2D(GL_TEXTURE_2D, 1, RARCH_GL_INTERNAL_FORMAT32,
fbo_rect->width, fbo_rect->height);
else
#endif
glTexImage2D(GL_TEXTURE_2D,
0, RARCH_GL_INTERNAL_FORMAT32,
fbo_rect->width,
fbo_rect->height,
0, RARCH_GL_TEXTURE_TYPE32,
RARCH_GL_FORMAT32, NULL);
gl_load_texture_image(GL_TEXTURE_2D,
0, RARCH_GL_INTERNAL_FORMAT32,
fbo_rect->width,
fbo_rect->height,
0, RARCH_GL_TEXTURE_TYPE32,
RARCH_GL_FORMAT32, NULL);
glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER,
RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
@ -232,14 +226,16 @@ void gl_check_fbo_dimensions(gl_t *gl)
/* Check if we have to recreate our FBO textures. */
for (i = 0; i < gl->fbo_pass; i++)
{
bool update_feedback = gl->fbo_feedback_enable
&& (unsigned)i == gl->fbo_feedback_pass;
struct video_fbo_rect *fbo_rect = &gl->fbo_rect[i];
bool check_dimensions =
(fbo_rect->max_img_width > fbo_rect->width) ||
(fbo_rect->max_img_height > fbo_rect->height);
if (fbo_rect && check_dimensions)
gl_check_fbo_dimension(gl, i, update_feedback);
if (fbo_rect)
{
bool update_feedback = gl->fbo_feedback_enable
&& (unsigned)i == gl->fbo_feedback_pass;
if ((fbo_rect->max_img_width > fbo_rect->width) ||
(fbo_rect->max_img_height > fbo_rect->height))
gl_check_fbo_dimension(gl, i, update_feedback);
}
}
}
void gl_renderchain_render(gl_t *gl,
@ -528,15 +524,9 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
if (fp_fbo && gl->has_fp_fbo)
{
RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i);
#if !defined(HAVE_PSGL)
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA32F,
gl->fbo_rect[i].width, gl->fbo_rect[i].height);
else
#endif
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F,
gl->fbo_rect[i].width, gl->fbo_rect[i].height,
0, GL_RGBA, GL_FLOAT, NULL);
gl_load_texture_image(GL_TEXTURE_2D, 0, GL_RGBA32F,
gl->fbo_rect[i].width, gl->fbo_rect[i].height,
0, GL_RGBA, GL_FLOAT, NULL);
}
else
#endif
@ -565,14 +555,10 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT,
GL_UNSIGNED_BYTE, NULL);
#else
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
glTexStorage2D(GL_TEXTURE_2D, 1, GL_SRGB8_ALPHA8,
gl->fbo_rect[i].width, gl->fbo_rect[i].height);
else
glTexImage2D(GL_TEXTURE_2D,
0, GL_SRGB8_ALPHA8,
gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, NULL);
gl_load_texture_image(GL_TEXTURE_2D,
0, GL_SRGB8_ALPHA8,
gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, NULL);
#endif
}
else
@ -586,14 +572,10 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
#else
/* Avoid potential performance
* reductions on particular platforms. */
if (gl_check_capability(GL_CAPS_TEX_STORAGE))
glTexStorage2D(GL_TEXTURE_2D, 1, RARCH_GL_INTERNAL_FORMAT32,
gl->fbo_rect[i].width, gl->fbo_rect[i].height);
else
glTexImage2D(GL_TEXTURE_2D,
0, RARCH_GL_INTERNAL_FORMAT32,
gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0,
RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL);
gl_load_texture_image(GL_TEXTURE_2D,
0, RARCH_GL_INTERNAL_FORMAT32,
gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0,
RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL);
#endif
}
}

View File

@ -1,65 +1,69 @@
#include "shaders_common.h"
static const char *stock_fragment_xmb_snow = GLSL(
uniform float time;
vec2 res = vec2(1920*3, 1080*3);
static const char* stock_fragment_xmb_snow = GLSL(
uniform float time;
uniform vec2 OutputSize;
// High quality = larger patterns
// quality * 84 is the number of seconds in a loop
float quality = 8.0;
float baseScale = 3.5; // [1.0 .. 10.0]
float density = 0.7; // [0.01 .. 1.0]
float speed = 0.25; // [0.1 .. 1.0]
float Cellular2D(vec2 P) {
// https://github.com/BrianSharpe/Wombat/blob/master/Cellular2D.glsl
vec2 Pi = floor(P);
vec2 Pf = P - Pi;
vec4 Pt = vec4( Pi.xy, Pi.xy + 1.0 );
Pt = Pt - floor(Pt * ( 1.0 / 71.0 )) * 71.0;
Pt += vec2( 26.0, 161.0 ).xyxy;
Pt *= Pt;
Pt = Pt.xzxz * Pt.yyww;
vec4 hash_x = fract( Pt * ( 1.0 / 951.135664 ) );
vec4 hash_y = fract( Pt * ( 1.0 / 642.949883 ) );
hash_x = hash_x * 2.0 - 1.0;
hash_y = hash_y * 2.0 - 1.0;
const float JITTER_WINDOW = 0.25;
hash_x = ( ( hash_x * hash_x * hash_x ) - sign( hash_x ) ) * JITTER_WINDOW + vec4( 0.0, 1.0, 0.0, 1.0 );
hash_y = ( ( hash_y * hash_y * hash_y ) - sign( hash_y ) ) * JITTER_WINDOW + vec4( 0.0, 0.0, 1.0, 1.0 );
vec4 dx = Pf.xxxx - hash_x;
vec4 dy = Pf.yyyy - hash_y;
vec4 d = dx * dx + dy * dy;
d.xy = min(d.xy, d.zw);
return min(d.x, d.y) * ( 1.0 / 1.125 );
}
float rand(vec2 co)
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
float snow(vec2 pos, float time, float scale) {
// add wobble
pos.x += cos(pos.y*4.0 + time*3.14159*2.0 + 1.0/scale)/(8.0/scale);
// add gravity
pos += time*scale*vec2(-0.5, 1.0);
return max(
1.0 - Cellular2D(mod(pos/scale, scale*quality)*16.0)*1024.0,
0.0
) * (scale*0.5 + 0.5);
}
float dist_func(vec2 distv)
{
float dist = sqrt((distv.x * distv.x) + (distv.y * distv.y)) * (40.0 / baseScale);
dist = clamp(dist, 0.0, 1.0);
return cos(dist * (3.14159265358 * 0.5)) * 0.5;
}
void main( void ) {
float winscale = max(res.x, res.y);
float tim = mod(time/8.0, 84.0*quality);
vec2 pos = gl_FragCoord.xy/winscale;
float a = 0.0;
// Each of these is a layer of snow
// Remove some for better performance
// Changing the scale (3rd value) will mess with the looping
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y*4.0, 1.0);
gl_FragColor = vec4(1.0, 1.0, 1.0, a);
}
float random_dots(vec2 co)
{
float part = 1.0 / 20.0;
vec2 cd = floor(co / part);
float p = rand(cd);
if (p > 0.005 * (density * 40.0))
return 0.0;
vec2 dpos = (vec2(fract(p * 2.0) , p) + vec2(2.0, 2.0)) * 0.25;
vec2 cellpos = fract(co / part);
vec2 distv = (cellpos - dpos);
return dist_func(distv);
}
float snow(vec2 pos, float time, float scale)
{
// add wobble
pos.x += cos(pos.y * 1.2 + time * 3.14159 * 2.0 + 1.0 / scale) / (8.0 / scale) * 4.0;
// add gravity
pos += time * scale * vec2(-0.5, 1.0) * 4.0;
return random_dots(pos / scale) * (scale * 0.5 + 0.5);
}
void main(void)
{
float tim = time * 0.4 * speed;
vec2 pos = gl_FragCoord.xy / OutputSize.xx;
float a = 0.0;
// Each of these is a layer of snow
// Remove some for better performance
// Changing the scale (3rd value) will mess with the looping
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y * 4.0, 1.0);
gl_FragColor = vec4(1.0, 1.0, 1.0, a);
}
);

View File

@ -1,52 +1,69 @@
#include "shaders_common.h"
static const char *stock_fragment_xmb_simple_snow = GLSL(
uniform float time;
vec2 res = vec2(1920*3, 1080*3);
float quality = 8.0;
uniform float time;
uniform vec2 OutputSize;
float Cellular2D(vec2 P) {
vec2 Pi = floor(P);
vec2 Pf = P - Pi;
vec2 Pt = vec2( Pi.x, Pi.y + 1.0 );
Pt = Pt - floor(Pt * ( 1.0 / 71.0 )) * 71.0;
Pt += vec2( 26.0, 161.0 );
Pt *= Pt;
Pt = Pt.xy * Pt.yx;
float hash_x = fract( Pt.x * ( 1.0 / 951.135664 ) ) * 2.0 - 1.0;
float hash_y = fract( Pt.y * ( 1.0 / 642.949883 ) ) * 2.0 - 1.0;
const float JITTER_WINDOW = 0.25;
hash_x = ( ( hash_x * hash_x * hash_x ) - sign( hash_x ) ) * JITTER_WINDOW;
hash_y = ( ( hash_y * hash_y * hash_y ) - sign( hash_y ) ) * JITTER_WINDOW;
vec2 dd = vec2(Pf.x - hash_x, Pf.y - hash_y);
float d = dd.x * dd.x + dd.y * dd.y;
return d * ( 1.0 / 1.125 );
}
float baseScale = 1.25; // [1.0 .. 10.0]
float density = 0.5; // [0.01 .. 1.0]
float speed = 0.15; // [0.1 .. 1.0]
float snow(vec2 pos, float time, float scale) {
pos.x += cos(pos.y*4.0 + time*3.14159*2.0 + 1.0/scale)/(8.0/scale);
pos += time*scale*vec2(-0.5, 1.0);
return max(
1.0 - Cellular2D(mod(pos/scale, scale*quality)*16.0)*1024.0,
0.0
) * (scale*0.5 + 0.5);
}
float rand(vec2 co)
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
void main( void ) {
float winscale = max(res.x, res.y);
float tim = mod(time/8.0, 84.0*quality);
vec2 pos = gl_FragCoord.xy/winscale;
float a = 0.0;
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y*4.0, 1.0);
gl_FragColor = vec4(1.0, 1.0, 1.0, a);
}
float dist_func(vec2 distv)
{
float dist = sqrt((distv.x * distv.x) + (distv.y * distv.y)) * (40.0 / baseScale);
dist = clamp(dist, 0.0, 1.0);
return cos(dist * (3.14159265358 * 0.5)) * 0.5;
}
float random_dots(vec2 co)
{
float part = 1.0 / 20.0;
vec2 cd = floor(co / part);
float p = rand(cd);
if (p > 0.005 * (density * 40.0))
return 0.0;
vec2 dpos = (vec2(fract(p * 2.0) , p) + vec2(2.0, 2.0)) * 0.25;
vec2 cellpos = fract(co / part);
vec2 distv = (cellpos - dpos);
return dist_func(distv);
}
float snow(vec2 pos, float time, float scale)
{
// add wobble
pos.x += cos(pos.y * 1.2 + time * 3.14159 * 2.0 + 1.0 / scale) / (8.0 / scale) * 4.0;
// add gravity
pos += time * scale * vec2(-0.5, 1.0) * 4.0;
return random_dots(pos / scale) * (scale * 0.5 + 0.5);
}
void main(void)
{
float tim = time * 0.4 * speed;
vec2 pos = gl_FragCoord.xy / OutputSize.xx;
float a = 0.0;
// Each of these is a layer of snow
// Remove some for better performance
// Changing the scale (3rd value) will mess with the looping
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y * 4.0, 1.0);
gl_FragColor = vec4(1.0, 1.0, 1.0, a);
}
);

View File

@ -118,6 +118,9 @@
#ifndef GL_BGRA_EXT
#define GL_BGRA_EXT 0x80E1
#endif
#ifndef GL_BGRA8_EXT
#define GL_BGRA8_EXT 0x93A1
#endif
#ifdef IOS
/* Stupid Apple. */
#define RARCH_GL_INTERNAL_FORMAT32 GL_RGBA

View File

@ -208,20 +208,20 @@ static void vulkan_init_pipelines(
#include "vulkan_shaders/font.frag.inc"
;
static const uint32_t ribbon_vert[] =
#include "vulkan_shaders/ribbon.vert.inc"
static const uint32_t pipeline_ribbon_vert[] =
#include "vulkan_shaders/pipeline_ribbon.vert.inc"
;
static const uint32_t ribbon_frag[] =
#include "vulkan_shaders/ribbon.frag.inc"
static const uint32_t pipeline_ribbon_frag[] =
#include "vulkan_shaders/pipeline_ribbon.frag.inc"
;
static const uint32_t ribbon_simple_vert[] =
#include "vulkan_shaders/ribbon_simple.vert.inc"
static const uint32_t pipeline_ribbon_simple_vert[] =
#include "vulkan_shaders/pipeline_ribbon_simple.vert.inc"
;
static const uint32_t ribbon_simple_frag[] =
#include "vulkan_shaders/ribbon_simple.frag.inc"
static const uint32_t pipeline_ribbon_simple_frag[] =
#include "vulkan_shaders/pipeline_ribbon_simple.frag.inc"
;
unsigned i;
@ -393,13 +393,13 @@ static void vulkan_init_pipelines(
{
if (i & 2)
{
module_info.codeSize = sizeof(ribbon_simple_vert);
module_info.pCode = ribbon_simple_vert;
module_info.codeSize = sizeof(pipeline_ribbon_simple_vert);
module_info.pCode = pipeline_ribbon_simple_vert;
}
else
{
module_info.codeSize = sizeof(ribbon_vert);
module_info.pCode = ribbon_vert;
module_info.codeSize = sizeof(pipeline_ribbon_vert);
module_info.pCode = pipeline_ribbon_vert;
}
shader_stages[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
@ -409,13 +409,13 @@ static void vulkan_init_pipelines(
if (i & 2)
{
module_info.codeSize = sizeof(ribbon_simple_frag);
module_info.pCode = ribbon_simple_frag;
module_info.codeSize = sizeof(pipeline_ribbon_simple_frag);
module_info.pCode = pipeline_ribbon_simple_frag;
}
else
{
module_info.codeSize = sizeof(ribbon_frag);
module_info.pCode = ribbon_frag;
module_info.codeSize = sizeof(pipeline_ribbon_frag);
module_info.pCode = pipeline_ribbon_frag;
}
shader_stages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
@ -1282,7 +1282,7 @@ static void vulkan_set_rotation(void *data, unsigned rotation)
if (!vk)
return;
vk->rotation = 90 * rotation;
vk->rotation = 270 * rotation;
vulkan_set_projection(vk, &ortho, true);
}

View File

@ -1,13 +1,77 @@
#version 310 es
layout(location = 0) in vec3 VertexCoord;
precision highp float;
layout(std140, set = 0, binding = 0) uniform UBO
{
vec4 OutputSize;
float time;
} constants;
} global;
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
float baseScale = 1.25; // [1.0 .. 10.0]
float density = 0.5; // [0.01 .. 1.0]
float speed = 0.15; // [0.1 .. 1.0]
float rand(vec2 co)
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
float dist_func(vec2 distv)
{
float dist = sqrt((distv.x * distv.x) + (distv.y * distv.y)) * (40.0 / baseScale);
dist = clamp(dist, 0.0, 1.0);
return cos(dist * (3.14159265358 * 0.5)) * 0.5;
}
float random_dots(vec2 co)
{
float part = 1.0 / 20.0;
vec2 cd = floor(co / vec2(part));
float p = rand(cd);
if (p > 0.005 * (density * 40.0))
return 0.0;
vec2 dpos = (vec2(fract(p * 2.0) , p) + vec2(2.0, 2.0)) * 0.25;
vec2 cellpos = fract(co / part);
vec2 distv = (cellpos - dpos);
return dist_func(distv);
}
float snow(vec2 pos, float time, float scale)
{
// add wobble
pos.x += cos(pos.y * 1.2 + time * 3.14159 * 2.0 + 1.0 / scale) / (8.0 / scale) * 4.0;
// add gravity
pos += time * scale * vec2(-0.5, 1.0) * 4.0;
return random_dots(pos / vec2(scale)) * (scale * 0.5 + 0.5);
}
void main()
{
gl_Position = MVPMatrix * vec4(VertexCoord, 0.0, 1.0);
float tim = global.time * 0.4 * speed;
vec2 pos = vTexCoord.xy / global.OutputSize.xx;
float a = 0.0;
// Each of these is a layer of snow
// Remove some for better performance
// Changing the scale (3rd value) will mess with the looping
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y * 4.0, 1.0);
FragColor = vec4(1.0, 1.0, 1.0, a);
}

View File

@ -0,0 +1,408 @@
{0x07230203,0x00010000,0x00080001,0x0000010e,
0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,
0x00000000,0x000000b7,0x0000010b,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000001,
0x00000136,0x000a0004,0x475f4c47,0x4c474f4f,
0x70635f45,0x74735f70,0x5f656c79,0x656e696c,
0x7269645f,0x69746365,0x00006576,0x00080004,
0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63,
0x69645f65,0x74636572,0x00657669,0x00040005,
0x00000004,0x6e69616d,0x00000000,0x00050005,
0x0000000b,0x646e6172,0x32667628,0x0000003b,
0x00030005,0x0000000a,0x00006f63,0x00060005,
0x0000000e,0x74736964,0x6e75665f,0x66762863,
0x00003b32,0x00040005,0x0000000d,0x74736964,
0x00000076,0x00070005,0x00000011,0x646e6172,
0x645f6d6f,0x2873746f,0x3b326676,0x00000000,
0x00030005,0x00000010,0x00006f63,0x00060005,
0x00000018,0x776f6e73,0x32667628,0x3b31663b,
0x003b3166,0x00030005,0x00000015,0x00736f70,
0x00040005,0x00000016,0x656d6974,0x00000000,
0x00040005,0x00000017,0x6c616373,0x00000065,
0x00050005,0x0000001b,0x65736162,0x6c616353,
0x00000065,0x00040005,0x0000001d,0x736e6564,
0x00797469,0x00040005,0x0000001f,0x65657073,
0x00000064,0x00040005,0x0000002c,0x74736964,
0x00000000,0x00040005,0x0000004b,0x74726170,
0x00000000,0x00030005,0x0000004d,0x00006463,
0x00030005,0x00000053,0x00000070,0x00040005,
0x00000054,0x61726170,0x0000006d,0x00040005,
0x00000061,0x736f7064,0x00000000,0x00040005,
0x0000006c,0x6c6c6563,0x00736f70,0x00040005,
0x00000072,0x74736964,0x00000076,0x00040005,
0x00000076,0x61726170,0x0000006d,0x00040005,
0x0000009f,0x61726170,0x0000006d,0x00030005,
0x000000a7,0x006d6974,0x00030005,0x000000a9,
0x004f4255,0x00060006,0x000000a9,0x00000000,
0x7074754f,0x69537475,0x0000657a,0x00050006,
0x000000a9,0x00000001,0x656d6974,0x00000000,
0x00040005,0x000000ab,0x626f6c67,0x00006c61,
0x00030005,0x000000b5,0x00736f70,0x00050005,
0x000000b7,0x78655476,0x726f6f43,0x00000064,
0x00030005,0x000000bf,0x00000061,0x00040005,
0x000000c0,0x61726170,0x0000006d,0x00040005,
0x000000c2,0x61726170,0x0000006d,0x00040005,
0x000000c4,0x61726170,0x0000006d,0x00040005,
0x000000c9,0x61726170,0x0000006d,0x00040005,
0x000000cb,0x61726170,0x0000006d,0x00040005,
0x000000cd,0x61726170,0x0000006d,0x00040005,
0x000000d2,0x61726170,0x0000006d,0x00040005,
0x000000d4,0x61726170,0x0000006d,0x00040005,
0x000000d6,0x61726170,0x0000006d,0x00040005,
0x000000da,0x61726170,0x0000006d,0x00040005,
0x000000dc,0x61726170,0x0000006d,0x00040005,
0x000000de,0x61726170,0x0000006d,0x00040005,
0x000000e2,0x61726170,0x0000006d,0x00040005,
0x000000e4,0x61726170,0x0000006d,0x00040005,
0x000000e6,0x61726170,0x0000006d,0x00040005,
0x000000eb,0x61726170,0x0000006d,0x00040005,
0x000000ed,0x61726170,0x0000006d,0x00040005,
0x000000ef,0x61726170,0x0000006d,0x00040005,
0x000000f3,0x61726170,0x0000006d,0x00040005,
0x000000f5,0x61726170,0x0000006d,0x00040005,
0x000000f7,0x61726170,0x0000006d,0x00040005,
0x000000fc,0x61726170,0x0000006d,0x00040005,
0x000000fe,0x61726170,0x0000006d,0x00040005,
0x00000100,0x61726170,0x0000006d,0x00050005,
0x0000010b,0x67617246,0x6f6c6f43,0x00000072,
0x00050048,0x000000a9,0x00000000,0x00000023,
0x00000000,0x00050048,0x000000a9,0x00000001,
0x00000023,0x00000010,0x00030047,0x000000a9,
0x00000002,0x00040047,0x000000ab,0x00000022,
0x00000000,0x00040047,0x000000ab,0x00000021,
0x00000000,0x00040047,0x000000b7,0x0000001e,
0x00000000,0x00040047,0x0000010b,0x0000001e,
0x00000000,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00030016,0x00000006,
0x00000020,0x00040017,0x00000007,0x00000006,
0x00000002,0x00040020,0x00000008,0x00000007,
0x00000007,0x00040021,0x00000009,0x00000006,
0x00000008,0x00040020,0x00000013,0x00000007,
0x00000006,0x00060021,0x00000014,0x00000006,
0x00000008,0x00000013,0x00000013,0x00040020,
0x0000001a,0x00000006,0x00000006,0x0004003b,
0x0000001a,0x0000001b,0x00000006,0x0004002b,
0x00000006,0x0000001c,0x3fa00000,0x0004003b,
0x0000001a,0x0000001d,0x00000006,0x0004002b,
0x00000006,0x0000001e,0x3f000000,0x0004003b,
0x0000001a,0x0000001f,0x00000006,0x0004002b,
0x00000006,0x00000020,0x3e19999a,0x0004002b,
0x00000006,0x00000022,0x414fd639,0x0004002b,
0x00000006,0x00000023,0x429c774c,0x0005002c,
0x00000007,0x00000024,0x00000022,0x00000023,
0x0004002b,0x00000006,0x00000027,0x472aee8c,
0x00040015,0x0000002d,0x00000020,0x00000000,
0x0004002b,0x0000002d,0x0000002e,0x00000000,
0x0004002b,0x0000002d,0x00000034,0x00000001,
0x0004002b,0x00000006,0x0000003c,0x42200000,
0x0004002b,0x00000006,0x00000041,0x00000000,
0x0004002b,0x00000006,0x00000042,0x3f800000,
0x0004002b,0x00000006,0x00000045,0x3fc90fdb,
0x0004002b,0x00000006,0x0000004c,0x3d4ccccd,
0x0004002b,0x00000006,0x00000058,0x3ba3d70a,
0x00020014,0x0000005c,0x0004002b,0x00000006,
0x00000063,0x40000000,0x0005002c,0x00000007,
0x00000068,0x00000063,0x00000063,0x0004002b,
0x00000006,0x0000006a,0x3e800000,0x0004002b,
0x00000006,0x0000007d,0x3f99999a,0x0004002b,
0x00000006,0x00000080,0x40490fd0,0x0004002b,
0x00000006,0x00000088,0x41000000,0x0004002b,
0x00000006,0x0000008c,0x40800000,0x0004002b,
0x00000006,0x00000095,0xbf000000,0x0005002c,
0x00000007,0x00000096,0x00000095,0x00000042,
0x00040017,0x000000a8,0x00000006,0x00000004,
0x0004001e,0x000000a9,0x000000a8,0x00000006,
0x00040020,0x000000aa,0x00000002,0x000000a9,
0x0004003b,0x000000aa,0x000000ab,0x00000002,
0x00040015,0x000000ac,0x00000020,0x00000001,
0x0004002b,0x000000ac,0x000000ad,0x00000001,
0x00040020,0x000000ae,0x00000002,0x00000006,
0x0004002b,0x00000006,0x000000b1,0x3ecccccd,
0x00040020,0x000000b6,0x00000001,0x00000007,
0x0004003b,0x000000b6,0x000000b7,0x00000001,
0x0004002b,0x000000ac,0x000000b9,0x00000000,
0x00040020,0x000000ba,0x00000002,0x000000a8,
0x0004002b,0x00000006,0x000000c8,0x3f333333,
0x0004002b,0x00000006,0x000000d1,0x3f19999a,
0x0004002b,0x00000006,0x000000ea,0x3e99999a,
0x0004002b,0x00000006,0x000000fb,0x3e000000,
0x00040020,0x0000010a,0x00000003,0x000000a8,
0x0004003b,0x0000010a,0x0000010b,0x00000003,
0x00050036,0x00000002,0x00000004,0x00000000,
0x00000003,0x000200f8,0x00000005,0x0004003b,
0x00000013,0x000000a7,0x00000007,0x0004003b,
0x00000008,0x000000b5,0x00000007,0x0004003b,
0x00000013,0x000000bf,0x00000007,0x0004003b,
0x00000008,0x000000c0,0x00000007,0x0004003b,
0x00000013,0x000000c2,0x00000007,0x0004003b,
0x00000013,0x000000c4,0x00000007,0x0004003b,
0x00000008,0x000000c9,0x00000007,0x0004003b,
0x00000013,0x000000cb,0x00000007,0x0004003b,
0x00000013,0x000000cd,0x00000007,0x0004003b,
0x00000008,0x000000d2,0x00000007,0x0004003b,
0x00000013,0x000000d4,0x00000007,0x0004003b,
0x00000013,0x000000d6,0x00000007,0x0004003b,
0x00000008,0x000000da,0x00000007,0x0004003b,
0x00000013,0x000000dc,0x00000007,0x0004003b,
0x00000013,0x000000de,0x00000007,0x0004003b,
0x00000008,0x000000e2,0x00000007,0x0004003b,
0x00000013,0x000000e4,0x00000007,0x0004003b,
0x00000013,0x000000e6,0x00000007,0x0004003b,
0x00000008,0x000000eb,0x00000007,0x0004003b,
0x00000013,0x000000ed,0x00000007,0x0004003b,
0x00000013,0x000000ef,0x00000007,0x0004003b,
0x00000008,0x000000f3,0x00000007,0x0004003b,
0x00000013,0x000000f5,0x00000007,0x0004003b,
0x00000013,0x000000f7,0x00000007,0x0004003b,
0x00000008,0x000000fc,0x00000007,0x0004003b,
0x00000013,0x000000fe,0x00000007,0x0004003b,
0x00000013,0x00000100,0x00000007,0x0003003e,
0x0000001b,0x0000001c,0x0003003e,0x0000001d,
0x0000001e,0x0003003e,0x0000001f,0x00000020,
0x00050041,0x000000ae,0x000000af,0x000000ab,
0x000000ad,0x0004003d,0x00000006,0x000000b0,
0x000000af,0x00050085,0x00000006,0x000000b2,
0x000000b0,0x000000b1,0x0004003d,0x00000006,
0x000000b3,0x0000001f,0x00050085,0x00000006,
0x000000b4,0x000000b2,0x000000b3,0x0003003e,
0x000000a7,0x000000b4,0x0004003d,0x00000007,
0x000000b8,0x000000b7,0x00050041,0x000000ba,
0x000000bb,0x000000ab,0x000000b9,0x0004003d,
0x000000a8,0x000000bc,0x000000bb,0x0007004f,
0x00000007,0x000000bd,0x000000bc,0x000000bc,
0x00000000,0x00000000,0x00050088,0x00000007,
0x000000be,0x000000b8,0x000000bd,0x0003003e,
0x000000b5,0x000000be,0x0003003e,0x000000bf,
0x00000041,0x0004003d,0x00000007,0x000000c1,
0x000000b5,0x0003003e,0x000000c0,0x000000c1,
0x0004003d,0x00000006,0x000000c3,0x000000a7,
0x0003003e,0x000000c2,0x000000c3,0x0003003e,
0x000000c4,0x00000042,0x00070039,0x00000006,
0x000000c5,0x00000018,0x000000c0,0x000000c2,
0x000000c4,0x0004003d,0x00000006,0x000000c6,
0x000000bf,0x00050081,0x00000006,0x000000c7,
0x000000c6,0x000000c5,0x0003003e,0x000000bf,
0x000000c7,0x0004003d,0x00000007,0x000000ca,
0x000000b5,0x0003003e,0x000000c9,0x000000ca,
0x0004003d,0x00000006,0x000000cc,0x000000a7,
0x0003003e,0x000000cb,0x000000cc,0x0003003e,
0x000000cd,0x000000c8,0x00070039,0x00000006,
0x000000ce,0x00000018,0x000000c9,0x000000cb,
0x000000cd,0x0004003d,0x00000006,0x000000cf,
0x000000bf,0x00050081,0x00000006,0x000000d0,
0x000000cf,0x000000ce,0x0003003e,0x000000bf,
0x000000d0,0x0004003d,0x00000007,0x000000d3,
0x000000b5,0x0003003e,0x000000d2,0x000000d3,
0x0004003d,0x00000006,0x000000d5,0x000000a7,
0x0003003e,0x000000d4,0x000000d5,0x0003003e,
0x000000d6,0x000000d1,0x00070039,0x00000006,
0x000000d7,0x00000018,0x000000d2,0x000000d4,
0x000000d6,0x0004003d,0x00000006,0x000000d8,
0x000000bf,0x00050081,0x00000006,0x000000d9,
0x000000d8,0x000000d7,0x0003003e,0x000000bf,
0x000000d9,0x0004003d,0x00000007,0x000000db,
0x000000b5,0x0003003e,0x000000da,0x000000db,
0x0004003d,0x00000006,0x000000dd,0x000000a7,
0x0003003e,0x000000dc,0x000000dd,0x0003003e,
0x000000de,0x0000001e,0x00070039,0x00000006,
0x000000df,0x00000018,0x000000da,0x000000dc,
0x000000de,0x0004003d,0x00000006,0x000000e0,
0x000000bf,0x00050081,0x00000006,0x000000e1,
0x000000e0,0x000000df,0x0003003e,0x000000bf,
0x000000e1,0x0004003d,0x00000007,0x000000e3,
0x000000b5,0x0003003e,0x000000e2,0x000000e3,
0x0004003d,0x00000006,0x000000e5,0x000000a7,
0x0003003e,0x000000e4,0x000000e5,0x0003003e,
0x000000e6,0x000000b1,0x00070039,0x00000006,
0x000000e7,0x00000018,0x000000e2,0x000000e4,
0x000000e6,0x0004003d,0x00000006,0x000000e8,
0x000000bf,0x00050081,0x00000006,0x000000e9,
0x000000e8,0x000000e7,0x0003003e,0x000000bf,
0x000000e9,0x0004003d,0x00000007,0x000000ec,
0x000000b5,0x0003003e,0x000000eb,0x000000ec,
0x0004003d,0x00000006,0x000000ee,0x000000a7,
0x0003003e,0x000000ed,0x000000ee,0x0003003e,
0x000000ef,0x000000ea,0x00070039,0x00000006,
0x000000f0,0x00000018,0x000000eb,0x000000ed,
0x000000ef,0x0004003d,0x00000006,0x000000f1,
0x000000bf,0x00050081,0x00000006,0x000000f2,
0x000000f1,0x000000f0,0x0003003e,0x000000bf,
0x000000f2,0x0004003d,0x00000007,0x000000f4,
0x000000b5,0x0003003e,0x000000f3,0x000000f4,
0x0004003d,0x00000006,0x000000f6,0x000000a7,
0x0003003e,0x000000f5,0x000000f6,0x0003003e,
0x000000f7,0x0000006a,0x00070039,0x00000006,
0x000000f8,0x00000018,0x000000f3,0x000000f5,
0x000000f7,0x0004003d,0x00000006,0x000000f9,
0x000000bf,0x00050081,0x00000006,0x000000fa,
0x000000f9,0x000000f8,0x0003003e,0x000000bf,
0x000000fa,0x0004003d,0x00000007,0x000000fd,
0x000000b5,0x0003003e,0x000000fc,0x000000fd,
0x0004003d,0x00000006,0x000000ff,0x000000a7,
0x0003003e,0x000000fe,0x000000ff,0x0003003e,
0x00000100,0x000000fb,0x00070039,0x00000006,
0x00000101,0x00000018,0x000000fc,0x000000fe,
0x00000100,0x0004003d,0x00000006,0x00000102,
0x000000bf,0x00050081,0x00000006,0x00000103,
0x00000102,0x00000101,0x0003003e,0x000000bf,
0x00000103,0x0004003d,0x00000006,0x00000104,
0x000000bf,0x00050041,0x00000013,0x00000105,
0x000000b5,0x00000034,0x0004003d,0x00000006,
0x00000106,0x00000105,0x00050085,0x00000006,
0x00000107,0x00000106,0x0000008c,0x0007000c,
0x00000006,0x00000108,0x00000001,0x00000025,
0x00000107,0x00000042,0x00050085,0x00000006,
0x00000109,0x00000104,0x00000108,0x0003003e,
0x000000bf,0x00000109,0x0004003d,0x00000006,
0x0000010c,0x000000bf,0x00070050,0x000000a8,
0x0000010d,0x00000042,0x00000042,0x00000042,
0x0000010c,0x0003003e,0x0000010b,0x0000010d,
0x000100fd,0x00010038,0x00050036,0x00000006,
0x0000000b,0x00000000,0x00000009,0x00030037,
0x00000008,0x0000000a,0x000200f8,0x0000000c,
0x0004003d,0x00000007,0x00000021,0x0000000a,
0x00050094,0x00000006,0x00000025,0x00000021,
0x00000024,0x0006000c,0x00000006,0x00000026,
0x00000001,0x0000000d,0x00000025,0x00050085,
0x00000006,0x00000028,0x00000026,0x00000027,
0x0006000c,0x00000006,0x00000029,0x00000001,
0x0000000a,0x00000028,0x000200fe,0x00000029,
0x00010038,0x00050036,0x00000006,0x0000000e,
0x00000000,0x00000009,0x00030037,0x00000008,
0x0000000d,0x000200f8,0x0000000f,0x0004003b,
0x00000013,0x0000002c,0x00000007,0x00050041,
0x00000013,0x0000002f,0x0000000d,0x0000002e,
0x0004003d,0x00000006,0x00000030,0x0000002f,
0x00050041,0x00000013,0x00000031,0x0000000d,
0x0000002e,0x0004003d,0x00000006,0x00000032,
0x00000031,0x00050085,0x00000006,0x00000033,
0x00000030,0x00000032,0x00050041,0x00000013,
0x00000035,0x0000000d,0x00000034,0x0004003d,
0x00000006,0x00000036,0x00000035,0x00050041,
0x00000013,0x00000037,0x0000000d,0x00000034,
0x0004003d,0x00000006,0x00000038,0x00000037,
0x00050085,0x00000006,0x00000039,0x00000036,
0x00000038,0x00050081,0x00000006,0x0000003a,
0x00000033,0x00000039,0x0006000c,0x00000006,
0x0000003b,0x00000001,0x0000001f,0x0000003a,
0x0004003d,0x00000006,0x0000003d,0x0000001b,
0x00050088,0x00000006,0x0000003e,0x0000003c,
0x0000003d,0x00050085,0x00000006,0x0000003f,
0x0000003b,0x0000003e,0x0003003e,0x0000002c,
0x0000003f,0x0004003d,0x00000006,0x00000040,
0x0000002c,0x0008000c,0x00000006,0x00000043,
0x00000001,0x0000002b,0x00000040,0x00000041,
0x00000042,0x0003003e,0x0000002c,0x00000043,
0x0004003d,0x00000006,0x00000044,0x0000002c,
0x00050085,0x00000006,0x00000046,0x00000044,
0x00000045,0x0006000c,0x00000006,0x00000047,
0x00000001,0x0000000e,0x00000046,0x00050085,
0x00000006,0x00000048,0x00000047,0x0000001e,
0x000200fe,0x00000048,0x00010038,0x00050036,
0x00000006,0x00000011,0x00000000,0x00000009,
0x00030037,0x00000008,0x00000010,0x000200f8,
0x00000012,0x0004003b,0x00000013,0x0000004b,
0x00000007,0x0004003b,0x00000008,0x0000004d,
0x00000007,0x0004003b,0x00000013,0x00000053,
0x00000007,0x0004003b,0x00000008,0x00000054,
0x00000007,0x0004003b,0x00000008,0x00000061,
0x00000007,0x0004003b,0x00000008,0x0000006c,
0x00000007,0x0004003b,0x00000008,0x00000072,
0x00000007,0x0004003b,0x00000008,0x00000076,
0x00000007,0x0003003e,0x0000004b,0x0000004c,
0x0004003d,0x00000007,0x0000004e,0x00000010,
0x0004003d,0x00000006,0x0000004f,0x0000004b,
0x00050050,0x00000007,0x00000050,0x0000004f,
0x0000004f,0x00050088,0x00000007,0x00000051,
0x0000004e,0x00000050,0x0006000c,0x00000007,
0x00000052,0x00000001,0x00000008,0x00000051,
0x0003003e,0x0000004d,0x00000052,0x0004003d,
0x00000007,0x00000055,0x0000004d,0x0003003e,
0x00000054,0x00000055,0x00050039,0x00000006,
0x00000056,0x0000000b,0x00000054,0x0003003e,
0x00000053,0x00000056,0x0004003d,0x00000006,
0x00000057,0x00000053,0x0004003d,0x00000006,
0x00000059,0x0000001d,0x00050085,0x00000006,
0x0000005a,0x00000059,0x0000003c,0x00050085,
0x00000006,0x0000005b,0x00000058,0x0000005a,
0x000500ba,0x0000005c,0x0000005d,0x00000057,
0x0000005b,0x000300f7,0x0000005f,0x00000000,
0x000400fa,0x0000005d,0x0000005e,0x0000005f,
0x000200f8,0x0000005e,0x000200fe,0x00000041,
0x000200f8,0x0000005f,0x0004003d,0x00000006,
0x00000062,0x00000053,0x00050085,0x00000006,
0x00000064,0x00000062,0x00000063,0x0006000c,
0x00000006,0x00000065,0x00000001,0x0000000a,
0x00000064,0x0004003d,0x00000006,0x00000066,
0x00000053,0x00050050,0x00000007,0x00000067,
0x00000065,0x00000066,0x00050081,0x00000007,
0x00000069,0x00000067,0x00000068,0x0005008e,
0x00000007,0x0000006b,0x00000069,0x0000006a,
0x0003003e,0x00000061,0x0000006b,0x0004003d,
0x00000007,0x0000006d,0x00000010,0x0004003d,
0x00000006,0x0000006e,0x0000004b,0x00050050,
0x00000007,0x0000006f,0x0000006e,0x0000006e,
0x00050088,0x00000007,0x00000070,0x0000006d,
0x0000006f,0x0006000c,0x00000007,0x00000071,
0x00000001,0x0000000a,0x00000070,0x0003003e,
0x0000006c,0x00000071,0x0004003d,0x00000007,
0x00000073,0x0000006c,0x0004003d,0x00000007,
0x00000074,0x00000061,0x00050083,0x00000007,
0x00000075,0x00000073,0x00000074,0x0003003e,
0x00000072,0x00000075,0x0004003d,0x00000007,
0x00000077,0x00000072,0x0003003e,0x00000076,
0x00000077,0x00050039,0x00000006,0x00000078,
0x0000000e,0x00000076,0x000200fe,0x00000078,
0x00010038,0x00050036,0x00000006,0x00000018,
0x00000000,0x00000014,0x00030037,0x00000008,
0x00000015,0x00030037,0x00000013,0x00000016,
0x00030037,0x00000013,0x00000017,0x000200f8,
0x00000019,0x0004003b,0x00000008,0x0000009f,
0x00000007,0x00050041,0x00000013,0x0000007b,
0x00000015,0x00000034,0x0004003d,0x00000006,
0x0000007c,0x0000007b,0x00050085,0x00000006,
0x0000007e,0x0000007c,0x0000007d,0x0004003d,
0x00000006,0x0000007f,0x00000016,0x00050085,
0x00000006,0x00000081,0x0000007f,0x00000080,
0x00050085,0x00000006,0x00000082,0x00000081,
0x00000063,0x00050081,0x00000006,0x00000083,
0x0000007e,0x00000082,0x0004003d,0x00000006,
0x00000084,0x00000017,0x00050088,0x00000006,
0x00000085,0x00000042,0x00000084,0x00050081,
0x00000006,0x00000086,0x00000083,0x00000085,
0x0006000c,0x00000006,0x00000087,0x00000001,
0x0000000e,0x00000086,0x0004003d,0x00000006,
0x00000089,0x00000017,0x00050088,0x00000006,
0x0000008a,0x00000088,0x00000089,0x00050088,
0x00000006,0x0000008b,0x00000087,0x0000008a,
0x00050085,0x00000006,0x0000008d,0x0000008b,
0x0000008c,0x00050041,0x00000013,0x0000008e,
0x00000015,0x0000002e,0x0004003d,0x00000006,
0x0000008f,0x0000008e,0x00050081,0x00000006,
0x00000090,0x0000008f,0x0000008d,0x00050041,
0x00000013,0x00000091,0x00000015,0x0000002e,
0x0003003e,0x00000091,0x00000090,0x0004003d,
0x00000006,0x00000092,0x00000016,0x0004003d,
0x00000006,0x00000093,0x00000017,0x00050085,
0x00000006,0x00000094,0x00000092,0x00000093,
0x0005008e,0x00000007,0x00000097,0x00000096,
0x00000094,0x0005008e,0x00000007,0x00000098,
0x00000097,0x0000008c,0x0004003d,0x00000007,
0x00000099,0x00000015,0x00050081,0x00000007,
0x0000009a,0x00000099,0x00000098,0x0003003e,
0x00000015,0x0000009a,0x0004003d,0x00000007,
0x0000009b,0x00000015,0x0004003d,0x00000006,
0x0000009c,0x00000017,0x00050050,0x00000007,
0x0000009d,0x0000009c,0x0000009c,0x00050088,
0x00000007,0x0000009e,0x0000009b,0x0000009d,
0x0003003e,0x0000009f,0x0000009e,0x00050039,
0x00000006,0x000000a0,0x00000011,0x0000009f,
0x0004003d,0x00000006,0x000000a1,0x00000017,
0x00050085,0x00000006,0x000000a2,0x000000a1,
0x0000001e,0x00050081,0x00000006,0x000000a3,
0x000000a2,0x0000001e,0x00050085,0x00000006,
0x000000a4,0x000000a0,0x000000a3,0x000200fe,
0x000000a4,0x00010038}

View File

@ -1,66 +1,15 @@
#version 310 es
precision highp float;
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(std140, set = 0, binding = 0) uniform UBO
{
float time;
} constants;
layout(location = 0) out vec4 FragColor;
vec2 res = vec2(1920*3, 1080*3);
// High quality = larger patterns
// quality * 84 is the number of seconds in a loop
float quality = 8.0;
float Cellular2D(vec2 P) {
// https://github.com/BrianSharpe/Wombat/blob/master/Cellular2D.glsl
vec2 Pi = floor(P);
vec2 Pf = P - Pi;
vec2 Pt = vec2( Pi.x, Pi.y + 1.0 );
Pt = Pt - floor(Pt * ( 1.0 / 71.0 )) * 71.0;
Pt += vec2( 26.0, 161.0 ).xy;
Pt *= Pt;
Pt = Pt.xy * Pt.yx;
float hash_x = fract( Pt * ( 1.0 / 951.135664 ) ).x * 2.0 - 1.0;
float hash_y = fract( Pt * ( 1.0 / 642.949883 ) ).y * 2.0 - 1.0;
const float JITTER_WINDOW = 0.25;
hash_x = ( ( hash_x * hash_x * hash_x ) - sign( hash_x ) ) * JITTER_WINDOW;
hash_y = ( ( hash_y * hash_y * hash_y ) - sign( hash_y ) ) * JITTER_WINDOW;
vec2 dd = vec2(Pf.x - hash_x, Pf.y - hash_y);
float d = dd.x * dd.x + dd.y * dd.y;
return d * ( 1.0 / 1.125 );
}
float snow(vec2 pos, float time, float scale) {
// add wobble
pos.x += cos(pos.y*4.0 + time*3.14159*2.0 + 1.0/scale)/(8.0/scale);
// add gravity
pos += time*scale*vec2(-0.5, 1.0);
return max(
1.0 - Cellular2D(mod(pos/scale, scale*quality)*16.0)*1024.0,
0.0
) * (scale*0.5 + 0.5);
}
mat4 MVP;
} global;
void main()
{
float winscale = max(res.x, res.y);
float tim = mod(constants.time/800.0, 84.0*quality);
vec2 pos = gl_FragCoord.xy/winscale;
float a = 0.0;
// Each of these is a layer of snow
// Remove some for better performance
// Changing the scale (3rd value) will mess with the looping
a += snow(pos, tim, 1.0);
a += snow(pos, tim, 0.7);
a += snow(pos, tim, 0.6);
a += snow(pos, tim, 0.5);
a += snow(pos, tim, 0.4);
a += snow(pos, tim, 0.3);
a += snow(pos, tim, 0.25);
a += snow(pos, tim, 0.125);
a = a * min(pos.y*4.0, 1.0);
FragColor = vec4(1.0, 1.0, 1.0, a);
gl_Position = global.MVP * vec4(TexCoord, 0.0, 1.0);
vTexCoord = TexCoord;
}

View File

@ -0,0 +1,75 @@
{0x07230203,0x00010000,0x00080001,0x00000025,
0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,
0x0009000f,0x00000000,0x00000004,0x6e69616d,
0x00000000,0x0000000a,0x00000016,0x00000021,
0x00000024,0x00030003,0x00000001,0x00000136,
0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,
0x74735f70,0x5f656c79,0x656e696c,0x7269645f,
0x69746365,0x00006576,0x00080004,0x475f4c47,
0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65,
0x74636572,0x00657669,0x00040005,0x00000004,
0x6e69616d,0x00000000,0x00060005,0x00000008,
0x505f6c67,0x65567265,0x78657472,0x00000000,
0x00060006,0x00000008,0x00000000,0x505f6c67,
0x7469736f,0x006e6f69,0x00070006,0x00000008,
0x00000001,0x505f6c67,0x746e696f,0x657a6953,
0x00000000,0x00030005,0x0000000a,0x00000000,
0x00030005,0x0000000e,0x004f4255,0x00040006,
0x0000000e,0x00000000,0x0050564d,0x00040005,
0x00000010,0x626f6c67,0x00006c61,0x00050005,
0x00000016,0x43786554,0x64726f6f,0x00000000,
0x00050005,0x00000021,0x78655476,0x726f6f43,
0x00000064,0x00050005,0x00000024,0x69736f50,
0x6e6f6974,0x00000000,0x00050048,0x00000008,
0x00000000,0x0000000b,0x00000000,0x00050048,
0x00000008,0x00000001,0x0000000b,0x00000001,
0x00030047,0x00000008,0x00000002,0x00040048,
0x0000000e,0x00000000,0x00000005,0x00050048,
0x0000000e,0x00000000,0x00000023,0x00000000,
0x00050048,0x0000000e,0x00000000,0x00000007,
0x00000010,0x00030047,0x0000000e,0x00000002,
0x00040047,0x00000010,0x00000022,0x00000000,
0x00040047,0x00000010,0x00000021,0x00000000,
0x00040047,0x00000016,0x0000001e,0x00000001,
0x00040047,0x00000021,0x0000001e,0x00000000,
0x00040047,0x00000024,0x0000001e,0x00000000,
0x00020013,0x00000002,0x00030021,0x00000003,
0x00000002,0x00030016,0x00000006,0x00000020,
0x00040017,0x00000007,0x00000006,0x00000004,
0x0004001e,0x00000008,0x00000007,0x00000006,
0x00040020,0x00000009,0x00000003,0x00000008,
0x0004003b,0x00000009,0x0000000a,0x00000003,
0x00040015,0x0000000b,0x00000020,0x00000001,
0x0004002b,0x0000000b,0x0000000c,0x00000000,
0x00040018,0x0000000d,0x00000007,0x00000004,
0x0003001e,0x0000000e,0x0000000d,0x00040020,
0x0000000f,0x00000002,0x0000000e,0x0004003b,
0x0000000f,0x00000010,0x00000002,0x00040020,
0x00000011,0x00000002,0x0000000d,0x00040017,
0x00000014,0x00000006,0x00000002,0x00040020,
0x00000015,0x00000001,0x00000014,0x0004003b,
0x00000015,0x00000016,0x00000001,0x0004002b,
0x00000006,0x00000018,0x00000000,0x0004002b,
0x00000006,0x00000019,0x3f800000,0x00040020,
0x0000001e,0x00000003,0x00000007,0x00040020,
0x00000020,0x00000003,0x00000014,0x0004003b,
0x00000020,0x00000021,0x00000003,0x00040020,
0x00000023,0x00000001,0x00000007,0x0004003b,
0x00000023,0x00000024,0x00000001,0x00050036,
0x00000002,0x00000004,0x00000000,0x00000003,
0x000200f8,0x00000005,0x00050041,0x00000011,
0x00000012,0x00000010,0x0000000c,0x0004003d,
0x0000000d,0x00000013,0x00000012,0x0004003d,
0x00000014,0x00000017,0x00000016,0x00050051,
0x00000006,0x0000001a,0x00000017,0x00000000,
0x00050051,0x00000006,0x0000001b,0x00000017,
0x00000001,0x00070050,0x00000007,0x0000001c,
0x0000001a,0x0000001b,0x00000018,0x00000019,
0x00050091,0x00000007,0x0000001d,0x00000013,
0x0000001c,0x00050041,0x0000001e,0x0000001f,
0x0000000a,0x0000000c,0x0003003e,0x0000001f,
0x0000001d,0x0004003d,0x00000014,0x00000022,
0x00000016,0x0003003e,0x00000021,0x00000022,
0x000100fd,0x00010038}

View File

@ -13,6 +13,7 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>

View File

@ -332,7 +332,9 @@ static bool gfx_ctx_x_set_resize(void *data,
static void *gfx_ctx_x_init(void *data)
{
int nelements, major, minor;
int nelements = 0;
int major = 0;
int minor = 0;
#ifdef HAVE_OPENGL
static const int visual_attribs[] = {
GLX_X_RENDERABLE , True,

View File

@ -1941,9 +1941,6 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
int padding_y = 0;
settings_t *settings = config_get_ptr();
if (!vp)
return;
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
{
struct video_viewport *custom = video_viewport_get_custom();

View File

@ -17,6 +17,7 @@
#include <stdlib.h>
#include <file/file_path.h>
#include <file/config_file_userdata.h>
#include <lists/dir_list.h>
#include <dynamic/dylib.h>
#include <features/features_cpu.h>
@ -28,7 +29,6 @@
#endif
#include "../frontend/frontend_driver.h"
#include "../config_file_userdata.h"
#include "../dynamic.h"
#include "../performance_counters.h"
#include "../verbosity.h"

View File

@ -122,7 +122,7 @@ CONFIG FILE
#endif
#include "../libretro-common/file/config_file.c"
#include "../config_file_userdata.c"
#include "../libretro-common/file/config_file_userdata.c"
#include "../managers/core_option_manager.c"
/*============================================================
@ -556,11 +556,13 @@ FIFO BUFFER
/*============================================================
AUDIO RESAMPLER
============================================================ */
#include "../audio/audio_resampler_driver.c"
#include "../audio/drivers_resampler/sinc_resampler.c"
#include "../audio/drivers_resampler/nearest_resampler.c"
#include "../audio/drivers_resampler/null_resampler.c"
#include "../libretro-common/audio/resampler/audio_resampler.c"
#include "../libretro-common/audio/resampler/drivers/sinc_resampler.c"
#include "../libretro-common/audio/resampler/drivers/nearest_resampler.c"
#include "../libretro-common/audio/resampler/drivers/null_resampler.c"
#ifdef HAVE_CC_RESAMPLER
#include "../audio/drivers_resampler/cc_resampler.c"
#endif
/*============================================================
CAMERA
@ -933,6 +935,7 @@ MENU
#include "../menu/menu_cbs.c"
#include "../menu/menu_content.c"
#include "../menu/widgets/menu_entry.c"
#include "../menu/widgets/menu_filebrowser.c"
#include "../menu/widgets/menu_dialog.c"
#include "../menu/widgets/menu_input_dialog.c"
#include "../menu/widgets/menu_input_bind_dialog.c"
@ -1078,8 +1081,8 @@ XML
/*============================================================
AUDIO UTILS
============================================================ */
#include "../libretro-common/conversion/s16_to_float.c"
#include "../libretro-common/conversion/float_to_s16.c"
#include "../libretro-common/audio/conversion/s16_to_float.c"
#include "../libretro-common/audio/conversion/float_to_s16.c"
/*============================================================
LIBRETRODB

View File

@ -160,6 +160,10 @@ UI
#include "../ui/drivers/qt/ui_qt_application.cpp"
#endif
#if defined(HAVE_QT_WRAPPER)
#include "../ui/drivers/ui_qt.cpp"
#endif
/*============================================================
VIDEO DRIVER
============================================================ */

View File

@ -116,6 +116,14 @@ int32_t pad_connection_pad_init(joypad_connection_t *joyconn,
break;
}
}
//We failed to find a matching pad, set up one without an iface
if (!s->connected)
{
s->iface = NULL;
s->data = data;
s->connected = true;
}
}
return pad;

View File

@ -642,6 +642,7 @@ static void handle_hotplug(android_input_data_t *android_data,
char device_name[256];
char device_model[256];
char name_buf[256];
autoconfig_params_t params = {{0}};
int vendorId = 0;
int productId = 0;
settings_t *settings = config_get_ptr();
@ -889,25 +890,14 @@ static void handle_hotplug(android_input_data_t *android_data,
if (*port < 0)
*port = android_data->pads_connected;
if (settings->input.autodetect_enable)
{
autoconfig_params_t params = {{0}};
strlcpy(params.name, name_buf, sizeof(params.name));
RARCH_LOG("Pads Connected: %d Port: %d\n %s VID/PID: %d/%d\n",
android_data->pads_connected, *port, name_buf,
params.vid, params.pid);
params.idx = *port;
params.vid = vendorId;
params.pid = productId;
strlcpy(params.name, name_buf, sizeof(params.name));
params.idx = *port;
params.vid = vendorId;
params.pid = productId;
settings->input.pid[*port] = params.pid;
settings->input.vid[*port] = params.vid;
strlcpy(params.driver, android_joypad.ident, sizeof(params.driver));
input_autoconfigure_connect(&params);
}
strlcpy(params.driver, android_joypad.ident, sizeof(params.driver));
input_autoconfigure_connect(&params);
if (!string_is_empty(name_buf))
{
@ -1031,7 +1021,8 @@ static bool android_input_key_pressed(void *data, int key)
android_input_t *android = (android_input_t*)data;
settings_t *settings = config_get_ptr();
if(settings->input.binds[0][key].valid && android_keyboard_port_input_pressed(settings->input.binds[0],key))
if( settings->input.binds[0][key].valid
&& android_keyboard_port_input_pressed(settings->input.binds[0],key))
return true;
if (settings->input.binds[0][key].valid &&

View File

@ -176,8 +176,7 @@ static void qnx_process_gamepad_event(
static void qnx_input_autodetect_gamepad(qnx_input_t *qnx,
qnx_input_device_t* controller, int port)
{
char name_buf[256] = {0};
settings_t *settings = config_get_ptr();
char name_buf[256];
if (!qnx)
return;
@ -210,9 +209,6 @@ static void qnx_input_autodetect_gamepad(qnx_input_t *qnx,
{
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[port],
name_buf, sizeof(settings->input.device_names[port]));
strlcpy(params.name, name_buf, sizeof(params.name));
params.idx = port;

View File

@ -45,14 +45,13 @@ typedef struct sdl_input
static void *sdl_input_init(void)
{
settings_t *settings;
sdl_input_t *sdl;
input_keymaps_init_keyboard_lut(rarch_key_map_sdl);
settings = config_get_ptr();
sdl = (sdl_input_t*)calloc(1, sizeof(*sdl));
settings_t *settings = config_get_ptr();
sdl_input_t *sdl = (sdl_input_t*)calloc(1, sizeof(*sdl));
if (!sdl)
return NULL;
input_keymaps_init_keyboard_lut(rarch_key_map_sdl);
sdl->joypad = input_joypad_init_driver(settings->input.joypad_driver, sdl);
RARCH_LOG("[SDL]: Input driver initialized.\n");

View File

@ -1372,9 +1372,6 @@ static bool btstack_hid_joypad_button(void *data, unsigned port, uint16_t joykey
{
uint64_t buttons = btstack_hid_joypad_get_buttons(data, port);
if (joykey == NO_BTN)
return false;
/* Check hat. */
if (GET_HAT_DIR(joykey))
return false;

View File

@ -21,11 +21,12 @@
#include <IOKit/hid/IOHIDManager.h>
#include <IOKit/hid/IOHIDKeys.h>
#include <retro_miscellaneous.h>
#include "../connect/joypad_connection.h"
#include "../input_defines.h"
#include "../../tasks/tasks_internal.h"
#include "../input_hid_driver.h"
#include "../../configuration.h"
#include "../../verbosity.h"
typedef struct apple_hid
@ -73,9 +74,6 @@ static bool iohidmanager_hid_joypad_button(void *data,
iohidmanager_hid_joypad_get_buttons(data, port);
iohidmanager_hid_t *hid = (iohidmanager_hid_t*)data;
if (joykey == NO_BTN)
return false;
/* Check hat. */
if (GET_HAT_DIR(joykey))
return false;
@ -306,7 +304,7 @@ static void iohidmanager_hid_device_add_autodetect(unsigned idx,
params.vid = dev_vid;
params.pid = dev_pid;
strlcpy(params.name, device_name, sizeof(params.name));
strlcpy(params.name, device_name, sizeof(params.name));
strlcpy(params.driver, driver_name, sizeof(params.driver));
input_autoconfigure_connect(&params);
@ -319,8 +317,6 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
{
IOReturn ret;
uint16_t dev_vid, dev_pid;
settings_t *settings = config_get_ptr();
iohidmanager_hid_t *hid = (iohidmanager_hid_t*)
hid_driver_get_data();
struct iohidmanager_hid_adapter *adapter = (struct iohidmanager_hid_adapter*)
@ -370,9 +366,6 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
if (string_is_empty(adapter->name))
goto error;
strlcpy(settings->input.device_names[adapter->slot],
adapter->name, sizeof(settings->input.device_names[adapter->slot]));
iohidmanager_hid_device_add_autodetect(adapter->slot,
adapter->name, iohidmanager_hid.ident, dev_vid, dev_pid);

View File

@ -442,9 +442,6 @@ static bool libusb_hid_joypad_button(void *data,
{
uint64_t buttons = libusb_hid_joypad_get_buttons(data, port);
if (joykey == NO_BTN)
return false;
/* Check hat. */
if (GET_HAT_DIR(joykey))
return false;

View File

@ -140,7 +140,6 @@ static void wiiusb_hid_device_add_autodetect(unsigned idx,
uint16_t dev_vid, uint16_t dev_pid)
{
autoconfig_params_t params = {{0}};
settings_t *settings = config_get_ptr();
params.idx = idx;
params.vid = dev_vid;
@ -149,9 +148,6 @@ static void wiiusb_hid_device_add_autodetect(unsigned idx,
strlcpy(params.name, device_name, sizeof(params.name));
strlcpy(params.driver, driver_name, sizeof(params.driver));
strlcpy(settings->input.device_names[idx], device_name,
sizeof(settings->input.device_names[idx]));
input_autoconfigure_connect(&params);
}
@ -493,9 +489,6 @@ static bool wiiusb_hid_joypad_button(void *data, unsigned port, uint16_t joykey)
{
uint64_t buttons = wiiusb_hid_joypad_get_buttons(data, port);
if (joykey == NO_BTN)
return false;
/* Check hat. */
if (GET_HAT_DIR(joykey))
return false;

View File

@ -31,19 +31,22 @@ static bool android_joypad_init(void *data)
static bool android_joypad_button(unsigned port, uint16_t joykey)
{
uint8_t *buf = android_keyboard_state_get(port);
unsigned hat_dir = 0;
uint8_t *buf = android_keyboard_state_get(port);
struct android_app *android_app = (struct android_app*)g_android;
if (port >= MAX_PADS)
return false;
if (GET_HAT_DIR(joykey))
hat_dir = GET_HAT_DIR(joykey);
if (hat_dir)
{
unsigned h = GET_HAT(joykey);
if (h > 0)
return false;
switch (GET_HAT_DIR(joykey))
switch (hat_dir)
{
case HAT_LEFT_MASK:
return android_app->hat_state[port][0] == -1;

View File

@ -45,13 +45,8 @@ static const char *ctr_joypad_name(unsigned pad)
static void ctr_joypad_autodetect_add(unsigned autoconf_pad)
{
settings_t *settings = config_get_ptr();
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[autoconf_pad],
ctr_joypad_name(autoconf_pad),
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, ctr_joypad_name(autoconf_pad), sizeof(params.name));

View File

@ -266,10 +266,6 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p)
{
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[g_joypad_cnt],
dinput_joypad_name(g_joypad_cnt),
sizeof(settings->input.device_names[g_joypad_cnt]));
strlcpy(params.name,
dinput_joypad_name(g_joypad_cnt),
sizeof(params.name));
@ -285,9 +281,6 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p)
params.pid = dinput_joypad_pid(g_joypad_cnt);
input_autoconfigure_connect(&params);
settings->input.pid[g_joypad_cnt] = params.pid;
settings->input.vid[g_joypad_cnt] = params.vid;
}
#ifdef HAVE_XINPUT
@ -324,17 +317,16 @@ static bool dinput_joypad_init(void *data)
static bool dinput_joypad_button(unsigned port_num, uint16_t joykey)
{
const struct dinput_joypad *pad = NULL;
if (joykey == NO_BTN)
unsigned hat_dir = 0;
const struct dinput_joypad *pad = &g_pads[port_num];
if (!pad || !pad->joypad)
return false;
pad = &g_pads[port_num];
if (!pad->joypad)
return false;
hat_dir = GET_HAT_DIR(joykey);
/* Check hat. */
if (GET_HAT_DIR(joykey))
if (hat_dir)
{
unsigned pov;
unsigned hat = GET_HAT(joykey);
@ -349,7 +341,7 @@ static bool dinput_joypad_button(unsigned port_num, uint16_t joykey)
/* Magic numbers I'm not sure where originate from. */
if (pov < 36000)
{
switch (GET_HAT_DIR(joykey))
switch (hat_dir)
{
case HAT_UP_MASK:
return (pov >= 31500) || (pov <= 4500);

View File

@ -145,14 +145,6 @@ static void handle_hotplug(unsigned port, uint32_t ptype)
if (ptype != WPAD_EXP_NOCONTROLLER)
{
autoconfig_params_t params = {{0}};
settings_t *settings = config_get_ptr();
if (!settings->input.autodetect_enable)
return;
strlcpy(settings->input.device_names[port],
gx_joypad_name(port),
sizeof(settings->input.device_names[port]));
/* TODO - implement VID/PID? */
params.idx = port;
@ -503,14 +495,18 @@ static bool gx_joypad_query_pad(unsigned pad)
static void gx_joypad_destroy(void)
{
#ifdef HW_RVL
#if 0
int i;
for (i = 0; i < MAX_PADS; i++)
{
// Commenting this out fixes the Wii remote not reconnecting after core load, exit, etc.
// WPAD_Flush(i);
// WPADDisconnect(i);
/* Commenting this out fixes the Wii
* remote not reconnecting after
* core load, exit, etc. */
WPAD_Flush(i);
WPADDisconnect(i);
}
#endif
#endif
}
input_device_driver_t gx_joypad = {

View File

@ -207,9 +207,6 @@ static void apple_gamecontroller_joypad_destroy(void)
static bool apple_gamecontroller_joypad_button(unsigned port, uint16_t joykey)
{
if (joykey == NO_BTN)
return false;
/* Check hat. */
if (GET_HAT_DIR(joykey))
return false;

View File

@ -43,11 +43,7 @@ static const char *ps3_joypad_name(unsigned pad)
static void ps3_joypad_autodetect_add(unsigned autoconf_pad)
{
settings_t *settings = config_get_ptr();
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[autoconf_pad],
"SixAxis Controller",
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;

View File

@ -72,13 +72,8 @@ static const char *psp_joypad_name(unsigned pad)
static void psp_joypad_autodetect_add(unsigned autoconf_pad)
{
settings_t *settings = config_get_ptr();
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[autoconf_pad],
psp_joypad_name(autoconf_pad),
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, psp_joypad_name(autoconf_pad), sizeof(params.name));

View File

@ -28,7 +28,6 @@ static const char *qnx_joypad_name(unsigned pad)
static bool qnx_joypad_init(void *data)
{
unsigned autoconf_pad;
settings_t *settings = config_get_ptr();
(void)data;
@ -36,9 +35,6 @@ static bool qnx_joypad_init(void *data)
{
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[autoconf_pad], "None",
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, qnx_joypad_name(autoconf_pad), sizeof(params.name));

View File

@ -98,7 +98,6 @@ static void sdl_pad_connect(unsigned id)
bool success = false;
int32_t product = 0;
int32_t vendor = 0;
settings_t *settings = config_get_ptr();
autoconfig_params_t params = {{0}};
#ifdef HAVE_SDL2
@ -131,8 +130,6 @@ static void sdl_pad_connect(unsigned id)
return;
}
strlcpy(settings->input.device_names[id], sdl_pad_name(id), sizeof(settings->input.device_names[id]));
#ifdef HAVE_SDL2
guid = SDL_JoystickGetGUID(pad->joypad);
guid_ptr = (uint16_t*)guid.data;
@ -202,7 +199,6 @@ static void sdl_pad_connect(unsigned id)
static void sdl_pad_disconnect(unsigned id)
{
settings_t *settings = config_get_ptr();
#ifdef HAVE_SDL2
if (sdl_pads[id].haptic)
SDL_HapticClose(sdl_pads[id].haptic);
@ -220,8 +216,6 @@ static void sdl_pad_disconnect(unsigned id)
input_autoconfigure_disconnect(id, sdl_joypad.ident);
}
settings->input.device_names[id][0] = '\0';
memset(&sdl_pads[id], 0, sizeof(sdl_pads[id]));
}
@ -289,25 +283,24 @@ error:
static bool sdl_joypad_button(unsigned port, uint16_t joykey)
{
sdl_joypad_t *pad = NULL;
if (joykey == NO_BTN)
return false;
pad = (sdl_joypad_t*)&sdl_pads[port];
if (!pad->joypad)
unsigned hat_dir = 0;
sdl_joypad_t *pad = (sdl_joypad_t*)&sdl_pads[port];
if (!pad || !pad->joypad)
return false;
hat_dir = GET_HAT_DIR(joykey);
/* Check hat. */
if (GET_HAT_DIR(joykey))
if (hat_dir)
{
uint8_t dir;
uint16_t hat = GET_HAT(joykey);
if (hat >= pad->num_hats)
return false;
dir = sdl_pad_get_hat(pad, hat);
switch (GET_HAT_DIR(joykey))
switch (hat_dir)
{
case HAT_UP_MASK:
return dir & SDL_HAT_UP;
@ -333,7 +326,7 @@ static bool sdl_joypad_button(unsigned port, uint16_t joykey)
static int16_t sdl_joypad_axis(unsigned port, uint32_t joyaxis)
{
sdl_joypad_t *pad;
int16_t val;
int16_t val = 0;
if (joyaxis == AXIS_NONE)
return 0;
@ -342,7 +335,6 @@ static int16_t sdl_joypad_axis(unsigned port, uint32_t joyaxis)
if (!pad->joypad)
return false;
val = 0;
if (AXIS_NEG_GET(joyaxis) < pad->num_axes)
{
val = sdl_pad_get_axis(pad, AXIS_NEG_GET(joyaxis));
@ -391,9 +383,9 @@ static void sdl_joypad_poll(void)
#ifdef HAVE_SDL2
static bool sdl_joypad_set_rumble(unsigned pad, enum retro_rumble_effect effect, uint16_t strength)
{
SDL_HapticEffect efx;
sdl_joypad_t *joypad = (sdl_joypad_t*)&sdl_pads[pad];
SDL_HapticEffect efx;
memset(&efx, 0, sizeof(efx));
if (!joypad->joypad || !joypad->haptic)

View File

@ -83,8 +83,8 @@ struct udev_joypad
int32_t pid;
};
static struct udev *udev_joypad_fd;
static struct udev_monitor *udev_joypad_mon;
static struct udev *udev_joypad_fd = NULL;
static struct udev_monitor *udev_joypad_mon = NULL;
static struct udev_joypad udev_pads[MAX_USERS];
static INLINE int16_t udev_compute_axis(const struct input_absinfo *info, int value)
@ -286,11 +286,9 @@ static int udev_add_pad(struct udev_device *dev, unsigned p, int fd, const char
params.idx = p;
params.vid = pad->vid;
params.pid = pad->pid;
settings->input.pid[p] = params.pid;
settings->input.vid[p] = params.vid;
strlcpy(settings->input.device_names[p], params.name, sizeof(settings->input.device_names[p]));
strlcpy(params.driver, udev_joypad.ident, sizeof(params.driver));
strlcpy(params.driver, udev_joypad.ident,
sizeof(params.driver));
input_autoconfigure_connect(&params);
ret = 1;
@ -304,7 +302,9 @@ static int udev_add_pad(struct udev_device *dev, unsigned p, int fd, const char
p, path);
if (ioctl(fd, EVIOCGEFFECTS, &pad->num_effects) >= 0)
RARCH_LOG("[udev]: Pad #%u (%s) supports %d force feedback effects.\n", p, path, pad->num_effects);
RARCH_LOG(
"[udev]: Pad #%u (%s) supports %d force feedback effects.\n",
p, path, pad->num_effects);
}
return ret;
@ -324,7 +324,9 @@ static void udev_check_device(struct udev_device *dev, const char *path)
{
if (st.st_rdev == udev_pads[i].device)
{
RARCH_LOG("[udev]: Device ID %u is already plugged.\n", (unsigned)st.st_rdev);
RARCH_LOG(
"[udev]: Device ID %u is already plugged.\n",
(unsigned)st.st_rdev);
return;
}
}
@ -427,7 +429,8 @@ end:
udev_device_unref(dev);
}
static bool udev_set_rumble(unsigned i, enum retro_rumble_effect effect, uint16_t strength)
static bool udev_set_rumble(unsigned i,
enum retro_rumble_effect effect, uint16_t strength)
{
int old_effect;
uint16_t old_strength;
@ -530,7 +533,8 @@ static bool udev_joypad_init(void *data)
udev_joypad_mon = udev_monitor_new_from_netlink(udev_joypad_fd, "udev");
if (udev_joypad_mon)
{
udev_monitor_filter_add_match_subsystem_devtype(udev_joypad_mon, "input", NULL);
udev_monitor_filter_add_match_subsystem_devtype(
udev_joypad_mon, "input", NULL);
udev_monitor_enable_receiving(udev_joypad_mon);
}
@ -561,14 +565,15 @@ error:
return false;
}
static bool udev_joypad_hat(const struct udev_joypad *pad, uint16_t hat)
static bool udev_joypad_button_hat(const void *data, uint16_t joykey, unsigned hat_dir)
{
unsigned h = GET_HAT(hat);
const struct udev_joypad *pad = (const struct udev_joypad*)data;
unsigned h = GET_HAT(joykey);
if (h >= NUM_HATS)
return false;
switch (GET_HAT_DIR(hat))
switch (hat_dir)
{
case HAT_LEFT_MASK:
return pad->hats[h][0] < 0;
@ -586,9 +591,10 @@ static bool udev_joypad_hat(const struct udev_joypad *pad, uint16_t hat)
static bool udev_joypad_button(unsigned port, uint16_t joykey)
{
const struct udev_joypad *pad = (const struct udev_joypad*)&udev_pads[port];
unsigned hat_dir = GET_HAT_DIR(joykey);
if (GET_HAT_DIR(joykey))
return udev_joypad_hat(pad, joykey);
if (hat_dir)
return udev_joypad_button_hat(pad, joykey, hat_dir);
return joykey < UDEV_NUM_BUTTONS && BIT64_GET(pad->buttons, joykey);
}

View File

@ -47,16 +47,8 @@ static const char *wiiu_joypad_name(unsigned pad)
static void wiiu_joypad_autodetect_add(unsigned autoconf_pad)
{
settings_t *settings = config_get_ptr();
autoconfig_params_t params = {{0}};
if (!settings->input.autodetect_enable)
return;
strlcpy(settings->input.device_names[autoconf_pad],
wiiu_joypad_name(autoconf_pad),
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, wiiu_joypad_name(autoconf_pad), sizeof(params.name));

View File

@ -47,10 +47,6 @@ static void xdk_joypad_autodetect_add(unsigned autoconf_pad)
autoconfig_params_t params = {{0}};
settings_t *settings = config_get_ptr();
strlcpy(settings->input.device_names[autoconf_pad],
"XInput Controller",
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, xdk_joypad_name(autoconf_pad), sizeof(params.name));

View File

@ -258,10 +258,6 @@ static bool xinput_joypad_init(void *data)
{
autoconfig_params_t params = {{0}};
strlcpy(settings->input.device_names[autoconf_pad],
xinput_joypad_name(autoconf_pad),
sizeof(settings->input.device_names[autoconf_pad]));
/* TODO - implement VID/PID? */
params.idx = autoconf_pad;
strlcpy(params.name, xinput_joypad_name(autoconf_pad), sizeof(params.name));
@ -318,14 +314,11 @@ static const uint16_t button_index_to_bitmap_code[] = {
static bool xinput_joypad_button(unsigned port_num, uint16_t joykey)
{
uint16_t btn_word;
int xuser;
uint16_t btn_word = 0;
unsigned num_buttons = 0;
unsigned hat_dir = 0;
int xuser = pad_index_to_xuser_index(port_num);
if (joykey == NO_BTN)
return false;
xuser = pad_index_to_xuser_index(port_num);
if (xuser == -1)
return dinput_joypad.button(port_num, joykey);
@ -333,10 +326,11 @@ static bool xinput_joypad_button(unsigned port_num, uint16_t joykey)
return false;
btn_word = g_xinput_states[xuser].xstate.Gamepad.wButtons;
hat_dir = GET_HAT_DIR(joykey);
if (GET_HAT_DIR(joykey))
if (hat_dir)
{
switch (GET_HAT_DIR(joykey))
switch (hat_dir)
{
case HAT_UP_MASK:
return btn_word & XINPUT_GAMEPAD_DPAD_UP;
@ -347,6 +341,7 @@ static bool xinput_joypad_button(unsigned port_num, uint16_t joykey)
case HAT_RIGHT_MASK:
return btn_word & XINPUT_GAMEPAD_DPAD_RIGHT;
}
return false; /* hat requested and no hat button down. */
}

View File

@ -21,6 +21,7 @@
#include <compat/strl.h>
#include <file/file_path.h>
#include <file/config_file.h>
#include <string/stdstring.h>
#ifdef HAVE_CONFIG_H
@ -181,12 +182,13 @@ const char *input_config_bind_map_get_desc(unsigned i)
return msg_hash_to_str(keybind->desc);
}
void input_config_parse_key(config_file_t *conf,
void input_config_parse_key(void *data,
const char *prefix, const char *btn,
struct retro_keybind *bind)
{
char tmp[64];
char key[64];
config_file_t *conf = (config_file_t*)data;
tmp[0] = key[0] = '\0';
@ -290,7 +292,7 @@ static void parse_hat(struct retro_keybind *bind, const char *str)
bind->joykey = HAT_MAP(hat, hat_dir);
}
void input_config_parse_joy_button(config_file_t *conf, const char *prefix,
void input_config_parse_joy_button(void *data, const char *prefix,
const char *btn, struct retro_keybind *bind)
{
char str[256];
@ -298,6 +300,7 @@ void input_config_parse_joy_button(config_file_t *conf, const char *prefix,
char key[64];
char key_label[64] = {0};
char *tmp_a = NULL;
config_file_t *conf = (config_file_t*)data;
str[0] = tmp[0] = key[0] = '\0';
@ -329,14 +332,15 @@ void input_config_parse_joy_button(config_file_t *conf, const char *prefix,
}
}
void input_config_parse_joy_axis(config_file_t *conf, const char *prefix,
void input_config_parse_joy_axis(void *data, const char *prefix,
const char *axis, struct retro_keybind *bind)
{
char str[256];
char tmp[64];
char key[64];
char key_label[64];
char *tmp_a = NULL;
char *tmp_a = NULL;
config_file_t *conf = (config_file_t*)data;
str[0] = tmp[0] = key[0] = key_label[0] = '\0';

View File

@ -19,8 +19,6 @@
#include <stdint.h>
#include <file/config_file.h>
#include "input_driver.h"
const char *input_config_bind_map_get_base(unsigned i);
@ -59,14 +57,14 @@ const char *input_config_get_prefix(unsigned user, bool meta);
**/
unsigned input_config_translate_str_to_bind_id(const char *str);
void input_config_parse_key(config_file_t *conf,
void input_config_parse_key(void *data,
const char *prefix, const char *btn,
struct retro_keybind *bind);
void input_config_parse_joy_button(config_file_t *conf, const char *prefix,
void input_config_parse_joy_button(void *data, const char *prefix,
const char *btn, struct retro_keybind *bind);
void input_config_parse_joy_axis(config_file_t *conf, const char *prefix,
void input_config_parse_joy_axis(void *data, const char *prefix,
const char *axis, struct retro_keybind *bind);
const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned id);

View File

@ -499,6 +499,7 @@ static INLINE bool input_menu_keys_pressed_internal(unsigned i)
{
int port;
int port_max = 1;
if (settings->input.all_users_control_menu)
port_max = settings->input.max_users;
@ -509,16 +510,10 @@ static INLINE bool input_menu_keys_pressed_internal(unsigned i)
const input_device_driver_t *sec = current_input->get_sec_joypad_driver
? current_input->get_sec_joypad_driver(current_input_data) : NULL;
if (sec)
{
if (input_joypad_pressed(sec, port, settings->input.binds[0], i))
return true;
}
if (first)
{
if (input_joypad_pressed(first, port, settings->input.binds[0], i))
return true;
}
if (sec && input_joypad_pressed(sec, port, settings->input.binds[0], i))
return true;
if (first && input_joypad_pressed(first, port, settings->input.binds[0], i))
return true;
}
}
@ -585,6 +580,13 @@ uint64_t input_menu_keys_pressed(
if (!current_input || !current_input_data)
goto end;
if (settings->menu.unified_controls)
return input_keys_pressed(
old_input,
last_input,
trigger_input,
runloop_paused);
for (i = 0; i < settings->input.max_users; i++)
{
struct retro_keybind *auto_binds = settings->input.autoconf_binds[i];
@ -783,17 +785,17 @@ uint64_t input_keys_pressed(
bool runloop_paused)
{
unsigned i;
uint64_t ret = 0;
settings_t *settings = config_get_ptr();
const struct retro_keybind *binds = settings->input.binds[0];
const struct retro_keybind *binds_auto = &settings->input.autoconf_binds[0][RARCH_ENABLE_HOTKEY];
const struct retro_keybind *normal = &binds[RARCH_ENABLE_HOTKEY];
uint64_t ret = 0;
settings_t *settings = config_get_ptr();
const struct retro_keybind *binds = settings->input.binds[0];
const struct retro_keybind *binds_auto = &settings->input.autoconf_binds[0][RARCH_ENABLE_HOTKEY];
const struct retro_keybind *normal = &binds[RARCH_ENABLE_HOTKEY];
const struct retro_keybind *focus_binds_auto = &settings->input.autoconf_binds[0][RARCH_GAME_FOCUS_TOGGLE];
const struct retro_keybind *focus_normal = &binds[RARCH_GAME_FOCUS_TOGGLE];
input_driver_block_libretro_input = false;
input_driver_block_hotkey = false;
input_driver_block_libretro_input = false;
input_driver_block_hotkey = false;
/* Don't block the check to RARCH_ENABLE_HOTKEY
* unless we're really supposed to. */

View File

@ -250,7 +250,7 @@ bool input_joypad_pressed(
uint64_t joykey = (binds[key].joykey != NO_BTN)
? binds[key].joykey : auto_binds[key].joykey;
if (!drv->button(joy_idx, (uint16_t)joykey))
if ((uint16_t)joykey == NO_BTN || !drv->button(joy_idx, (uint16_t)joykey))
{
uint32_t joyaxis = (binds[key].joyaxis != AXIS_NONE)
? binds[key].joyaxis : auto_binds[key].joyaxis;

View File

@ -1,4 +1,4 @@
/* RetroArch - A frontend for libretro.
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2016 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
@ -23,6 +23,11 @@
#include "../configuration.h"
#include "../verbosity.h"
#if defined(_MSC_VER) && !defined(_XBOX)
/* https://support.microsoft.com/en-us/kb/980263 */
#pragma execution_character_set("utf-8")
#endif
int menu_hash_get_help_chs_enum(enum msg_hash_enums msg, char *s, size_t len)
{
uint32_t driver_hash = 0;
@ -2116,8 +2121,8 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg)
return "选择数据库";
case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY:
return "移除";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "选择文件并探测核心";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "选择文件并探测核心"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<游戏内容目录>";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -2452,8 +2457,6 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg)
return "线性";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "使用核心加载压缩包";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "选择文件";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "加载最近的游戏内容";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -103,24 +103,6 @@ int menu_hash_get_help_de_enum(enum msg_hash_enums msg, char *s, size_t len)
break;
}
break;
case MENU_ENUM_LABEL_LOAD_CONTENT:
snprintf(s, len,
"Lade Content. \n"
"Suche nach Content. \n"
" \n"
"Um Content zu laden benötigst du den passenden \n"
"Libretro-Core und die Content-Datei. \n"
" \n"
"Um einzustellen, welcher Ordner standardmäßig \n"
"geöffnet wird, um nach Content zu suchen, solltest \n"
"du das Content-Verzeichnis setzen. Wenn es nicht \n"
"gesetzt ist, wird es im Root-Verzeichen starten. \n"
" \n"
"Der Browser wird nur Dateierweiterungen des \n"
"zuletzt geladenen Cores zeigen und diesen Core \n"
"nutzen, wenn Content geladen wird."
);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
snprintf(s, len,
"Lade Content aus dem Verlauf. \n"

View File

@ -146,6 +146,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
"Datenbankmanager")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Von der Playlist löschen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Lesezeichen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Content laden (Core erkennen)") /* FIXME */
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
@ -308,12 +310,16 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS,
"Menü-Einstellungen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER,
"Menühintergrund")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY,
"Background opacity")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MISSING,
"Fehlt")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MORE,
"...")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE,
"Maus-Unterstützung")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS,
"Media-Player-Einstellungen") /* UPDATE/FIXME */
"Multimedia-Einstellungen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MUSIC_TAB,
"Musik")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE,
@ -322,26 +328,46 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND,
"Navigation umbrechen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NEAREST,
"Nächster")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY,
"Netplay")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT, /* TODO, Original string changed */
"Tausche Netplay-Eingabe")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES,
"Verzögere Netplay-Frames")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DISCONNECT,
"Disconnect")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE,
"Aktiviere Netplay")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT,
"Connect to Netplay host")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST,
"Start hosting")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, /* TODO, Original string changed */
"IP-Addresse für Netplay")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS,
"Scan local network")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_MODE,
"Aktiviere Netplay-Client")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME,
"Benutzername")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS,
"Netplay settings")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE,
"Aktiviere Netplay-Zuschauermodus")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT,
"TCP/UDP-Port für Netplay")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL,
"Netplay NAT Traversal")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE,
"Netzwerk-Befehle")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT,
"Port für Netzwerk-Befehle")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION,
"Network Information")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE,
"Network Gamepad")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT,
"Network Remote Base Port")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS,
"Netzwerk-Einstellungen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO,
@ -350,6 +376,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NONE,
"Keins")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE,
"Nicht verfügbar")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY,
"No achievements to display.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE,
"Kein Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE,
@ -358,22 +386,32 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE,
"Keine Core-Informationen verfügbar.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE,
"Keine Core-Optionen verfügbar.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY,
"No entries to display.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_HISTORY_AVAILABLE,
"No history available.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE,
"Keine Informationen verfügbar.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ITEMS,
"Keine Einträge.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND,
"No netplay hosts found.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND,
"No networks found.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS,
"Keine Leistungszähler.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS,
"No playlists.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE,
"Keine Wiedergabelisten-Eintrage verfügbar.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND,
"Keine Einstellungen gefunden.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS,
"Keine Shaderparameter")
MSG_HASH(MENU_ENUM_LABEL_VALUE_OFF, /* Don't change. Needed for XMB atm. (Would be, "AN") */
"OFF")
MSG_HASH(MENU_ENUM_LABEL_VALUE_ON, /* Don't change. Needed for XMB atm. (Would be, "AUS") */
"ON")
MSG_HASH(MENU_ENUM_LABEL_VALUE_OFF,
"AN")
MSG_HASH(MENU_ENUM_LABEL_VALUE_ON,
"AUS")
MSG_HASH(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER,
"Online-Aktualisierung")
MSG_HASH(MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS,
@ -838,3 +876,17 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_VIDEO,
"Zeige Videos")
MSG_HASH(MENU_ENUM_LABEL_VALUE_YES,
"Ja")
MSG_HASH(MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE,
"Pause gameplay when window focus is lost.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION,
"Enable or disable composition (Windows only).")
MSG_HASH(MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE,
"Enable or disable recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE,
"Limit the number of entries in recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS,
"Unified Menu Controls")
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS,
"Use the same controls for both the menu and the game. Applies to the keyboard.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE,
"Show onscreen messages.")

View File

@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Select File And Detect Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -571,7 +571,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_HISTORY_TAB,
MSG_HASH(MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU,
"Horizontal Menu")
MSG_HASH(MENU_ENUM_LABEL_VALUE_IMAGES_TAB,
"Images")
"Image")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION,
"Information")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION_LIST,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,
@ -869,9 +867,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER,
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS,
"Menu")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER,
"Menu Wallpaper")
"Background")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY,
"Wallpaper opacity")
"Background opacity")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MISSING,
"Missing")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MORE,
@ -1171,7 +1169,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY,
MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION,
"Screen Resolution")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SEARCH,
"Search:")
"Search")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SECONDS,
"seconds")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SETTINGS,
@ -1601,7 +1599,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE,
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_HISTORY,
"Show History Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_IMAGES,
"Show Images Tab")
"Show Image Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_MUSIC,
"Show Music Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_SETTINGS,
@ -1614,6 +1612,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_YES,
"Yes")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO,
"Shader Preset")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE,
"Enable or disable achievements. For more information, visit http://retroachievements.org")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL,
"Enable or disable unofficial achievements and/or beta features for testing purposes.")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
"Enable or disable savestates, cheats, rewind, fast-forward, pause, and slow-motion for all games.")
MSG_HASH(MENU_ENUM_SUBLABEL_DRIVER_SETTINGS,
@ -2233,3 +2235,17 @@ MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING,
"Database - Filter : Edge Magazine Rating")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO,
"Database Info")
MSG_HASH(MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE,
"Pause gameplay when window focus is lost.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION,
"Enable or disable composition (Windows only).")
MSG_HASH(MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE,
"Enable or disable recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE,
"Limit the number of entries in recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS,
"Unified Menu Controls")
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS,
"Use the same controls for both the menu and the game. Applies to the keyboard.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE,
"Show onscreen messages.")

View File

@ -1372,8 +1372,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Error:";
case MSG_FAILED_TO_APPLY_SHADER:
return "Error al aplicar shader.";
case MSG_FAILED_TO_LOAD_CONTENT:
return "Error al cargar el contenido";
case MSG_FAILED_TO_LOAD_MOVIE_FILE:
return "Error al cargar el archivo de película";
case MSG_FAILED_TO_LOAD_OVERLAY:
@ -1552,7 +1550,7 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
case MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS:
return "Sonido";
case MENU_ENUM_LABEL_VALUE_AUDIO_SYNC:
return "Activar sincronía de sonido";
return "Sincronía de sonido";
case MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME:
return "Volumen de sonido (dB)";
case MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL:
@ -1655,8 +1653,8 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Proporción personalizada";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Gestor de bases de datos";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Seleccionar archivo y detectar núcleo";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleccionar archivo y detectar núcleo"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "(Carpeta de contenido)";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -1794,8 +1792,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Nivel de registro del núcleo";
case MENU_ENUM_LABEL_VALUE_LINEAR:
return "Lineal";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleccionar archivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Cargar archivos recientes";
case MENU_ENUM_LABEL_VALUE_LOAD_STATE:

View File

@ -480,8 +480,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Via les fichiers (détecter le coeur)")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Via les fichiers") /* TODO/FIXME - update */
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Dossier de contenu>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -567,7 +567,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_HISTORY_TAB,
MSG_HASH(MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU,
"Horizontal Menu")
MSG_HASH(MENU_ENUM_LABEL_VALUE_IMAGES_TAB,
"Images")
"Image")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION,
"Information")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION_LIST,
@ -812,8 +812,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linéaire")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Charger l'archive")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Via les fichiers")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Récemment ouvert")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,
@ -865,7 +863,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS,
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER,
"Fond d'écran")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY,
"Wallpaper opacity")
"Background opacity")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MISSING,
"Manquant")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MORE,
@ -1569,7 +1567,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE,
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_HISTORY,
"Show History Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_IMAGES,
"Show Images Tab")
"Show Image Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_MUSIC,
"Show Music Tab")
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_SETTINGS,
@ -1582,6 +1580,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_YES,
"Oui")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO,
"Shader Preset")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE,
"Enable or disable achievements. For more information, visit http://retroachievements.org")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL,
"Enable or disable unofficial achievements and/or beta features for testing purposes.")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
"Enable or disable savestates, cheats, rewind, fast-forward, pause, and slow-motion for all games.")
MSG_HASH(MENU_ENUM_SUBLABEL_DRIVER_SETTINGS,
@ -2199,3 +2201,17 @@ MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING,
"Database - Filter : Edge Magazine Rating")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO,
"Database Info")
MSG_HASH(MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE,
"Pause gameplay when window focus is lost.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION,
"Enable or disable composition (Windows only).")
MSG_HASH(MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE,
"Enable or disable recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE,
"Limit the number of entries in recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS,
"Unified Menu Controls")
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS,
"Use the same controls for both the menu and the game. Applies to the keyboard.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE,
"Show onscreen messages.")

View File

@ -1227,41 +1227,16 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Aggiorna le info dei core";
case MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER:
return "Usa Media Player interno";
#if 0
case MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU:
return "Menú orizzontale";
#else
case MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU:
return "Horizontal Menu";
#endif
#if 0
case MENU_ENUM_LABEL_VALUE_SETTINGS_TAB:
return "Settaggi scheda";
#else
case MENU_ENUM_LABEL_VALUE_SETTINGS_TAB:
return "Settings tab";
#endif
#if 0
case MENU_ENUM_LABEL_VALUE_HISTORY_TAB:
return "Cronologia scheda";
#else
case MENU_ENUM_LABEL_VALUE_HISTORY_TAB:
return "History tab";
#endif
#if 1
case MENU_ENUM_LABEL_VALUE_ADD_TAB:
return "Add tab";
#else
case MENU_ENUM_LABEL_VALUE_ADD_TAB:
return "Aggiungi scheda";
#endif
#if 0
case MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB:
return "Scheda Playlist";
#else
case MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB:
return "Playlists tab";
#endif
case MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND:
return "Nessun settaggio trovato.";
case MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS:
@ -1392,10 +1367,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Directory Shader Video";
case MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR:
return "Directory Filtro Video";
case MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY:
return "Directory Overlay";
case MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_DIRECTORY:
return "Directory Overlay OSK";
case MENU_ENUM_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT:
return "Giocatore 2 usa Controller 1 in rete";
case MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE:
@ -1532,10 +1503,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Intervallo di swap vsync";
case MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES:
return "Massimo swapchain di immagini";
case MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC:
return "VSync";
case MENU_ENUM_LABEL_VALUE_VIDEO_THREADED:
return "Threaded Video";
case MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION:
return "Rotazione";
case MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT:
@ -1644,8 +1611,8 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Abilita riavvolgi";
case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST:
return "Collezione";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Seleziona il file ed intercetta il core";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleziona il file ed intercetta il core"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST:
return "Scarica su directories";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
@ -1659,7 +1626,7 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
case MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME:
return "Livello volume audio (dB)";
case MENU_ENUM_LABEL_VALUE_AUDIO_SYNC:
return "Abilita sincro audio";
return "Sincro audio";
case MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA:
return "Delta di controllo frequenza audio";
case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES:
@ -1762,8 +1729,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Nessun oggetto.";
case MENU_ENUM_LABEL_VALUE_CORE_LIST:
return "Carica Core";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleziona contenuto";
case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT:
return "Chiudi";
case MENU_ENUM_LABEL_VALUE_MANAGEMENT:
@ -1816,8 +1781,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Opzioni di rimappatura degli input del core";
case MENU_ENUM_LABEL_VALUE_THUMBNAILS:
return "Miniature";
case MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS:
return "Shaders";
case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS:
return "Antemprima Parametri Shader";
case MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS:

View File

@ -1,4 +1,4 @@
/* RetroArch - A frontend for libretro.
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2016 - Daniel De Matteis
* Copyright (C) 2016 - Brad Parker
*
@ -24,6 +24,11 @@
#include "../configuration.h"
#include "../verbosity.h"
#if defined(_MSC_VER) && !defined(_XBOX)
/* https://support.microsoft.com/en-us/kb/980263 */
#pragma execution_character_set("utf-8")
#endif
int menu_hash_get_help_jp_enum(enum msg_hash_enums msg, char *s, size_t len)
{
uint32_t driver_hash = 0;

View File

@ -1,3 +1,8 @@
#if defined(_MSC_VER) && !defined(_XBOX)
/* https://support.microsoft.com/en-us/kb/980263 */
#pragma execution_character_set("utf-8")
#endif
MSG_HASH(
MSG_COMPILER,
"コンパイラ"
@ -209,7 +214,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_SYNC,
"オーディオの同期を有効"
"オーディオの同期"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME,
@ -229,7 +234,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE,
"Load Shader Presets Automatically"
"シェーダーのプリセットを自動的にロード"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK,
@ -261,7 +266,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD,
"Toggle Keyboard" "キーボードに切り替え"
"キーボードに切り替え"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU,
@ -269,7 +274,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS,
"Basic menu controls"
"基本的なメニューコントルール"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM,
@ -285,7 +290,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP,
"Scroll Up"
"上にスクロール"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START,
@ -493,19 +498,17 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER,
MSG_HASH(MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO,
"カスタム比")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
"データベースマネージャー")
"データベースマネージャー")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
"データベース選択")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"削除")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"ファイルを選択とコア検出")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
"<コンテンツフォルダ>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
"<Default>")
"<デフォルト>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE,
"<None>")
"<無し>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND,
"そのようなフォルダはありません。")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS,
@ -515,13 +518,15 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS,
MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND,
"Disk Image Append")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX,
"Disk Index")
"ディスクインデックス")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS,
"ディスク設定")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DONT_CARE,
"Don't care")
"なんでもいい")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST,
"ダウンロード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"お気に入り")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE,
"コアをダウンロード...")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT,
@ -647,7 +652,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE,
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS,
"入力のホットキーバインド")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE,
"Keyboard Gamepad Mapping Enable")
"キーボードのゲームパッドマッピングを有効")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A,
"Aボタン(右)")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B,
@ -775,7 +780,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG,
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
"入力")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE,
"Small Keyboard Enable")
"小さいキーボードを有効")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TOUCH_ENABLE,
"タッチを有効")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE,
@ -834,8 +839,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"コアでアーカイブをロード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"ファイル選択")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"最近のものをロード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,
@ -945,7 +948,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION,
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE,
"ネットワークゲームパッド")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT,
"Network Remote Base Port")
"ネットワークリモートのベースポート")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS,
"ネットワーク")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO,
@ -1197,7 +1200,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY,
MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION,
"スクリーン解像度")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SEARCH,
"検索:")
"検索")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SECONDS,
"")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SETTINGS,
@ -1399,11 +1402,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY,
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST,
"サムネイルのアップデーター")
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS,
"Boxarts")
"ボックスアート")
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
"スクリーンショット")
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,
"Title Screens")
"タイトルスクリーン")
MSG_HASH(MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE,
"日付と時刻を表示")
MSG_HASH(MENU_ENUM_LABEL_VALUE_TITLE_COLOR,
@ -1570,6 +1573,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC,
"VSYNC")
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN,
"ウィンドウのフルスクリーンモード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH,
"ウィンドウの幅")
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT,
"ウィンドウの縦")
MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_DRIVER,
"Wi-Fiのドライバ")
MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS,
@ -1636,6 +1643,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_YES,
"はい")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO,
"シェーダーのプリセット")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE,
"Enable or disable achievements. For more information, visit http://retroachievements.org")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL,
"Enable or disable unofficial achievements and/or beta features for testing purposes.")
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
"保存状態、チート、巻き戻し、早送り、一時停止、スローモーションを全部のゲームに無効する。")
MSG_HASH(MENU_ENUM_SUBLABEL_DRIVER_SETTINGS,
@ -2212,7 +2223,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ENABLED,
"Enabled"
"有効"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_PATH,
@ -2253,3 +2264,19 @@ MSG_HASH(MSG_NETPLAY_LAN_SCAN_COMPLETE,
"ネットプレイスキャン完了。")
MSG_HASH(MSG_NETPLAY_LAN_SCANNING,
"ネットプレイホストをスキャン中")
MSG_HASH(MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE,
"Pause gameplay when window focus is lost.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION,
"Enable or disable composition (Windows only).")
MSG_HASH(MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE,
"Enable or disable recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE,
"Limit the number of entries in recent playlist for games, images, music, and videos.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS,
"統一的なメニューコントロール")
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS,
"Use the same controls for both the menu and the game. Applies to the keyboard.")
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE,
"OSDメッセージを表する。")
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE,
"ユーザー%dのリモートを有効")

Some files were not shown because too many files have changed in this diff Show More