diff --git a/.gitignore b/.gitignore index 7cb4fe57f0..637caa2cd6 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,7 @@ libretro-super run.sh convert_rumble.awk *~ +assets # Wii U *.depend @@ -121,7 +122,6 @@ wiiu/wut/elf2rpl/elf2rpl /media/libretrodb/ pkg/apple/iOS/build/ -pkg/apple/iOS/modules/ pkg/apple/build/ ui/drivers/qt/moc_* ui/drivers/moc_* diff --git a/CHANGES.md b/CHANGES.md index 550c51d995..d5b8122b4d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,15 +1,21 @@ -# 1.7.6 (future) -- ANDROID: Fix Xperia Play input binding -- CHEEVOS: Reset when hardcore mode is toggled +# 1.7.7 (future) + +# 1.7.6 +- ANDROID: Fix Xperia Play input binding. +- CHEEVOS: Reset when hardcore mode is toggled. - CHEEVOS: Update the hashing methods to identify NES, SNES and Lynx games (more accurate and accepting headerless ROMs). -- COMMON: Add new JSON playlist format -- COMMON: Fix playlist corruption when deleting items -- COMMON: Fix archive progress display calculation -- COMMON: Fix playlist entries appearing with previously used names -- COMMON: Fix screenshot filename with no core or content -- COMMON: Allow compiling without menu support -- CORE UPDATER: Allow sideloading cores from the menu +- COMMON: Add new JSON playlist format. +- COMMON: Fix playlist corruption when deleting items. +- COMMON: Fix archive progress display calculation. +- COMMON: Fix playlist entries appearing with previously used names. +- COMMON: Fix screenshot filename with no core or content. +- COMMON: Allow compiling without menu support. +- CORE UPDATER: Allow sideloading cores from the menu. - CPU FILTERS: Add Normal2x filter. +- CRT/LINUX: New Linux switching method partially implemented. +- CRT/LINUX: Linux restore desktop resolution fixed. +- CRT/LINUX: Monitor index switching and auto enumerate for output detection in Linux (still working on the windows method). +- CRT/RASPBERRY PI: Initial support. - DATE: Add Date / Time style options. - DEBUGGING: Add an integrated crash handler for debug builds (see https://docs.libretro.com/tech/debugging) - DISCORD: Register the application name properly. @@ -26,13 +32,21 @@ - MENU: New "ozone" menu driver. - MENU: Only show CRT SwitchRes if video display server is implemented (Windows/Linux for now) - MENU: User Interface -> Appearance -> 'Menu Font Green/Blue Color' settings now work properly. -- MENU: Add option to enable in-menu sound effects -- MENU/QT/WIMP: Allow building with MSVC2017 -- MENU/QT/WIMP: Add detailed file browser table -- MENU/QT/WIMP: New grid view implementation that is faster and loads thumbnails on-demand +- MENU: Add option to enable in-menu sound effects. +- MENU/D3D: Scissoring support (will be used for Ozone and menu widgets). +- MENU/QT/WIMP: Allow building with MSVC2017. +- MENU/QT/WIMP: Add detailed file browser table. +- MENU/QT/WIMP: New grid view implementation that is faster and loads thumbnails on-demand. +- MENU/QT/WIMP: Thumbnail drag and drop support. +- MENU/RGUI: Overhaul custom theme interface + add wallpaper support. +- MENU/RGUI: Thumbnail support and thumbnail downscaling. +- MENU: Hide password values. +- MENU/SOUNDS: Implement in-menu sound effects (not enabled by default for now, still experimental). - MIDI: Add a Linux ALSA driver for MIDI. -- NETPLAY: Force fast-save-states when netlay is enabled -- NETPLAY: Allow quick joining subsystem lobbies +- NETPLAY: Force fast-save-states when netplay is enabled. +- NETPLAY: Allow quick joining subsystem lobbies. +- OSX: Initial CoreAudio V3 audio driver (not yet used in release builds). +- OSX: OpenGL 3.2 Core support for cores. - PS2: Initial PlayStation2 port. - PS4: Initial PlayStation4 port. - RECORDING: Implement recording options in the menu complete with quality profiles, streaming, and proper file naming @@ -43,20 +57,23 @@ - SUBSYSTEM: Remember the last used folder to make loading subsystem type content faster - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. +- TVOS: Initial tvOS port. - VULKAN: Fix RGUI crashing at startup. +- VULKAN/RGUI: Enable 'Menu Linear Filter' option. - VULKAN: Fix secondary screens in overlays not working. - WAYLAND: Implement idle-inhibit support (needed for screensaver suspend). -- WAYLAND: Fix fullscreen toggle +- WAYLAND: Fix fullscreen toggle. - WIIU: Initial netplay peer-to-peer support. Network information working. - WINDOWS/WSA: Network Information info is blank until first network operation. -- WINDOWS: Fix an ancient bug that caused wrong mappings for keyboard arrows -- WINDOWS: Remember window size and position if so desired +- WINDOWS: Fix an ancient bug that caused wrong mappings for keyboard arrows. +- WINDOWS: Remember window size and position if so desired. - WINDOWS: SSL/TLS connections now work properly. +- WINDOWS: Fall back to GDI driver if no accelerated graphics driver is found. - UWP: Initial UWP port. -- VFS: Update to version 3 +- VFS: Update to version 3. - XBONE: Initial Xbox One port. -- XMB/OZONE: Add more icons -- ???: Easter Egg +- XMB/OZONE: Add more icons. +- ???: Easter Egg. # 1.7.5 - CAMERA: Fix Video4Linux2 driver that broke years ago. diff --git a/Makefile b/Makefile index 3243d38f0f..9f457d9503 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ TARGET = retroarch OBJ := LIBS := DEF_FLAGS := +ASFLAGS := DEFINES := -DHAVE_CONFIG_H -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 DEFINES += -DGLOBAL_CONFIG_DIR='"$(GLOBAL_CONFIG_DIR)"' diff --git a/Makefile.common b/Makefile.common index b466015d38..18e76d66c6 100644 --- a/Makefile.common +++ b/Makefile.common @@ -27,10 +27,6 @@ ifeq ($(HAVE_LIBRETRODB),) HAVE_LIBRETRODB = 1 endif -ifeq ($(HAVE_VIDEO_PROCESSOR), 1) - DEFINES += -DHAVE_VIDEO_PROCESSOR -endif - ifeq ($(HAVE_SOCKET_LEGACY), 1) DEFINES += -DHAVE_SOCKET_LEGACY endif @@ -67,8 +63,14 @@ ifeq ($(VULKAN_DEBUG), 1) DEF_FLAGS += -DVULKAN_DEBUG endif -ifeq ($(HAVE_HARD_FLOAT), 1) - DEFINES += -mfloat-abi=hard +ifeq ($(HAVE_FLOATHARD), 1) + DEF_FLAGS += $(FLOATHARD_CFLAGS) + ASFLAGS += $(FLOATHARD_CFLAGS) +endif + +ifeq ($(HAVE_FLOATSOFTFP), 1) + DEF_FLAGS += $(FLOATSOFTFP_CFLAGS) + ASFLAGS += $(FLOATSOFTFP_CFLAGS) endif ifeq ($(TDM_GCC),) @@ -374,6 +376,10 @@ ifeq ($(HAVE_SSA),1) LIBS += $(SSA_LIBS) endif +ifeq ($(HAVE_SSE),1) + DEF_FLAGS += $(SSE_LIBS) +endif + # LibretroDB ifeq ($(HAVE_LIBRETRODB), 1) @@ -504,9 +510,19 @@ endif # Audio + ifeq ($(HAVE_COREAUDIO), 1) OBJ += audio/drivers/coreaudio.o - LIBS += -framework CoreServices -framework CoreAudio -framework AudioUnit + HAVE_COREAUDIO_LIBS = 1 +endif + +ifeq ($(HAVE_COREAUDIO3), 1) + OBJ += audio/drivers/coreaudio3.o + HAVE_COREAUDIO_LIBS = 1 +endif + +ifeq ($(HAVE_COREAUDIO_LIBS), 1) + LIBS += -framework CoreServices -framework CoreAudio -framework AudioUnit endif ifeq ($(HAVE_CORETEXT), 1) @@ -625,7 +641,10 @@ ifeq ($(HAVE_NEON),1) OBJ += $(LIBRETRO_COMM_DIR)/audio/resampler/drivers/sinc_resampler_neon.o \ audio/drivers_resampler/cc_resampler_neon.o \ memory/neon/memcpy-neon.o - DEFINES += -DHAVE_NEON + + DEFINES += -DHAVE_NEON + ASFLAGS += $(NEON_ASFLAGS) + DEF_FLAGS += $(NEON_CFLAGS) endif OBJ += $(LIBRETRO_COMM_DIR)/audio/conversion/s16_to_float.o \ @@ -1244,8 +1263,6 @@ endif ifeq ($(HAVE_DISPMANX), 1) OBJ += gfx/drivers/dispmanx_gfx.o HAVE_VIDEOCORE = 1 - LIBS += $(DISPMANX_LIBS) - DEFINES += $(DISPMANX_CFLAGS) endif ifeq ($(HAVE_SUNXI), 1) @@ -1602,7 +1619,8 @@ endif ifeq ($(HAVE_V4L2),1) OBJ += camera/drivers/video4linux2.o - ifeq ($(HAVE_VIDEO_PROCESSOR),1) + ifeq ($(HAVE_VIDEOPROCESSOR),1) + DEFINES += -DHAVE_VIDEOPROCESSOR OBJ += cores/libretro-video-processor/video_processor_v4l2.o endif DEFINES += -DHAVE_V4L2 diff --git a/Makefile.libnx b/Makefile.libnx index 566730ecb3..a15b596cde 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -41,7 +41,7 @@ HAVE_NETWORKING = 1 HAVE_NETPLAYDISCOVERY = 1 HAVE_STB_FONT = 1 HAVE_CHEEVOS = 1 -HAVE_CHD = 1 +HAVE_CHD = 0 # disabled due to static libretro-common and libchdr conflicts between different cores HAVE_STB_VORBIS = 1 # RetroArch libnx useful flags diff --git a/audio/audio_defines.h b/audio/audio_defines.h new file mode 100644 index 0000000000..14693aa296 --- /dev/null +++ b/audio/audio_defines.h @@ -0,0 +1,88 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2017 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __AUDIO_DEFINES__H +#define __AUDIO_DEFINES__H + +#include + +RETRO_BEGIN_DECLS + +#define AUDIO_CHUNK_SIZE_BLOCKING 512 + +/* So we don't get complete line-noise when fast-forwarding audio. */ +#define AUDIO_CHUNK_SIZE_NONBLOCKING 2048 + +#define AUDIO_MAX_RATIO 16 + +#define AUDIO_MIXER_MAX_STREAMS 16 + +#define AUDIO_MIXER_MAX_SYSTEM_STREAMS (AUDIO_MIXER_MAX_STREAMS + 4) + +/* do not define more than (MAX_SYSTEM_STREAMS - MAX_STREAMS) */ +enum audio_mixer_system_slot +{ + AUDIO_MIXER_SYSTEM_SLOT_OK = AUDIO_MIXER_MAX_STREAMS, + AUDIO_MIXER_SYSTEM_SLOT_CANCEL, + AUDIO_MIXER_SYSTEM_SLOT_NOTICE, + AUDIO_MIXER_SYSTEM_SLOT_BGM +}; + +enum audio_action +{ + AUDIO_ACTION_NONE = 0, + AUDIO_ACTION_RATE_CONTROL_DELTA, + AUDIO_ACTION_MIXER_MUTE_ENABLE, + AUDIO_ACTION_MUTE_ENABLE, + AUDIO_ACTION_VOLUME_GAIN, + AUDIO_ACTION_MIXER_VOLUME_GAIN, + AUDIO_ACTION_MIXER +}; + +enum audio_mixer_slot_selection_type +{ + AUDIO_MIXER_SLOT_SELECTION_AUTOMATIC = 0, + AUDIO_MIXER_SLOT_SELECTION_MANUAL +}; + +enum audio_mixer_stream_type +{ + AUDIO_STREAM_TYPE_NONE = 0, + AUDIO_STREAM_TYPE_USER, + AUDIO_STREAM_TYPE_SYSTEM +}; + +enum audio_mixer_state +{ + AUDIO_STREAM_STATE_NONE = 0, + AUDIO_STREAM_STATE_STOPPED, + AUDIO_STREAM_STATE_PLAYING, + AUDIO_STREAM_STATE_PLAYING_LOOPED, + AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL +}; + +typedef struct audio_statistics +{ + float average_buffer_saturation; + float std_deviation_percentage; + float close_to_underrun; + float close_to_blocking; + unsigned samples; +} audio_statistics_t; + +RETRO_END_DECLS + +#endif diff --git a/audio/audio_driver.c b/audio/audio_driver.c index bd6ebaddd2..6633d8147b 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -21,6 +21,7 @@ #include #include