From 58e7dd8a1afd512ff903e3ba6a085c627e1274e1 Mon Sep 17 00:00:00 2001 From: Salvador Date: Fri, 8 Oct 2021 13:53:49 +0200 Subject: [PATCH] Add Miyoo target (#12860) * add miyoo target --- Makefile.common | 2 + Makefile.miyoo | 208 +++++++++++++++++++++++ config.def.h | 12 +- configuration.c | 6 +- dingux/dingux_utils.c | 6 +- gfx/drivers/sdl_rs90_gfx.c | 20 ++- gfx/video_driver.c | 2 +- griffin/griffin.c | 2 +- input/drivers_joypad/sdl_dingux_joypad.c | 152 ++++++++++------- intl/msg_hash_lbl.h | 2 +- intl/msg_hash_us.h | 2 +- menu/cbs/menu_cbs_sublabel.c | 4 +- menu/drivers/rgui.c | 2 +- menu/menu_defines.h | 2 +- menu/menu_displaylist.c | 2 +- menu/menu_setting.c | 6 +- msg_hash.h | 2 +- 17 files changed, 346 insertions(+), 86 deletions(-) create mode 100644 Makefile.miyoo diff --git a/Makefile.common b/Makefile.common index 9184a3f7cb..8a262bfe53 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1567,6 +1567,8 @@ else ifeq ($(HAVE_SDL_DINGUX), 1) ifeq ($(RS90), 1) OBJ += gfx/drivers/sdl_rs90_gfx.o + else ifeq ($(MIYOO), 1) + OBJ += gfx/drivers/sdl_rs90_gfx.o else OBJ += gfx/drivers/sdl_dingux_gfx.o endif diff --git a/Makefile.miyoo b/Makefile.miyoo new file mode 100644 index 0000000000..23447485a5 --- /dev/null +++ b/Makefile.miyoo @@ -0,0 +1,208 @@ +######################### +## Toolchain variables ## +######################### + +# Default toolchain directory +TOOLCHAIN_DIR=/opt/miyoo + +# All toolchain-related variables may be +# overridden via the command line + +ifdef GCW0_CC +CC = $(GCW0_CC) +else +CC = $(TOOLCHAIN_DIR)/usr/bin/arm-linux-gcc +endif + +ifdef GCW0_CXX +CXX = $(GCW0_CXX) +else +CXX = $(TOOLCHAIN_DIR)/usr/bin/arm-linux-g++ +endif + +ifdef GCW0_STRIP +STRIP = $(GCW0_STRIP) +else +STRIP = $(TOOLCHAIN_DIR)/usr/bin/arm-linux-strip +endif + +GCW0_SDL_CONFIG ?= $(TOOLCHAIN_DIR)/usr/arm-miyoo-linux-uclibcgnueabi/sysroot/usr/bin/sdl-config +GCW0_FREETYPE_CONFIG ?= $(TOOLCHAIN_DIR)/usr/arm-miyoo-linux-uclibcgnueabi/sysroot/usr/bin/freetype-config + +GCW0_INC_DIR ?= $(TOOLCHAIN_DIR)/usr/arm-miyoo-linux-uclibcgnueabi/sysroot/usr/include +GCW0_LIB_DIR ?= $(TOOLCHAIN_DIR)/usr/arm-miyoo-linux-uclibcgnueabi/sysroot/usr/lib + +######################### +######################### + +PACKAGE_NAME = retroarch + +DEBUG ?= 0 + +MIYOO = 1 +DINGUX = 1 +HAVE_SCREENSHOTS = 0 +HAVE_REWIND = 0 +HAVE_7ZIP = 1 +HAVE_AL = 0 +# ALSA freezes when switching back from menu +HAVE_ALSA = 0 +HAVE_DSP_FILTER = 1 +HAVE_VIDEO_FILTER = 1 +HAVE_STATIC_VIDEO_FILTERS = 1 +HAVE_STATIC_AUDIO_FILTERS = 1 +HAVE_FILTERS_BUILTIN = 1 +HAVE_BUILTINMBEDTLS = 0 +HAVE_BUILTINZLIB = 1 +HAVE_C99 = 1 +HAVE_CC = 1 +HAVE_CC_RESAMPLER = 1 +HAVE_CHD = 1 +HAVE_COMMAND = 0 +HAVE_CXX = 1 +HAVE_DR_MP3 = 1 +HAVE_DYNAMIC = 1 +HAVE_EGL = 0 +HAVE_FREETYPE = 0 +HAVE_GDI = 1 +HAVE_GETADDRINFO = 0 +HAVE_GETOPT_LONG = 1 +HAVE_GLSL = 0 +HAVE_HID = 1 +HAVE_IBXM = 1 +HAVE_IMAGEVIEWER = 0 +HAVE_LANGEXTRA = 0 +HAVE_LIBRETRODB = 1 +HAVE_MENU = 1 +HAVE_MENU_COMMON = 1 +HAVE_GFX_WIDGETS = 0 +HAVE_MMAP = 1 +HAVE_OPENDINGUX_FBDEV = 0 +HAVE_OPENGL = 0 +HAVE_OPENGL1 = 0 +HAVE_OPENGLES = 0 +HAVE_OPENGLES3 = 0 +HAVE_OPENGL_CORE = 0 +HAVE_OPENSSL = 0 +HAVE_OVERLAY = 0 +HAVE_RBMP = 1 +HAVE_RJPEG = 1 +HAVE_RPILED = 0 +HAVE_RPNG = 1 +HAVE_RUNAHEAD = 0 +HAVE_SDL_DINGUX = 1 +HAVE_SHADERPIPELINE = 0 +HAVE_STB_FONT = 0 +HAVE_STB_IMAGE = 0 +HAVE_STB_VORBIS = 0 +HAVE_STDIN_CMD = 0 +HAVE_STRCASESTR = 1 +HAVE_THREADS = 1 +HAVE_UDEV = 0 +HAVE_RGUI = 1 +HAVE_MATERIALUI = 0 +HAVE_XMB = 0 +HAVE_OZONE = 0 +HAVE_ZLIB = 1 +HAVE_CONFIGFILE = 1 +HAVE_PATCH = 1 +HAVE_CHEATS = 1 +HAVE_CHEEVOS = 0 +HAVE_LIBSHAKE = 0 +#HAVE_TINYALSA = 1 +#HAVE_NEAREST_RESAMPLER = 1 + +OS = Linux +TARGET = retroarch + +OBJ := +LINK := $(CXX) +DEF_FLAGS := -march=armv5te -mtune=arm926ej-s -ffast-math -fomit-frame-pointer +DEF_FLAGS += -ffunction-sections -fdata-sections +DEF_FLAGS += -I. -Ideps -Ideps/stb -DMIYOO=1 -DDINGUX -MMD +DEF_FLAGS += -Wall -Wno-unused-variable -flto +DEF_FLAGS += -std=gnu99 -D_GNU_SOURCE +LIBS := -ldl -lz -lrt -pthread +CFLAGS := +CXXFLAGS := -fno-exceptions -fno-rtti -std=c++11 -D__STDC_CONSTANT_MACROS +ASFLAGS := +LDFLAGS := -Wl,--gc-sections +INCLUDE_DIRS = -I$(GCW0_INC_DIR) +LIBRARY_DIRS = -L$(GCW0_LIB_DIR) +DEFINES := -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 -UHAVE_STATIC_DUMMY +DEFINES += -DHAVE_C99=1 -DHAVE_CXX=1 +DEFINES += -DHAVE_GETOPT_LONG=1 -DHAVE_STRCASESTR=1 -DHAVE_DYNAMIC=1 +DEFINES += -DHAVE_FILTERS_BUILTIN + +SDL_DINGUX_CFLAGS := $(shell $(GCW0_SDL_CONFIG) --cflags) +SDL_DINGUX_LIBS := $(shell $(GCW0_SDL_CONFIG) --libs) +FREETYPE_CFLAGS := $(shell $(GCW0_FREETYPE_CONFIG) --cflags) +FREETYPE_LIBS := $(shell $(GCW0_FREETYPE_CONFIG) --libs) +MMAP_LIBS = -lc + +OBJDIR_BASE := obj-unix + +ifeq ($(DEBUG), 1) + OBJDIR := $(OBJDIR_BASE)/debug + DEF_FLAGS += -O0 -g -DDEBUG -D_DEBUG +else + OBJDIR := $(OBJDIR_BASE)/release + DEF_FLAGS += -O2 -DNDEBUG +endif + +include Makefile.common + +DEF_FLAGS += $(INCLUDE_DIRS) +LDFLAGS += $(CFLAGS) $(CXXFLAGS) $(DEF_FLAGS) +CFLAGS += $(DEF_FLAGS) +CXXFLAGS += $(DEF_FLAGS) + +HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h) + +Q := @ + +RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ)) + +all: $(TARGET) + +-include $(RARCH_OBJ:.o=.d) + +SYMBOL_MAP := -Wl,-Map=output.map + +$(TARGET): $(RARCH_OBJ) + @$(if $(Q), $(shell echo echo LD $@),) + $(Q)$(LINK) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LIBRARY_DIRS) + +ifeq ($(STRIP_BIN),1) + $(STRIP) --strip-unneeded $(TARGET) +endif + +$(OBJDIR)/%.o: %.c + @mkdir -p $(dir $@) + @$(if $(Q), $(shell echo echo CC $<),) + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c -o $@ $< + +$(OBJDIR)/%.o: %.cpp + @mkdir -p $(dir $@) + @$(if $(Q), $(shell echo echo CXX $<),) + $(Q)$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $< + +$(OBJDIR)/%.o: %.m + @mkdir -p $(dir $@) + @$(if $(Q), $(shell echo echo OBJC $<),) + $(Q)$(CXX) $(OBJCFLAGS) $(DEFINES) -MMD -c -o $@ $< + +$(OBJDIR)/%.o: %.S $(HEADERS) + @mkdir -p $(dir $@) + @$(if $(Q), $(shell echo echo AS $<),) + $(Q)$(CC) $(CFLAGS) $(ASFLAGS) $(DEFINES) -c -o $@ $< + +clean: + rm -rf $(OBJDIR_BASE) + rm -f $(TARGET) + rm -f *.d + +.PHONY: all clean + +print-%: + @echo '$*=$($*)' diff --git a/config.def.h b/config.def.h index 514b486ef9..955985a6d8 100644 --- a/config.def.h +++ b/config.def.h @@ -479,7 +479,7 @@ * in Dingux devices */ #define DEFAULT_DINGUX_REFRESH_RATE DINGUX_REFRESH_RATE_60HZ #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) /* Sets image filtering method on the RS90 * when integer scaling is disabled */ #define DEFAULT_DINGUX_RS90_SOFTFILTER_TYPE DINGUX_RS90_SOFTFILTER_POINT @@ -806,7 +806,7 @@ static const bool default_savefiles_in_content_dir = false; static const bool default_systemfiles_in_content_dir = false; static const bool default_screenshots_in_content_dir = false; -#if defined(RS90) || defined(RETROFW) +#if defined(RS90) || defined(RETROFW) || defined(MIYOO) #define DEFAULT_MENU_TOGGLE_GAMEPAD_COMBO INPUT_COMBO_START_SELECT #elif defined(_XBOX1) || defined(__PS3__) || defined(_XBOX360) || defined(DINGUX) #define DEFAULT_MENU_TOGGLE_GAMEPAD_COMBO INPUT_COMBO_L3_R3 @@ -1018,7 +1018,7 @@ static const bool audio_enable_menu_bgm = false; /* Output samplerate. */ #ifdef GEKKO #define DEFAULT_OUTPUT_RATE 32000 -#elif defined(_3DS) || defined(RETROFW) +#elif defined(_3DS) || defined(RETROFW) || defined(MIYOO) #define DEFAULT_OUTPUT_RATE 32730 #else #define DEFAULT_OUTPUT_RATE 48000 @@ -1029,7 +1029,7 @@ static const bool audio_enable_menu_bgm = false; /* Desired audio latency in milliseconds. Might not be honored * if driver can't provide given latency. */ -#if defined(ANDROID) || defined(EMSCRIPTEN) || defined(RETROFW) +#if defined(ANDROID) || defined(EMSCRIPTEN) || defined(RETROFW) || defined(MIYOO) /* For most Android devices, 64ms is way too low. */ #define DEFAULT_OUT_LATENCY 128 #else @@ -1103,7 +1103,7 @@ static const bool audio_enable_menu_bgm = false; #define DEFAULT_APPLY_CHEATS_AFTER_LOAD false -#if defined(RETROFW) +#if defined(RETROFW) || defined(MIYOO) /*RETROFW jz4760 has signficant slowdown with default settings */ #define DEFAULT_REWIND_BUFFER_SIZE (1 << 20) #define DEFAULT_REWIND_BUFFER_SIZE_STEP 1 @@ -1402,7 +1402,7 @@ static const unsigned menu_left_thumbnails_default = 0; static const unsigned gfx_thumbnail_upscale_threshold = 0; #ifdef HAVE_MENU -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) /* The RS-90 has a hardware clock that is neither * configurable nor persistent, rendering it useless. * We therefore hide it in the menu by default. */ diff --git a/configuration.c b/configuration.c index c3fadc4136..a88be7d078 100644 --- a/configuration.c +++ b/configuration.c @@ -411,7 +411,7 @@ static const enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL; #elif defined(HAVE_SDL2) static const enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL2; #elif defined(HAVE_SDL_DINGUX) -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) static const enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL_RS90; #else static const enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL_DINGUX; @@ -494,7 +494,7 @@ static const enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_EXT; static const enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_NULL; #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) static const enum audio_resampler_driver_enum AUDIO_DEFAULT_RESAMPLER_DRIVER = AUDIO_RESAMPLER_NEAREST; #elif defined(PSP) || defined(EMSCRIPTEN) static const enum audio_resampler_driver_enum AUDIO_DEFAULT_RESAMPLER_DRIVER = AUDIO_RESAMPLER_CC; @@ -2252,7 +2252,7 @@ static struct config_uint_setting *populate_settings_uint( #if defined(DINGUX_BETA) SETTING_UINT("video_dingux_refresh_rate", &settings->uints.video_dingux_refresh_rate, true, DEFAULT_DINGUX_REFRESH_RATE, false); #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) SETTING_UINT("video_dingux_rs90_softfilter_type", &settings->uints.video_dingux_rs90_softfilter_type, true, DEFAULT_DINGUX_RS90_SOFTFILTER_TYPE, false); #endif #endif diff --git a/dingux/dingux_utils.c b/dingux/dingux_utils.c index ec4eca19f1..bb4eac076a 100644 --- a/dingux/dingux_utils.c +++ b/dingux/dingux_utils.c @@ -18,7 +18,7 @@ #include #include #include -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) #include #endif @@ -317,14 +317,14 @@ int dingux_get_battery_level(void) void dingux_get_base_path(char *path, size_t len) { const char *home = NULL; -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) struct string_list *dir_list = NULL; #endif if (!path || (len < 1)) return; -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) /* The RS-90 home directory is located on the * device's internal storage. This has limited * space (a total of only 256MB), such that it diff --git a/gfx/drivers/sdl_rs90_gfx.c b/gfx/drivers/sdl_rs90_gfx.c index 20186c115b..e943fd7ba2 100644 --- a/gfx/drivers/sdl_rs90_gfx.c +++ b/gfx/drivers/sdl_rs90_gfx.c @@ -51,11 +51,23 @@ #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) +#if defined(MIYOO) +#define SDL_RS90_WIDTH 320 +#define SDL_RS90_HEIGHT 240 +#else #define SDL_RS90_WIDTH 240 #define SDL_RS90_HEIGHT 160 +#endif #define SDL_RS90_NUM_FONT_GLYPHS 256 +#if defined(MIYOO) +#define SDL_RS90_SURFACE_FLAGS_VSYNC_ON (SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN) +#else +#define SDL_RS90_SURFACE_FLAGS_VSYNC_ON (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) +#endif +#define SDL_RS90_SURFACE_FLAGS_VSYNC_OFF (SDL_HWSURFACE | SDL_FULLSCREEN) + typedef struct sdl_rs90_video sdl_rs90_video_t; struct sdl_rs90_video { @@ -794,8 +806,8 @@ static void *sdl_rs90_gfx_init(const video_info_t *video, const char *input_driver_name = settings->arrays.input_driver; const char *joypad_driver_name = settings->arrays.input_joypad_driver; uint32_t surface_flags = (video->vsync) ? - (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) : - (SDL_HWSURFACE | SDL_FULLSCREEN); + SDL_RS90_SURFACE_FLAGS_VSYNC_ON : + SDL_RS90_SURFACE_FLAGS_VSYNC_OFF; /* Initialise graphics subsystem, if required */ if (sdl_subsystem_flags == 0) @@ -918,8 +930,8 @@ static void sdl_rs90_set_output( unsigned width, unsigned height, bool rgb32) { uint32_t surface_flags = (vid->vsync) ? - (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) : - (SDL_HWSURFACE | SDL_FULLSCREEN); + SDL_RS90_SURFACE_FLAGS_VSYNC_ON : + SDL_RS90_SURFACE_FLAGS_VSYNC_OFF; vid->content_width = width; vid->content_height = height; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index e3c22404e1..020cb7262d 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -157,7 +157,7 @@ const video_driver_t *video_drivers[] = { &video_sdl2, #endif #ifdef HAVE_SDL_DINGUX -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) &video_sdl_rs90, #else &video_sdl_dingux, diff --git a/griffin/griffin.c b/griffin/griffin.c index 69511d3506..abb7c63482 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -477,7 +477,7 @@ VIDEO DRIVER #endif #if defined(DINGUX) && defined(HAVE_SDL_DINGUX) -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) #include "../gfx/drivers/sdl_rs90_gfx.c" #else #include "../gfx/drivers/sdl_dingux_gfx.c" diff --git a/input/drivers_joypad/sdl_dingux_joypad.c b/input/drivers_joypad/sdl_dingux_joypad.c index a9ca32b057..ad0a804868 100644 --- a/input/drivers_joypad/sdl_dingux_joypad.c +++ b/input/drivers_joypad/sdl_dingux_joypad.c @@ -32,12 +32,12 @@ #include "../../config.def.h" #endif -#if defined(RS90) || defined (RETROFW) - #define SDL_DINGUX_HAS_ANALOG 0 - #define SDL_DINGUX_HAS_MENU_TOGGLE 0 +#if defined(RS90) || defined(RETROFW) || defined(MIYOO) +#define SDL_DINGUX_HAS_ANALOG 0 +#define SDL_DINGUX_HAS_MENU_TOGGLE 0 #else - #define SDL_DINGUX_HAS_ANALOG 1 - #define SDL_DINGUX_HAS_MENU_TOGGLE 1 +#define SDL_DINGUX_HAS_ANALOG 1 +#define SDL_DINGUX_HAS_MENU_TOGGLE 1 #endif /* Simple joypad driver designed to rationalise @@ -46,6 +46,62 @@ #define SDL_DINGUX_JOYPAD_NAME "Dingux Gamepad" +/* All digital inputs map to keyboard keys: + * - X: SDLK_SPACE + * - A: SDLK_LCTRL + * - B: SDLK_LALT + * - Y: SDLK_LSHIFT + * - L: SDLK_TAB + * - R: SDLK_BACKSPACE + * - L2: SDLK_PAGEUP + * - R2: SDLK_PAGEDOWN + * - Select: SDLK_ESCAPE + * - Start: SDLK_RETURN + * - L3: SDLK_KP_DIVIDE + * - R3: SDLK_KP_PERIOD + * - Up: SDLK_UP + * - Right: SDLK_RIGHT + * - Down: SDLK_DOWN + * - Left: SDLK_LEFT + * - Menu: SDLK_HOME + * + * Miyoo devices (Pocketgo, Powkiddy V90 & Q90) + * have the following alternate mappings: + * - X: SDLK_LSHIFT + * - A: SDLK_LALT + * - B: SDLK_LCTRL + * - Y: SDLK_SPACE + * - Menu: SDLK_RCTRL + */ +#if defined(MIYOO) +#define SDL_DINGUX_SDLK_X SDLK_LSHIFT +#define SDL_DINGUX_SDLK_A SDLK_LALT +#define SDL_DINGUX_SDLK_B SDLK_LCTRL +#define SDL_DINGUX_SDLK_Y SDLK_SPACE +#else +#define SDL_DINGUX_SDLK_X SDLK_SPACE +#define SDL_DINGUX_SDLK_A SDLK_LCTRL +#define SDL_DINGUX_SDLK_B SDLK_LALT +#define SDL_DINGUX_SDLK_Y SDLK_LSHIFT +#endif +#define SDL_DINGUX_SDLK_L SDLK_TAB +#define SDL_DINGUX_SDLK_R SDLK_BACKSPACE +#define SDL_DINGUX_SDLK_L2 SDLK_PAGEUP +#define SDL_DINGUX_SDLK_R2 SDLK_PAGEDOWN +#define SDL_DINGUX_SDLK_SELECT SDLK_ESCAPE +#define SDL_DINGUX_SDLK_START SDLK_RETURN +#define SDL_DINGUX_SDLK_L3 SDLK_KP_DIVIDE +#define SDL_DINGUX_SDLK_R3 SDLK_KP_PERIOD +#define SDL_DINGUX_SDLK_UP SDLK_UP +#define SDL_DINGUX_SDLK_RIGHT SDLK_RIGHT +#define SDL_DINGUX_SDLK_DOWN SDLK_DOWN +#define SDL_DINGUX_SDLK_LEFT SDLK_LEFT +#if defined(MIYOO) +#define SDL_DINGUX_SDLK_MENU SDLK_RCTRL +#else +#define SDL_DINGUX_SDLK_MENU SDLK_HOME +#endif + #if defined(HAVE_LIBSHAKE) /* 5 ms period == 200 Hz * > Meissner's Corpuscle registers this @@ -549,25 +605,7 @@ static void sdl_dingux_joypad_poll(void) } #endif - /* All digital inputs map to keyboard keys - * - X: SDLK_SPACE - * - A: SDLK_LCTRL - * - B: SDLK_LALT - * - Y: SDLK_LSHIFT - * - L: SDLK_TAB - * - R: SDLK_BACKSPACE - * - L2: SDLK_PAGEUP - * - R2: SDLK_PAGEDOWN - * - Select: SDLK_ESCAPE - * - Start: SDLK_RETURN - * - L3: SDLK_KP_DIVIDE - * - R3: SDLK_KP_PERIOD - * - Up: SDLK_UP - * - Right: SDLK_RIGHT - * - Down: SDLK_DOWN - * - Left: SDLK_LEFT - * - Menu: SDLK_HOME - */ + /* All digital inputs map to keyboard keys */ while (SDL_PollEvent(&event)) { switch (event.type) @@ -575,56 +613,56 @@ static void sdl_dingux_joypad_poll(void) case SDL_KEYDOWN: switch (event.key.keysym.sym) { - case SDLK_SPACE: + case SDL_DINGUX_SDLK_X: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_X); break; - case SDLK_LCTRL: + case SDL_DINGUX_SDLK_A: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_A); break; - case SDLK_LALT: + case SDL_DINGUX_SDLK_B: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_B); break; - case SDLK_LSHIFT: + case SDL_DINGUX_SDLK_Y: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_Y); break; - case SDLK_TAB: + case SDL_DINGUX_SDLK_L: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L); break; - case SDLK_BACKSPACE: + case SDL_DINGUX_SDLK_R: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R); break; - case SDLK_PAGEUP: + case SDL_DINGUX_SDLK_L2: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L2); break; - case SDLK_PAGEDOWN: + case SDL_DINGUX_SDLK_R2: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R2); break; - case SDLK_ESCAPE: + case SDL_DINGUX_SDLK_SELECT: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_SELECT); break; - case SDLK_RETURN: + case SDL_DINGUX_SDLK_START: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_START); break; - case SDLK_KP_DIVIDE: + case SDL_DINGUX_SDLK_L3: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L3); break; - case SDLK_KP_PERIOD: + case SDL_DINGUX_SDLK_R3: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R3); break; - case SDLK_UP: + case SDL_DINGUX_SDLK_UP: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_UP); break; - case SDLK_RIGHT: + case SDL_DINGUX_SDLK_RIGHT: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_RIGHT); break; - case SDLK_DOWN: + case SDL_DINGUX_SDLK_DOWN: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_DOWN); break; - case SDLK_LEFT: + case SDL_DINGUX_SDLK_LEFT: BIT16_SET(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_LEFT); break; #if defined(SDL_DINGUX_HAS_MENU_TOGGLE) - case SDLK_HOME: + case SDL_DINGUX_SDLK_MENU: BIT64_SET(lifecycle_state, RARCH_MENU_TOGGLE); joypad->menu_toggle = true; break; @@ -636,52 +674,52 @@ static void sdl_dingux_joypad_poll(void) case SDL_KEYUP: switch (event.key.keysym.sym) { - case SDLK_SPACE: + case SDL_DINGUX_SDLK_X: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_X); break; - case SDLK_LCTRL: + case SDL_DINGUX_SDLK_A: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_A); break; - case SDLK_LALT: + case SDL_DINGUX_SDLK_B: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_B); break; - case SDLK_LSHIFT: + case SDL_DINGUX_SDLK_Y: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_Y); break; - case SDLK_TAB: + case SDL_DINGUX_SDLK_L: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L); break; - case SDLK_BACKSPACE: + case SDL_DINGUX_SDLK_R: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R); break; - case SDLK_PAGEUP: + case SDL_DINGUX_SDLK_L2: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L2); break; - case SDLK_PAGEDOWN: + case SDL_DINGUX_SDLK_R2: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R2); break; - case SDLK_ESCAPE: + case SDL_DINGUX_SDLK_SELECT: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_SELECT); break; - case SDLK_RETURN: + case SDL_DINGUX_SDLK_START: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_START); break; - case SDLK_KP_DIVIDE: + case SDL_DINGUX_SDLK_L3: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_L3); break; - case SDLK_KP_PERIOD: + case SDL_DINGUX_SDLK_R3: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_R3); break; - case SDLK_UP: + case SDL_DINGUX_SDLK_UP: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_UP); break; - case SDLK_RIGHT: + case SDL_DINGUX_SDLK_RIGHT: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_RIGHT); break; - case SDLK_DOWN: + case SDL_DINGUX_SDLK_DOWN: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_DOWN); break; - case SDLK_LEFT: + case SDL_DINGUX_SDLK_LEFT: BIT16_CLEAR(joypad->pad_state, RETRO_DEVICE_ID_JOYPAD_LEFT); break; default: diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 75e35a287b..05bf95a6ca 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -3209,7 +3209,7 @@ MSG_HASH( "video_dingux_refresh_rate" ) #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) MSG_HASH( MENU_ENUM_LABEL_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE, "video_dingux_rs90_softfilter_type" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index c050606649..ef5f7ac21e 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1381,7 +1381,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_IPU_FILTER_NEAREST, "Nearest Neighbor" ) -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE, "Image Interpolation" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index de3f8bebcd..f708b2fd42 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -885,7 +885,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_dingux_ipu_filter_type, #if defined(DINGUX_BETA) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_dingux_refresh_rate, MENU_ENUM_SUBLABEL_VIDEO_DINGUX_REFRESH_RATE) #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_dingux_rs90_softfilter_type, MENU_ENUM_SUBLABEL_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE) #endif #endif @@ -2034,7 +2034,7 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_dingux_refresh_rate); break; #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) case MENU_ENUM_LABEL_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_dingux_rs90_softfilter_type); break; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index ef783f1b7b..1eda34e245 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -81,7 +81,7 @@ #define RGUI_MAX_FB_WIDTH 426 #if defined(DINGUX) -#if defined(RS90) +#if defined(RS90) && !defined(MIYOO) /* The RS-90 uses a fixed framebuffer size * of 240x160 */ #define RGUI_DINGUX_ASPECT_RATIO RGUI_ASPECT_RATIO_3_2 diff --git a/menu/menu_defines.h b/menu/menu_defines.h index e9698558c2..796ff3876e 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -416,7 +416,7 @@ enum quit_on_close_content_type QUIT_ON_CLOSE_CONTENT_LAST }; -#if defined(DINGUX) && defined(RS90) +#if defined(DINGUX) && (defined(RS90) || defined(MIYOO)) enum dingux_rs90_softfilter_type { DINGUX_RS90_SOFTFILTER_POINT = 0, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 54b8b7fcbc..57eeca4327 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -6153,7 +6153,7 @@ unsigned menu_displaylist_build_list( MENU_ENUM_LABEL_VIDEO_DINGUX_IPU_FILTER_TYPE, PARSE_ONLY_UINT, false) == 0) count++; -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, MENU_ENUM_LABEL_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE, PARSE_ONLY_UINT, false) == 0) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e9107c1a67..cedcf94a8e 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5281,7 +5281,7 @@ static void setting_get_string_representation_uint_video_dingux_refresh_rate( } #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) static void setting_get_string_representation_uint_video_dingux_rs90_softfilter_type( rarch_setting_t *setting, char *s, size_t len) @@ -7809,7 +7809,7 @@ static void general_write_handler(rarch_setting_t *setting) case MENU_ENUM_LABEL_VIDEO_CTX_SCALING: #if defined(DINGUX) case MENU_ENUM_LABEL_VIDEO_DINGUX_IPU_FILTER_TYPE: -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) case MENU_ENUM_LABEL_VIDEO_DINGUX_RS90_SOFTFILTER_TYPE: #endif #endif @@ -11791,7 +11791,7 @@ static bool setting_append_list( menu_settings_list_current_add_range(list, list_info, 0, DINGUX_IPU_FILTER_LAST - 1, 1, true, true); (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX; } -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) else if (string_is_equal(settings->arrays.video_driver, "sdl_rs90")) { CONFIG_UINT( diff --git a/msg_hash.h b/msg_hash.h index 42893a4ab9..5842d61463 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -2512,7 +2512,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_REFRESH_RATE_60HZ, MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_REFRESH_RATE_50HZ, #endif -#if defined(RS90) +#if defined(RS90) || defined(MIYOO) MENU_LABEL(VIDEO_DINGUX_RS90_SOFTFILTER_TYPE), MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_RS90_SOFTFILTER_POINT,