mirror of
https://github.com/libretro/RetroArch
synced 2025-02-09 09:39:56 +00:00
commit
90839289c4
16
CHANGES.md
16
CHANGES.md
@ -1,11 +1,25 @@
|
||||
# 1.7.3 (future)
|
||||
# 1.7.4 (future)
|
||||
- HID/OSX: Fix to set hid device registration deterministic (#6497), to address issue #6640 re-adding dynamic device registration
|
||||
- MENU/QT/WIMP: QT QSlider styling for Dark Theme.
|
||||
- MENU/QT/WIMP: Remove button ghostly inside highlighting.
|
||||
- PS3: Add audio mixer support for FLAC and MP3.
|
||||
- WIIU: Fix out-of-bounds rendering bug
|
||||
- WIIU: Implement UDP broadcast network logging on Wii U.
|
||||
|
||||
# 1.7.3
|
||||
- AUDIO: Audio mixer supports FLAC/MP3 file types now!
|
||||
- COMMON: Fixed bug 'crashing in cores that don't range check retro_set_controller_type'. Some people were having crashes when device is set to RETRO_DEVICE_NONE and the cores don't check the number of ports, in VBAM's case it was overflowing and crashing. QuickNES was crashing too.
|
||||
- COMMON: Fixed buffer overflow in url encoding (affecting MSVC2010/2013).
|
||||
- COMMON: (QuickMenu) Added Configuration Override submenu.
|
||||
- HID: Merge new HID subsystem.
|
||||
- HID: Fix WaveBird support for the Wii U GCA.
|
||||
- HID/OSX: Fix regression with IODHIDManager - gamepads which are connected later would not be autoconfigured.
|
||||
- LOCALIZATION: Update Italian translation.
|
||||
- LOCALIZATION: Update Japanese translation.
|
||||
- LOCALIZATION: Update Portuguese translation.
|
||||
- MENU: New WIMP Qt GUI!
|
||||
- MENU: Audio mixer now works in the menu without any cores loaded. You have to enable the setting 'Enable menu audio' for this to work.
|
||||
- REMAPPING/OVERLAYS: Fix regression - overlays could no longer be remapped.
|
||||
- SCANNER: Add Wii Backup File WBFS support.
|
||||
- X11: CRT SwitchRes support for X11/Linux.
|
||||
|
||||
|
23
Makefile
23
Makefile
@ -92,21 +92,22 @@ APPEND_CFLAGS := $(CFLAGS)
|
||||
CXXFLAGS += $(APPEND_CFLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS
|
||||
OBJCFLAGS := $(CFLAGS) -D__STDC_CONSTANT_MACROS
|
||||
|
||||
ifeq ($(CXX_BUILD), 1)
|
||||
LINK = $(CXX)
|
||||
CFLAGS := $(CXXFLAGS) -xc++
|
||||
CFLAGS += -DCXX_BUILD
|
||||
CXXFLAGS += -DCXX_BUILD
|
||||
else
|
||||
ifeq ($(NEED_CXX_LINKER),1)
|
||||
ifeq ($(HAVE_CXX), 1)
|
||||
ifeq ($(CXX_BUILD), 1)
|
||||
LINK = $(CXX)
|
||||
CFLAGS := $(CXXFLAGS) -xc++
|
||||
CFLAGS += -DCXX_BUILD
|
||||
CXXFLAGS += -DCXX_BUILD
|
||||
else ifeq ($(NEED_CXX_LINKER),1)
|
||||
LINK = $(CXX)
|
||||
else ifeq ($(findstring Win32,$(OS)),)
|
||||
LINK = $(CC)
|
||||
else
|
||||
# directx-related code is c++
|
||||
LINK = $(CXX)
|
||||
LINK = $(CC)
|
||||
endif
|
||||
else
|
||||
LINK = $(CC)
|
||||
endif
|
||||
|
||||
ifneq ($(CXX_BUILD), 1)
|
||||
ifneq ($(GNU90_BUILD), 1)
|
||||
ifneq ($(findstring icc,$(CC)),)
|
||||
CFLAGS += -std=c99 -D_GNU_SOURCE
|
||||
|
@ -1189,7 +1189,7 @@ ifeq ($(HAVE_VULKAN), 1)
|
||||
ifeq ($(HAVE_MENU_COMMON), 1)
|
||||
OBJ += menu/drivers_display/menu_display_vulkan.o
|
||||
endif
|
||||
#LIBS += -lstdc++
|
||||
NEED_CXX_LINKER = 1
|
||||
DEFINES += -DHAVE_VULKAN
|
||||
INCLUDE_DIRS += -Igfx/include
|
||||
|
||||
|
@ -63,7 +63,7 @@ endif
|
||||
|
||||
PPU_SRCS = griffin/griffin.c
|
||||
|
||||
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD
|
||||
DEFINES += -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD -DHAVE_DR_MP3 -DHAVE_DR_FLAC
|
||||
|
||||
ifeq ($(DEX_BUILD), 1)
|
||||
DEFINES += -DDEX_BUILD
|
||||
|
@ -6,7 +6,7 @@ WHOLE_ARCHIVE_LINK = 0
|
||||
|
||||
OBJ :=
|
||||
|
||||
DEFINES := -DSWITCH=1 -U__linux__ -U__linux
|
||||
DEFINES := -DSWITCH=1 -U__linux__ -U__linux -DRARCH_INTERNAL
|
||||
|
||||
ifeq ($(GRIFFIN_BUILD), 1)
|
||||
OBJ += griffin/griffin.o
|
||||
@ -46,7 +46,7 @@ endif
|
||||
|
||||
include $(LIBTRANSISTOR_HOME)/libtransistor.mk
|
||||
|
||||
INCDIRS := -I. -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBTRANSISTOR_HOME)/build/sdl2_install/include/SDL2/
|
||||
INCDIRS := -I. -Ideps -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBTRANSISTOR_HOME)/build/sdl2_install/include/SDL2/
|
||||
LIBDIRS := -L.
|
||||
|
||||
TARGETS := $(TARGET).nro
|
||||
|
@ -10,7 +10,6 @@ WIIU_HID = 1
|
||||
HAVE_RUNAHEAD = 1
|
||||
WIIU_LOG_RPX = 0
|
||||
BUILD_DIR = objs/wiiu
|
||||
PC_DEVELOPMENT_IP_ADDRESS ?=
|
||||
PC_DEVELOPMENT_TCP_PORT ?=
|
||||
|
||||
ifeq ($(SALAMANDER_BUILD),1)
|
||||
@ -29,12 +28,11 @@ ifneq ($(V), 1)
|
||||
endif
|
||||
|
||||
OBJ :=
|
||||
OBJ += wiiu/input/wpad_driver.o
|
||||
OBJ += wiiu/input/kpad_driver.o
|
||||
OBJ += wiiu/input/pad_functions.o
|
||||
OBJ += wiiu/main.o
|
||||
OBJ += wiiu/system/memory.o
|
||||
OBJ += wiiu/system/atomic.o
|
||||
OBJ += wiiu/system/exception_handler.o
|
||||
OBJ += wiiu/system/missing_libc_functions.o
|
||||
OBJ += wiiu/fs/sd_fat_devoptab.o
|
||||
OBJ += wiiu/fs/fs_utils.o
|
||||
OBJ += wiiu/hbl.o
|
||||
@ -47,8 +45,8 @@ endif
|
||||
|
||||
ifeq ($(WIIU_HID),1)
|
||||
DEFINES += -DWIIU_HID
|
||||
OBJ += wiiu/input/hidpad_driver.o
|
||||
OBJ += wiiu/input/wiiu_hid.o
|
||||
OBJ += input/drivers_joypad/wiiu/hidpad_driver.o
|
||||
OBJ += input/drivers_hid/wiiu_hid.o
|
||||
OBJ += input/connect/joypad_connection.o \
|
||||
input/common/hid/hid_device_driver.o \
|
||||
input/common/hid/device_wiiu_gca.o \
|
||||
@ -90,7 +88,6 @@ ifeq ($(HAVE_RUNAHEAD),1)
|
||||
DEFINES += -DHAVE_RUNAHEAD
|
||||
endif
|
||||
|
||||
OBJ += wiiu/system/missing_libc_functions.o
|
||||
OBJ += wiiu/shader_utils.o
|
||||
OBJ += gfx/drivers/gx2_shaders/tex.o
|
||||
OBJ += gfx/drivers/gx2_shaders/sprite.o
|
||||
@ -148,6 +145,10 @@ endif
|
||||
OBJ += menu/drivers_display/menu_display_wiiu.o
|
||||
OBJ += input/drivers/wiiu_input.o
|
||||
OBJ += input/drivers_joypad/wiiu_joypad.o
|
||||
OBJ += input/drivers_joypad/wiiu/wpad_driver.o
|
||||
OBJ += input/drivers_joypad/wiiu/kpad_driver.o
|
||||
OBJ += input/drivers_joypad/wiiu/pad_functions.o
|
||||
|
||||
OBJ += audio/drivers/wiiu_audio.o
|
||||
OBJ += frontend/drivers/platform_wiiu.o
|
||||
endif
|
||||
@ -161,10 +162,6 @@ DEFINES += -DWIIU -DMSB_FIRST -D__WUT__
|
||||
DEFINES += -DHAVE_MAIN
|
||||
DEFINES += -DRARCH_CONSOLE
|
||||
|
||||
ifneq ($(PC_DEVELOPMENT_IP_ADDRESS),)
|
||||
DEFINES += -DPC_DEVELOPMENT_IP_ADDRESS='"$(PC_DEVELOPMENT_IP_ADDRESS)"'
|
||||
endif
|
||||
|
||||
ifneq ($(PC_DEVELOPMENT_TCP_PORT),)
|
||||
DEFINES += -DPC_DEVELOPMENT_TCP_PORT=$(PC_DEVELOPMENT_TCP_PORT)
|
||||
endif
|
||||
@ -197,7 +194,16 @@ else
|
||||
ELF2RPL := $(ELF2RPL).exe
|
||||
endif
|
||||
|
||||
INCDIRS := -I. -Ideps -Ideps/stb -Ideps/libz -Ideps/7zip -Ilibretro-common/include -Iwiiu -Iwiiu/include -I$(DEVKITPRO)/portlibs/ppc/include
|
||||
INCDIRS := -I.
|
||||
INCDIRS += -Ideps
|
||||
INCDIRS += -Ideps/stb
|
||||
INCDIRS += -Ideps/libz
|
||||
INCDIRS += -Ideps/7zip
|
||||
INCDIRS += -Ilibretro-common/include
|
||||
INCDIRS += -Iinput/include
|
||||
INCDIRS += -Iwiiu
|
||||
INCDIRS += -Iwiiu/include
|
||||
INCDIRS += -I$(DEVKITPRO)/portlibs/ppc/include
|
||||
LIBDIRS := -L. -L$(DEVKITPRO)/portlibs/ppc/lib
|
||||
|
||||
CFLAGS := -mwup -mcpu=750 -meabi -mhard-float
|
||||
|
20
README.md
20
README.md
@ -4,7 +4,7 @@
|
||||
# RetroArch
|
||||
|
||||
RetroArch is the reference frontend for the libretro API.
|
||||
Popular examples of implementations for this API includes videogame system emulators and game engines as well as
|
||||
Popular examples of implementations for this API includes video game system emulators and game engines as well as
|
||||
more generalized 3D programs.
|
||||
These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".
|
||||
|
||||
@ -79,7 +79,7 @@ RetroArch has been ported to the following platforms:
|
||||
- Original Microsoft Xbox
|
||||
- Microsoft Xbox 360 (Libxenon/XeXDK)
|
||||
- Nintendo Wii, GameCube (Libogc)
|
||||
- Nintendo WiiU
|
||||
- Nintendo Wii U
|
||||
- Nintendo 3DS
|
||||
- Nintendo Switch
|
||||
- Raspberry Pi
|
||||
@ -149,7 +149,7 @@ Instructions for compiling and installing RetroArch can be found in the [Libretr
|
||||
|
||||
CRT Switch res will turn on, on the fly. However, you will need to restart retroarch to disable it. With CRT SwitchRes enable Retroarch will start in 2560 x 480 @ 60.
|
||||
|
||||
If you are running windows, before enabling the CRT SwitchRes options pleasae make sure you have installed CRTEmudriver and installed some modelines. The minimum modelins for all games to switch correctly are:
|
||||
If you are running windows, before enabling the CRT SwitchRes options please make sure you have installed CRTEmudriver and installed some modelines. The minimum modelins for all games to switch correctly are:
|
||||
|
||||
- 2560 x 192 @ 60.000000
|
||||
- 2560 x 200 @ 60.000000
|
||||
@ -161,7 +161,7 @@ If you are running windows, before enabling the CRT SwitchRes options pleasae ma
|
||||
- 2560 x 448 @ 60.000000
|
||||
- 2560 x 480 @ 60.000000
|
||||
|
||||
Install these modelines replacing 2560 with your desired super resuloution. The above resolutions are NTSC only so if you would be playing any PAL content please add pal modelines:
|
||||
Install these modelines replacing 2560 with your desired super resolution. The above resolutions are NTSC only so if you would be playing any PAL content please add pal modelines:
|
||||
|
||||
- 2560 x 192 @ 50.000000
|
||||
- 2560 x 200 @ 50.000000
|
||||
@ -173,7 +173,7 @@ Install these modelines replacing 2560 with your desired super resuloution. The
|
||||
- 2560 x 448 @ 50.000000
|
||||
- 2560 x 480 @ 50.000000
|
||||
|
||||
Some games will require heigher PAL resolutions which should also be installed:
|
||||
Some games will require higher PAL resolutions which should also be installed:
|
||||
|
||||
- 2560 x 512 @ 50.000000
|
||||
- 2560 x 576 @ 50.000000
|
||||
@ -182,11 +182,11 @@ Ideally install all these modelines and everything will work great.
|
||||
|
||||
## Super Resolutions
|
||||
|
||||
The default super resolution is 2560. It is displayed just under the CRT switch option, which can be found in video settings. This can be changed within the retroarch.cfg. The only compatible resolutions are 1920, 2560 and 3840. Any other resolutions will be ignored and native swithing will be activated.
|
||||
The default super resolution is 2560. It is displayed just under the CRT switch option, which can be found in video settings. This can be changed within the retroarch.cfg. The only compatible resolutions are 1920, 2560 and 3840. Any other resolutions will be ignored and native switching will be activated.
|
||||
|
||||
## Native Resolutions
|
||||
|
||||
If native reolutions are activeted you will need a whole new set of modelines:
|
||||
If native resolutions are activated you will need a whole new set of modelines:
|
||||
|
||||
- 512 x 240 @ 50.006977 SNESpal
|
||||
- 512 x 224 @ 50.006977 SNESpal
|
||||
@ -249,10 +249,10 @@ If native reolutions are activeted you will need a whole new set of modelines:
|
||||
- 400 x 254 @ 54.706841 MK
|
||||
- 384 x 224 @ 59.637405 CPS1
|
||||
|
||||
These modelines are more acurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution chages on the orgiginal hardware. For the best results super resolutions are the way to go.
|
||||
These modelines are more accurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution changes on the original hardware. For the best results super resolutions are the way to go.
|
||||
|
||||
## CRT resolution switching & Mame
|
||||
|
||||
Some arecade resolutions can be alot different. There is resolution detection to ensure mame games will be diplayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the mame game will look just like the original hardware.
|
||||
Some arcade resolutions can be a lot different. There is resolution detection to ensure mame games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the mame game will look just like the original hardware.
|
||||
|
||||
Mame roms that run in a vertical aspect like DoDonPachi need to be roted within mame before rolution swithing and aspect correction will work. Do this before enableing CRT switchRes so that Retroarch will run in your desktop resolution. Once you have roted any games that may need it switch CRT SwitchRes on.
|
||||
Mame roms that run in a vertical aspect like DoDonPachi need to be rotated within mame before resolution switching and aspect correction will work. Do this before enabling CRT switchRes so that Retroarch will run in your desktop resolution. Once you have roted any games that may need it switch CRT SwitchRes on.
|
||||
|
@ -179,6 +179,11 @@ static void *audio_driver_context_audio_data = NULL;
|
||||
|
||||
static bool audio_suspended = false;
|
||||
|
||||
static void audio_mixer_play_stop_sequential_cb(
|
||||
audio_mixer_sound_t *sound, unsigned reason);
|
||||
static void audio_mixer_play_stop_cb(
|
||||
audio_mixer_sound_t *sound, unsigned reason);
|
||||
|
||||
enum resampler_quality audio_driver_get_resampler_quality(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
@ -196,6 +201,15 @@ audio_mixer_stream_t *audio_driver_mixer_get_stream(unsigned i)
|
||||
return &audio_mixer_streams[i];
|
||||
}
|
||||
|
||||
const char *audio_driver_mixer_get_stream_name(unsigned i)
|
||||
{
|
||||
if (i > (AUDIO_MIXER_MAX_STREAMS-1))
|
||||
return "N/A";
|
||||
if (!string_is_empty(audio_mixer_streams[i].name))
|
||||
return audio_mixer_streams[i].name;
|
||||
return "N/A";
|
||||
}
|
||||
|
||||
/**
|
||||
* compute_audio_buffer_statistics:
|
||||
*
|
||||
@ -1049,6 +1063,10 @@ static void audio_mixer_play_stop_cb(
|
||||
{
|
||||
unsigned i = (unsigned)idx;
|
||||
|
||||
if (!string_is_empty(audio_mixer_streams[i].name))
|
||||
free(audio_mixer_streams[i].name);
|
||||
|
||||
audio_mixer_streams[i].name = NULL;
|
||||
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
|
||||
audio_mixer_streams[i].volume = 0.0f;
|
||||
audio_mixer_streams[i].buf = NULL;
|
||||
@ -1064,6 +1082,50 @@ static void audio_mixer_play_stop_cb(
|
||||
}
|
||||
}
|
||||
|
||||
static void audio_mixer_play_stop_sequential_cb(
|
||||
audio_mixer_sound_t *sound, unsigned reason)
|
||||
{
|
||||
int idx = audio_mixer_find_index(sound);
|
||||
|
||||
switch (reason)
|
||||
{
|
||||
case AUDIO_MIXER_SOUND_FINISHED:
|
||||
audio_mixer_destroy(sound);
|
||||
|
||||
if (idx >= 0)
|
||||
{
|
||||
unsigned i = (unsigned)idx;
|
||||
|
||||
if (!string_is_empty(audio_mixer_streams[i].name))
|
||||
free(audio_mixer_streams[i].name);
|
||||
|
||||
audio_mixer_streams[i].name = NULL;
|
||||
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
|
||||
audio_mixer_streams[i].volume = 0.0f;
|
||||
audio_mixer_streams[i].buf = NULL;
|
||||
audio_mixer_streams[i].stop_cb = NULL;
|
||||
audio_mixer_streams[i].handle = NULL;
|
||||
audio_mixer_streams[i].voice = NULL;
|
||||
|
||||
i++;
|
||||
|
||||
for (; i < AUDIO_MIXER_MAX_STREAMS; i++)
|
||||
{
|
||||
if (audio_mixer_streams[i].state == AUDIO_STREAM_STATE_STOPPED)
|
||||
{
|
||||
audio_driver_mixer_play_stream_sequential(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case AUDIO_MIXER_SOUND_STOPPED:
|
||||
break;
|
||||
case AUDIO_MIXER_SOUND_REPEATED:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool audio_driver_mixer_get_free_stream_slot(unsigned *id)
|
||||
{
|
||||
unsigned i;
|
||||
@ -1123,8 +1185,7 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
|
||||
#endif
|
||||
break;
|
||||
case AUDIO_MIXER_TYPE_NONE:
|
||||
free(buf);
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!handle)
|
||||
@ -1133,18 +1194,26 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (params->state == AUDIO_STREAM_STATE_PLAYING)
|
||||
switch (params->state)
|
||||
{
|
||||
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
|
||||
audio_mixer_active = true;
|
||||
}
|
||||
else if (params->state == AUDIO_STREAM_STATE_PLAYING_LOOPED)
|
||||
{
|
||||
looped = true;
|
||||
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
|
||||
audio_mixer_active = true;
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
looped = true;
|
||||
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
stop_cb = audio_mixer_play_stop_sequential_cb;
|
||||
voice = audio_mixer_play(handle, looped, params->volume, stop_cb);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
audio_mixer_active = true;
|
||||
|
||||
audio_mixer_streams[free_slot].name = !string_is_empty(params->basename) ? strdup(params->basename) : NULL;
|
||||
audio_mixer_streams[free_slot].buf = buf;
|
||||
audio_mixer_streams[free_slot].handle = handle;
|
||||
audio_mixer_streams[free_slot].voice = voice;
|
||||
@ -1163,7 +1232,7 @@ enum audio_mixer_state audio_driver_mixer_get_stream_state(unsigned i)
|
||||
return audio_mixer_streams[i].state;
|
||||
}
|
||||
|
||||
static void audio_driver_mixer_play_stream_internal(unsigned i, bool looped)
|
||||
static void audio_driver_mixer_play_stream_internal(unsigned i, unsigned type)
|
||||
{
|
||||
bool set_state = false;
|
||||
|
||||
@ -1173,27 +1242,38 @@ static void audio_driver_mixer_play_stream_internal(unsigned i, bool looped)
|
||||
switch (audio_mixer_streams[i].state)
|
||||
{
|
||||
case AUDIO_STREAM_STATE_STOPPED:
|
||||
audio_mixer_streams[i].voice = audio_mixer_play(audio_mixer_streams[i].handle, looped, 1.0f, audio_mixer_streams[i].stop_cb);
|
||||
audio_mixer_streams[i].voice = audio_mixer_play(audio_mixer_streams[i].handle,
|
||||
(type == AUDIO_STREAM_STATE_PLAYING_LOOPED) ? true : false,
|
||||
1.0f, audio_mixer_streams[i].stop_cb);
|
||||
set_state = true;
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
case AUDIO_STREAM_STATE_NONE:
|
||||
break;
|
||||
}
|
||||
|
||||
if (set_state)
|
||||
audio_mixer_streams[i].state = looped ? AUDIO_STREAM_STATE_PLAYING_LOOPED : AUDIO_STREAM_STATE_PLAYING;
|
||||
audio_mixer_streams[i].state = (enum audio_mixer_state)type;
|
||||
}
|
||||
|
||||
void audio_driver_mixer_play_stream(unsigned i)
|
||||
{
|
||||
audio_driver_mixer_play_stream_internal(i, false);
|
||||
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_cb;
|
||||
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING);
|
||||
}
|
||||
|
||||
void audio_driver_mixer_play_stream_looped(unsigned i)
|
||||
{
|
||||
audio_driver_mixer_play_stream_internal(i, true);
|
||||
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_cb;
|
||||
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING_LOOPED);
|
||||
}
|
||||
|
||||
void audio_driver_mixer_play_stream_sequential(unsigned i)
|
||||
{
|
||||
audio_mixer_streams[i].stop_cb = audio_mixer_play_stop_sequential_cb;
|
||||
audio_driver_mixer_play_stream_internal(i, AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL);
|
||||
}
|
||||
|
||||
float audio_driver_mixer_get_stream_volume(unsigned i)
|
||||
@ -1230,6 +1310,7 @@ void audio_driver_mixer_stop_stream(unsigned i)
|
||||
{
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
set_state = true;
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_STOPPED:
|
||||
@ -1259,6 +1340,7 @@ void audio_driver_mixer_remove_stream(unsigned i)
|
||||
{
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
audio_driver_mixer_stop_stream(i);
|
||||
destroy = true;
|
||||
break;
|
||||
@ -1274,11 +1356,16 @@ void audio_driver_mixer_remove_stream(unsigned i)
|
||||
audio_mixer_sound_t *handle = audio_mixer_streams[i].handle;
|
||||
if (handle)
|
||||
audio_mixer_destroy(handle);
|
||||
|
||||
if (!string_is_empty(audio_mixer_streams[i].name))
|
||||
free(audio_mixer_streams[i].name);
|
||||
|
||||
audio_mixer_streams[i].state = AUDIO_STREAM_STATE_NONE;
|
||||
audio_mixer_streams[i].stop_cb = NULL;
|
||||
audio_mixer_streams[i].volume = 0.0f;
|
||||
audio_mixer_streams[i].handle = NULL;
|
||||
audio_mixer_streams[i].voice = NULL;
|
||||
audio_mixer_streams[i].name = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ RETRO_BEGIN_DECLS
|
||||
|
||||
#define AUDIO_MAX_RATIO 16
|
||||
|
||||
#define AUDIO_MIXER_MAX_STREAMS 8
|
||||
#define AUDIO_MIXER_MAX_STREAMS 16
|
||||
|
||||
enum audio_action
|
||||
{
|
||||
@ -53,7 +53,8 @@ enum audio_mixer_state
|
||||
AUDIO_STREAM_STATE_NONE = 0,
|
||||
AUDIO_STREAM_STATE_STOPPED,
|
||||
AUDIO_STREAM_STATE_PLAYING,
|
||||
AUDIO_STREAM_STATE_PLAYING_LOOPED
|
||||
AUDIO_STREAM_STATE_PLAYING_LOOPED,
|
||||
AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL
|
||||
};
|
||||
|
||||
typedef struct audio_mixer_stream
|
||||
@ -64,6 +65,7 @@ typedef struct audio_mixer_stream
|
||||
enum audio_mixer_state state;
|
||||
float volume;
|
||||
void *buf;
|
||||
char *name;
|
||||
size_t bufsize;
|
||||
} audio_mixer_stream_t;
|
||||
|
||||
@ -164,6 +166,7 @@ typedef struct audio_mixer_stream_params
|
||||
enum audio_mixer_type type;
|
||||
enum audio_mixer_state state;
|
||||
void *buf;
|
||||
char *basename;
|
||||
size_t bufsize;
|
||||
audio_mixer_stop_cb_t cb;
|
||||
} audio_mixer_stream_params_t;
|
||||
@ -292,6 +295,8 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params);
|
||||
|
||||
void audio_driver_mixer_play_stream(unsigned i);
|
||||
|
||||
void audio_driver_mixer_play_stream_sequential(unsigned i);
|
||||
|
||||
void audio_driver_mixer_play_stream_looped(unsigned i);
|
||||
|
||||
void audio_driver_mixer_stop_stream(unsigned i);
|
||||
@ -306,6 +311,8 @@ enum resampler_quality audio_driver_get_resampler_quality(void);
|
||||
|
||||
enum audio_mixer_state audio_driver_mixer_get_stream_state(unsigned i);
|
||||
|
||||
const char *audio_driver_mixer_get_stream_name(unsigned i);
|
||||
|
||||
bool compute_audio_buffer_statistics(audio_statistics_t *stats);
|
||||
|
||||
extern audio_driver_t audio_rsound;
|
||||
|
@ -3253,24 +3253,19 @@ found:
|
||||
char urle_user[64];
|
||||
char urle_login[64];
|
||||
const char *username = coro ? coro->settings->arrays.cheevos_username : NULL;
|
||||
const char *login;
|
||||
bool via_token;
|
||||
const char *login = NULL;
|
||||
bool via_token = false;
|
||||
|
||||
if (coro)
|
||||
{
|
||||
if (string_is_empty(coro->settings->arrays.cheevos_password))
|
||||
{
|
||||
via_token = true;
|
||||
login = coro->settings->arrays.cheevos_token;
|
||||
via_token = true;
|
||||
login = coro->settings->arrays.cheevos_token;
|
||||
}
|
||||
else
|
||||
{
|
||||
via_token = false;
|
||||
login = coro->settings->arrays.cheevos_password;
|
||||
}
|
||||
login = coro->settings->arrays.cheevos_password;
|
||||
}
|
||||
else
|
||||
login = NULL;
|
||||
|
||||
if (string_is_empty(username) || string_is_empty(login))
|
||||
{
|
||||
|
48
deps/dr/dr_flac.h
vendored
48
deps/dr/dr_flac.h
vendored
@ -2139,11 +2139,11 @@ static drflac_bool32 drflac__read_rice_parts__reference(drflac_bs* bs, drflac_ui
|
||||
static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut)
|
||||
{
|
||||
drflac_uint32 riceLength;
|
||||
drflac_uint32 riceParamPart;
|
||||
drflac_uint32 riceParamPart = 0;
|
||||
drflac_uint32 setBitOffsetPlus1;
|
||||
drflac_cache_t riceParamMask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParam);
|
||||
drflac_cache_t resultHiShift = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParam;
|
||||
drflac_uint32 zeroCounter = 0;
|
||||
drflac_cache_t riceParamMask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParam);
|
||||
drflac_cache_t resultHiShift = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParam;
|
||||
drflac_uint32 zeroCounter = 0;
|
||||
while (bs->cache == 0) {
|
||||
zeroCounter += (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs);
|
||||
if (!drflac__reload_cache(bs))
|
||||
@ -2206,9 +2206,9 @@ static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts(drflac_bs* bs, drflac
|
||||
|
||||
static drflac_bool32 drflac__decode_samples_with_residual__rice__simple(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut)
|
||||
{
|
||||
drflac_uint32 zeroCountPart;
|
||||
drflac_uint32 riceParamPart;
|
||||
drflac_uint32 i = 0;
|
||||
drflac_uint32 zeroCountPart = 0;
|
||||
drflac_uint32 riceParamPart = 0;
|
||||
drflac_uint32 i = 0;
|
||||
|
||||
drflac_assert(bs != NULL);
|
||||
drflac_assert(count > 0);
|
||||
@ -2564,13 +2564,13 @@ static drflac_bool32 drflac__read_next_frame_header(drflac_bs* bs, drflac_uint8
|
||||
for (;;)
|
||||
{
|
||||
drflac_bool32 isVariableBlockSize = false;
|
||||
drflac_uint8 blockSize = 0;
|
||||
drflac_uint8 blockingStrategy = 0;
|
||||
drflac_uint8 crc8 = 0xCE; /* 0xCE = drflac_crc8(0, 0x3FFE, 14); */
|
||||
drflac_uint8 reserved = 0;
|
||||
drflac_uint8 sampleRate = 0;
|
||||
drflac_uint8 channelAssignment = 0;
|
||||
drflac_uint8 bitsPerSample = 0;
|
||||
drflac_uint8 blockSize = 0;
|
||||
drflac_uint8 blockingStrategy = 0;
|
||||
drflac_uint8 crc8 = 0xCE; /* 0xCE = drflac_crc8(0, 0x3FFE, 14); */
|
||||
drflac_uint8 reserved = 0;
|
||||
drflac_uint8 sampleRate = 0;
|
||||
drflac_uint8 channelAssignment = 0;
|
||||
drflac_uint8 bitsPerSample = 0;
|
||||
|
||||
if (!drflac__find_and_seek_to_next_sync_code(bs))
|
||||
return DRFLAC_FALSE;
|
||||
@ -2738,7 +2738,7 @@ static drflac_bool32 drflac__read_subframe_header(drflac_bs* bs, drflac_subframe
|
||||
pSubframe->wastedBitsPerSample = 0;
|
||||
if ((header & 0x01) == 1)
|
||||
{
|
||||
unsigned int wastedBitsPerSample;
|
||||
unsigned int wastedBitsPerSample = 0;
|
||||
if (!drflac__seek_past_next_set_bit(bs, &wastedBitsPerSample))
|
||||
return DRFLAC_FALSE;
|
||||
pSubframe->wastedBitsPerSample = (unsigned char)wastedBitsPerSample + 1;
|
||||
@ -3301,8 +3301,8 @@ drflac_bool32 drflac__read_and_decode_metadata(drflac* pFlac)
|
||||
{
|
||||
drflac_metadata metadata;
|
||||
drflac_uint8 isLastBlock = 0;
|
||||
drflac_uint8 blockType;
|
||||
drflac_uint32 blockSize;
|
||||
drflac_uint8 blockType = 0;
|
||||
drflac_uint32 blockSize = 0;
|
||||
|
||||
if (!drflac__read_and_decode_block_header(pFlac->bs.onRead, pFlac->bs.pUserData, &isLastBlock, &blockType, &blockSize))
|
||||
return DRFLAC_FALSE;
|
||||
@ -3536,9 +3536,9 @@ drflac_bool32 drflac__read_and_decode_metadata(drflac* pFlac)
|
||||
|
||||
drflac_bool32 drflac__init_private__native(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_bool32 relaxed)
|
||||
{
|
||||
drflac_uint8 isLastBlock;
|
||||
drflac_uint8 blockType;
|
||||
drflac_uint32 blockSize;
|
||||
drflac_uint8 isLastBlock = 0;
|
||||
drflac_uint8 blockType = 0;
|
||||
drflac_uint32 blockSize = 0;
|
||||
|
||||
(void)onSeek;
|
||||
|
||||
@ -4081,7 +4081,6 @@ static drflac_bool32 drflac__on_seek_ogg(void* pUserData, int offset, drflac_see
|
||||
|
||||
if (oggbs->bytesRemainingInPage >= (size_t)bytesRemainingToSeek)
|
||||
{
|
||||
bytesSeeked += bytesRemainingToSeek;
|
||||
oggbs->bytesRemainingInPage -= bytesRemainingToSeek;
|
||||
break;
|
||||
}
|
||||
@ -4117,7 +4116,6 @@ drflac_bool32 drflac_ogg__seek_to_sample(drflac* pFlac, drflac_uint64 sampleInde
|
||||
return DRFLAC_FALSE;
|
||||
oggbs->bytesRemainingInPage = 0;
|
||||
|
||||
runningFrameBytePos = oggbs->currentBytePos; /* <-- Points to the OggS identifier. */
|
||||
for (;;)
|
||||
{
|
||||
if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) {
|
||||
@ -4296,9 +4294,9 @@ drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_read_pro
|
||||
{
|
||||
drflac_streaminfo streaminfo;
|
||||
/* The remaining data in the page should be the STREAMINFO block. */
|
||||
drflac_uint8 isLastBlock;
|
||||
drflac_uint8 blockType;
|
||||
drflac_uint32 blockSize;
|
||||
drflac_uint8 isLastBlock = 0;
|
||||
drflac_uint8 blockType = 0;
|
||||
drflac_uint32 blockSize = 0;
|
||||
if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize))
|
||||
return DRFLAC_FALSE;
|
||||
|
||||
|
@ -137,7 +137,6 @@ buildCore()
|
||||
rm -f libretro_wiiu.a
|
||||
cp $distDir/$core libretro_wiiu.a
|
||||
make -f Makefile.wiiu \
|
||||
PC_DEVELOPMENT_IP_ADDRESS=$PC_DEVELOPMENT_IP_ADDRESS \
|
||||
PC_DEVELOPMENT_TCP_PORT=$PC_DEVELOPMENT_TCP_PORT \
|
||||
-j3 || exit 1
|
||||
|
||||
|
@ -14,54 +14,46 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <boolean.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/iosupport.h>
|
||||
#include <net/net_compat.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <wiiu/types.h>
|
||||
#include <wiiu/ac.h>
|
||||
#include <file/file_path.h>
|
||||
#include <string/stdstring.h>
|
||||
#include <retro_timers.h>
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
#include <lists/file_list.h>
|
||||
#endif
|
||||
|
||||
#include "../frontend_driver.h"
|
||||
#include "../frontend.h"
|
||||
#include "../../verbosity.h"
|
||||
#include "../../defaults.h"
|
||||
#include "../../paths.h"
|
||||
#include "retroarch.h"
|
||||
#include "file_path_special.h"
|
||||
#include "audio/audio_driver.h"
|
||||
#include <string/stdstring.h>
|
||||
|
||||
|
||||
#include "tasks/tasks_internal.h"
|
||||
#include "../../retroarch.h"
|
||||
#include <net/net_compat.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "fs/fs_utils.h"
|
||||
#include "fs/sd_fat_devoptab.h"
|
||||
#include "system/dynamic.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/exception_handler.h"
|
||||
#include <sys/iosupport.h>
|
||||
#include <wiiu/syshid.h>
|
||||
#include <wiiu/os/foreground.h>
|
||||
#include <wiiu/gx2/event.h>
|
||||
#include <wiiu/gx2.h>
|
||||
#include <wiiu/kpad.h>
|
||||
#include <wiiu/ios.h>
|
||||
#include <wiiu/os.h>
|
||||
#include <wiiu/procui.h>
|
||||
#include <wiiu/sysapp.h>
|
||||
#include <wiiu/ios.h>
|
||||
#include <wiiu/vpad.h>
|
||||
#include <wiiu/kpad.h>
|
||||
|
||||
#include <fat.h>
|
||||
#include <iosuhax.h>
|
||||
#include "wiiu_dbg.h"
|
||||
#include "file_path_special.h"
|
||||
|
||||
#include "../frontend.h"
|
||||
#include "../frontend_driver.h"
|
||||
#include "../../defaults.h"
|
||||
#include "../../paths.h"
|
||||
#include "../../verbosity.h"
|
||||
#include "../../retroarch.h"
|
||||
#include "../../gfx/video_driver.h"
|
||||
|
||||
|
||||
#include "hbl.h"
|
||||
#include "wiiu_dbg.h"
|
||||
#include "system/exception_handler.h"
|
||||
#include "tasks/tasks_internal.h"
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
#ifdef HAVE_MENU
|
||||
@ -69,10 +61,13 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//#define WIIU_SD_PATH "/vol/external01/"
|
||||
#define WIIU_SD_PATH "sd:/"
|
||||
#define WIIU_USB_PATH "usb:/"
|
||||
|
||||
/**
|
||||
* The Wii U frontend driver, along with the main() method.
|
||||
*/
|
||||
|
||||
static enum frontend_fork wiiu_fork_mode = FRONTEND_FORK_NONE;
|
||||
static const char *elf_path_cst = WIIU_SD_PATH "retroarch/retroarch.elf";
|
||||
|
||||
@ -311,129 +306,66 @@ frontend_ctx_driver_t frontend_ctx_wiiu =
|
||||
NULL, /* get_video_driver */
|
||||
};
|
||||
|
||||
/* main() and its supporting functions */
|
||||
|
||||
static void main_setup(void);
|
||||
static void get_arguments(int *argc, char ***argv);
|
||||
static void do_rarch_main(int argc, char **argv);
|
||||
static void main_loop(void);
|
||||
static void main_teardown(void);
|
||||
|
||||
static void init_network(void);
|
||||
static void deinit_network(void);
|
||||
static void init_logging(void);
|
||||
static void deinit_logging(void);
|
||||
static void wiiu_log_init(int port);
|
||||
static void wiiu_log_deinit(void);
|
||||
static ssize_t wiiu_log_write(struct _reent *r, void *fd, const char *ptr, size_t len);
|
||||
static void init_pad_libraries(void);
|
||||
static void deinit_pad_libraries(void);
|
||||
static void SaveCallback(void);
|
||||
static bool swap_is_pending(void *start_time);
|
||||
|
||||
static struct sockaddr_in broadcast;
|
||||
static int wiiu_log_socket = -1;
|
||||
static volatile int wiiu_log_lock = 0;
|
||||
|
||||
void wiiu_log_init(const char *ipString, int port)
|
||||
{
|
||||
wiiu_log_lock = 0;
|
||||
|
||||
wiiu_log_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
|
||||
if (wiiu_log_socket < 0)
|
||||
return;
|
||||
|
||||
struct sockaddr_in connect_addr;
|
||||
memset(&connect_addr, 0, sizeof(connect_addr));
|
||||
connect_addr.sin_family = AF_INET;
|
||||
connect_addr.sin_port = port;
|
||||
inet_aton(ipString, &connect_addr.sin_addr);
|
||||
|
||||
if (connect(wiiu_log_socket, (struct sockaddr *)&connect_addr, sizeof(connect_addr)) < 0)
|
||||
{
|
||||
socketclose(wiiu_log_socket);
|
||||
wiiu_log_socket = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void wiiu_log_deinit(void)
|
||||
{
|
||||
if (wiiu_log_socket >= 0)
|
||||
{
|
||||
socketclose(wiiu_log_socket);
|
||||
wiiu_log_socket = -1;
|
||||
}
|
||||
}
|
||||
static ssize_t wiiu_log_write(struct _reent *r, void *fd, const char *ptr, size_t len)
|
||||
{
|
||||
if (wiiu_log_socket < 0)
|
||||
return len;
|
||||
|
||||
while (wiiu_log_lock)
|
||||
OSSleepTicks(((248625000 / 4)) / 1000);
|
||||
|
||||
wiiu_log_lock = 1;
|
||||
|
||||
int ret;
|
||||
int remaining = len;
|
||||
|
||||
while (remaining > 0)
|
||||
{
|
||||
int block = remaining < 1400 ? remaining : 1400; // take max 1400 bytes per UDP packet
|
||||
ret = send(wiiu_log_socket, ptr, block, 0);
|
||||
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
||||
remaining -= ret;
|
||||
ptr += ret;
|
||||
}
|
||||
|
||||
wiiu_log_lock = 0;
|
||||
|
||||
return len;
|
||||
}
|
||||
void net_print(const char *str)
|
||||
{
|
||||
wiiu_log_write(NULL, 0, str, strlen(str));
|
||||
}
|
||||
|
||||
void net_print_exp(const char *str)
|
||||
{
|
||||
send(wiiu_log_socket, str, strlen(str), 0);
|
||||
}
|
||||
|
||||
#if defined(PC_DEVELOPMENT_IP_ADDRESS) && defined(PC_DEVELOPMENT_TCP_PORT)
|
||||
static devoptab_t dotab_stdout =
|
||||
{
|
||||
"stdout_net", // device name
|
||||
0, // size of file structure
|
||||
NULL, // device open
|
||||
NULL, // device close
|
||||
wiiu_log_write, // device write
|
||||
NULL,
|
||||
/* ... */
|
||||
};
|
||||
#if !defined(PC_DEVELOPMENT_TCP_PORT)
|
||||
#define PC_DEVELOPMENT_TCP_PORT 4405
|
||||
#endif
|
||||
|
||||
void SaveCallback(void)
|
||||
static devoptab_t dotab_stdout =
|
||||
{
|
||||
OSSavesDone_ReadyToRelease();
|
||||
}
|
||||
|
||||
static bool swap_is_pending(void* start_time)
|
||||
{
|
||||
uint32_t swap_count, flip_count;
|
||||
OSTime last_flip , last_vsync;
|
||||
|
||||
GX2GetSwapStatus(&swap_count, &flip_count, &last_flip, &last_vsync);
|
||||
|
||||
return last_vsync < *(OSTime*)start_time;
|
||||
}
|
||||
"stdout_net", /* device name */
|
||||
0, /* size of file structure */
|
||||
NULL, /* device open */
|
||||
NULL, /* device close */
|
||||
wiiu_log_write, /* device write */
|
||||
NULL, /* ... */
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
setup_os_exceptions();
|
||||
ProcUIInit(&SaveCallback);
|
||||
main_setup();
|
||||
get_arguments(&argc, &argv);
|
||||
|
||||
#ifdef IS_SALAMANDER
|
||||
socket_lib_init();
|
||||
int salamander_main(int argc, char **argv);
|
||||
salamander_main(argc, argv);
|
||||
#else
|
||||
network_init();
|
||||
#endif
|
||||
#if defined(PC_DEVELOPMENT_IP_ADDRESS) && defined(PC_DEVELOPMENT_TCP_PORT)
|
||||
wiiu_log_init(PC_DEVELOPMENT_IP_ADDRESS, PC_DEVELOPMENT_TCP_PORT);
|
||||
devoptab_list[STD_OUT] = &dotab_stdout;
|
||||
devoptab_list[STD_ERR] = &dotab_stdout;
|
||||
#endif
|
||||
#ifndef IS_SALAMANDER
|
||||
VPADInit();
|
||||
WPADEnableURCC(true);
|
||||
WPADEnableWiiRemote(true);
|
||||
KPADInit();
|
||||
#endif
|
||||
verbosity_enable();
|
||||
fflush(stdout);
|
||||
do_rarch_main(argc, argv);
|
||||
main_loop();
|
||||
main_exit(NULL);
|
||||
#endif /* IS_SALAMANDER */
|
||||
main_teardown();
|
||||
|
||||
/* We always return 0 because if we don't, it can prevent loading a
|
||||
* different RPX/ELF in HBL. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void get_arguments(int *argc, char ***argv)
|
||||
{
|
||||
DEBUG_VAR(ARGV_PTR);
|
||||
if(ARGV_PTR && ((u32)ARGV_PTR < 0x01000000))
|
||||
{
|
||||
@ -441,215 +373,253 @@ int main(int argc, char **argv)
|
||||
{
|
||||
u32 magic;
|
||||
u32 argc;
|
||||
char * argv[3];
|
||||
}*param = ARGV_PTR;
|
||||
char *argv[3];
|
||||
} *param = ARGV_PTR;
|
||||
if(param->magic == ARGV_MAGIC)
|
||||
{
|
||||
argc = param->argc;
|
||||
argv = param->argv;
|
||||
*argc = param->argc;
|
||||
*argv = param->argv;
|
||||
}
|
||||
ARGV_PTR = NULL;
|
||||
}
|
||||
|
||||
DEBUG_VAR(argc);
|
||||
DEBUG_STR(argv[0]);
|
||||
DEBUG_STR(argv[1]);
|
||||
DEBUG_VAR(argv[0]);
|
||||
DEBUG_VAR(argv[1]);
|
||||
fflush(stdout);
|
||||
#ifdef IS_SALAMANDER
|
||||
int salamander_main(int, char **);
|
||||
salamander_main(argc, argv);
|
||||
#else
|
||||
#if 1
|
||||
#if 0
|
||||
int argc_ = 2;
|
||||
// char* argv_[] = {WIIU_SD_PATH "retroarch/retroarch.elf", WIIU_SD_PATH "rom.nes", NULL};
|
||||
char *argv_[] = {WIIU_SD_PATH "retroarch/retroarch.elf", WIIU_SD_PATH "rom.sfc", NULL};
|
||||
}
|
||||
|
||||
static void main_setup(void)
|
||||
{
|
||||
setup_os_exceptions();
|
||||
ProcUIInit(&SaveCallback);
|
||||
init_network();
|
||||
init_logging();
|
||||
init_pad_libraries();
|
||||
verbosity_enable();
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
static void main_teardown(void)
|
||||
{
|
||||
deinit_pad_libraries();
|
||||
ProcUIShutdown();
|
||||
deinit_logging();
|
||||
deinit_network();
|
||||
}
|
||||
|
||||
static void main_loop(void)
|
||||
{
|
||||
unsigned sleep_ms = 0;
|
||||
OSTime start_time;
|
||||
int status;
|
||||
|
||||
rarch_main(argc_, argv_, NULL);
|
||||
#else
|
||||
rarch_main(argc, argv, NULL);
|
||||
#endif
|
||||
do
|
||||
{
|
||||
unsigned sleep_ms = 0;
|
||||
|
||||
if(video_driver_get_ptr(false))
|
||||
{
|
||||
OSTime start_time = OSGetSystemTime();
|
||||
start_time = OSGetSystemTime();
|
||||
task_queue_wait(swap_is_pending, &start_time);
|
||||
}
|
||||
else
|
||||
task_queue_wait(NULL, NULL);
|
||||
|
||||
int ret = runloop_iterate(&sleep_ms);
|
||||
status = runloop_iterate(&sleep_ms);
|
||||
|
||||
if (ret == 1 && sleep_ms > 0)
|
||||
retro_sleep(sleep_ms);
|
||||
if(status == 1 && sleep_ms > 0)
|
||||
usleep(sleep_ms);
|
||||
|
||||
|
||||
if (ret == -1)
|
||||
if(status == -1)
|
||||
break;
|
||||
} while(true);
|
||||
}
|
||||
|
||||
}
|
||||
while (1);
|
||||
main_exit(NULL);
|
||||
#endif
|
||||
#endif
|
||||
static void do_rarch_main(int argc, char **argv)
|
||||
{
|
||||
#if 0
|
||||
int argc_ = 2;
|
||||
char *argv_[] = { WIIU_SD_PATH "retroarch/retroarch.elf",
|
||||
WIIU_SD_PATH "rom.sfc",
|
||||
NULL };
|
||||
rarch_main(argc_, argv_, NULL);
|
||||
#else
|
||||
rarch_main(argc, argv, NULL);
|
||||
#endif /* if 0 */
|
||||
}
|
||||
|
||||
static void SaveCallback(void)
|
||||
{
|
||||
OSSavesDone_ReadyToRelease();
|
||||
}
|
||||
|
||||
static bool swap_is_pending(void *start_time)
|
||||
{
|
||||
uint32_t swap_count, flip_count;
|
||||
OSTime last_flip, last_vsync;
|
||||
|
||||
GX2GetSwapStatus(&swap_count, &flip_count, &last_flip, &last_vsync);
|
||||
return last_vsync < *(OSTime *)start_time;
|
||||
}
|
||||
|
||||
static void init_network(void)
|
||||
{
|
||||
ACInitialize();
|
||||
ACConnect();
|
||||
#ifdef IS_SALAMANDER
|
||||
socket_lib_init();
|
||||
#else
|
||||
network_init();
|
||||
#endif /* IS_SALAMANDER */
|
||||
}
|
||||
|
||||
static void deinit_network(void)
|
||||
{
|
||||
ACClose();
|
||||
ACFinalize();
|
||||
}
|
||||
|
||||
int getBroadcastAddress(ACIpAddress *broadcast)
|
||||
{
|
||||
ACIpAddress myIp, mySubnet;
|
||||
ACResult result;
|
||||
|
||||
if(broadcast == NULL)
|
||||
return -1;
|
||||
|
||||
result = ACGetAssignedAddress(&myIp);
|
||||
if(result < 0)
|
||||
return -1;
|
||||
result = ACGetAssignedSubnet(&mySubnet);
|
||||
if(result < 0)
|
||||
return -1;
|
||||
|
||||
*broadcast = myIp | (~mySubnet);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void init_logging(void)
|
||||
{
|
||||
wiiu_log_init(PC_DEVELOPMENT_TCP_PORT);
|
||||
devoptab_list[STD_OUT] = &dotab_stdout;
|
||||
devoptab_list[STD_ERR] = &dotab_stdout;
|
||||
}
|
||||
|
||||
static void deinit_logging(void)
|
||||
{
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
ProcUIShutdown();
|
||||
|
||||
#if defined(PC_DEVELOPMENT_IP_ADDRESS) && defined(PC_DEVELOPMENT_TCP_PORT)
|
||||
wiiu_log_deinit();
|
||||
#endif
|
||||
|
||||
/* returning non 0 here can prevent loading a different rpx/elf in the HBL environment */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __eabi(void)
|
||||
static int broadcast_init(int port)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
__attribute__((weak))
|
||||
void __init(void)
|
||||
{
|
||||
extern void (*const __CTOR_LIST__)(void);
|
||||
extern void (*const __CTOR_END__)(void);
|
||||
|
||||
void (*const *ctor)(void) = &__CTOR_LIST__;
|
||||
while (ctor < &__CTOR_END__) {
|
||||
(*ctor++)();
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((weak))
|
||||
void __fini(void)
|
||||
{
|
||||
extern void (*const __DTOR_LIST__)(void);
|
||||
extern void (*const __DTOR_END__)(void);
|
||||
|
||||
void (*const *dtor)(void) = &__DTOR_LIST__;
|
||||
while (dtor < &__DTOR_END__) {
|
||||
(*dtor++)();
|
||||
}
|
||||
}
|
||||
|
||||
/* libiosuhax related */
|
||||
|
||||
//just to be able to call async
|
||||
void someFunc(void *arg)
|
||||
{
|
||||
(void)arg;
|
||||
}
|
||||
|
||||
static int mcp_hook_fd = -1;
|
||||
|
||||
int MCPHookOpen(void)
|
||||
{
|
||||
//take over mcp thread
|
||||
mcp_hook_fd = IOS_Open("/dev/mcp", 0);
|
||||
|
||||
if (mcp_hook_fd < 0)
|
||||
ACIpAddress broadcast_ip;
|
||||
if(getBroadcastAddress(&broadcast_ip) < 0)
|
||||
return -1;
|
||||
|
||||
IOS_IoctlAsync(mcp_hook_fd, 0x62, (void *)0, 0, (void *)0, 0, someFunc, (void *)0);
|
||||
//let wupserver start up
|
||||
retro_sleep(1000);
|
||||
|
||||
if (IOSUHAX_Open("/dev/mcp") < 0)
|
||||
{
|
||||
IOS_Close(mcp_hook_fd);
|
||||
mcp_hook_fd = -1;
|
||||
return -1;
|
||||
}
|
||||
memset(&broadcast, 0, sizeof(broadcast));
|
||||
broadcast.sin_family = AF_INET;
|
||||
broadcast.sin_port = htons(port);
|
||||
broadcast.sin_addr.s_addr = htonl(broadcast_ip);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MCPHookClose(void)
|
||||
static void wiiu_log_init(int port)
|
||||
{
|
||||
if (mcp_hook_fd < 0)
|
||||
wiiu_log_lock = 0;
|
||||
|
||||
if(broadcast_init(port) < 0)
|
||||
return;
|
||||
|
||||
//close down wupserver, return control to mcp
|
||||
IOSUHAX_Close();
|
||||
//wait for mcp to return
|
||||
retro_sleep(1000);
|
||||
IOS_Close(mcp_hook_fd);
|
||||
mcp_hook_fd = -1;
|
||||
}
|
||||
wiiu_log_socket = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
||||
if(wiiu_log_socket < 0)
|
||||
return;
|
||||
|
||||
static int iosuhaxMount = 0;
|
||||
struct sockaddr_in connect_addr;
|
||||
memset(&connect_addr, 0, sizeof(connect_addr));
|
||||
connect_addr.sin_family = AF_INET;
|
||||
connect_addr.sin_port = 0;
|
||||
connect_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
static void fsdev_init(void)
|
||||
{
|
||||
iosuhaxMount = 0;
|
||||
int res = IOSUHAX_Open(NULL);
|
||||
|
||||
if (res < 0)
|
||||
res = MCPHookOpen();
|
||||
|
||||
if (res < 0)
|
||||
mount_sd_fat("sd");
|
||||
else
|
||||
if( bind(wiiu_log_socket, (struct sockaddr *)&connect_addr, sizeof(connect_addr)) < 0)
|
||||
{
|
||||
iosuhaxMount = 1;
|
||||
fatInitDefault();
|
||||
socketclose(wiiu_log_socket);
|
||||
wiiu_log_socket = -1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
static void fsdev_exit(void)
|
||||
|
||||
static void wiiu_log_deinit(void)
|
||||
{
|
||||
if (iosuhaxMount)
|
||||
if(wiiu_log_socket >= 0)
|
||||
{
|
||||
fatUnmount("sd:");
|
||||
fatUnmount("usb:");
|
||||
|
||||
if (mcp_hook_fd >= 0)
|
||||
MCPHookClose();
|
||||
else
|
||||
IOSUHAX_Close();
|
||||
socketclose(wiiu_log_socket);
|
||||
wiiu_log_socket = -1;
|
||||
}
|
||||
else
|
||||
unmount_sd_fat("sd");
|
||||
|
||||
}
|
||||
|
||||
/* HBL elf entry point */
|
||||
int __entry_menu(int argc, char **argv)
|
||||
static void init_pad_libraries(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
InitFunctionPointers();
|
||||
memoryInitialize();
|
||||
__init();
|
||||
fsdev_init();
|
||||
|
||||
ret = main(argc, argv);
|
||||
|
||||
fsdev_exit();
|
||||
__fini();
|
||||
memoryRelease();
|
||||
return ret;
|
||||
#ifndef IS_SALAMANDER
|
||||
KPADInit();
|
||||
WPADEnableURCC(true);
|
||||
WPADEnableWiiRemote(true);
|
||||
#endif /* IS_SALAMANDER */
|
||||
}
|
||||
/* RPX entry point */
|
||||
__attribute__((noreturn))
|
||||
void _start(int argc, char **argv)
|
||||
|
||||
static void deinit_pad_libraries(void)
|
||||
{
|
||||
memoryInitialize();
|
||||
__init();
|
||||
fsdev_init();
|
||||
main(argc, argv);
|
||||
fsdev_exit();
|
||||
|
||||
/* TODO: fix elf2rpl so it doesn't error with "Could not find matching symbol
|
||||
for relocation" then uncomment this */
|
||||
#if 0
|
||||
__fini();
|
||||
#endif
|
||||
memoryRelease();
|
||||
SYSRelaunchTitle(0, 0);
|
||||
exit(0);
|
||||
#ifndef IS_SALAMANDER
|
||||
KPADShutdown();
|
||||
#endif /* IS_SALAMANDER */
|
||||
}
|
||||
|
||||
/* logging routines */
|
||||
|
||||
void net_print(const char *str)
|
||||
{
|
||||
wiiu_log_write(NULL, 0, str, strlen(str));
|
||||
}
|
||||
|
||||
void net_print_exp(const char *str)
|
||||
{
|
||||
sendto(wiiu_log_socket, str, strlen(str), 0, (struct sockaddr *)&broadcast, sizeof(broadcast));
|
||||
}
|
||||
|
||||
/* RFC 791 specifies that any IP host must be able to receive a datagram of 576 bytes.
|
||||
* Since we're generally never logging more than a line or two's worth of data (~100 bytes)
|
||||
* this is a reasonable size for our use. */
|
||||
#define DGRAM_SIZE 576
|
||||
|
||||
static ssize_t wiiu_log_write(struct _reent *r, void *fd, const char *ptr, size_t len)
|
||||
{
|
||||
if( wiiu_log_socket < 0)
|
||||
return len;
|
||||
|
||||
while(wiiu_log_lock)
|
||||
OSSleepTicks(((248625000 / 4)) / 1000);
|
||||
|
||||
wiiu_log_lock = 1;
|
||||
|
||||
int sent;
|
||||
int remaining = len;
|
||||
|
||||
while(remaining > 0)
|
||||
{
|
||||
int block = remaining < DGRAM_SIZE ? remaining : DGRAM_SIZE;
|
||||
sent = sendto(wiiu_log_socket, ptr, block, 0, (struct sockaddr *)&broadcast, sizeof(broadcast));
|
||||
|
||||
if(sent < 0)
|
||||
break;
|
||||
|
||||
remaining -= sent;
|
||||
ptr += sent;
|
||||
}
|
||||
|
||||
wiiu_log_lock = 0;
|
||||
|
||||
return len;
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ void main_exit(void *args)
|
||||
int rarch_main(int argc, char *argv[], void *data)
|
||||
{
|
||||
void *args = (void*)data;
|
||||
#ifdef HAVE_MAIN
|
||||
#if defined(HAVE_MAIN) && defined(HAVE_QT)
|
||||
const ui_application_t *ui_application = NULL;
|
||||
#endif
|
||||
|
||||
@ -134,7 +134,7 @@ int rarch_main(int argc, char *argv[], void *data)
|
||||
|
||||
ui_companion_driver_init_first();
|
||||
|
||||
#ifndef HAVE_MAIN
|
||||
#if !defined(HAVE_MAIN)
|
||||
do
|
||||
{
|
||||
unsigned sleep_ms = 0;
|
||||
@ -150,7 +150,7 @@ int rarch_main(int argc, char *argv[], void *data)
|
||||
}while(1);
|
||||
|
||||
main_exit(args);
|
||||
#elif HAVE_QT
|
||||
#elif defined(HAVE_QT)
|
||||
ui_application = ui_companion_driver_get_qt_application_ptr();
|
||||
|
||||
if (ui_application && ui_application->run)
|
||||
|
@ -22,11 +22,56 @@
|
||||
|
||||
#include <d3d8.h>
|
||||
|
||||
#include "../drivers/d3d.h"
|
||||
#include "../video_driver.h"
|
||||
#include "../../verbosity.h"
|
||||
|
||||
RETRO_BEGIN_DECLS
|
||||
|
||||
typedef struct d3d8_video
|
||||
{
|
||||
bool keep_aspect;
|
||||
bool should_resize;
|
||||
bool quitting;
|
||||
bool needs_restore;
|
||||
bool overlays_enabled;
|
||||
/* TODO - refactor this away properly. */
|
||||
bool resolution_hd_enable;
|
||||
|
||||
unsigned cur_mon_id;
|
||||
unsigned dev_rotation;
|
||||
|
||||
overlay_t *menu;
|
||||
const d3d_renderchain_driver_t *renderchain_driver;
|
||||
void *renderchain_data;
|
||||
|
||||
RECT font_rect;
|
||||
RECT font_rect_shifted;
|
||||
math_matrix_4x4 mvp;
|
||||
math_matrix_4x4 mvp_rotate;
|
||||
math_matrix_4x4 mvp_transposed;
|
||||
|
||||
struct video_viewport vp;
|
||||
struct video_shader shader;
|
||||
video_info_t video_info;
|
||||
WNDCLASSEX windowClass;
|
||||
LPDIRECT3DDEVICE8 dev;
|
||||
d3d_video_viewport_t final_viewport;
|
||||
|
||||
char *shader_path;
|
||||
|
||||
struct
|
||||
{
|
||||
int size;
|
||||
int offset;
|
||||
void *buffer;
|
||||
void *decl;
|
||||
}menu_display;
|
||||
|
||||
size_t overlays_size;
|
||||
overlay_t *overlays;
|
||||
} d3d8_video_t;
|
||||
|
||||
static INLINE bool d3d8_swap(void *data, LPDIRECT3DDEVICE8 dev)
|
||||
{
|
||||
if (IDirect3DDevice8_Present(dev, NULL, NULL, NULL, NULL)
|
||||
|
@ -19,14 +19,60 @@
|
||||
#include <boolean.h>
|
||||
#include <retro_common_api.h>
|
||||
#include <retro_inline.h>
|
||||
#include <gfx/math/matrix_4x4.h>
|
||||
|
||||
#include <d3d9.h>
|
||||
|
||||
#include "../drivers/d3d.h"
|
||||
#include "../video_driver.h"
|
||||
#include "../../verbosity.h"
|
||||
|
||||
RETRO_BEGIN_DECLS
|
||||
|
||||
typedef struct d3d9_video
|
||||
{
|
||||
bool keep_aspect;
|
||||
bool should_resize;
|
||||
bool quitting;
|
||||
bool needs_restore;
|
||||
bool overlays_enabled;
|
||||
/* TODO - refactor this away properly. */
|
||||
bool resolution_hd_enable;
|
||||
|
||||
unsigned cur_mon_id;
|
||||
unsigned dev_rotation;
|
||||
|
||||
overlay_t *menu;
|
||||
const d3d_renderchain_driver_t *renderchain_driver;
|
||||
void *renderchain_data;
|
||||
|
||||
RECT font_rect;
|
||||
RECT font_rect_shifted;
|
||||
math_matrix_4x4 mvp;
|
||||
math_matrix_4x4 mvp_rotate;
|
||||
math_matrix_4x4 mvp_transposed;
|
||||
|
||||
struct video_viewport vp;
|
||||
struct video_shader shader;
|
||||
video_info_t video_info;
|
||||
WNDCLASSEX windowClass;
|
||||
LPDIRECT3DDEVICE9 dev;
|
||||
d3d_video_viewport_t final_viewport;
|
||||
|
||||
char *shader_path;
|
||||
|
||||
struct
|
||||
{
|
||||
int size;
|
||||
int offset;
|
||||
void *buffer;
|
||||
void *decl;
|
||||
}menu_display;
|
||||
|
||||
size_t overlays_size;
|
||||
overlay_t *overlays;
|
||||
} d3d9_video_t;
|
||||
|
||||
static INLINE bool d3d9_swap(void *data, LPDIRECT3DDEVICE9 dev)
|
||||
{
|
||||
#ifdef _XBOX
|
||||
|
@ -92,6 +92,176 @@ extern void *dinput_wgl;
|
||||
extern void *dinput;
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED_CUSTOM = 0,
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE_CUSTOM = 1,
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_CUSTOM = 2,
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST_CUSTOM = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_CUSTOM,
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST_CUSTOM = 3,
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE_CUSTOM = 1,
|
||||
DISPLAYCONFIG_MODE_INFO_TYPE_TARGET_CUSTOM = 2,
|
||||
DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE_CUSTOM = 3,
|
||||
DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_MODE_INFO_TYPE_CUSTOM;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_PIXELFORMAT_8BPP_CUSTOM = 1,
|
||||
DISPLAYCONFIG_PIXELFORMAT_16BPP_CUSTOM = 2,
|
||||
DISPLAYCONFIG_PIXELFORMAT_24BPP_CUSTOM = 3,
|
||||
DISPLAYCONFIG_PIXELFORMAT_32BPP_CUSTOM = 4,
|
||||
DISPLAYCONFIG_PIXELFORMAT_NONGDI_CUSTOM = 5,
|
||||
DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32_CUSTOM = 0xffffffff
|
||||
} DISPLAYCONFIG_PIXELFORMAT_CUSTOM;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER_CUSTOM = -1,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15_CUSTOM = 0,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO_CUSTOM = 1,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO_CUSTOM = 2,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO_CUSTOM = 3,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI_CUSTOM = 4,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI_CUSTOM = 5,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS_CUSTOM = 6,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN_CUSTOM = 8,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI_CUSTOM = 9,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL_CUSTOM = 10,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED_CUSTOM = 11,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL_CUSTOM = 12,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED_CUSTOM = 13,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE_CUSTOM = 14,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST_CUSTOM = 15,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL_CUSTOM = 0x80000000,
|
||||
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY_CUSTOM;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_ROTATION_IDENTITY_CUSTOM = 1,
|
||||
DISPLAYCONFIG_ROTATION_ROTATE90_CUSTOM = 2,
|
||||
DISPLAYCONFIG_ROTATION_ROTATE180_CUSTOM = 3,
|
||||
DISPLAYCONFIG_ROTATION_ROTATE270_CUSTOM = 4,
|
||||
DISPLAYCONFIG_ROTATION_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_ROTATION_CUSTOM;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_SCALING_IDENTITY_CUSTOM = 1,
|
||||
DISPLAYCONFIG_SCALING_CENTERED_CUSTOM = 2,
|
||||
DISPLAYCONFIG_SCALING_STRETCHED_CUSTOM = 3,
|
||||
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX_CUSTOM = 4,
|
||||
DISPLAYCONFIG_SCALING_CUSTOM_CUSTOM = 5,
|
||||
DISPLAYCONFIG_SCALING_PREFERRED_CUSTOM = 128,
|
||||
DISPLAYCONFIG_SCALING_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_SCALING_CUST;
|
||||
|
||||
typedef enum {
|
||||
DISPLAYCONFIG_TOPOLOGY_INTERNAL_CUSTOM = 0x00000001,
|
||||
DISPLAYCONFIG_TOPOLOGY_CLONE_CUSTOM = 0x00000002,
|
||||
DISPLAYCONFIG_TOPOLOGY_EXTEND_CUSTOM = 0x00000004,
|
||||
DISPLAYCONFIG_TOPOLOGY_EXTERNAL_CUSTOM = 0x00000008,
|
||||
DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32_CUSTOM = 0xFFFFFFFF
|
||||
} DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_RATIONAL_CUSTOM {
|
||||
UINT32 Numerator;
|
||||
UINT32 Denominator;
|
||||
} DISPLAYCONFIG_RATIONAL_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_2DREGION_CUSTOM {
|
||||
UINT32 cx;
|
||||
UINT32 cy;
|
||||
} DISPLAYCONFIG_2DREGION_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM {
|
||||
UINT64 pixelRate;
|
||||
DISPLAYCONFIG_RATIONAL_CUSTOM hSyncFreq;
|
||||
DISPLAYCONFIG_RATIONAL_CUSTOM vSyncFreq;
|
||||
DISPLAYCONFIG_2DREGION_CUSTOM activeSize;
|
||||
DISPLAYCONFIG_2DREGION_CUSTOM totalSize;
|
||||
union {
|
||||
struct {
|
||||
UINT32 videoStandard :16;
|
||||
UINT32 vSyncFreqDivider :6;
|
||||
UINT32 reserved :10;
|
||||
} AdditionalSignalInfo;
|
||||
UINT32 videoStandard;
|
||||
};
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM scanLineOrdering;
|
||||
} DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_TARGET_MODE_CUSTOM {
|
||||
DISPLAYCONFIG_VIDEO_SIGNAL_INFO_CUSTOM targetVideoSignalInfo;
|
||||
} DISPLAYCONFIG_TARGET_MODE_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM {
|
||||
LUID adapterId;
|
||||
UINT32 id;
|
||||
union {
|
||||
UINT32 modeInfoIdx;
|
||||
struct {
|
||||
UINT32 cloneGroupId :16;
|
||||
UINT32 sourceModeInfoIdx :16;
|
||||
} DUMMYSTRUCTNAME;
|
||||
} DUMMYUNIONNAME;
|
||||
UINT32 statusFlags;
|
||||
} DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM {
|
||||
POINTL PathSourceSize;
|
||||
RECTL DesktopImageRegion;
|
||||
RECTL DesktopImageClip;
|
||||
} DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_SOURCE_MODE_CUSTOM {
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
DISPLAYCONFIG_PIXELFORMAT_CUSTOM pixelFormat;
|
||||
POINTL position;
|
||||
} DISPLAYCONFIG_SOURCE_MODE_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_MODE_INFO_CUSTOM {
|
||||
DISPLAYCONFIG_MODE_INFO_TYPE_CUSTOM infoType;
|
||||
UINT32 id;
|
||||
LUID adapterId;
|
||||
union {
|
||||
DISPLAYCONFIG_TARGET_MODE_CUSTOM targetMode;
|
||||
DISPLAYCONFIG_SOURCE_MODE_CUSTOM sourceMode;
|
||||
DISPLAYCONFIG_DESKTOP_IMAGE_INFO_CUSTOM desktopImageInfo;
|
||||
};
|
||||
} DISPLAYCONFIG_MODE_INFO_CUSTOM;
|
||||
|
||||
typedef struct DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM {
|
||||
LUID adapterId;
|
||||
UINT32 id;
|
||||
union {
|
||||
UINT32 modeInfoIdx;
|
||||
struct {
|
||||
UINT32 desktopModeInfoIdx :16;
|
||||
UINT32 targetModeInfoIdx :16;
|
||||
};
|
||||
};
|
||||
DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY_CUSTOM outputTechnology;
|
||||
DISPLAYCONFIG_ROTATION_CUSTOM rotation;
|
||||
DISPLAYCONFIG_SCALING_CUST scaling;
|
||||
DISPLAYCONFIG_RATIONAL_CUSTOM refreshRate;
|
||||
DISPLAYCONFIG_SCANLINE_ORDERING_CUSTOM scanLineOrdering;
|
||||
BOOL targetAvailable;
|
||||
UINT32 statusFlags;
|
||||
} DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM;
|
||||
|
||||
|
||||
|
||||
typedef struct DISPLAYCONFIG_PATH_INFO_CUSTOM {
|
||||
DISPLAYCONFIG_PATH_SOURCE_INFO_CUSTOM sourceInfo;
|
||||
DISPLAYCONFIG_PATH_TARGET_INFO_CUSTOM targetInfo;
|
||||
UINT32 flags;
|
||||
} DISPLAYCONFIG_PATH_INFO_CUSTOM;
|
||||
|
||||
typedef LONG (WINAPI *QUERYDISPLAYCONFIG)(UINT32, UINT32*, DISPLAYCONFIG_PATH_INFO_CUSTOM*, UINT32*, DISPLAYCONFIG_MODE_INFO_CUSTOM*, DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM*);
|
||||
typedef LONG (WINAPI *GETDISPLAYCONFIGBUFFERSIZES)(UINT32, UINT32*, UINT32*);
|
||||
|
||||
static bool g_resized = false;
|
||||
bool g_restore_desktop = false;
|
||||
static bool doubleclick_on_titlebar = false;
|
||||
@ -1270,12 +1440,24 @@ float win32_get_refresh_rate(void *data)
|
||||
float refresh_rate = 0.0f;
|
||||
#if _WIN32_WINNT >= 0x0601 || _WIN32_WINDOWS >= 0x0601 /* Win 7 */
|
||||
OSVERSIONINFO version_info;
|
||||
DISPLAYCONFIG_TOPOLOGY_ID TopologyID;
|
||||
DISPLAYCONFIG_TOPOLOGY_ID_CUSTOM TopologyID;
|
||||
unsigned int NumPathArrayElements = 0;
|
||||
unsigned int NumModeInfoArrayElements = 0;
|
||||
DISPLAYCONFIG_PATH_INFO *PathInfoArray = NULL;
|
||||
DISPLAYCONFIG_MODE_INFO *ModeInfoArray = NULL;
|
||||
DISPLAYCONFIG_PATH_INFO_CUSTOM *PathInfoArray = NULL;
|
||||
DISPLAYCONFIG_MODE_INFO_CUSTOM *ModeInfoArray = NULL;
|
||||
int result = 0;
|
||||
#ifdef HAVE_DYNAMIC
|
||||
static QUERYDISPLAYCONFIG pQueryDisplayConfig;
|
||||
static GETDISPLAYCONFIGBUFFERSIZES pGetDisplayConfigBufferSizes;
|
||||
if (!pQueryDisplayConfig)
|
||||
pQueryDisplayConfig = (QUERYDISPLAYCONFIG)GetProcAddress(GetModuleHandle("user32.dll"), "QueryDisplayConfig");
|
||||
|
||||
if (!pGetDisplayConfigBufferSizes)
|
||||
pGetDisplayConfigBufferSizes = (GETDISPLAYCONFIGBUFFERSIZES)GetProcAddress(GetModuleHandle("user32.dll"), "GetDisplayConfigBufferSizes");
|
||||
#else
|
||||
static QUERYDISPLAYCONFIG pQueryDisplayConfig = QueryDisplayConfig;
|
||||
static GETDISPLAYCONFIGBUFFERSIZES pGetDisplayConfigBufferSizes = GetDisplayConfigBufferSizes;
|
||||
#endif
|
||||
|
||||
version_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
if (!GetVersionEx(&version_info))
|
||||
@ -1285,24 +1467,25 @@ float win32_get_refresh_rate(void *data)
|
||||
(version_info.dwMajorVersion == 6 && version_info.dwMinorVersion < 1))
|
||||
return refresh_rate;
|
||||
|
||||
result = GetDisplayConfigBufferSizes(QDC_DATABASE_CURRENT,
|
||||
result = pGetDisplayConfigBufferSizes(QDC_DATABASE_CURRENT,
|
||||
&NumPathArrayElements,
|
||||
&NumModeInfoArrayElements);
|
||||
|
||||
if (result != ERROR_SUCCESS)
|
||||
return refresh_rate;
|
||||
|
||||
PathInfoArray = (DISPLAYCONFIG_PATH_INFO *)
|
||||
malloc(sizeof(DISPLAYCONFIG_PATH_INFO) * NumPathArrayElements);
|
||||
ModeInfoArray = (DISPLAYCONFIG_MODE_INFO *)
|
||||
malloc(sizeof(DISPLAYCONFIG_MODE_INFO) * NumModeInfoArrayElements);
|
||||
PathInfoArray = (DISPLAYCONFIG_PATH_INFO_CUSTOM *)
|
||||
malloc(sizeof(DISPLAYCONFIG_PATH_INFO_CUSTOM) * NumPathArrayElements);
|
||||
ModeInfoArray = (DISPLAYCONFIG_MODE_INFO_CUSTOM *)
|
||||
malloc(sizeof(DISPLAYCONFIG_MODE_INFO_CUSTOM) * NumModeInfoArrayElements);
|
||||
|
||||
result = QueryDisplayConfig(QDC_DATABASE_CURRENT,
|
||||
result = pQueryDisplayConfig(QDC_DATABASE_CURRENT,
|
||||
&NumPathArrayElements,
|
||||
PathInfoArray,
|
||||
&NumModeInfoArrayElements,
|
||||
ModeInfoArray,
|
||||
&TopologyID);
|
||||
|
||||
if (result == ERROR_SUCCESS && NumPathArrayElements >= 1)
|
||||
{
|
||||
refresh_rate = (float) PathInfoArray[0].targetInfo.refreshRate.Numerator /
|
||||
|
@ -103,7 +103,7 @@ static bool x11_set_resolution(void *data,
|
||||
|
||||
crt_en = true;
|
||||
|
||||
hsp = width*1.12;
|
||||
hsp = width*1.14;
|
||||
|
||||
/* set core refresh from hz */
|
||||
video_monitor_set_refresh_rate(hz);
|
||||
|
@ -17,8 +17,6 @@
|
||||
#ifndef __D3DVIDEO_INTF_H__
|
||||
#define __D3DVIDEO_INTF_H__
|
||||
|
||||
#include <gfx/math/matrix_4x4.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../../config.h"
|
||||
#endif
|
||||
@ -64,49 +62,5 @@ typedef struct d3d_video_viewport
|
||||
float max_z;
|
||||
} d3d_video_viewport_t;
|
||||
|
||||
typedef struct d3d_video
|
||||
{
|
||||
bool keep_aspect;
|
||||
bool should_resize;
|
||||
bool quitting;
|
||||
bool needs_restore;
|
||||
bool overlays_enabled;
|
||||
/* TODO - refactor this away properly. */
|
||||
bool resolution_hd_enable;
|
||||
|
||||
unsigned cur_mon_id;
|
||||
unsigned dev_rotation;
|
||||
|
||||
overlay_t *menu;
|
||||
const d3d_renderchain_driver_t *renderchain_driver;
|
||||
void *renderchain_data;
|
||||
|
||||
RECT font_rect;
|
||||
RECT font_rect_shifted;
|
||||
math_matrix_4x4 mvp;
|
||||
math_matrix_4x4 mvp_rotate;
|
||||
math_matrix_4x4 mvp_transposed;
|
||||
|
||||
struct video_viewport vp;
|
||||
struct video_shader shader;
|
||||
video_info_t video_info;
|
||||
WNDCLASSEX windowClass;
|
||||
void *dev;
|
||||
d3d_video_viewport_t final_viewport;
|
||||
|
||||
char *shader_path;
|
||||
|
||||
struct
|
||||
{
|
||||
int size;
|
||||
int offset;
|
||||
void *buffer;
|
||||
void *decl;
|
||||
}menu_display;
|
||||
|
||||
size_t overlays_size;
|
||||
overlay_t *overlays;
|
||||
} d3d_video_t;
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -616,7 +616,8 @@ d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** i
|
||||
{
|
||||
D3D_FEATURE_LEVEL_11_0,
|
||||
D3D_FEATURE_LEVEL_10_1,
|
||||
D3D_FEATURE_LEVEL_10_0
|
||||
D3D_FEATURE_LEVEL_10_0,
|
||||
D3D_FEATURE_LEVEL_9_3
|
||||
};
|
||||
DXGI_SWAP_CHAIN_DESC desc = { 0 };
|
||||
UINT number_feature_levels = ARRAY_SIZE(requested_feature_levels);
|
||||
@ -631,16 +632,19 @@ d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** i
|
||||
desc.OutputWindow = main_window.hwnd;
|
||||
desc.SampleDesc.Count = 1;
|
||||
desc.SampleDesc.Quality = 0;
|
||||
desc.Windowed = TRUE;
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_SEQUENTIAL;
|
||||
#if 0
|
||||
desc.Scaling = DXGI_SCALING_STRETCH;
|
||||
#endif
|
||||
desc.Windowed = TRUE;
|
||||
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
|
||||
/* On phone, no swap effects are supported. */
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
|
||||
#else
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_SEQUENTIAL;
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
flags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||
flags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||
#endif
|
||||
if(cached_device_d3d11 && cached_context)
|
||||
{
|
||||
|
@ -92,7 +92,7 @@ static void d3d8_renderchain_set_mvp(
|
||||
const void *mat_data)
|
||||
{
|
||||
D3DMATRIX matrix;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
d3d_matrix_identity(&matrix);
|
||||
|
||||
@ -108,7 +108,7 @@ static void d3d8_renderchain_set_mvp(
|
||||
static bool d3d8_renderchain_create_first_pass(void *data,
|
||||
const video_info_t *info)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
|
||||
@ -145,7 +145,7 @@ static void d3d8_renderchain_set_vertices(void *data, unsigned pass,
|
||||
unsigned vert_width, unsigned vert_height, uint64_t frame_count)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
d3d8_renderchain_t *chain = d3d ? (d3d8_renderchain_t*)d3d->renderchain_data : NULL;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
@ -254,7 +254,7 @@ static void d3d8_renderchain_viewport_info(void *data,
|
||||
struct video_viewport *vp)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d || !vp)
|
||||
return;
|
||||
@ -271,7 +271,7 @@ static void d3d8_renderchain_viewport_info(void *data,
|
||||
}
|
||||
|
||||
static void d3d8_renderchain_render_pass(
|
||||
d3d_video_t *d3d, LPDIRECT3DDEVICE8 d3dr,
|
||||
d3d8_video_t *d3d, LPDIRECT3DDEVICE8 d3dr,
|
||||
d3d8_renderchain_t *chain,
|
||||
unsigned pass_index,
|
||||
unsigned rotation)
|
||||
@ -298,7 +298,7 @@ static bool d3d8_renderchain_render(void *data, const void *frame,
|
||||
unsigned frame_width, unsigned frame_height,
|
||||
unsigned pitch, unsigned rotation)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)d3d->renderchain_data;
|
||||
|
||||
@ -320,7 +320,7 @@ static bool d3d8_renderchain_init(void *data,
|
||||
)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
LPDIRECT3DDEVICE8 d3dr = (LPDIRECT3DDEVICE8)d3d->dev;
|
||||
const video_info_t *video_info = (const video_info_t*)_video_info;
|
||||
const struct LinkInfo *link_info = (const struct LinkInfo*)info_data;
|
||||
@ -330,7 +330,7 @@ static bool d3d8_renderchain_init(void *data,
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
chain->dev = (LPDIRECT3DDEVICE8)dev_data;
|
||||
chain->dev = dev_data;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
chain->tex_w = link_info->tex_w;
|
||||
chain->tex_h = link_info->tex_h;
|
||||
@ -357,7 +357,7 @@ static void *d3d8_renderchain_new(void)
|
||||
return renderchain;
|
||||
}
|
||||
|
||||
static bool d3d8_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
|
||||
static bool d3d8_init_chain(d3d8_video_t *d3d, const video_info_t *video_info)
|
||||
{
|
||||
struct LinkInfo link_info;
|
||||
unsigned current_width, current_height, out_width, out_height;
|
||||
@ -394,7 +394,7 @@ static bool d3d8_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool d3d8_init_singlepass(d3d_video_t *d3d)
|
||||
static bool d3d8_init_singlepass(d3d8_video_t *d3d)
|
||||
{
|
||||
struct video_shader_pass *pass = NULL;
|
||||
|
||||
@ -422,7 +422,7 @@ static bool d3d8_init_singlepass(d3d_video_t *d3d)
|
||||
|
||||
static void d3d8_viewport_info(void *data, struct video_viewport *vp)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (d3d)
|
||||
d3d8_renderchain_viewport_info(d3d, vp);
|
||||
@ -432,12 +432,12 @@ static void d3d8_set_mvp(void *data,
|
||||
void *shader_data,
|
||||
const void *mat_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
if (d3d)
|
||||
d3d8_renderchain_set_mvp(d3d, d3d->renderchain_data, shader_data, mat_data);
|
||||
}
|
||||
|
||||
static void d3d8_overlay_render(d3d_video_t *d3d,
|
||||
static void d3d8_overlay_render(d3d8_video_t *d3d,
|
||||
video_frame_info_t *video_info,
|
||||
overlay_t *overlay, bool force_linear)
|
||||
{
|
||||
@ -535,7 +535,7 @@ static void d3d8_overlay_render(d3d_video_t *d3d,
|
||||
d3d8_set_viewports(d3d->dev, &d3d->final_viewport);
|
||||
}
|
||||
|
||||
static void d3d8_free_overlay(d3d_video_t *d3d, overlay_t *overlay)
|
||||
static void d3d8_free_overlay(d3d8_video_t *d3d, overlay_t *overlay)
|
||||
{
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -544,14 +544,14 @@ static void d3d8_free_overlay(d3d_video_t *d3d, overlay_t *overlay)
|
||||
d3d8_vertex_buffer_free(overlay->vert_buf, NULL);
|
||||
}
|
||||
|
||||
static void d3d8_deinit_chain(d3d_video_t *d3d)
|
||||
static void d3d8_deinit_chain(d3d8_video_t *d3d)
|
||||
{
|
||||
d3d8_renderchain_free(d3d->renderchain_data);
|
||||
|
||||
d3d->renderchain_data = NULL;
|
||||
}
|
||||
|
||||
static void d3d8_deinitialize(d3d_video_t *d3d)
|
||||
static void d3d8_deinitialize(d3d8_video_t *d3d)
|
||||
{
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -596,7 +596,7 @@ static bool d3d8_is_windowed_enable(bool info_fullscreen)
|
||||
}
|
||||
|
||||
#ifdef _XBOX
|
||||
static void d3d8_get_video_size(d3d_video_t *d3d,
|
||||
static void d3d8_get_video_size(d3d8_video_t *d3d,
|
||||
unsigned *width, unsigned *height)
|
||||
{
|
||||
DWORD video_mode = XGetVideoFlags();
|
||||
@ -662,7 +662,7 @@ static void d3d8_get_video_size(d3d_video_t *d3d,
|
||||
static void d3d8_make_d3dpp(void *data,
|
||||
const video_info_t *info, void *_d3dpp)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
D3DPRESENT_PARAMETERS *d3dpp = (D3DPRESENT_PARAMETERS*)_d3dpp;
|
||||
bool windowed_enable = d3d8_is_windowed_enable(info->fullscreen);
|
||||
|
||||
@ -762,7 +762,7 @@ static bool d3d8_init_base(void *data, const video_info_t *info)
|
||||
{
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
HWND focus_window = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
#ifndef _XBOX
|
||||
focus_window = win32_get_window();
|
||||
@ -801,7 +801,7 @@ static void d3d8_calculate_rect(void *data,
|
||||
bool allow_rotate)
|
||||
{
|
||||
float device_aspect = (float)*width / *height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
video_driver_get_size(width, height);
|
||||
@ -881,7 +881,7 @@ static void d3d8_set_viewport(void *data,
|
||||
D3DMATRIX proj, ortho, rot, matrix;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
d3d8_calculate_rect(data, &width, &height, &x, &y,
|
||||
force_full, allow_rotate);
|
||||
@ -907,7 +907,7 @@ static void d3d8_set_viewport(void *data,
|
||||
d3d_matrix_transpose(&d3d->mvp_rotate, &matrix);
|
||||
}
|
||||
|
||||
static bool d3d8_initialize(d3d_video_t *d3d, const video_info_t *info)
|
||||
static bool d3d8_initialize(d3d8_video_t *d3d, const video_info_t *info)
|
||||
{
|
||||
unsigned width, height;
|
||||
bool ret = true;
|
||||
@ -982,7 +982,7 @@ static bool d3d8_initialize(d3d_video_t *d3d, const video_info_t *info)
|
||||
|
||||
static bool d3d8_restore(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return false;
|
||||
@ -1004,7 +1004,7 @@ static bool d3d8_restore(void *data)
|
||||
static void d3d8_set_nonblock_state(void *data, bool state)
|
||||
{
|
||||
unsigned interval = state ? 0 : 1;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1022,7 +1022,7 @@ static void d3d8_set_nonblock_state(void *data, bool state)
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool d3d8_set_resize(d3d_video_t *d3d,
|
||||
static bool d3d8_set_resize(d3d8_video_t *d3d,
|
||||
unsigned new_width, unsigned new_height)
|
||||
{
|
||||
/* No changes? */
|
||||
@ -1043,7 +1043,7 @@ static bool d3d8_alive(void *data)
|
||||
unsigned temp_width = 0;
|
||||
unsigned temp_height = 0;
|
||||
bool ret = false;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
bool quit = false;
|
||||
bool resize = false;
|
||||
|
||||
@ -1083,7 +1083,7 @@ static bool d3d8_suppress_screensaver(void *data, bool enable)
|
||||
|
||||
static void d3d8_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
@ -1115,7 +1115,7 @@ static void d3d8_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
|
||||
static void d3d8_apply_state_changes(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
if (d3d)
|
||||
d3d->should_resize = true;
|
||||
}
|
||||
@ -1125,7 +1125,7 @@ static void d3d8_set_osd_msg(void *data,
|
||||
const char *msg,
|
||||
const void *params, void *font)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
d3d8_begin_scene(d3d->dev);
|
||||
font_driver_render_msg(video_info, font, msg, params);
|
||||
@ -1163,7 +1163,7 @@ static void d3d8_input_driver(
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool d3d8_init_internal(d3d_video_t *d3d,
|
||||
static bool d3d8_init_internal(d3d8_video_t *d3d,
|
||||
const video_info_t *info, const input_driver_t **input,
|
||||
void **input_data)
|
||||
{
|
||||
@ -1259,7 +1259,7 @@ static bool d3d8_init_internal(d3d_video_t *d3d,
|
||||
|
||||
static void d3d8_set_rotation(void *data, unsigned rot)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1278,7 +1278,7 @@ static void d3d8_show_mouse(void *data, bool state)
|
||||
static void *d3d8_init(const video_info_t *info,
|
||||
const input_driver_t **input, void **input_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)calloc(1, sizeof(*d3d));
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)calloc(1, sizeof(*d3d));
|
||||
|
||||
if (!d3d)
|
||||
return NULL;
|
||||
@ -1317,7 +1317,7 @@ static void *d3d8_init(const video_info_t *info,
|
||||
}
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
static void d3d8_free_overlays(d3d_video_t *d3d)
|
||||
static void d3d8_free_overlays(d3d8_video_t *d3d)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
@ -1334,7 +1334,7 @@ static void d3d8_free_overlays(d3d_video_t *d3d)
|
||||
|
||||
static void d3d8_free(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1378,7 +1378,7 @@ static void d3d8_overlay_tex_geom(
|
||||
float x, float y,
|
||||
float w, float h)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
@ -1400,7 +1400,7 @@ static void d3d8_overlay_vertex_geom(
|
||||
float x, float y,
|
||||
float w, float h)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
@ -1417,7 +1417,7 @@ static bool d3d8_overlay_load(void *data,
|
||||
{
|
||||
unsigned i, y;
|
||||
overlay_t *new_overlays = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
const struct texture_image *images = (const struct texture_image*)
|
||||
image_data;
|
||||
|
||||
@ -1474,7 +1474,7 @@ static bool d3d8_overlay_load(void *data,
|
||||
static void d3d8_overlay_enable(void *data, bool state)
|
||||
{
|
||||
unsigned i;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1488,7 +1488,7 @@ static void d3d8_overlay_enable(void *data, bool state)
|
||||
static void d3d8_overlay_full_screen(void *data, bool enable)
|
||||
{
|
||||
unsigned i;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
for (i = 0; i < d3d->overlays_size; i++)
|
||||
d3d->overlays[i].fullscreen = enable;
|
||||
@ -1496,7 +1496,7 @@ static void d3d8_overlay_full_screen(void *data, bool enable)
|
||||
|
||||
static void d3d8_overlay_set_alpha(void *data, unsigned index, float mod)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
if (d3d)
|
||||
d3d->overlays[index].alpha_mod = mod;
|
||||
}
|
||||
@ -1559,7 +1559,7 @@ static bool d3d8_frame(void *data, const void *frame,
|
||||
{
|
||||
D3DVIEWPORT8 screen_vp;
|
||||
unsigned i = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
unsigned width = video_info->width;
|
||||
unsigned height = video_info->height;
|
||||
(void)i;
|
||||
@ -1683,7 +1683,7 @@ static void d3d8_set_menu_texture_frame(void *data,
|
||||
float alpha)
|
||||
{
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
(void)d3dlr;
|
||||
(void)frame;
|
||||
@ -1768,7 +1768,7 @@ static void d3d8_set_menu_texture_frame(void *data,
|
||||
static void d3d8_set_menu_texture_enable(void *data,
|
||||
bool state, bool full_screen)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
|
||||
if (!d3d || !d3d->menu)
|
||||
return;
|
||||
@ -1790,7 +1790,7 @@ static void d3d8_video_texture_load_d3d(
|
||||
{
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
unsigned usage = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)info->userdata;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)info->userdata;
|
||||
struct texture_image *ti = (struct texture_image*)info->data;
|
||||
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)d3d8_texture_new(d3d->dev, NULL,
|
||||
ti->width, ti->height, 0,
|
||||
|
@ -74,7 +74,7 @@ void *dinput;
|
||||
static bool d3d9_widescreen_mode = false;
|
||||
#endif
|
||||
|
||||
static bool d3d9_set_resize(d3d_video_t *d3d,
|
||||
static bool d3d9_set_resize(d3d9_video_t *d3d,
|
||||
unsigned new_width, unsigned new_height)
|
||||
{
|
||||
/* No changes? */
|
||||
@ -90,7 +90,7 @@ static bool d3d9_set_resize(d3d_video_t *d3d,
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool d3d9_init_imports(d3d_video_t *d3d)
|
||||
static bool d3d9_init_imports(d3d9_video_t *d3d)
|
||||
{
|
||||
retro_ctx_memory_info_t mem_info;
|
||||
state_tracker_t *state_tracker = NULL;
|
||||
@ -182,7 +182,7 @@ static bool renderchain_d3d_init_first(
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool d3d9_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
|
||||
static bool d3d9_init_chain(d3d9_video_t *d3d, const video_info_t *video_info)
|
||||
{
|
||||
struct LinkInfo link_info;
|
||||
unsigned current_width, current_height, out_width, out_height;
|
||||
@ -289,7 +289,7 @@ static bool d3d9_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool d3d9_init_singlepass(d3d_video_t *d3d)
|
||||
static bool d3d9_init_singlepass(d3d9_video_t *d3d)
|
||||
{
|
||||
struct video_shader_pass *pass = NULL;
|
||||
|
||||
@ -315,7 +315,7 @@ static bool d3d9_init_singlepass(d3d_video_t *d3d)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool d3d9_init_multipass(d3d_video_t *d3d, const char *shader_path)
|
||||
static bool d3d9_init_multipass(d3d9_video_t *d3d, const char *shader_path)
|
||||
{
|
||||
unsigned i;
|
||||
bool use_extra_pass = false;
|
||||
@ -383,7 +383,7 @@ static bool d3d9_init_multipass(d3d_video_t *d3d, const char *shader_path)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool d3d9_process_shader(d3d_video_t *d3d)
|
||||
static bool d3d9_process_shader(d3d9_video_t *d3d)
|
||||
{
|
||||
const char *shader_path = d3d->shader_path;
|
||||
if (d3d && !string_is_empty(shader_path) &&
|
||||
@ -395,7 +395,7 @@ static bool d3d9_process_shader(d3d_video_t *d3d)
|
||||
|
||||
static void d3d9_viewport_info(void *data, struct video_viewport *vp)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if ( d3d &&
|
||||
d3d->renderchain_driver &&
|
||||
@ -407,16 +407,17 @@ static void d3d9_set_mvp(void *data,
|
||||
void *shader_data,
|
||||
const void *mat_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
d3d9_set_vertex_shader_constantf(d3d->dev, 0, (const float*)mat_data, 4);
|
||||
}
|
||||
|
||||
static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
static void d3d9_overlay_render(d3d9_video_t *d3d,
|
||||
video_frame_info_t *video_info,
|
||||
overlay_t *overlay, bool force_linear)
|
||||
{
|
||||
D3DTEXTUREFILTERTYPE filter_type;
|
||||
LPDIRECT3DVERTEXDECLARATION9 vertex_decl;
|
||||
LPDIRECT3DDEVICE9 dev;
|
||||
struct video_viewport vp;
|
||||
void *verts;
|
||||
unsigned i;
|
||||
@ -436,10 +437,12 @@ static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
if (!d3d || !overlay || !overlay->tex)
|
||||
return;
|
||||
|
||||
dev = d3d->dev;
|
||||
|
||||
if (!overlay->vert_buf)
|
||||
{
|
||||
overlay->vert_buf = d3d9_vertex_buffer_new(
|
||||
d3d->dev, sizeof(vert), D3DUSAGE_WRITEONLY,
|
||||
dev, sizeof(vert), D3DUSAGE_WRITEONLY,
|
||||
#ifdef _XBOX
|
||||
0,
|
||||
#else
|
||||
@ -477,18 +480,18 @@ static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
vert[2].v = overlay->tex_coords[1] + overlay->tex_coords[3];
|
||||
vert[3].v = overlay->tex_coords[1] + overlay->tex_coords[3];
|
||||
|
||||
verts = d3d9_vertex_buffer_lock(overlay->vert_buf);
|
||||
verts = d3d9_vertex_buffer_lock((LPDIRECT3DVERTEXBUFFER9)overlay->vert_buf);
|
||||
memcpy(verts, vert, sizeof(vert));
|
||||
d3d9_vertex_buffer_unlock(overlay->vert_buf);
|
||||
d3d9_vertex_buffer_unlock((LPDIRECT3DVERTEXBUFFER9)overlay->vert_buf);
|
||||
|
||||
d3d9_enable_blend_func(d3d->dev);
|
||||
|
||||
/* set vertex declaration for overlay. */
|
||||
d3d9_vertex_declaration_new(d3d->dev, &vElems, (void**)&vertex_decl);
|
||||
d3d9_set_vertex_declaration(d3d->dev, vertex_decl);
|
||||
d3d9_vertex_declaration_new(dev, &vElems, (void**)&vertex_decl);
|
||||
d3d9_set_vertex_declaration(dev, vertex_decl);
|
||||
d3d9_vertex_declaration_free(vertex_decl);
|
||||
|
||||
d3d9_set_stream_source(d3d->dev, 0, overlay->vert_buf,
|
||||
d3d9_set_stream_source(dev, 0, (LPDIRECT3DVERTEXBUFFER9)overlay->vert_buf,
|
||||
0, sizeof(*vert));
|
||||
|
||||
if (overlay->fullscreen)
|
||||
@ -501,7 +504,7 @@ static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
vp_full.Height = height;
|
||||
vp_full.MinZ = 0.0f;
|
||||
vp_full.MaxZ = 1.0f;
|
||||
d3d9_set_viewports(d3d->dev, &vp_full);
|
||||
d3d9_set_viewports(dev, &vp_full);
|
||||
}
|
||||
|
||||
filter_type = D3DTEXF_LINEAR;
|
||||
@ -514,28 +517,28 @@ static void d3d9_overlay_render(d3d_video_t *d3d,
|
||||
}
|
||||
|
||||
/* Render overlay. */
|
||||
d3d9_set_texture(d3d->dev, 0, overlay->tex);
|
||||
d3d9_set_sampler_address_u(d3d->dev, 0, D3DTADDRESS_BORDER);
|
||||
d3d9_set_sampler_address_v(d3d->dev, 0, D3DTADDRESS_BORDER);
|
||||
d3d9_set_sampler_minfilter(d3d->dev, 0, filter_type);
|
||||
d3d9_set_sampler_magfilter(d3d->dev, 0, filter_type);
|
||||
d3d9_draw_primitive(d3d->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
d3d9_set_texture(dev, 0, (LPDIRECT3DTEXTURE9)overlay->tex);
|
||||
d3d9_set_sampler_address_u(dev, 0, D3DTADDRESS_BORDER);
|
||||
d3d9_set_sampler_address_v(dev, 0, D3DTADDRESS_BORDER);
|
||||
d3d9_set_sampler_minfilter(dev, 0, filter_type);
|
||||
d3d9_set_sampler_magfilter(dev, 0, filter_type);
|
||||
d3d9_draw_primitive(dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
|
||||
/* Restore previous state. */
|
||||
d3d9_disable_blend_func(d3d->dev);
|
||||
d3d9_set_viewports(d3d->dev, &d3d->final_viewport);
|
||||
d3d9_disable_blend_func(dev);
|
||||
d3d9_set_viewports(dev, &d3d->final_viewport);
|
||||
}
|
||||
|
||||
static void d3d9_free_overlay(d3d_video_t *d3d, overlay_t *overlay)
|
||||
static void d3d9_free_overlay(d3d9_video_t *d3d, overlay_t *overlay)
|
||||
{
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
d3d9_texture_free(overlay->tex);
|
||||
d3d9_texture_free((LPDIRECT3DTEXTURE9)overlay->tex);
|
||||
d3d9_vertex_buffer_free(overlay->vert_buf, NULL);
|
||||
}
|
||||
|
||||
static void d3d9_deinit_chain(d3d_video_t *d3d)
|
||||
static void d3d9_deinit_chain(d3d9_video_t *d3d)
|
||||
{
|
||||
if (!d3d || !d3d->renderchain_driver)
|
||||
return;
|
||||
@ -547,7 +550,7 @@ static void d3d9_deinit_chain(d3d_video_t *d3d)
|
||||
d3d->renderchain_data = NULL;
|
||||
}
|
||||
|
||||
static void d3d9_deinitialize(d3d_video_t *d3d)
|
||||
static void d3d9_deinitialize(d3d9_video_t *d3d)
|
||||
{
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -597,7 +600,7 @@ static bool d3d9_is_windowed_enable(bool info_fullscreen)
|
||||
}
|
||||
|
||||
#ifdef _XBOX
|
||||
static void d3d9_get_video_size(d3d_video_t *d3d,
|
||||
static void d3d9_get_video_size(d3d9_video_t *d3d,
|
||||
unsigned *width, unsigned *height)
|
||||
{
|
||||
XVIDEO_MODE video_mode;
|
||||
@ -628,7 +631,7 @@ static void d3d9_get_video_size(d3d_video_t *d3d,
|
||||
void d3d9_make_d3dpp(void *data,
|
||||
const video_info_t *info, void *_d3dpp)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
D3DPRESENT_PARAMETERS *d3dpp = (D3DPRESENT_PARAMETERS*)_d3dpp;
|
||||
#ifdef _XBOX
|
||||
/* TODO/FIXME - get rid of global state dependencies. */
|
||||
@ -708,11 +711,11 @@ void d3d9_make_d3dpp(void *data,
|
||||
static bool d3d9_init_base(void *data, const video_info_t *info)
|
||||
{
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
HWND focus_window = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
HWND focus_window = NULL;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
#ifndef _XBOX
|
||||
focus_window = win32_get_window();
|
||||
focus_window = win32_get_window();
|
||||
#endif
|
||||
|
||||
memset(&d3dpp, 0, sizeof(d3dpp));
|
||||
@ -747,9 +750,9 @@ static void d3d9_calculate_rect(void *data,
|
||||
bool force_full,
|
||||
bool allow_rotate)
|
||||
{
|
||||
float device_aspect = (float)*width / *height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
float device_aspect = (float)*width / *height;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
video_driver_get_size(width, height);
|
||||
|
||||
@ -827,7 +830,7 @@ static void d3d9_set_viewport(void *data,
|
||||
{
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
d3d9_calculate_rect(data, &width, &height, &x, &y,
|
||||
force_full, allow_rotate);
|
||||
@ -849,7 +852,7 @@ static void d3d9_set_viewport(void *data,
|
||||
d3d->renderchain_driver->set_font_rect(d3d, NULL);
|
||||
}
|
||||
|
||||
static bool d3d9_initialize(d3d_video_t *d3d, const video_info_t *info)
|
||||
static bool d3d9_initialize(d3d9_video_t *d3d, const video_info_t *info)
|
||||
{
|
||||
unsigned width, height;
|
||||
bool ret = true;
|
||||
@ -947,7 +950,7 @@ static bool d3d9_initialize(d3d_video_t *d3d, const video_info_t *info)
|
||||
|
||||
static bool d3d9_restore(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return false;
|
||||
@ -969,7 +972,7 @@ static bool d3d9_restore(void *data)
|
||||
static void d3d9_set_nonblock_state(void *data, bool state)
|
||||
{
|
||||
unsigned interval = state ? 0 : 1;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -990,12 +993,12 @@ static void d3d9_set_nonblock_state(void *data, bool state)
|
||||
|
||||
static bool d3d9_alive(void *data)
|
||||
{
|
||||
unsigned temp_width = 0;
|
||||
unsigned temp_height = 0;
|
||||
bool ret = false;
|
||||
bool quit = false;
|
||||
bool resize = false;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
unsigned temp_width = 0;
|
||||
unsigned temp_height = 0;
|
||||
bool ret = false;
|
||||
bool quit = false;
|
||||
bool resize = false;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
/* Needed because some context drivers don't track their sizes */
|
||||
video_driver_get_size(&temp_width, &temp_height);
|
||||
@ -1034,7 +1037,7 @@ static bool d3d9_suppress_screensaver(void *data, bool enable)
|
||||
|
||||
static void d3d9_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
@ -1066,7 +1069,7 @@ static void d3d9_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
|
||||
static void d3d9_apply_state_changes(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
if (d3d)
|
||||
d3d->should_resize = true;
|
||||
}
|
||||
@ -1076,14 +1079,15 @@ static void d3d9_set_osd_msg(void *data,
|
||||
const char *msg,
|
||||
const void *params, void *font)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
LPDIRECT3DDEVICE9 dev = d3d->dev;
|
||||
|
||||
if (d3d->renderchain_driver->set_font_rect && params)
|
||||
d3d->renderchain_driver->set_font_rect(d3d, params);
|
||||
|
||||
d3d9_begin_scene(d3d->dev);
|
||||
d3d9_begin_scene(dev);
|
||||
font_driver_render_msg(video_info, font, msg, (const struct font_params *)params);
|
||||
d3d9_end_scene(d3d->dev);
|
||||
d3d9_end_scene(dev);
|
||||
}
|
||||
|
||||
static void d3d9_input_driver(
|
||||
@ -1118,7 +1122,7 @@ static void d3d9_input_driver(
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool d3d9_init_internal(d3d_video_t *d3d,
|
||||
static bool d3d9_init_internal(d3d9_video_t *d3d,
|
||||
const video_info_t *info, const input_driver_t **input,
|
||||
void **input_data)
|
||||
{
|
||||
@ -1238,7 +1242,7 @@ static bool d3d9_init_internal(d3d_video_t *d3d,
|
||||
|
||||
static void d3d9_set_rotation(void *data, unsigned rot)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
struct video_ortho ortho = {0, 1, 0, 1, -1, 1};
|
||||
|
||||
if (!d3d)
|
||||
@ -1257,7 +1261,7 @@ static void d3d9_show_mouse(void *data, bool state)
|
||||
static void *d3d9_init(const video_info_t *info,
|
||||
const input_driver_t **input, void **input_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)calloc(1, sizeof(*d3d));
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)calloc(1, sizeof(*d3d));
|
||||
|
||||
if (!d3d)
|
||||
return NULL;
|
||||
@ -1296,7 +1300,7 @@ static void *d3d9_init(const video_info_t *info,
|
||||
}
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
static void d3d9_free_overlays(d3d_video_t *d3d)
|
||||
static void d3d9_free_overlays(d3d9_video_t *d3d)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
@ -1313,7 +1317,7 @@ static void d3d9_free_overlays(d3d_video_t *d3d)
|
||||
|
||||
static void d3d9_free(void *data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1357,7 +1361,8 @@ static void d3d9_overlay_tex_geom(
|
||||
float x, float y,
|
||||
float w, float h)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
@ -1373,7 +1378,8 @@ static void d3d9_overlay_vertex_geom(
|
||||
float x, float y,
|
||||
float w, float h)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
@ -1390,7 +1396,7 @@ static bool d3d9_overlay_load(void *data,
|
||||
{
|
||||
unsigned i, y;
|
||||
overlay_t *new_overlays = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
const struct texture_image *images = (const struct texture_image*)
|
||||
image_data;
|
||||
|
||||
@ -1421,7 +1427,7 @@ static bool d3d9_overlay_load(void *data,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (d3d9_lock_rectangle(overlay->tex, 0, &d3dlr,
|
||||
if (d3d9_lock_rectangle((LPDIRECT3DTEXTURE9)overlay->tex, 0, &d3dlr,
|
||||
NULL, 0, D3DLOCK_NOSYSLOCK))
|
||||
{
|
||||
uint32_t *dst = (uint32_t*)(d3dlr.pBits);
|
||||
@ -1430,7 +1436,7 @@ static bool d3d9_overlay_load(void *data,
|
||||
|
||||
for (y = 0; y < height; y++, dst += pitch, src += width)
|
||||
memcpy(dst, src, width << 2);
|
||||
d3d9_unlock_rectangle(overlay->tex);
|
||||
d3d9_unlock_rectangle((LPDIRECT3DTEXTURE9)overlay->tex);
|
||||
}
|
||||
|
||||
overlay->tex_w = width;
|
||||
@ -1447,7 +1453,7 @@ static bool d3d9_overlay_load(void *data,
|
||||
static void d3d9_overlay_enable(void *data, bool state)
|
||||
{
|
||||
unsigned i;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -1461,7 +1467,7 @@ static void d3d9_overlay_enable(void *data, bool state)
|
||||
static void d3d9_overlay_full_screen(void *data, bool enable)
|
||||
{
|
||||
unsigned i;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
for (i = 0; i < d3d->overlays_size; i++)
|
||||
d3d->overlays[i].fullscreen = enable;
|
||||
@ -1469,7 +1475,7 @@ static void d3d9_overlay_full_screen(void *data, bool enable)
|
||||
|
||||
static void d3d9_overlay_set_alpha(void *data, unsigned index, float mod)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
if (d3d)
|
||||
d3d->overlays[index].alpha_mod = mod;
|
||||
}
|
||||
@ -1534,7 +1540,7 @@ static bool d3d9_frame(void *data, const void *frame,
|
||||
{
|
||||
D3DVIEWPORT9 screen_vp;
|
||||
unsigned i = 0;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
unsigned width = video_info->width;
|
||||
unsigned height = video_info->height;
|
||||
(void)i;
|
||||
@ -1605,8 +1611,8 @@ static bool d3d9_frame(void *data, const void *frame,
|
||||
d3d9_overlay_render(d3d, video_info, d3d->menu, false);
|
||||
|
||||
d3d->menu_display.offset = 0;
|
||||
d3d9_set_vertex_declaration(d3d->dev, d3d->menu_display.decl);
|
||||
d3d9_set_stream_source(d3d->dev, 0, d3d->menu_display.buffer, 0, sizeof(Vertex));
|
||||
d3d9_set_vertex_declaration(d3d->dev, (LPDIRECT3DVERTEXDECLARATION9)d3d->menu_display.decl);
|
||||
d3d9_set_stream_source(d3d->dev, 0, (LPDIRECT3DVERTEXBUFFER9)d3d->menu_display.buffer, 0, sizeof(Vertex));
|
||||
|
||||
d3d9_set_viewports(d3d->dev, &screen_vp);
|
||||
menu_driver_frame(video_info);
|
||||
@ -1652,7 +1658,7 @@ static bool d3d9_frame(void *data, const void *frame,
|
||||
|
||||
static bool d3d9_read_viewport(void *data, uint8_t *buffer, bool is_idle)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if ( !d3d ||
|
||||
!d3d->renderchain_driver ||
|
||||
@ -1665,7 +1671,7 @@ static bool d3d9_read_viewport(void *data, uint8_t *buffer, bool is_idle)
|
||||
static bool d3d9_set_shader(void *data,
|
||||
enum rarch_shader_type type, const char *path)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
char *old_shader = (d3d && !string_is_empty(d3d->shader_path)) ? strdup(d3d->shader_path) : NULL;
|
||||
|
||||
if (!string_is_empty(d3d->shader_path))
|
||||
@ -1704,7 +1710,7 @@ static void d3d9_set_menu_texture_frame(void *data,
|
||||
float alpha)
|
||||
{
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
(void)d3dlr;
|
||||
(void)frame;
|
||||
@ -1718,7 +1724,7 @@ static void d3d9_set_menu_texture_frame(void *data,
|
||||
d3d->menu->tex_h != height)
|
||||
{
|
||||
if (d3d->menu)
|
||||
d3d9_texture_free(d3d->menu->tex);
|
||||
d3d9_texture_free((LPDIRECT3DTEXTURE9)d3d->menu->tex);
|
||||
|
||||
d3d->menu->tex = d3d9_texture_new(d3d->dev, NULL,
|
||||
width, height, 1,
|
||||
@ -1737,7 +1743,7 @@ static void d3d9_set_menu_texture_frame(void *data,
|
||||
|
||||
d3d->menu->alpha_mod = alpha;
|
||||
|
||||
if (d3d9_lock_rectangle(d3d->menu->tex, 0, &d3dlr,
|
||||
if (d3d9_lock_rectangle((LPDIRECT3DTEXTURE9)d3d->menu->tex, 0, &d3dlr,
|
||||
NULL, 0, D3DLOCK_NOSYSLOCK))
|
||||
{
|
||||
unsigned h, w;
|
||||
@ -1778,14 +1784,14 @@ static void d3d9_set_menu_texture_frame(void *data,
|
||||
|
||||
|
||||
if (d3d->menu)
|
||||
d3d9_unlock_rectangle(d3d->menu->tex);
|
||||
d3d9_unlock_rectangle((LPDIRECT3DTEXTURE9)d3d->menu->tex);
|
||||
}
|
||||
}
|
||||
|
||||
static void d3d9_set_menu_texture_enable(void *data,
|
||||
bool state, bool full_screen)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d || !d3d->menu)
|
||||
return;
|
||||
@ -1809,7 +1815,7 @@ static void d3d9_video_texture_load_d3d(
|
||||
LPDIRECT3DTEXTURE9 tex = NULL;
|
||||
unsigned usage = 0;
|
||||
bool want_mipmap = false;
|
||||
d3d_video_t *d3d = (d3d_video_t*)info->userdata;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)info->userdata;
|
||||
struct texture_image *ti = (struct texture_image*)info->data;
|
||||
|
||||
if (!ti)
|
||||
|
@ -1296,7 +1296,7 @@ static bool wiiu_gfx_frame(void *data, const void *frame,
|
||||
}
|
||||
|
||||
GX2SetViewport(wiiu->vp.x, wiiu->vp.y, wiiu->vp.width, wiiu->vp.height, 0.0f, 1.0f);
|
||||
GX2SetScissor(wiiu->vp.x, wiiu->vp.y, wiiu->vp.width, wiiu->vp.height);
|
||||
GX2SetScissor(0, 0, wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height);
|
||||
GX2DrawEx(GX2_PRIMITIVE_MODE_QUADS, 4, 0, 1);
|
||||
|
||||
GX2SetShaderMode(GX2_SHADER_MODE_GEOMETRY_SHADER);
|
||||
@ -1311,7 +1311,6 @@ static bool wiiu_gfx_frame(void *data, const void *frame,
|
||||
wiiu->ubo_tex);
|
||||
GX2SetViewport(0.0f, 0.0f, wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height,
|
||||
0.0f, 1.0f);
|
||||
GX2SetScissor(0, 0, wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height);
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
|
||||
|
@ -48,7 +48,7 @@ typedef struct d3dx_font_desc
|
||||
|
||||
typedef struct
|
||||
{
|
||||
d3d_video_t *d3d;
|
||||
d3d9_video_t *d3d;
|
||||
void *font;
|
||||
uint32_t font_size;
|
||||
uint32_t ascent;
|
||||
@ -80,7 +80,7 @@ static void *d3dfonts_w32_init_font(void *video_data,
|
||||
#endif
|
||||
|
||||
d3dfonts->font_size = font_size * 1.2; /* to match the other font drivers */
|
||||
d3dfonts->d3d = (d3d_video_t*)video_data;
|
||||
d3dfonts->d3d = (d3d9_video_t*)video_data;
|
||||
|
||||
desc.Height = d3dfonts->font_size;
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
typedef struct
|
||||
{
|
||||
d3d_video_t *d3d;
|
||||
d3d8_video_t *d3d;
|
||||
XFONT *debug_font;
|
||||
D3DSurface *surf;
|
||||
} xfonts_t;
|
||||
@ -46,7 +46,7 @@ static void *xfonts_init_font(void *video_data,
|
||||
(void)font_path;
|
||||
(void)font_size;
|
||||
|
||||
xfont->d3d = (d3d_video_t*)video_data;
|
||||
xfont->d3d = (d3d8_video_t*)video_data;
|
||||
|
||||
XFONT_OpenDefaultFont(&xfont->debug_font);
|
||||
|
||||
|
@ -49,15 +49,10 @@ struct XPR_HEADER
|
||||
/* structure member offsets matter */
|
||||
struct XBRESOURCE
|
||||
{
|
||||
#if defined(_XBOX1)
|
||||
char *strName;
|
||||
DWORD dwOffset;
|
||||
#elif defined(_XBOX360)
|
||||
DWORD dwType;
|
||||
DWORD dwOffset;
|
||||
DWORD dwSize;
|
||||
char *strName;
|
||||
#endif
|
||||
};
|
||||
|
||||
enum
|
||||
@ -90,39 +85,19 @@ class PackedResource
|
||||
|
||||
BOOL m_bInitialized; /* Resource is fully initialized */
|
||||
|
||||
/* Retrieves the resource tags */
|
||||
void GetResourceTags( DWORD* pdwNumResourceTags, XBRESOURCE** ppResourceTags );
|
||||
/* Functions to retrieve resources by their name */
|
||||
void *GetData( const char* strName );
|
||||
void *GetTexture(const char* strName);
|
||||
LPDIRECT3DTEXTURE9 *GetTexture(const char* strName);
|
||||
|
||||
/* Constructor/destructor */
|
||||
PackedResource();
|
||||
~PackedResource();
|
||||
};
|
||||
|
||||
void *PackedResource::GetTexture(const char* strName)
|
||||
LPDIRECT3DTEXTURE9 *PackedResource::GetTexture(const char* strName)
|
||||
{
|
||||
#ifdef _XBOX1
|
||||
LPDIRECT3DRESOURCE8 pResource = (LPDIRECT3DRESOURCE8)GetData(strName);
|
||||
/* Register the resource, if it has not yet been registered. We mark
|
||||
* a resource as registered by upping it's reference count. */
|
||||
if( pResource && ( pResource->Common & D3DCOMMON_REFCOUNT_MASK ) == 1 )
|
||||
{
|
||||
/* Special case CPU-copy push buffers (which live in system memory) */
|
||||
if( ( pResource->Common & D3DCOMMON_TYPE_PUSHBUFFER ) &&
|
||||
( pResource->Common & D3DPUSHBUFFER_RUN_USING_CPU_COPY ) )
|
||||
pResource->Data += (DWORD)m_pSysMemData;
|
||||
else
|
||||
pResource->Register( m_pVidMemData );
|
||||
|
||||
pResource->AddRef();
|
||||
}
|
||||
return (LPDIRECT3DTEXTURE8)pResource;
|
||||
#elif defined(_XBOX360)
|
||||
LPDIRECT3DRESOURCE9 pResource = (LPDIRECT3DRESOURCE9)GetData(strName);
|
||||
return (LPDIRECT3DTEXTURE9)pResource;
|
||||
#endif
|
||||
LPDIRECT3DRESOURCE9 pResource = (LPDIRECT3DRESOURCE9)GetData(strName);
|
||||
return (LPDIRECT3DTEXTURE9)pResource;
|
||||
}
|
||||
|
||||
PackedResource::PackedResource()
|
||||
@ -146,11 +121,7 @@ void *PackedResource::GetData(const char *strName)
|
||||
if (!m_pResourceTags || !strName)
|
||||
return NULL;
|
||||
|
||||
#if defined(_XBOX1)
|
||||
for (DWORD i=0; m_pResourceTags[i].strName; i++)
|
||||
#elif defined(_XBOX360)
|
||||
for (DWORD i = 0; i < m_dwNumResourceTags; i++)
|
||||
#endif
|
||||
{
|
||||
if (string_is_equal_noncase(strName, m_pResourceTags[i].strName))
|
||||
return &m_pSysMemData[m_pResourceTags[i].dwOffset];
|
||||
@ -161,106 +132,38 @@ void *PackedResource::GetData(const char *strName)
|
||||
|
||||
static INLINE void* AllocateContiguousMemory(DWORD Size, DWORD Alignment)
|
||||
{
|
||||
#if defined(_XBOX1)
|
||||
return D3D_AllocContiguousMemory(Size, Alignment);
|
||||
#elif defined(_XBOX360)
|
||||
return XMemAlloc(Size, MAKE_XALLOC_ATTRIBUTES(0, 0, 0, 0, eXALLOCAllocatorId_GameMax,
|
||||
Alignment, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL));
|
||||
#endif
|
||||
}
|
||||
|
||||
static INLINE void FreeContiguousMemory(void* pData)
|
||||
{
|
||||
#if defined(_XBOX1)
|
||||
return D3D_FreeContiguousMemory(pData);
|
||||
#elif defined(_XBOX360)
|
||||
return XMemFree(pData, MAKE_XALLOC_ATTRIBUTES(0, 0, 0, 0, eXALLOCAllocatorId_GameMax,
|
||||
0, 0, 0, XALLOC_MEMTYPE_PHYSICAL));
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _XBOX1
|
||||
char g_strMediaPath[512] = "D:\\Media\\";
|
||||
|
||||
static HRESULT FindMediaFile(char *strPath, const char *strFilename, size_t strPathsize)
|
||||
{
|
||||
if (!strFilename || !strPath)
|
||||
return E_INVALIDARG;
|
||||
|
||||
strlcpy(strPath, strFilename, strPathsize);
|
||||
|
||||
if(strFilename[1] != ':')
|
||||
snprintf(strPath, strPathsize, "%s%s", g_strMediaPath, strFilename);
|
||||
|
||||
HANDLE hFile = CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, 0, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return 0x82000004;
|
||||
|
||||
CloseHandle(hFile);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
HRESULT PackedResource::Create(const char *strFilename,
|
||||
DWORD dwNumResourceTags, void* pResourceTags)
|
||||
{
|
||||
unsigned i;
|
||||
HANDLE hFile;
|
||||
DWORD dwNumBytesRead;
|
||||
XPR_HEADER xprh;
|
||||
bool retval = false;
|
||||
#ifdef _XBOX360
|
||||
(void)dwNumResourceTags;
|
||||
(void)pResourceTags;
|
||||
#endif
|
||||
#ifdef _XBOX1
|
||||
char strResourcePath[512];
|
||||
bool bHasResourceOffsetsTable = false;
|
||||
|
||||
if (FAILED(FindMediaFile(strResourcePath, strFilename, sizeof(strResourcePath))))
|
||||
return E_FAIL;
|
||||
strFilename = strResourcePath;
|
||||
#endif
|
||||
|
||||
hFile = CreateFile(strFilename, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
HANDLE hFile = CreateFile(strFilename, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return E_FAIL;
|
||||
|
||||
retval = ReadFile(hFile, &xprh, sizeof(XPR_HEADER), &dwNumBytesRead, NULL);
|
||||
|
||||
#if defined(_XBOX1)
|
||||
if(xprh.dwMagic == XPR0_MAGIC_VALUE)
|
||||
bHasResourceOffsetsTable = false;
|
||||
else if(xprh.dwMagic == XPR1_MAGIC_VALUE)
|
||||
bHasResourceOffsetsTable = true;
|
||||
else
|
||||
#elif defined(_XBOX360)
|
||||
if(!retval)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if (xprh.dwMagic != XPR2_MAGIC_VALUE)
|
||||
#endif
|
||||
if (!ReadFile(hFile, &xprh, sizeof(XPR_HEADER), &dwNumBytesRead, NULL) ||
|
||||
xprh.dwMagic != XPR2_MAGIC_VALUE)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/* Compute memory requirements */
|
||||
#if defined(_XBOX1)
|
||||
m_dwSysMemDataSize = xprh.dwHeaderSize - sizeof(XPR_HEADER);
|
||||
m_dwVidMemDataSize = xprh.dwTotalSize - xprh.dwHeaderSize;
|
||||
#elif defined(_XBOX360)
|
||||
m_dwSysMemDataSize = xprh.dwHeaderSize;
|
||||
m_dwVidMemDataSize = xprh.dwDataSize;
|
||||
#endif
|
||||
|
||||
/* Allocate memory */
|
||||
m_pSysMemData = (BYTE*)malloc(m_dwSysMemDataSize);
|
||||
@ -272,12 +175,8 @@ HRESULT PackedResource::Create(const char *strFilename,
|
||||
}
|
||||
|
||||
m_pVidMemData = (BYTE*)AllocateContiguousMemory(m_dwVidMemDataSize,
|
||||
#if defined(_XBOX1)
|
||||
D3DTEXTURE_ALIGNMENT
|
||||
#elif defined(_XBOX360)
|
||||
XALLOC_PHYSICAL_ALIGNMENT_4K
|
||||
#endif
|
||||
);
|
||||
);
|
||||
|
||||
if(!m_pVidMemData)
|
||||
{
|
||||
@ -299,59 +198,27 @@ HRESULT PackedResource::Create(const char *strFilename,
|
||||
/* Done with the file */
|
||||
CloseHandle( hFile);
|
||||
|
||||
#ifdef _XBOX1
|
||||
if (bHasResourceOffsetsTable)
|
||||
/* Extract resource table from the header data */
|
||||
m_dwNumResourceTags = *(DWORD*)(m_pSysMemData + 0);
|
||||
m_pResourceTags = (XBRESOURCE*)(m_pSysMemData + 4);
|
||||
|
||||
/* Patch up the resources */
|
||||
|
||||
for(i = 0; i < m_dwNumResourceTags; i++)
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Extract resource table from the header data */
|
||||
m_dwNumResourceTags = *(DWORD*)(m_pSysMemData + 0);
|
||||
m_pResourceTags = (XBRESOURCE*)(m_pSysMemData + 4);
|
||||
|
||||
/* Patch up the resources */
|
||||
|
||||
for(i = 0; i < m_dwNumResourceTags; i++)
|
||||
m_pResourceTags[i].strName = (char*)(m_pSysMemData + (DWORD)m_pResourceTags[i].strName);
|
||||
if((m_pResourceTags[i].dwType & 0xffff0000) == (RESOURCETYPE_TEXTURE & 0xffff0000))
|
||||
{
|
||||
m_pResourceTags[i].strName = (char*)(m_pSysMemData + (DWORD)m_pResourceTags[i].strName);
|
||||
#ifdef _XBOX360
|
||||
if((m_pResourceTags[i].dwType & 0xffff0000) == (RESOURCETYPE_TEXTURE & 0xffff0000))
|
||||
{
|
||||
D3DTexture *pTexture = (D3DTexture*)&m_pSysMemData[m_pResourceTags[i].dwOffset];
|
||||
XGOffsetBaseTextureAddress(pTexture, m_pVidMemData, m_pVidMemData);
|
||||
}
|
||||
#endif
|
||||
D3DTexture *pTexture = (D3DTexture*)&m_pSysMemData[m_pResourceTags[i].dwOffset];
|
||||
XGOffsetBaseTextureAddress(pTexture, m_pVidMemData, m_pVidMemData);
|
||||
}
|
||||
|
||||
#ifdef _XBOX1
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _XBOX1
|
||||
/* Use user-supplied number of resources and the resource tags */
|
||||
if(dwNumResourceTags != 0 || pResourceTags != NULL)
|
||||
{
|
||||
m_pResourceTags = (XBRESOURCE*)pResourceTags;
|
||||
m_dwNumResourceTags = dwNumResourceTags;
|
||||
}
|
||||
#endif
|
||||
|
||||
m_bInitialized = true;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void PackedResource::GetResourceTags(DWORD* pdwNumResourceTags,
|
||||
XBRESOURCE** ppResourceTags)
|
||||
{
|
||||
#ifdef _XBOX360
|
||||
if (pdwNumResourceTags)
|
||||
(*pdwNumResourceTags) = m_dwNumResourceTags;
|
||||
|
||||
if (ppResourceTags)
|
||||
(*ppResourceTags) = m_pResourceTags;
|
||||
#endif
|
||||
}
|
||||
|
||||
void PackedResource::Destroy()
|
||||
{
|
||||
free(m_pSysMemData);
|
||||
@ -388,7 +255,7 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
Font_Locals_t s_FontLocals;
|
||||
d3d_video_t *d3d;
|
||||
d3d9_video_t *d3d;
|
||||
uint32_t m_dwSavedState;
|
||||
uint32_t m_cMaxGlyph; /* Number of entries in the translator table. */
|
||||
uint32_t m_dwNumGlyphs; /* Number of valid glyphs. */
|
||||
@ -493,7 +360,7 @@ static void *xdk360_init_font(void *video_data,
|
||||
|
||||
(void)font_size;
|
||||
|
||||
font->d3d = (d3d_video_t*)video_data;
|
||||
font->d3d = (d3d9_video_t*)video_data;
|
||||
|
||||
font->m_pFontTexture = NULL;
|
||||
font->m_dwNumGlyphs = 0L;
|
||||
|
@ -776,7 +776,7 @@ static void *d3d9_cg_renderchain_new(void)
|
||||
static bool d3d9_cg_renderchain_init_shader(void *data,
|
||||
void *renderchain_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
cg_renderchain_t *renderchain = (cg_renderchain_t*)renderchain_data;
|
||||
|
||||
if (!d3d || !renderchain)
|
||||
@ -913,7 +913,7 @@ static bool d3d9_cg_renderchain_init(void *data,
|
||||
const void *info_data, bool rgb32)
|
||||
{
|
||||
const struct LinkInfo *info = (const struct LinkInfo*)info_data;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)d3d->renderchain_data;
|
||||
const video_info_t *video_info = (const video_info_t*)_video_info;
|
||||
unsigned fmt = (rgb32) ? RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565;
|
||||
@ -1027,7 +1027,7 @@ static void d3d9_cg_renderchain_convert_geometry(
|
||||
}
|
||||
|
||||
static void d3d_recompute_pass_sizes(cg_renderchain_t *chain,
|
||||
d3d_video_t *d3d)
|
||||
d3d9_video_t *d3d)
|
||||
{
|
||||
unsigned i;
|
||||
struct LinkInfo link_info;
|
||||
@ -1076,7 +1076,7 @@ static void d3d9_cg_renderchain_set_final_viewport(
|
||||
void *renderchain_data,
|
||||
const void *viewport_data)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)renderchain_data;
|
||||
const D3DVIEWPORT9 *final_viewport = (const D3DVIEWPORT9*)viewport_data;
|
||||
|
||||
@ -1493,7 +1493,7 @@ static bool d3d9_cg_renderchain_render(
|
||||
LPDIRECT3DSURFACE9 back_buffer, target;
|
||||
unsigned i, current_width, current_height, out_width = 0, out_height = 0;
|
||||
struct Pass *last_pass = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
cg_renderchain_t *chain = d3d ? (cg_renderchain_t*)d3d->renderchain_data : NULL;
|
||||
|
||||
d3d9_cg_renderchain_start_render(chain);
|
||||
@ -1596,7 +1596,7 @@ static void d3d9_cg_renderchain_set_font_rect(
|
||||
const void *font_data)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
float pos_x = settings->floats.video_msg_pos_x;
|
||||
float pos_y = settings->floats.video_msg_pos_y;
|
||||
float font_size = settings->floats.video_font_size;
|
||||
@ -1632,8 +1632,8 @@ static bool d3d9_cg_renderchain_read_viewport(
|
||||
LPDIRECT3DSURFACE9 target = NULL;
|
||||
LPDIRECT3DSURFACE9 dest = NULL;
|
||||
bool ret = true;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
LPDIRECT3DDEVICE9 d3dr = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
LPDIRECT3DDEVICE9 d3dr = d3d->dev;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
@ -1690,7 +1690,7 @@ static void d3d9_cg_renderchain_viewport_info(
|
||||
void *data, struct video_viewport *vp)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d || !vp)
|
||||
return;
|
||||
|
@ -63,8 +63,8 @@ static bool hlsl_d3d9_renderchain_init_shader_fvf(void *data, void *pass_data)
|
||||
{ 0, 2 * sizeof(float), D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
|
||||
D3DDECL_END()
|
||||
};
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d_video_t *pass = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
d3d9_video_t *pass = (d3d9_video_t*)data;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
d3d->renderchain_data;
|
||||
|
||||
@ -77,7 +77,7 @@ static bool hlsl_d3d9_renderchain_init_shader_fvf(void *data, void *pass_data)
|
||||
static bool hlsl_d3d9_renderchain_create_first_pass(void *data,
|
||||
const video_info_t *info)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
d3d->renderchain_data;
|
||||
|
||||
@ -122,7 +122,7 @@ static void hlsl_d3d9_renderchain_set_vertices(
|
||||
video_shader_ctx_params_t params;
|
||||
video_shader_ctx_info_t shader_info;
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
hlsl_d3d9_renderchain_t *chain = d3d ?
|
||||
(hlsl_d3d9_renderchain_t*)d3d->renderchain_data : NULL;
|
||||
|
||||
@ -242,7 +242,7 @@ static void hlsl_d3d9_renderchain_deinit_shader(void *data)
|
||||
|
||||
static void hlsl_d3d9_renderchain_free(void *data)
|
||||
{
|
||||
d3d_video_t *chain = (d3d_video_t*)data;
|
||||
d3d9_video_t *chain = (d3d9_video_t*)data;
|
||||
|
||||
if (!chain)
|
||||
return;
|
||||
@ -266,7 +266,7 @@ static bool hlsl_d3d9_renderchain_init_shader(void *data,
|
||||
void *renderchain_data)
|
||||
{
|
||||
video_shader_ctx_init_t init;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
(void)renderchain_data;
|
||||
|
||||
@ -292,7 +292,7 @@ static bool hlsl_d3d9_renderchain_init(void *data,
|
||||
)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
const video_info_t *video_info = (const video_info_t*)_video_info;
|
||||
const struct LinkInfo *link_info = (const struct LinkInfo*)info_data;
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||
@ -342,7 +342,7 @@ static bool hlsl_d3d9_renderchain_render(void *data, const void *frame,
|
||||
{
|
||||
unsigned i;
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)d3d->renderchain_data;
|
||||
bool video_smooth = settings->bools.video_smooth;
|
||||
@ -411,7 +411,7 @@ static void hlsl_d3d9_renderchain_viewport_info(
|
||||
void *data, struct video_viewport *vp)
|
||||
{
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
|
||||
if (!d3d || !vp)
|
||||
return;
|
||||
|
@ -454,8 +454,8 @@ error:
|
||||
static void *hlsl_init(void *data, const char *path)
|
||||
{
|
||||
unsigned i;
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)data;
|
||||
hlsl_shader_data_t *hlsl = (hlsl_shader_data_t*)
|
||||
calloc(1, sizeof(hlsl_shader_data_t));
|
||||
|
||||
if (!hlsl || !d3d)
|
||||
|
@ -277,7 +277,7 @@ static bool slang_process_reflection(
|
||||
shader_info->pass[index].feedback = true;
|
||||
|
||||
if (semantic == SLANG_TEXTURE_SEMANTIC_ORIGINAL_HISTORY &&
|
||||
shader_info->history_size < index)
|
||||
(unsigned)shader_info->history_size < index)
|
||||
shader_info->history_size = index;
|
||||
}
|
||||
|
||||
|
@ -93,10 +93,9 @@ static void crt_screen_setup_aspect(unsigned width, unsigned height)
|
||||
{
|
||||
/* detect menu only */
|
||||
if (width < 1920)
|
||||
{
|
||||
width = 704;
|
||||
height = 480;
|
||||
}
|
||||
|
||||
height = 480;
|
||||
|
||||
crt_aspect_ratio_switch(width, height);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ UI
|
||||
#include "../ui/drivers/ui_qt.cpp"
|
||||
|
||||
#include "../ui/drivers/qt/ui_qt_window.cpp"
|
||||
#include "../ui/drivers/qt/ui_qt_load_core_window.cpp"
|
||||
#include "../ui/drivers/qt/ui_qt_browser_window.cpp"
|
||||
#include "../ui/drivers/qt/ui_qt_msg_window.cpp"
|
||||
#include "../ui/drivers/qt/ui_qt_application.cpp"
|
||||
@ -71,11 +72,11 @@ FONTS
|
||||
#endif
|
||||
|
||||
#ifdef WANT_GLSLANG
|
||||
#ifdef _WIN32
|
||||
#include "../deps/glslang/glslang/glslang/OSDependent/Windows/ossource.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "../deps/glslang/glslang/glslang/OSDependent/Windows/ossource.cpp"
|
||||
#endif
|
||||
|
||||
#if defined(__linux__)
|
||||
#include "../deps/glslang/glslang/glslang/OSDependent/Unix/ossource.cpp"
|
||||
#include "../deps/glslang/glslang/glslang/OSDependent/Unix/ossource.cpp"
|
||||
#endif
|
||||
#endif
|
||||
|
@ -56,6 +56,7 @@ struct iohidmanager_hid_adapter
|
||||
apple_input_rec_t *hats;
|
||||
apple_input_rec_t *buttons;
|
||||
uint8_t data[2048];
|
||||
uint32_t uniqueId;
|
||||
};
|
||||
|
||||
CFComparisonResult iohidmanager_sort_elements(const void *val1, const void *val2, void *context)
|
||||
@ -485,6 +486,14 @@ static uint32_t iohidmanager_hid_device_get_location_id(IOHIDDeviceRef device)
|
||||
CFSTR(kIOHIDLocationIDKey));
|
||||
}
|
||||
|
||||
static uint32_t iohidmanager_hid_device_get_unique_id(IOHIDDeviceRef device)
|
||||
{
|
||||
/* osx seems to assign an unique id to each device when they are plugged in
|
||||
* the id change if device is unplugged/plugged, but it's unique amongst the
|
||||
* other device plugged */
|
||||
return iohidmanager_hid_device_get_int_property(device,CFSTR(kIOHIDUniqueIDKey));
|
||||
}
|
||||
|
||||
static void iohidmanager_hid_device_get_product_string(
|
||||
IOHIDDeviceRef device, char *buf, size_t len)
|
||||
{
|
||||
@ -495,6 +504,9 @@ static void iohidmanager_hid_device_get_product_string(
|
||||
CFStringGetCString(ref, buf, len, kCFStringEncodingUTF8);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void iohidmanager_hid_device_add_autodetect(unsigned idx,
|
||||
const char *device_name, const char *driver_name,
|
||||
uint16_t dev_vid, uint16_t dev_pid)
|
||||
@ -512,10 +524,24 @@ static void iohidmanager_hid_device_add_autodetect(unsigned idx,
|
||||
RARCH_LOG("Port %d: %s.\n", idx, device_name);
|
||||
}
|
||||
|
||||
static void iohidmanager_hid_device_add(IOHIDDeviceRef device, iohidmanager_hid_t* hid)
|
||||
|
||||
static void iohidmanager_hid_device_add_device(IOHIDDeviceRef device, iohidmanager_hid_t* hid)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* get device unique id */
|
||||
uint32_t deviceUniqueId = iohidmanager_hid_device_get_unique_id(device);
|
||||
|
||||
/* check if pad was already registered previously (by deterministic method)
|
||||
* if so do not re-add the pad */
|
||||
for (i=0; i<MAX_USERS; i++)
|
||||
{
|
||||
struct iohidmanager_hid_adapter *a = hid->slots[i].data;
|
||||
if (a == NULL)
|
||||
continue;
|
||||
if (a->uniqueId == deviceUniqueId)
|
||||
return;
|
||||
}
|
||||
|
||||
IOReturn ret;
|
||||
uint16_t dev_vid, dev_pid;
|
||||
CFArrayRef elements_raw;
|
||||
@ -555,6 +581,7 @@ static void iohidmanager_hid_device_add(IOHIDDeviceRef device, iohidmanager_hid_
|
||||
|
||||
dev_vid = iohidmanager_hid_device_get_vendor_id (device);
|
||||
dev_pid = iohidmanager_hid_device_get_product_id (device);
|
||||
adapter->uniqueId = deviceUniqueId;
|
||||
|
||||
adapter->slot = pad_connection_pad_init(hid->slots,
|
||||
adapter->name, dev_vid, dev_pid, adapter,
|
||||
@ -786,6 +813,14 @@ error:
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void iohidmanager_hid_device_add(void *data, IOReturn result,
|
||||
void* sender, IOHIDDeviceRef device)
|
||||
{
|
||||
iohidmanager_hid_t *hid = (iohidmanager_hid_t*) hid_driver_get_data();
|
||||
iohidmanager_hid_device_add_device(device, hid);
|
||||
}
|
||||
|
||||
static void iohidmanager_hid_append_matching_dictionary(
|
||||
CFMutableArrayRef array,
|
||||
uint32_t page, uint32_t use)
|
||||
@ -839,6 +874,16 @@ static int iohidmanager_hid_manager_free(iohidmanager_hid_t *hid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iohidmanager_hid_manager_set_device_matching(
|
||||
iohidmanager_hid_t *hid)
|
||||
{
|
||||
/* deterministically add all device currently plugged when lanching retroarch
|
||||
* order by location id which seems to correspond to usb port number */
|
||||
CFSetRef set = IOHIDManagerCopyDevices(hid->ptr);
|
||||
CFIndex num_devices = CFSetGetCount(set);
|
||||
IOHIDDeviceRef *device_array = calloc(num_devices, sizeof(IOHIDDeviceRef));
|
||||
CFSetGetValues(set, (const void **) device_array);
|
||||
|
||||
/* re order device by location id */
|
||||
typedef struct hid_list
|
||||
{
|
||||
@ -846,75 +891,86 @@ static int iohidmanager_hid_manager_free(iohidmanager_hid_t *hid)
|
||||
uint32_t lid;
|
||||
struct hid_list *next;
|
||||
} hid_list_t;
|
||||
|
||||
static int iohidmanager_hid_manager_set_device_matching(
|
||||
iohidmanager_hid_t *hid)
|
||||
{
|
||||
unsigned i;
|
||||
hid_list_t* devList = NULL;
|
||||
CFSetRef set = IOHIDManagerCopyDevices(hid->ptr);
|
||||
CFIndex num_devices = CFSetGetCount(set);
|
||||
IOHIDDeviceRef *device_array = (IOHIDDeviceRef*)calloc(num_devices, sizeof(IOHIDDeviceRef));
|
||||
|
||||
CFSetGetValues(set, (const void **) device_array);
|
||||
|
||||
for (i = 0; i < num_devices; i++)
|
||||
{
|
||||
IOHIDDeviceRef dev = device_array[i];
|
||||
hid_list_t* devList = NULL;
|
||||
for (long i=0; i<num_devices;i++)
|
||||
{
|
||||
IOHIDDeviceRef dev = device_array[i];
|
||||
/* filter gamepad/joystick devices */
|
||||
if ( IOHIDDeviceConformsTo(dev, kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick)
|
||||
|| IOHIDDeviceConformsTo(dev, kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad)
|
||||
)
|
||||
{
|
||||
if ( devList == NULL )
|
||||
{
|
||||
devList = (hid_list_t *)malloc(sizeof(hid_list_t));
|
||||
devList->device = dev;
|
||||
devList->lid = iohidmanager_hid_device_get_location_id(dev);
|
||||
devList->next = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
hid_list_t * new = (hid_list_t *)malloc(sizeof(hid_list_t));
|
||||
new->device = dev;
|
||||
new->lid = iohidmanager_hid_device_get_location_id(dev);
|
||||
new->next = NULL;
|
||||
|
||||
/* filter gamepad/joystick devices */
|
||||
if ( IOHIDDeviceConformsTo(dev, kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick)
|
||||
|| IOHIDDeviceConformsTo(dev, kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad)
|
||||
)
|
||||
{
|
||||
if (!devList)
|
||||
{
|
||||
devList = (hid_list_t *)malloc(sizeof(hid_list_t));
|
||||
devList->device = dev;
|
||||
devList->lid = iohidmanager_hid_device_get_location_id(dev);
|
||||
devList->next = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
hid_list_t *ptr = NULL;
|
||||
hid_list_t *new = (hid_list_t *)malloc(sizeof(hid_list_t));
|
||||
new->device = dev;
|
||||
new->lid = iohidmanager_hid_device_get_location_id(dev);
|
||||
new->next = NULL;
|
||||
|
||||
ptr = devList;
|
||||
|
||||
if ( new->lid < ptr->lid )
|
||||
{
|
||||
new->next = ptr;
|
||||
devList = new;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((ptr->lid < new->lid ) && ptr->next)
|
||||
ptr = ptr->next;
|
||||
|
||||
new->next = ptr->next;
|
||||
ptr->next = new;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
/* register devices */
|
||||
hid_list_t * ptr = devList;
|
||||
while (ptr)
|
||||
{
|
||||
iohidmanager_hid_device_add(ptr->device, hid);
|
||||
ptr = ptr->next;
|
||||
free(devList);
|
||||
devList = ptr;
|
||||
}
|
||||
}
|
||||
hid_list_t * ptr = devList;
|
||||
if ( new->lid < ptr->lid )
|
||||
{
|
||||
new->next = ptr;
|
||||
devList = new;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ( ( ptr->lid < new->lid ) && (ptr->next != NULL) )
|
||||
{
|
||||
ptr = ptr->next;
|
||||
}
|
||||
new->next = ptr->next;
|
||||
ptr->next = new;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* register devices */
|
||||
hid_list_t * ptr = devList;
|
||||
while (ptr != NULL)
|
||||
{
|
||||
iohidmanager_hid_device_add_device(ptr->device, hid);
|
||||
|
||||
//printf("%d\n",ptr->lid);
|
||||
ptr = ptr->next;
|
||||
free(devList);
|
||||
devList = ptr;
|
||||
}
|
||||
free(device_array);
|
||||
|
||||
|
||||
/* register call back to dynamically add device plugged when retroarch is
|
||||
* running
|
||||
* those will be added after the one plugged when retroarch was launched,
|
||||
* and by order they are plugged in (so not deterministic) */
|
||||
CFMutableArrayRef matcher = CFArrayCreateMutable(kCFAllocatorDefault, 0,
|
||||
&kCFTypeArrayCallBacks);
|
||||
|
||||
if (!matcher)
|
||||
return -1;
|
||||
|
||||
iohidmanager_hid_append_matching_dictionary(matcher,
|
||||
kHIDPage_GenericDesktop,
|
||||
kHIDUsage_GD_Joystick);
|
||||
iohidmanager_hid_append_matching_dictionary(matcher,
|
||||
kHIDPage_GenericDesktop,
|
||||
kHIDUsage_GD_GamePad);
|
||||
|
||||
IOHIDManagerSetDeviceMatchingMultiple(hid->ptr, matcher);
|
||||
IOHIDManagerRegisterDeviceMatchingCallback(hid->ptr,
|
||||
iohidmanager_hid_device_add, 0);
|
||||
|
||||
CFRelease(matcher);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "wiiu_hid.h"
|
||||
#include "../include/wiiu/hid.h"
|
||||
#include <wiiu/os/atomic.h>
|
||||
|
||||
static wiiu_event_list events;
|
@ -14,8 +14,7 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "wiiu_input.h"
|
||||
#include "wiiu_hid.h"
|
||||
#include "../../include/wiiu/input.h"
|
||||
|
||||
static bool hidpad_init(void *data);
|
||||
static bool hidpad_query_pad(unsigned pad);
|
@ -20,7 +20,7 @@
|
||||
* controllers.
|
||||
*/
|
||||
|
||||
#include "wiiu_input.h"
|
||||
#include "../../include/wiiu/input.h"
|
||||
|
||||
static bool kpad_init(void *data);
|
||||
static bool kpad_query_pad(unsigned pad);
|
@ -14,7 +14,7 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "wiiu_input.h"
|
||||
#include "wiiu/input.h"
|
||||
|
||||
enum wiiu_pad_axes {
|
||||
AXIS_LEFT_ANALOG_X,
|
@ -21,7 +21,7 @@
|
||||
* - For HID controllers, see hid_driver.c
|
||||
*/
|
||||
|
||||
#include "wiiu_input.h"
|
||||
#include "../../include/wiiu/input.h"
|
||||
|
||||
#define PANIC_BUTTON_MASK (VPAD_BUTTON_R | VPAD_BUTTON_L | VPAD_BUTTON_STICK_R | VPAD_BUTTON_STICK_L)
|
||||
|
@ -14,7 +14,7 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "../../wiiu/input/wiiu_input.h"
|
||||
#include "../include/wiiu/input.h"
|
||||
|
||||
#include "wiiu_dbg.h"
|
||||
|
||||
|
@ -17,9 +17,9 @@
|
||||
#ifndef __WIIU_HID__H
|
||||
#define __WIIU_HID__H
|
||||
|
||||
#include "wiiu_hid_types.h"
|
||||
|
||||
#include "wiiu_input.h"
|
||||
#include "hid_types.h"
|
||||
#include "input.h"
|
||||
#include "../../common/hid/hid_device_driver.h"
|
||||
|
||||
#define DEVICE_UNUSED 0
|
||||
#define DEVICE_USED 1
|
@ -17,31 +17,33 @@
|
||||
#ifndef __WIIU_INPUT__H
|
||||
#define __WIIU_INPUT__H
|
||||
|
||||
#include "wiiu_hid_types.h"
|
||||
#include "../../input/include/gamepad.h"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../../config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include <string.h>
|
||||
#include <malloc.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "hid_types.h"
|
||||
#include "../gamepad.h"
|
||||
|
||||
#include <wiiu/os.h>
|
||||
#include <wiiu/syshid.h>
|
||||
#include <wiiu/vpad.h>
|
||||
#include <wiiu/kpad.h>
|
||||
#include <wiiu/pad_strings.h>
|
||||
#include "hid.h"
|
||||
|
||||
#include "../../input/input_driver.h"
|
||||
#include "../../input/common/hid/hid_device_driver.h"
|
||||
#include "../../tasks/tasks_internal.h"
|
||||
#include "../../input/connect/joypad_connection.h"
|
||||
#include "../../retroarch.h"
|
||||
#include "../../verbosity.h"
|
||||
#include "../../command.h"
|
||||
#include "../../gfx/video_driver.h"
|
||||
#include "wiiu_hid.h"
|
||||
#include "../../input_driver.h"
|
||||
#include "../../common/hid/hid_device_driver.h"
|
||||
#include "../../connect/joypad_connection.h"
|
||||
#include "../../../retroarch.h"
|
||||
#include "../../../verbosity.h"
|
||||
#include "../../../command.h"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../../../config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "../../../gfx/video_driver.h"
|
||||
#include "../../../tasks/tasks_internal.h"
|
||||
|
||||
#define WIIMOTE_TYPE_WIIPLUS 0x00
|
||||
#define WIIMOTE_TYPE_NUNCHUK 0x01
|
@ -34,6 +34,10 @@
|
||||
#include "input_remote.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
#include "input_overlay.h"
|
||||
#endif
|
||||
|
||||
#include "input_mapper.h"
|
||||
|
||||
#include "input_driver.h"
|
||||
@ -647,7 +651,7 @@ void input_poll(void)
|
||||
int16_t input_state(unsigned port, unsigned device,
|
||||
unsigned idx, unsigned id)
|
||||
{
|
||||
int16_t res = 0;
|
||||
int16_t res = 0, res_overlay = 0;
|
||||
|
||||
/* used to reset input state of a button when the gamepad mapper
|
||||
is in action for that button*/
|
||||
@ -690,6 +694,16 @@ int16_t input_state(unsigned port, unsigned device,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (overlay_ptr)
|
||||
input_state_overlay(overlay_ptr, &res_overlay, port, device, idx, id);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NETWORKGAMEPAD
|
||||
if (input_driver_remote)
|
||||
input_remote_state(&res, port, device, idx, id);
|
||||
#endif
|
||||
|
||||
if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD)))
|
||||
{
|
||||
bool bind_valid = libretro_input_binds[port] && libretro_input_binds[port][id].valid;
|
||||
@ -702,8 +716,15 @@ int16_t input_state(unsigned port, unsigned device,
|
||||
joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx];
|
||||
|
||||
if (!reset_state)
|
||||
{
|
||||
res = current_input->input_state(
|
||||
current_input_data, joypad_info, libretro_input_binds, port, device, idx, id);
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (input_overlay_is_alive(overlay_ptr) && port == 0)
|
||||
res |= res_overlay;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
res = 0;
|
||||
}
|
||||
@ -713,15 +734,7 @@ int16_t input_state(unsigned port, unsigned device,
|
||||
input_mapper_state(input_driver_mapper,
|
||||
&res, port, device, idx, id);
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (overlay_ptr)
|
||||
input_state_overlay(overlay_ptr, &res, port, device, idx, id);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NETWORKGAMEPAD
|
||||
if (input_driver_remote)
|
||||
input_remote_state(&res, port, device, idx, id);
|
||||
#endif
|
||||
|
||||
/* Don't allow turbo for D-pad. */
|
||||
if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP ||
|
||||
|
@ -41,6 +41,10 @@
|
||||
|
||||
#include "input_mapper.h"
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
#include "input_overlay.h"
|
||||
#endif
|
||||
|
||||
#include "../configuration.h"
|
||||
#include "../msg_hash.h"
|
||||
#include "../verbosity.h"
|
||||
@ -86,9 +90,12 @@ void input_mapper_poll(input_mapper_t *handle)
|
||||
unsigned i, j;
|
||||
input_bits_t current_input;
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned max_users =
|
||||
unsigned max_users =
|
||||
*(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
bool key_event[RARCH_CUSTOM_BIND_LIST_END] = { false };
|
||||
#ifdef HAVE_OVERLAY
|
||||
bool poll_overlay = input_overlay_is_alive(overlay_ptr) ? true : false;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
if (menu_driver_is_alive())
|
||||
@ -157,10 +164,17 @@ void input_mapper_poll(input_mapper_t *handle)
|
||||
|
||||
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND; j++)
|
||||
{
|
||||
bool remap_valid;
|
||||
unsigned remap_button;
|
||||
unsigned current_button_value = BIT256_GET(current_input, j);
|
||||
unsigned remap_button =
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (poll_overlay && i == 0)
|
||||
current_button_value |= input_overlay_key_pressed(overlay_ptr, j);
|
||||
#endif
|
||||
|
||||
remap_button =
|
||||
settings->uints.input_remap_ids[i][j];
|
||||
bool remap_valid = (current_button_value == 1) &&
|
||||
remap_valid = (current_button_value == 1) &&
|
||||
(j != remap_button) && (remap_button != RARCH_UNMAPPED);
|
||||
|
||||
if (remap_valid)
|
||||
|
@ -3209,8 +3209,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER,
|
||||
"Choose a specific relay server to use. Geographically closer locations tend to have lower latency.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3465,3 +3469,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3031,8 +3031,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3251,3 +3255,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3023,8 +3023,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3243,3 +3247,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3113,8 +3113,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Leite alle Netplay-Verbindungen durch einen Man-in-the-middle-Server. Hilfreich, wenn sich der Host hinter einer Firewall befindet oder Probleme mit NAT/UPnP hat.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Zum Mixer hinzufügen")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"zum Mixer hinzufügen")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Nach aktuellem Core filtern")
|
||||
MSG_HASH(
|
||||
@ -3357,3 +3361,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -2896,8 +2896,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3116,3 +3120,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -5389,10 +5389,16 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Agregar al mezclador"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Agregar al mezclador y colección"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filtrar por núcleo actual"
|
||||
@ -5847,3 +5853,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3061,8 +3061,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Ajouter au mixeur")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Ajouter au mixeur")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3281,3 +3285,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3113,8 +3113,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Inoltra le connessioni da netplay attraverso un server man-in-the-middle . Utile se l'host è dietro un firewall o ha problemi NAT/UPnP")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Aggiungi al mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Aggiungi al mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filtra per core corrente")
|
||||
MSG_HASH(
|
||||
@ -3339,3 +3343,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3121,8 +3121,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"中間者のサーバーにネットプレイ接続を転送する。ファイアウォールやNAT/UPnPが問題の時に便利。")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"ミキサーに追加")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"ミキサーに追加")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"現在のコアで絞り込み")
|
||||
MSG_HASH(
|
||||
@ -3493,3 +3497,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST,
|
||||
"ファイルは存在しません。")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST,
|
||||
"ロードしたコアを最初に優先する")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3022,8 +3022,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3242,3 +3246,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -1373,8 +1373,12 @@ MSG_HASH(MENU_ENUM_LABEL_NETPLAY_MITM_SERVER,
|
||||
"netplay_mitm_server")
|
||||
MSG_HASH(MENU_ENUM_LABEL_ADD_TO_MIXER,
|
||||
"audio_add_to_mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"audio_add_to_mixer_and_play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"audio_add_to_mixer_and_collection")
|
||||
MSG_HASH(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"audio_add_to_mixer_and_collection_and_play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE,
|
||||
"filter_by_current_Core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME,
|
||||
@ -1497,3 +1501,7 @@ MSG_HASH(MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS,
|
||||
"audio_mixer_settings")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST,
|
||||
"deferred_mixer_stream_settings_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"quick_menu_override_options")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"deferred_quick_menu_override_options")
|
||||
|
@ -2898,8 +2898,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Aan audio mixer toevoegen")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Aan audio mixer toevoegen en afspelen")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Aan audio mixer toevoegen")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3118,3 +3122,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3219,8 +3219,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER,
|
||||
"Wybierz określony serwer przekazujący, którego chcesz użyć. Geograficznie bliższe lokalizacje mają zazwyczaj mniejsze opóźnienie.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Dodaj do miksera")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Dodaj do miksera")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filtruj według bieżącego rdzenia")
|
||||
MSG_HASH(
|
||||
@ -3477,3 +3481,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -871,6 +871,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE,
|
||||
"Alternar captura do Mouse")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE,
|
||||
"Alternar foco do jogo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE,
|
||||
"Alternar menu desktop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY,
|
||||
"Carregar Estado de Jogo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE,
|
||||
@ -890,7 +892,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
|
||||
"Sair do RetroArch")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_RESET,
|
||||
"Reinicializar jogo")
|
||||
"Reiniciar jogo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND,
|
||||
"Rebobinar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY,
|
||||
@ -991,8 +993,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_SPANISH,
|
||||
"Espanhol")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE,
|
||||
"Vietnamita")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LANG_ARABIC,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ARABIC,
|
||||
"Árabe")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LEFT_ANALOG,
|
||||
"Analógico Esquerdo")
|
||||
@ -1361,7 +1362,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_ENABLE,
|
||||
"Habilitar Rebobinagem")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY,
|
||||
"Granularidade do Voltar Atrás")
|
||||
"Granularidade da Rebobinagem")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS,
|
||||
"Rebobinagem")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY,
|
||||
@ -1647,7 +1648,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
|
||||
"Captura de Tela")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,
|
||||
"Tela do Título")
|
||||
"Telas do Título")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE,
|
||||
"Exibir data e hora")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_TITLE_COLOR,
|
||||
@ -1658,6 +1659,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE,
|
||||
"Habilitar Companheiro da Interface de Usuário")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT,
|
||||
"Companheiro da Interface de Usuário Roda na Inicialização")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_COMPANION_TOGGLE,
|
||||
"Mostrar menu desktop na inicialização")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DESKTOP_MENU_ENABLE,
|
||||
"Habilitar menu desktop (reiniciar)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE,
|
||||
"Barra de Menu")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE,
|
||||
@ -1849,7 +1854,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME,
|
||||
"Monocromático")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED,
|
||||
"Monocromático Inverted")
|
||||
"Monocromático Invertido")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_SYSTEMATIC,
|
||||
"Sistemático")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_NEOACTIVE,
|
||||
@ -1899,7 +1904,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD,
|
||||
"Exibir Aba de Importação de Conteúdo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS,
|
||||
"Exibir Guias da Lista de Reprodução")
|
||||
"Exibir Abas de Lista de Reprodução")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES,
|
||||
"Exibir Aba de Favoritos")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES,
|
||||
@ -1927,9 +1932,9 @@ MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL,
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
|
||||
"Habilitar ou desabilitar Estado de Jogo, Trapaças, Rebobinagem, Avanço Rápido, Pausa e Câmera Lenta para todos os jogos.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
"Ativar ou desativar tabelas de classificação no jogo. Não tem efeito se o modo Hardcore estiver desativado.")
|
||||
"Habilitar ou desabilitar tabelas de classificação no jogo. Não tem efeito se o modo Hardcore estiver desativado.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE,
|
||||
"Ativar ou desativar a exibição de insígnia na Lista de Conquistas.")
|
||||
"Habilitar ou desabilitar a exibição de insígnia na Lista de Conquistas.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE,
|
||||
"Habilitar ou desabilitar detalhes das conquistas na tela.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT,
|
||||
@ -2757,7 +2762,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_REWIND_ENABLE,
|
||||
"Habilita Rebobinagem. Isso irá impactar o desempenho ao jogar."
|
||||
"Habilita a Rebobinagem. Isso irá impactar o desempenho ao jogar."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_REWIND_GRANULARITY,
|
||||
@ -2793,7 +2798,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE,
|
||||
"Ativa a detecção automática de entrada. Tentará autoconfigurar joypads, estilo Plug-and-Play."
|
||||
"Habilita a detecção automática de entrada. Tentará configurar automaticamente joypads, estilo Plug-and-Play."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL,
|
||||
@ -3023,7 +3028,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_DATABASE_MANAGER,
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CURSOR_MANAGER,
|
||||
"Visualizar pesquisas anteriores.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT,
|
||||
"Capturar uma imagem da tela.")
|
||||
"Captura uma imagem da tela.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CLOSE_CONTENT,
|
||||
"Fecha o conteúdo atual. Alterações não salvas serão perdidas."
|
||||
@ -3257,8 +3262,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER,
|
||||
"Escolha um servidor de retransmissão específico para usar. Locais geograficamente mais próximos tendem a ter menor latência.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Adicionar ao mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Adicionar ao mixer e reproduzir")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Adicionar ao mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Adicionar ao mixer e reproduzir")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filtrar por núcleo atual")
|
||||
MSG_HASH(
|
||||
@ -3282,7 +3291,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER,
|
||||
"Exibir Atualizador Online")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER,
|
||||
"Exibir a opção 'Atualizador Online'.")
|
||||
"Exibir/ocultar a opção 'Atualizador Online'.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS,
|
||||
"Visualizações")
|
||||
MSG_HASH(
|
||||
@ -3324,9 +3333,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Habilitar/desabilitar os ícones exibidos do lado esquerdo dos itens de menu.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS,
|
||||
"Habilitar guia de configurações")
|
||||
"Habilitar aba de configurações")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD,
|
||||
"Definir senha para habilitar guia de configurações")
|
||||
"Definir senha para habilitar aba de configurações")
|
||||
MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD,
|
||||
"Digite a senha")
|
||||
MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK,
|
||||
@ -3334,15 +3343,15 @@ MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK,
|
||||
MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_NOK,
|
||||
"Senha incorreta.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS,
|
||||
"Habilita a guia de configurações. É necessário reiniciar para que a guia apareça.")
|
||||
"Habilita a aba de configurações. É necessário reiniciar para que a aba apareça.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD,
|
||||
"O fornecimento de uma senha ao ocultar a guia de configurações permite restaurar mais tarde a partir do menu, indo para a guia Menu Principal, selecionando Habilitar guia configurações e inserindo a senha.")
|
||||
"O fornecimento de uma senha ao ocultar a aba de configurações permite restaurar mais tarde a partir do menu, indo para a aba Menu Principal, selecionando Habilitar aba configurações e inserindo a senha.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Permita que o usuário renomeie as entradas nas coleções.")
|
||||
"Permita que o usuário renomeie os itens nas coleções.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Permitir renomear entradas" )
|
||||
"Permitir renomear itens" )
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RENAME_ENTRY,
|
||||
"Renomear o título da entrada.")
|
||||
"Renomear o título do item.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY,
|
||||
"Renomear")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
@ -3456,7 +3465,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE,
|
||||
"Notificação em Cor Azul")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW,
|
||||
"Mostrar contagem de quadros na tela FPS")
|
||||
"Exibir contagem de quadros na tela FPS")
|
||||
MSG_HASH(MSG_CONFIG_OVERRIDE_LOADED,
|
||||
"Substituição de configuração carregada.")
|
||||
MSG_HASH(MSG_GAME_REMAP_FILE_LOADED,
|
||||
@ -3480,7 +3489,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES,
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES,
|
||||
"Aplicar automaticamente as alterações feitas nos arquivos de shader no disco.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS,
|
||||
"Mostrar Decorações da Janela")
|
||||
"Exibir Decorações da Janela")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW,
|
||||
"Exibir estatísticas")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_STATISTICS_SHOW,
|
||||
@ -3491,23 +3500,185 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE,
|
||||
"Ativar espessura de preenchimento de borda")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_RGUI_BACKGROUND_FILLER_THICKNESS_ENABLE,
|
||||
"Ativar espessura de preenchimento do plano de fundo")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION, "Para monitores CRT de 15 kHz apenas. Tenta usar a resolução exata do núcleo/jogo e a taxa de atualização.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION, "Trocar para Resolução CRT")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER, "Quando Trocar para Resolução CRT está ativada, força a resolução horizontal ultrawide para minimizar a alternância de modo.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER, "Super Resolução CRT")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION,
|
||||
"Para monitores CRT de 15 kHz apenas. Tenta usar a resolução exata do núcleo/jogo e a taxa de atualização.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION,
|
||||
"Trocar para Resolução CRT")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER,
|
||||
"Quando Trocar para Resolução CRT está ativada, força a resolução horizontal ultrawide para minimizar a alternância de modo.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER,
|
||||
"Super Resolução CRT")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_REWIND,
|
||||
"Mostrar Configurações de Rebobinagem")
|
||||
"Exibir Configurações de Rebobinagem")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND,
|
||||
"Mostrar/ocultar as opções de Rebobinagem.")
|
||||
"Exibir/ocultar as opções de Rebobinagem.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SHOW_LATENCY,
|
||||
"Mostrar/ocultar as opções de Latência.")
|
||||
"Exibir/ocultar as opções de Latência.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_LATENCY,
|
||||
"Mostrar Configurações de Latência")
|
||||
"Exibir Configurações de Latência")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SHOW_OVERLAYS,
|
||||
"Mostrar/ocultar as opções de Sobreposição.")
|
||||
"Exibir/ocultar as opções de Sobreposição.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_OVERLAYS,
|
||||
"Mostrar Configurações de Sobreposição")
|
||||
"Exibir Configurações de Sobreposição")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU,
|
||||
"Ativar áudio de menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU,
|
||||
"Ativar ou desativar o som do menu.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Configurações do Mixer")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"Visualizar e/ou modificar as configurações do mixer de áudio.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_INFO,
|
||||
"Informação")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE,
|
||||
"&Arquivo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE,
|
||||
"&Carregar Núcleo...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE,
|
||||
"&Descarregar Núcleo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT,
|
||||
"Sai&r")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT,
|
||||
"&Editar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH,
|
||||
"&Pesquisar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW,
|
||||
"&Visualizar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS,
|
||||
"Docas Fechadas")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS,
|
||||
"&Opções...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_DOCK_POSITIONS,
|
||||
"Lembrar posições da doca:")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_GEOMETRY,
|
||||
"Lembrar geometria da janela:")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_LAST_TAB,
|
||||
"Lembrar a última aba do navegador de conteúdo:")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME,
|
||||
"Tema")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_SYSTEM_DEFAULT,
|
||||
"<Padrão do Sistema>")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_DARK,
|
||||
"Escuro")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_CUSTOM,
|
||||
"Personalizado...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_TITLE,
|
||||
"Opções")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOAD_CUSTOM_CORE,
|
||||
"Carregar Núcleo Personalizado...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOAD_CORE,
|
||||
"Carregar Núcleo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOADING_CORE,
|
||||
"Carregando Núcleo...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_NAME,
|
||||
"Nome")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION,
|
||||
"Versão")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS,
|
||||
"Listas de Reprodução")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER,
|
||||
"Navegador de Arquivos")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_TOP,
|
||||
"Topo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP,
|
||||
"Subir")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER,
|
||||
"Navegador de Conteúdo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART,
|
||||
"Arte da Capa")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT,
|
||||
"Captura de Tela")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN,
|
||||
"Tela de Título")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_ALL_PLAYLISTS,
|
||||
"Todas as Listas de Reprodução")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CORE,
|
||||
"Núcleo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CORE_INFO,
|
||||
"Informação do Núcleo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CORE_SELECTION_ASK,
|
||||
"<Me pergunte>")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_INFORMATION,
|
||||
"Informação")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_WARNING,
|
||||
"Advertência")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_ERROR,
|
||||
"Erro")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_RESTART_TO_TAKE_EFFECT,
|
||||
"Por favor, reinicie o programa para que as alterações entrem em vigor.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOG,
|
||||
"Relatório")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED,
|
||||
"Verificação Terminada.<br><br>\n"
|
||||
"Para que o conteúdo seja verificado corretamente, você deve em ordem:\n"
|
||||
"<ul><li>ter um núcleo compatível já baixado</li>\n"
|
||||
"<li>ter os \"Arquivos de Informação de Núcleo\" atualizados via Atualizador Online</li>\n"
|
||||
"<li>ter a \"Base de Dados\" atualizada via Atualizador Online</li>\n"
|
||||
"<li>reiniciar o RetroArch caso alguma das situações acima tenha sido feita</li></ul>\n"
|
||||
"E finalmente, o conteúdo deve corresponder as bases de dados existentes <a href=\"https://docs.libretro.com/guides/roms-playlists-thumbnails/#sources\">aqui</a>. Se ainda não estiver funcionando, considere <a href=\"https://www.github.com/libretro/RetroArch/issues\">enviar um relatório de erro</a>.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN,
|
||||
"Não mostrar isto novamente")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_STOP,
|
||||
"Parar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_ASSOCIATE_CORE,
|
||||
"Associar Núcleo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_HIDDEN_PLAYLISTS,
|
||||
"Ocultar Listas de Reprodução")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_HIDE,
|
||||
"Ocultar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_HIGHLIGHT_COLOR,
|
||||
"Cor de Destaque")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CHOOSE,
|
||||
"&Escolher...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SELECT_COLOR,
|
||||
"Selecionar Cor")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SELECT_THEME,
|
||||
"Selecionar Tema")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_CUSTOM_THEME,
|
||||
"Tema Personalizado")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_PATH_IS_BLANK,
|
||||
"O caminho do arquivo está em branco.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_IS_EMPTY,
|
||||
"O arquivo está vazio.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED,
|
||||
"Não foi possível abrir o arquivo para leitura.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST,
|
||||
"O arquivo não existe.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST,
|
||||
"Sugerir primeiro núcleo carregado")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Opções de Substituição de Configuração")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Opções para substituir a configuração global.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Irá iniciar a reprodução do fluxo de áudio. Uma vez terminado, removerá o fluxo de áudio atual da memória.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Irá iniciar a reprodução do fluxo de áudio. Uma vez terminado, ele fará um loop e reproduzirá a faixa novamente desde o começo.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Irá iniciar a reprodução do fluxo de áudio. Uma vez terminado, ele irá pular para o próximo fluxo de áudio em ordem sequencial e repetirá este comportamento. Útil como um modo de reprodução de álbum.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"Isso interromperá a reprodução do fluxo de áudio, mas não o removerá da memória. Você pode começar a reproduzi-lo novamente selecionando 'Reproduzir'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"Isso interromperá a reprodução do fluxo de áudio e o removerá completamente da memória.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Ajuste o volume do fluxo de áudio.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Adiciona esta faixa de áudio a um compartimento de fluxo de áudio disponível. Se nenhum compartimento estiver disponível no momento, ele será ignorado.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Adiciona esta faixa de áudio a um compartimento de fluxo de áudio disponível e reproduz. Se nenhum compartimento estiver disponível no momento, ele será ignorado.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Reproduzir")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Reproduzir (Loop)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Reproduzir (Sequencial)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Parar")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remover")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -2996,8 +2996,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Retransmite as ligações de Netplay através de um servidor homem-no-meio. Útil se o anfitrião se encontrar atrás de uma Firewall ou tiver problemas com os protocolos NAT/UPnP.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Adicionar ao misturador")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Adicionar ao misturador e à coleção")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filtrar pelo núcleo atual")
|
||||
MSG_HASH(
|
||||
@ -3216,3 +3220,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3074,8 +3074,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Передать сетевые соединения через сервер «man-in-the-midle». Будет полезным, если хост находится за брандмауэром или имеет проблемы NAT / UPnP.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Добавить в микшер")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Добавить в микшер")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Фильтрировать по текущему ядру")
|
||||
MSG_HASH(
|
||||
@ -3300,3 +3304,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3262,8 +3262,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER,
|
||||
"Choose a specific relay server to use. Geographically closer locations tend to have lower latency.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3642,3 +3646,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST,
|
||||
"File does not exist.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST,
|
||||
"Suggest loaded core first")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -3059,8 +3059,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||
"Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY,
|
||||
"Add to mixer and play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
@ -3273,3 +3277,39 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS,
|
||||
"Mixer Settings")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS,
|
||||
"View and/or modify audio mixer settings.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Configuration Override options")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
"Options for overriding the global configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
"Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
"This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
"This will stop playback of the audio stream and remove it entirely from memory.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
"Adjust the volume of the audio stream.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
|
||||
"Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
|
||||
"Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
"Play")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
"Play (Looped)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
"Play (Sequential)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
"Stop")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
"Remove")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
"Volume")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE,
|
||||
"Current core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
"Clear")
|
||||
|
@ -55,13 +55,19 @@ int c99_vsnprintf_retro__(char *outBuf, size_t size, const char *format, va_list
|
||||
|
||||
if (size != 0)
|
||||
#if (_MSC_VER <= 1310)
|
||||
count = _vsnprintf(outBuf, size, format, ap);
|
||||
count = _vsnprintf(outBuf, size - 1, format, ap);
|
||||
#else
|
||||
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
|
||||
count = _vsnprintf_s(outBuf, size, size - 1, format, ap);
|
||||
#endif
|
||||
if (count == -1)
|
||||
count = _vscprintf(format, ap);
|
||||
|
||||
if (count == size)
|
||||
{
|
||||
/* there was no room for a NULL, so truncate the last character */
|
||||
outBuf[size - 1] = '\0';
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ static int zip_file_read(
|
||||
const char *needle, void **buf,
|
||||
const char *optional_outfile)
|
||||
{
|
||||
file_archive_transfer_t zlib = {0};
|
||||
file_archive_transfer_t zlib = {ARCHIVE_TRANSFER_NONE, 0, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
struct archive_extract_userdata userdata = {{0}};
|
||||
bool returnerr = true;
|
||||
int ret = 0;
|
||||
|
@ -383,6 +383,8 @@ const char *path_get_extension(const char *path)
|
||||
* Only '.'s after the last slash are considered.
|
||||
*
|
||||
* Returns: path with the extension part removed.
|
||||
* If there is no extension at the end of path,
|
||||
* returns a pointer to the unaltered original path.
|
||||
*/
|
||||
char *path_remove_extension(char *path)
|
||||
{
|
||||
|
@ -1217,7 +1217,7 @@ static void JSON_Parser_NullTerminateToken(JSON_Parser parser)
|
||||
can write the null terminator to the buffer with impunity. */
|
||||
static const byte nullTerminatorBytes[LONGEST_ENCODING_SEQUENCE] = { 0 };
|
||||
Encoding encoding = (Encoding)((parser->token == T_NUMBER) ? parser->numberEncoding : parser->stringEncoding);
|
||||
memcpy(parser->pTokenBytes + parser->tokenBytesUsed, nullTerminatorBytes, SHORTEST_ENCODING_SEQUENCE(encoding));
|
||||
memcpy(parser->pTokenBytes + parser->tokenBytesUsed, nullTerminatorBytes, (size_t)SHORTEST_ENCODING_SEQUENCE(encoding));
|
||||
}
|
||||
|
||||
static JSON_Status JSON_Parser_FlushParser(JSON_Parser parser)
|
||||
@ -1514,10 +1514,10 @@ static JSON_Status JSON_Parser_HandleInvalidNumber(JSON_Parser parser,
|
||||
"1.2e-!" => "1.2"
|
||||
*/
|
||||
parser->codepointLocationByte -= (size_t)codepointsSinceValidNumber
|
||||
* SHORTEST_ENCODING_SEQUENCE(parser->inputEncoding);
|
||||
* (size_t)SHORTEST_ENCODING_SEQUENCE(parser->inputEncoding);
|
||||
parser->codepointLocationColumn -= (size_t)codepointsSinceValidNumber;
|
||||
parser->tokenBytesUsed -= (size_t)codepointsSinceValidNumber
|
||||
* SHORTEST_ENCODING_SEQUENCE(parser->numberEncoding);
|
||||
* (size_t)SHORTEST_ENCODING_SEQUENCE(parser->numberEncoding);
|
||||
return JSON_Parser_ProcessToken(parser); /* always fails */
|
||||
}
|
||||
/* Allow JSON_Parser_FlushLexer() to fail. */
|
||||
@ -3232,7 +3232,7 @@ static JSON_Status JSON_Writer_OutputString(JSON_Writer writer, const byte* pByt
|
||||
static const byte* const quoteEncodings[5] = { quoteUTF + 3, quoteUTF + 3, quoteUTF + 2, quoteUTF + 3, quoteUTF };
|
||||
|
||||
const byte* pQuoteEncoded = quoteEncodings[writer->outputEncoding - 1];
|
||||
size_t minSequenceLength = SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
size_t minSequenceLength = (size_t)SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
DecoderData decoderData;
|
||||
WriteBufferData bufferData;
|
||||
size_t i = 0;
|
||||
@ -3510,7 +3510,7 @@ static JSON_Status JSON_Writer_OutputSpaces(JSON_Writer writer, size_t numberOfS
|
||||
static const byte spacesUTF32[SPACES_PER_CHUNK * 4 + 3] = { 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0, ' ', 0, 0, 0 };
|
||||
static const byte* const spacesEncodings[5] = { spacesUTF8, spacesUTF16 + 1, spacesUTF16, spacesUTF32 + 3, spacesUTF32 };
|
||||
|
||||
size_t encodedLength = SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
size_t encodedLength = (size_t)SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
const byte* encoded = spacesEncodings[writer->outputEncoding - 1];
|
||||
while (numberOfSpaces > SPACES_PER_CHUNK)
|
||||
{
|
||||
@ -3529,7 +3529,7 @@ static JSON_Status JSON_Writer_WriteSimpleToken(JSON_Writer writer, Symbol token
|
||||
JSON_Status status = JSON_Failure;
|
||||
if (writer && !GET_FLAGS(writer->state, WRITER_IN_PROTECTED_API) && writer->error == JSON_Error_None)
|
||||
{
|
||||
size_t encodedLength = length * SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
size_t encodedLength = length * (size_t)SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
SET_FLAGS_ON(WriterState, writer->state, WRITER_STARTED | WRITER_IN_PROTECTED_API);
|
||||
if (JSON_Writer_ProcessToken(writer, token) &&
|
||||
JSON_Writer_OutputBytes(writer, encodings[writer->outputEncoding - 1], encodedLength))
|
||||
@ -3870,11 +3870,9 @@ JSON_Status JSON_CALL JSON_Writer_WriteNewLine(JSON_Writer writer)
|
||||
encodings = lfEncodings;
|
||||
length = 1;
|
||||
}
|
||||
encodedLength = length * SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
encodedLength = length * (size_t)SHORTEST_ENCODING_SEQUENCE(writer->outputEncoding);
|
||||
if (JSON_Writer_OutputBytes(writer, encodings[writer->outputEncoding - 1], encodedLength))
|
||||
{
|
||||
status = JSON_Success;
|
||||
}
|
||||
SET_FLAGS_OFF(WriterState, writer->state, WRITER_IN_PROTECTED_API);
|
||||
}
|
||||
return status;
|
||||
|
@ -2368,7 +2368,9 @@ RETRO_API bool retro_unserialize(const void *data, size_t size);
|
||||
RETRO_API void retro_cheat_reset(void);
|
||||
RETRO_API void retro_cheat_set(unsigned index, bool enabled, const char *code);
|
||||
|
||||
/* Loads a game. */
|
||||
/* Loads a game.
|
||||
* Return true to indicate successful loading and false to indicate load failure.
|
||||
*/
|
||||
RETRO_API bool retro_load_game(const struct retro_game_info *game);
|
||||
|
||||
/* Loads a "special" kind of game. Should not be used,
|
||||
@ -2378,7 +2380,7 @@ RETRO_API bool retro_load_game_special(
|
||||
const struct retro_game_info *info, size_t num_info
|
||||
);
|
||||
|
||||
/* Unloads a currently loaded game. */
|
||||
/* Unloads the currently loaded game. Called before retro_deinit(void). */
|
||||
RETRO_API void retro_unload_game(void);
|
||||
|
||||
/* Gets region of game. */
|
||||
|
@ -90,7 +90,7 @@ struct http_connection_t
|
||||
static char urlencode_lut[256];
|
||||
static bool urlencode_lut_inited = false;
|
||||
|
||||
void urlencode_lut_init()
|
||||
void urlencode_lut_init(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
@ -109,6 +109,7 @@ void net_http_urlencode(char **dest, const char *source)
|
||||
char *enc = NULL;
|
||||
/* Assume every character will be encoded, so we need 3 times the space. */
|
||||
size_t len = strlen(source) * 3 + 1;
|
||||
size_t count = len;
|
||||
|
||||
if (!urlencode_lut_inited)
|
||||
urlencode_lut_init();
|
||||
@ -119,11 +120,16 @@ void net_http_urlencode(char **dest, const char *source)
|
||||
|
||||
for (; *source; source++)
|
||||
{
|
||||
int written = 0;
|
||||
|
||||
/* any non-ascii character will just be encoded without question */
|
||||
if ((unsigned)*source < sizeof(urlencode_lut) && urlencode_lut[(unsigned)*source])
|
||||
snprintf(enc, len, "%c", urlencode_lut[(unsigned)*source]);
|
||||
written = snprintf(enc, count, "%c", urlencode_lut[(unsigned)*source]);
|
||||
else
|
||||
snprintf(enc, len, "%%%02X", *source & 0xFF);
|
||||
written = snprintf(enc, count, "%%%02X", *source & 0xFF);
|
||||
|
||||
if (written > 0)
|
||||
count -= written;
|
||||
|
||||
while (*++enc);
|
||||
}
|
||||
|
@ -599,7 +599,7 @@ int rmsgpack_read(RFILE *fd,
|
||||
case _MPF_BIN8:
|
||||
case _MPF_BIN16:
|
||||
case _MPF_BIN32:
|
||||
if ((rv = read_buff(fd, 1<<(type - _MPF_BIN8),
|
||||
if ((rv = read_buff(fd, (size_t)(1 << (type - _MPF_BIN8)),
|
||||
&buff, &tmp_len)) < 0)
|
||||
return rv;
|
||||
|
||||
@ -633,7 +633,7 @@ int rmsgpack_read(RFILE *fd,
|
||||
case _MPF_STR8:
|
||||
case _MPF_STR16:
|
||||
case _MPF_STR32:
|
||||
if ((rv = read_buff(fd, 1<<(type - _MPF_STR8), &buff, &tmp_len)) < 0)
|
||||
if ((rv = read_buff(fd, (size_t)(1 << (type - _MPF_STR8)), &buff, &tmp_len)) < 0)
|
||||
return rv;
|
||||
|
||||
if (callbacks->read_string)
|
||||
|
@ -82,6 +82,7 @@ generic_deferred_push(deferred_push_video_shader_preset_parameters, DISPLAYLIST_
|
||||
generic_deferred_push(deferred_push_video_shader_parameters, DISPLAYLIST_SHADER_PARAMETERS)
|
||||
generic_deferred_push(deferred_push_settings, DISPLAYLIST_SETTINGS_ALL)
|
||||
generic_deferred_push(deferred_push_shader_options, DISPLAYLIST_OPTIONS_SHADERS)
|
||||
generic_deferred_push(deferred_push_quick_menu_override_options, DISPLAYLIST_OPTIONS_OVERRIDES)
|
||||
generic_deferred_push(deferred_push_options, DISPLAYLIST_OPTIONS)
|
||||
generic_deferred_push(deferred_push_netplay, DISPLAYLIST_NETPLAY_ROOM_LIST)
|
||||
generic_deferred_push(deferred_push_netplay_sublist, DISPLAYLIST_NETPLAY)
|
||||
@ -903,6 +904,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_hotkey_binds_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_OVERRIDE_OPTIONS)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_quick_menu_override_options);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
|
@ -57,6 +57,26 @@
|
||||
|
||||
extern struct key_desc key_descriptors[RARCH_MAX_KEYS];
|
||||
|
||||
static void menu_action_setting_audio_mixer_stream_name(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
const char *label,
|
||||
char *s, size_t len,
|
||||
const char *entry_label,
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
unsigned offset = (type - MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN);
|
||||
|
||||
*w = 19;
|
||||
strlcpy(s2, path, len2);
|
||||
|
||||
if (offset >= AUDIO_MIXER_MAX_STREAMS)
|
||||
return;
|
||||
|
||||
strlcpy(s, audio_driver_mixer_get_stream_name(offset), len);
|
||||
}
|
||||
|
||||
static void menu_action_setting_audio_mixer_stream_volume(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
@ -2115,7 +2135,14 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
||||
static int menu_cbs_init_bind_get_string_representation_compare_type(
|
||||
menu_file_list_cbs_t *cbs, unsigned type)
|
||||
{
|
||||
if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN
|
||||
if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_END)
|
||||
{
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_audio_mixer_stream_name);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END)
|
||||
{
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
|
@ -284,6 +284,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl)
|
||||
return MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST;
|
||||
case ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST:
|
||||
return MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_VIEWS_SETTINGS_LIST;
|
||||
case ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST:
|
||||
return MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_OVERRIDE_OPTIONS;
|
||||
case ACTION_OK_DL_USER_INTERFACE_SETTINGS_LIST:
|
||||
return MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST;
|
||||
case ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST:
|
||||
@ -821,6 +823,7 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||
case ACTION_OK_DL_MENU_SETTINGS_LIST:
|
||||
case ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST:
|
||||
case ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST:
|
||||
case ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST:
|
||||
case ACTION_OK_DL_USER_INTERFACE_SETTINGS_LIST:
|
||||
case ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST:
|
||||
case ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST:
|
||||
@ -1780,6 +1783,7 @@ static int action_ok_mixer_stream_action_play(const char *path,
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
case AUDIO_STREAM_STATE_NONE:
|
||||
break;
|
||||
}
|
||||
@ -1799,6 +1803,27 @@ static int action_ok_mixer_stream_action_play_looped(const char *path,
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
case AUDIO_STREAM_STATE_NONE:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_mixer_stream_action_play_sequential(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
unsigned stream_id = type - MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_BEGIN;
|
||||
enum audio_mixer_state state = audio_driver_mixer_get_stream_state(stream_id);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case AUDIO_STREAM_STATE_STOPPED:
|
||||
audio_driver_mixer_play_stream_sequential(stream_id);
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
case AUDIO_STREAM_STATE_NONE:
|
||||
break;
|
||||
}
|
||||
@ -1815,6 +1840,7 @@ static int action_ok_mixer_stream_action_remove(const char *path,
|
||||
{
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
case AUDIO_STREAM_STATE_STOPPED:
|
||||
audio_driver_mixer_remove_stream(stream_id);
|
||||
break;
|
||||
@ -1834,6 +1860,7 @@ static int action_ok_mixer_stream_action_stop(const char *path,
|
||||
{
|
||||
case AUDIO_STREAM_STATE_PLAYING:
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
audio_driver_mixer_stop_stream(stream_id);
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_STOPPED:
|
||||
@ -1868,6 +1895,25 @@ static int action_ok_audio_add_to_mixer(const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_audio_add_to_mixer_and_play(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
const char *entry_path = NULL;
|
||||
playlist_t *tmp_playlist = playlist_get_cached();
|
||||
|
||||
if (!tmp_playlist)
|
||||
return -1;
|
||||
|
||||
playlist_get_index(tmp_playlist, entry_idx,
|
||||
&entry_path, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
if (filestream_exists(entry_path))
|
||||
task_push_audio_mixer_load_and_play(entry_path,
|
||||
NULL, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_audio_add_to_mixer_and_collection(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -1896,6 +1942,34 @@ static int action_ok_audio_add_to_mixer_and_collection(const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_audio_add_to_mixer_and_collection_and_play(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
char combined_path[PATH_MAX_LENGTH];
|
||||
menu_handle_t *menu = NULL;
|
||||
|
||||
combined_path[0] = '\0';
|
||||
|
||||
if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu))
|
||||
return menu_cbs_exit();
|
||||
|
||||
fill_pathname_join(combined_path, menu->scratch2_buf,
|
||||
menu->scratch_buf, sizeof(combined_path));
|
||||
|
||||
command_playlist_push_write(
|
||||
g_defaults.music_history,
|
||||
combined_path,
|
||||
NULL,
|
||||
"builtin",
|
||||
"musicplayer");
|
||||
|
||||
if (filestream_exists(combined_path))
|
||||
task_push_audio_mixer_load_and_play(combined_path,
|
||||
NULL, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_menu_wallpaper(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -3285,6 +3359,7 @@ default_action_ok_func(action_ok_onscreen_display_list, ACTION_OK_DL_ONSCREEN_DI
|
||||
default_action_ok_func(action_ok_onscreen_notifications_list, ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST)
|
||||
default_action_ok_func(action_ok_onscreen_overlay_list, ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST)
|
||||
default_action_ok_func(action_ok_menu_list, ACTION_OK_DL_MENU_SETTINGS_LIST)
|
||||
default_action_ok_func(action_ok_quick_menu_override_options, ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST)
|
||||
default_action_ok_func(action_ok_menu_views_list, ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST)
|
||||
default_action_ok_func(action_ok_quick_menu_views_list, ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST)
|
||||
default_action_ok_func(action_ok_user_interface_list, ACTION_OK_DL_USER_INTERFACE_SETTINGS_LIST)
|
||||
@ -4140,9 +4215,15 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION:
|
||||
BIND_ACTION_OK(cbs, action_ok_audio_add_to_mixer_and_collection);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY:
|
||||
BIND_ACTION_OK(cbs, action_ok_audio_add_to_mixer_and_collection_and_play);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER:
|
||||
BIND_ACTION_OK(cbs, action_ok_audio_add_to_mixer);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_PLAY:
|
||||
BIND_ACTION_OK(cbs, action_ok_audio_add_to_mixer_and_play);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_WALLPAPER:
|
||||
BIND_ACTION_OK(cbs, action_ok_menu_wallpaper);
|
||||
break;
|
||||
@ -4484,6 +4565,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_MENU_VIEWS_SETTINGS:
|
||||
BIND_ACTION_OK(cbs, action_ok_menu_views_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_QUICK_MENU_OVERRIDE_OPTIONS:
|
||||
BIND_ACTION_OK(cbs, action_ok_quick_menu_override_options);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_QUICK_MENU_VIEWS_SETTINGS:
|
||||
BIND_ACTION_OK(cbs, action_ok_quick_menu_views_list);
|
||||
break;
|
||||
@ -4680,6 +4764,11 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_mixer_stream_action_play_looped);
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_END)
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_mixer_stream_action_play_sequential);
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_END)
|
||||
{
|
||||
|
@ -49,6 +49,23 @@
|
||||
return 0; \
|
||||
}
|
||||
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_add_to_mixer_and_play,
|
||||
MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_add_to_mixer,
|
||||
MENU_ENUM_SUBLABEL_ADD_TO_MIXER)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_play,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_play_looped,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_play_sequential,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_stop,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_remove,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE)
|
||||
default_sublabel_macro(menu_action_sublabel_setting_audio_mixer_stream_volume,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME)
|
||||
default_sublabel_macro(action_bind_sublabel_quick_menu_override_options, MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS)
|
||||
default_sublabel_macro(action_bind_sublabel_crt_switchres, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION)
|
||||
default_sublabel_macro(action_bind_sublabel_crt_switchres_super, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER)
|
||||
default_sublabel_macro(action_bind_sublabel_automatically_add_content_to_playlist, MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST)
|
||||
@ -81,6 +98,7 @@ default_sublabel_macro(action_bind_sublabel_video_settings_list, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_suspend_screensaver_enable, MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_video_window_scale, MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE)
|
||||
default_sublabel_macro(action_bind_sublabel_audio_settings_list, MENU_ENUM_SUBLABEL_AUDIO_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_mixer_settings_list, MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_input_settings_list, MENU_ENUM_SUBLABEL_INPUT_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_latency_settings_list, MENU_ENUM_SUBLABEL_LATENCY_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_wifi_settings_list, MENU_ENUM_SUBLABEL_WIFI_SETTINGS)
|
||||
@ -443,13 +461,7 @@ static int action_bind_sublabel_remap_kbd_sublabel(
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
unsigned offset;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (!settings)
|
||||
return 0;
|
||||
|
||||
offset = type / ((MENU_SETTINGS_INPUT_DESC_KBD_END -
|
||||
unsigned offset = type / ((MENU_SETTINGS_INPUT_DESC_KBD_END -
|
||||
(MENU_SETTINGS_INPUT_DESC_KBD_END -
|
||||
MENU_SETTINGS_INPUT_DESC_KBD_BEGIN))) - 1;
|
||||
|
||||
@ -468,8 +480,7 @@ static int action_bind_sublabel_audio_mixer_stream(
|
||||
char *s, size_t len)
|
||||
{
|
||||
char msg[64];
|
||||
unsigned offset = (type - MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN);
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned offset = (type - MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN);
|
||||
audio_mixer_stream_t *stream = audio_driver_mixer_get_stream(offset);
|
||||
|
||||
if (!stream)
|
||||
@ -489,6 +500,9 @@ static int action_bind_sublabel_audio_mixer_stream(
|
||||
case AUDIO_STREAM_STATE_PLAYING_LOOPED:
|
||||
strlcpy(msg, "Playing (Looped)", sizeof(msg));
|
||||
break;
|
||||
case AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL:
|
||||
strlcpy(msg, "Playing (Sequential)", sizeof(msg));
|
||||
break;
|
||||
}
|
||||
|
||||
snprintf(s, len, "State : %s | Volume: %.2f dB", msg,
|
||||
@ -502,13 +516,8 @@ static int action_bind_sublabel_remap_sublabel(
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
unsigned offset;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (!settings)
|
||||
return 0;
|
||||
|
||||
offset = (type - MENU_SETTINGS_INPUT_DESC_BEGIN) / (RARCH_FIRST_CUSTOM_BIND + 8);
|
||||
unsigned offset = (type - MENU_SETTINGS_INPUT_DESC_BEGIN)
|
||||
/ (RARCH_FIRST_CUSTOM_BIND + 8);
|
||||
|
||||
snprintf(s, len, "User #%d: %s", offset + 1,
|
||||
input_config_get_device_display_name(offset) ?
|
||||
@ -581,6 +590,48 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_remap_kbd_sublabel);
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_play);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_play_looped);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_play_sequential);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_remove);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_stop);
|
||||
return 0;
|
||||
}
|
||||
else if (type >= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN
|
||||
&& type <= MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END)
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs,
|
||||
menu_action_sublabel_setting_audio_mixer_stream_volume);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN
|
||||
&& type <= MENU_SETTINGS_INPUT_DESC_END)
|
||||
@ -599,6 +650,17 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
{
|
||||
switch (cbs->enum_idx)
|
||||
{
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER:
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION:
|
||||
BIND_ACTION_SUBLABEL(cbs, menu_action_sublabel_setting_audio_mixer_add_to_mixer);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_PLAY:
|
||||
case MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY:
|
||||
BIND_ACTION_SUBLABEL(cbs, menu_action_sublabel_setting_audio_mixer_add_to_mixer_and_play);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_QUICK_MENU_OVERRIDE_OPTIONS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_override_options);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_crt_switchres);
|
||||
break;
|
||||
@ -1576,6 +1638,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_AUDIO_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_mixer_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LATENCY_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_latency_settings_list);
|
||||
break;
|
||||
|
@ -19,6 +19,8 @@
|
||||
|
||||
#include <compat/strl.h>
|
||||
|
||||
#include "../../audio/audio_driver.h"
|
||||
|
||||
#include "../menu_driver.h"
|
||||
#include "../menu_cbs.h"
|
||||
|
||||
@ -79,10 +81,12 @@ static int action_get_title_action_generic(const char *path, const char *label,
|
||||
static int action_get_title_mixer_stream_actions(const char *path, const char *label, unsigned menu_type, char *s, size_t len)
|
||||
{
|
||||
unsigned offset = (menu_type - MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN);
|
||||
snprintf(s, len, "Mixer Stream #%d", offset + 1);
|
||||
|
||||
snprintf(s, len, "Mixer Stream #%d: %s", offset + 1, audio_driver_mixer_get_stream_name(offset));
|
||||
return 0;
|
||||
}
|
||||
|
||||
default_title_macro(action_get_quick_menu_override_options, MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS)
|
||||
default_title_macro(action_get_user_accounts_cheevos_list, MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS)
|
||||
default_title_macro(action_get_download_core_content_list, MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT)
|
||||
default_title_macro(action_get_user_accounts_list, MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST)
|
||||
@ -504,6 +508,11 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_network_information_list);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_OVERRIDE_OPTIONS)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_quick_menu_override_options);
|
||||
return 0;
|
||||
}
|
||||
else if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
{
|
||||
switch (cbs->enum_idx)
|
||||
|
@ -2496,9 +2496,10 @@ static void materialui_list_insert(void *userdata,
|
||||
node->texture_switch2_set = true;
|
||||
}
|
||||
else if (
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER))
|
||||
||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION))
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_PLAY)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY))
|
||||
)
|
||||
{
|
||||
node->texture_switch2_index = MUI_TEXTURE_ADD_TO_MIXER;
|
||||
@ -2636,6 +2637,8 @@ static void materialui_list_insert(void *userdata,
|
||||
||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_AUDIO_SETTINGS))
|
||||
||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS))
|
||||
||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_SETTINGS))
|
||||
||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_LATENCY_SETTINGS))
|
||||
|
@ -279,7 +279,7 @@ void d3d9_make_d3dpp(void *data, const video_info_t *info, void *_d3dpp);
|
||||
static void* xui_init(void **userdata, bool video_is_threaded)
|
||||
{
|
||||
HRESULT hr;
|
||||
d3d_video_t *d3d = NULL;
|
||||
d3d9_video_t *d3d = NULL;
|
||||
D3DPRESENT_PARAMETERS d3dpp = {0};
|
||||
video_info_t video_info = {0};
|
||||
TypefaceDescriptor typeface = {0};
|
||||
@ -289,7 +289,7 @@ static void* xui_init(void **userdata, bool video_is_threaded)
|
||||
if (!menu)
|
||||
return NULL;
|
||||
|
||||
d3d = (d3d_video_t*)video_driver_get_ptr(false);
|
||||
d3d = (d3d9_video_t*)video_driver_get_ptr(false);
|
||||
|
||||
if (d3d->resolution_hd_enable)
|
||||
RARCH_LOG("HD menus enabled.\n");
|
||||
@ -379,7 +379,7 @@ static void xui_render_message(const char *msg)
|
||||
size_t i = 0;
|
||||
size_t j = 0;
|
||||
struct string_list *list = NULL;
|
||||
d3d_video_t *d3d = (d3d_video_t*)video_driver_get_ptr(false);
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)video_driver_get_ptr(false);
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -418,7 +418,7 @@ static void xui_frame(void *data, video_frame_info_t *video_info)
|
||||
D3DXMATRIX matOrigView;
|
||||
const char *message = NULL;
|
||||
D3DVIEWPORT9 vp_full = {0};
|
||||
d3d_video_t *d3d = (d3d_video_t*)video_driver_get_ptr(false);
|
||||
d3d9_video_t *d3d = (d3d9_video_t*)video_driver_get_ptr(false);
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
|
@ -81,8 +81,8 @@ static INT32 menu_display_prim_to_d3d8_enum(
|
||||
|
||||
static void menu_display_d3d8_blend_begin(video_frame_info_t *video_info)
|
||||
{
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d8_video_t *d3d = video_info ?
|
||||
(d3d8_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -92,8 +92,8 @@ static void menu_display_d3d8_blend_begin(video_frame_info_t *video_info)
|
||||
|
||||
static void menu_display_d3d8_blend_end(video_frame_info_t *video_info)
|
||||
{
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d8_video_t *d3d = video_info ?
|
||||
(d3d8_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -105,7 +105,7 @@ static void menu_display_d3d8_viewport(void *data, video_frame_info_t *video_inf
|
||||
{
|
||||
}
|
||||
|
||||
static void menu_display_d3d8_bind_texture(void *data, d3d_video_t *d3d)
|
||||
static void menu_display_d3d8_bind_texture(void *data, d3d8_video_t *d3d)
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
|
||||
@ -125,7 +125,7 @@ static void menu_display_d3d8_draw(void *data, video_frame_info_t *video_info)
|
||||
video_shader_ctx_mvp_t mvp;
|
||||
math_matrix_4x4 mop, m1, m2;
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = video_info ? (d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d8_video_t *d3d = video_info ? (d3d8_video_t*)video_info->userdata : NULL;
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
Vertex * pv = NULL;
|
||||
const float *vertex = NULL;
|
||||
@ -216,7 +216,7 @@ static void menu_display_d3d8_draw(void *data, video_frame_info_t *video_info)
|
||||
mvp.data = d3d;
|
||||
mvp.matrix = &m1;
|
||||
video_driver_set_mvp(&mvp);
|
||||
menu_display_d3d8_bind_texture(draw, (d3d_video_t*)video_info->userdata);
|
||||
menu_display_d3d8_bind_texture(draw, (d3d8_video_t*)video_info->userdata);
|
||||
d3d8_draw_primitive(d3d->dev,
|
||||
menu_display_prim_to_d3d8_enum(draw->prim_type),
|
||||
d3d->menu_display.offset,
|
||||
@ -241,8 +241,8 @@ static void menu_display_d3d8_clear_color(
|
||||
menu_display_ctx_clearcolor_t *clearcolor, video_frame_info_t *video_info)
|
||||
{
|
||||
DWORD clear_color = 0;
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d8_video_t *d3d = video_info ?
|
||||
(d3d8_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d || !clearcolor)
|
||||
return;
|
||||
|
@ -81,8 +81,8 @@ static INT32 menu_display_prim_to_d3d9_enum(
|
||||
|
||||
static void menu_display_d3d9_blend_begin(video_frame_info_t *video_info)
|
||||
{
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d9_video_t *d3d = video_info ?
|
||||
(d3d9_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -92,8 +92,8 @@ static void menu_display_d3d9_blend_begin(video_frame_info_t *video_info)
|
||||
|
||||
static void menu_display_d3d9_blend_end(video_frame_info_t *video_info)
|
||||
{
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d9_video_t *d3d = video_info ?
|
||||
(d3d9_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d)
|
||||
return;
|
||||
@ -105,19 +105,22 @@ static void menu_display_d3d9_viewport(void *data, video_frame_info_t *video_inf
|
||||
{
|
||||
}
|
||||
|
||||
static void menu_display_d3d9_bind_texture(void *data, d3d_video_t *d3d)
|
||||
static void menu_display_d3d9_bind_texture(void *data, d3d9_video_t *d3d)
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
LPDIRECT3DDEVICE9 dev;
|
||||
|
||||
if (!d3d || !draw || !draw->texture)
|
||||
return;
|
||||
|
||||
d3d9_set_texture(d3d->dev, 0, (void*)draw->texture);
|
||||
d3d9_set_sampler_address_u(d3d->dev, 0, D3DTADDRESS_COMM_CLAMP);
|
||||
d3d9_set_sampler_address_v(d3d->dev, 0, D3DTADDRESS_COMM_CLAMP);
|
||||
d3d9_set_sampler_minfilter(d3d->dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
d3d9_set_sampler_magfilter(d3d->dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
d3d9_set_sampler_mipfilter(d3d->dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
dev = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
|
||||
d3d9_set_texture(dev, 0, (LPDIRECT3DTEXTURE9)draw->texture);
|
||||
d3d9_set_sampler_address_u(dev, 0, D3DTADDRESS_COMM_CLAMP);
|
||||
d3d9_set_sampler_address_v(dev, 0, D3DTADDRESS_COMM_CLAMP);
|
||||
d3d9_set_sampler_minfilter(dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
d3d9_set_sampler_magfilter(dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
d3d9_set_sampler_mipfilter(dev, 0, D3DTEXF_COMM_LINEAR);
|
||||
}
|
||||
|
||||
static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info)
|
||||
@ -126,7 +129,8 @@ static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info)
|
||||
video_shader_ctx_mvp_t mvp;
|
||||
math_matrix_4x4 mop, m1, m2;
|
||||
unsigned width, height;
|
||||
d3d_video_t *d3d = video_info ? (d3d_video_t*)video_info->userdata : NULL;
|
||||
LPDIRECT3DDEVICE9 dev;
|
||||
d3d9_video_t *d3d = video_info ? (d3d9_video_t*)video_info->userdata : NULL;
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
Vertex * pv = NULL;
|
||||
const float *vertex = NULL;
|
||||
@ -135,12 +139,15 @@ static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info)
|
||||
|
||||
if (!d3d || !draw || draw->pipeline.id)
|
||||
return;
|
||||
|
||||
dev = d3d->dev;
|
||||
|
||||
if((d3d->menu_display.offset + draw->coords->vertices )
|
||||
> (unsigned)d3d->menu_display.size)
|
||||
return;
|
||||
|
||||
pv = (Vertex*)
|
||||
d3d9_vertex_buffer_lock(d3d->menu_display.buffer);
|
||||
d3d9_vertex_buffer_lock((LPDIRECT3DVERTEXBUFFER9)d3d->menu_display.buffer);
|
||||
|
||||
if (!pv)
|
||||
return;
|
||||
@ -178,7 +185,7 @@ static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info)
|
||||
colors[2] /* B */
|
||||
);
|
||||
}
|
||||
d3d9_vertex_buffer_unlock(d3d->menu_display.buffer);
|
||||
d3d9_vertex_buffer_unlock((LPDIRECT3DVERTEXBUFFER9)d3d->menu_display.buffer);
|
||||
|
||||
if(!draw->matrix_data)
|
||||
draw->matrix_data = menu_display_d3d9_get_default_mvp(video_info);
|
||||
@ -205,9 +212,9 @@ static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info)
|
||||
mvp.data = d3d;
|
||||
mvp.matrix = &m1;
|
||||
video_driver_set_mvp(&mvp);
|
||||
menu_display_d3d9_bind_texture(draw, (d3d_video_t*)video_info->userdata);
|
||||
d3d9_draw_primitive(d3d->dev,
|
||||
menu_display_prim_to_d3d9_enum(draw->prim_type),
|
||||
menu_display_d3d9_bind_texture(draw, (d3d9_video_t*)video_info->userdata);
|
||||
d3d9_draw_primitive(dev,
|
||||
(D3DPRIMITIVETYPE)menu_display_prim_to_d3d9_enum(draw->prim_type),
|
||||
d3d->menu_display.offset,
|
||||
draw->coords->vertices -
|
||||
((draw->prim_type == MENU_DISPLAY_PRIM_TRIANGLESTRIP)
|
||||
@ -270,13 +277,16 @@ static void menu_display_d3d9_restore_clear_color(void)
|
||||
static void menu_display_d3d9_clear_color(
|
||||
menu_display_ctx_clearcolor_t *clearcolor, video_frame_info_t *video_info)
|
||||
{
|
||||
LPDIRECT3DDEVICE9 dev;
|
||||
DWORD clear_color = 0;
|
||||
d3d_video_t *d3d = video_info ?
|
||||
(d3d_video_t*)video_info->userdata : NULL;
|
||||
d3d9_video_t *d3d = video_info ?
|
||||
(d3d9_video_t*)video_info->userdata : NULL;
|
||||
|
||||
if (!d3d || !clearcolor)
|
||||
return;
|
||||
|
||||
dev = (LPDIRECT3DDEVICE9)d3d->dev;
|
||||
|
||||
clear_color = D3DCOLOR_ARGB(
|
||||
BYTE_CLAMP(clearcolor->a * 255.0f), /* A */
|
||||
BYTE_CLAMP(clearcolor->r * 255.0f), /* R */
|
||||
@ -284,7 +294,7 @@ static void menu_display_d3d9_clear_color(
|
||||
BYTE_CLAMP(clearcolor->b * 255.0f) /* B */
|
||||
);
|
||||
|
||||
d3d9_clear(d3d->dev, 0, NULL, D3D_COMM_CLEAR_TARGET, clear_color, 0, 0);
|
||||
d3d9_clear(dev, 0, NULL, D3D_COMM_CLEAR_TARGET, clear_color, 0, 0);
|
||||
}
|
||||
|
||||
static bool menu_display_d3d9_font_init_first(
|
||||
|
@ -114,6 +114,7 @@ enum
|
||||
ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST,
|
||||
ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST,
|
||||
ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST,
|
||||
ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST,
|
||||
ACTION_OK_DL_MENU_SETTINGS_LIST,
|
||||
ACTION_OK_DL_USER_INTERFACE_SETTINGS_LIST,
|
||||
ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -156,6 +156,7 @@ enum menu_displaylist_ctl_state
|
||||
DISPLAYLIST_OPTIONS_MANAGEMENT,
|
||||
DISPLAYLIST_OPTIONS_DISK,
|
||||
DISPLAYLIST_OPTIONS_SHADERS,
|
||||
DISPLAYLIST_OPTIONS_OVERRIDES,
|
||||
DISPLAYLIST_NETPLAY,
|
||||
DISPLAYLIST_ADD_CONTENT_LIST,
|
||||
DISPLAYLIST_CONFIGURATIONS_LIST,
|
||||
@ -228,9 +229,11 @@ void menu_displaylist_info_free(menu_displaylist_info_t *info);
|
||||
void menu_displaylist_info_init(menu_displaylist_info_t *info);
|
||||
|
||||
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data);
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
void netplay_refresh_rooms_menu(file_list_t *list);
|
||||
#endif
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "menu_input.h"
|
||||
#include "menu_entries.h"
|
||||
|
||||
#include "../audio/audio_driver.h"
|
||||
#include "../gfx/video_driver.h"
|
||||
#include "../file_path_special.h"
|
||||
#include "../gfx/font_driver.h"
|
||||
@ -131,6 +132,8 @@ enum rarch_menu_ctl_state
|
||||
MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL
|
||||
};
|
||||
|
||||
#define MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS (AUDIO_MIXER_MAX_STREAMS-1)
|
||||
|
||||
enum menu_settings_type
|
||||
{
|
||||
MENU_SETTINGS_NONE = FILE_TYPE_LAST + 1,
|
||||
@ -189,20 +192,22 @@ enum menu_settings_type
|
||||
MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS,
|
||||
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_STOP_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_REMOVE_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_LOOPED_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_PLAY_SEQUENTIAL_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN + 7,
|
||||
MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_END = MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_VOLUME_BEGIN + MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS,
|
||||
MENU_SETTINGS_BIND_BEGIN,
|
||||
MENU_SETTINGS_BIND_LAST = MENU_SETTINGS_BIND_BEGIN + RARCH_ANALOG_RIGHT_Y_MINUS,
|
||||
MENU_SETTINGS_BIND_ALL_LAST = MENU_SETTINGS_BIND_BEGIN + RARCH_MENU_TOGGLE,
|
||||
|
@ -5274,6 +5274,49 @@ static bool setting_append_list(
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
/* These colors are hints. The menu driver is not required to use them. */
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->uints.menu_entry_normal_color,
|
||||
MENU_ENUM_LABEL_ENTRY_NORMAL_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR,
|
||||
menu_entry_normal_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->uints.menu_entry_hover_color,
|
||||
MENU_ENUM_LABEL_ENTRY_HOVER_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR,
|
||||
menu_entry_hover_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->uints.menu_title_color,
|
||||
MENU_ENUM_LABEL_TITLE_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_TITLE_COLOR,
|
||||
menu_title_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
}
|
||||
|
||||
if (string_is_equal(settings->arrays.menu_driver, "xmb"))
|
||||
@ -5390,50 +5433,6 @@ static bool setting_append_list(
|
||||
);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/* These colors are hints. The menu driver is not required to use them. */
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->menu.entry_normal_color,
|
||||
MENU_ENUM_LABEL_ENTRY_NORMAL_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR,
|
||||
menu_entry_normal_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->menu.entry_hover_color,
|
||||
MENU_ENUM_LABEL_ENTRY_HOVER_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR,
|
||||
menu_entry_hover_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_HEX(
|
||||
list, list_info,
|
||||
&settings->menu.title_color,
|
||||
MENU_ENUM_LABEL_TITLE_COLOR,
|
||||
MENU_ENUM_LABEL_VALUE_TITLE_COLOR,
|
||||
menu_title_color,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
#endif
|
||||
|
||||
END_SUB_GROUP(list, list_info, parent_group);
|
||||
|
||||
@ -6533,7 +6532,7 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
@ -6548,7 +6547,7 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
SD_FLAG_NONE);
|
||||
#endif
|
||||
END_SUB_GROUP(list, list_info, parent_group);
|
||||
END_GROUP(list, list_info, parent_group);
|
||||
@ -6686,21 +6685,22 @@ static bool setting_append_list(
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_badges_enable,
|
||||
MENU_ENUM_LABEL_CHEEVOS_BADGES_ENABLE,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE,
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
if (string_is_equal(settings->arrays.menu_driver, "xmb"))
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_badges_enable,
|
||||
MENU_ENUM_LABEL_CHEEVOS_BADGES_ENABLE,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE,
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
|
18
msg_hash.h
18
msg_hash.h
@ -412,13 +412,22 @@ enum msg_hash_enums
|
||||
MSG_CORE_REMAP_FILE_LOADED,
|
||||
|
||||
MENU_LABEL(ADD_TO_MIXER),
|
||||
MENU_LABEL(ADD_TO_MIXER_AND_PLAY),
|
||||
MENU_LABEL(ADD_TO_MIXER_AND_COLLECTION),
|
||||
MENU_LABEL(ADD_TO_MIXER_AND_COLLECTION_AND_PLAY),
|
||||
MENU_ENUM_LABEL_MENU_TOGGLE,
|
||||
|
||||
MENU_LABEL(FILTER_BY_CURRENT_CORE),
|
||||
|
||||
MENU_LABEL(NO_HISTORY_AVAILABLE),
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP,
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
|
||||
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_REMAP_FILE,
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_FILE,
|
||||
MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN,
|
||||
@ -791,6 +800,7 @@ enum msg_hash_enums
|
||||
MENU_LABEL(TIMEDATE_ENABLE),
|
||||
MENU_LABEL(BATTERY_LEVEL_ENABLE),
|
||||
MENU_LABEL(MATERIALUI_MENU_COLOR_THEME),
|
||||
MENU_LABEL(QUICK_MENU_OVERRIDE_OPTIONS),
|
||||
MENU_LABEL(QUICK_MENU_SHOW_TAKE_SCREENSHOT),
|
||||
MENU_LABEL(QUICK_MENU_SHOW_SAVE_LOAD_STATE),
|
||||
MENU_LABEL(QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE),
|
||||
@ -1001,6 +1011,7 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_VIEWS_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_OVERRIDE_OPTIONS,
|
||||
MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST,
|
||||
@ -1757,6 +1768,12 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_CB_UPDATE_SHADERS_SLANG,
|
||||
|
||||
/* Sublabels */
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
|
||||
MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
|
||||
MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST,
|
||||
MENU_ENUM_SUBLABEL_SERVICES_SETTINGS,
|
||||
|
||||
@ -1781,6 +1798,7 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS,
|
||||
MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_DOCK_POSITIONS,
|
||||
|
@ -1,8 +1,8 @@
|
||||
<!-- <!DOCTYPE manifest [ <!ENTITY % versionDTD SYSTEM "../../../version.dtd"> %versionDTD; ]> !-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.retroarch"
|
||||
android:versionCode="68"
|
||||
android:versionName="1.7.2"
|
||||
android:versionCode="70"
|
||||
android:versionName="1.7.3"
|
||||
android:installLocation="internalOnly">
|
||||
<uses-feature android:glEsVersion="0x00020000" />
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
|
||||
|
@ -9,10 +9,18 @@ Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug Cg|x64 = Debug Cg|x64
|
||||
Debug Cg|x86 = Debug Cg|x86
|
||||
Debug QT|x64 = Debug QT|x64
|
||||
Debug QT|x86 = Debug QT|x86
|
||||
Debug QT+CG|x64 = Debug QT+CG|x64
|
||||
Debug QT+CG|x86 = Debug QT+CG|x86
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release Cg|x64 = Release Cg|x64
|
||||
Release Cg|x86 = Release Cg|x86
|
||||
Release QT|x64 = Release QT|x64
|
||||
Release QT|x86 = Release QT|x86
|
||||
Release QT+CG|x64 = Release QT+CG|x64
|
||||
Release QT+CG|x86 = Release QT+CG|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
@ -21,6 +29,14 @@ Global
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug Cg|x64.Build.0 = Debug Cg|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug Cg|x86.ActiveCfg = Debug Cg|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug Cg|x86.Build.0 = Debug Cg|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT|x64.ActiveCfg = Debug QT|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT|x64.Build.0 = Debug QT|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT|x86.ActiveCfg = Debug QT|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT|x86.Build.0 = Debug QT|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT+CG|x64.ActiveCfg = Debug QT+CG|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT+CG|x64.Build.0 = Debug QT+CG|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT+CG|x86.ActiveCfg = Debug QT+CG|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug QT+CG|x86.Build.0 = Debug QT+CG|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug|x64.Build.0 = Debug|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
@ -29,6 +45,14 @@ Global
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release Cg|x64.Build.0 = Release Cg|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release Cg|x86.ActiveCfg = Release Cg|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release Cg|x86.Build.0 = Release Cg|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT|x64.ActiveCfg = Release QT|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT|x64.Build.0 = Release QT|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT|x86.ActiveCfg = Release QT|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT|x86.Build.0 = Release QT|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT+CG|x64.ActiveCfg = Release QT+CG|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT+CG|x64.Build.0 = Release QT+CG|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT+CG|x86.ActiveCfg = Release QT+CG|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release QT+CG|x86.Build.0 = Release QT+CG|Win32
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release|x64.ActiveCfg = Release|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release|x64.Build.0 = Release|x64
|
||||
{27FF7CE1-4059-4AA1-8062-FD529560FA54}.Release|x86.ActiveCfg = Release|Win32
|
||||
@ -37,4 +61,7 @@ Global
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C7897994-5FD9-4B08-93CB-5EF58C48CFC6}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
@ -158,7 +158,12 @@
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\griffin\griffin_cpp.cpp" />
|
||||
<ClCompile Include="..\..\..\griffin\griffin_glslang.cpp" />
|
||||
<ClCompile Include="..\..\..\griffin\griffin_glslang.cpp">
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
@ -9,6 +9,22 @@
|
||||
<Configuration>Debug Cg</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug QT+CG|Win32">
|
||||
<Configuration>Debug QT+CG</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug QT+CG|x64">
|
||||
<Configuration>Debug QT+CG</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug QT|Win32">
|
||||
<Configuration>Debug QT</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug QT|x64">
|
||||
<Configuration>Debug QT</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@ -25,6 +41,22 @@
|
||||
<Configuration>Release Cg</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release QT+CG|Win32">
|
||||
<Configuration>Release QT+CG</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release QT+CG|x64">
|
||||
<Configuration>Release QT+CG</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release QT|Win32">
|
||||
<Configuration>Release QT</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release QT|x64">
|
||||
<Configuration>Release QT</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@ -53,6 +85,18 @@
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
@ -65,6 +109,18 @@
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@ -79,6 +135,20 @@
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@ -93,6 +163,20 @@
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@ -102,24 +186,48 @@
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
@ -137,6 +245,24 @@
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2015\include\QtCore;$(QtDirectory)\msvc2015\include\QtWidgets;$(QtDirectory)\msvc2015\include\QtGui;$(QtDirectory)\msvc2015\include</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(CG_LIB_PATH);$(QtDirectory)\msvc2015\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2015\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2015\include\QtCore;$(QtDirectory)\msvc2015\include\QtWidgets;$(QtDirectory)\msvc2015\include\QtGui;$(QtDirectory)\msvc2015\include</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(CG_LIB_PATH);$(QtDirectory)\msvc2015\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2015\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
|
||||
@ -153,6 +279,24 @@
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2017_64\include\QtCore;$(QtDirectory)\msvc2017_64\include\QtWidgets;$(QtDirectory)\msvc2017_64\include\QtGui;$(QtDirectory)\msvc2017_64\include\</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(QtDirectory)\msvc2017_64\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2017_64\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2017_64\include\QtCore;$(QtDirectory)\msvc2017_64\include\QtWidgets;$(QtDirectory)\msvc2017_64\include\QtGui;$(QtDirectory)\msvc2017_64\include\</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(CG_LIB64_PATH);$(QtDirectory)\msvc2017_64\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2017_64\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
|
||||
@ -169,6 +313,24 @@
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2015\include\QtCore;$(QtDirectory)\msvc2015\include\QtWidgets;$(QtDirectory)\msvc2015\include\QtGui;$(QtDirectory)\msvc2015\include</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(CG_LIB_PATH);$(QtDirectory)\msvc2015\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2015\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2015\include\QtCore;$(QtDirectory)\msvc2015\include\QtWidgets;$(QtDirectory)\msvc2015\include\QtGui;$(QtDirectory)\msvc2015\include</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(CG_LIB_PATH);$(QtDirectory)\msvc2015\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2015\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
|
||||
@ -185,6 +347,24 @@
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2017_64\include\QtCore;$(QtDirectory)\msvc2017_64\include\QtWidgets;$(QtDirectory)\msvc2017_64\include\QtGui;$(QtDirectory)\msvc2017_64\include\</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(QtDirectory)\msvc2017_64\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2017_64\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(CG_INC_PATH);$(IncludePath);$(DXSDK_DIR)Include;$(QtDirectory)\msvc2017_64\include\QtCore;$(QtDirectory)\msvc2017_64\include\QtWidgets;$(QtDirectory)\msvc2017_64\include\QtGui;$(QtDirectory)\msvc2017_64\include\</IncludePath>
|
||||
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(CG_LIB64_PATH);$(QtDirectory)\msvc2017_64\lib;$(LibraryPath)</LibraryPath>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<ExecutablePath>$(QtDirectory)\msvc2017_64\bin;$(ExecutablePath)</ExecutablePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
@ -226,6 +406,48 @@
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
@ -267,6 +489,48 @@
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -318,6 +582,58 @@
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -369,6 +685,58 @@
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\..\media\rarch.rc" />
|
||||
</ItemGroup>
|
||||
@ -376,18 +744,166 @@
|
||||
<ClCompile Include="..\..\..\griffin\griffin.c">
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">CompileAsC</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\griffin\griffin_cpp.cpp" />
|
||||
<ClCompile Include="..\..\..\griffin\griffin_glslang.cpp">
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MetaObjects\moc_ui_qt.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MetaObjects\moc_ui_qt_load_core_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\ui\drivers\qt\ui_qt_load_core_window.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</LinkObjects>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</LinkObjects>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</LinkObjects>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</LinkObjects>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">true</ExcludedFromBuild>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\ui\drivers\ui_qt.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">false</LinkObjects>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</ExcludedFromBuild>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT|Win32'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|Win32'">false</LinkObjects>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT|Win32'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug QT+CG|Win32'">false</LinkObjects>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">$(ProjectDir)MetaObjects\moc_%(Filename).cpp</Outputs>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT|x64'">false</LinkObjects>
|
||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release QT+CG|x64'">false</LinkObjects>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">true</ExcludedFromBuild>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
@ -7,6 +7,9 @@
|
||||
<Filter Include="griffin">
|
||||
<UniqueIdentifier>{9fc175c7-a869-47cf-a0ce-5447d6015ce9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="QT">
|
||||
<UniqueIdentifier>{e6159cab-0a32-493f-a119-a2f0fd0cc6ef}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\griffin\griffin.c">
|
||||
@ -18,5 +21,19 @@
|
||||
<ClCompile Include="..\..\..\griffin\griffin_glslang.cpp">
|
||||
<Filter>griffin</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MetaObjects\moc_ui_qt.cpp">
|
||||
<Filter>QT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MetaObjects\moc_ui_qt_load_core_window.cpp">
|
||||
<Filter>QT</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\..\ui\drivers\ui_qt.h">
|
||||
<Filter>QT</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\ui\drivers\qt\ui_qt_load_core_window.h">
|
||||
<Filter>QT</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
</Project>
|
22
pkg/msvc/msvc-2017/readme-build-qt.txt
Normal file
22
pkg/msvc/msvc-2017/readme-build-qt.txt
Normal file
@ -0,0 +1,22 @@
|
||||
If you are using the MSVC 2017 project file, you must define the environment varaible QtDirectory. This should point to the directory with the version number.
|
||||
For example: QtDirectory=C:\qt\5.10.1
|
||||
|
||||
Two ways to define the variable:
|
||||
|
||||
Windows:
|
||||
Control Panel > System
|
||||
Click Advanced System Settings
|
||||
Go to Advanced Tab
|
||||
Click Environment Variables button
|
||||
Create a new variable (either user or system is okay), name it QtDirectory, set the value to your QT directory.
|
||||
Restart all instances of Visual Studio. You may have to close it, wait 15 seconds, then kill the process.
|
||||
Visual Studio:
|
||||
View > Other Windows > Property Manager
|
||||
Open the x64 build configuration
|
||||
Double click on Microsoft.Cpp.x64.user
|
||||
Go to User Macros
|
||||
Add a new macro, name it QtDirectory, and set the value to your QT directory.
|
||||
Open the Win32 build configuration
|
||||
Double click on Microsoft.Cpp.Win32.user
|
||||
Go to User Macros
|
||||
Add a new macro, name it QtDirectory, and set the value to your QT directory.
|
@ -4,7 +4,7 @@
|
||||
<name>RetroArch</name>
|
||||
<coder>Libretro</coder>
|
||||
<version>&version;</version>
|
||||
<release_date>2012-2017</release_date>
|
||||
<release_date>2012-2018</release_date>
|
||||
<short_description>The cross-platform entertainment system</short_description>
|
||||
<long_description>A port of RetroArch to the GameCube/Wii.</long_description>
|
||||
<no_ios_reload/>
|
||||
|
@ -1,6 +1,2 @@
|
||||
USE_LANG_C="yes"
|
||||
|
||||
# C++ compiler is optional in other platforms supported by ./configure
|
||||
if [ "$OS" = 'Win32' ]; then
|
||||
USE_LANG_CXX="yes"
|
||||
fi
|
||||
USE_LANG_CXX="yes"
|
||||
|
@ -270,6 +270,8 @@ check_val '' PULSE -lpulse
|
||||
check_val '' SDL -lSDL SDL
|
||||
check_val '' SDL2 -lSDL2 SDL2
|
||||
|
||||
check_enabled QT 'Qt companion'
|
||||
|
||||
if [ "$HAVE_QT" != 'no' ] && [ "$MOC_PATH" != 'none' ]; then
|
||||
check_pkgconf QT5CORE Qt5Core 5.2
|
||||
check_pkgconf QT5GUI Qt5Gui 5.2
|
||||
@ -487,6 +489,8 @@ fi
|
||||
check_lib '' STRCASESTR "$CLIB" strcasestr
|
||||
check_lib '' MMAP "$CLIB" mmap
|
||||
|
||||
check_enabled VULKAN vulkan
|
||||
|
||||
if [ "$HAVE_VULKAN" != "no" ] && [ "$OS" = 'Win32' ]; then
|
||||
HAVE_VULKAN=yes
|
||||
else
|
||||
|
@ -11,6 +11,7 @@ int main(void) { puts("Hai world!"); return 0; }
|
||||
EOF
|
||||
|
||||
cc_works=0
|
||||
HAVE_CC=no
|
||||
if [ "$CC" ]; then
|
||||
"$CC" -o "$TEMP_EXE" "$TEMP_C" >/dev/null 2>&1 && cc_works=1
|
||||
else
|
||||
@ -29,6 +30,7 @@ rm -f -- "$TEMP_C" "$TEMP_EXE"
|
||||
cc_status='does not work'
|
||||
if [ "$cc_works" = '1' ]; then
|
||||
cc_status='works'
|
||||
HAVE_CC='yes'
|
||||
elif [ -z "$CC" ]; then
|
||||
cc_status='not found'
|
||||
fi
|
||||
@ -46,6 +48,7 @@ int main() { std::cout << "Hai guise" << std::endl; return 0; }
|
||||
EOF
|
||||
|
||||
cxx_works=0
|
||||
HAVE_CXX=no
|
||||
if [ "$CXX" ]; then
|
||||
"$CXX" -o "$TEMP_EXE" "$TEMP_CXX" >/dev/null 2>&1 && cxx_works=1
|
||||
else
|
||||
@ -64,6 +67,7 @@ rm -f -- "$TEMP_CXX" "$TEMP_EXE"
|
||||
cxx_status='does not work'
|
||||
if [ "$cxx_works" = '1' ]; then
|
||||
cxx_status='works'
|
||||
HAVE_CXX='yes'
|
||||
elif [ -z "$CXX" ]; then
|
||||
cxx_status='not found'
|
||||
fi
|
||||
@ -71,7 +75,7 @@ fi
|
||||
echo "Checking for suitable working C++ compiler ... $CXX $cxx_status"
|
||||
|
||||
if [ "$cxx_works" = '0' ] && [ "$USE_LANG_CXX" = 'yes' ]; then
|
||||
die 1 'Error: Cannot proceed without a working C++ compiler.'
|
||||
die : 'Warning: A working C++ compiler was not found, C++ features will be disabled.'
|
||||
fi
|
||||
|
||||
if [ "$OS" = "Win32" ]; then
|
||||
|
@ -28,6 +28,18 @@ check_compiler() # $1 = language $2 = function in lib
|
||||
fi
|
||||
}
|
||||
|
||||
check_enabled() # $1 = HAVE_$1 $2 = lib
|
||||
{ [ "$HAVE_CXX" != 'no' ] && return 0
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
|
||||
if [ "$tmpval" != 'yes' ]; then
|
||||
eval "HAVE_$1=no"
|
||||
return 0
|
||||
fi
|
||||
|
||||
die 1 "Forced to build with $2 support and the C++ compiler is disabled. Exiting ..."
|
||||
}
|
||||
|
||||
check_lib() # $1 = language $2 = HAVE_$2 $3 = lib $4 = function in lib $5 = extralibs $6 = headers $7 = critical error message [checked only if non-empty]
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
@ -222,8 +234,8 @@ create_config_make()
|
||||
|
||||
printf %s\\n "Creating make config: $outfile"
|
||||
|
||||
{ [ "$USE_LANG_C" = 'yes' ] && printf %s\\n "CC = $CC" "CFLAGS = $CFLAGS"
|
||||
[ "$USE_LANG_CXX" = 'yes' ] && printf %s\\n "CXX = $CXX" "CXXFLAGS = $CXXFLAGS"
|
||||
{ [ "$HAVE_CC" = 'yes' ] && printf %s\\n "CC = $CC" "CFLAGS = $CFLAGS"
|
||||
[ "$HAVE_CXX" = 'yes' ] && printf %s\\n "CXX = $CXX" "CXXFLAGS = $CXXFLAGS"
|
||||
|
||||
printf %s\\n "WINDRES = $WINDRES" \
|
||||
"MOC = $MOC" \
|
||||
|
@ -361,7 +361,10 @@ static bool runahead_create(void)
|
||||
static bool runahead_save_state(void)
|
||||
{
|
||||
bool okay = false;
|
||||
retro_ctx_serialize_info_t *serialize_info =
|
||||
retro_ctx_serialize_info_t *serialize_info;
|
||||
if (!runahead_save_state_list)
|
||||
return false;
|
||||
serialize_info =
|
||||
(retro_ctx_serialize_info_t*)runahead_save_state_list->data[0];
|
||||
set_fast_savestate();
|
||||
okay = core_serialize(serialize_info);
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include <file/nbio.h>
|
||||
#include <file/file_path.h>
|
||||
#include <audio/audio_mixer.h>
|
||||
#include <compat/strl.h>
|
||||
#include <string/stdstring.h>
|
||||
@ -33,6 +34,13 @@
|
||||
|
||||
#include "tasks_internal.h"
|
||||
|
||||
typedef struct nbio_buf
|
||||
{
|
||||
void *buf;
|
||||
unsigned bufsize;
|
||||
char *path;
|
||||
} nbio_buf_t;
|
||||
|
||||
struct audio_mixer_handle
|
||||
{
|
||||
nbio_buf_t *buffer;
|
||||
@ -50,7 +58,11 @@ static void task_audio_mixer_load_free(retro_task_t *task)
|
||||
if (image)
|
||||
{
|
||||
if (image->buffer)
|
||||
{
|
||||
if (image->buffer->path)
|
||||
free(image->buffer->path);
|
||||
free(image->buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (!string_is_empty(nbio->path))
|
||||
@ -86,6 +98,31 @@ static void task_audio_mixer_handle_upload_ogg(void *task_data,
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
params.volume = 1.0f;
|
||||
params.type = AUDIO_MIXER_TYPE_OGG;
|
||||
params.state = AUDIO_STREAM_STATE_STOPPED;
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
|
||||
static void task_audio_mixer_handle_upload_ogg_and_play(void *task_data,
|
||||
void *user_data, const char *err)
|
||||
{
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
@ -95,9 +132,12 @@ static void task_audio_mixer_handle_upload_ogg(void *task_data,
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
@ -108,6 +148,31 @@ static void task_audio_mixer_handle_upload_flac(void *task_data,
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
params.volume = 1.0f;
|
||||
params.type = AUDIO_MIXER_TYPE_FLAC;
|
||||
params.state = AUDIO_STREAM_STATE_STOPPED;
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
|
||||
static void task_audio_mixer_handle_upload_flac_and_play(void *task_data,
|
||||
void *user_data, const char *err)
|
||||
{
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
@ -117,9 +182,12 @@ static void task_audio_mixer_handle_upload_flac(void *task_data,
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
@ -130,6 +198,31 @@ static void task_audio_mixer_handle_upload_mp3(void *task_data,
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
params.volume = 1.0f;
|
||||
params.type = AUDIO_MIXER_TYPE_MP3;
|
||||
params.state = AUDIO_STREAM_STATE_STOPPED;
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
|
||||
static void task_audio_mixer_handle_upload_mp3_and_play(void *task_data,
|
||||
void *user_data, const char *err)
|
||||
{
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
@ -139,9 +232,12 @@ static void task_audio_mixer_handle_upload_mp3(void *task_data,
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
@ -152,6 +248,31 @@ static void task_audio_mixer_handle_upload_mod(void *task_data,
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
params.volume = 1.0f;
|
||||
params.type = AUDIO_MIXER_TYPE_MOD;
|
||||
params.state = AUDIO_STREAM_STATE_STOPPED;
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
|
||||
static void task_audio_mixer_handle_upload_mod_and_play(void *task_data,
|
||||
void *user_data, const char *err)
|
||||
{
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
@ -161,9 +282,12 @@ static void task_audio_mixer_handle_upload_mod(void *task_data,
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
@ -174,6 +298,31 @@ static void task_audio_mixer_handle_upload_wav(void *task_data,
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
params.volume = 1.0f;
|
||||
params.type = AUDIO_MIXER_TYPE_WAV;
|
||||
params.state = AUDIO_STREAM_STATE_STOPPED;
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
|
||||
static void task_audio_mixer_handle_upload_wav_and_play(void *task_data,
|
||||
void *user_data, const char *err)
|
||||
{
|
||||
audio_mixer_stream_params_t params;
|
||||
nbio_buf_t *img = (nbio_buf_t*)task_data;
|
||||
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
@ -183,9 +332,12 @@ static void task_audio_mixer_handle_upload_wav(void *task_data,
|
||||
params.buf = img->buf;
|
||||
params.bufsize = img->bufsize;
|
||||
params.cb = NULL;
|
||||
params.basename = !string_is_empty(img->path) ? strdup(path_basename(img->path)) : NULL;
|
||||
|
||||
audio_driver_mixer_add_stream(¶ms);
|
||||
|
||||
if (params.basename != NULL)
|
||||
free(params.basename);
|
||||
free(img);
|
||||
free(user_data);
|
||||
}
|
||||
@ -207,6 +359,7 @@ bool task_audio_mixer_load_handler(retro_task_t *task)
|
||||
{
|
||||
img->buf = image->buffer->buf;
|
||||
img->bufsize = image->buffer->bufsize;
|
||||
img->path = strdup(nbio->path);
|
||||
}
|
||||
|
||||
task_set_data(task, img);
|
||||
@ -221,6 +374,99 @@ bool task_audio_mixer_load_handler(retro_task_t *task)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool task_push_audio_mixer_load_and_play(const char *fullpath, retro_task_callback_t cb, void *user_data)
|
||||
{
|
||||
nbio_handle_t *nbio = NULL;
|
||||
struct audio_mixer_handle *image = NULL;
|
||||
retro_task_t *t = (retro_task_t*)calloc(1, sizeof(*t));
|
||||
|
||||
if (!t)
|
||||
goto error;
|
||||
|
||||
nbio = (nbio_handle_t*)calloc(1, sizeof(*nbio));
|
||||
|
||||
if (!nbio)
|
||||
goto error;
|
||||
|
||||
nbio->path = strdup(fullpath);
|
||||
|
||||
image = (struct audio_mixer_handle*)calloc(1, sizeof(*image));
|
||||
if (!image)
|
||||
goto error;
|
||||
|
||||
image->is_finished = false;
|
||||
|
||||
strlcpy(image->path, fullpath, sizeof(image->path));
|
||||
|
||||
nbio->type = NBIO_TYPE_NONE;
|
||||
image->type = AUDIO_MIXER_TYPE_NONE;
|
||||
|
||||
if (strstr(fullpath, file_path_str(FILE_PATH_WAV_EXTENSION)))
|
||||
{
|
||||
image->type = AUDIO_MIXER_TYPE_WAV;
|
||||
nbio->type = NBIO_TYPE_WAV;
|
||||
t->callback = task_audio_mixer_handle_upload_wav_and_play;
|
||||
}
|
||||
else if (strstr(fullpath, file_path_str(FILE_PATH_OGG_EXTENSION)))
|
||||
{
|
||||
image->type = AUDIO_MIXER_TYPE_OGG;
|
||||
nbio->type = NBIO_TYPE_OGG;
|
||||
t->callback = task_audio_mixer_handle_upload_ogg_and_play;
|
||||
}
|
||||
else if (strstr(fullpath, file_path_str(FILE_PATH_MP3_EXTENSION)))
|
||||
{
|
||||
image->type = AUDIO_MIXER_TYPE_MP3;
|
||||
nbio->type = NBIO_TYPE_MP3;
|
||||
t->callback = task_audio_mixer_handle_upload_mp3_and_play;
|
||||
}
|
||||
else if (strstr(fullpath, file_path_str(FILE_PATH_FLAC_EXTENSION)))
|
||||
{
|
||||
image->type = AUDIO_MIXER_TYPE_FLAC;
|
||||
nbio->type = NBIO_TYPE_FLAC;
|
||||
t->callback = task_audio_mixer_handle_upload_flac_and_play;
|
||||
}
|
||||
else if ( strstr(fullpath, file_path_str(FILE_PATH_MOD_EXTENSION)) ||
|
||||
strstr(fullpath, file_path_str(FILE_PATH_S3M_EXTENSION)) ||
|
||||
strstr(fullpath, file_path_str(FILE_PATH_XM_EXTENSION)))
|
||||
{
|
||||
image->type = AUDIO_MIXER_TYPE_MOD;
|
||||
nbio->type = NBIO_TYPE_MOD;
|
||||
t->callback = task_audio_mixer_handle_upload_mod_and_play;
|
||||
}
|
||||
|
||||
nbio->data = (struct audio_mixer_handle*)image;
|
||||
nbio->is_finished = false;
|
||||
nbio->cb = &cb_nbio_audio_mixer_load;
|
||||
nbio->status = NBIO_STATUS_INIT;
|
||||
|
||||
t->state = nbio;
|
||||
t->handler = task_file_load_handler;
|
||||
t->cleanup = task_audio_mixer_load_free;
|
||||
t->user_data = user_data;
|
||||
|
||||
task_queue_push(t);
|
||||
|
||||
return true;
|
||||
|
||||
error:
|
||||
if (nbio)
|
||||
{
|
||||
if (!string_is_empty(nbio->path))
|
||||
free(nbio->path);
|
||||
if (nbio->data)
|
||||
free(nbio->data);
|
||||
nbio_free(nbio->handle);
|
||||
free(nbio);
|
||||
}
|
||||
if (t)
|
||||
free(t);
|
||||
|
||||
RARCH_ERR("[audio mixer load] Failed to open '%s': %s.\n",
|
||||
fullpath, strerror(errno));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool task_push_audio_mixer_load(const char *fullpath, retro_task_callback_t cb, void *user_data)
|
||||
{
|
||||
nbio_handle_t *nbio = NULL;
|
||||
|
@ -37,12 +37,6 @@ RETRO_BEGIN_DECLS
|
||||
|
||||
typedef int (*transfer_cb_t)(void *data, size_t len);
|
||||
|
||||
typedef struct nbio_buf
|
||||
{
|
||||
void *buf;
|
||||
unsigned bufsize;
|
||||
} nbio_buf_t;
|
||||
|
||||
enum content_mode_load
|
||||
{
|
||||
CONTENT_MODE_LOAD_NONE = 0,
|
||||
@ -265,7 +259,11 @@ void task_push_get_powerstate(void);
|
||||
|
||||
enum frontend_powerstate get_last_powerstate(int *percent);
|
||||
|
||||
bool task_push_audio_mixer_load(const char *fullpath, retro_task_callback_t cb, void *user_data);
|
||||
bool task_push_audio_mixer_load_and_play(
|
||||
const char *fullpath, retro_task_callback_t cb, void *user_data);
|
||||
|
||||
bool task_push_audio_mixer_load(
|
||||
const char *fullpath, retro_task_callback_t cb, void *user_data);
|
||||
|
||||
extern const char* const input_builtin_autoconfs[];
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QAbstractEventDispatcher>
|
||||
|
||||
extern "C" {
|
||||
#include "../../ui_companion_driver.h"
|
||||
@ -95,7 +96,9 @@ AppHandler::~AppHandler()
|
||||
void AppHandler::exit()
|
||||
{
|
||||
app_exiting = true;
|
||||
qApp->closeAllWindows();
|
||||
|
||||
if (qApp)
|
||||
qApp->closeAllWindows();
|
||||
}
|
||||
|
||||
bool AppHandler::isExiting() const
|
||||
@ -142,13 +145,18 @@ static void* ui_application_qt_initialize(void)
|
||||
|
||||
static bool ui_application_qt_pending_events(void)
|
||||
{
|
||||
return QApplication::hasPendingEvents();
|
||||
QAbstractEventDispatcher *dispatcher = QApplication::eventDispatcher();
|
||||
|
||||
if (dispatcher)
|
||||
return dispatcher->hasPendingEvents();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void ui_application_qt_process_events(void)
|
||||
{
|
||||
if(ui_application_qt_pending_events())
|
||||
QApplication::processEvents();
|
||||
if (ui_application_qt_pending_events())
|
||||
QApplication::processEvents();
|
||||
}
|
||||
|
||||
static void ui_application_qt_quit(void)
|
||||
|
@ -216,6 +216,7 @@ static const QString qt_theme_dark_stylesheet = QStringLiteral(""
|
||||
" min-height:20px;\n"
|
||||
" min-width:80px;\n"
|
||||
" padding:1px 3px 1px 3px;\n"
|
||||
" outline:none;\n"
|
||||
"}\n"
|
||||
"QPushButton::focus, QToolButton::focus {\n"
|
||||
" background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgba(255,255,255,50), stop: 1 rgba(100,100,100,25));\n"
|
||||
@ -324,24 +325,44 @@ static const QString qt_theme_dark_stylesheet = QStringLiteral(""
|
||||
" subcontrol-position:top;\n"
|
||||
" subcontrol-origin:margin;\n"
|
||||
"}\n"
|
||||
"QSlider::handle:horizontal {\n"
|
||||
" border-radius:4px;\n"
|
||||
" border:1px solid rgba(25,25,25,255);\n"
|
||||
" background-color:palette(alternate-base);\n"
|
||||
" min-height:20px;\n"
|
||||
"QSlider::sub-page {\n"
|
||||
" background:%1;\n"
|
||||
"}\n"
|
||||
"QSlider::groove:vertical {\n"
|
||||
" width:3px;\n"
|
||||
" background:rgb(25,25,25);\n"
|
||||
"}\n"
|
||||
"QSlider::handle:vertical {\n"
|
||||
" background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(175,175,175), stop: 1 rgb(75,75,75));\n"
|
||||
" border:1px solid rgb(35,35,35);\n"
|
||||
" border-radius:2px;\n"
|
||||
" height:16px;\n"
|
||||
" margin:0 -4px;\n"
|
||||
"}\n"
|
||||
"QSlider::handle:vertical:hover {\n"
|
||||
" background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(200,200,200), stop: 1 rgba(100,100,100));\n"
|
||||
" border:1px solid %1;\n"
|
||||
" border-radius:2px;\n"
|
||||
" height:16px;\n"
|
||||
" margin:0 -4px;\n"
|
||||
"}\n"
|
||||
"QSlider::groove:horizontal {\n"
|
||||
" height:3px;\n"
|
||||
" background:rgb(25,25,25);\n"
|
||||
"}\n"
|
||||
"QSlider::handle:horizontal {\n"
|
||||
" background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(175,175,175), stop: 1 rgb(75,75,75));\n"
|
||||
" border:1px solid rgb(35,35,35);\n"
|
||||
" border-radius:2px;\n"
|
||||
" width:16px;\n"
|
||||
" margin:-4px 0;\n"
|
||||
"}\n"
|
||||
"QSlider::handle:horizontal:hover {\n"
|
||||
" background-color:%1;\n"
|
||||
"}\n"
|
||||
"QSlider::add-page:horizontal {\n"
|
||||
" background-color:palette(base);\n"
|
||||
"}\n"
|
||||
"QSlider::sub-page:horizontal {\n"
|
||||
" background-color:%1;\n"
|
||||
"}\n"
|
||||
"QSlider::sub-page:horizontal:disabled {\n"
|
||||
" background-color:rgb(80,80,80);\n"
|
||||
" background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(200,200,200), stop: 1 rgba(100,100,100));\n"
|
||||
" border:1px solid %1;\n"
|
||||
" border-radius:2px;\n"
|
||||
" width:16px;\n"
|
||||
" margin:-4px 0;\n"
|
||||
"}\n"
|
||||
"QStatusBar {\n"
|
||||
" color:white;\n"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user