Merge branch 'master' of https://github.com/libretro/RetroArch
This commit is contained in:
commit
863fd7b18d
31
CHANGES.md
31
CHANGES.md
|
@ -1,6 +1,35 @@
|
|||
# 1.6.8 (future)
|
||||
- GUI: (MaterialUI) Skip querying and drawing items that are not visible; Cache content height and bbox calculation.
|
||||
- GUI: (XMB) Skip drawing the fading list when it is already transparent. Optimization.
|
||||
- GUI: (XMB) Comment out visible item calculation in xmb_draw_items().
|
||||
- GUI: (RGUI) Prevent crashes when using a non-English language reliant on UTF8.
|
||||
- LOCALIZATION: Update Italian translation.
|
||||
- LOCALIZATION: Update Portuguese-Brazilian translation.
|
||||
- LOCALIZATION: Update Russian translation.
|
||||
- LINUX/PI: Broadcom VC4: Add Videocore config option
|
||||
- NETPLAY: Fix disconnection not fully deinitializing Netplay.
|
||||
- COMMON: Fix clear/free loop conditionals in playlists.
|
||||
- WINDOWS/GDI: Fix flickering of text.
|
||||
- WINDOWS/WGL: Try to use wglSwapLayerBuffers instead of SwapBuffers if possible (for more optimal performance).
|
||||
- WII: Use custom, embedded libogc SDK.
|
||||
- WIIU: Initial touchscreen support for WiiU gamepad.
|
||||
|
||||
# 1.6.7
|
||||
- SCANNER: Fix directory scanning.
|
||||
- SCANNER: Fix file scanning.
|
||||
- COMMON: Fix 'Disk Image Append' option.
|
||||
- FREEBSD: Compatibility fixes for Video4Linux2 camera driver.
|
||||
- GUI: (MaterialUI) Add disk image append icons.
|
||||
- GUI: (MaterialUI) Improve word wrapping when menu icons are enabled.
|
||||
- GUI: (MaterialUI) Add User Interface -> Appearance -> Menu Icons Enable. You can turn on/off the icons on the lefthand side of the menu entries.
|
||||
- GUI: Performance optimizations for XMB menu driver - only calculates visible items.
|
||||
- LOCALIZATION: Update Italian translation.
|
||||
|
||||
# 1.6.6 (future)
|
||||
- 3DS: Fixes serious performance regression that affected every core; rewind was always implicitly enabled.
|
||||
- AUDIO: MOD/S3M/XM sound should now be properly mixed in with the core's sound.
|
||||
- GUI: Visual makeover of MaterialUI.
|
||||
- GUI: Added 'Music', 'Images' and 'Video' collection options to RGUI/MaterialUI.
|
||||
- GUI: Allow the user to add 'Favorites'.
|
||||
- GUI: Allow the user to rename entries.
|
||||
- GUI: Performance optimizations for XMB menu driver.
|
||||
|
@ -8,6 +37,8 @@
|
|||
- INPUT: Overlay controller response - when we press buttons on the gamepad or keyboard, the corresponding buttons on the overlay will be highlighted as well.
|
||||
- NETBSD: Silence some compilation warnings.
|
||||
- COMMON: Fixed bug 'Deleting an entry from a playlist would not update the list view inside XMB'.
|
||||
- COMMON: Fix inet_ntop_compat on *nix
|
||||
- LOBBY: Add skeleton to add help descriptions to lobbies
|
||||
|
||||
# 1.6.5
|
||||
Skipped this one.
|
||||
|
|
|
@ -82,6 +82,7 @@ else ifeq ($(platform), ps3-cobra)
|
|||
|
||||
# NGC/Wii - libogc
|
||||
else ifeq ($(libogc_platform), 1)
|
||||
EXTERNAL_LIBOGC=0
|
||||
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
|
||||
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
|
||||
LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT)
|
||||
|
@ -89,15 +90,36 @@ else ifeq ($(libogc_platform), 1)
|
|||
EXT_TARGET := $(TARGET_NAME)_$(platform).dol
|
||||
EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf
|
||||
|
||||
INCLUDE += -I. -I$(DEVKITPRO)/libogc/include -Ideps/libz
|
||||
INCLUDE += -I. -I$(DEVKITPRO)/libogc/include -Ideps/libz -Iwii/libogc/include
|
||||
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
CFLAGS += -DEXTERNAL_LIBOGC
|
||||
CXXFLAGS += -DEXTERNAL_LIBOGC
|
||||
|
||||
ifeq ($(platform), ngc)
|
||||
LIBDIRS += -L$(DEVKITPRO)/libogc/lib/cube
|
||||
else ifeq ($(platform), wii)
|
||||
LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii
|
||||
endif
|
||||
|
||||
else
|
||||
CFLAGS += -DINTERNAL_LIBOGC
|
||||
CXXFLAGS += -DINTERNAL_LIBOGC
|
||||
|
||||
ifeq ($(platform), ngc)
|
||||
LIBDIRS += -Lwii/libogc/libs/cube
|
||||
else ifeq ($(platform), wii)
|
||||
LIBDIRS += -Lwii/libogc/libs/wii
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(platform), ngc)
|
||||
LIBDIRS += -L$(DEVKITPRO)/libogc/lib/cube
|
||||
MACHDEP := -DHW_DOL -mogc
|
||||
else ifeq ($(platform), wii)
|
||||
LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii
|
||||
MACHDEP := -DHW_RVL -mrvl
|
||||
endif
|
||||
|
||||
LIBDIRS += -L.
|
||||
MACHDEP += -DGEKKO -mcpu=750 -meabi -mhard-float -DMSB_FIRST
|
||||
|
||||
|
@ -112,7 +134,10 @@ ifeq ($(BIG_STACK), 1)
|
|||
LDFLAGS += -T bootstrap/gx/rvl.ld
|
||||
endif
|
||||
endif
|
||||
LIBS += -lfat -logc
|
||||
LIBS += -logc
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
LIBS += -lfat
|
||||
endif
|
||||
|
||||
ifeq ($(platform), wii)
|
||||
LIBS += -lwiiuse -lbte
|
||||
|
|
|
@ -0,0 +1,358 @@
|
|||
#---------------------------------------------------------------------------------
|
||||
.SUFFIXES:
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
ifeq ($(strip $(DEVKITPRO)),)
|
||||
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro")
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(DEVKITPPC)),)
|
||||
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
||||
endif
|
||||
|
||||
export PATH := $(DEVKITPPC)/bin:$(PATH)
|
||||
|
||||
ifeq ($(PLATFORM),)
|
||||
PLATFORM=wii
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# change shell on Snow Leopard
|
||||
#---------------------------------------------------------------------------------
|
||||
UNAME_S := $(shell uname -s)
|
||||
UNAME_R := $(shell uname -r)
|
||||
|
||||
ifneq (,$(findstring Darwin,$(UNAME_S)))
|
||||
ifneq (,$(findstring 10.8.0,$(UNAME_R)))
|
||||
export SHELL=/bin/bash
|
||||
endif
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# path to tools
|
||||
#---------------------------------------------------------------------------------
|
||||
export PORTLIBS := $(DEVKITPRO)/portlibs/ppc
|
||||
export PATH := $(DEVKITPPC)/bin:$(PORTLIBS)/bin:$(PATH)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# the prefix on the compiler executables
|
||||
#---------------------------------------------------------------------------------
|
||||
PREFIX := powerpc-eabi-
|
||||
|
||||
export AS := $(PREFIX)as
|
||||
export CC := $(PREFIX)gcc
|
||||
export CXX := $(PREFIX)g++
|
||||
export AR := $(PREFIX)ar
|
||||
export OBJCOPY := $(PREFIX)objcopy
|
||||
|
||||
|
||||
ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.a:
|
||||
#---------------------------------------------------------------------------------
|
||||
@rm -f $@
|
||||
$(AR) -rc $@ $^
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.m
|
||||
$(CC) $(OBJCFLAGS) -c $< -o $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.s
|
||||
$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.S
|
||||
$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# canned command sequence for binary data
|
||||
#---------------------------------------------------------------------------------
|
||||
define bin2o
|
||||
bin2s -a 32 $< | $(AS) -o $(@)
|
||||
echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(<F) | tr . _)`.h
|
||||
echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(<F) | tr . _)`.h
|
||||
echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(<F) | tr . _)`.h
|
||||
endef
|
||||
|
||||
BUILD := build
|
||||
|
||||
BUILD_LITE = 1
|
||||
CURDIR = .
|
||||
|
||||
export BASEDIR := $(CURDIR)
|
||||
export DEPSDIR := $(BASEDIR)/wii/libogc/deps
|
||||
export LWIPDIR := $(BASEDIR)/wii/libogc/lwip
|
||||
export OGCDIR := $(BASEDIR)/wii/libogc/libogc
|
||||
export DBDIR := $(BASEDIR)/wii/libogc/libdb
|
||||
export BTEDIR := $(BASEDIR)/wii/libogc/lwbt
|
||||
export WIIUSEDIR := $(BASEDIR)/wii/libogc/wiiuse
|
||||
export LIBWIIKEYB := $(BASEDIR)/wii/libogc/libwiikeyboard
|
||||
export STUBSDIR := $(BASEDIR)/wii/libogc/lockstubs
|
||||
export LIBS := $(BASEDIR)/wii/libogc/libs
|
||||
|
||||
export INCDIR := $(BASEDIR)/wii/libogc/include
|
||||
|
||||
export LIBDIR := $(LIBS)/$(PLATFORM)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
BBALIB := $(LIBDIR)/libbba
|
||||
OGCLIB := $(LIBDIR)/libogc
|
||||
DBLIB := $(LIBDIR)/libdb
|
||||
BTELIB := $(LIBDIR)/libbte
|
||||
WIIUSELIB := $(LIBDIR)/libwiiuse
|
||||
WIIKEYBLIB := $(LIBDIR)/libwiikeyboard
|
||||
STUBSLIB := $(LIBDIR)/libgclibstubs
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
DEFAULTINCDIR := $(BASEDIR)/wii/libogc/include
|
||||
DEFINCS := -I$(DEFAULTINCDIR)
|
||||
INCLUDES := $(DEFINCS) \
|
||||
-I$(BASEDIR)/wii/libogc \
|
||||
-I$(DEFAULTINCDIR)/netif \
|
||||
-I$(DEFAULTINCDIR)/ipv4 \
|
||||
-I$(DEFAULTINCDIR)/sdcard \
|
||||
-I$(DEFAULTINCDIR)/ogc \
|
||||
-I$(DEFAULTINCDIR)/ogc/machine \
|
||||
-I$(DEFAULTINCDIR)/bte \
|
||||
-I$(DEFAULTINCDIR)/sdcard \
|
||||
-I$(DEFAULTINCDIR)/wiikeyboard \
|
||||
-I$(DEFAULTINCDIR)/wiiuse \
|
||||
-I$(DEFAULTINCDIR)/di
|
||||
|
||||
MACHDEP := -DBIGENDIAN -DGEKKO -mcpu=750 -meabi -msdata=eabi -mhard-float -ffunction-sections -fdata-sections
|
||||
|
||||
|
||||
ifeq ($(PLATFORM),wii)
|
||||
MACHDEP += -DHW_RVL
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),cube)
|
||||
MACHDEP += -DHW_DOL
|
||||
endif
|
||||
|
||||
CFLAGS := -DLIBOGC_INTERNAL -DNDEBUG -O2 -fno-strict-aliasing -mregnames -Wall $(MACHDEP) $(INCLUDES)
|
||||
ASFLAGS := $(MACHDEP) -mregnames -D_LANGUAGE_ASSEMBLY $(INCLUDES)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
VPATH := $(LWIPDIR) \
|
||||
$(LWIPDIR)/arch/gc \
|
||||
$(LWIPDIR)/arch/gc/netif \
|
||||
$(LWIPDIR)/core \
|
||||
$(LWIPDIR)/core/ipv4 \
|
||||
$(LWIPDIR)/netif \
|
||||
$(OGCDIR) \
|
||||
$(DBDIR) \
|
||||
$(DBDIR)/uIP \
|
||||
$(BTEDIR) \
|
||||
$(WIIUSEDIR) \
|
||||
$(SDCARDDIR) \
|
||||
$(LIBWIIKEYB) \
|
||||
$(STUBSDIR)
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_LWIP := $(LWIPDIR)/network.c \
|
||||
$(LWIPDIR)/netio.c \
|
||||
$(LWIPDIR)/arch/gc/netif/gcif.c \
|
||||
$(LWIPDIR)/core/inet.c \
|
||||
$(LWIPDIR)/core/mem.c \
|
||||
$(LWIPDIR)/core/dhcp.c \
|
||||
$(LWIPDIR)/core/raw.c \
|
||||
$(LWIPDIR)/core/memp.c \
|
||||
$(LWIPDIR)/core/netif.c \
|
||||
$(LWIPDIR)/core/pbuf.c \
|
||||
$(LWIPDIR)/core/stats.c \
|
||||
$(LWIPDIR)/core/sys.c \
|
||||
$(LWIPDIR)/core/tcp.c \
|
||||
$(LWIPDIR)/core/tcp_in.c \
|
||||
$(LWIPDIR)/core/tcp_out.c \
|
||||
$(LWIPDIR)/core/udp.c \
|
||||
$(LWIPDIR)/core/ipv4/icmp.c \
|
||||
$(LWIPDIR)/core/ipv4/ip.c \
|
||||
$(LWIPDIR)/core/ipv4/ip_frag.c \
|
||||
$(LWIPDIR)/core/ipv4/ip_addr.c \
|
||||
$(LWIPDIR)/netif/etharp.c \
|
||||
$(LWIPDIR)/netif/loopif.c
|
||||
|
||||
LWIPOBJ := $(SOURCES_LWIP:.c=.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_OGC := \
|
||||
$(OGCDIR)/console.c \
|
||||
$(OGCDIR)/lwp_priority.c \
|
||||
$(OGCDIR)/lwp_queue.c \
|
||||
$(OGCDIR)/lwp_threadq.c \
|
||||
$(OGCDIR)/lwp_threads.c \
|
||||
$(OGCDIR)/lwp_sema.c \
|
||||
$(OGCDIR)/lwp_messages.c \
|
||||
$(OGCDIR)/lwp.c \
|
||||
$(OGCDIR)/lwp_stack.c \
|
||||
$(OGCDIR)/lwp_mutex.c \
|
||||
$(OGCDIR)/lwp_watchdog.c \
|
||||
$(OGCDIR)/lwp_wkspace.c \
|
||||
$(OGCDIR)/lwp_objmgr.c \
|
||||
$(OGCDIR)/lwp_heap.c \
|
||||
$(OGCDIR)/sys_state.c \
|
||||
$(OGCDIR)/exception.c \
|
||||
$(OGCDIR)/irq.c \
|
||||
$(OGCDIR)/semaphore.c \
|
||||
$(OGCDIR)/video.c \
|
||||
$(OGCDIR)/pad.c \
|
||||
$(OGCDIR)/exi.c \
|
||||
$(OGCDIR)/mutex.c \
|
||||
$(OGCDIR)/arqueue.c \
|
||||
$(OGCDIR)/arqmgr.c \
|
||||
$(OGCDIR)/system.c \
|
||||
$(OGCDIR)/cond.c \
|
||||
$(OGCDIR)/gx.c \
|
||||
$(OGCDIR)/gu.c \
|
||||
$(OGCDIR)/audio.c \
|
||||
$(OGCDIR)/cache.c \
|
||||
$(OGCDIR)/decrementer.c \
|
||||
$(OGCDIR)/message.c \
|
||||
$(OGCDIR)/card.c \
|
||||
$(OGCDIR)/aram.c \
|
||||
$(OGCDIR)/depackrnc1.c \
|
||||
$(OGCDIR)/dsp.c \
|
||||
$(OGCDIR)/si.c \
|
||||
$(OGCDIR)/tpl.c \
|
||||
$(OGCDIR)/ipc.c \
|
||||
$(OGCDIR)/console_font_8x16.c \
|
||||
$(OGCDIR)/timesupp.c \
|
||||
$(OGCDIR)/lock_supp.c \
|
||||
$(OGCDIR)/newlibc.c \
|
||||
$(OGCDIR)/usbgecko.c \
|
||||
$(OGCDIR)/usbmouse.c \
|
||||
$(OGCDIR)/sbrk.c \
|
||||
$(OGCDIR)/malloc_lock.c \
|
||||
$(OGCDIR)/kprintf.c \
|
||||
$(OGCDIR)/stm.c \
|
||||
$(OGCDIR)/ios.c \
|
||||
$(OGCDIR)/es.c \
|
||||
$(OGCDIR)/isfs.c \
|
||||
$(OGCDIR)/usb.c \
|
||||
$(OGCDIR)/network_common.c \
|
||||
$(OGCDIR)/sdgecko_io.c \
|
||||
$(OGCDIR)/sdgecko_buf.c \
|
||||
$(OGCDIR)/gcsd.c \
|
||||
$(OGCDIR)/argv.c \
|
||||
$(OGCDIR)/network_wii.c \
|
||||
$(OGCDIR)/wiisd.c \
|
||||
$(OGCDIR)/conf.c \
|
||||
$(OGCDIR)/usbstorage.c \
|
||||
$(OGCDIR)/texconv.c \
|
||||
$(OGCDIR)/wiilaunch.c
|
||||
|
||||
SOURCES_OGC_ASM := $(OGCDIR)/cache_asm.S \
|
||||
$(OGCDIR)/decrementer_handler.S \
|
||||
$(OGCDIR)/depackrnc.S \
|
||||
$(OGCDIR)/exception_handler.S \
|
||||
$(OGCDIR)/gu_psasm.S \
|
||||
$(OGCDIR)/irq_handler.S \
|
||||
$(OGCDIR)/lwp_handler.S \
|
||||
$(OGCDIR)/ogc_crt0.S \
|
||||
$(OGCDIR)/system_asm.S \
|
||||
$(OGCDIR)/video_asm.S
|
||||
|
||||
|
||||
ifneq ($(BUILD_LITE), 1)
|
||||
SOURCES_OGC += $(OGCDIR)/dvd.c
|
||||
endif
|
||||
|
||||
OGCOBJ := $(SOURCES_OGC:.c=.o) $(SOURCES_OGC_ASM:.S=.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_DB := \
|
||||
$(DBDIR)/uIP/uip_ip.c \
|
||||
$(DBDIR)/uIP/uip_tcp.c \
|
||||
$(DBDIR)/uIP/uip_pbuf.c \
|
||||
$(DBDIR)/uIP/uip_netif.c \
|
||||
$(DBDIR)/uIP/uip_arp.c \
|
||||
$(DBDIR)/uIP/uip_arch.c \
|
||||
$(DBDIR)/uIP/uip_icmp.c \
|
||||
$(DBDIR)/uIP/memb.c \
|
||||
$(DBDIR)/uIP/memr.c \
|
||||
$(DBDIR)/uIP/bba.c \
|
||||
$(DBDIR)/tcpip.c \
|
||||
$(DBDIR)/debug.c \
|
||||
$(DBDIR)/debug_handler.c \
|
||||
$(DBDIR)/debug_supp.c \
|
||||
$(DBDIR)/geckousb.c
|
||||
|
||||
DBOBJ := $(SOURCES_DB:.c=.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_BTE := \
|
||||
$(BTEDIR)/bte.c \
|
||||
$(BTEDIR)/hci.c \
|
||||
$(BTEDIR)/l2cap.c \
|
||||
$(BTEDIR)/btmemb.c \
|
||||
$(BTEDIR)/btmemr.c \
|
||||
$(BTEDIR)/btpbuf.c \
|
||||
$(BTEDIR)/physbusif.c
|
||||
|
||||
BTEOBJ := $(SOURCES_BTE:.c=.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_WIIUSE := \
|
||||
$(WIIUSEDIR)/classic.c \
|
||||
$(WIIUSEDIR)/dynamics.c \
|
||||
$(WIIUSEDIR)/events.c \
|
||||
$(WIIUSEDIR)/io.c \
|
||||
$(WIIUSEDIR)/io_wii.c \
|
||||
$(WIIUSEDIR)/ir.c \
|
||||
$(WIIUSEDIR)/nunchuk.c \
|
||||
$(WIIUSEDIR)/wiiuse.c \
|
||||
$(WIIUSEDIR)/speaker.c \
|
||||
$(WIIUSEDIR)/wpad.c \
|
||||
$(WIIUSEDIR)/motion_plus.c
|
||||
|
||||
WIIUSEOBJ := $(SOURCES_WIIUSE:.c=.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
SOURCES_WIIKEYB = $(LIBWIIKEYB)/usbkeyboard.c \
|
||||
$(LIBWIIKEYB)/keyboard.c \
|
||||
$(LIBWIIKEYB)/ukbdmap.c \
|
||||
$(LIBWIIKEYB)/wskbdutil.c
|
||||
|
||||
WIIKEYBLIBOBJ := $(SOURCES_WIIKEYB:.c=.o)
|
||||
|
||||
LIBRARIES := $(OGCLIB).a $(DBLIB).a
|
||||
|
||||
ifeq ($(PLATFORM),cube)
|
||||
LIBRARIES += $(BBALIB).a
|
||||
endif
|
||||
ifeq ($(PLATFORM),wii)
|
||||
LIBRARIES += $(BTELIB).a $(WIIUSELIB).a $(WIIKEYBLIB).a
|
||||
endif
|
||||
|
||||
all: $(LIBRARIES)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(BBALIB).a: $(LWIPOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(OGCLIB).a: $(OGCOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(DBLIB).a: $(DBOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(WIIKEYBLIB).a: $(WIIKEYBLIBOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(BTELIB).a: $(BTEOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
$(WIIUSELIB).a: $(WIIUSEOBJ)
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
clean:
|
||||
#---------------------------------------------------------------------------------
|
||||
rm -fr $(LWIPOBJ) $(OGCOBJ) $(DBOBJ) $(BTEOBJ) $(WIIUSEOBJ) $(WIIKEYBLIBOBJ)
|
||||
rm -f *.map
|
|
@ -1,4 +1,4 @@
|
|||
RARCH_VERSION = "0.9.9.3"
|
||||
RARCH_VERSION = "1.6.7.0"
|
||||
|
||||
DEBUG = 0
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RARCH_VERSION = "1.6.5.0"
|
||||
RARCH_VERSION = "1.6.7.0"
|
||||
|
||||
#which compiler to build with - GCC or SNC
|
||||
#set to GCC for debug builds for use with debugger
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RARCH_VERSION = "0.9.9.3"
|
||||
RARCH_VERSION = "1.6.7.0"
|
||||
|
||||
#which compiler to build with - GCC or SNC
|
||||
#set to GCC for debug builds for use with debugger
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RARCH_VERSION = "1.6.5.0"
|
||||
RARCH_VERSION = "1.6.7.0"
|
||||
|
||||
DEBUG = 0
|
||||
HAVE_LOGGER = 0
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
DEBUG = 0
|
||||
HAVE_LOGGER = 0
|
||||
HAVE_FILE_LOGGER = 0
|
||||
EXTERNAL_LIBOGC = 0
|
||||
|
||||
# system platform
|
||||
system_platform = unix
|
||||
|
@ -29,13 +30,23 @@ ELF2DOL = $(DEVKITPPC)/bin/elf2dol$(EXE_EXT)
|
|||
DOL_TARGET := retroarch-salamander_wii.dol
|
||||
ELF_TARGET := retroarch-salamander_wii.elf
|
||||
|
||||
INCLUDE := -I. -I$(DEVKITPRO)/libogc/include -Ilibretro-common/include -Ideps/libz
|
||||
INCLUDE := -I. -Ilibretro-common/include -Ideps/libz
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
INCLUDE += -I$(DEVKITPRO)/libogc/include
|
||||
LIBDIRS := -L$(DEVKITPRO)/libogc/lib/wii -L.
|
||||
else
|
||||
INCLUDE += -Iwii/libogc/include
|
||||
LIBDIRS := -Lwii/libogc/libs/wii -L.
|
||||
endif
|
||||
|
||||
MACHDEP := -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float
|
||||
CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE)
|
||||
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map
|
||||
LIBS := -lfat -lwiiuse -logc -lbte
|
||||
LIBS := -lwiiuse -logc -lbte
|
||||
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
LIBS += -lfat
|
||||
endif
|
||||
|
||||
APP_BOOTER_DIR = wii/app_booter
|
||||
|
||||
|
@ -59,6 +70,20 @@ OBJ = frontend/frontend_salamander.o \
|
|||
verbosity.o \
|
||||
$(APP_BOOTER_DIR)/app_booter.binobj
|
||||
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
else
|
||||
OBJ += wii/libogc/libfat/cache.o \
|
||||
wii/libogc/libfat/directory.o \
|
||||
wii/libogc/libfat/disc.o \
|
||||
wii/libogc/libfat/fatdir.o \
|
||||
wii/libogc/libfat/fatfile.o \
|
||||
wii/libogc/libfat/file_allocation_table.o \
|
||||
wii/libogc/libfat/filetime.o \
|
||||
wii/libogc/libfat/libfat.o \
|
||||
wii/libogc/libfat/lock.o \
|
||||
wii/libogc/libfat/partition.o
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_LOGGER), 1)
|
||||
CFLAGS += -DHAVE_LOGGER
|
||||
CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
|
||||
|
|
|
@ -8,6 +8,12 @@ Popular examples of implementations for this API includes videogame system emula
|
|||
more generalized 3D programs.
|
||||
These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## libretro
|
||||
|
||||
[libretro](http://libretro.com) is an API that exposes generic audio/video/input callbacks.
|
||||
|
|
|
@ -16,7 +16,9 @@
|
|||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#if !defined(__FreeBSD__) || __FreeBSD__ < 5
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
|
@ -28,7 +30,9 @@
|
|||
#include <sys/time.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#ifndef __FreeBSD__
|
||||
#include <asm/types.h>
|
||||
#endif
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#include <memmap.h>
|
||||
|
|
|
@ -2194,6 +2194,8 @@ TODO: Add a setting for these tweaks */
|
|||
NULL,
|
||||
NULL
|
||||
);
|
||||
playlist_write_file(g_defaults.content_favorites);
|
||||
runloop_msg_queue_push(msg_hash_to_str(MSG_ADDED_TO_FAVORITES), 1, 180, true);
|
||||
break;
|
||||
case CMD_EVENT_RESTART_RETROARCH:
|
||||
if (!frontend_driver_set_fork(FRONTEND_FORK_RESTART))
|
||||
|
|
|
@ -58,6 +58,10 @@ static bool bundle_assets_extract_enable = true;
|
|||
static bool bundle_assets_extract_enable = false;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MATERIALUI
|
||||
static bool materialui_icons_enable = true;
|
||||
#endif
|
||||
|
||||
static const bool def_history_list_enable = true;
|
||||
static const bool def_playlist_entry_remove = true;
|
||||
|
||||
|
@ -267,6 +271,8 @@ static bool xmb_show_add = true;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
static float menu_framebuffer_opacity = 0.900;
|
||||
|
||||
static float menu_wallpaper_opacity = 0.300;
|
||||
|
||||
static float menu_footer_opacity = 1.000;
|
||||
|
@ -314,6 +320,8 @@ static unsigned input_backtouch_enable = false;
|
|||
static unsigned input_backtouch_toggle = false;
|
||||
#endif
|
||||
|
||||
static bool show_physical_inputs = true;
|
||||
|
||||
static bool all_users_control_menu = false;
|
||||
|
||||
#if defined(ANDROID) || defined(_WIN32)
|
||||
|
|
|
@ -1192,6 +1192,9 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
|
|||
SETTING_BOOL("menu_battery_level_enable", &settings->bools.menu_battery_level_enable, true, true, false);
|
||||
SETTING_BOOL("menu_core_enable", &settings->bools.menu_core_enable, true, true, false);
|
||||
SETTING_BOOL("menu_dynamic_wallpaper_enable", &settings->bools.menu_dynamic_wallpaper_enable, true, false, false);
|
||||
#ifdef HAVE_MATERIALUI
|
||||
SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, materialui_icons_enable, false);
|
||||
#endif
|
||||
#ifdef HAVE_XMB
|
||||
SETTING_BOOL("xmb_shadows_enable", &settings->bools.menu_xmb_shadows_enable, true, xmb_shadows_enable, false);
|
||||
SETTING_BOOL("xmb_show_settings", &settings->bools.menu_xmb_show_settings, true, xmb_show_settings, false);
|
||||
|
@ -1297,6 +1300,7 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
|
|||
#endif
|
||||
#ifdef HAVE_MENU
|
||||
SETTING_FLOAT("menu_wallpaper_opacity", &settings->floats.menu_wallpaper_opacity, true, menu_wallpaper_opacity, false);
|
||||
SETTING_FLOAT("menu_framebuffer_opacity", &settings->floats.menu_framebuffer_opacity, true, menu_framebuffer_opacity, false);
|
||||
SETTING_FLOAT("menu_footer_opacity", &settings->floats.menu_footer_opacity, true, menu_footer_opacity, false);
|
||||
SETTING_FLOAT("menu_header_opacity", &settings->floats.menu_header_opacity, true, menu_header_opacity, false);
|
||||
#endif
|
||||
|
|
|
@ -123,6 +123,7 @@ typedef struct settings
|
|||
bool menu_horizontal_animation;
|
||||
bool menu_show_online_updater;
|
||||
bool menu_show_core_updater;
|
||||
bool menu_materialui_icons_enable;
|
||||
bool menu_xmb_shadows_enable;
|
||||
bool menu_xmb_show_settings;
|
||||
bool menu_xmb_show_favorites;
|
||||
|
@ -238,6 +239,7 @@ typedef struct settings
|
|||
float video_msg_color_b;
|
||||
|
||||
float menu_wallpaper_opacity;
|
||||
float menu_framebuffer_opacity;
|
||||
float menu_footer_opacity;
|
||||
float menu_header_opacity;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
RARCH_VERSION=1.6.5
|
||||
RARCH_VERSION=1.6.7
|
||||
PLATFORM=$1
|
||||
SALAMANDER=no
|
||||
MAKEFILE_GRIFFIN=no
|
||||
|
|
|
@ -76,29 +76,29 @@ enum
|
|||
|
||||
#if defined(HAVE_LOGGER) || defined(HAVE_FILE_LOGGER)
|
||||
static devoptab_t dotab_stdout = {
|
||||
"stdout", // device name
|
||||
0, // size of file structure
|
||||
NULL, // device open
|
||||
NULL, // device close
|
||||
NULL, // device write
|
||||
NULL, // device read
|
||||
NULL, // device seek
|
||||
NULL, // device fstat
|
||||
NULL, // device stat
|
||||
NULL, // device link
|
||||
NULL, // device unlink
|
||||
NULL, // device chdir
|
||||
NULL, // device rename
|
||||
NULL, // device mkdir
|
||||
0, // dirStateSize
|
||||
NULL, // device diropen_r
|
||||
NULL, // device dirreset_r
|
||||
NULL, // device dirnext_r
|
||||
NULL, // device dirclose_r
|
||||
NULL, // device statvfs_r
|
||||
NULL, // device ftrunctate_r
|
||||
NULL, // device fsync_r
|
||||
NULL, // deviceData;
|
||||
"stdout", /* device name */
|
||||
0, /* size of file structure */
|
||||
NULL, /* device open */
|
||||
NULL, /* device close */
|
||||
NULL, /* device write */
|
||||
NULL, /* device read */
|
||||
NULL, /* device seek */
|
||||
NULL, /* device fstat */
|
||||
NULL, /* device stat */
|
||||
NULL, /* device link */
|
||||
NULL, /* device unlink */
|
||||
NULL, /* device chdir */
|
||||
NULL, /* device rename */
|
||||
NULL, /* device mkdir */
|
||||
0, /* dirStateSize */
|
||||
NULL, /* device diropen_r */
|
||||
NULL, /* device dirreset_r */
|
||||
NULL, /* device dirnext_r */
|
||||
NULL, /* device dirclose_r */
|
||||
NULL, /* device statvfs_r */
|
||||
NULL, /* device ftrunctate_r */
|
||||
NULL, /* device fsync_r */
|
||||
NULL, /* deviceData; */
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -309,7 +309,9 @@ static void frontend_gx_init(void *data)
|
|||
__exception_setreload(8);
|
||||
#endif
|
||||
|
||||
#ifdef HW_RVL
|
||||
fatInitDefault();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LOGGER
|
||||
devoptab_list[STD_OUT] = &dotab_stdout;
|
||||
|
|
|
@ -73,10 +73,15 @@ static void dol_copy_argv_path(const char *dolpath, const char *argpath)
|
|||
len += t_len;
|
||||
}
|
||||
/* a relative path */
|
||||
else if (strstr(dolpath, "sd:/") != dolpath && strstr(dolpath, "usb:/") != dolpath &&
|
||||
strstr(dolpath, "carda:/") != dolpath && strstr(dolpath, "cardb:/") != dolpath)
|
||||
else if (
|
||||
(strstr(dolpath, "sd:/") != dolpath) &&
|
||||
(strstr(dolpath, "usb:/") != dolpath) &&
|
||||
(strstr(dolpath, "carda:/") != dolpath) &&
|
||||
(strstr(dolpath, "cardb:/") != dolpath)
|
||||
)
|
||||
{
|
||||
fill_pathname_parent_dir(tmp, __system_argv->argv[0], sizeof(tmp));
|
||||
fill_pathname_parent_dir(tmp,
|
||||
__system_argv->argv[0], sizeof(tmp));
|
||||
t_len = strlen(tmp);
|
||||
memcpy(cmdline, tmp, t_len);
|
||||
len += t_len;
|
||||
|
|
|
@ -21,6 +21,14 @@
|
|||
typedef struct gdi
|
||||
{
|
||||
WNDCLASSEX wndclass;
|
||||
HDC winDC;
|
||||
HDC memDC;
|
||||
HBITMAP bmp;
|
||||
HBITMAP bmp_old;
|
||||
unsigned video_width;
|
||||
unsigned video_height;
|
||||
unsigned screen_width;
|
||||
unsigned screen_height;
|
||||
} gdi_t;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#endif
|
||||
|
||||
#include "win32_common.h"
|
||||
#include "gdi_common.h"
|
||||
#include "../../frontend/frontend_driver.h"
|
||||
#include "../../configuration.h"
|
||||
#include "../../verbosity.h"
|
||||
|
@ -609,41 +610,47 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message,
|
|||
{
|
||||
case WM_PAINT:
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc = BeginPaint(hwnd, &ps);
|
||||
gdi_t *gdi = (gdi_t*)video_driver_get_ptr(false);
|
||||
|
||||
if (gdi && gdi->memDC)
|
||||
{
|
||||
gdi->bmp_old = (HBITMAP)SelectObject(gdi->memDC, gdi->bmp);
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
if (menu_driver_is_alive() && !gdi_has_menu_frame())
|
||||
{
|
||||
RECT rect;
|
||||
TRIVERTEX vertex[2];
|
||||
GRADIENT_RECT gRect;
|
||||
if (menu_driver_is_alive() && !gdi_has_menu_frame())
|
||||
{
|
||||
/* draw menu contents behind a gradient background */
|
||||
if (gdi && gdi->memDC)
|
||||
{
|
||||
RECT rect;
|
||||
GetClientRect(hwnd, &rect);
|
||||
|
||||
GetClientRect(hwnd, &rect);
|
||||
StretchBlt(gdi->winDC,
|
||||
0, 0,
|
||||
gdi->screen_width, gdi->screen_height,
|
||||
gdi->memDC, 0, 0, gdi->video_width, gdi->video_height, SRCCOPY);
|
||||
|
||||
vertex[0].x = rect.left;
|
||||
vertex[0].y = rect.top;
|
||||
vertex[0].Red = 1 << 8;
|
||||
vertex[0].Green = 81 << 8;
|
||||
vertex[0].Blue = 127 << 8;
|
||||
vertex[0].Alpha = 0;
|
||||
|
||||
vertex[1].x = rect.right;
|
||||
vertex[1].y = rect.bottom;
|
||||
vertex[1].Red = 0;
|
||||
vertex[1].Green = 1 << 8;
|
||||
vertex[1].Blue = 33 << 8;
|
||||
vertex[1].Alpha = 0;
|
||||
|
||||
gRect.LowerRight = 0;
|
||||
gRect.UpperLeft = 1;
|
||||
|
||||
GradientFill(hdc, vertex, 2, &gRect, 1, GRADIENT_FILL_RECT_V);
|
||||
}
|
||||
HBRUSH brush = CreateSolidBrush(RGB(1,81,127));
|
||||
FillRect(gdi->memDC, &rect, brush);
|
||||
DeleteObject(brush);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/* draw video content */
|
||||
gdi->bmp_old = (HBITMAP)SelectObject(gdi->memDC, gdi->bmp);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
break;
|
||||
StretchBlt(gdi->winDC,
|
||||
0, 0,
|
||||
gdi->screen_width, gdi->screen_height,
|
||||
gdi->memDC, 0, 0, gdi->video_width, gdi->video_height, SRCCOPY);
|
||||
}
|
||||
|
||||
SelectObject(gdi->memDC, gdi->bmp_old);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case WM_DROPFILES:
|
||||
case WM_SYSCOMMAND:
|
||||
|
|
|
@ -160,7 +160,6 @@ static bool gdi_gfx_frame(void *data, const void *frame,
|
|||
unsigned pitch, const char *msg, video_frame_info_t *video_info)
|
||||
{
|
||||
gfx_ctx_mode_t mode;
|
||||
RECT rect;
|
||||
const void *frame_to_copy = frame;
|
||||
unsigned width = 0;
|
||||
unsigned height = 0;
|
||||
|
@ -207,66 +206,77 @@ static bool gdi_gfx_frame(void *data, const void *frame,
|
|||
draw = false;
|
||||
}
|
||||
|
||||
GetClientRect(hwnd, &rect);
|
||||
if (hwnd && !gdi->winDC)
|
||||
{
|
||||
gdi->winDC = GetDC(hwnd);
|
||||
gdi->memDC = CreateCompatibleDC(gdi->winDC);
|
||||
gdi->video_width = width;
|
||||
gdi->video_height = height;
|
||||
gdi->bmp = CreateCompatibleBitmap(gdi->winDC, gdi->video_width, gdi->video_height);
|
||||
}
|
||||
|
||||
gdi->bmp_old = (HBITMAP)SelectObject(gdi->memDC, gdi->bmp);
|
||||
|
||||
if (gdi->video_width != width || gdi->video_height != height)
|
||||
{
|
||||
SelectObject(gdi->memDC, gdi->bmp_old);
|
||||
DeleteObject(gdi->bmp);
|
||||
|
||||
gdi->video_width = width;
|
||||
gdi->video_height = height;
|
||||
gdi->bmp = CreateCompatibleBitmap(gdi->winDC, gdi->video_width, gdi->video_height);
|
||||
gdi->bmp_old = (HBITMAP)SelectObject(gdi->memDC, gdi->bmp);
|
||||
}
|
||||
|
||||
video_context_driver_get_video_size(&mode);
|
||||
|
||||
gdi->screen_width = mode.width;
|
||||
gdi->screen_height = mode.height;
|
||||
|
||||
BITMAPINFO *info = (BITMAPINFO*)calloc(1, sizeof(*info) + (3 * sizeof(RGBQUAD)));
|
||||
|
||||
info->bmiHeader.biBitCount = bits;
|
||||
info->bmiHeader.biWidth = pitch / (bits / 8);
|
||||
info->bmiHeader.biHeight = -height;
|
||||
info->bmiHeader.biPlanes = 1;
|
||||
info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
info->bmiHeader.biSizeImage = 0;
|
||||
|
||||
if (bits == 16)
|
||||
{
|
||||
unsigned *masks = (unsigned*)info->bmiColors;
|
||||
|
||||
info->bmiHeader.biCompression = BI_BITFIELDS;
|
||||
|
||||
/* default 16-bit format on Windows is XRGB1555 */
|
||||
if (frame_to_copy == gdi_menu_frame)
|
||||
{
|
||||
/* map RGB444 color bits for RGUI */
|
||||
masks[0] = 0xF000;
|
||||
masks[1] = 0x0F00;
|
||||
masks[2] = 0x00F0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* map RGB565 color bits for core */
|
||||
masks[0] = 0xF800;
|
||||
masks[1] = 0x07E0;
|
||||
masks[2] = 0x001F;
|
||||
}
|
||||
}
|
||||
else
|
||||
info->bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
if (draw)
|
||||
{
|
||||
HDC winDC = GetDC(hwnd);
|
||||
HDC memDC = CreateCompatibleDC(winDC);
|
||||
HBITMAP bmp = CreateCompatibleBitmap(winDC, width, height);
|
||||
BITMAPINFO *info = (BITMAPINFO*)calloc(1, sizeof(*info) + (3 * sizeof(RGBQUAD)));
|
||||
HBITMAP bmp_old = (HBITMAP)SelectObject(memDC, bmp);
|
||||
|
||||
info->bmiHeader.biBitCount = bits;
|
||||
info->bmiHeader.biWidth = pitch / (bits / 8);
|
||||
info->bmiHeader.biHeight = -height;
|
||||
info->bmiHeader.biPlanes = 1;
|
||||
info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER) + (3 * sizeof(RGBQUAD));
|
||||
info->bmiHeader.biSizeImage = 0;
|
||||
|
||||
if (bits == 16)
|
||||
{
|
||||
unsigned *masks = (unsigned*)info->bmiColors;
|
||||
|
||||
info->bmiHeader.biCompression = BI_BITFIELDS;
|
||||
|
||||
/* default 16-bit format on Windows is XRGB1555 */
|
||||
if (frame_to_copy == gdi_menu_frame)
|
||||
{
|
||||
/* map RGB444 color bits for RGUI */
|
||||
masks[0] = 0xF000;
|
||||
masks[1] = 0x0F00;
|
||||
masks[2] = 0x00F0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* map RGB565 color bits for core */
|
||||
masks[0] = 0xF800;
|
||||
masks[1] = 0x07E0;
|
||||
masks[2] = 0x001F;
|
||||
}
|
||||
}
|
||||
else
|
||||
info->bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
StretchDIBits(memDC, 0, 0, width, height, 0, 0, width, height,
|
||||
StretchDIBits(gdi->memDC, 0, 0, width, height, 0, 0, width, height,
|
||||
frame_to_copy, info, DIB_RGB_COLORS, SRCCOPY);
|
||||
|
||||
StretchBlt(winDC,
|
||||
0, 0,
|
||||
mode.width, mode.height,
|
||||
memDC, 0, 0, width, height, SRCCOPY);
|
||||
|
||||
SelectObject(memDC, bmp_old);
|
||||
|
||||
DeleteObject(bmp);
|
||||
DeleteDC(memDC);
|
||||
ReleaseDC(hwnd, winDC);
|
||||
|
||||
free(info);
|
||||
}
|
||||
|
||||
SelectObject(gdi->memDC, gdi->bmp_old);
|
||||
|
||||
free(info);
|
||||
|
||||
if (msg)
|
||||
font_driver_render_msg(video_info, NULL, msg, NULL);
|
||||
|
||||
|
@ -330,6 +340,7 @@ static bool gdi_gfx_has_windowed(void *data)
|
|||
static void gdi_gfx_free(void *data)
|
||||
{
|
||||
gdi_t *gdi = (gdi_t*)data;
|
||||
HWND hwnd = win32_get_window();
|
||||
|
||||
if (gdi_menu_frame)
|
||||
{
|
||||
|
@ -340,6 +351,19 @@ static void gdi_gfx_free(void *data)
|
|||
if (!gdi)
|
||||
return;
|
||||
|
||||
if (gdi->memDC)
|
||||
{
|
||||
DeleteObject(gdi->bmp);
|
||||
DeleteDC(gdi->memDC);
|
||||
gdi->memDC = 0;
|
||||
}
|
||||
|
||||
if (hwnd && gdi->winDC)
|
||||
{
|
||||
ReleaseDC(hwnd, gdi->winDC);
|
||||
gdi->winDC = 0;
|
||||
}
|
||||
|
||||
font_driver_free_osd();
|
||||
video_context_driver_free();
|
||||
free(gdi);
|
||||
|
|
|
@ -367,11 +367,8 @@ static void gfx_ctx_wgl_swap_buffers(void *data, void *data2)
|
|||
switch (win32_api)
|
||||
{
|
||||
case GFX_CTX_OPENGL_API:
|
||||
#ifdef HAVE_OPENGL
|
||||
SwapBuffers(win32_hdc);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case GFX_CTX_VULKAN_API:
|
||||
#ifdef HAVE_VULKAN
|
||||
vulkan_present(&win32_vk, win32_vk.context.current_swapchain_index);
|
||||
|
|
|
@ -84,13 +84,11 @@ static void gdi_render_msg(
|
|||
void *data, const char *msg,
|
||||
const void *userdata)
|
||||
{
|
||||
HDC hdc;
|
||||
float x, y, scale;
|
||||
gdi_raster_t *font = (gdi_raster_t*)data;
|
||||
unsigned newX, newY, len;
|
||||
unsigned align;
|
||||
const struct font_params *params = (const struct font_params*)userdata;
|
||||
HWND hwnd = win32_get_window();
|
||||
unsigned width = video_info->width;
|
||||
unsigned height = video_info->height;
|
||||
|
||||
|
@ -133,12 +131,18 @@ static void gdi_render_msg(
|
|||
}
|
||||
|
||||
newY = height - (y * height * scale);
|
||||
hdc = GetDC(hwnd);
|
||||
|
||||
SetBkMode(hdc, TRANSPARENT);
|
||||
SetTextColor(hdc, RGB(255,255,255));
|
||||
TextOut(hdc, newX, newY, msg, len);
|
||||
ReleaseDC(hwnd, hdc);
|
||||
uint64_t frame_count = 0;
|
||||
bool is_alive = false;
|
||||
bool is_focused = false;
|
||||
|
||||
video_driver_get_status(&frame_count, &is_alive, &is_focused);
|
||||
|
||||
font->gdi->bmp_old = (HBITMAP)SelectObject(font->gdi->memDC, font->gdi->bmp);
|
||||
SetBkMode(font->gdi->memDC, TRANSPARENT);
|
||||
SetTextColor(font->gdi->memDC, RGB(255,255,255));
|
||||
TextOut(font->gdi->memDC, newX, newY, msg, len);
|
||||
SelectObject(font->gdi->memDC, font->gdi->bmp_old);
|
||||
}
|
||||
|
||||
static void gdi_font_flush_block(unsigned width, unsigned height, void* data)
|
||||
|
|
|
@ -2524,7 +2524,8 @@ void video_driver_build_info(video_frame_info_t *video_info)
|
|||
video_info->battery_level_enable = settings->bools.menu_battery_level_enable;
|
||||
video_info->xmb_shadows_enable = settings->bools.menu_xmb_shadows_enable;
|
||||
video_info->xmb_alpha_factor = settings->uints.menu_xmb_alpha_factor;
|
||||
video_info->menu_wallpaper_opacity = settings->floats.menu_wallpaper_opacity;
|
||||
video_info->menu_wallpaper_opacity = settings->floats.menu_wallpaper_opacity;
|
||||
video_info->menu_framebuffer_opacity = settings->floats.menu_framebuffer_opacity;
|
||||
|
||||
video_info->libretro_running = core_is_game_loaded();
|
||||
#else
|
||||
|
@ -2539,6 +2540,7 @@ void video_driver_build_info(video_frame_info_t *video_info)
|
|||
video_info->battery_level_enable = false;
|
||||
video_info->xmb_shadows_enable = false;
|
||||
video_info->xmb_alpha_factor = 0.0f;
|
||||
video_info->menu_framebuffer_opacity = 0.0f;
|
||||
video_info->menu_wallpaper_opacity = 0.0f;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -447,14 +447,15 @@ typedef struct video_frame_info
|
|||
unsigned custom_vp_full_height;
|
||||
|
||||
float menu_wallpaper_opacity;
|
||||
float menu_framebuffer_opacity;
|
||||
float menu_header_opacity;
|
||||
float menu_footer_opacity;
|
||||
float refresh_rate;
|
||||
float font_msg_pos_x;
|
||||
float font_msg_pos_y;
|
||||
float font_msg_color_r;
|
||||
float font_msg_color_g;
|
||||
float font_msg_color_b;
|
||||
float menu_header_opacity;
|
||||
float menu_footer_opacity;
|
||||
float xmb_alpha_factor;
|
||||
|
||||
char fps_text[128];
|
||||
|
|
|
@ -45,6 +45,21 @@ CONSOLE EXTENSIONS
|
|||
#include "../memory/ngc/ssaram.c"
|
||||
#endif
|
||||
|
||||
#ifdef INTERNAL_LIBOGC
|
||||
#ifdef HW_RVL
|
||||
#include "../wii/libogc/libfat/cache.c"
|
||||
#include "../wii/libogc/libfat/directory.c"
|
||||
#include "../wii/libogc/libfat/disc.c"
|
||||
#include "../wii/libogc/libfat/fatdir.c"
|
||||
#include "../wii/libogc/libfat/fatfile.c"
|
||||
#include "../wii/libogc/libfat/file_allocation_table.c"
|
||||
#include "../wii/libogc/libfat/filetime.c"
|
||||
#include "../wii/libogc/libfat/libfat.c"
|
||||
#include "../wii/libogc/libfat/lock.c"
|
||||
#include "../wii/libogc/libfat/partition.c"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*============================================================
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <retro_miscellaneous.h>
|
||||
|
||||
#include <wiiu/nsyskbd.h>
|
||||
#include <wiiu/vpad.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../../config.h"
|
||||
|
@ -96,18 +97,37 @@ void kb_key_callback(KBDKeyEvent *key)
|
|||
RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
/* TODO: emulate a relative mouse. This is suprisingly
|
||||
hard to get working nicely.
|
||||
*/
|
||||
|
||||
static int16_t wiiu_pointer_device_state(wiiu_input_t* wiiu, unsigned id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_POINTER_PRESSED:
|
||||
return wiiu->joypad->get_buttons(0) & VPAD_BUTTON_TOUCH;
|
||||
case RETRO_DEVICE_ID_POINTER_X:
|
||||
return wiiu->joypad->axis(0, 0xFFFF0004UL);
|
||||
case RETRO_DEVICE_ID_POINTER_Y:
|
||||
return wiiu->joypad->axis(0, 0xFFFF0005UL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void wiiu_input_poll(void *data)
|
||||
{
|
||||
wiiu_input_t *wiiu = (wiiu_input_t*)data;
|
||||
|
||||
if (wiiu && wiiu->joypad)
|
||||
wiiu->joypad->poll();
|
||||
wiiu->joypad->poll();
|
||||
}
|
||||
|
||||
static bool wiiu_key_pressed(int key)
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
|
||||
if (key >= RETROK_LAST)
|
||||
return false;
|
||||
|
||||
|
@ -127,7 +147,7 @@ static int16_t wiiu_input_state(void *data,
|
|||
|
||||
if(!wiiu || !(port < MAX_PADS) || !binds || !binds[port])
|
||||
return 0;
|
||||
|
||||
|
||||
switch (device)
|
||||
{
|
||||
case RETRO_DEVICE_JOYPAD:
|
||||
|
@ -140,6 +160,9 @@ static int16_t wiiu_input_state(void *data,
|
|||
return input_joypad_analog(wiiu->joypad,
|
||||
joypad_info, port, idx, id, binds[port]);
|
||||
break;
|
||||
case RETRO_DEVICE_POINTER:
|
||||
case RARCH_DEVICE_POINTER_SCREEN:
|
||||
return wiiu_pointer_device_state(wiiu, id);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -151,7 +174,7 @@ static void wiiu_input_free_input(void *data)
|
|||
|
||||
if (wiiu && wiiu->joypad)
|
||||
wiiu->joypad->destroy();
|
||||
|
||||
|
||||
KBDTeardown();
|
||||
|
||||
free(data);
|
||||
|
@ -165,10 +188,10 @@ static void* wiiu_input_init(const char *joypad_driver)
|
|||
|
||||
DEBUG_STR(joypad_driver);
|
||||
wiiu->joypad = input_joypad_init_driver(joypad_driver, wiiu);
|
||||
|
||||
|
||||
KBDSetup(&kb_connection_callback,
|
||||
&kb_disconnection_callback,&kb_key_callback);
|
||||
|
||||
|
||||
input_keymaps_init_keyboard_lut(rarch_key_map_wiiu);
|
||||
|
||||
return wiiu;
|
||||
|
@ -186,9 +209,10 @@ static uint64_t wiiu_input_get_capabilities(void *data)
|
|||
{
|
||||
(void)data;
|
||||
|
||||
return (1 << RETRO_DEVICE_JOYPAD) |
|
||||
(1 << RETRO_DEVICE_ANALOG) |
|
||||
(1 << RETRO_DEVICE_KEYBOARD);
|
||||
return (1 << RETRO_DEVICE_JOYPAD) |
|
||||
(1 << RETRO_DEVICE_ANALOG) |
|
||||
(1 << RETRO_DEVICE_KEYBOARD) |
|
||||
(1 << RETRO_DEVICE_POINTER);
|
||||
}
|
||||
|
||||
static const input_device_driver_t *wiiu_input_get_joypad_driver(void *data)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "../../tasks/tasks_internal.h"
|
||||
#include "../../retroarch.h"
|
||||
#include "../../command.h"
|
||||
#include "../../gfx/video_driver.h"
|
||||
#include "string.h"
|
||||
|
||||
#include "wiiu_dbg.h"
|
||||
|
@ -57,7 +58,8 @@ static uint8_t pad_type[KPAD_COUNT] = {WIIUINPUT_TYPE_NONE, WIIUINPUT_TYPE_NONE,
|
|||
|
||||
static uint8_t hid_status[HID_COUNT];
|
||||
static InputData hid_data[HID_COUNT];
|
||||
static int16_t analog_state[MAX_PADS][2][2];
|
||||
/* 3 axis - one for touch/future IR support? */
|
||||
static int16_t analog_state[MAX_PADS][3][2];
|
||||
static bool wiiu_pad_inited = false;
|
||||
|
||||
static char hidName[HID_COUNT][255];
|
||||
|
@ -135,12 +137,12 @@ static int16_t wiiu_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||
if (joyaxis == AXIS_NONE || port_num >= MAX_PADS)
|
||||
return 0;
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
if (AXIS_NEG_GET(joyaxis) < 6)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
else if (AXIS_POS_GET(joyaxis) < 6)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
|
@ -163,6 +165,14 @@ static int16_t wiiu_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||
case 3:
|
||||
val = analog_state[port_num][1][1];
|
||||
break;
|
||||
|
||||
case 4:
|
||||
val = analog_state[port_num][2][0];
|
||||
break;
|
||||
|
||||
case 5:
|
||||
val = analog_state[port_num][2][1];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
|
@ -173,6 +183,12 @@ static int16_t wiiu_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
|||
return val;
|
||||
}
|
||||
|
||||
static float scaleTP(float oldMin, float oldMax, float newMin, float newMax, float val) {
|
||||
float oldRange = (oldMax - oldMin);
|
||||
float newRange = (newMax - newMin);
|
||||
return (((val - oldMin) * newRange) / oldRange) + newMin;
|
||||
}
|
||||
|
||||
static void wiiu_joypad_poll(void)
|
||||
{
|
||||
int i, c, result;
|
||||
|
@ -183,7 +199,7 @@ static void wiiu_joypad_poll(void)
|
|||
|
||||
if (!vpadError)
|
||||
{
|
||||
pad_state[0] = vpad.hold & ~0x7F800000; /* clear out emulated analog sticks */
|
||||
pad_state[0] = vpad.hold & VPAD_MASK_BUTTONS; /* buttons only */
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_X] = vpad.leftStick.x * 0x7FF0;
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_Y] = vpad.leftStick.y * 0x7FF0;
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_RIGHT] [RETRO_DEVICE_ID_ANALOG_X] = vpad.rightStick.x * 0x7FF0;
|
||||
|
@ -191,8 +207,28 @@ static void wiiu_joypad_poll(void)
|
|||
|
||||
BIT64_CLEAR(lifecycle_state, RARCH_MENU_TOGGLE);
|
||||
|
||||
if ((vpad.tpNormal.touched) && (vpad.tpNormal.x > 200) && (vpad.tpNormal.validity) == 0)
|
||||
BIT64_SET(lifecycle_state, RARCH_MENU_TOGGLE);
|
||||
/* You can only call VPADData once every loop, else the second one
|
||||
won't get any data. Thus; I had to hack touch support into the existing
|
||||
joystick API. Woo-hoo? Misplaced requests for touch axis are filtered
|
||||
out in wiiu_input.
|
||||
*/
|
||||
if (vpad.tpNormal.touched && vpad.tpNormal.validity == VPAD_VALID) {
|
||||
struct video_viewport vp = {0};
|
||||
video_driver_get_viewport_info(&vp);
|
||||
VPADTouchData cal = {0};
|
||||
/* Calibrates data to a 720p screen, seems to clamp outer 12px */
|
||||
VPADGetTPCalibratedPoint(0, &cal, &(vpad.tpNormal));
|
||||
/* Calibrate to viewport and save as axis 2 (idx 4,5) */
|
||||
analog_state[0][2][0] = (int16_t)scaleTP(12.0f, 1268.0f, 0.0f, (float)(vp.full_width), (float)cal.x);
|
||||
analog_state[0][2][1] = (int16_t)scaleTP(12.0f, 708.0f, 0.0f, (float)(vp.full_height), (float)cal.y);
|
||||
|
||||
/* Emulating a button for touch; lets people assign it to menu
|
||||
for that traditional RetroArch Wii U feel */
|
||||
pad_state[0] |= VPAD_BUTTON_TOUCH;
|
||||
} else {
|
||||
/* This is probably 0 anyway */
|
||||
pad_state[0] &= ~VPAD_BUTTON_TOUCH;
|
||||
}
|
||||
|
||||
/* panic button */
|
||||
if ((vpad.hold & (VPAD_BUTTON_R | VPAD_BUTTON_L | VPAD_BUTTON_STICK_R | VPAD_BUTTON_STICK_L))
|
||||
|
|
|
@ -91,7 +91,7 @@ enum rarch_input_keyboard_ctl_state
|
|||
struct retro_keybind
|
||||
{
|
||||
bool valid;
|
||||
unsigned id;
|
||||
uint16_t id;
|
||||
enum msg_hash_enums enum_idx;
|
||||
enum retro_key key;
|
||||
|
||||
|
@ -120,7 +120,7 @@ struct retro_keybind
|
|||
|
||||
typedef struct rarch_joypad_info
|
||||
{
|
||||
unsigned joy_idx;
|
||||
uint16_t joy_idx;
|
||||
const struct retro_keybind *auto_binds;
|
||||
float axis_threshold;
|
||||
} rarch_joypad_info_t;
|
||||
|
|
|
@ -3021,3 +3021,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -3021,3 +3021,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -3015,3 +3015,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -2884,3 +2884,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -3053,3 +3053,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
2458
intl/msg_hash_it.h
2458
intl/msg_hash_it.h
File diff suppressed because it is too large
Load Diff
|
@ -3007,3 +3007,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -3016,3 +3016,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -229,6 +229,14 @@ MSG_HASH(MENU_ENUM_LABEL_DATABASE_MANAGER,
|
|||
"database_manager")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_MANAGER_LIST,
|
||||
"database_manager_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST,
|
||||
"deferred_favorites_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST,
|
||||
"deferred_images_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST,
|
||||
"deferred_music_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST,
|
||||
"deferred_video_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_NETPLAY,
|
||||
"deferred_netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_MUSIC,
|
||||
|
@ -1277,3 +1285,15 @@ MSG_HASH(MENU_ENUM_LABEL_CORE_DELETE,
|
|||
"core_delete")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"playlist_entry_rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"menu_framebuffer_opacity")
|
||||
MSG_HASH(MENU_ENUM_LABEL_GOTO_FAVORITES,
|
||||
"goto_favorites")
|
||||
MSG_HASH(MENU_ENUM_LABEL_GOTO_MUSIC,
|
||||
"goto_music")
|
||||
MSG_HASH(MENU_ENUM_LABEL_GOTO_IMAGES,
|
||||
"goto_images")
|
||||
MSG_HASH(MENU_ENUM_LABEL_GOTO_VIDEO,
|
||||
"goto_video")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"materialui_icons_enable")
|
||||
|
|
|
@ -2884,3 +2884,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -28,7 +28,15 @@
|
|||
int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len) {
|
||||
uint32_t driver_hash = 0;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
|
||||
if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM)
|
||||
{
|
||||
snprintf(s, len,
|
||||
"TODO/FIXME - Fill in message here."
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
|
||||
msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) {
|
||||
unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
|
||||
|
@ -293,6 +301,9 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
"As imagens capturadas serão armazenadas dentro \n"
|
||||
"do Diretório de Captura de Telas.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
|
||||
snprintf(s, len, "Adicionar o item aos seus Favoritos.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_RUN:
|
||||
snprintf(s, len, "Iniciar o conteúdo.");
|
||||
break;
|
||||
|
@ -587,6 +598,16 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
"Ocultar a exibição de Transparência \n"
|
||||
"dentro do menu.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS:
|
||||
snprintf(s, len,
|
||||
"Exibir comandos do teclado/controle na \n"
|
||||
"transparência.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
|
||||
snprintf(s, len,
|
||||
"Seleciona a porta de escuta dos comandos do controle \n"
|
||||
"a serem exibidos na transparência.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_PRESET:
|
||||
snprintf(s, len,
|
||||
"Caminho para predefinição de Transparência.");
|
||||
|
@ -654,15 +675,15 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
const char *t =
|
||||
"O RetroArch utiliza uma forma única de \n"
|
||||
"sincronização de áudio/video aonde ele \n"
|
||||
"precisa ser calibrado pela taxa de \n"
|
||||
"atualização da sua tela para um melhor \n"
|
||||
"resultado no desempenho. \n"
|
||||
" \n"
|
||||
"Se você experimentar qualquer estalido \n"
|
||||
"no áudio ou rasgo de vídeo, normalmente \n"
|
||||
"isto significa que você precisa calibrar \n"
|
||||
"as configurações. Algumas escolhas abaixo: \n"
|
||||
" \n";
|
||||
"precisa ser calibrado pela taxa de \n"
|
||||
"atualização da sua tela para um melhor \n"
|
||||
"resultado no desempenho. \n"
|
||||
" \n"
|
||||
"Se você experimentar qualquer estalido \n"
|
||||
"no áudio ou rasgo de vídeo, normalmente \n"
|
||||
"isto significa que você precisa calibrar \n"
|
||||
"as configurações. Algumas escolhas abaixo: \n"
|
||||
" \n";
|
||||
snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
|
||||
"a) Vá para '%s' -> '%s', e habilite \n"
|
||||
"'Video Paralelizado'. A taxa de atualização \n"
|
||||
|
@ -677,8 +698,8 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO));
|
||||
strlcpy(s, t, len);
|
||||
strlcat(s, u, len);
|
||||
strlcpy(s, t, len);
|
||||
strlcat(s, u, len);
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC:
|
||||
|
@ -1055,7 +1076,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
" libretro_log, ele é ignorado.\n"
|
||||
" \n"
|
||||
" Registros DEBUG são sempre ignorados a menos \n"
|
||||
" que o modo detalhado esteja ativado (--verbose).\n"
|
||||
" que o modo verboso esteja ativado (--verbose).\n"
|
||||
" \n"
|
||||
" DEBUG = 0\n"
|
||||
" INFO = 1\n"
|
||||
|
@ -1193,30 +1214,25 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
"implementações de núcleo Libretro.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO:
|
||||
{
|
||||
const char *t =
|
||||
snprintf(s, len,
|
||||
"Taxa de Atualização Automática. \n"
|
||||
" \n"
|
||||
"A taxa de atualização estimada da tela (Hz). \n"
|
||||
"É utilizado para calcular a taxa de entrada \n"
|
||||
"de áudio com a fórmula: \n"
|
||||
" \n"
|
||||
"taxa de ent de áudio = taxa de ent do jogo * \n"
|
||||
"taxa de atlz da tela / taxa de atlz do jogo \n"
|
||||
" \n";
|
||||
const char *u =
|
||||
"Se a implementação não reportar nenhum \n"
|
||||
"valor, os padrões NTSC serão usados para \n"
|
||||
"garantir compatibilidade.\n"
|
||||
" \n"
|
||||
"Este valor deve ficar próximo de 60Hz para \n"
|
||||
"evitar mudanças drásticas no timbre do som. \n"
|
||||
"Se seu monitor não roda a 60Hz, ou próximo \n"
|
||||
"disso, desative o V-Sync, e deixe este valor \n"
|
||||
"no padrão.";
|
||||
strlcpy(s, t, len);
|
||||
strlcat(s, u, len);
|
||||
}
|
||||
" \n"
|
||||
"A taxa de atualização estimada da tela (Hz). \n"
|
||||
"É utilizado para calcular a taxa de entrada \n"
|
||||
"de áudio com a fórmula: \n"
|
||||
" \n"
|
||||
"taxa de ent de áudio = taxa de ent do jogo * \n"
|
||||
"taxa de atlz da tela / taxa de atlz do jogo \n"
|
||||
" \n"
|
||||
"Se a implementação não reportar nenhum \n"
|
||||
"valor, os padrões NTSC serão usados para \n"
|
||||
"garantir compatibilidade.\n"
|
||||
" \n"
|
||||
"Este valor deve ficar próximo de 60Hz para \n"
|
||||
"evitar mudanças drásticas no timbre do som. \n"
|
||||
"Se seu monitor não roda a 60Hz, ou próximo \n"
|
||||
"disso, desative o V-Sync, e deixe este valor \n"
|
||||
"no padrão.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_ROTATION:
|
||||
snprintf(s, len,
|
||||
|
@ -1321,7 +1337,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
case MENU_ENUM_LABEL_LOG_VERBOSITY:
|
||||
snprintf(s, len,
|
||||
"Habilitar ou desabilitar o nível \n"
|
||||
"de detalhamento do frontend.");
|
||||
"de verbosidade do frontend.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VOLUME_UP:
|
||||
snprintf(s, len,
|
||||
|
@ -1642,26 +1658,21 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
|||
"no Netplay.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES:
|
||||
{
|
||||
const char *t =
|
||||
snprintf(s, len,
|
||||
"A frequência em quadros na qual o Netplay \n"
|
||||
"irá verificar se o hospedeiro e o cliente \n"
|
||||
"estão sincronizados. \n"
|
||||
" \n"
|
||||
"Com a maioria dos núcleos, este valor não \n"
|
||||
"terá efeito perceptível e pode ser ignorado. \n";
|
||||
const char *u =
|
||||
"Com núcleos não determinísticos, este valor \n"
|
||||
"define quão frequente os pares do Netplay \n"
|
||||
"serão colocados em sincronia. Com núcleos \n"
|
||||
"defeituosos, definir para qualquer valor que \n"
|
||||
"não zero irá causar problemas de desempenho \n"
|
||||
"severos. Defina como zero para desativar \n"
|
||||
"verificações. Este valor é usado somente \n"
|
||||
"no hospedeiro de Netplay.";
|
||||
strlcpy(s, t, len);
|
||||
strlcat(s, u, len);
|
||||
}
|
||||
"irá verificar se o hospedeiro e o cliente \n"
|
||||
"estão sincronizados. \n"
|
||||
" \n"
|
||||
"Com a maioria dos núcleos, este valor não \n"
|
||||
"terá efeito perceptível e pode ser ignorado. \n"
|
||||
"Com núcleos não determinísticos, este valor \n"
|
||||
"define quão frequente os pares do Netplay \n"
|
||||
"serão colocados em sincronia. Com núcleos \n"
|
||||
"defeituosos, definir para qualquer valor que \n"
|
||||
"não zero irá causar problemas de desempenho \n"
|
||||
"severos. Defina como zero para desativar \n"
|
||||
"verificações. Este valor é usado somente \n"
|
||||
"no hospedeiro de Netplay.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN:
|
||||
snprintf(s, len,
|
||||
|
|
|
@ -377,7 +377,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS,
|
|||
"Menu Rápido"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR,
|
||||
"Downloads"
|
||||
"Recursos de Núcleo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY,
|
||||
"Downloads"
|
||||
|
@ -553,6 +553,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_FALSE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO,
|
||||
"Velocidade Máxima de Execução"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES_TAB,
|
||||
"Favoritos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FPS_SHOW,
|
||||
"Mostrar Taxa de Quadros"
|
||||
)
|
||||
|
@ -871,6 +874,12 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU,
|
||||
"Ocultar Transparência no Menu"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
"Exibir Comandos Na Transparência"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
|
||||
"Porta de Escuta do Exibir Comandos "
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR,
|
||||
"Tipo de Comportamento da Chamada Seletiva"
|
||||
)
|
||||
|
@ -1010,7 +1019,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
|||
"Registro de Eventos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY,
|
||||
"Detalhamento do Registro de Eventos"
|
||||
"Verbosidade do Registro de Eventos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MAIN_MENU,
|
||||
"Menu Principal"
|
||||
|
@ -1060,8 +1069,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER,
|
||||
"Filtro Linear de Menu"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_HORIZONTAL_ANIMATION,
|
||||
"Animação Horizontal"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS,
|
||||
"Appearance"
|
||||
"Aparência"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER,
|
||||
"Plano de Fundo"
|
||||
|
@ -1456,6 +1468,12 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME,
|
||||
"Salvar Arquivo de Remapeamento de Jogo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CORE,
|
||||
"Remover Arquivo de Remapeamento de Núcleo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_GAME,
|
||||
"Remover Arquivo de Remapeamento de Jogo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REQUIRED,
|
||||
"Obrigatório"
|
||||
)
|
||||
|
@ -1504,6 +1522,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG,
|
||||
"Analógico Direito"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES,
|
||||
"Adicionar aos Favoritos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN,
|
||||
"Executar"
|
||||
)
|
||||
|
@ -1610,10 +1631,22 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
|
|||
"Taxa de Câmera Lenta"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE,
|
||||
"Ordenar Arquivos de Jogo-Salvo em Pastas"
|
||||
"Classificar Arquivos de Jogo-Salvo em Pastas"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE,
|
||||
"Ordenar Arquivos de Estado de Jogo em Pastas"
|
||||
"Classificar Arquivos de Estado de Jogo em Pastas"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE,
|
||||
"Gravar Estados de Jogo no Diretório de Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE,
|
||||
"Gravar Jogos-Salvos no Diretório de Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE,
|
||||
"Arquivos de Sistema estão no Diretório de Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE,
|
||||
"Salvar Capturas de Tela no Diretório de Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SSH_ENABLE,
|
||||
"Habilitar SSH"
|
||||
|
@ -2230,6 +2263,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_HISTORY,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_ADD,
|
||||
"Exibir Aba de Importação de Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_FAVORITES,
|
||||
"Exibir Aba de Favoritos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_SHOW_IMAGES,
|
||||
"Exibir Aba de Imagem"
|
||||
)
|
||||
|
@ -2264,8 +2300,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
|
|||
"Habilitar ou desabilitar Estado de Jogo, Trapaças, Voltar Atrás, Avanço Rápido, Pausa e Câmera Lenta para todos os jogos."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE,
|
||||
"Habilitar ou desabilitar detalhamento na tela das conquistas."
|
||||
)
|
||||
"Habilitar ou desabilitar detalhes das conquistas na tela."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DRIVER_SETTINGS,
|
||||
"Alterar os drivers utilizados pelo sistema."
|
||||
)
|
||||
|
@ -2407,6 +2443,9 @@ MSG_HASH(MENU_ENUM_SUBLABEL_WIFI_SETTINGS,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_HELP_LIST,
|
||||
"Saiba mais sobre como o programa funciona."
|
||||
)
|
||||
MSG_HASH(MSG_ADDED_TO_FAVORITES,
|
||||
"Adicionado aos favoritos"
|
||||
)
|
||||
MSG_HASH(MSG_APPENDED_DISK,
|
||||
"Disco anexado"
|
||||
)
|
||||
|
@ -2548,6 +2587,9 @@ MSG_HASH(MSG_ERROR_SAVING_CORE_OPTIONS_FILE,
|
|||
MSG_HASH(MSG_ERROR_SAVING_REMAP_FILE,
|
||||
"Erro em salvar o arquivo de remapeamento."
|
||||
)
|
||||
MSG_HASH(MSG_ERROR_REMOVING_REMAP_FILE,
|
||||
"Erro em remover o arquivo de remapeamento."
|
||||
)
|
||||
MSG_HASH(MSG_ERROR_SAVING_SHADER_PRESET,
|
||||
"Erro em salvar a predefinição de Shader."
|
||||
)
|
||||
|
@ -2726,7 +2768,8 @@ MSG_HASH(MSG_INPUT_PRESET_FILENAME,
|
|||
"Nome de Arquivo de Predefinição"
|
||||
)
|
||||
MSG_HASH(MSG_INPUT_RENAME_ENTRY,
|
||||
"Rename Title")
|
||||
"Renomear Título"
|
||||
)
|
||||
MSG_HASH(MSG_INTERFACE,
|
||||
"Interface"
|
||||
)
|
||||
|
@ -2838,6 +2881,9 @@ MSG_HASH(MSG_REDIRECTING_SAVESTATE_TO,
|
|||
MSG_HASH(MSG_REMAP_FILE_SAVED_SUCCESSFULLY,
|
||||
"Arquivo de remapeamento salvo com sucesso."
|
||||
)
|
||||
MSG_HASH(MSG_REMAP_FILE_REMOVED_SUCCESSFULLY,
|
||||
"Arquivo de remapeamento salvo com sucesso."
|
||||
)
|
||||
MSG_HASH(MSG_REMOVED_DISK_FROM_TRAY,
|
||||
"Disco removido da bandeja."
|
||||
)
|
||||
|
@ -3267,6 +3313,12 @@ MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU,
|
||||
"Ocultar a Transparência enquanto estiver dentro do menu e exibir novamente ao sair."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
"Exibir comandos de teclado/controle na transparência."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
|
||||
"Selecione a porta para a transparência escutar se Exibir Comandos na Transparência estiver habilitado."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST,
|
||||
"O conteúdo analisado aparecerá aqui."
|
||||
)
|
||||
|
@ -3498,6 +3550,9 @@ MSG_HASH(MENU_ENUM_SUBLABEL_DELETE_ENTRY,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_INFORMATION,
|
||||
"Visualizar mais informações sobre o conteúdo."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES,
|
||||
"Adicionar o item aos seus favoritos."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RUN,
|
||||
"Iniciar o conteúdo."
|
||||
)
|
||||
|
@ -3648,6 +3703,9 @@ MSG_HASH(MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_FONT,
|
||||
"Selecionar uma fonte principal diferente para ser usada pelo menu."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES,
|
||||
"Exibir a aba de favoritos dentro do menu principal."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES,
|
||||
"Exibir a aba de imagem dentro do menu principal."
|
||||
)
|
||||
|
@ -3853,12 +3911,53 @@ MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER,
|
|||
"Exibir a opção de atualizar núcleos (e arquivos de informação de núcleo)."
|
||||
)
|
||||
MSG_HASH(MSG_PREPARING_FOR_CONTENT_SCAN,
|
||||
"Preparando a busca de conteúdo...")
|
||||
"Preparando a busca de conteúdo..."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_DELETE,
|
||||
"Delete core")
|
||||
"Remover núcleo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_DELETE,
|
||||
"Remove this core from disk.")
|
||||
"Remover este núcleo do disco."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Renomear o título do item."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
"Renomear"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Opacidade do Framebuffer"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modificar a opacidade do framebuffer."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favoritos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Conteúdo adicionado aos 'Favoritos' vai aparecer aqui."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Músicas"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Músicas que foram reproduzidas aparecem aqui."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Imagens"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Imagens que foram exibidas aparecem aqui."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Vídeos"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Vídeos que foram reproduzidos aparecem aqui."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Ícones do Menu"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Habilitar/desabilitar os ícones exibidos do lado esquerdo dos itens de menu. "
|
||||
)
|
|
@ -2991,3 +2991,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -33,11 +33,11 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MSG_PUBLIC_ADDRESS,
|
||||
"Public address"
|
||||
"Публичный адрес"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NO_ARGUMENTS_SUPPLIED_AND_NO_MENU_BUILTIN,
|
||||
"Нет аргументов и встроенного меню,отображается справка..."
|
||||
"Нет аргументов и встроенного меню, отображается справка..."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_USERS_HAS_FLIPPED,
|
||||
|
@ -53,55 +53,55 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_YOU_HAVE_LEFT_THE_GAME,
|
||||
"You have left the game"
|
||||
"Вы покинули игру"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_YOU_HAVE_JOINED_AS_PLAYER_N,
|
||||
"You have joined as player %d"
|
||||
"Вы присоединились под именем %d"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_IMPLEMENTATIONS_DIFFER,
|
||||
"Implementations differ. Make sure you're using the exact same versions of RetroArch and the core."
|
||||
"Реализации различаются. Убедитесь, что вы используете точные версии RetroArch и выбранного ядра."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_ENDIAN_DEPENDENT,
|
||||
"This core does not support inter-architecture netplay between these systems"
|
||||
"Выбранное ядро не поддерживает архитектуру netplay между этими системами"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_PLATFORM_DEPENDENT,
|
||||
"This core does not support inter-architecture netplay"
|
||||
"Выбранное ядро не поддерживает архитектуру netplay"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_ENTER_PASSWORD,
|
||||
"Enter netplay server password:"
|
||||
"Введите пароль от сервера netplay:"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_INCORRECT_PASSWORD,
|
||||
"Incorrect password"
|
||||
"Неверный пароль"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_SERVER_NAMED_HANGUP,
|
||||
"\"%s\" has disconnected"
|
||||
"\"%s\" отключился"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_SERVER_HANGUP,
|
||||
"A netplay client has disconnected"
|
||||
"Клиент netplay отключен"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_CLIENT_HANGUP,
|
||||
"Netplay disconnected"
|
||||
"Netplay отключен"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_CANNOT_PLAY_UNPRIVILEGED,
|
||||
"You do not have permission to play"
|
||||
"У вас недостаточно прав чтобы играть"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS,
|
||||
"There are no free player slots"
|
||||
"Недостаточно свободных слотов для игры"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_CANNOT_PLAY,
|
||||
"Cannot switch to play mode"
|
||||
"Невозможно переключиться в режим игры"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_PEER_PAUSED,
|
||||
|
@ -109,11 +109,11 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MSG_NETPLAY_CHANGED_NICK,
|
||||
"Your nickname changed to \"%s\""
|
||||
"Ваш ник изменился на \"%s\""
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_SHARED_CONTEXT,
|
||||
"Предоставьте аппаратно-рендерированным ядрам собственный контекст.Избегайте принятия изменений состояния оборудования между кадрами."
|
||||
"Предоставьте аппаратно-рендерированным ядрам собственный контекст. Избегайте принятия изменений состояния оборудования между кадрами."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SETTINGS,
|
||||
|
@ -229,7 +229,7 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN,
|
||||
"Аудио DSP Plugin"
|
||||
"Аудио плагин DSP"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE,
|
||||
|
@ -253,7 +253,7 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_MUTE,
|
||||
"Выключить звук"
|
||||
"Отключить звук"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE,
|
||||
|
@ -281,7 +281,7 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE,
|
||||
"WASAPI Exclusive Mode"
|
||||
"Эксклюзивный режим WASAPI"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_FLOAT_FORMAT,
|
||||
|
@ -381,7 +381,7 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE,
|
||||
"Bluetooth Включить"
|
||||
"Включить Bluetooth"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL,
|
||||
|
@ -421,11 +421,11 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS,
|
||||
"Сохранить чит файл как:"
|
||||
"Сохранить чит-файл как:"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES,
|
||||
"Пропуск чита"
|
||||
"Кол-во доступных чит-кодов"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION,
|
||||
|
@ -499,9 +499,9 @@ MSG_HASH(
|
|||
MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE,
|
||||
"Размер списка истории")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE,
|
||||
"Allow to remove entries")
|
||||
"Разрешить удалить контент с плейлиста")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS,
|
||||
"Выйти из меню")
|
||||
"Быстрые настройки")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR,
|
||||
"Загрузки")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY,
|
||||
|
@ -533,7 +533,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER,
|
||||
"Разработчик системы")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME,
|
||||
"Имя системы")
|
||||
"Эмулирует системы")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS,
|
||||
"Элементы управления")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_LIST,
|
||||
|
@ -549,7 +549,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL,
|
||||
"Создание ботов URL")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST,
|
||||
"Обновление ядра")
|
||||
"Обновить ядро")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS,
|
||||
"Обновление")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE,
|
||||
|
@ -559,7 +559,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CPU_CORES,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY,
|
||||
"Курсор")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER,
|
||||
"Курсор менеджер")
|
||||
"Менеджер курсоров")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO,
|
||||
"Дополнительное значение")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
|
||||
|
@ -567,7 +567,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
|
||||
"Выбор баз данных")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
|
||||
"Удаление")
|
||||
"Удалить")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
|
||||
"Избранное")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
|
||||
|
@ -605,7 +605,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN,
|
||||
"Загрузка макета при выключении ядра")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CHECK_FOR_MISSING_FIRMWARE,
|
||||
"Check for Missing Firmware Before Loading")
|
||||
"Проверять в отсутствие firmware перед загрузкой")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER,
|
||||
"Динамические обои")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY,
|
||||
|
@ -711,7 +711,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE,
|
||||
"Тип устройства")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX,
|
||||
"Mouse Index")
|
||||
"Индекс мыши")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DRIVER,
|
||||
"Драйвер ввода")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE,
|
||||
|
@ -753,7 +753,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y,
|
||||
"Кнопка Y")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_KEY,
|
||||
"(Ключ: %s)")
|
||||
"(Клавиша: %s)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE,
|
||||
"Тип отображения клавиатуры для геймпада")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS,
|
||||
|
@ -773,7 +773,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV,
|
||||
"Предыдущий диск")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY,
|
||||
"EВключить горячие клавиши")
|
||||
"Включить горячие клавиши")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,
|
||||
"Ускоренная перемотка вперед")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY,
|
||||
|
@ -785,9 +785,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE,
|
||||
"Переключатель мыши")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE,
|
||||
"Game focus toggle")
|
||||
"Переключить игровой фокус")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY,
|
||||
"Состояние загрузки")
|
||||
"Загрузить сохранение игры")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE,
|
||||
"Переключение меню")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE,
|
||||
|
@ -797,7 +797,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP,
|
||||
"Netplay отразить пользователей")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH,
|
||||
"Netplay toggle play/spectate mode")
|
||||
"Переключить режим игры / наблюдателя Netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_OSK,
|
||||
"Переключение экранной клавиатуры")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT,
|
||||
|
@ -805,13 +805,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE,
|
||||
"Приостановить переключение")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
|
||||
"Выход из RetroArch")
|
||||
"Выйти из RetroArch")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_RESET,
|
||||
"Сбросить игру")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND,
|
||||
"Перемотка назад")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY,
|
||||
"Сохранить состояние")
|
||||
"Сохранить игру")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT,
|
||||
"Сделать скриншот")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT,
|
||||
|
@ -869,43 +869,43 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES,
|
||||
"Сервисы")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED,
|
||||
"Chinese (Simplified)")
|
||||
"Китайский (Простой)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL,
|
||||
"Chinese (Traditional)")
|
||||
"Китайский (Традициональный)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_DUTCH,
|
||||
"Dutch")
|
||||
"Голландский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ENGLISH,
|
||||
"English")
|
||||
"Английский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO,
|
||||
"Esperanto")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_FRENCH,
|
||||
"French")
|
||||
"Французский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_GERMAN,
|
||||
"German")
|
||||
"Немецкий")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ITALIAN,
|
||||
"Italian")
|
||||
"Итальянский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_JAPANESE,
|
||||
"Japanese")
|
||||
"Японский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_KOREAN,
|
||||
"Korean")
|
||||
"Корейский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_POLISH,
|
||||
"Polish")
|
||||
"Польский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_BRAZIL,
|
||||
"Portuguese (Brazil)")
|
||||
"португальский (Бразилия)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_PORTUGAL,
|
||||
"Portuguese (Portugal)")
|
||||
"португальский (Португалия)")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN,
|
||||
"Русский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_SPANISH,
|
||||
"Spanish")
|
||||
"Испанский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE,
|
||||
"Vietnamese")
|
||||
"Вьетнамский")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LEFT_ANALOG,
|
||||
"Левый аналог")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH,
|
||||
"Ядро")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH,
|
||||
"Ядро инфо")
|
||||
"Информация ядра")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL,
|
||||
"Уровень ведения журнала")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
|
||||
|
@ -941,7 +941,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GREEN,
|
||||
"Зелёный")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_NVIDIA_SHIELD,
|
||||
"Щит")
|
||||
"NVIDIA Shield")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED,
|
||||
"Красный")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_YELLOW,
|
||||
|
@ -1007,25 +1007,25 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS,
|
||||
"Адрес сервера")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS,
|
||||
"Scan local network")
|
||||
"Сканировать локальную сеть")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_MODE,
|
||||
"Включить клиент Netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME,
|
||||
"Имя пользователя")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD,
|
||||
"Server Password")
|
||||
"Пароль сервера")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE,
|
||||
"Publicly Announce Netplay")
|
||||
"Публично анонсировать Netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_REQUIRE_SLAVES,
|
||||
"Disallow Non-Slave-Mode Clients")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS,
|
||||
"Настройки Netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR,
|
||||
"Netplay Spectator Mode")
|
||||
"Netplay режим наблюдателя")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_STATELESS_MODE,
|
||||
"Netplay Stateless Mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD,
|
||||
"Server Spectate-Only Password")
|
||||
"Пароль сервера режима Spectate-Only")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE,
|
||||
"Включить режим зрителя в Netplay")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT,
|
||||
|
@ -1069,9 +1069,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ITEMS,
|
||||
"Нет элементов.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND,
|
||||
"No netplay hosts found.")
|
||||
"Сетевыех хостов не найдено.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND,
|
||||
"No networks found.")
|
||||
"Сетей не найдено.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS,
|
||||
"Нет счетчиков производительности.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS,
|
||||
|
@ -1193,7 +1193,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SERIAL,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1,
|
||||
"SHA1")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT,
|
||||
"Запустить контент")
|
||||
"Запустить игру")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING,
|
||||
"Рейтинг TGDB")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_REBOOT,
|
||||
|
@ -1257,7 +1257,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN,
|
||||
"Запустить")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_MUSIC,
|
||||
"Run")
|
||||
"Запустить")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE,
|
||||
"Включить SAMBA")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY,
|
||||
|
@ -1271,7 +1271,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY,
|
||||
"Сохранить состояние")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE,
|
||||
"Savestate Thumbnails")
|
||||
"Обложка к сохранениями")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG,
|
||||
"Сохранить текущую конфигурацию")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
|
||||
|
@ -1327,7 +1327,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE,
|
||||
"Сохранить сортировку в папках")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE,
|
||||
"Sort Savestates In Folders")
|
||||
"Сортировать сохранения в папках")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SSH_ENABLE,
|
||||
"SSH включён")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_START_CORE,
|
||||
|
@ -1377,7 +1377,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT,
|
||||
"Поддержка DirectSound")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WASAPI_SUPPORT,
|
||||
"WASAPI support")
|
||||
"Поддержка WASAPI")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT,
|
||||
"Поддержка динамических библиотек")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT,
|
||||
|
@ -1407,7 +1407,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT,
|
||||
"поддержка KMS/EGL")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LAKKA_VERSION,
|
||||
"Lakka Version")
|
||||
"Версия Lakka")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT,
|
||||
"Поддержка LibretroDB")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT,
|
||||
|
@ -1501,7 +1501,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST,
|
||||
"Обновление эскизов")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS,
|
||||
"Boxarts")
|
||||
"Артбоксы")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
|
||||
"Скриншоты")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,
|
||||
|
@ -1549,7 +1549,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS,
|
||||
"Обновить сленговые шейдеры")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_USER,
|
||||
"Пользователь")
|
||||
"Аккаунт")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS,
|
||||
"Интерфейс пользователя")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_LANGUAGE,
|
||||
|
@ -1565,7 +1565,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE,
|
||||
"Разрешить вращение")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO,
|
||||
"Config Aspect Ratio")
|
||||
"Настройки соотношения сторон")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO,
|
||||
"Автоотношение сторон")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX,
|
||||
|
@ -1675,13 +1675,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN,
|
||||
"Полноэкранный режим")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH,
|
||||
"Window Width")
|
||||
"Ширина окна")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT,
|
||||
"Window Height")
|
||||
"Высота окна")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X,
|
||||
"Fullscreen Width")
|
||||
"Полноэкранная ширина")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y,
|
||||
"Fullscreen Height")
|
||||
"Полноэкранная высота")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_DRIVER,
|
||||
"Wi-Fi драйвер")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS,
|
||||
|
@ -1819,7 +1819,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_LOG_VERBOSITY,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY,
|
||||
"Присоединиться или создать сеанс netplay.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS,
|
||||
"Search for and connect to netplay hosts on the local network.")
|
||||
"Поиск и подключение к серверу по локальной сети.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST,
|
||||
"Показать информацию о ядре, сети и системе.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ONLINE_UPDATER,
|
||||
|
@ -1835,7 +1835,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_SSH_ENABLE,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE,
|
||||
"Запрещается активация заставки вашей системы.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE,
|
||||
"Sets the window size relative to the core viewport size. Alternatively, you can set a window width and height below for a fixed window size.")
|
||||
"Устанавливает размер окна относительно размера окна просмотра. Кроме того, вы можете установить ширину и высоту окна ниже для фиксации размера окна.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_USER_LANGUAGE,
|
||||
"Устанавливает язык интерфейса.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION,
|
||||
|
@ -1885,7 +1885,7 @@ MSG_HASH(MSG_BYTES,
|
|||
MSG_HASH(MSG_CANNOT_INFER_NEW_CONFIG_PATH,
|
||||
"Вывод командного интерфейса на порт.")
|
||||
MSG_HASH(MSG_CHEEVOS_HARDCORE_MODE_ENABLE,
|
||||
"Режим Hardcore включен, режим сохранения и перемотки отключен.")
|
||||
"Режим Hardcore включен, ваши сохранения и функция перемотки отключены.")
|
||||
MSG_HASH(MSG_COMPARING_WITH_KNOWN_MAGIC_NUMBERS,
|
||||
"Сравнение с известными магическими числами ...")
|
||||
MSG_HASH(MSG_COMPILED_AGAINST_API,
|
||||
|
@ -2055,9 +2055,9 @@ MSG_HASH(MSG_GOT_INVALID_DISK_INDEX,
|
|||
MSG_HASH(MSG_GRAB_MOUSE_STATE,
|
||||
"Режим перехвата мыши")
|
||||
MSG_HASH(MSG_GAME_FOCUS_ON,
|
||||
"Game focus on")
|
||||
"Игровой фокус включен")
|
||||
MSG_HASH(MSG_GAME_FOCUS_OFF,
|
||||
"Game focus off")
|
||||
"Игровой фокус выключен")
|
||||
MSG_HASH(MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING,
|
||||
"Ядро использует аппаратный рендеринг. Включите запись с GPU.")
|
||||
MSG_HASH(MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32,
|
||||
|
@ -2069,7 +2069,7 @@ MSG_HASH(MSG_INPUT_CHEAT_FILENAME,
|
|||
MSG_HASH(MSG_INPUT_PRESET_FILENAME,
|
||||
"Имя настроек")
|
||||
MSG_HASH(MSG_INPUT_RENAME_ENTRY,
|
||||
"Rename Title")
|
||||
"Переименовать заголовок")
|
||||
MSG_HASH(MSG_INTERFACE,
|
||||
"Интерфейс")
|
||||
MSG_HASH(MSG_INTERNAL_STORAGE,
|
||||
|
@ -2376,33 +2376,33 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_ORIGIN,
|
||||
"Database - Filter : Origin")
|
||||
"База Данных - Фильтр : по происхождению")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_FRANCHISE,
|
||||
"Database - Filter : Franchise")
|
||||
"База Данных - Фильтр : по франчайзу")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_ESRB_RATING,
|
||||
"Database - Filter : ESRB Rating")
|
||||
"База Данных - Фильтр : по рейтингу ESRB")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_ELSPA_RATING,
|
||||
"Database - Filter : ELSPA Rating")
|
||||
"База Данных - Фильтр : по рейтингу ELSPA")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_PEGI_RATING,
|
||||
"Database - Filter : PEGI Rating")
|
||||
"База Данных - Фильтрr : по рейтингу PEGI")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_CERO_RATING,
|
||||
"Database - Filter : CERO Rating")
|
||||
"База Данных - Фильтр : по рейтингу CERO")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_BBFC_RATING,
|
||||
"Database - Filter : BBFC Rating")
|
||||
"База Данных - Фильтр : по рейтингу BBFC")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS,
|
||||
"Database - Filter : Max Users")
|
||||
"База Данных - Фильтр : по кол-во игроков")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH,
|
||||
"Database - Filter : Releasedate By Month")
|
||||
"База Данных - Фильтр : Вышедшие по месяцам")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_YEAR,
|
||||
"Database - Filter : Releasedate By Year")
|
||||
"База Данных - Фильтр : Вышедшие по годам")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_ISSUE,
|
||||
"Database - Filter : Edge Magazine Issue")
|
||||
"База Данных - Фильтр : ошибки журнела Edge")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING,
|
||||
"Database - Filter : Edge Magazine Rating")
|
||||
"База Данных - Фильтрr : рейтинг журнала Edge")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO,
|
||||
"Database Info")
|
||||
"Информация базы данных")
|
||||
MSG_HASH(MSG_WIFI_SCAN_COMPLETE,
|
||||
"Wi-Fi scan complete.")
|
||||
"Сканирование Wi-Fi успешно завершен.")
|
||||
MSG_HASH(MSG_SCANNING_WIRELESS_NETWORKS,
|
||||
"Scanning wireless networks...")
|
||||
MSG_HASH(MSG_NETPLAY_LAN_SCAN_COMPLETE,
|
||||
|
@ -2428,15 +2428,15 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_BATTERY_LEVEL_ENABLE,
|
||||
"Показать заряд батареи")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SELECT_FILE,
|
||||
"Select File")
|
||||
"Выбрать файл")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SELECT_FROM_COLLECTION,
|
||||
"Select From Collection")
|
||||
"Выбрать файл с коллекции")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER,
|
||||
"Filter")
|
||||
"Фильтр")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_SCALE,
|
||||
"Scale")
|
||||
"Масштаб")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_START_WHEN_LOADED,
|
||||
"Netplay will start when content is loaded.")
|
||||
"Netplay заработает, когда вы запустите игру.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_LOAD_CONTENT_MANUALLY,
|
||||
"Couldn't find a suitable core or content file, load manually.")
|
||||
MSG_HASH(
|
||||
|
@ -2456,25 +2456,25 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_BOKEH,
|
|||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_REFRESH_ROOMS,
|
||||
"Обновить список комнат")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME,
|
||||
"Nickname: %s")
|
||||
"Имя: %s")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN,
|
||||
"Nickname (lan): %s")
|
||||
"Имя (lan): %s")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND,
|
||||
"Compatible content found")
|
||||
"Найден совместимый контент")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN,
|
||||
"Cuts off a few pixels around the edges of the image customarily left blank by developers which sometimes also contain garbage pixels.")
|
||||
"Отрезает несколько пикселей вокруг краев экрана, обычно оставленными пустыми разработчиками, которые иногда содержат лишь мусор.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SMOOTH,
|
||||
"Adds a slight blur to the image to take the edge off of the hard pixel edges. This option has very little impact on performance.")
|
||||
"Добавляет небольшое смазывание к изображению, чтобы избавиться от острых пикселей. Эта настройка мало влияет на производительность.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FILTER,
|
||||
"Apply a CPU-powered video filter. NOTE: Might come at a high performance cost. Some video filters might only work for cores that use 32bit or 16bit color.")
|
||||
"Применяется CPU-powered видеофильтр. ПРИМЕЧАНИЕ: Возможна высокая нагрузка на производительность. Некоторые фильтры могут работать только на некоторых ядер, которые используют 32bit или 16bit палитру.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME,
|
||||
"Input the username of your Retro Achievements account.")
|
||||
"Введите имя пользователя от вашего аккаунта Retro Achievements.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD,
|
||||
"Input the password of your Retro Achievements account.")
|
||||
"Введите пароль от вашего аккаунта Retro Achievements.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME,
|
||||
"Input your user name here. This will be used for netplay sessions, among other things.")
|
||||
"Введите ваш никнейм. Он будет использоваться в netplay сесиях и т.д.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD,
|
||||
"Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen.")
|
||||
"Записывать процесс игры с выбранными фильтрами (неработает с шейдерами). Ваше видео будет выглядить красивым =)")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_LIST,
|
||||
"Выберите, какое ядро использовать.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST,
|
||||
|
@ -2486,24 +2486,24 @@ MSG_HASH(MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
|
||||
"Закрыть программу.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH,
|
||||
"Set the custom width size for the display window. Leaving it at 0 will attempt to scale the window as large as possible.")
|
||||
"Изменить размер ширины для окна дисплея. Если вы поменяете параметр на 0, то программа будет пытаться масштабировать окно как можно больше.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT,
|
||||
"Set the custom height size for the display window. Leaving it at 0 will attempt to scale the window as large as possible.")
|
||||
"Изменить размер высоты для окна дисплея. Если вы поменяете параметр на 0, то программа будет пытаться масштабировать окно как можно больше.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X,
|
||||
"Set the custom width size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_Y,
|
||||
"Set the custom height size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_X,
|
||||
"Specify custom X axis position for onscreen text.")
|
||||
"Изменить положение оповещение по горизонтали.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y,
|
||||
"Specify custom Y axis position for onscreen text.")
|
||||
"Изменить положение оповещение по вертикали.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE,
|
||||
"Specify the font size in points.")
|
||||
"Изменить размер шрифта уведомления.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU,
|
||||
"Hide the overlay while inside the menu, and show it again when exiting the menu.")
|
||||
"Спрятать наложения в меню интерфеся, и показывать снова после выхода из него.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST,
|
||||
"Scanned content will appear here."
|
||||
"После сканирование контента он появится в этом списке ."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER,
|
||||
|
@ -2523,11 +2523,11 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN,
|
||||
"Start in fullscreen. Can be changed at runtime."
|
||||
"Запускать в полноэкранном режиме."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN,
|
||||
"If fullscreen, prefer using a windowed fullscreen mode."
|
||||
"Включить полноэкранный режим. Советуем использовать оконный полноэкранный режим."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD,
|
||||
|
@ -2727,15 +2727,15 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MOUSE_ENABLE,
|
||||
"Enable mouse controls inside the menu."
|
||||
"Включить поддержку мыши в главном меню."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_POINTER_ENABLE,
|
||||
"Enable touch controls inside the menu."
|
||||
"Включить поддержку touch в главном меню."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_THUMBNAILS,
|
||||
"Type of thumbnail to display."
|
||||
"Вид обложки к играм."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE,
|
||||
|
@ -2751,12 +2751,12 @@ MSG_HASH(
|
|||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_HOST,
|
||||
"Enables netplay in host (server) mode."
|
||||
"Запустить netplay на хосте (сервера)."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_CLIENT,
|
||||
"Enables netplay in client mode.")
|
||||
"Включить netplay в режиме клиента.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_DISCONNECT,
|
||||
"Disconnects an active Netplay connection.")
|
||||
"Отключить активное соединение Netplay.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SCAN_DIRECTORY,
|
||||
"Scans a directory for compatible files and add them to the collection.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SCAN_FILE,
|
||||
|
@ -2800,16 +2800,16 @@ MSG_HASH(
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_GAME_SPECIFIC_OPTIONS,
|
||||
"Enable customized core options by default at startup.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_ENABLE,
|
||||
"Shows current core name inside menu.")
|
||||
"Показывать название ядра в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DATABASE_MANAGER,
|
||||
"Просмотр баз данных.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CURSOR_MANAGER,
|
||||
"Просмотр предыдущих запросов.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT,
|
||||
"Captures an image of the screen.")
|
||||
"Сделать скриншот экрана.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CLOSE_CONTENT,
|
||||
"Closes the current content. Any unsaved changes might be lost."
|
||||
"Выход из игры. Все несохраненные файлы возможно пропадут."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_LOAD_STATE,
|
||||
"Load a saved state from the currently selected slot.")
|
||||
|
@ -2827,16 +2827,16 @@ MSG_HASH(MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE,
|
|||
"If a state was overwritten, it will roll back to the previous save state.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS,
|
||||
"Retro Achievements service. For more information, visit http://retroachievements.org"
|
||||
"Сервис Retro Achievements. Для дополнительной информации, посетите страницу http://retroachievements.org"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_ACCOUNTS_LIST,
|
||||
"Manages currently configured accounts."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_META_REWIND,
|
||||
"Manages rewind settings.")
|
||||
"Управление настройками перемотки.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RESTART_CONTENT,
|
||||
"Restarts the content from the beginning.")
|
||||
"Перезапустить игру.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
|
||||
"Saves an override configuration file which will apply for all content loaded with this core. Will take precedence over the main configuration.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
|
||||
|
@ -2877,179 +2877,179 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS,
|
||||
"Cycle the current disk. If the disk is inserted, it will eject the disk. If the disk has not been inserted, it will be inserted. ")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX,
|
||||
"Change the disk index.")
|
||||
"Изменить индекс диска.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS,
|
||||
"Disk image management.")
|
||||
"Управление образа диска.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND,
|
||||
"Select a disk image to insert.")
|
||||
"Выберите образ диска для загрузки.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE,
|
||||
"Makes sure the framerate is capped while inside the menu.")
|
||||
"Убедитесь, что частота кадров ограничена внутри меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_THEME,
|
||||
"Select a different theme for the icon. Changes will take effect after you restart the program.")
|
||||
"Выберите другую тему для значка. Изменения заработают после перезагрузки.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE,
|
||||
"Enable drop shadows for all icons. This will have a minor performance hit.")
|
||||
"Включить тени для всех значков. Это приведет к незначительному нагрузке.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME,
|
||||
"Select a different background color gradient theme.")
|
||||
"Выберите другую тему цветового градиента.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY,
|
||||
"Modify the opacity of the background wallpaper.")
|
||||
"Изменить прозрачность обоев интерфейса.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_MENU_COLOR_THEME,
|
||||
"Select a different background color gradient theme.")
|
||||
"Выберите другую тему цветового градиента.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE,
|
||||
"Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect.")
|
||||
"Выберите анимированный фоновый эффект. Может быть GPU-intensive в зависимости от эффекта. Если производительность не тянет на это, то либо выключите это, либо вернитесь к более простому эффекту.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_FONT,
|
||||
"Select a different main font to be used by the menu.")
|
||||
"Выбрать основной шрифт для меню интерфейса.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES,
|
||||
"Show the image tab inside the main menu.")
|
||||
"Показать вкладку Изображения в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_MUSIC,
|
||||
"Show the music tab inside the main menu.")
|
||||
"Показать вкладку Музыка в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_VIDEO,
|
||||
"Show the video tab inside the main menu.")
|
||||
"Показать вкладку Видео в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_NETPLAY,
|
||||
"Show the netplay tab inside the main menu.")
|
||||
"Показать вкладку Сетевая игра в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_SETTINGS,
|
||||
"Show the settings tab inside the main menu.")
|
||||
"Показать вкладку Настройка в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_HISTORY,
|
||||
"Show the recent history tab inside the main menu.")
|
||||
"Показать вкладку История просмотров в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_XMB_SHOW_ADD,
|
||||
"Show the import content tab inside the main menu.")
|
||||
"Показать вкладку Импорт контента в главном меню.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RGUI_SHOW_START_SCREEN,
|
||||
"Show startup screen in menu. This is automatically set to false after the program starts for the first time.")
|
||||
"Показать начальный экран. Этот параметре автомотически выключается после первого включения.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_MENU_HEADER_OPACITY,
|
||||
"Modify the opacity of the header graphic.")
|
||||
"Изменение прозрачность графического заголовка.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_MENU_FOOTER_OPACITY,
|
||||
"Modify the opacity of the footer graphic.")
|
||||
"Изменение прозрачности графика нижнего колонтитула.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DPI_OVERRIDE_ENABLE,
|
||||
"The menu normally scales itself dynamically. If you want to set a specific scaling size instead, enable this.")
|
||||
"Меню интерфейса обычно сам подстраивается. Если вы хотите изменить DPI под свой вкус, то включите эту функцию.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_DPI_OVERRIDE_VALUE,
|
||||
"Set the custom scaling size here. NOTE: You have to enable 'DPI Override' for this scaling size to take effect.")
|
||||
"Установить свой размер масштабирования. ПРИМЕЧАНИЕ: Вы должны включить 'DPI Override', чтобы эти изменения заработали.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_ASSETS_DIRECTORY,
|
||||
"Save all downloaded files to this directory.")
|
||||
"Сохранять все закаченные файлы в этой папке.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_REMAPPING_DIRECTORY,
|
||||
"Save all remapped controls to this directory.")
|
||||
"Сохранить все переназначенные элементы управления в этой папке.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_LIBRETRO_DIR_PATH,
|
||||
"Directory where the program searches for content/cores.")
|
||||
"путь к папке, в котором программа ищет контент / ядра.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH,
|
||||
"Application/core information files are stored here.")
|
||||
"Здесь хранятся файлы информации контента / ядра.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR,
|
||||
"If a joypad is plugged in, that joypad will be autoconfigured if a config file corresponding to it is present inside this directory.")
|
||||
"Если игровой джойстик подключен, то джойстик будет автомотически подстроен, если существует одходящий файл авто-конфигурации.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY,
|
||||
"Save all collections to this directory.")
|
||||
"Сохранять все коллекции в выбранной папке.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CACHE_DIRECTORY,
|
||||
"If set to a directory, content which is temporarily extracted (e.g. from archives) will be extracted to this directory."
|
||||
"Если выбрана папка, содержимое, которое временно извлечено (например, из архивов), будет извлечено в этой папке."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY,
|
||||
"Saved queries are stored to this directory.")
|
||||
"Выберите папку, где хранятся saved queries..")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY,
|
||||
"Databases are stored to this directory."
|
||||
"Выберите папку для хранения базы данных."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_ASSETS_DIRECTORY,
|
||||
"This location is queried by default when menu interfaces try to look for loadable assets, etc."
|
||||
"Это местоположение запрашивается по умолчанию, когда интерфейсы меню пытаются найти загружаемые активы и т.д."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SAVEFILE_DIRECTORY,
|
||||
"Save all save files to this directory. If not set, will try to save inside the content file's working directory.")
|
||||
"Выберите папку для сохрания всех save files. Если путь к папку не задано, попробуйте сохранить внутри рабочего каталога файла содержимого.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SAVESTATE_DIRECTORY,
|
||||
"Save all save states to this directory. If not set, will try to save inside the content file's working directory.")
|
||||
"Выберите папку для сохрания всех save states. Если путь к папку не задано, попробуйте сохранить внутри рабочего каталога файла содержимого.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SCREENSHOT_DIRECTORY,
|
||||
"Directory to dump screenshots to.")
|
||||
"Выберите папку, где будут сохраняться ваши скриншоты.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY,
|
||||
"Defines a directory where overlays are kept for easy access.")
|
||||
"Выберите папку, где будут находиться ваши наложения (Overlays).")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH,
|
||||
"Cheat files are kept here."
|
||||
"Выберите папку, где будут находиться ваши чит-файлы."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR,
|
||||
"Directory where audio DSP filter files are kept."
|
||||
"Выберите папку, где будут находиться файлы звуковых фильтр DSP."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_FILTER_DIR,
|
||||
"Directory where CPU-based video filter files are kept."
|
||||
"Выберите папку, где будут находиться GPU-based фильтры."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_DIR,
|
||||
"Defines a directory where GPU-based video shader files are kept for easy access.")
|
||||
"Выберите папку, где будут находиться GPU-based шейдеры.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RECORDING_OUTPUT_DIRECTORY,
|
||||
"Recordings will be dumped to this directory.")
|
||||
"Выберите папку, где будут сохраняться ваши записи.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RECORDING_CONFIG_DIRECTORY,
|
||||
"Recording configurations will be kept here.")
|
||||
"Выберите папку, где будут находиться ваши записи конфигураций.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_PATH,
|
||||
"Select a different font for onscreen notifications.")
|
||||
"Выберите шрифт для красивого отображения оповещений.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SHADER_APPLY_CHANGES,
|
||||
"Changes to the shader configuration will take effect immediately. Use this if you changed the amount of shader passes, filtering, FBO scale, etc.")
|
||||
"Изменения конфигурации шейдера вступят в силу немедленно. Используйте это, если вы изменили количество используемых шейдеров, фильтров, шкалу и т.д.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_SHADER_NUM_PASSES,
|
||||
"Increase or decrease the amount of shader pipeline passes. You can bind a separate shader to each pipeline pass and configure its scale and filtering."
|
||||
"Повышайте или уменьшайте кол-во используемых шейдеров pipeline. Вы можете привязать отдельный шейдер к каждому pipeline конвейера и настроить его масштаб и фильтрацию."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET,
|
||||
"Load a shader preset. The shader pipeline will be automatically set-up.")
|
||||
"Выберите предустановленный шейдер. Pipeline шейдера будет автоматически настроен.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS,
|
||||
"Save the current shader settings as a new shader preset.")
|
||||
"Сохраните текущие настройки шейдера в качестве нового предустановленного шейдера.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE,
|
||||
"Save the current shader settings as the default settings for this application/core.")
|
||||
"Сохраните текущие настройки шейдера как настройки по умолчанию для этого игры / ядра.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME,
|
||||
"Save the current shader settings as the default settings for the content.")
|
||||
"Сохраните текущие настройки шейдера в качестве настроек по умолчанию для игры.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS,
|
||||
"Modifies the current shader directly. Changes will not be saved to the preset file.")
|
||||
"Изменяет текущий шейдер напрямую. Изменения не будут сохранены в файл предварительной настройки.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_PARAMETERS,
|
||||
"Modifies the shader preset itself currently used in the menu.")
|
||||
"Изменяет настройки шейдера, которая в настоящее время используется в меню.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEAT_NUM_PASSES,
|
||||
"Increase or decrease the amount of cheats."
|
||||
"Увеличение или уменьшение кол-во используемых чит-кодов."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES,
|
||||
"Cheat changes will take effect immediately.")
|
||||
"Изменения чит-кодов заработают сиюсекундно.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD,
|
||||
"Load a cheat file."
|
||||
"Открыть чит-файл."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEAT_FILE_SAVE_AS,
|
||||
"Save current cheats as a save file."
|
||||
"Сохранить ниже указанные чит-коды в чит-файл."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SETTINGS,
|
||||
"Quickly access all relevant in-game settings.")
|
||||
"Быстрый доступ к настройкам игры/ядра (работает, когда запустится любая игра).")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_INFORMATION,
|
||||
"View information pertaining to the application/core.")
|
||||
"Просмотреть полную информаию о ядре + удалить ядро.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO,
|
||||
"Floating point value for video aspect ratio (width / height), used if the Aspect Ratio is set to 'Config'.")
|
||||
"Значение плавающей точки для соотношения сторон видео (ширина / высота), используется, если для параметра «Соотношение сторон» установлено значение «Config».")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT,
|
||||
"Custom viewport height that is used if the Aspect Ratio is set to 'Custom'.")
|
||||
"Настройка высоты окна экрана, которая используется, если для параметра «Соотношение сторон» установлено значение «Пользовательский».")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||
"Custom viewport width that is used if the Aspect Ratio is set to 'Custom'.")
|
||||
"Настройка ширины окна экрана, которая используется, если для параметра «Соотношение сторон» установлено значение «Пользовательский».")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X,
|
||||
"Custom viewport offset used for defining the X-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then.")
|
||||
"Настройка смещение окна экрана для определения положения оси X окна просмотра. Она игнорируются, если включена функция «Целочисленная шкала». Оно будет автоматически центрирован.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||
"Custom viewport offset used for defining the Y-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then.")
|
||||
"Настройка смещение окна экрана для определения положения оси Y окна просмотра. Она игнорируются, если включена функция «Целочисленная шкала». Оно будет автоматически центрирован.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER,
|
||||
"Use Relay Server")
|
||||
"Использовать релейный сервер")
|
||||
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.")
|
||||
"Передать сетевые соединения через сервер «man-in-the-midle». Будет полезным, если хост находится за брандмауэром или имеет проблемы NAT / UPnP.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER,
|
||||
"Add to mixer")
|
||||
"Добавить в микшер")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
"Добавить в микшер")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
"Фильтрировать по текущему ядру")
|
||||
MSG_HASH(
|
||||
MSG_AUDIO_MIXER_VOLUME,
|
||||
"Global audio mixer volume"
|
||||
"Общиий уровень громкости звукового микшера"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME,
|
||||
"Global audio mixer volume (in dB). 0 dB is normal volume, and no gain is applied."
|
||||
"Громкость звукового микшера (в дБ). По умолчанию стоит 0 дБ и коэффициент усиления не применяется."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME,
|
||||
"Audio Mixer Volume Level (dB)"
|
||||
"Уровень громкости звукового микшера (dB)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_MUTE,
|
||||
"Audio Mixer Mute"
|
||||
"Отключить звуковой микшер"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE,
|
||||
"Mute/unmute mixer audio.")
|
||||
"Отключить / Включить звуковой микшер.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER,
|
||||
"Показать меню Онлайн-обновление")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER,
|
||||
|
@ -3065,12 +3065,36 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_UPDATER,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER,
|
||||
"Показать/скрыть возможность обновлять ядра (и информационные файлы ядер).")
|
||||
MSG_HASH(MSG_PREPARING_FOR_CONTENT_SCAN,
|
||||
"Preparing for content scan...")
|
||||
"Подготовка к сканированию...")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_DELETE,
|
||||
"Delete core")
|
||||
"Удалить ядро")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_CORE_DELETE,
|
||||
"Remove this core from disk.")
|
||||
"Удаление ядра с устройства.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename the title of the entry.")
|
||||
"Переименовать название игры")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
"Переименовать")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Прозрачность кадра")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Модификация прозрачности кадров.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Избранные")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Любой контент, который вы добавите в «Избранное», появится в этом списке.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Музыка")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Любая музыка, которая была ранее прослушана, появится в этом разделе.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Фотографии")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Любая фотография, которая ранее была просмотрена, появится в этом разделе.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Видео")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Любое видео, которое ранее было просмотрено, появится в этом разделе.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Иконки интерфейса")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Отображать или скрывать иконки интерфейса, отображающиеся в левой части меню.")
|
||||
|
|
|
@ -25,189 +25,200 @@
|
|||
#include "../configuration.h"
|
||||
#include "../verbosity.h"
|
||||
|
||||
int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) {
|
||||
int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
{
|
||||
uint32_t driver_hash = 0;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM)
|
||||
{
|
||||
snprintf(s, len,
|
||||
"TODO/FIXME - Fill in message here."
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
|
||||
msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) {
|
||||
unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
|
||||
msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
|
||||
{
|
||||
unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
|
||||
|
||||
switch (idx) {
|
||||
case RARCH_FAST_FORWARD_KEY:
|
||||
snprintf(s, len,
|
||||
"Toggles between fast-forwarding and \n"
|
||||
"normal speed."
|
||||
);
|
||||
break;
|
||||
case RARCH_FAST_FORWARD_HOLD_KEY:
|
||||
snprintf(s, len,
|
||||
"Hold for fast-forward. \n"
|
||||
" \n"
|
||||
"Releasing button disables fast-forward."
|
||||
);
|
||||
break;
|
||||
case RARCH_PAUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between paused and non-paused state.");
|
||||
break;
|
||||
case RARCH_FRAMEADVANCE:
|
||||
snprintf(s, len,
|
||||
"Frame advance when content is paused.");
|
||||
break;
|
||||
case RARCH_SHADER_NEXT:
|
||||
snprintf(s, len,
|
||||
"Applies next shader in directory.");
|
||||
break;
|
||||
case RARCH_SHADER_PREV:
|
||||
snprintf(s, len,
|
||||
"Applies previous shader in directory.");
|
||||
break;
|
||||
case RARCH_CHEAT_INDEX_PLUS:
|
||||
case RARCH_CHEAT_INDEX_MINUS:
|
||||
case RARCH_CHEAT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Cheats.");
|
||||
break;
|
||||
case RARCH_RESET:
|
||||
snprintf(s, len,
|
||||
"Reset the content.");
|
||||
break;
|
||||
case RARCH_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Take screenshot.");
|
||||
break;
|
||||
case RARCH_MUTE:
|
||||
snprintf(s, len,
|
||||
"Mute/unmute audio.");
|
||||
break;
|
||||
case RARCH_OSK:
|
||||
snprintf(s, len,
|
||||
"Toggles onscreen keyboard.");
|
||||
break;
|
||||
case RARCH_NETPLAY_FLIP:
|
||||
snprintf(s, len,
|
||||
"Netplay flip users.");
|
||||
break;
|
||||
case RARCH_NETPLAY_GAME_WATCH:
|
||||
snprintf(s, len,
|
||||
"Netplay toggle play/spectate mode.");
|
||||
break;
|
||||
case RARCH_SLOWMOTION:
|
||||
snprintf(s, len,
|
||||
"Hold for slowmotion.");
|
||||
break;
|
||||
case RARCH_ENABLE_HOTKEY:
|
||||
snprintf(s, len,
|
||||
"Enable other hotkeys. \n"
|
||||
" \n"
|
||||
"If this hotkey is bound to either\n"
|
||||
"a keyboard, joybutton or joyaxis, \n"
|
||||
"all other hotkeys will be enabled only \n"
|
||||
"if this one is held at the same time. \n"
|
||||
" \n"
|
||||
"Alternatively, all hotkeys for keyboard \n"
|
||||
"could be disabled by the user.");
|
||||
break;
|
||||
case RARCH_VOLUME_UP:
|
||||
snprintf(s, len,
|
||||
"Increases audio volume.");
|
||||
break;
|
||||
case RARCH_VOLUME_DOWN:
|
||||
snprintf(s, len,
|
||||
"Decreases audio volume.");
|
||||
break;
|
||||
case RARCH_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Switches to next overlay. Wraps around.");
|
||||
break;
|
||||
case RARCH_DISK_EJECT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles eject for disks. \n"
|
||||
" \n"
|
||||
"Used for multiple-disk content. ");
|
||||
break;
|
||||
case RARCH_DISK_NEXT:
|
||||
case RARCH_DISK_PREV:
|
||||
snprintf(s, len,
|
||||
"Cycles through disk images. Use after ejecting. \n"
|
||||
" \n"
|
||||
"Complete by toggling eject again.");
|
||||
break;
|
||||
case RARCH_GRAB_MOUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles mouse grab. \n"
|
||||
" \n"
|
||||
"When mouse is grabbed, RetroArch hides the \n"
|
||||
"mouse, and keeps the mouse pointer inside \n"
|
||||
"the window to allow relative mouse input to \n"
|
||||
"work better.");
|
||||
break;
|
||||
case RARCH_GAME_FOCUS_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles game focus.\n"
|
||||
" \n"
|
||||
"When a game has focus, RetroArch will both disable \n"
|
||||
"hotkeys and keep/warp the mouse pointer inside the window.");
|
||||
break;
|
||||
case RARCH_MENU_TOGGLE:
|
||||
snprintf(s, len, "Toggles menu.");
|
||||
break;
|
||||
case RARCH_LOAD_STATE_KEY:
|
||||
snprintf(s, len,
|
||||
"Loads state.");
|
||||
break;
|
||||
case RARCH_FULLSCREEN_TOGGLE_KEY:
|
||||
snprintf(s, len,
|
||||
"Toggles fullscreen.");
|
||||
break;
|
||||
case RARCH_QUIT_KEY:
|
||||
snprintf(s, len,
|
||||
"Key to exit RetroArch cleanly. \n"
|
||||
" \n"
|
||||
"Killing it in any hard way (SIGKILL, etc.) will \n"
|
||||
"terminate RetroArch without saving RAM, etc."
|
||||
switch (idx)
|
||||
{
|
||||
case RARCH_FAST_FORWARD_KEY:
|
||||
snprintf(s, len,
|
||||
"Toggles between fast-forwarding and \n"
|
||||
"normal speed."
|
||||
);
|
||||
break;
|
||||
case RARCH_FAST_FORWARD_HOLD_KEY:
|
||||
snprintf(s, len,
|
||||
"Hold for fast-forward. \n"
|
||||
" \n"
|
||||
"Releasing button disables fast-forward."
|
||||
);
|
||||
break;
|
||||
case RARCH_PAUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between paused and non-paused state.");
|
||||
break;
|
||||
case RARCH_FRAMEADVANCE:
|
||||
snprintf(s, len,
|
||||
"Frame advance when content is paused.");
|
||||
break;
|
||||
case RARCH_SHADER_NEXT:
|
||||
snprintf(s, len,
|
||||
"Applies next shader in directory.");
|
||||
break;
|
||||
case RARCH_SHADER_PREV:
|
||||
snprintf(s, len,
|
||||
"Applies previous shader in directory.");
|
||||
break;
|
||||
case RARCH_CHEAT_INDEX_PLUS:
|
||||
case RARCH_CHEAT_INDEX_MINUS:
|
||||
case RARCH_CHEAT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Cheats.");
|
||||
break;
|
||||
case RARCH_RESET:
|
||||
snprintf(s, len,
|
||||
"Reset the content.");
|
||||
break;
|
||||
case RARCH_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Take screenshot.");
|
||||
break;
|
||||
case RARCH_MUTE:
|
||||
snprintf(s, len,
|
||||
"Mute/unmute audio.");
|
||||
break;
|
||||
case RARCH_OSK:
|
||||
snprintf(s, len,
|
||||
"Toggles onscreen keyboard.");
|
||||
break;
|
||||
case RARCH_NETPLAY_FLIP:
|
||||
snprintf(s, len,
|
||||
"Netplay flip users.");
|
||||
break;
|
||||
case RARCH_NETPLAY_GAME_WATCH:
|
||||
snprintf(s, len,
|
||||
"Netplay toggle play/spectate mode.");
|
||||
break;
|
||||
case RARCH_SLOWMOTION:
|
||||
snprintf(s, len,
|
||||
"Hold for slowmotion.");
|
||||
break;
|
||||
case RARCH_ENABLE_HOTKEY:
|
||||
snprintf(s, len,
|
||||
"Enable other hotkeys. \n"
|
||||
" \n"
|
||||
"If this hotkey is bound to either\n"
|
||||
"a keyboard, joybutton or joyaxis, \n"
|
||||
"all other hotkeys will be enabled only \n"
|
||||
"if this one is held at the same time. \n"
|
||||
" \n"
|
||||
"Alternatively, all hotkeys for keyboard \n"
|
||||
"could be disabled by the user.");
|
||||
break;
|
||||
case RARCH_VOLUME_UP:
|
||||
snprintf(s, len,
|
||||
"Increases audio volume.");
|
||||
break;
|
||||
case RARCH_VOLUME_DOWN:
|
||||
snprintf(s, len,
|
||||
"Decreases audio volume.");
|
||||
break;
|
||||
case RARCH_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Switches to next overlay. Wraps around.");
|
||||
break;
|
||||
case RARCH_DISK_EJECT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles eject for disks. \n"
|
||||
" \n"
|
||||
"Used for multiple-disk content. ");
|
||||
break;
|
||||
case RARCH_DISK_NEXT:
|
||||
case RARCH_DISK_PREV:
|
||||
snprintf(s, len,
|
||||
"Cycles through disk images. Use after ejecting. \n"
|
||||
" \n"
|
||||
"Complete by toggling eject again.");
|
||||
break;
|
||||
case RARCH_GRAB_MOUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles mouse grab. \n"
|
||||
" \n"
|
||||
"When mouse is grabbed, RetroArch hides the \n"
|
||||
"mouse, and keeps the mouse pointer inside \n"
|
||||
"the window to allow relative mouse input to \n"
|
||||
"work better.");
|
||||
break;
|
||||
case RARCH_GAME_FOCUS_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles game focus.\n"
|
||||
" \n"
|
||||
"When a game has focus, RetroArch will both disable \n"
|
||||
"hotkeys and keep/warp the mouse pointer inside the window.");
|
||||
break;
|
||||
case RARCH_MENU_TOGGLE:
|
||||
snprintf(s, len, "Toggles menu.");
|
||||
break;
|
||||
case RARCH_LOAD_STATE_KEY:
|
||||
snprintf(s, len,
|
||||
"Loads state.");
|
||||
break;
|
||||
case RARCH_FULLSCREEN_TOGGLE_KEY:
|
||||
snprintf(s, len,
|
||||
"Toggles fullscreen.");
|
||||
break;
|
||||
case RARCH_QUIT_KEY:
|
||||
snprintf(s, len,
|
||||
"Key to exit RetroArch cleanly. \n"
|
||||
" \n"
|
||||
"Killing it in any hard way (SIGKILL, etc.) will \n"
|
||||
"terminate RetroArch without saving RAM, etc."
|
||||
#ifdef __unix__
|
||||
"\nOn Unix-likes, SIGINT/SIGTERM allows a clean \n"
|
||||
"deinitialization."
|
||||
"\nOn Unix-likes, SIGINT/SIGTERM allows a clean \n"
|
||||
"deinitialization."
|
||||
#endif
|
||||
"");
|
||||
break;
|
||||
case RARCH_STATE_SLOT_PLUS:
|
||||
case RARCH_STATE_SLOT_MINUS:
|
||||
snprintf(s, len,
|
||||
"State slots. \n"
|
||||
" \n"
|
||||
"With slot set to 0, save state name is \n"
|
||||
"*.state (or whatever defined on commandline). \n"
|
||||
" \n"
|
||||
"When slot is not 0, path will be <path><d>, \n"
|
||||
"where <d> is slot number.");
|
||||
break;
|
||||
case RARCH_SAVE_STATE_KEY:
|
||||
snprintf(s, len,
|
||||
"Saves state.");
|
||||
break;
|
||||
case RARCH_REWIND:
|
||||
snprintf(s, len,
|
||||
"Hold button down to rewind. \n"
|
||||
" \n"
|
||||
"Rewinding must be enabled.");
|
||||
break;
|
||||
case RARCH_MOVIE_RECORD_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between recording and not.");
|
||||
break;
|
||||
default:
|
||||
if (string_is_empty(s))
|
||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
|
||||
break;
|
||||
}
|
||||
"");
|
||||
break;
|
||||
case RARCH_STATE_SLOT_PLUS:
|
||||
case RARCH_STATE_SLOT_MINUS:
|
||||
snprintf(s, len,
|
||||
"State slots. \n"
|
||||
" \n"
|
||||
"With slot set to 0, save state name is \n"
|
||||
"*.state (or whatever defined on commandline). \n"
|
||||
" \n"
|
||||
"When slot is not 0, path will be <path><d>, \n"
|
||||
"where <d> is slot number.");
|
||||
break;
|
||||
case RARCH_SAVE_STATE_KEY:
|
||||
snprintf(s, len,
|
||||
"Saves state.");
|
||||
break;
|
||||
case RARCH_REWIND:
|
||||
snprintf(s, len,
|
||||
"Hold button down to rewind. \n"
|
||||
" \n"
|
||||
"Rewinding must be enabled.");
|
||||
break;
|
||||
case RARCH_MOVIE_RECORD_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between recording and not.");
|
||||
break;
|
||||
default:
|
||||
if (string_is_empty(s))
|
||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (msg) {
|
||||
switch (msg)
|
||||
{
|
||||
case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
|
||||
snprintf(s, len, "Login details for your \n"
|
||||
"Retro Achievements account. \n"
|
||||
|
|
|
@ -1840,7 +1840,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY,
|
|||
MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS,
|
||||
"Search for and connect to netplay hosts on the local network.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST,
|
||||
"Display core, network, and system information.")
|
||||
"Display system information.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_ONLINE_UPDATER,
|
||||
"Download add-ons, components, and content for RetroArch.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_SAMBA_ENABLE,
|
||||
|
@ -1875,6 +1875,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_WIFI_SETTINGS,
|
|||
"Scans for wireless networks and establishes connection.")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_HELP_LIST,
|
||||
"Learn more about how the program works.")
|
||||
MSG_HASH(MSG_ADDED_TO_FAVORITES,
|
||||
"Added to favorites")
|
||||
MSG_HASH(MSG_APPENDED_DISK,
|
||||
"Appended disk")
|
||||
MSG_HASH(MSG_APPLICATION_DIR,
|
||||
|
@ -3105,3 +3107,27 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -3045,3 +3045,27 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
|||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Framebuffer Opacity")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
"Modify the opacity of the framebuffer.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES,
|
||||
"Favorites")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES,
|
||||
"Content which you have added to 'Favorites' will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC,
|
||||
"Music")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC,
|
||||
"Music which has been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES,
|
||||
"Image")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES,
|
||||
"Images which have been previously viewed will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO,
|
||||
"Video")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO,
|
||||
"Videos which have been previously played will appear here.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
"Menu Icons")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"Enable/disable the menu icons shown at the lefthand side of the menu entries.")
|
||||
|
|
|
@ -184,7 +184,7 @@ int getopt_long(int argc, char *argv[],
|
|||
if (optind == 0)
|
||||
optind = 1;
|
||||
|
||||
if (argc == 1)
|
||||
if (argc < 2)
|
||||
return -1;
|
||||
|
||||
short_index = find_short_index(&argv[optind]);
|
||||
|
|
|
@ -393,6 +393,8 @@ const char *inet_ntop_compat(int af, const void *src, char *dst, socklen_t cnt)
|
|||
return dst;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return inet_ntop(af, src, dst, cnt);
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -231,6 +231,8 @@ int sthread_detach(sthread_t *thread)
|
|||
*/
|
||||
void sthread_join(sthread_t *thread)
|
||||
{
|
||||
if (!thread)
|
||||
return;
|
||||
#ifdef USE_WIN32_THREADS
|
||||
WaitForSingleObject(thread->thread, INFINITE);
|
||||
CloseHandle(thread->thread);
|
||||
|
|
|
@ -24,6 +24,7 @@ C_CONVERTER_C = \
|
|||
$(LIBRETRO_COMM_DIR)/hash/rhash.c \
|
||||
$(LIBRETRO_COMM_DIR)/compat/compat_fnmatch.c \
|
||||
$(LIBRETRO_COMM_DIR)/string/stdstring.c \
|
||||
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \
|
||||
$(LIBRETRO_COMMON_C) \
|
||||
$(LIBRETRO_COMM_DIR)/compat/compat_strl.c
|
||||
|
||||
|
@ -38,6 +39,7 @@ RARCHDB_TOOL_C = \
|
|||
$(LIBRETRODB_DIR)/libretrodb.c \
|
||||
$(LIBRETRO_COMM_DIR)/compat/compat_fnmatch.c \
|
||||
$(LIBRETRO_COMM_DIR)/string/stdstring.c \
|
||||
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \
|
||||
$(LIBRETRO_COMMON_C) \
|
||||
$(LIBRETRO_COMM_DIR)/compat/compat_strl.c
|
||||
|
||||
|
|
|
@ -821,6 +821,24 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info)
|
|||
DISPLAYLIST_CORES_DETECTED);
|
||||
}
|
||||
|
||||
static int deferred_music_history_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
return general_push(info, PUSH_DEFAULT, DISPLAYLIST_MUSIC_HISTORY);
|
||||
}
|
||||
|
||||
static int deferred_image_history_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
return general_push(info, PUSH_DEFAULT, DISPLAYLIST_IMAGES_HISTORY);
|
||||
}
|
||||
|
||||
static int deferred_video_history_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
return general_push(info, PUSH_DEFAULT, DISPLAYLIST_VIDEO_HISTORY);
|
||||
}
|
||||
|
||||
static int deferred_archive_open_detect_core(menu_displaylist_info_t *info)
|
||||
{
|
||||
return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE,
|
||||
|
@ -857,6 +875,11 @@ static int deferred_push_content_collection_list(menu_displaylist_info_t *info)
|
|||
return deferred_push_dlist(info, DISPLAYLIST_DATABASE_PLAYLISTS);
|
||||
}
|
||||
|
||||
static int deferred_push_favorites_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
return general_push(info, PUSH_DEFAULT, DISPLAYLIST_FAVORITES);
|
||||
}
|
||||
|
||||
static int deferred_push_browse_url_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
return deferred_push_dlist(info, DISPLAYLIST_BROWSE_URL_LIST);
|
||||
|
@ -941,131 +964,131 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
menu_file_list_cbs_t *cbs,
|
||||
const char *label, uint32_t label_hash)
|
||||
{
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST)))
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_favorites_list);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_start);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_configuration_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_saving_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_logging_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_frame_throttle_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_rewind_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_display_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_notifications_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_overlay_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_file_browser_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_views_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_settings_list);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_user_interface_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_retro_achievements_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_updater_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_wifi_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_lakka_services_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_user_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_directory_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_privacy_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST)))
|
||||
{
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_list);
|
||||
|
@ -1073,19 +1096,38 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST)))
|
||||
{
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_subdir_list);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC)))
|
||||
else if (
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_music_list);
|
||||
return 0;
|
||||
}
|
||||
if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL)))
|
||||
else if (
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_music_history_list);
|
||||
return 0;
|
||||
}
|
||||
else if (
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_image_history_list);
|
||||
return 0;
|
||||
}
|
||||
else if (
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_video_history_list);
|
||||
return 0;
|
||||
}
|
||||
else if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_rdb_entry_detail);
|
||||
}
|
||||
|
@ -1099,6 +1141,110 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_netplay_sublist);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_settings_list);
|
||||
}
|
||||
#ifdef HAVE_NETWORKING
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_updater_list);
|
||||
}
|
||||
#endif
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_driver_settings_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_settings_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_AUDIO_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_audio_settings_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CORE_INFORMATION)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_information);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_SYSTEM_INFORMATION)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_system_information);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CORE_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_history_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_options);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_NETWORK_INFORMATION)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_information);
|
||||
}
|
||||
#ifdef HAVE_NETWORKING
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_thumbnails_updater_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_list);
|
||||
}
|
||||
#endif
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_ONLINE_UPDATER)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_options);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_HELP_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_help);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_INFORMATION_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_information_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_SHADER_OPTIONS)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_shader_options);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_BINDS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_user_binds_list);
|
||||
}
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_hotkey_binds_list);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
|
@ -1114,9 +1260,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_playlist_settings_list);
|
||||
break;
|
||||
|
@ -1154,11 +1297,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_subdir_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_CORE_UPDATER_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_updater_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST:
|
||||
|
@ -1287,12 +1425,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cursor_manager_list_deferred_query_rdb_entry_releaseyear);
|
||||
break;
|
||||
#endif
|
||||
case MENU_ENUM_LABEL_CORE_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_information);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SYSTEM_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_system_information);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_NETWORK_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_information);
|
||||
break;
|
||||
|
@ -1404,36 +1536,18 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
{
|
||||
switch (label_hash)
|
||||
{
|
||||
case MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST:
|
||||
case MENU_LABEL_SETTINGS: /* TODO/FIXME */
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_settings);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST: /* TODO/FIXME */
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_configurations_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_USER_BINDS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_user_binds_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_ACCOUNTS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_DRIVER_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_driver_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_VIDEO_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_AUDIO_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_audio_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_playlist_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_RECORDING_SETTINGS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_recording_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_hotkey_binds_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_cheevos_list);
|
||||
break;
|
||||
|
@ -1449,29 +1563,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_LABEL_DEFERRED_ARCHIVE_OPEN:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_archive_open);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_CORE_UPDATER_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_updater_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_THUMBNAILS_UPDATER_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_thumbnails_updater_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_LAKKA_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_lakka_list);
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_LOAD_CONTENT_HISTORY:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_history_list);
|
||||
break;
|
||||
case MENU_LABEL_DATABASE_MANAGER_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_database_manager_list);
|
||||
break;
|
||||
|
@ -1487,12 +1583,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_LABEL_RECORD_CONFIG:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_record_configfile);
|
||||
break;
|
||||
case MENU_LABEL_SHADER_OPTIONS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_shader_options);
|
||||
break;
|
||||
case MENU_LABEL_ONLINE_UPDATER:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_options);
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_netplay);
|
||||
break;
|
||||
|
@ -1505,15 +1595,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_LABEL_LOAD_CONTENT_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_load_content_list);
|
||||
break;
|
||||
case MENU_LABEL_INFORMATION_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_information_list);
|
||||
break;
|
||||
case MENU_LABEL_MANAGEMENT:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_management_options);
|
||||
break;
|
||||
case MENU_LABEL_HELP_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_help);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_CORE_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_list_deferred);
|
||||
break;
|
||||
|
@ -1579,15 +1663,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cursor_manager_list_deferred_query_rdb_entry_releaseyear);
|
||||
break;
|
||||
#endif
|
||||
case MENU_LABEL_CORE_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_information);
|
||||
break;
|
||||
case MENU_LABEL_SYSTEM_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_system_information);
|
||||
break;
|
||||
case MENU_LABEL_NETWORK_INFORMATION:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_information);
|
||||
break;
|
||||
case MENU_LABEL_ACHIEVEMENT_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list);
|
||||
break;
|
||||
|
@ -1606,21 +1681,12 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
|||
case MENU_LABEL_VIDEO_SHADER_PARAMETERS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_shader_parameters);
|
||||
break;
|
||||
case MENU_LABEL_SETTINGS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_settings);
|
||||
break;
|
||||
case MENU_LABEL_CORE_OPTIONS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_options);
|
||||
break;
|
||||
case MENU_LABEL_CORE_CHEAT_OPTIONS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_cheat_options);
|
||||
break;
|
||||
case MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_input_remapping_options);
|
||||
break;
|
||||
case MENU_LABEL_CORE_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_list);
|
||||
break;
|
||||
case MENU_LABEL_CONTENT_COLLECTION_LIST:
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_content_collection_list);
|
||||
break;
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
cbs->action_info_ident = #name;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
#include "../../network/netplay/netplay_discovery.h"
|
||||
#endif
|
||||
|
||||
static int action_info_default(unsigned type, const char *label)
|
||||
{
|
||||
menu_displaylist_info_t info = {0};
|
||||
|
@ -60,8 +64,8 @@ static int action_info_cheevos(unsigned type, const char *label)
|
|||
menu_dialog_set_current_id(new_id);
|
||||
|
||||
return generic_action_ok_help(NULL, label, new_id, 0, 0,
|
||||
MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION,
|
||||
MENU_DIALOG_HELP_CHEEVOS_DESCRIPTION);
|
||||
MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION,
|
||||
MENU_DIALOG_HELP_CHEEVOS_DESCRIPTION);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -72,7 +76,8 @@ int menu_cbs_init_bind_info(menu_file_list_cbs_t *cbs,
|
|||
return -1;
|
||||
|
||||
#ifdef HAVE_CHEEVOS
|
||||
if ((type >= MENU_SETTINGS_CHEEVOS_START))
|
||||
if ((type >= MENU_SETTINGS_CHEEVOS_START) &&
|
||||
(type < MENU_SETTINGS_NETPLAY_ROOMS_START))
|
||||
{
|
||||
BIND_ACTION_INFO(cbs, action_info_cheevos);
|
||||
return 0;
|
||||
|
|
|
@ -35,55 +35,18 @@ static int action_bind_label_generic(
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int action_bind_label_information(
|
||||
file_list_t *list,
|
||||
unsigned type, unsigned i,
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INFORMATION), len);
|
||||
return 0;
|
||||
#define fill_label_macro(func, lbl) \
|
||||
static int (func)(file_list_t *list, unsigned type, unsigned i, const char *label, const char *path, char *s, size_t len) \
|
||||
{ \
|
||||
strlcpy(s, msg_hash_to_str(lbl), len); \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
static int action_bind_label_internal_memory(
|
||||
file_list_t *list,
|
||||
unsigned type, unsigned i,
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
strlcpy(s, msg_hash_to_str(MSG_INTERNAL_STORAGE), len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_bind_label_removable_storage(
|
||||
file_list_t *list,
|
||||
unsigned type, unsigned i,
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
strlcpy(s, msg_hash_to_str(MSG_REMOVABLE_STORAGE), len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_bind_label_external_application_dir(
|
||||
file_list_t *list,
|
||||
unsigned type, unsigned i,
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
strlcpy(s, msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_bind_label_application_dir(
|
||||
file_list_t *list,
|
||||
unsigned type, unsigned i,
|
||||
const char *label, const char *path,
|
||||
char *s, size_t len)
|
||||
{
|
||||
strlcpy(s, msg_hash_to_str(MSG_APPLICATION_DIR), len);
|
||||
return 0;
|
||||
}
|
||||
fill_label_macro(action_bind_label_information, MENU_ENUM_LABEL_VALUE_INFORMATION)
|
||||
fill_label_macro(action_bind_label_internal_memory, MSG_INTERNAL_STORAGE)
|
||||
fill_label_macro(action_bind_label_removable_storage, MSG_REMOVABLE_STORAGE)
|
||||
fill_label_macro(action_bind_label_external_application_dir, MSG_EXTERNAL_APPLICATION_DIR)
|
||||
fill_label_macro(action_bind_label_application_dir, MSG_APPLICATION_DIR)
|
||||
|
||||
static int action_bind_label_playlist_collection_entry(
|
||||
file_list_t *list,
|
||||
|
|
|
@ -159,8 +159,6 @@ static int action_left_mainmenu(unsigned type, const char *label,
|
|||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
menu_navigation_set_selection(0);
|
||||
|
||||
if ((list_info.selection != 0)
|
||||
|| settings->bools.menu_navigation_wraparound_enable)
|
||||
push_list = 1;
|
||||
|
|
|
@ -159,6 +159,42 @@ int generic_action_ok_displaylist_push(const char *path,
|
|||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_FAVORITES_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = label;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_IMAGES_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = label;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_MUSIC_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = label;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_VIDEO_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = label;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_USER_BINDS_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
|
@ -334,6 +370,7 @@ int generic_action_ok_displaylist_push(const char *path,
|
|||
break;
|
||||
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
|
||||
filebrowser_clear_type();
|
||||
filebrowser_set_type(FILEBROWSER_APPEND_IMAGE);
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = settings->paths.directory_menu_content;
|
||||
|
@ -943,8 +980,10 @@ static bool menu_content_find_first_core(menu_content_ctx_defer_info_t *def_info
|
|||
core_info_get_current_core((core_info_t**)&info);
|
||||
if (info)
|
||||
{
|
||||
#if 0
|
||||
RARCH_LOG("[lobby] use the current core (%s) to load this content...\n",
|
||||
info->path);
|
||||
#endif
|
||||
supported = 1;
|
||||
}
|
||||
}
|
||||
|
@ -2089,7 +2128,6 @@ static int generic_action_ok_remap_file_operation(const char *path,
|
|||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("removing %s", file);
|
||||
if(input_remapping_remove_file(file))
|
||||
{
|
||||
if (action_type == ACTION_OK_REMAP_FILE_REMOVE_CORE)
|
||||
|
@ -3193,6 +3231,10 @@ int (func_name)(const char *path, const char *label, unsigned type, size_t idx,
|
|||
}
|
||||
|
||||
default_action_ok_func(action_ok_browse_url_start, ACTION_OK_DL_BROWSE_URL_START)
|
||||
default_action_ok_func(action_ok_goto_favorites, ACTION_OK_DL_FAVORITES_LIST)
|
||||
default_action_ok_func(action_ok_goto_images, ACTION_OK_DL_IMAGES_LIST)
|
||||
default_action_ok_func(action_ok_goto_video, ACTION_OK_DL_VIDEO_LIST)
|
||||
default_action_ok_func(action_ok_goto_music, ACTION_OK_DL_MUSIC_LIST)
|
||||
default_action_ok_func(action_ok_shader_parameters, ACTION_OK_DL_SHADER_PARAMETERS)
|
||||
default_action_ok_func(action_ok_parent_directory_push, ACTION_OK_DL_PARENT_DIRECTORY_PUSH)
|
||||
default_action_ok_func(action_ok_directory_push, ACTION_OK_DL_DIRECTORY_PUSH)
|
||||
|
@ -3286,10 +3328,12 @@ static int action_ok_netplay_connect_room(const char *path,
|
|||
netplay_room_list[idx - 3].port);
|
||||
}
|
||||
|
||||
#if 0
|
||||
RARCH_LOG("[lobby] connecting to: %s with game: %s/%08x\n",
|
||||
tmp_hostname,
|
||||
netplay_room_list[idx - 3].gamename,
|
||||
netplay_room_list[idx - 3].gamecrc);
|
||||
#endif
|
||||
|
||||
task_push_netplay_crc_scan(netplay_room_list[idx - 3].gamecrc,
|
||||
netplay_room_list[idx - 3].gamename,
|
||||
|
@ -3366,18 +3410,21 @@ static int action_ok_push_content_list(const char *path,
|
|||
static int action_ok_push_scan_file(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
filebrowser_clear_type();
|
||||
return action_ok_push_content_list(path, label, type, idx, entry_idx);
|
||||
settings_t *settings = config_get_ptr();
|
||||
filebrowser_set_type(FILEBROWSER_SCAN_FILE);
|
||||
return generic_action_ok_displaylist_push(path,
|
||||
settings->paths.directory_menu_content, label, type, idx,
|
||||
entry_idx, ACTION_OK_DL_CONTENT_LIST);
|
||||
}
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
struct netplay_host_list *lan_hosts;
|
||||
int lan_room_count;
|
||||
|
||||
void netplay_refresh_rooms_menu(file_list_t *list)
|
||||
{
|
||||
char s[4115];
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, list);
|
||||
|
||||
|
@ -3423,8 +3470,6 @@ void netplay_refresh_rooms_menu(file_list_t *list)
|
|||
|
||||
if (netplay_room_count != 0)
|
||||
{
|
||||
RARCH_LOG ("[lobby] found %d rooms...\n", netplay_room_count);
|
||||
|
||||
for (i = 0; i < netplay_room_count; i++)
|
||||
{
|
||||
char country[PATH_MAX_LENGTH] = {0};
|
||||
|
@ -3456,20 +3501,18 @@ void netplay_refresh_rooms_menu(file_list_t *list)
|
|||
netplay_room_list[i].gamecrc,
|
||||
netplay_room_list[i].timestamp);
|
||||
#endif
|
||||
j+=8;
|
||||
|
||||
snprintf(s, sizeof(s), "%s: %s%s",
|
||||
netplay_room_list[i].lan ? "Local" :
|
||||
(netplay_room_list[i].host_method == NETPLAY_HOST_METHOD_MITM ?
|
||||
"Internet (relay)" : "Internet (direct)"),
|
||||
netplay_room_list[i].nickname, country);
|
||||
|
||||
/*int room_type = netplay_room_list[i].lan ? MENU_ROOM_LAN :
|
||||
(netplay_room_list[i].host_method == NETPLAY_HOST_METHOD_MITM ? MENU_ROOM_MITM : MENU_ROOM); */
|
||||
menu_entries_append_enum(list,
|
||||
s,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM),
|
||||
MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM,
|
||||
MENU_ROOM, 0, 0);
|
||||
MENU_SETTINGS_NETPLAY_ROOMS_START + i, 0, 0);
|
||||
}
|
||||
|
||||
netplay_rooms_free();
|
||||
|
@ -3507,7 +3550,6 @@ static void netplay_refresh_rooms_cb(void *task_data, void *user_data, const cha
|
|||
if (string_is_empty(data->data))
|
||||
{
|
||||
netplay_room_count = 0;
|
||||
RARCH_LOG("[lobby] room list empty\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4127,6 +4169,18 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_VIDEO_FONT_PATH:
|
||||
BIND_ACTION_OK(cbs, action_ok_menu_font);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_FAVORITES:
|
||||
BIND_ACTION_OK(cbs, action_ok_goto_favorites);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_MUSIC:
|
||||
BIND_ACTION_OK(cbs, action_ok_goto_music);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_IMAGES:
|
||||
BIND_ACTION_OK(cbs, action_ok_goto_images);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_VIDEO:
|
||||
BIND_ACTION_OK(cbs, action_ok_goto_video);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_BROWSE_START:
|
||||
BIND_ACTION_OK(cbs, action_ok_browse_url_start);
|
||||
break;
|
||||
|
@ -4523,9 +4577,6 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_LABEL_LOAD_ARCHIVE:
|
||||
BIND_ACTION_OK(cbs, action_ok_load_archive);
|
||||
break;
|
||||
case MENU_LABEL_CUSTOM_BIND_ALL:
|
||||
BIND_ACTION_OK(cbs, action_ok_lookup_setting);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PASS:
|
||||
BIND_ACTION_OK(cbs, action_ok_shader_pass);
|
||||
break;
|
||||
|
@ -4696,19 +4747,23 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
|||
BIND_ACTION_OK(cbs, action_ok_directory_push);
|
||||
break;
|
||||
case FILE_TYPE_CARCHIVE:
|
||||
switch (menu_label_hash)
|
||||
if (filebrowser_get_type() == FILEBROWSER_SCAN_FILE)
|
||||
{
|
||||
case MENU_LABEL_FAVORITES:
|
||||
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core);
|
||||
break;
|
||||
case MENU_LABEL_SCAN_FILE:
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
BIND_ACTION_OK(cbs, action_ok_scan_file);
|
||||
BIND_ACTION_OK(cbs, action_ok_scan_file);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (menu_label_hash)
|
||||
{
|
||||
case MENU_LABEL_FAVORITES:
|
||||
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core);
|
||||
break;
|
||||
default:
|
||||
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FILE_TYPE_CORE:
|
||||
|
@ -4806,15 +4861,16 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
|||
break;
|
||||
case FILE_TYPE_IN_CARCHIVE:
|
||||
case FILE_TYPE_PLAIN:
|
||||
if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
if (filebrowser_get_type() == FILEBROWSER_SCAN_FILE)
|
||||
{
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
BIND_ACTION_OK(cbs, action_ok_scan_file);
|
||||
#endif
|
||||
}
|
||||
else if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
{
|
||||
switch (cbs->enum_idx)
|
||||
{
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
case MENU_ENUM_LABEL_SCAN_FILE:
|
||||
BIND_ACTION_OK(cbs, action_ok_scan_file);
|
||||
break;
|
||||
#endif
|
||||
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
|
||||
case MENU_ENUM_LABEL_FAVORITES:
|
||||
case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE:
|
||||
|
@ -4825,13 +4881,15 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
|||
}
|
||||
else
|
||||
#endif
|
||||
if (filebrowser_get_type() == FILEBROWSER_APPEND_IMAGE)
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_disk_image_append);
|
||||
}
|
||||
else
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_file_load_with_detect_core);
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DISK_IMAGE_APPEND:
|
||||
BIND_ACTION_OK(cbs, action_ok_disk_image_append);
|
||||
break;
|
||||
default:
|
||||
BIND_ACTION_OK(cbs, action_ok_file_load);
|
||||
break;
|
||||
|
@ -4841,11 +4899,6 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
|||
{
|
||||
switch (menu_label_hash)
|
||||
{
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
case MENU_LABEL_SCAN_FILE:
|
||||
BIND_ACTION_OK(cbs, action_ok_scan_file);
|
||||
break;
|
||||
#endif
|
||||
case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
|
||||
case MENU_LABEL_FAVORITES:
|
||||
case MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE:
|
||||
|
@ -4856,13 +4909,15 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
|||
}
|
||||
else
|
||||
#endif
|
||||
if (filebrowser_get_type() == FILEBROWSER_APPEND_IMAGE)
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_disk_image_append);
|
||||
}
|
||||
else
|
||||
{
|
||||
BIND_ACTION_OK(cbs, action_ok_file_load_with_detect_core);
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_DISK_IMAGE_APPEND:
|
||||
BIND_ACTION_OK(cbs, action_ok_disk_image_append);
|
||||
break;
|
||||
default:
|
||||
BIND_ACTION_OK(cbs, action_ok_file_load);
|
||||
break;
|
||||
|
|
|
@ -193,8 +193,6 @@ static int action_right_mainmenu(unsigned type, const char *label,
|
|||
menu_driver_ctl(RARCH_MENU_CTL_LIST_GET_SIZE, &list_horiz_info);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_LIST_GET_SIZE, &list_tabs_info);
|
||||
|
||||
menu_navigation_set_selection(0);
|
||||
|
||||
if ((list_info.selection != (list_horiz_info.size + list_tabs_info.size))
|
||||
|| settings->bools.menu_navigation_wraparound_enable)
|
||||
return action_right_goto_tab();
|
||||
|
|
|
@ -84,6 +84,7 @@ default_sublabel_macro(action_bind_sublabel_fps_show, MENU_
|
|||
default_sublabel_macro(action_bind_sublabel_netplay_settings, MENU_ENUM_SUBLABEL_NETPLAY)
|
||||
default_sublabel_macro(action_bind_sublabel_user_bind_settings, MENU_ENUM_SUBLABEL_INPUT_USER_BINDS)
|
||||
default_sublabel_macro(action_bind_sublabel_input_hotkey_settings, MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS)
|
||||
default_sublabel_macro(action_bind_sublabel_materialui_icons_enable, MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_add_content_list, MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST)
|
||||
default_sublabel_macro(action_bind_sublabel_video_frame_delay, MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY)
|
||||
default_sublabel_macro(action_bind_sublabel_video_black_frame_insertion, MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION)
|
||||
|
@ -234,6 +235,10 @@ default_sublabel_macro(action_bind_sublabel_delete_entry,
|
|||
default_sublabel_macro(action_bind_sublabel_information, MENU_ENUM_SUBLABEL_INFORMATION)
|
||||
default_sublabel_macro(action_bind_sublabel_run, MENU_ENUM_SUBLABEL_RUN)
|
||||
default_sublabel_macro(action_bind_sublabel_add_to_favorites, MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES)
|
||||
default_sublabel_macro(action_bind_sublabel_goto_favorites, MENU_ENUM_SUBLABEL_GOTO_FAVORITES)
|
||||
default_sublabel_macro(action_bind_sublabel_goto_images, MENU_ENUM_SUBLABEL_GOTO_IMAGES)
|
||||
default_sublabel_macro(action_bind_sublabel_goto_music, MENU_ENUM_SUBLABEL_GOTO_MUSIC)
|
||||
default_sublabel_macro(action_bind_sublabel_goto_video, MENU_ENUM_SUBLABEL_GOTO_VIDEO)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_filebrowser_settings, MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_auto_remaps_enable, MENU_ENUM_SUBLABEL_AUTO_REMAPS_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_auto_overrides_enable, MENU_ENUM_SUBLABEL_AUTO_OVERRIDES_ENABLE)
|
||||
|
@ -280,6 +285,7 @@ default_sublabel_macro(action_bind_sublabel_xmb_icon_theme,
|
|||
default_sublabel_macro(action_bind_sublabel_xmb_shadows_enable, MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_color_theme, MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_wallpaper_opacity, MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_framebuffer_opacity, MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_ribbon_enable, MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_font, MENU_ENUM_SUBLABEL_XMB_FONT)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_favorites_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES)
|
||||
|
@ -401,6 +407,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||
{
|
||||
switch (cbs->enum_idx)
|
||||
{
|
||||
case MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_materialui_icons_enable);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_custom_height);
|
||||
break;
|
||||
|
@ -545,6 +554,18 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_XMB_SHOW_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_settings_tab);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_IMAGES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_goto_images);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_MUSIC:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_goto_music);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_VIDEO:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_goto_video);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_GOTO_FAVORITES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_goto_favorites);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_XMB_SHOW_FAVORITES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_favorites_tab);
|
||||
break;
|
||||
|
@ -572,6 +593,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_XMB_RIBBON_ENABLE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_ribbon_enable);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_FRAMEBUFFER_OPACITY:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_framebuffer_opacity);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_wallpaper_opacity);
|
||||
break;
|
||||
|
|
|
@ -136,6 +136,10 @@ default_title_macro(action_get_system_information_list, MENU_ENUM_LABEL_
|
|||
default_title_macro(action_get_network_information_list, MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION)
|
||||
default_title_macro(action_get_settings_list, MENU_ENUM_LABEL_VALUE_SETTINGS)
|
||||
default_title_macro(action_get_title_information_list, MENU_ENUM_LABEL_VALUE_INFORMATION_LIST)
|
||||
default_title_macro(action_get_title_goto_favorites, MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES)
|
||||
default_title_macro(action_get_title_goto_image, MENU_ENUM_LABEL_VALUE_GOTO_IMAGES)
|
||||
default_title_macro(action_get_title_goto_music, MENU_ENUM_LABEL_VALUE_GOTO_MUSIC)
|
||||
default_title_macro(action_get_title_goto_video, MENU_ENUM_LABEL_VALUE_GOTO_VIDEO)
|
||||
|
||||
default_fill_title_macro(action_get_title_disk_image_append, MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND)
|
||||
default_fill_title_macro(action_get_title_cheat_file_load, MENU_ENUM_LABEL_VALUE_CHEAT_FILE)
|
||||
|
@ -324,146 +328,162 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
BIND_ACTION_GET_TITLE(cbs, action_get_core_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_configuration_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_saving_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_logging_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_frame_throttle_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_rewind_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_display_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_notifications_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_overlay_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_menu_views_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_menu_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_user_interface_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_menu_file_browser_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_retro_achievements_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_wifi_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_updater_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_network_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETPLAY_LAN_SCAN_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETPLAY_LAN_SCAN_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_netplay_lan_scan_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_lakka_services_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_user_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_directory_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_privacy_settings_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_download_core_content_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST)))
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_download_core_content_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_goto_favorites);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_goto_image);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_goto_music);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_goto_video);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_driver_settings_list);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_AUDIO_SETTINGS_LIST)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_audio_settings_list);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SYSTEM_INFORMATION)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_system_information_list);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_NETWORK_INFORMATION)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_network_information_list);
|
||||
return 0;
|
||||
}
|
||||
else if (cbs->enum_idx != MSG_UNKNOWN)
|
||||
{
|
||||
switch (cbs->enum_idx)
|
||||
{
|
||||
|
@ -602,12 +622,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_database_manager_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SYSTEM_INFORMATION:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_system_information_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_NETWORK_INFORMATION:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_network_information_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_cursor_manager_list);
|
||||
break;
|
||||
|
@ -674,9 +688,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_input_hotkey_binds_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_driver_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_video_settings_list);
|
||||
break;
|
||||
|
@ -704,9 +715,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_core_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_AUDIO_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_audio_settings_list);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_input_settings_list);
|
||||
break;
|
||||
|
@ -915,12 +923,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_LABEL_DATABASE_MANAGER_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_database_manager_list);
|
||||
break;
|
||||
case MENU_LABEL_SYSTEM_INFORMATION:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_system_information_list);
|
||||
break;
|
||||
case MENU_LABEL_NETWORK_INFORMATION:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_network_information_list);
|
||||
break;
|
||||
case MENU_LABEL_CURSOR_MANAGER_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_cursor_manager_list);
|
||||
break;
|
||||
|
@ -987,15 +989,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
|||
case MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_input_hotkey_binds_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_DRIVER_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_driver_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_VIDEO_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_video_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_AUDIO_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_audio_settings_list);
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_input_settings_list);
|
||||
break;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -163,27 +163,30 @@ static void blit_line(int x, int y,
|
|||
const char *message, uint16_t color)
|
||||
{
|
||||
size_t pitch = menu_display_get_framebuffer_pitch();
|
||||
const uint8_t *font_fb = menu_display_get_font_framebuffer();
|
||||
|
||||
while (!string_is_empty(message))
|
||||
if (font_fb)
|
||||
{
|
||||
unsigned i, j;
|
||||
const uint8_t *font_fb = menu_display_get_font_framebuffer();
|
||||
uint32_t symbol = utf8_walk(&message);
|
||||
|
||||
for (j = 0; j < FONT_HEIGHT; j++)
|
||||
while (!string_is_empty(message))
|
||||
{
|
||||
for (i = 0; i < FONT_WIDTH; i++)
|
||||
unsigned i, j;
|
||||
char symbol = *message++;
|
||||
|
||||
for (j = 0; j < FONT_HEIGHT; j++)
|
||||
{
|
||||
uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7);
|
||||
int offset = (i + j * FONT_WIDTH) >> 3;
|
||||
bool col = (font_fb[FONT_OFFSET(symbol) + offset] & rem);
|
||||
for (i = 0; i < FONT_WIDTH; i++)
|
||||
{
|
||||
uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7);
|
||||
int offset = (i + j * FONT_WIDTH) >> 3;
|
||||
bool col = (font_fb[FONT_OFFSET(symbol) + offset] & rem);
|
||||
|
||||
if (col)
|
||||
rgui_framebuf_data[(y + j) * (pitch >> 1) + (x + i)] = color;
|
||||
if (col)
|
||||
rgui_framebuf_data[(y + j) * (pitch >> 1) + (x + i)] = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
x += FONT_WIDTH_STRIDE;
|
||||
x += FONT_WIDTH_STRIDE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
#include "../menu_driver.h"
|
||||
#include "../menu_animation.h"
|
||||
|
||||
#include "../../core_info.h"
|
||||
#include "../../core.h"
|
||||
#include "../widgets/menu_entry.h"
|
||||
#include "../widgets/menu_list.h"
|
||||
#include "../widgets/menu_input_dialog.h"
|
||||
|
@ -84,7 +86,7 @@ typedef struct
|
|||
float y;
|
||||
uintptr_t icon;
|
||||
uintptr_t content_icon;
|
||||
char fullpath[4096];
|
||||
char *fullpath;
|
||||
} xmb_node_t;
|
||||
|
||||
enum
|
||||
|
@ -126,6 +128,7 @@ enum
|
|||
XMB_TEXTURE_ACHIEVEMENT_LIST,
|
||||
XMB_TEXTURE_SCREENSHOT,
|
||||
XMB_TEXTURE_RELOAD,
|
||||
XMB_TEXTURE_RENAME,
|
||||
XMB_TEXTURE_FILE,
|
||||
XMB_TEXTURE_FOLDER,
|
||||
XMB_TEXTURE_ZIP,
|
||||
|
@ -423,11 +426,24 @@ static xmb_node_t *xmb_alloc_node(void)
|
|||
node->alpha = node->label_alpha = 0;
|
||||
node->zoom = node->x = node->y = 0;
|
||||
node->icon = node->content_icon = 0;
|
||||
node->fullpath[0] = 0;
|
||||
node->fullpath = NULL;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
static void xmb_free_node(xmb_node_t *node)
|
||||
{
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
if (node->fullpath)
|
||||
free(node->fullpath);
|
||||
|
||||
node->fullpath = NULL;
|
||||
|
||||
free(node);
|
||||
}
|
||||
|
||||
/* NOTE: This is faster than memcpy()ing xmb_node_t in most cases
|
||||
* because most nodes have small (less than 200 bytes) fullpath */
|
||||
static xmb_node_t *xmb_copy_node(void *p)
|
||||
|
@ -442,8 +458,7 @@ static xmb_node_t *xmb_copy_node(void *p)
|
|||
new_node->y = old_node->y;
|
||||
new_node->icon = old_node->icon;
|
||||
new_node->content_icon = old_node->content_icon;
|
||||
|
||||
strlcpy(new_node->fullpath, old_node->fullpath, sizeof(old_node->fullpath));
|
||||
new_node->fullpath = old_node->fullpath ? strdup(old_node->fullpath) : NULL;
|
||||
|
||||
return new_node;
|
||||
}
|
||||
|
@ -553,7 +568,7 @@ static void *xmb_list_get_entry(void *data, enum menu_list_type type, unsigned i
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static INLINE float xmb_item_y(xmb_handle_t *xmb, int i, size_t current)
|
||||
static INLINE float xmb_item_y(const xmb_handle_t *xmb, int i, size_t current)
|
||||
{
|
||||
float iy = xmb->icon.spacing.vertical;
|
||||
|
||||
|
@ -944,7 +959,7 @@ static void xmb_update_thumbnail_path(void *data, unsigned i)
|
|||
xmb_node_t *node = (xmb_node_t*)
|
||||
menu_entries_get_userdata_at_offset(selection_buf, i);
|
||||
|
||||
if (node)
|
||||
if (node && node->fullpath)
|
||||
{
|
||||
fill_pathname_join(
|
||||
xmb->thumbnail_file_path,
|
||||
|
@ -1295,7 +1310,7 @@ static void xmb_list_open_old(xmb_handle_t *xmb,
|
|||
entry.target_value = ia;
|
||||
entry.subject = &node->alpha;
|
||||
entry.easing_enum = EASING_OUT_QUAD;
|
||||
entry.tag = -1;
|
||||
entry.tag = (uintptr_t)list;
|
||||
entry.cb = NULL;
|
||||
|
||||
menu_animation_push(&entry);
|
||||
|
@ -1365,7 +1380,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
|||
entry.target_value = ia;
|
||||
entry.subject = &node->alpha;
|
||||
entry.easing_enum = EASING_OUT_QUAD;
|
||||
entry.tag = -1;
|
||||
entry.tag = (uintptr_t)list;
|
||||
entry.cb = NULL;
|
||||
|
||||
menu_animation_push(&entry);
|
||||
|
@ -1396,6 +1411,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
|||
static xmb_node_t *xmb_node_allocate_userdata(xmb_handle_t *xmb, unsigned i)
|
||||
{
|
||||
xmb_node_t *node = xmb_alloc_node();
|
||||
xmb_node_t *tmp;
|
||||
|
||||
if (!node)
|
||||
{
|
||||
|
@ -1412,7 +1428,10 @@ static xmb_node_t *xmb_node_allocate_userdata(xmb_handle_t *xmb, unsigned i)
|
|||
node->zoom = xmb->categories.active.zoom;
|
||||
}
|
||||
|
||||
file_list_free_actiondata(xmb->horizontal_list, i);
|
||||
tmp = (xmb_node_t*)file_list_get_actiondata_at_offset(xmb->horizontal_list, i);
|
||||
|
||||
xmb_free_node(tmp);
|
||||
|
||||
file_list_set_actiondata(xmb->horizontal_list, i, node);
|
||||
|
||||
return node;
|
||||
|
@ -2082,6 +2101,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
|||
return xmb->textures.list[XMB_TEXTURE_CLOSE];
|
||||
case MENU_ENUM_LABEL_RESTART_CONTENT:
|
||||
return xmb->textures.list[XMB_TEXTURE_RELOAD];
|
||||
case MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME:
|
||||
return xmb->textures.list[XMB_TEXTURE_RENAME];
|
||||
case MENU_ENUM_LABEL_RESUME_CONTENT:
|
||||
return xmb->textures.list[XMB_TEXTURE_RESUME];
|
||||
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
|
||||
|
@ -2193,6 +2214,35 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
|||
return xmb->textures.list[XMB_TEXTURE_SUBSETTING];
|
||||
}
|
||||
|
||||
static void xmb_calculate_visible_range(const xmb_handle_t *xmb, unsigned height, size_t list_size, unsigned current, unsigned *first, unsigned *last)
|
||||
{
|
||||
unsigned j;
|
||||
float base_y = xmb->margins.screen.top;
|
||||
|
||||
if (current)
|
||||
{
|
||||
for (j = current; j-- > 0; )
|
||||
{
|
||||
float bottom = xmb_item_y(xmb, j, current) + base_y + xmb->icon.size;
|
||||
|
||||
if (bottom < 0)
|
||||
break;
|
||||
|
||||
*first = j;
|
||||
}
|
||||
}
|
||||
|
||||
for (j = current+1; j < list_size; j++)
|
||||
{
|
||||
float top = xmb_item_y(xmb, j, current) + base_y;
|
||||
|
||||
if (top > height)
|
||||
break;
|
||||
|
||||
*last = j;
|
||||
}
|
||||
}
|
||||
|
||||
static void xmb_draw_items(
|
||||
video_frame_info_t *video_info,
|
||||
menu_display_frame_info_t menu_disp_info,
|
||||
|
@ -2208,6 +2258,7 @@ static void xmb_draw_items(
|
|||
size_t end = 0;
|
||||
uint64_t frame_count = xmb->frame_count;
|
||||
const char *thumb_ident = xmb_thumbnails_ident();
|
||||
unsigned first, last;
|
||||
|
||||
if (!list || !list->size)
|
||||
return;
|
||||
|
@ -2230,11 +2281,24 @@ static void xmb_draw_items(
|
|||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
if (list == xmb->selection_buf_old)
|
||||
{
|
||||
xmb_node_t *node = (xmb_node_t*)
|
||||
menu_entries_get_userdata_at_offset(list, current);
|
||||
|
||||
if ((uint8_t)(255 * node->alpha) == 0)
|
||||
return;
|
||||
|
||||
i = 0;
|
||||
}
|
||||
|
||||
first = i;
|
||||
last = end - 1;
|
||||
|
||||
xmb_calculate_visible_range(xmb, height, end, current, &first, &last);
|
||||
|
||||
menu_display_blend_begin();
|
||||
|
||||
for (; i < end; i++)
|
||||
for (i = first; i <= last; i++)
|
||||
{
|
||||
float icon_x, icon_y, label_offset;
|
||||
menu_animation_ctx_ticker_t ticker;
|
||||
|
@ -2486,8 +2550,15 @@ static void xmb_render(void *data, bool is_idle)
|
|||
int16_t pointer_y = menu_input_pointer_state(MENU_POINTER_Y_AXIS);
|
||||
int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS)
|
||||
+ (xmb->cursor.size/2);
|
||||
unsigned first = 0, last = end;
|
||||
unsigned height;
|
||||
|
||||
for (i = 0; i < end; i++)
|
||||
video_driver_get_size(NULL, &height);
|
||||
|
||||
if (height)
|
||||
xmb_calculate_visible_range(xmb, height, end, selection, &first, &last);
|
||||
|
||||
for (i = first; i <= last; i++)
|
||||
{
|
||||
float item_y1 = xmb->margins.screen.top
|
||||
+ xmb_item_y(xmb, (int)i, selection);
|
||||
|
@ -2614,8 +2685,10 @@ static void xmb_draw_bg(
|
|||
menu_display_draw_gradient(&draw, video_info);
|
||||
|
||||
{
|
||||
bool add_opacity = false;
|
||||
draw.texture = texture;
|
||||
float override_opacity = video_info->menu_wallpaper_opacity;
|
||||
bool add_opacity = false;
|
||||
|
||||
draw.texture = texture;
|
||||
menu_display_set_alpha(draw.color, coord_white[3]);
|
||||
|
||||
if (draw.texture)
|
||||
|
@ -2624,7 +2697,7 @@ static void xmb_draw_bg(
|
|||
if (running || video_info->xmb_color_theme == XMB_THEME_WALLPAPER)
|
||||
add_opacity = true;
|
||||
|
||||
menu_display_draw_bg(&draw, video_info, add_opacity);
|
||||
menu_display_draw_bg(&draw, video_info, add_opacity, override_opacity);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2754,6 +2827,32 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
menu_display_blend_begin();
|
||||
|
||||
if (xmb->savestate_thumbnail)
|
||||
xmb_draw_thumbnail(menu_disp_info,
|
||||
xmb, &coord_white[0], width, height,
|
||||
xmb->margins.screen.left + xmb->icon.spacing.horizontal +
|
||||
xmb->icon.spacing.horizontal*4 - xmb->icon.size / 4,
|
||||
xmb->margins.screen.top + xmb->icon.size + xmb->savestate_thumbnail_height,
|
||||
xmb->savestate_thumbnail_width, xmb->savestate_thumbnail_height,
|
||||
xmb->savestate_thumbnail);
|
||||
else if (xmb->thumbnail
|
||||
&& !string_is_equal(xmb_thumbnails_ident(),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))
|
||||
{
|
||||
#ifdef XMB_DEBUG
|
||||
RARCH_LOG("[XMB thumbnail] width: %.2f, height: %.2f\n", xmb->thumbnail_width, xmb->thumbnail_height);
|
||||
RARCH_LOG("[XMB thumbnail] w: %.2f, h: %.2f\n", width, height);
|
||||
#endif
|
||||
|
||||
xmb_draw_thumbnail(menu_disp_info,
|
||||
xmb, &coord_white[0], width, height,
|
||||
xmb->margins.screen.left + xmb->icon.spacing.horizontal +
|
||||
xmb->icon.spacing.horizontal*4 - xmb->icon.size / 4,
|
||||
xmb->margins.screen.top + xmb->icon.size + xmb->thumbnail_height,
|
||||
xmb->thumbnail_width, xmb->thumbnail_height,
|
||||
xmb->thumbnail);
|
||||
}
|
||||
|
||||
/* Clock image */
|
||||
menu_display_set_alpha(coord_white, MIN(xmb->alpha, 1.00f));
|
||||
|
@ -2966,32 +3065,6 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||
font_driver_flush(video_info->width, video_info->height, xmb->font2);
|
||||
font_driver_bind_block(xmb->font2, NULL);
|
||||
|
||||
if (xmb->savestate_thumbnail)
|
||||
xmb_draw_thumbnail(menu_disp_info,
|
||||
xmb, &coord_white[0], width, height,
|
||||
xmb->margins.screen.left + xmb->icon.spacing.horizontal +
|
||||
xmb->icon.spacing.horizontal*4 - xmb->icon.size / 4,
|
||||
xmb->margins.screen.top + xmb->icon.size + xmb->savestate_thumbnail_height,
|
||||
xmb->savestate_thumbnail_width, xmb->savestate_thumbnail_height,
|
||||
xmb->savestate_thumbnail);
|
||||
else if (xmb->thumbnail
|
||||
&& !string_is_equal(xmb_thumbnails_ident(),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))
|
||||
{
|
||||
#ifdef XMB_DEBUG
|
||||
RARCH_LOG("[XMB thumbnail] width: %.2f, height: %.2f\n", xmb->thumbnail_width, xmb->thumbnail_height);
|
||||
RARCH_LOG("[XMB thumbnail] w: %.2f, h: %.2f\n", width, height);
|
||||
#endif
|
||||
|
||||
xmb_draw_thumbnail(menu_disp_info,
|
||||
xmb, &coord_white[0], width, height,
|
||||
xmb->margins.screen.left + xmb->icon.spacing.horizontal +
|
||||
xmb->icon.spacing.horizontal*4 - xmb->icon.size / 4,
|
||||
xmb->margins.screen.top + xmb->icon.size + xmb->thumbnail_height,
|
||||
xmb->thumbnail_width, xmb->thumbnail_height,
|
||||
xmb->thumbnail);
|
||||
}
|
||||
|
||||
if (menu_input_dialog_get_display_kb())
|
||||
{
|
||||
const char *str = menu_input_dialog_get_buffer();
|
||||
|
@ -3544,6 +3617,8 @@ static const char *xmb_texture_path(unsigned id)
|
|||
return "screenshot.png";
|
||||
case XMB_TEXTURE_RELOAD:
|
||||
return "reload.png";
|
||||
case XMB_TEXTURE_RENAME:
|
||||
return "rename.png";
|
||||
case XMB_TEXTURE_FILE:
|
||||
return "file.png";
|
||||
case XMB_TEXTURE_FOLDER:
|
||||
|
@ -3754,7 +3829,12 @@ static void xmb_list_insert(void *userdata,
|
|||
current = (int)selection;
|
||||
|
||||
if (!string_is_empty(fullpath))
|
||||
strlcpy(node->fullpath, fullpath, sizeof(node->fullpath));
|
||||
{
|
||||
if (node->fullpath)
|
||||
free(node->fullpath);
|
||||
|
||||
node->fullpath = strdup(fullpath);
|
||||
}
|
||||
|
||||
node->alpha = xmb->items.passive.alpha;
|
||||
node->zoom = xmb->items.passive.zoom;
|
||||
|
@ -3788,7 +3868,8 @@ static void xmb_list_clear(file_list_t *list)
|
|||
if (!node)
|
||||
continue;
|
||||
|
||||
file_list_free_userdata(list, i);
|
||||
xmb_free_node(node);
|
||||
list->list[i].userdata = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3802,7 +3883,10 @@ static void xmb_list_deep_copy(const file_list_t *src, file_list_t *dst)
|
|||
|
||||
for (i = 0; i < size; ++i)
|
||||
{
|
||||
file_list_free_userdata(dst, i);
|
||||
xmb_node_t *node = (xmb_node_t*)menu_entries_get_userdata_at_offset(dst, i);
|
||||
|
||||
xmb_free_node(node);
|
||||
dst->list[i].userdata = NULL;
|
||||
file_list_free_actiondata(dst, i); /* this one was allocated by us */
|
||||
}
|
||||
|
||||
|
@ -4062,10 +4146,56 @@ static int xmb_list_push(void *data, void *userdata,
|
|||
{
|
||||
menu_displaylist_ctx_parse_entry_t entry;
|
||||
int ret = -1;
|
||||
menu_handle_t *menu = (menu_handle_t*)data;
|
||||
core_info_list_t *list = NULL;
|
||||
menu_handle_t *menu = (menu_handle_t*)data;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DISPLAYLIST_LOAD_CONTENT_LIST:
|
||||
{
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
|
||||
MENU_ENUM_LABEL_FAVORITES,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
core_info_get_list(&list);
|
||||
if (core_info_list_num_info_files(list))
|
||||
{
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST),
|
||||
MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST),
|
||||
MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
#endif
|
||||
|
||||
if (frontend_driver_parse_drive_list(info->list, true) != 0)
|
||||
menu_entries_append_enum(info->list, "/",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
|
||||
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_MENU_FILE_BROWSER_SETTINGS),
|
||||
MENU_ENUM_LABEL_MENU_FILE_BROWSER_SETTINGS,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
info->need_push = true;
|
||||
info->need_refresh = true;
|
||||
ret = 0;
|
||||
}
|
||||
break;
|
||||
case DISPLAYLIST_MAIN_MENU:
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
|
|
|
@ -976,7 +976,9 @@ static void zarch_frame(void *data, video_frame_info_t *video_info)
|
|||
menu_display_blend_begin();
|
||||
draw.x = 0;
|
||||
draw.y = 0;
|
||||
menu_display_draw_bg(&draw, video_info, false);
|
||||
|
||||
menu_display_draw_bg(&draw, video_info, false,
|
||||
video_info->menu_wallpaper_opacity);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
|
||||
|
|
|
@ -41,6 +41,10 @@ enum
|
|||
ACTION_OK_DL_RDB_ENTRY_SUBMENU,
|
||||
ACTION_OK_DL_AUDIO_DSP_PLUGIN,
|
||||
ACTION_OK_DL_SHADER_PASS,
|
||||
ACTION_OK_DL_FAVORITES_LIST,
|
||||
ACTION_OK_DL_IMAGES_LIST,
|
||||
ACTION_OK_DL_VIDEO_LIST,
|
||||
ACTION_OK_DL_MUSIC_LIST,
|
||||
ACTION_OK_DL_SHADER_PARAMETERS,
|
||||
ACTION_OK_DL_SHADER_PRESET,
|
||||
ACTION_OK_DL_GENERIC,
|
||||
|
|
|
@ -2703,6 +2703,19 @@ static int menu_displaylist_parse_settings_enum(void *data,
|
|||
);
|
||||
}
|
||||
|
||||
static void menu_displaylist_set_new_playlist(
|
||||
menu_handle_t *menu, const char *path)
|
||||
{
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT,
|
||||
(void*)path);
|
||||
strlcpy(
|
||||
menu->db_playlist_file,
|
||||
path,
|
||||
sizeof(menu->db_playlist_file));
|
||||
}
|
||||
|
||||
|
||||
static int menu_displaylist_parse_horizontal_list(
|
||||
menu_displaylist_info_t *info)
|
||||
{
|
||||
|
@ -2738,8 +2751,6 @@ static int menu_displaylist_parse_horizontal_list(
|
|||
|
||||
fill_pathname_base_noext(lpl_basename, item->path, sizeof(lpl_basename));
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
|
||||
|
||||
fill_pathname_join(
|
||||
path_playlist,
|
||||
settings->paths.directory_playlist,
|
||||
|
@ -2748,10 +2759,8 @@ static int menu_displaylist_parse_horizontal_list(
|
|||
|
||||
menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename));
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT, (void*)path_playlist);
|
||||
menu_displaylist_set_new_playlist(menu, path_playlist);
|
||||
|
||||
strlcpy(menu->db_playlist_file,
|
||||
path_playlist, sizeof(menu->db_playlist_file));
|
||||
strlcpy(path_playlist,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_COLLECTION),
|
||||
sizeof(path_playlist));
|
||||
|
@ -3488,9 +3497,9 @@ static int menu_displaylist_parse_playlists(
|
|||
|
||||
list_size = str_list->size;
|
||||
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
if (!horizontal)
|
||||
{
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_SCAN_DIRECTORY),
|
||||
|
@ -3501,8 +3510,33 @@ static int menu_displaylist_parse_playlists(
|
|||
msg_hash_to_str(MENU_ENUM_LABEL_SCAN_FILE),
|
||||
MENU_ENUM_LABEL_SCAN_FILE,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
}
|
||||
#endif
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_FAVORITES),
|
||||
MENU_ENUM_LABEL_GOTO_FAVORITES,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_IMAGES),
|
||||
MENU_ENUM_LABEL_GOTO_IMAGES,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_MUSIC),
|
||||
MENU_ENUM_LABEL_GOTO_MUSIC,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
#ifdef HAVE_FFMPEG
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_VIDEO),
|
||||
MENU_ENUM_LABEL_GOTO_VIDEO,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (list_size == 0)
|
||||
{
|
||||
|
@ -4022,28 +4056,22 @@ bool menu_displaylist_push(menu_displaylist_ctx_entry_t *entry)
|
|||
static void menu_displaylist_parse_playlist_history(
|
||||
menu_handle_t *menu,
|
||||
menu_displaylist_info_t *info,
|
||||
playlist_t *playlist,
|
||||
const char *playlist_name,
|
||||
const char *playlist_path,
|
||||
int *ret)
|
||||
{
|
||||
char path_playlist[PATH_MAX_LENGTH];
|
||||
playlist_t *playlist = NULL;
|
||||
|
||||
path_playlist[0] = '\0';
|
||||
|
||||
if (!playlist)
|
||||
command_event(CMD_EVENT_HISTORY_INIT, NULL);
|
||||
menu_displaylist_set_new_playlist(menu, playlist_path);
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist);
|
||||
|
||||
strlcpy(path_playlist, playlist_name, sizeof(path_playlist));
|
||||
*ret = menu_displaylist_parse_playlist(info,
|
||||
playlist, path_playlist, true);
|
||||
strlcpy(
|
||||
menu->db_playlist_file,
|
||||
playlist_path,
|
||||
sizeof(menu->db_playlist_file));
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT,
|
||||
(void*)menu->db_playlist_file);
|
||||
}
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
|
@ -4390,7 +4418,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
|
||||
path_playlist[0] = '\0';
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
|
||||
|
||||
fill_pathname_join(
|
||||
path_playlist,
|
||||
|
@ -4398,11 +4425,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
info->path,
|
||||
sizeof(path_playlist));
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT,
|
||||
(void*)path_playlist);
|
||||
menu_displaylist_set_new_playlist(menu, path_playlist);
|
||||
|
||||
strlcpy(menu->db_playlist_file, path_playlist,
|
||||
sizeof(menu->db_playlist_file));
|
||||
strlcpy(path_playlist,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_COLLECTION),
|
||||
sizeof(path_playlist));
|
||||
|
@ -4426,7 +4450,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
if (settings->bools.history_list_enable)
|
||||
menu_displaylist_parse_playlist_history(menu, info,
|
||||
g_defaults.content_history,
|
||||
"history",
|
||||
settings->paths.path_content_history,
|
||||
&ret);
|
||||
|
@ -4449,7 +4472,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
case DISPLAYLIST_FAVORITES:
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
menu_displaylist_parse_playlist_history(menu, info,
|
||||
g_defaults.content_favorites,
|
||||
"favorites",
|
||||
settings->paths.path_content_favorites,
|
||||
&ret);
|
||||
|
@ -4462,7 +4484,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
case DISPLAYLIST_MUSIC_HISTORY:
|
||||
if (settings->bools.history_list_enable)
|
||||
menu_displaylist_parse_playlist_history(menu, info,
|
||||
g_defaults.music_history,
|
||||
"music_history",
|
||||
settings->paths.path_content_music_history,
|
||||
&ret);
|
||||
|
@ -4486,7 +4507,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
#ifdef HAVE_FFMPEG
|
||||
if (settings->bools.history_list_enable)
|
||||
menu_displaylist_parse_playlist_history(menu, info,
|
||||
g_defaults.video_history,
|
||||
"video_history",
|
||||
settings->paths.path_content_video_history,
|
||||
&ret);
|
||||
|
@ -5170,6 +5190,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY,
|
||||
PARSE_ONLY_FLOAT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
PARSE_ONLY_FLOAT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_LINEAR_FILTER,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
@ -5212,6 +5235,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME,
|
||||
PARSE_ONLY_UINT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME,
|
||||
PARSE_ONLY_UINT, false);
|
||||
|
@ -6008,6 +6034,33 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
case DISPLAYLIST_LOAD_CONTENT_LIST:
|
||||
case DISPLAYLIST_LOAD_CONTENT_SPECIAL:
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_FAVORITES),
|
||||
MENU_ENUM_LABEL_GOTO_FAVORITES,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_IMAGES),
|
||||
MENU_ENUM_LABEL_GOTO_IMAGES,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_MUSIC),
|
||||
MENU_ENUM_LABEL_GOTO_MUSIC,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
|
||||
#ifdef HAVE_FFMPEG
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_GOTO_VIDEO),
|
||||
MENU_ENUM_LABEL_GOTO_VIDEO,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
#endif
|
||||
|
||||
if (!string_is_empty(settings->paths.directory_menu_content))
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES),
|
||||
|
@ -6539,7 +6592,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||
#ifdef HAVE_IMAGEVIEWER
|
||||
if (settings->bools.history_list_enable)
|
||||
menu_displaylist_parse_playlist_history(menu, info,
|
||||
g_defaults.image_history,
|
||||
"images_history",
|
||||
settings->paths.path_content_image_history,
|
||||
&ret);
|
||||
|
|
|
@ -578,7 +578,8 @@ void menu_display_draw_pipeline(menu_display_ctx_draw_t *draw)
|
|||
}
|
||||
|
||||
void menu_display_draw_bg(menu_display_ctx_draw_t *draw,
|
||||
video_frame_info_t *video_info, bool add_opacity_to_wallpaper)
|
||||
video_frame_info_t *video_info, bool add_opacity_to_wallpaper,
|
||||
float override_opacity)
|
||||
{
|
||||
static struct video_coords coords;
|
||||
const float *new_vertex = NULL;
|
||||
|
@ -606,7 +607,7 @@ void menu_display_draw_bg(menu_display_ctx_draw_t *draw,
|
|||
add_opacity_to_wallpaper = true;
|
||||
|
||||
if (add_opacity_to_wallpaper)
|
||||
menu_display_set_alpha(draw->color, video_info->menu_wallpaper_opacity);
|
||||
menu_display_set_alpha(draw->color, override_opacity);
|
||||
|
||||
if (!draw->texture)
|
||||
draw->texture = menu_display_white_texture;
|
||||
|
@ -621,7 +622,8 @@ void menu_display_draw_gradient(menu_display_ctx_draw_t *draw,
|
|||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
|
||||
menu_display_draw_bg(draw, video_info, false);
|
||||
menu_display_draw_bg(draw, video_info, false,
|
||||
video_info->menu_wallpaper_opacity);
|
||||
menu_display_draw(draw);
|
||||
}
|
||||
|
||||
|
|
|
@ -669,7 +669,7 @@ void menu_display_draw_pipeline(menu_display_ctx_draw_t *draw);
|
|||
void menu_display_draw_bg(
|
||||
menu_display_ctx_draw_t *draw,
|
||||
video_frame_info_t *video_info,
|
||||
bool add_opacity);
|
||||
bool add_opacity, float opacity_override);
|
||||
void menu_display_draw_gradient(
|
||||
menu_display_ctx_draw_t *draw,
|
||||
video_frame_info_t *video_info);
|
||||
|
|
|
@ -4885,7 +4885,7 @@ static bool setting_append_list(
|
|||
&settings->bools.input_overlay_show_physical_inputs,
|
||||
MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
false,
|
||||
show_physical_inputs,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
|
@ -5003,6 +5003,21 @@ static bool setting_append_list(
|
|||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||
|
||||
CONFIG_FLOAT(
|
||||
list, list_info,
|
||||
&settings->floats.menu_framebuffer_opacity,
|
||||
MENU_ENUM_LABEL_MENU_FRAMEBUFFER_OPACITY,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY,
|
||||
menu_framebuffer_opacity,
|
||||
"%.3f",
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||
}
|
||||
|
||||
if (string_is_equal_fast(settings->arrays.menu_driver, "xmb", 3))
|
||||
|
@ -5386,7 +5401,6 @@ static bool setting_append_list(
|
|||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||
|
||||
#ifdef HAVE_IMAGEVIEWER
|
||||
CONFIG_BOOL(
|
||||
|
@ -5494,6 +5508,21 @@ static bool setting_append_list(
|
|||
/* only MaterialUI uses these values, don't show them on other drivers */
|
||||
if (string_is_equal_fast(settings->arrays.menu_driver, "glui", 4))
|
||||
{
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_materialui_icons_enable,
|
||||
MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE,
|
||||
MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE,
|
||||
materialui_icons_enable,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
&settings->uints.menu_materialui_color_theme,
|
||||
|
|
|
@ -28,7 +28,9 @@ enum filebrowser_enums
|
|||
{
|
||||
FILEBROWSER_NONE = 0,
|
||||
FILEBROWSER_SELECT_DIR,
|
||||
FILEBROWSER_APPEND_IMAGE,
|
||||
FILEBROWSER_SCAN_DIR,
|
||||
FILEBROWSER_SCAN_FILE,
|
||||
FILEBROWSER_SELECT_FILE,
|
||||
FILEBROWSER_SELECT_IMAGE,
|
||||
FILEBROWSER_SELECT_FONT,
|
||||
|
|
12
msg_hash.h
12
msg_hash.h
|
@ -172,6 +172,7 @@ enum msg_hash_enums
|
|||
MSG_NETPLAY_CANNOT_PLAY,
|
||||
MSG_NETPLAY_PEER_PAUSED,
|
||||
MSG_NETPLAY_CHANGED_NICK,
|
||||
MSG_ADDED_TO_FAVORITES,
|
||||
MSG_AUTODETECT,
|
||||
MSG_AUDIO_VOLUME,
|
||||
MSG_AUDIO_MIXER_VOLUME,
|
||||
|
@ -399,11 +400,14 @@ enum msg_hash_enums
|
|||
MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END = MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN + RARCH_BIND_LIST_END,
|
||||
|
||||
MENU_LABEL(MENU_WALLPAPER_OPACITY),
|
||||
MENU_LABEL(MENU_FRAMEBUFFER_OPACITY),
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_CONFIG,
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY,
|
||||
MENU_ENUM_LABEL_VALUE_AUTO,
|
||||
|
||||
MENU_LABEL(MATERIALUI_ICONS_ENABLE),
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME,
|
||||
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI,
|
||||
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROACTIVE,
|
||||
|
@ -736,6 +740,10 @@ enum msg_hash_enums
|
|||
MENU_LABEL(CONTENT_HISTORY_SIZE),
|
||||
MENU_LABEL(PLAYLIST_ENTRY_REMOVE),
|
||||
MENU_LABEL(PLAYLIST_ENTRY_RENAME),
|
||||
MENU_LABEL(GOTO_FAVORITES),
|
||||
MENU_LABEL(GOTO_MUSIC),
|
||||
MENU_LABEL(GOTO_IMAGES),
|
||||
MENU_LABEL(GOTO_VIDEO),
|
||||
MENU_LABEL(ADD_TO_FAVORITES),
|
||||
MENU_LABEL(MENU_THROTTLE_FRAMERATE),
|
||||
MENU_LABEL(NO_ACHIEVEMENTS_TO_DISPLAY),
|
||||
|
@ -824,6 +832,10 @@ enum msg_hash_enums
|
|||
MENU_LABEL(BROWSE_URL),
|
||||
MENU_LABEL(BROWSE_START),
|
||||
/* Deferred */
|
||||
MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_NETPLAY,
|
||||
MENU_ENUM_LABEL_DEFERRED_MUSIC,
|
||||
MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START,
|
||||
|
|
|
@ -45,6 +45,8 @@
|
|||
|
||||
#include "../../retroarch.h"
|
||||
#include "../../version.h"
|
||||
#include "../../verbosity.h"
|
||||
|
||||
#include "netplay.h"
|
||||
#include "netplay_discovery.h"
|
||||
#include "netplay_private.h"
|
||||
|
@ -346,14 +348,19 @@ static bool netplay_lan_ad_client(void)
|
|||
/* And that we know how to handle it */
|
||||
if (their_addr.sa_family == AF_INET)
|
||||
{
|
||||
struct sockaddr_in *sin = (struct sockaddr_in *) &their_addr;
|
||||
struct sockaddr_in *sin = NULL;
|
||||
|
||||
RARCH_WARN ("[lobby] using IPv4 for discovery\n");
|
||||
sin = (struct sockaddr_in *) &their_addr;
|
||||
sin->sin_port = htons(ntohl(ad_packet_buffer.port));
|
||||
|
||||
}
|
||||
#ifdef HAVE_INET6
|
||||
else if (their_addr.sa_family == AF_INET6)
|
||||
{
|
||||
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) &their_addr;
|
||||
struct sockaddr_in6 *sin6 = NULL;
|
||||
RARCH_WARN ("[lobby] using IPv6 for discovery\n");
|
||||
sin6 = (struct sockaddr_in6 *) &their_addr;
|
||||
sin6->sin6_port = htons(ad_packet_buffer.port);
|
||||
|
||||
}
|
||||
|
|
|
@ -57,6 +57,8 @@ static unsigned server_port_deferred = 0;
|
|||
static int reannounce = 0;
|
||||
static bool is_mitm = false;
|
||||
|
||||
bool netplay_disconnect(netplay_t *netplay);
|
||||
|
||||
/**
|
||||
* netplay_is_alive:
|
||||
* @netplay : pointer to netplay object
|
||||
|
@ -825,6 +827,13 @@ bool netplay_pre_frame(netplay_t *netplay)
|
|||
|
||||
sync_stalled = !netplay_sync_pre_frame(netplay);
|
||||
|
||||
/* If we're disconnected, deinitialize */
|
||||
if (!netplay->is_server && !netplay->connections[0].active)
|
||||
{
|
||||
netplay_disconnect(netplay);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (sync_stalled ||
|
||||
((!netplay->is_server || netplay->connected_players) &&
|
||||
(netplay->stall || netplay->remote_paused)))
|
||||
|
@ -860,6 +869,10 @@ void netplay_post_frame(netplay_t *netplay)
|
|||
false))
|
||||
netplay_hangup(netplay, connection);
|
||||
}
|
||||
|
||||
/* If we're disconnected, deinitialize */
|
||||
if (!netplay->is_server && !netplay->connections[0].active)
|
||||
netplay_disconnect(netplay);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.retroarch"
|
||||
android:versionCode="59"
|
||||
android:versionName="1.6.5"
|
||||
android:versionCode="62"
|
||||
android:versionName="1.6.7"
|
||||
android:installLocation="internalOnly">
|
||||
<uses-feature android:glEsVersion="0x00020000" />
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<app version="1">
|
||||
<name>RetroArch</name>
|
||||
<coder>Libretro</coder>
|
||||
<version>1.6.5</version>
|
||||
<version>1.6.7</version>
|
||||
<release_date>2012-2017</release_date>
|
||||
<short_description>The cross-platform entertainment system</short_description>
|
||||
<long_description>A port of RetroArch to the GameCube/Wii.</long_description>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<app version="1">
|
||||
<name>Retroarch</name>
|
||||
<coder>Libretro</coder>
|
||||
<version>1.65</version>
|
||||
<version>1.67</version>
|
||||
<release_date>20170108133000</release_date>
|
||||
<short_description></short_description>
|
||||
<long_description>RetroArch
|
||||
|
|
|
@ -424,7 +424,7 @@ void playlist_free(playlist_t *playlist)
|
|||
|
||||
playlist->conf_path = NULL;
|
||||
|
||||
for (i = 0; i < playlist->cap; i++)
|
||||
for (i = 0; i < playlist->size; i++)
|
||||
{
|
||||
struct playlist_entry *entry = &playlist->entries[i];
|
||||
|
||||
|
@ -450,7 +450,7 @@ void playlist_clear(playlist_t *playlist)
|
|||
if (!playlist)
|
||||
return;
|
||||
|
||||
for (i = 0; i < playlist->cap; i++)
|
||||
for (i = 0; i < playlist->size; i++)
|
||||
{
|
||||
struct playlist_entry *entry = &playlist->entries[i];
|
||||
|
||||
|
|
|
@ -35,17 +35,19 @@ fi
|
|||
add_define_make DYLIB_LIB "$DYLIB"
|
||||
|
||||
[ "$OS" = 'Darwin' ] && HAVE_X11=no # X11 breaks on recent OSXes even if present.
|
||||
|
||||
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib && add_library_dirs /opt/vc/lib/GL
|
||||
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
|
||||
check_lib SYSTEMD -lsystemd sd_get_machine_names
|
||||
|
||||
if [ "$HAVE_VIDEOCORE" != "no" ]; then
|
||||
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib && add_library_dirs /opt/vc/lib/GL
|
||||
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
|
||||
fi
|
||||
|
||||
if [ "$HAVE_VIDEOCORE" = 'yes' ]; then
|
||||
[ -d /opt/vc/include ] && add_include_dirs /opt/vc/include
|
||||
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_include_dirs /opt/vc/include/interface/vcos/pthreads
|
||||
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_include_dirs /opt/vc/include/interface/vmcs_host/linux
|
||||
HAVE_OPENGLES='auto'
|
||||
EXTRA_GL_LIBS="-lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
|
||||
EXTRA_GL_LIBS="-lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm"
|
||||
fi
|
||||
|
||||
if [ "$HAVE_NEON" = "yes" ]; then
|
||||
|
@ -109,7 +111,7 @@ if [ "$HAVE_EGL" != "no" -a "$OS" != 'Win32' ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
if [ "HAVE_SSA" != "no" ]; then
|
||||
if [ "$HAVE_SSA" != "no" ]; then
|
||||
check_lib SSA -lass ass_library_init
|
||||
fi
|
||||
|
||||
|
|
|
@ -103,3 +103,4 @@ HAVE_HID=yes # Low-level HID (Human Interface Device) support
|
|||
HAVE_LANGEXTRA=yes # Multi-language support
|
||||
HAVE_OSMESA=no # Off-screen Mesa rendering
|
||||
HAVE_VIDEOPROCESSOR=auto # Enable video processor core
|
||||
HAVE_VIDEOCORE=auto # Broadcom Videocore 4 support
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#define RARCH_VERSION_H__
|
||||
|
||||
#ifndef PACKAGE_VERSION
|
||||
#define PACKAGE_VERSION "1.6.5"
|
||||
#define PACKAGE_VERSION "1.6.7"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,7 @@ else ifneq ($(findstring MINGW,$(shell uname -a)),)
|
|||
system_platform = win
|
||||
endif
|
||||
|
||||
EXTERNAL_LIBOGC = 0
|
||||
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
|
||||
LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT)
|
||||
OBJCOPY = $(DEVKITPPC)/bin/powerpc-eabi-objcopy$(EXE_EXT)
|
||||
|
@ -23,8 +24,16 @@ ELF_TARGET := app_booter.elf
|
|||
|
||||
LIBRETRO_COMM_DIR := ../../libretro-common
|
||||
|
||||
INCLUDE := -I. -I$(DEVKITPRO)/libogc/include -I$(LIBRETRO_COMM_DIR)/crt/include
|
||||
LIBDIRS := -L$(DEVKITPRO)/libogc/lib/wii
|
||||
LIBDIRS :=
|
||||
INCLUDE := -I. -I$(LIBRETRO_COMM_DIR)/crt/include
|
||||
|
||||
ifeq ($(EXTERNAL_LIBOGC), 1)
|
||||
INCLUDE += -I$(DEVKITPRO)/libogc/include
|
||||
LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii
|
||||
else
|
||||
INCLUDE += -I../libogc/include
|
||||
LIBDIRS += -Lwii/libogc/libs/wii
|
||||
endif
|
||||
|
||||
MACHDEP := -DHW_RVL -DGEKKO -mno-eabi -mno-sdata -mcpu=750
|
||||
# todo: find out why -Os spits out linker errors
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef __AESNDLIB_H__
|
||||
#define __AESNDLIB_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
#define MAX_VOICES 32
|
||||
#define SND_BUFFERSIZE 384 // output 2ms sound data at 48KHz
|
||||
#define DSP_STREAMBUFFER_SIZE 1152 // input 2ms sound data at max. 144KHz
|
||||
|
||||
#if defined(HW_DOL)
|
||||
#define DSP_DEFAULT_FREQ 48044
|
||||
#elif defined(HW_RVL)
|
||||
#define DSP_DEFAULT_FREQ 48000
|
||||
#endif
|
||||
|
||||
#define VOICE_STATE_STOPPED 0
|
||||
#define VOICE_STATE_RUNNING 1
|
||||
#define VOICE_STATE_STREAM 2
|
||||
|
||||
#define VOICE_MONO8 0x00000000
|
||||
#define VOICE_STEREO8 0x00000001
|
||||
#define VOICE_MONO16 0x00000002
|
||||
#define VOICE_STEREO16 0x00000003
|
||||
|
||||
#define VOICE_FREQ32KHZ 32000
|
||||
#define VOICE_FREQ48KHZ 48000
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct aesndpb_t AESNDPB;
|
||||
|
||||
typedef void (*AESNDVoiceCallback)(AESNDPB *pb,u32 state);
|
||||
typedef void (*AESNDAudioCallback)(void *audio_buffer,u32 len);
|
||||
|
||||
void AESND_Init();
|
||||
void AESND_Reset();
|
||||
void AESND_Pause(bool pause);
|
||||
u32 AESND_GetDSPProcessTime();
|
||||
f32 AESND_GetDSPProcessUsage();
|
||||
AESNDAudioCallback AESND_RegisterAudioCallback(AESNDAudioCallback cb);
|
||||
|
||||
AESNDPB* AESND_AllocateVoice(AESNDVoiceCallback cb);
|
||||
void AESND_FreeVoice(AESNDPB *pb);
|
||||
void AESND_SetVoiceStop(AESNDPB *pb,bool stop);
|
||||
void AESND_SetVoiceMute(AESNDPB *pb,bool mute);
|
||||
void AESND_SetVoiceLoop(AESNDPB *pb,bool loop);
|
||||
void AESND_SetVoiceFormat(AESNDPB *pb,u32 format);
|
||||
void AESND_SetVoiceStream(AESNDPB *pb,bool stream);
|
||||
void AESND_SetVoiceFrequency(AESNDPB *pb,u32 freq);
|
||||
void AESND_SetVoiceVolume(AESNDPB *pb,u16 volume_l,u16 volume_r);
|
||||
void AESND_SetVoiceBuffer(AESNDPB *pb,const void *buffer,u32 len);
|
||||
void AESND_PlayVoice(AESNDPB *pb,u32 format,const void *buffer,u32 len,u32 freq,u32 delay,bool looped);
|
||||
AESNDVoiceCallback AESND_RegisterVoiceCallback(AESNDPB *pb,AESNDVoiceCallback cb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,383 @@
|
|||
/* ASNDLIB -> accelerated sound lib using the DSP
|
||||
|
||||
Copyright (c) 2008 Hermes <www.entuwii.net>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are
|
||||
permitted provided that the following conditions are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright notice, this list of
|
||||
conditions and the following disclaimer.
|
||||
- Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
- The names of the contributors may not be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ASNDLIB_H__
|
||||
#define __ASNDLIB_H__
|
||||
|
||||
#define __SNDLIB_H__
|
||||
|
||||
/*!
|
||||
* \file asndlib.h
|
||||
* \brief ASND library
|
||||
*
|
||||
*/
|
||||
|
||||
#define ASND_LIB 0x100
|
||||
#define SND_LIB (ASND_LIB+2)
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*! \addtogroup sndretvals SND return values
|
||||
* @{
|
||||
*/
|
||||
#define SND_OK 0
|
||||
#define SND_INVALID -1
|
||||
#define SND_ISNOTASONGVOICE -2
|
||||
#define SND_BUSY 1
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup sndiavretvals SND_IsActiveVoice additional return values
|
||||
* @{
|
||||
*/
|
||||
#define SND_UNUSED 0 /*!< This voice is available for use. */
|
||||
#define SND_WORKING 1 /*!< This voice is currently in progress. */
|
||||
#define SND_WAITING 2 /*!< This voice is currently in progress and waiting to one SND_AddVoice() function (the voice handler is called continuously) */
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup sndsetvoiceformats Voice format
|
||||
* @{
|
||||
*/
|
||||
#define VOICE_MONO_8BIT 0
|
||||
#define VOICE_MONO_16BIT 1
|
||||
#define VOICE_MONO_16BIT_BE 1
|
||||
#define VOICE_STEREO_8BIT 2
|
||||
#define VOICE_STEREO_16BIT 3
|
||||
#define VOICE_STEREO_16BIT_BE 3
|
||||
#define VOICE_MONO_8BIT_U 4
|
||||
#define VOICE_MONO_16BIT_LE 5
|
||||
#define VOICE_STEREO_8BIT_U 6
|
||||
#define VOICE_STEREO_16BIT_LE 7
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup voicevol Voice volume
|
||||
* @{
|
||||
*/
|
||||
#define MIN_VOLUME 0
|
||||
#define MID_VOLUME 127
|
||||
#define MAX_VOLUME 255
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup pitchrange Pitch Range
|
||||
* @{
|
||||
*/
|
||||
#define MIN_PITCH 1 /*!< 1Hz */
|
||||
#define F44100HZ_PITCH 44100 /*!< 44100Hz */
|
||||
#define MAX_PITCH 144000 /*!< 144000Hz (more process time for pitch>48000) */
|
||||
#define INIT_RATE_48000
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup notecode Note codification
|
||||
* @{
|
||||
*/
|
||||
enum
|
||||
{
|
||||
NOTE_DO=0,
|
||||
NOTE_DOs,
|
||||
NOTE_REb=NOTE_DOs,
|
||||
NOTE_RE,
|
||||
NOTE_REs,
|
||||
NOTE_MIb=NOTE_REs,
|
||||
NOTE_MI,
|
||||
NOTE_FA,
|
||||
NOTE_FAs,
|
||||
NOTE_SOLb=NOTE_FAs,
|
||||
NOTE_SOL,
|
||||
NOTE_SOLs,
|
||||
NOTE_LAb=NOTE_SOLs,
|
||||
NOTE_LA,
|
||||
NOTE_LAs,
|
||||
NOTE_SIb=NOTE_LAs,
|
||||
NOTE_SI
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
NOTE_C=0,
|
||||
NOTE_Cs,
|
||||
NOTE_Db=NOTE_Cs,
|
||||
NOTE_D,
|
||||
NOTE_Ds,
|
||||
NOTE_Eb=NOTE_Ds,
|
||||
NOTE_E,
|
||||
NOTE_F,
|
||||
NOTE_Fs,
|
||||
NOTE_Gb=NOTE_Fs,
|
||||
NOTE_G,
|
||||
NOTE_Gs,
|
||||
NOTE_Ab=NOTE_Gs,
|
||||
NOTE_A,
|
||||
NOTE_As,
|
||||
NOTE_Bb=NOTE_As,
|
||||
NOTE_B
|
||||
};
|
||||
|
||||
#define NOTE(note,octave) (note+(octave<<3)+(octave<<2)) /*!< Final note codification. Used in Note2Freq(). */
|
||||
/*! @} */
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/*! \addtogroup sndlibcompat SNDLIB compatibility macros
|
||||
* \details These defines are for compatability with SNDLIB functions.
|
||||
* @{
|
||||
*/
|
||||
#define Note2Freq ANote2Freq
|
||||
#define SND_Init ASND_Init
|
||||
#define SND_End ASND_End
|
||||
#define SND_Pause ASND_Pause
|
||||
#define SND_Is_Paused ASND_Is_Paused
|
||||
#define SND_GetTime ASND_GetTime
|
||||
#define SND_GetSampleCounter ASND_GetSampleCounter
|
||||
#define SND_GetSamplesPerTick ASND_GetSamplesPerTick
|
||||
#define SND_SetTime ASND_SetTime
|
||||
#define SND_SetCallback ASND_SetCallback
|
||||
#define SND_GetAudioRate ASND_GetAudioRate
|
||||
#define SND_SetVoice ASND_SetVoice
|
||||
#define SND_AddVoice ASND_AddVoice
|
||||
#define SND_StopVoice ASND_StopVoice
|
||||
#define SND_PauseVoice ASND_PauseVoice
|
||||
#define SND_StatusVoice ASND_StatusVoice
|
||||
#define SND_GetFirstUnusedVoice ASND_GetFirstUnusedVoice
|
||||
#define SND_ChangePitchVoice ASND_ChangePitchVoice
|
||||
#define SND_ChangeVolumeVoice ASND_ChangeVolumeVoice
|
||||
#define SND_ChangeVolumeVoice ASND_ChangeVolumeVoice
|
||||
#define SND_GetTickCounterVoice ASND_GetTickCounterVoice
|
||||
#define SND_GetTimerVoice ASND_GetTimerVoice
|
||||
#define SND_TestPointer ASND_TestPointer
|
||||
/*! @} */
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/** \brief Callback type for ASND_SetVoice(). */
|
||||
typedef void (*ASNDVoiceCallback)(s32 voice);
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/** \brief Initializes the SND lib and fixes the hardware sample rate.
|
||||
* \param[in] note \ref notecode to play. for example: NOTE(C,4) for note C and octave 4.
|
||||
* \param[in] freq_base Frequency base of the sample. For example 8000Hz.
|
||||
* \param[in] note_base \ref notecode of the sample. For example: NOTE(L, 3) for note L and octave 3 (LA 3).
|
||||
* \return Frequency, in Hz. */
|
||||
int ANote2Freq(int note, int freq_base,int note_base);
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/*! \addtogroup General sound functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*! \brief Initializes the ASND lib and fixes the hardware sample rate to 48000.
|
||||
* \return None. */
|
||||
void ASND_Init();
|
||||
|
||||
/*! \brief De-initializes the ASND lib.
|
||||
* \return None. */
|
||||
void ASND_End();
|
||||
|
||||
/*! \brief Used to pause (or unpause) the sound.
|
||||
* \note The sound starts paused when ASND_Init() is called.
|
||||
* \param[in] paused If 1, sound is paused; sound can be unpaused with 0.
|
||||
* \return None. */
|
||||
void ASND_Pause(s32 paused);
|
||||
|
||||
/*! \brief Returns sound paused status.
|
||||
* \return 1 if paused, 0 if unpaused. */
|
||||
s32 ASND_Is_Paused();
|
||||
|
||||
/*! \brief Returns the global time.
|
||||
* \details The time is updated from the IRQ.
|
||||
* \return The current time, in milliseconds. */
|
||||
u32 ASND_GetTime();
|
||||
|
||||
/*! \brief Retrieves the global sample counter.
|
||||
* \details This counter is updated from the IRQ in steps of ASND_GetSamplesPerTick().
|
||||
* \note You can use this to implement one timer with high precision.
|
||||
* \return Current sample. */
|
||||
u32 ASND_GetSampleCounter();
|
||||
|
||||
/*! \brief Retrieves the samples sent from the IRQ in one tick.
|
||||
* \return Samples per tick. */
|
||||
u32 ASND_GetSamplesPerTick();
|
||||
|
||||
/*! \brief Set the global time.
|
||||
* \details This time is updated from the IRQ.
|
||||
* \param[in] time Fix the current time, in milliseconds.
|
||||
* \return None. */
|
||||
void ASND_SetTime(u32 time);
|
||||
|
||||
/*! \brief Sets a global callback for general purposes.
|
||||
* \details This callback is called from the IRQ.
|
||||
* \param[in] callback Callback function to assign.
|
||||
* \return None. */
|
||||
void ASND_SetCallback(void (*callback)());
|
||||
|
||||
/*! \brief Returns the current audio rate.
|
||||
* \note This function is implemented for compatibility with SNDLIB.
|
||||
* \return Audio rate (48000). */
|
||||
s32 ASND_GetAudioRate();
|
||||
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup voicefuncs Voice functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
// NOTE: I'm keeping this description around because I couldn't fully understand it; if someone else knows exactly what it's doing, they can come around
|
||||
// and make sure the description is correct.
|
||||
/* callback: can be NULL or one callback function is used to implement a double buffer use. When the second buffer is empty, the callback is called sending
|
||||
the voice number as parameter. You can use "void callback(s32 voice)" function to call ASND_AddVoice() and add one voice to the second buffer.
|
||||
NOTE: When callback is fixed the voice never stops and it turn in SND_WAITING status if success one timeout condition.
|
||||
*/
|
||||
|
||||
/*! \brief Sets a PCM voice to play.
|
||||
* \details This function stops one previous voice. Use ASND_StatusVoice() to test the status condition.
|
||||
* \note The voices are played in 16-bit stereo, regardless of the source format.<br><br>
|
||||
*
|
||||
* \note \a callback is used to implement a double buffer. When the second buffer is empty, the callback function is called with the voice number
|
||||
* as an argument. You can use <tt>void <i>callback</i> (s32 voice)</tt> to call ASND_AddVoice() and add one voice to the second buffer. When the callback
|
||||
* is non-NULL the, the voice never stops and returns SND_WAITING if successful on timeout condition.
|
||||
* \param[in] voice Voice slot to use for this sound; valid values are 0 to (MAX_SND_VOICES-1).
|
||||
* \param[in] format \ref sndsetvoiceformats to use for this sound.
|
||||
* \param[in] pitch Frequency to use, in Hz.
|
||||
* \param[in] delay Delay to wait before playing this voice; value is in milliseconds.
|
||||
* \param[in] snd Buffer containing samples to play back; the buffer <b>must</b> be aligned and padded to 32 bytes!
|
||||
* \param[in] size_snd Size of the buffer samples, in bytes.
|
||||
* \param[in] volume_l \ref voicevol of the left channel; value can be 0 - 255 inclusive.
|
||||
* \param[in] volume_r \ref voicevol of the right channel; value can be 0 - 255 inclusive.
|
||||
* \param[in] callback Optional callback function to use; set to NULL for no callback. See the note above for details.
|
||||
* \return SND_OK or SND_INVALID. */
|
||||
s32 ASND_SetVoice(s32 voice, s32 format, s32 pitch,s32 delay, void *snd, s32 size_snd, s32 volume_l, s32 volume_r, ASNDVoiceCallback callback);
|
||||
|
||||
/*! \brief Sets a PCM voice to play infinitely.
|
||||
* \note See ASND_SetVoice() for a detailed description, as it is largely identical. */
|
||||
s32 ASND_SetInfiniteVoice(s32 voice, s32 format, s32 pitch,s32 delay, void *snd, s32 size_snd, s32 volume_l, s32 volume_r);
|
||||
|
||||
/*! \brief Adds a PCM voice to play from the second buffer.
|
||||
* \note This function requires a call to ASND_SetVoice() and its subsequent return value to be a status other than SND_UNUSED prior to calling this one.
|
||||
* \param[in] voice Voice slot to attach this buffer to; value must be 0 to (MAX_SND_VOICES-1).
|
||||
* \param[in] snd Buffer containing the samples; it <b>must</b> be aligned and padded to 32 bytes AND have the same sample format as the first buffer.
|
||||
* \param[in] size_snd Size of the buffer samples, in bytes.
|
||||
* \return SND_OK or SND_INVALID; it may also return SND_BUSY if the second buffer is not empty and the voice cannot be added. */
|
||||
s32 ASND_AddVoice(s32 voice, void *snd, s32 size_snd);
|
||||
|
||||
/*! \brief Stops the selected voice.
|
||||
* \details If the voice is used in song mode, you need to assign the samples with ASND_SetSongSampleVoice() again. In this case, use ANS_PauseSongVoice()
|
||||
* to stop the voice without loss of samples.
|
||||
* \param[in] voice Voice to stop, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return SND_OK or SND_INVALID. */
|
||||
s32 ASND_StopVoice(s32 voice);
|
||||
|
||||
/*! \brief Pauses the selected voice.
|
||||
* \param[in] voice Voice to pause, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return SND_OK or SND_INVALID. */
|
||||
s32 ASND_PauseVoice(s32 voice, s32 pause);
|
||||
|
||||
/*! \brief Returns the status of the selected voice.
|
||||
* \param[in] voice Voice slot to get the status from, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return SND_INVALID if invalid, else a value from \ref sndiavretvals. */
|
||||
s32 ASND_StatusVoice(s32 voice);
|
||||
|
||||
/*! \brief Returns the first unused voice.
|
||||
* \note Voice 0 is the last possible voice that can be returned. The idea is that this voice is reserved for a MOD/OGG/MP3/etc. player. With this in mind,
|
||||
* you can use this function to determine that the rest of the voices are working if the return value is < 1.
|
||||
* \return SND_INVALID or the first free voice from 0 to (MAX_SND_VOICES-1). */
|
||||
s32 ASND_GetFirstUnusedVoice();
|
||||
|
||||
/*! \brief Changes the voice pitch in real-time.
|
||||
* \details This function can be used to create audio effects such as Doppler effect emulation.
|
||||
* \param[in] voice Voice to change the pitch of, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return SND_OK or SND_INVALID. */
|
||||
s32 ASND_ChangePitchVoice(s32 voice, s32 pitch);
|
||||
|
||||
/*! \brief Changes the voice volume in real-time.
|
||||
* \details This function can be used to create audio effects like distance attenuation.
|
||||
* \param[in] voice Voice to change the volume of, from 0 to (MAX_SND_VOICES-1).
|
||||
* \param[in] volume_l \ref voicevol to set the left channel to, from 0 to 255.
|
||||
* \param[in] volume_r \ref voicevol to set the right channel to, from 0 to 255.
|
||||
* \return SND_OK or SND_INVALID. */
|
||||
s32 ASND_ChangeVolumeVoice(s32 voice, s32 volume_l, s32 volume_r);
|
||||
|
||||
/*! \brief Returns the voice tick counter.
|
||||
* \details This value represents the number of ticks since this voice started to play, sans delay time. It uses the same resolution as the internal
|
||||
* sound buffer. For example, if the lib is initialized with INIT_RATE_48000, a return value of 24000 is equal to 0.5 seconds. This value can be used, for
|
||||
* example, to synchronize audio and video.
|
||||
* \note This function does not return error codes.
|
||||
* \param[in] voice Voice to retrieve the counter value from, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return Number of ticks since this voice started playing. */
|
||||
u32 ASND_GetTickCounterVoice(s32 voice);
|
||||
|
||||
/*! \brief Returns the voice playback time.
|
||||
* \details This value represents the time, in milliseconds, since this voice started playing, sans delay time. This value can be used, for example, to
|
||||
* synchronize audio and video.
|
||||
* \note This function does not return error codes.
|
||||
* \param[in] voice Voice to retrieve the time value from, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return Amount of time since this voice has started playing. */
|
||||
u32 ASND_GetTimerVoice(s32 voice);
|
||||
|
||||
/*! \brief Tests if \a pointer is in use by \a voice as a buffer.
|
||||
* \param[in] voice Voice to test, from 0 to (MAX_SND_VOICES-1).
|
||||
* \param[in] pointer Address to test. This must be the same pointer sent to ASND_AddVoice() or ASND_SetVoice().
|
||||
* \return SND_INVALID if invalid
|
||||
* \return 0 if the pointer is unused
|
||||
* \return 1 if the pointer used as a buffer. */
|
||||
s32 ASND_TestPointer(s32 voice, void *pointer);
|
||||
|
||||
/*! \brief Tests to determine if the \a voice is ready to receive a new buffer sample with ASND_AddVoice().
|
||||
* \details You can use this function to block a reader when double buffering is used. It works similarly to ASND_TestPointer() without needing to pass a
|
||||
* pointer.
|
||||
* \param[in] voice Voice to test, from 0 to (MAX_SND_VOICES-1).
|
||||
* \return SND_INVALID
|
||||
* \return 0 if voice is NOT ready to receive a new voice.
|
||||
* \return 1 if voice is ready to receive a new voice with ASND_AddVoice(). */
|
||||
s32 ASND_TestVoiceBufferReady(s32 voice);
|
||||
|
||||
/*! @} */
|
||||
|
||||
/*! \addtogroup dspfuncs DSP functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*! \brief Returns the DSP usage.
|
||||
* \details The value is a percentage of DSP usage.
|
||||
* \return DSP usage, in percent. */
|
||||
u32 ASND_GetDSP_PercentUse();
|
||||
|
||||
u32 ASND_GetDSP_ProcessTime();
|
||||
|
||||
/*! @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Copyright (c) 2003 EISLAB, Lulea University of Technology.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwBT Bluetooth stack.
|
||||
*
|
||||
* Author: Conny Ohult <conny@sm.luth.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __BD_ADDR_H__
|
||||
#define __BD_ADDR_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
struct bd_addr {
|
||||
u8 addr[6];
|
||||
};
|
||||
|
||||
#define BD_ADDR_LEN 6
|
||||
|
||||
#define BD_ADDR_ANY (&(struct bd_addr){{0,0,0,0,0,0}})
|
||||
#define BD_ADDR_LOCAL (&(struct bd_addr){{0,0,0,0xff,0xff,0xff}})
|
||||
|
||||
#define BD_ADDR(bdaddr, a, b, c, d, e, f) do{ \
|
||||
(bdaddr)->addr[0] = a; \
|
||||
(bdaddr)->addr[1] = b; \
|
||||
(bdaddr)->addr[2] = c; \
|
||||
(bdaddr)->addr[3] = d; \
|
||||
(bdaddr)->addr[4] = e; \
|
||||
(bdaddr)->addr[5] = f; }while(0)
|
||||
//TODO: USE memcmp????
|
||||
#define bd_addr_cmp(addr1, addr2) (((addr1)->addr[0] == (addr2)->addr[0]) && \
|
||||
((addr1)->addr[1] == (addr2)->addr[1]) && \
|
||||
((addr1)->addr[2] == (addr2)->addr[2]) && \
|
||||
((addr1)->addr[3] == (addr2)->addr[3]) && \
|
||||
((addr1)->addr[4] == (addr2)->addr[4]) && \
|
||||
((addr1)->addr[5] == (addr2)->addr[5]))
|
||||
//TODO: USE memcpy????
|
||||
#define bd_addr_set(addr1, addr2) do { \
|
||||
(addr1)->addr[0] = (addr2)->addr[0]; \
|
||||
(addr1)->addr[1] = (addr2)->addr[1]; \
|
||||
(addr1)->addr[2] = (addr2)->addr[2]; \
|
||||
(addr1)->addr[3] = (addr2)->addr[3]; \
|
||||
(addr1)->addr[4] = (addr2)->addr[4]; \
|
||||
(addr1)->addr[5] = (addr2)->addr[5]; }while(0)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __BD_ADDR_H__ */
|
|
@ -0,0 +1,154 @@
|
|||
#ifndef __BTE_H__
|
||||
#define __BTE_H__
|
||||
|
||||
#include <gccore.h>
|
||||
#include "bd_addr.h"
|
||||
|
||||
#define ERR_OK 0
|
||||
#define ERR_MEM -1
|
||||
#define ERR_BUF -2
|
||||
#define ERR_ABRT -3
|
||||
#define ERR_RST -4
|
||||
#define ERR_CLSD -5
|
||||
#define ERR_CONN -6
|
||||
#define ERR_VAL -7
|
||||
#define ERR_ARG -8
|
||||
#define ERR_RTE -9
|
||||
#define ERR_USE -10
|
||||
#define ERR_IF -11
|
||||
#define ERR_PKTSIZE -17
|
||||
|
||||
#define HIDP_STATE_READY 0x00
|
||||
#define HIDP_STATE_LISTEN 0x01
|
||||
#define HIDP_STATE_CONNECTING 0x02
|
||||
#define HIDP_STATE_CONNECTED 0x04
|
||||
|
||||
#define HIDP_CONTROL_CHANNEL 0x11
|
||||
#define HIDP_DATA_CHANNEL 0x13
|
||||
|
||||
#define HIDP_HDR_TRANS_MASK 0xf0
|
||||
#define HIDP_HDR_PARAM_MASK 0x0f
|
||||
|
||||
#define HIDP_TRANS_HANDSHAKE 0x00
|
||||
#define HIDP_TRANS_HIDCONTROL 0x10
|
||||
#define HIDP_TRANS_GETREPORT 0x40
|
||||
#define HIDP_TRANS_SETREPORT 0x50
|
||||
#define HIDP_TRANS_GETPROTOCOL 0x60
|
||||
#define HIDP_TRANS_SETPROTOCOL 0x70
|
||||
#define HIDP_TRANS_GETIDLE 0x80
|
||||
#define HIDP_TRANS_SETIDLE 0x90
|
||||
#define HIDP_TRANS_DATA 0xa0
|
||||
#define HIDP_TRANS_DATAC 0xb0
|
||||
|
||||
#define HIDP_HSHK_SUCCESSFULL 0x00
|
||||
#define HIDP_HSHK_NOTREADY 0x01
|
||||
#define HIDP_HSHK_INV_REPORTID 0x02
|
||||
#define HIDP_HSHK_NOTSUPPORTED 0x03
|
||||
#define HIDP_HSHK_IVALIDPARAM 0x04
|
||||
#define HIDP_HSHK_UNKNOWNERROR 0x0e
|
||||
#define HIDP_HSHK_FATALERROR 0x0f
|
||||
|
||||
#define HIDP_CTRL_NOP 0x00
|
||||
#define HIDP_CTRL_HARDRESET 0x01
|
||||
#define HIDP_CTRL_SOFTRESET 0x02
|
||||
#define HIDP_CTRL_SUSPEND 0x03
|
||||
#define HIDP_CTRL_RESUME 0x04
|
||||
#define HIDP_CTRL_VC_UNPLUG 0x05
|
||||
|
||||
/* HIDP data transaction headers */
|
||||
#define HIDP_DATA_RTYPE_MASK 0x03
|
||||
#define HIDP_DATA_RSRVD_MASK 0x0c
|
||||
#define HIDP_DATA_RTYPE_OTHER 0x00
|
||||
#define HIDP_DATA_RTYPE_INPUT 0x01
|
||||
#define HIDP_DATA_RTYPE_OUPUT 0x02
|
||||
#define HIDP_DATA_RTYPE_FEATURE 0x03
|
||||
|
||||
#define HIDP_PROTO_BOOT 0x00
|
||||
#define HIDP_PROTO_REPORT 0x01
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
struct l2cap_pcb;
|
||||
struct ctrl_req_t;
|
||||
|
||||
struct inquiry_info
|
||||
{
|
||||
struct bd_addr bdaddr;
|
||||
u8 cod[3];
|
||||
};
|
||||
|
||||
struct inquiry_info_ex
|
||||
{
|
||||
struct bd_addr bdaddr;
|
||||
u8 cod[3];
|
||||
u8 psrm;
|
||||
u8 psm;
|
||||
u16 co;
|
||||
};
|
||||
|
||||
struct linkkey_info
|
||||
{
|
||||
struct bd_addr bdaddr;
|
||||
u8 key[16];
|
||||
};
|
||||
|
||||
struct bte_pcb
|
||||
{
|
||||
u8 err;
|
||||
u32 state;
|
||||
void *cbarg;
|
||||
|
||||
struct ctrl_req_t *ctrl_req_head;
|
||||
struct ctrl_req_t *ctrl_req_tail;
|
||||
|
||||
lwpq_t cmdq;
|
||||
|
||||
struct bd_addr bdaddr;
|
||||
|
||||
struct l2cap_pcb *ctl_pcb;
|
||||
struct l2cap_pcb *data_pcb;
|
||||
|
||||
|
||||
s32 (*recv)(void *arg,void *buffer,u16 len);
|
||||
s32 (*conn_cfm)(void *arg,struct bte_pcb *pcb,u8 err);
|
||||
s32 (*disconn_cfm)(void *arg,struct bte_pcb *pcb,u8 err);
|
||||
};
|
||||
|
||||
typedef s32 (*btecallback)(s32 result,void *userdata);
|
||||
|
||||
void BTE_Init();
|
||||
void BTE_Shutdown();
|
||||
s32 BTE_InitCore(btecallback cb);
|
||||
s32 BTE_ApplyPatch(btecallback cb);
|
||||
s32 BTE_InitSub(btecallback cb);
|
||||
s32 BTE_ReadStoredLinkKey(struct linkkey_info *keys,u8 max_cnt,btecallback cb);
|
||||
s32 BTE_ReadBdAddr(struct bd_addr *bdaddr, btecallback cb);
|
||||
void (*BTE_SetDisconnectCallback(void (*callback)(struct bd_addr *bdaddr,u8 reason)))(struct bd_addr *bdaddr,u8 reason);
|
||||
|
||||
struct bte_pcb* bte_new();
|
||||
void bte_arg(struct bte_pcb *pcb,void *arg);
|
||||
void bte_received(struct bte_pcb *pcb, s32 (*recv)(void *arg,void *buffer,u16 len));
|
||||
void bte_disconnected(struct bte_pcb *pcb,s32 (disconn_cfm)(void *arg,struct bte_pcb *pcb,u8 err));
|
||||
|
||||
s32 bte_registerdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*conn_cfm)(void *arg,struct bte_pcb *pcb,u8 err));
|
||||
|
||||
s32 bte_disconnect(struct bte_pcb *pcb);
|
||||
|
||||
//s32 bte_listen(struct bte_pcb *pcb,struct bd_addr *bdaddr,u8 psm);
|
||||
//s32 bte_accept(struct bte_pcb *pcb,s32 (*recv)(void *arg,void *buffer,u16 len));
|
||||
s32 bte_inquiry(struct inquiry_info *info,u8 max_cnt,u8 flush);
|
||||
s32 bte_inquiry_ex(struct inquiry_info_ex *info,u8 max_cnt,u8 flush);
|
||||
//s32 bte_connect(struct bte_pcb *pcb,struct bd_addr *bdaddr,u8 psm,s32 (*recv)(void *arg,void *buffer,u16 len));
|
||||
//s32 bte_connect_ex(struct bte_pcb *pcb,struct inquiry_info_ex *info,u8 psm,s32 (*recv)(void *arg,void *buffer,u16 len));
|
||||
s32 bte_senddata(struct bte_pcb *pcb,void *message,u16 len);
|
||||
s32 bte_sendmessage(struct bte_pcb *pcb,void *message,u16 len);
|
||||
s32 bte_sendmessageasync(struct bte_pcb *pcb,void *message,u16 len,s32 (*sent)(void *arg,struct bte_pcb *pcb,u8 err));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef __DEBUG_H__
|
||||
#define __DEBUG_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
#define GDBSTUB_DEVICE_USB 0 /*!< device type: USBGecko */
|
||||
#define GDBSTUB_DEVICE_TCP 1 /*!< device type: BBA-TCP */
|
||||
|
||||
#define GDBSTUB_DEF_CHANNEL 0 /*!< default EXI channel. channel can be 0 or 1. Note: Used for device type USBGecko */
|
||||
#define GDBSTUB_DEF_TCPPORT 2828 /*!< default TCP port. Note: Used for device type TCP */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern const char *tcp_localip;
|
||||
extern const char *tcp_netmask;
|
||||
extern const char *tcp_gateway;
|
||||
|
||||
|
||||
/*!\fn void _break()
|
||||
* \brief Stub function to insert the hardware break instruction. This function is used to enter the debug stub and to
|
||||
* connect with the host. The developer is free to insert this function at any position in project's source code.
|
||||
*
|
||||
* \return none.
|
||||
*/
|
||||
void _break();
|
||||
|
||||
|
||||
/*!\fn void DEBUG_Init(s32 device_type,s32 channel_port)
|
||||
* \brief Performs the initialization of the debug stub.
|
||||
* \param[in] device_type type of device to use. can be either USB or TCP.
|
||||
* \param[in] channel_port depending on the used device this can be either the EXI channel or the TCP port.
|
||||
*
|
||||
* \return none.
|
||||
*/
|
||||
void DEBUG_Init(s32 device_type,s32 channel_port);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,133 @@
|
|||
/*-------------------------------------------------------------
|
||||
|
||||
di.h -- Drive Interface library
|
||||
|
||||
Team Twiizers
|
||||
Copyright (C) 2008
|
||||
|
||||
Erant
|
||||
marcan
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you
|
||||
must not claim that you wrote the original software. If you use
|
||||
this software in a product, an acknowledgment in the product
|
||||
documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
-------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
All buffers in this document need to be 32-byte aligned!
|
||||
*/
|
||||
|
||||
#ifndef __DI_H__
|
||||
#define __DI_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <ogc/ipc.h>
|
||||
#include <ogc/disc_io.h>
|
||||
|
||||
#define DVD_IDENTIFY 0x12
|
||||
#define DVD_READ_DISCID 0x70
|
||||
#define DVD_LOW_READ 0x71
|
||||
#define DVD_WAITFORCOVERCLOSE 0x79
|
||||
#define DVD_READ_PHYSICAL 0x80
|
||||
#define DVD_READ_COPYRIGHT 0x81
|
||||
#define DVD_READ_DISCKEY 0x82
|
||||
#define DVD_GETCOVER 0x88
|
||||
#define DVD_RESET 0x8A
|
||||
#define DVD_OPEN_PARTITION 0x8B
|
||||
#define DVD_CLOSE_PARTITION 0x8C
|
||||
#define DVD_READ_UNENCRYPTED 0x8D
|
||||
#define DVD_REPORTKEY 0xA4
|
||||
#define DVD_READ 0xD0
|
||||
#define DVD_READ_CONFIG 0xD1
|
||||
#define DVD_READ_BCA 0xDA
|
||||
#define DVD_GET_ERROR 0xE0
|
||||
#define DVD_SET_MOTOR 0xE3
|
||||
|
||||
#define DVD_READY 0x1
|
||||
#define DVD_INIT 0x2
|
||||
#define DVD_UNKNOWN 0x4
|
||||
#define DVD_NO_DISC 0x8
|
||||
#define DVD_IOS_ERROR 0x10
|
||||
#define DVD_D0 0x20
|
||||
#define DVD_A8 0x40
|
||||
|
||||
#define DVD_COVER_DISC_INSERTED 0x02
|
||||
|
||||
#define LIBDI_MAX_RETRIES 16
|
||||
|
||||
#define DEVICE_TYPE_WII_DVD (('W'<<24)|('D'<<16)|('V'<<8)|'D')
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct{
|
||||
uint16_t rev;
|
||||
uint16_t dev_code;
|
||||
uint32_t rel_date;
|
||||
}DI_DriveID;
|
||||
|
||||
typedef int(*di_callback)(uint32_t status, uint32_t error);
|
||||
typedef int(*read_func)(void*,uint32_t,uint32_t);
|
||||
typedef int(*read_func_async)(void*,uint32_t,uint32_t,ipccallback);
|
||||
|
||||
extern int di_fd;
|
||||
extern const DISC_INTERFACE __io_wiidvd;
|
||||
|
||||
int DI_Init();
|
||||
void DI_LoadDVDX(bool load);
|
||||
void DI_UseCache(bool use);
|
||||
void DI_SetInitCallback(di_callback cb);
|
||||
void DI_Mount();
|
||||
void DI_Close();
|
||||
int DI_GetStatus();
|
||||
|
||||
int DI_Identify(DI_DriveID* id);
|
||||
int DI_CheckDVDSupport();
|
||||
int DI_ReadDiscID(u64 *id);
|
||||
int DI_GetError(uint32_t* error);
|
||||
int DI_GetCoverRegister(uint32_t* status);
|
||||
int DI_Reset();
|
||||
|
||||
int DI_StopMotor();
|
||||
int DI_Eject();
|
||||
int DI_KillDrive();
|
||||
|
||||
int DI_ReadDVD(void* buf, uint32_t len, uint32_t lba);
|
||||
int DI_ReadDVDAsync(void* buf, uint32_t len, uint32_t lba, ipccallback ipc_cb);
|
||||
|
||||
int DI_Read(void *buf, u32 size, u32 offset);
|
||||
int DI_UnencryptedRead(void *buf, u32 size, u32 offset);
|
||||
|
||||
int DI_ReadDVDConfig(uint32_t* val, uint32_t flag);
|
||||
int DI_ReadDVDCopyright(uint32_t* copyright);
|
||||
int DI_ReadDVDDiscKey(void *buf);
|
||||
int DI_ReadDVDPhysical(void *buf);
|
||||
int DI_Read_BCA(void *buf);
|
||||
int DI_ReportKey(int keytype, uint32_t lba, void* buf);
|
||||
|
||||
int DI_OpenPartition(u32 offset);
|
||||
int DI_ClosePartition(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
fat.h
|
||||
Simple functionality for startup, mounting and unmounting of FAT-based devices.
|
||||
|
||||
Copyright (c) 2006 - 2012
|
||||
Michael "Chishm" Chisholm
|
||||
Dave "WinterMute" Murphy
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
3. The name of the author may not be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _LIBFAT_H
|
||||
#define _LIBFAT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "libfatversion.h"
|
||||
|
||||
// When compiling for NDS, make sure NDS is defined
|
||||
#ifndef NDS
|
||||
#if defined ARM9 || defined ARM7
|
||||
#define NDS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(__gamecube__) || defined (__wii__)
|
||||
# include <ogc/disc_io.h>
|
||||
#else
|
||||
# ifdef NDS
|
||||
# include <nds/disc_io.h>
|
||||
# else
|
||||
# include <disc_io.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
Initialise any inserted block-devices.
|
||||
Add the fat device driver to the devoptab, making it available for standard file functions.
|
||||
cacheSize: The number of pages to allocate for each inserted block-device
|
||||
setAsDefaultDevice: if true, make this the default device driver for file operations
|
||||
*/
|
||||
extern bool fatInit (uint32_t cacheSize, bool setAsDefaultDevice);
|
||||
|
||||
/*
|
||||
Calls fatInit with setAsDefaultDevice = true and cacheSize optimised for the host system.
|
||||
*/
|
||||
extern bool fatInitDefault (void);
|
||||
|
||||
/*
|
||||
Mount the device pointed to by interface, and set up a devoptab entry for it as "name:".
|
||||
You can then access the filesystem using "name:/".
|
||||
This will mount the active partition or the first valid partition on the disc,
|
||||
and will use a cache size optimized for the host system.
|
||||
*/
|
||||
extern bool fatMountSimple (const char* name, const DISC_INTERFACE* interface);
|
||||
|
||||
/*
|
||||
Mount the device pointed to by interface, and set up a devoptab entry for it as "name:".
|
||||
You can then access the filesystem using "name:/".
|
||||
If startSector = 0, it will mount the active partition of the first valid partition on
|
||||
the disc. Otherwise it will try to mount the partition starting at startSector.
|
||||
cacheSize specifies the number of pages to allocate for the cache.
|
||||
This will not startup the disc, so you need to call interface->startup(); first.
|
||||
*/
|
||||
extern bool fatMount (const char* name, const DISC_INTERFACE* interface, sec_t startSector, uint32_t cacheSize, uint32_t SectorsPerPage);
|
||||
|
||||
/*
|
||||
Unmount the partition specified by name.
|
||||
If there are open files, it will attempt to synchronise them to disc.
|
||||
*/
|
||||
extern void fatUnmount (const char* name);
|
||||
|
||||
/*
|
||||
Get Volume Label
|
||||
*/
|
||||
extern void fatGetVolumeLabel (const char* name, char *label);
|
||||
|
||||
// File attributes
|
||||
#define ATTR_ARCHIVE 0x20 // Archive
|
||||
#define ATTR_DIRECTORY 0x10 // Directory
|
||||
#define ATTR_VOLUME 0x08 // Volume
|
||||
#define ATTR_SYSTEM 0x04 // System
|
||||
#define ATTR_HIDDEN 0x02 // Hidden
|
||||
#define ATTR_READONLY 0x01 // Read only
|
||||
|
||||
/*
|
||||
Methods to modify DOS File Attributes
|
||||
*/
|
||||
int FAT_getAttr(const char *file);
|
||||
int FAT_setAttr(const char *file, uint8_t attr );
|
||||
|
||||
#define LIBFAT_FEOS_MULTICWD
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _LIBFAT_H
|
|
@ -0,0 +1,150 @@
|
|||
/*-------------------------------------------------------------
|
||||
|
||||
gccore.h -- GC core header
|
||||
|
||||
Copyright (C) 2004
|
||||
Michael Wiedenbauer (shagkur)
|
||||
Dave Murphy (WinterMute)
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you
|
||||
must not claim that you wrote the original software. If you use
|
||||
this software in a product, an acknowledgment in the product
|
||||
documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
-------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifndef __GCCORE_H__
|
||||
#define __GCCORE_H__
|
||||
|
||||
/*! \file gccore.h
|
||||
\brief Core header which includes all subsequent subsystem headers
|
||||
|
||||
*/
|
||||
|
||||
#include "ogc/dsp.h"
|
||||
#include "ogc/aram.h"
|
||||
#include "ogc/arqueue.h"
|
||||
#include "ogc/arqmgr.h"
|
||||
#include "ogc/audio.h"
|
||||
#include "ogc/cache.h"
|
||||
#include "ogc/card.h"
|
||||
#include "ogc/cast.h"
|
||||
#include "ogc/color.h"
|
||||
#include "ogc/consol.h"
|
||||
#include "ogc/dvd.h"
|
||||
#include "ogc/exi.h"
|
||||
#include "ogc/gu.h"
|
||||
#include "ogc/gx.h"
|
||||
#include "ogc/si.h"
|
||||
#include "ogc/gx_struct.h"
|
||||
#include "ogc/irq.h"
|
||||
#include "ogc/lwp.h"
|
||||
#include "ogc/mutex.h"
|
||||
#include "ogc/message.h"
|
||||
#include "ogc/semaphore.h"
|
||||
#include "ogc/pad.h"
|
||||
#include "ogc/tpl.h"
|
||||
#include "ogc/system.h"
|
||||
#include "ogc/video.h"
|
||||
#include "ogc/usbgecko.h"
|
||||
#include "ogc/video_types.h"
|
||||
#include "ogc/texconv.h"
|
||||
|
||||
#if defined(HW_RVL)
|
||||
#include "ogc/ipc.h"
|
||||
#include "ogc/es.h"
|
||||
#include "ogc/stm.h"
|
||||
#include "ogc/ios.h"
|
||||
#include "ogc/usb.h"
|
||||
#include "ogc/isfs.h"
|
||||
#include "ogc/conf.h"
|
||||
#include "ogc/usbstorage.h"
|
||||
|
||||
#include "ogc/wiilaunch.h"
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Error returns
|
||||
*/
|
||||
#define RNC_FILE_IS_NOT_RNC -1
|
||||
#define RNC_HUF_DECODE_ERROR -2
|
||||
#define RNC_FILE_SIZE_MISMATCH -3
|
||||
#define RNC_PACKED_CRC_ERROR -4
|
||||
#define RNC_UNPACKED_CRC_ERROR -5
|
||||
|
||||
#ifndef ATTRIBUTE_ALIGN
|
||||
# define ATTRIBUTE_ALIGN(v) __attribute__((aligned(v)))
|
||||
#endif
|
||||
#ifndef ATTRIBUTE_PACKED
|
||||
# define ATTRIBUTE_PACKED __attribute__((packed))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
/*!
|
||||
* \mainpage
|
||||
*
|
||||
* - \subpage intro
|
||||
* - \subpage api_doc
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
* \page intro Introduction
|
||||
* Welcome to the libOGC reference documentation.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* \page api_doc Detailed API description
|
||||
*
|
||||
* - \ref aram.h "ARAM subsystem"
|
||||
* - \ref arqmgr.h "ARAM queue management subsystem"
|
||||
* - \ref audio.h "AUDIO subsystem"
|
||||
* - \ref asndlib.h "ASND library"
|
||||
* - \ref exi.h "EXI subsystem"
|
||||
* - \ref irq.h "IRQ subsystem"
|
||||
* - \ref dsp.h "DSP subsystem"
|
||||
* - \ref dvd.h "DVD subsystem"
|
||||
* - \ref gx.h "GX subsystem"
|
||||
* - \ref gu.h "gu/Matrix subsystem"
|
||||
* - \ref video.h "VIDEO subsystem"
|
||||
* - \ref cache.h "Cache subsystem"
|
||||
* - \ref card.h "Memory card subsystem"
|
||||
* - \ref consol.h "Console subsystem"
|
||||
* - \ref system.h "OS functions and initialization"
|
||||
* - \ref lwp.h "Thread subsystem I"
|
||||
* - \ref message.h "Thread subsystem II"
|
||||
* - \ref mutex.h "Thread subsystem III"
|
||||
* - \ref semaphore.h "Thread subsystem IV"
|
||||
* - \ref cond.h "Thread subsystem V"
|
||||
*/
|
||||
|
||||
s32 depackrnc1_ulen(void *packed);
|
||||
s32 depackrnc1(void *packed,void *unpacked);
|
||||
|
||||
void depackrnc2(void *packed,void *unpacked);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
|
@ -0,0 +1,44 @@
|
|||
#ifndef __GCMODPLAY_H__
|
||||
#define __GCMODPLAY_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
#include "modplay/modplay.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef struct _modsndbuf {
|
||||
u32 freq;
|
||||
u16 fmt;
|
||||
u32 chans;
|
||||
f32 samples;
|
||||
void *usr_data;
|
||||
void (*callback)(void *,u8 *,u32);
|
||||
} MODSNDBUF;
|
||||
|
||||
typedef struct _modplay {
|
||||
MOD mod;
|
||||
BOOL playing,paused;
|
||||
BOOL bits,stereo,manual_polling;
|
||||
u32 playfreq,numSFXChans;
|
||||
MODSNDBUF soundBuf;
|
||||
} MODPlay;
|
||||
|
||||
void MODPlay_Init(MODPlay *mod);
|
||||
s32 MODPlay_SetFrequency(MODPlay *mod,u32 freq);
|
||||
void MODPlay_SetStereo(MODPlay *mod,BOOL stereo);
|
||||
s32 MODPlay_SetMOD(MODPlay *mod,const void *mem);
|
||||
void MODPlay_Unload(MODPlay *mod);
|
||||
s32 MODPlay_AllocSFXChannels(MODPlay *mod,u32 sfxchans);
|
||||
s32 MODPlay_Start(MODPlay *mod);
|
||||
s32 MODPlay_Stop(MODPlay *mod);
|
||||
s32 MODPlay_TriggerNote(MODPlay *mod,u32 chan,u8 inst,u16 freq,u8 vol);
|
||||
s32 MODPlay_Pause(MODPlay *mod,BOOL);
|
||||
void MODPlay_SetVolume(MODPlay * mod, s32 musicvolume, s32 sfxvolume);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
|
@ -0,0 +1,110 @@
|
|||
#ifndef __GCTYPES_H__
|
||||
#define __GCTYPES_H__
|
||||
|
||||
/*! \file gctypes.h
|
||||
\brief Data type definitions
|
||||
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef uint8_t u8; ///< 8bit unsigned integer
|
||||
typedef uint16_t u16; ///< 16bit unsigned integer
|
||||
typedef uint32_t u32; ///< 32bit unsigned integer
|
||||
typedef uint64_t u64; ///< 64bit unsigned integer
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef int8_t s8; ///< 8bit signed integer
|
||||
typedef int16_t s16; ///< 16bit signed integer
|
||||
typedef int32_t s32; ///< 32bit signed integer
|
||||
typedef int64_t s64; ///< 64bit signed integer
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef volatile u8 vu8; ///< 8bit unsigned volatile integer
|
||||
typedef volatile u16 vu16; ///< 16bit unsigned volatile integer
|
||||
typedef volatile u32 vu32; ///< 32bit unsigned volatile integer
|
||||
typedef volatile u64 vu64; ///< 64bit unsigned volatile integer
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef volatile s8 vs8; ///< 8bit signed volatile integer
|
||||
typedef volatile s16 vs16; ///< 16bit signed volatile integer
|
||||
typedef volatile s32 vs32; ///< 32bit signed volatile integer
|
||||
typedef volatile s64 vs64; ///< 64bit signed volatile integer
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
// fixed point math typedefs
|
||||
typedef s16 sfp16; ///< signed 8:8 fixed point
|
||||
typedef s32 sfp32; ///< signed 20:8 fixed point
|
||||
typedef u16 ufp16; ///< unsigned 8:8 fixed point
|
||||
typedef u32 ufp32; ///< unsigned 24:8 fixed point
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
typedef volatile float vf32;
|
||||
typedef volatile double vf64;
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
|
||||
|
||||
typedef unsigned int BOOL;
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
// alias type typedefs
|
||||
#define FIXED s32 ///< Alias type for sfp32
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef TRUE
|
||||
#define TRUE 1 ///< True
|
||||
#endif
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef FALSE
|
||||
#define FALSE 0 ///< False
|
||||
#endif
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef NULL
|
||||
#define NULL 0 ///< Pointer to 0
|
||||
#endif
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef LITTLE_ENDIAN
|
||||
#define LITTLE_ENDIAN 3412
|
||||
#endif /* LITTLE_ENDIAN */
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef BIG_ENDIAN
|
||||
#define BIG_ENDIAN 1234
|
||||
#endif /* BIGE_ENDIAN */
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
#ifndef BYTE_ORDER
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#endif /* BYTE_ORDER */
|
||||
/*+----------------------------------------------------------------------------------------------+*/
|
||||
|
||||
|
||||
//! argv structure
|
||||
/*! \struct __argv
|
||||
|
||||
structure used to set up argc/argv
|
||||
|
||||
*/
|
||||
struct __argv {
|
||||
int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid
|
||||
char *commandLine; //!< base address of command line, set of null terminated strings
|
||||
int length;//!< total length of command line
|
||||
int argc;
|
||||
char **argv;
|
||||
char **endARGV;
|
||||
};
|
||||
|
||||
//! Default location for the system argv structure.
|
||||
extern struct __argv *__system_argv;
|
||||
|
||||
// argv struct magic number
|
||||
#define ARGV_MAGIC 0x5f617267
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* TYPES_H */
|
||||
|
||||
|
||||
/* END OF FILE */
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef __GCUTIL_H__
|
||||
#define __GCUTIL_H__
|
||||
|
||||
#ifndef ATTRIBUTE_ALIGN
|
||||
# define ATTRIBUTE_ALIGN(v) __attribute__((aligned(v)))
|
||||
#endif
|
||||
#ifndef ATTRIBUTE_PACKED
|
||||
# define ATTRIBUTE_PACKED __attribute__((packed))
|
||||
#endif
|
||||
|
||||
#endif /* _GCUTIL_H */
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_ICMP_H__
|
||||
#define __LWIP_ICMP_H__
|
||||
|
||||
#include "lwip/arch.h"
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/pbuf.h"
|
||||
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/netif.h"
|
||||
|
||||
#define ICMP_ER 0 /* echo reply */
|
||||
#define ICMP_DUR 3 /* destination unreachable */
|
||||
#define ICMP_SQ 4 /* source quench */
|
||||
#define ICMP_RD 5 /* redirect */
|
||||
#define ICMP_ECHO 8 /* echo */
|
||||
#define ICMP_TE 11 /* time exceeded */
|
||||
#define ICMP_PP 12 /* parameter problem */
|
||||
#define ICMP_TS 13 /* timestamp */
|
||||
#define ICMP_TSR 14 /* timestamp reply */
|
||||
#define ICMP_IRQ 15 /* information request */
|
||||
#define ICMP_IR 16 /* information reply */
|
||||
|
||||
enum icmp_dur_type {
|
||||
ICMP_DUR_NET = 0, /* net unreachable */
|
||||
ICMP_DUR_HOST = 1, /* host unreachable */
|
||||
ICMP_DUR_PROTO = 2, /* protocol unreachable */
|
||||
ICMP_DUR_PORT = 3, /* port unreachable */
|
||||
ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */
|
||||
ICMP_DUR_SR = 5 /* source route failed */
|
||||
};
|
||||
|
||||
enum icmp_te_type {
|
||||
ICMP_TE_TTL = 0, /* time to live exceeded in transit */
|
||||
ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */
|
||||
};
|
||||
|
||||
void icmp_input(struct pbuf *p, struct netif *inp);
|
||||
|
||||
void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t);
|
||||
void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t);
|
||||
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/bpstruct.h"
|
||||
#endif
|
||||
PACK_STRUCT_BEGIN
|
||||
struct icmp_echo_hdr {
|
||||
PACK_STRUCT_FIELD(u16_t _type_code);
|
||||
PACK_STRUCT_FIELD(u16_t chksum);
|
||||
PACK_STRUCT_FIELD(u16_t id);
|
||||
PACK_STRUCT_FIELD(u16_t seqno);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
|
||||
PACK_STRUCT_BEGIN
|
||||
struct icmp_dur_hdr {
|
||||
PACK_STRUCT_FIELD(u16_t _type_code);
|
||||
PACK_STRUCT_FIELD(u16_t chksum);
|
||||
PACK_STRUCT_FIELD(u32_t unused);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
|
||||
PACK_STRUCT_BEGIN
|
||||
struct icmp_te_hdr {
|
||||
PACK_STRUCT_FIELD(u16_t _type_code);
|
||||
PACK_STRUCT_FIELD(u16_t chksum);
|
||||
PACK_STRUCT_FIELD(u32_t unused);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/epstruct.h"
|
||||
#endif
|
||||
|
||||
#define ICMPH_TYPE(hdr) (ntohs((hdr)->_type_code) >> 8)
|
||||
#define ICMPH_CODE(hdr) (ntohs((hdr)->_type_code) & 0xff)
|
||||
|
||||
#define ICMPH_TYPE_SET(hdr, type) ((hdr)->_type_code = htons(ICMPH_CODE(hdr) | ((type) << 8)))
|
||||
#define ICMPH_CODE_SET(hdr, code) ((hdr)->_type_code = htons((code) | (ICMPH_TYPE(hdr) << 8)))
|
||||
|
||||
#endif /* __LWIP_ICMP_H__ */
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_INET_H__
|
||||
#define __LWIP_INET_H__
|
||||
|
||||
#include "lwip/arch.h"
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
u16_t inet_chksum(void *dataptr, u16_t len);
|
||||
#if 0 /* optimized routine */
|
||||
u16_t inet_chksum4(u8_t *dataptr, u16_t len);
|
||||
#endif
|
||||
u16_t inet_chksum_pbuf(struct pbuf *p);
|
||||
u16_t inet_chksum_pseudo(struct pbuf *p,
|
||||
struct ip_addr *src, struct ip_addr *dest,
|
||||
u8_t proto, u16_t proto_len);
|
||||
|
||||
u32_t inet_addr(const char *cp);
|
||||
s8_t inet_aton(const char *cp, struct in_addr *addr);
|
||||
char *inet_ntoa(struct in_addr addr); /* returns ptr to static buffer; not reentrant! */
|
||||
|
||||
#ifdef htons
|
||||
#undef htons
|
||||
#endif /* htons */
|
||||
#ifdef htonl
|
||||
#undef htonl
|
||||
#endif /* htonl */
|
||||
#ifdef ntohs
|
||||
#undef ntohs
|
||||
#endif /* ntohs */
|
||||
#ifdef ntohl
|
||||
#undef ntohl
|
||||
#endif /* ntohl */
|
||||
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
#define htons(x) (x)
|
||||
#define ntohs(x) (x)
|
||||
#define htonl(x) (x)
|
||||
#define ntohl(x) (x)
|
||||
#else
|
||||
#ifdef LWIP_PREFIX_BYTEORDER_FUNCS
|
||||
/* workaround for naming collisions on some platforms */
|
||||
#define htons lwip_htons
|
||||
#define ntohs lwip_ntohs
|
||||
#define htonl lwip_htonl
|
||||
#define ntohl lwip_ntohl
|
||||
#endif
|
||||
u16_t htons(u16_t x);
|
||||
u16_t ntohs(u16_t x);
|
||||
u32_t htonl(u32_t x);
|
||||
u32_t ntohl(u32_t x);
|
||||
#endif
|
||||
|
||||
#endif /* __LWIP_INET_H__ */
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_IP_H__
|
||||
#define __LWIP_IP_H__
|
||||
|
||||
#include "lwip/arch.h"
|
||||
|
||||
#include "lwip/def.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
#include "lwip/err.h"
|
||||
|
||||
|
||||
void ip_init(void);
|
||||
struct netif *ip_route(struct ip_addr *dest);
|
||||
err_t ip_input(struct pbuf *p, struct netif *inp);
|
||||
err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
|
||||
u8_t ttl, u8_t tos, u8_t proto);
|
||||
err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
|
||||
u8_t ttl, u8_t tos, u8_t proto,
|
||||
struct netif *netif);
|
||||
|
||||
#define IP_HLEN 20
|
||||
|
||||
#define IP_PROTO_ICMP 1
|
||||
#define IP_PROTO_UDP 17
|
||||
#define IP_PROTO_UDPLITE 170
|
||||
#define IP_PROTO_TCP 6
|
||||
|
||||
/* This is passed as the destination address to ip_output_if (not
|
||||
to ip_output), meaning that an IP header already is constructed
|
||||
in the pbuf. This is used when TCP retransmits. */
|
||||
#ifdef IP_HDRINCL
|
||||
#undef IP_HDRINCL
|
||||
#endif /* IP_HDRINCL */
|
||||
#define IP_HDRINCL NULL
|
||||
|
||||
|
||||
/* This is the common part of all PCB types. It needs to be at the
|
||||
beginning of a PCB type definition. It is located here so that
|
||||
changes to this common part are made in one location instead of
|
||||
having to change all PCB structs. */
|
||||
#define IP_PCB struct ip_addr local_ip; \
|
||||
struct ip_addr remote_ip; \
|
||||
/* Socket options */ \
|
||||
u16_t so_options; \
|
||||
/* Type Of Service */ \
|
||||
u8_t tos; \
|
||||
/* Time To Live */ \
|
||||
u8_t ttl
|
||||
|
||||
/*
|
||||
* Option flags per-socket. These are the same like SO_XXX.
|
||||
*/
|
||||
#define SOF_DEBUG (u16_t)0x0001U /* turn on debugging info recording */
|
||||
#define SOF_ACCEPTCONN (u16_t)0x0002U /* socket has had listen() */
|
||||
#define SOF_REUSEADDR (u16_t)0x0004U /* allow local address reuse */
|
||||
#define SOF_KEEPALIVE (u16_t)0x0008U /* keep connections alive */
|
||||
#define SOF_DONTROUTE (u16_t)0x0010U /* just use interface addresses */
|
||||
#define SOF_BROADCAST (u16_t)0x0020U /* permit sending of broadcast msgs */
|
||||
#define SOF_USELOOPBACK (u16_t)0x0040U /* bypass hardware when possible */
|
||||
#define SOF_LINGER (u16_t)0x0080U /* linger on close if data present */
|
||||
#define SOF_OOBINLINE (u16_t)0x0100U /* leave received OOB data in line */
|
||||
#define SOF_REUSEPORT (u16_t)0x0200U /* allow local address & port reuse */
|
||||
|
||||
|
||||
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/bpstruct.h"
|
||||
#endif
|
||||
PACK_STRUCT_BEGIN
|
||||
struct ip_hdr {
|
||||
/* version / header length / type of service */
|
||||
PACK_STRUCT_FIELD(u16_t _v_hl_tos);
|
||||
/* total length */
|
||||
PACK_STRUCT_FIELD(u16_t _len);
|
||||
/* identification */
|
||||
PACK_STRUCT_FIELD(u16_t _id);
|
||||
/* fragment offset field */
|
||||
PACK_STRUCT_FIELD(u16_t _offset);
|
||||
#define IP_RF 0x8000 /* reserved fragment flag */
|
||||
#define IP_DF 0x4000 /* dont fragment flag */
|
||||
#define IP_MF 0x2000 /* more fragments flag */
|
||||
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
|
||||
/* time to live / protocol*/
|
||||
PACK_STRUCT_FIELD(u16_t _ttl_proto);
|
||||
/* checksum */
|
||||
PACK_STRUCT_FIELD(u16_t _chksum);
|
||||
/* source and destination IP addresses */
|
||||
PACK_STRUCT_FIELD(struct ip_addr src);
|
||||
PACK_STRUCT_FIELD(struct ip_addr dest);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/epstruct.h"
|
||||
#endif
|
||||
|
||||
#define IPH_V(hdr) (ntohs((hdr)->_v_hl_tos) >> 12)
|
||||
#define IPH_HL(hdr) ((ntohs((hdr)->_v_hl_tos) >> 8) & 0x0f)
|
||||
#define IPH_TOS(hdr) (ntohs((hdr)->_v_hl_tos) & 0xff)
|
||||
#define IPH_LEN(hdr) ((hdr)->_len)
|
||||
#define IPH_ID(hdr) ((hdr)->_id)
|
||||
#define IPH_OFFSET(hdr) ((hdr)->_offset)
|
||||
#define IPH_TTL(hdr) (ntohs((hdr)->_ttl_proto) >> 8)
|
||||
#define IPH_PROTO(hdr) (ntohs((hdr)->_ttl_proto) & 0xff)
|
||||
#define IPH_CHKSUM(hdr) ((hdr)->_chksum)
|
||||
|
||||
#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = (htons(((v) << 12) | ((hl) << 8) | (tos)))
|
||||
#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len)
|
||||
#define IPH_ID_SET(hdr, id) (hdr)->_id = (id)
|
||||
#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off)
|
||||
#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl_proto = (htons(IPH_PROTO(hdr) | ((ttl) << 8)))
|
||||
#define IPH_PROTO_SET(hdr, proto) (hdr)->_ttl_proto = (htons((proto) | (IPH_TTL(hdr) << 8)))
|
||||
#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum)
|
||||
|
||||
#if IP_DEBUG
|
||||
void ip_debug_print(struct pbuf *p);
|
||||
#else
|
||||
#define ip_debug_print(p)
|
||||
#endif /* IP_DEBUG */
|
||||
|
||||
#endif /* __LWIP_IP_H__ */
|
||||
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_IP_ADDR_H__
|
||||
#define __LWIP_IP_ADDR_H__
|
||||
|
||||
#include "lwip/arch.h"
|
||||
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/bpstruct.h"
|
||||
#endif
|
||||
PACK_STRUCT_BEGIN
|
||||
struct ip_addr {
|
||||
PACK_STRUCT_FIELD(u32_t addr);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/epstruct.h"
|
||||
#endif
|
||||
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/bpstruct.h"
|
||||
#endif
|
||||
PACK_STRUCT_BEGIN
|
||||
struct ip_addr2 {
|
||||
PACK_STRUCT_FIELD(u16_t addrw[2]);
|
||||
} PACK_STRUCT_STRUCT;
|
||||
PACK_STRUCT_END
|
||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||
# include "arch/epstruct.h"
|
||||
#endif
|
||||
|
||||
/* For compatibility with BSD code */
|
||||
#ifndef HAVE_IN_ADDR
|
||||
#define HAVE_IN_ADDR
|
||||
struct in_addr {
|
||||
u32_t s_addr;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct netif;
|
||||
|
||||
extern const struct ip_addr ip_addr_any;
|
||||
extern const struct ip_addr ip_addr_broadcast;
|
||||
|
||||
/** IP_ADDR_ can be used as a fixed IP address
|
||||
* for the wildcard and the broadcast address
|
||||
*/
|
||||
#define IP_ADDR_ANY ((struct ip_addr *)&ip_addr_any)
|
||||
#define IP_ADDR_BROADCAST ((struct ip_addr *)&ip_addr_broadcast)
|
||||
|
||||
#define INADDR_NONE ((u32_t) 0xffffffff) /* 255.255.255.255 */
|
||||
#define INADDR_LOOPBACK ((u32_t) 0x7f000001) /* 127.0.0.1 */
|
||||
|
||||
/* Definitions of the bits in an Internet address integer.
|
||||
|
||||
On subnets, host and network parts are found according to
|
||||
the subnet mask, not these masks. */
|
||||
|
||||
#define IN_CLASSA(a) ((((u32_t)(a)) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
|
||||
#define IN_CLASSA_MAX 128
|
||||
|
||||
#define IN_CLASSB(a) ((((u32_t)(a)) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
|
||||
#define IN_CLASSB_MAX 65536
|
||||
|
||||
#define IN_CLASSC(a) ((((u32_t)(a)) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
|
||||
|
||||
#define IN_CLASSD(a) (((u32_t)(a) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
|
||||
#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
|
||||
#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
|
||||
#define IN_MULTICAST(a) IN_CLASSD(a)
|
||||
|
||||
#define IN_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000) == 0xf0000000)
|
||||
#define IN_BADCLASS(a) (((u32_t)(a) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
#define IN_LOOPBACKNET 127 /* official! */
|
||||
|
||||
|
||||
#define IP4_ADDR(ipaddr, a,b,c,d) (ipaddr)->addr = htonl(((u32_t)(a & 0xff) << 24) | ((u32_t)(b & 0xff) << 16) | \
|
||||
((u32_t)(c & 0xff) << 8) | (u32_t)(d & 0xff))
|
||||
|
||||
#define ip_addr_set(dest, src) (dest)->addr = \
|
||||
((src) == NULL? 0:\
|
||||
(src)->addr)
|
||||
/**
|
||||
* Determine if two address are on the same network.
|
||||
*
|
||||
* @arg addr1 IP address 1
|
||||
* @arg addr2 IP address 2
|
||||
* @arg mask network identifier mask
|
||||
* @return !0 if the network identifiers of both address match
|
||||
*/
|
||||
#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
|
||||
(mask)->addr) == \
|
||||
((addr2)->addr & \
|
||||
(mask)->addr))
|
||||
#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr)
|
||||
|
||||
#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == 0)
|
||||
|
||||
u8_t ip_addr_isbroadcast(struct ip_addr *, struct netif *);
|
||||
|
||||
#define ip_addr_ismulticast(addr1) (((addr1)->addr & ntohl(0xf0000000)) == ntohl(0xe0000000))
|
||||
|
||||
|
||||
#define ip_addr_debug_print(debug, ipaddr) LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \
|
||||
ipaddr?(u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff:0, \
|
||||
ipaddr?(u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff:0, \
|
||||
ipaddr?(u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff:0, \
|
||||
ipaddr?(u16_t)ntohl((ipaddr)->addr) & 0xff:0U))
|
||||
|
||||
/* cast to unsigned int, as it is used as argument to printf functions
|
||||
* which expect integer arguments. CSi: use cc.h formatters (conversion chars)! */
|
||||
#define ip4_addr1(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff)
|
||||
#define ip4_addr2(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff)
|
||||
#define ip4_addr3(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff)
|
||||
#define ip4_addr4(ipaddr) ((u16_t)(ntohl((ipaddr)->addr)) & 0xff)
|
||||
#endif /* __LWIP_IP_ADDR_H__ */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Jani Monoses <jani@iv.ro>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LWIP_IP_FRAG_H__
|
||||
#define __LWIP_IP_FRAG_H__
|
||||
|
||||
#include "lwip/err.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/netif.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
void ip_reass_tmr(void);
|
||||
struct pbuf * ip_reass(struct pbuf *p);
|
||||
err_t ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest);
|
||||
|
||||
#endif /* __LWIP_IP_FRAG_H__ */
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/****************************************************************************
|
||||
* ISO9660 devoptab
|
||||
*
|
||||
* Copyright (C) 2008-2010
|
||||
* tipoloski, clava, shagkur, Tantric, joedj
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ISO9660_H__
|
||||
#define __ISO9660_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
#define ISO_MAXPATHLEN 128
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
bool ISO9660_Mount(const char* name, const DISC_INTERFACE* disc_interface);
|
||||
bool ISO9660_Unmount(const char* name);
|
||||
const char *ISO9660_GetVolumeLabel(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef __LIBFATVERSION_H__
|
||||
#define __LIBFATVERSION_H__
|
||||
|
||||
#define _LIBFAT_MAJOR_ 1
|
||||
#define _LIBFAT_MINOR_ 1
|
||||
#define _LIBFAT_PATCH_ 1
|
||||
|
||||
#define _LIBFAT_STRING "libFAT Release 1.1.1"
|
||||
|
||||
#endif // __LIBFATVERSION_H__
|
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_API_H__
|
||||
#define __LWIP_API_H__
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/sys.h"
|
||||
|
||||
#include "lwip/ip.h"
|
||||
|
||||
#include "lwip/raw.h"
|
||||
#include "lwip/udp.h"
|
||||
#include "lwip/tcp.h"
|
||||
|
||||
#include "lwip/err.h"
|
||||
|
||||
#define NETCONN_NOCOPY 0x00
|
||||
#define NETCONN_COPY 0x01
|
||||
|
||||
enum netconn_type {
|
||||
NETCONN_TCP,
|
||||
NETCONN_UDP,
|
||||
NETCONN_UDPLITE,
|
||||
NETCONN_UDPNOCHKSUM,
|
||||
NETCONN_RAW
|
||||
};
|
||||
|
||||
enum netconn_state {
|
||||
NETCONN_NONE,
|
||||
NETCONN_WRITE,
|
||||
NETCONN_ACCEPT,
|
||||
NETCONN_RECV,
|
||||
NETCONN_CONNECT,
|
||||
NETCONN_CLOSE
|
||||
};
|
||||
|
||||
enum netconn_evt {
|
||||
NETCONN_EVTRCVPLUS,
|
||||
NETCONN_EVTRCVMINUS,
|
||||
NETCONN_EVTSENDPLUS,
|
||||
NETCONN_EVTSENDMINUS
|
||||
};
|
||||
|
||||
struct netbuf {
|
||||
struct pbuf *p, *ptr;
|
||||
struct ip_addr *fromaddr;
|
||||
u16_t fromport;
|
||||
err_t err;
|
||||
};
|
||||
|
||||
struct netconn {
|
||||
enum netconn_type type;
|
||||
enum netconn_state state;
|
||||
union {
|
||||
struct tcp_pcb *tcp;
|
||||
struct udp_pcb *udp;
|
||||
struct raw_pcb *raw;
|
||||
} pcb;
|
||||
err_t err;
|
||||
sys_sem sem;
|
||||
sys_mbox mbox;
|
||||
sys_mbox recvmbox;
|
||||
sys_mbox acceptmbox;
|
||||
u16 recvavail;
|
||||
s32 socket;
|
||||
void (*callback)(struct netconn *,enum netconn_evt,u32);
|
||||
};
|
||||
|
||||
#endif /* __LWIP_API_H__ */
|
||||
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_API_MSG_H__
|
||||
#define __LWIP_API_MSG_H__
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/sys.h"
|
||||
|
||||
#include "lwip/ip.h"
|
||||
|
||||
#include "lwip/udp.h"
|
||||
#include "lwip/tcp.h"
|
||||
|
||||
#include "lwip/api.h"
|
||||
|
||||
enum apimsg_type {
|
||||
APIMSG_NEWCONN,
|
||||
APIMSG_DELCONN,
|
||||
APIMSG_BIND,
|
||||
APIMSG_CONNECT,
|
||||
APIMSG_DISCONNECT,
|
||||
APIMSG_LISTEN,
|
||||
APIMSG_ACCEPT,
|
||||
APIMSG_SEND,
|
||||
APIMSG_RECV,
|
||||
APIMSG_WRITE,
|
||||
APIMSG_CLOSE,
|
||||
APIMSG_MAX
|
||||
};
|
||||
|
||||
struct apimsg_msg {
|
||||
struct netconn *conn;
|
||||
enum netconn_type type;
|
||||
union {
|
||||
struct pbuf *p;
|
||||
struct {
|
||||
struct ip_addr *ipaddr;
|
||||
u16 port;
|
||||
} bc;
|
||||
struct {
|
||||
void *dataptr;
|
||||
u32 len;
|
||||
u8 copy;
|
||||
} w;
|
||||
sys_mbox mbox;
|
||||
u16 len;
|
||||
} msg;
|
||||
};
|
||||
|
||||
struct api_msg {
|
||||
enum apimsg_type type;
|
||||
struct apimsg_msg msg;
|
||||
};
|
||||
|
||||
#endif /* __LWIP_API_MSG_H__ */
|
||||
|
|
@ -0,0 +1,216 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_ARCH_H__
|
||||
#define __LWIP_ARCH_H__
|
||||
|
||||
#ifndef LITTLE_ENDIAN
|
||||
#define LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
|
||||
#ifndef BIG_ENDIAN
|
||||
#define BIG_ENDIAN 4321
|
||||
#endif
|
||||
|
||||
#include "arch/cc.h"
|
||||
|
||||
#ifndef PACK_STRUCT_BEGIN
|
||||
#define PACK_STRUCT_BEGIN
|
||||
#endif /* PACK_STRUCT_BEGIN */
|
||||
|
||||
#ifndef PACK_STRUCT_END
|
||||
#define PACK_STRUCT_END
|
||||
#endif /* PACK_STRUCT_END */
|
||||
|
||||
#ifndef PACK_STRUCT_FIELD
|
||||
#define PACK_STRUCT_FIELD(x) x
|
||||
#endif /* PACK_STRUCT_FIELD */
|
||||
|
||||
|
||||
|
||||
#ifdef LWIP_PROVIDE_ERRNO
|
||||
|
||||
#define EPERM 1 /* Operation not permitted */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
#define EINTR 4 /* Interrupted system call */
|
||||
#define EIO 5 /* I/O error */
|
||||
#define ENXIO 6 /* No such device or address */
|
||||
#define E2BIG 7 /* Arg list too long */
|
||||
#define ENOEXEC 8 /* Exec format error */
|
||||
#define EBADF 9 /* Bad file number */
|
||||
#define ECHILD 10 /* No child processes */
|
||||
#define EAGAIN 11 /* Try again */
|
||||
#define ENOMEM 12 /* Out of memory */
|
||||
#define EACCES 13 /* Permission denied */
|
||||
#define EFAULT 14 /* Bad address */
|
||||
#define ENOTBLK 15 /* Block device required */
|
||||
#define EBUSY 16 /* Device or resource busy */
|
||||
#define EEXIST 17 /* File exists */
|
||||
#define EXDEV 18 /* Cross-device link */
|
||||
#define ENODEV 19 /* No such device */
|
||||
#define ENOTDIR 20 /* Not a directory */
|
||||
#define EISDIR 21 /* Is a directory */
|
||||
#define EINVAL 22 /* Invalid argument */
|
||||
#define ENFILE 23 /* File table overflow */
|
||||
#define EMFILE 24 /* Too many open files */
|
||||
#define ENOTTY 25 /* Not a typewriter */
|
||||
#define ETXTBSY 26 /* Text file busy */
|
||||
#define EFBIG 27 /* File too large */
|
||||
#define ENOSPC 28 /* No space left on device */
|
||||
#define ESPIPE 29 /* Illegal seek */
|
||||
#define EROFS 30 /* Read-only file system */
|
||||
#define EMLINK 31 /* Too many links */
|
||||
#define EPIPE 32 /* Broken pipe */
|
||||
#define EDOM 33 /* Math argument out of domain of func */
|
||||
#define ERANGE 34 /* Math result not representable */
|
||||
#define EDEADLK 35 /* Resource deadlock would occur */
|
||||
#define ENAMETOOLONG 36 /* File name too long */
|
||||
#define ENOLCK 37 /* No record locks available */
|
||||
#define ENOSYS 38 /* Function not implemented */
|
||||
#define ENOTEMPTY 39 /* Directory not empty */
|
||||
#define ELOOP 40 /* Too many symbolic links encountered */
|
||||
#define EWOULDBLOCK EAGAIN /* Operation would block */
|
||||
#define ENOMSG 42 /* No message of desired type */
|
||||
#define EIDRM 43 /* Identifier removed */
|
||||
#define ECHRNG 44 /* Channel number out of range */
|
||||
#define EL2NSYNC 45 /* Level 2 not synchronized */
|
||||
#define EL3HLT 46 /* Level 3 halted */
|
||||
#define EL3RST 47 /* Level 3 reset */
|
||||
#define ELNRNG 48 /* Link number out of range */
|
||||
#define EUNATCH 49 /* Protocol driver not attached */
|
||||
#define ENOCSI 50 /* No CSI structure available */
|
||||
#define EL2HLT 51 /* Level 2 halted */
|
||||
#define EBADE 52 /* Invalid exchange */
|
||||
#define EBADR 53 /* Invalid request descriptor */
|
||||
#define EXFULL 54 /* Exchange full */
|
||||
#define ENOANO 55 /* No anode */
|
||||
#define EBADRQC 56 /* Invalid request code */
|
||||
#define EBADSLT 57 /* Invalid slot */
|
||||
|
||||
#define EDEADLOCK EDEADLK
|
||||
|
||||
#define EBFONT 59 /* Bad font file format */
|
||||
#define ENOSTR 60 /* Device not a stream */
|
||||
#define ENODATA 61 /* No data available */
|
||||
#define ETIME 62 /* Timer expired */
|
||||
#define ENOSR 63 /* Out of streams resources */
|
||||
#define ENONET 64 /* Machine is not on the network */
|
||||
#define ENOPKG 65 /* Package not installed */
|
||||
#define EREMOTE 66 /* Object is remote */
|
||||
#define ENOLINK 67 /* Link has been severed */
|
||||
#define EADV 68 /* Advertise error */
|
||||
#define ESRMNT 69 /* Srmount error */
|
||||
#define ECOMM 70 /* Communication error on send */
|
||||
#define EPROTO 71 /* Protocol error */
|
||||
#define EMULTIHOP 72 /* Multihop attempted */
|
||||
#define EDOTDOT 73 /* RFS specific error */
|
||||
#define EBADMSG 74 /* Not a data message */
|
||||
#define EOVERFLOW 75 /* Value too large for defined data type */
|
||||
#define ENOTUNIQ 76 /* Name not unique on network */
|
||||
#define EBADFD 77 /* File descriptor in bad state */
|
||||
#define EREMCHG 78 /* Remote address changed */
|
||||
#define ELIBACC 79 /* Can not access a needed shared library */
|
||||
#define ELIBBAD 80 /* Accessing a corrupted shared library */
|
||||
#define ELIBSCN 81 /* .lib section in a.out corrupted */
|
||||
#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
|
||||
#define ELIBEXEC 83 /* Cannot exec a shared library directly */
|
||||
#define EILSEQ 84 /* Illegal byte sequence */
|
||||
#define ERESTART 85 /* Interrupted system call should be restarted */
|
||||
#define ESTRPIPE 86 /* Streams pipe error */
|
||||
#define EUSERS 87 /* Too many users */
|
||||
#define ENOTSOCK 88 /* Socket operation on non-socket */
|
||||
#define EDESTADDRREQ 89 /* Destination address required */
|
||||
#define EMSGSIZE 90 /* Message too long */
|
||||
#define EPROTOTYPE 91 /* Protocol wrong type for socket */
|
||||
#define ENOPROTOOPT 92 /* Protocol not available */
|
||||
#define EPROTONOSUPPORT 93 /* Protocol not supported */
|
||||
#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
|
||||
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
|
||||
#define EPFNOSUPPORT 96 /* Protocol family not supported */
|
||||
#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
|
||||
#define EADDRINUSE 98 /* Address already in use */
|
||||
#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
|
||||
#define ENETDOWN 100 /* Network is down */
|
||||
#define ENETUNREACH 101 /* Network is unreachable */
|
||||
#define ENETRESET 102 /* Network dropped connection because of reset */
|
||||
#define ECONNABORTED 103 /* Software caused connection abort */
|
||||
#define ECONNRESET 104 /* Connection reset by peer */
|
||||
#define ENOBUFS 105 /* No buffer space available */
|
||||
#define EISCONN 106 /* Transport endpoint is already connected */
|
||||
#define ENOTCONN 107 /* Transport endpoint is not connected */
|
||||
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
|
||||
#define ETOOMANYREFS 109 /* Too many references: cannot splice */
|
||||
#define ETIMEDOUT 110 /* Connection timed out */
|
||||
#define ECONNREFUSED 111 /* Connection refused */
|
||||
#define EHOSTDOWN 112 /* Host is down */
|
||||
#define EHOSTUNREACH 113 /* No route to host */
|
||||
#define EALREADY 114 /* Operation already in progress */
|
||||
#define EINPROGRESS 115 /* Operation now in progress */
|
||||
#define ESTALE 116 /* Stale NFS file handle */
|
||||
#define EUCLEAN 117 /* Structure needs cleaning */
|
||||
#define ENOTNAM 118 /* Not a XENIX named type file */
|
||||
#define ENAVAIL 119 /* No XENIX semaphores available */
|
||||
#define EISNAM 120 /* Is a named type file */
|
||||
#define EREMOTEIO 121 /* Remote I/O error */
|
||||
#define EDQUOT 122 /* Quota exceeded */
|
||||
|
||||
#define ENOMEDIUM 123 /* No medium found */
|
||||
#define EMEDIUMTYPE 124 /* Wrong medium type */
|
||||
|
||||
|
||||
#define ENSROK 0 /* DNS server returned answer with no data */
|
||||
#define ENSRNODATA 160 /* DNS server returned answer with no data */
|
||||
#define ENSRFORMERR 161 /* DNS server claims query was misformatted */
|
||||
#define ENSRSERVFAIL 162 /* DNS server returned general failure */
|
||||
#define ENSRNOTFOUND 163 /* Domain name not found */
|
||||
#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */
|
||||
#define ENSRREFUSED 165 /* DNS server refused query */
|
||||
#define ENSRBADQUERY 166 /* Misformatted DNS query */
|
||||
#define ENSRBADNAME 167 /* Misformatted domain name */
|
||||
#define ENSRBADFAMILY 168 /* Unsupported address family */
|
||||
#define ENSRBADRESP 169 /* Misformatted DNS reply */
|
||||
#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */
|
||||
#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */
|
||||
#define ENSROF 172 /* End of file */
|
||||
#define ENSRFILE 173 /* Error reading file */
|
||||
#define ENSRNOMEM 174 /* Out of memory */
|
||||
#define ENSRDESTRUCTION 175 /* Application terminated lookup */
|
||||
#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */
|
||||
#define ENSRCNAMELOOP 177 /* Domain name is too long */
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#endif /* LWIP_PROVIDE_ERRNO */
|
||||
|
||||
#endif /* __LWIP_ARCH_H__ */
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_DEBUG_H__
|
||||
#define __LWIP_DEBUG_H__
|
||||
|
||||
#include "arch/cc.h"
|
||||
|
||||
/** lower two bits indicate debug level
|
||||
* - 0 off
|
||||
* - 1 warning
|
||||
* - 2 serious
|
||||
* - 3 severe
|
||||
*/
|
||||
|
||||
#define DBG_LEVEL_OFF 0
|
||||
#define DBG_LEVEL_WARNING 1 /* bad checksums, dropped packets, ... */
|
||||
#define DBG_LEVEL_SERIOUS 2 /* memory allocation failures, ... */
|
||||
#define DBG_LEVEL_SEVERE 3 /* */
|
||||
#define DBG_MASK_LEVEL 3
|
||||
|
||||
/** flag for LWIP_DEBUGF to enable that debug message */
|
||||
#define DBG_ON 0x80U
|
||||
/** flag for LWIP_DEBUGF to disable that debug message */
|
||||
#define DBG_OFF 0x00U
|
||||
|
||||
/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */
|
||||
#define DBG_TRACE 0x40U
|
||||
/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */
|
||||
#define DBG_STATE 0x20U
|
||||
/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */
|
||||
#define DBG_FRESH 0x10U
|
||||
/** flag for LWIP_DEBUGF to halt after printing this debug message */
|
||||
#define DBG_HALT 0x08U
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
# ifndef LWIP_NOASSERT
|
||||
# define LWIP_ASSERT(x,y) do { if(!(y)) LWIP_PLATFORM_ASSERT(x); } while(0)
|
||||
# else
|
||||
# define LWIP_ASSERT(x,y)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
/** print debug message only if debug message type is enabled...
|
||||
* AND is of correct type AND is at least DBG_LEVEL
|
||||
*/
|
||||
# define LWIP_DEBUGF(debug,x) do { if (((debug) & DBG_ON) && ((debug) & DBG_TYPES_ON) && ((int)((debug) & DBG_MASK_LEVEL) >= DBG_MIN_LEVEL)) { LWIP_PLATFORM_DIAG(x); if ((debug) & DBG_HALT) while(1); } } while(0)
|
||||
# define LWIP_ERROR(x) do { LWIP_PLATFORM_DIAG(x); } while(0)
|
||||
#else /* LWIP_DEBUG */
|
||||
# define LWIP_ASSERT(x,y)
|
||||
# define LWIP_DEBUGF(debug,x)
|
||||
# define LWIP_ERROR(x)
|
||||
#endif /* LWIP_DEBUG */
|
||||
|
||||
#endif /* __LWIP_DEBUG_H__ */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue