Add initial webOS port courtesy of informatic/webosbrew/mariotaku

This commit is contained in:
twinaphex 2021-08-11 20:04:11 +02:00
parent c34982d695
commit 20ef0667b0
14 changed files with 456 additions and 26 deletions

View file

@ -2437,6 +2437,10 @@ ifeq ($(HAVE_VITAGLES), 1)
OBJ += $(patsubst %.c,%.o,$(foreach dir,$(SOURCES), $(wildcard $(dir)/*.c)))
endif
ifeq ($(HAVE_WEBOS), 1)
DEFINES += -DWEBOS
endif
#####################################
### Android Play Feature Delivery ###
### (Play Store build core ###

242
Makefile.webos Normal file
View file

@ -0,0 +1,242 @@
include version.all
$(call assert,$(call seq,$(TARGET_PREFIX),arm-webos-linux-gnueabi-),webOS SDK isn't setup properly. See https://github.com/webosbrew/meta-lg-webos-ndk#compile-program-by-command-line)
WEBOS_FREETYPE_CONFIG ?= $(SDKTARGETSYSROOT)/usr/bin/freetype-config
WEBOS_INC_DIR ?= $(SDKTARGETSYSROOT)/usr/include
WEBOS_LIB_DIR ?= $(SDKTARGETSYSROOT)/usr/lib
#########################
#########################
PACKAGE_NAME = com.retroarch
PACKAGE_VERSION := $(patsubst "%",%,$(RARCH_VERSION))
DEBUG ?= 0
HAVE_SCREENSHOTS = 0
HAVE_REWIND = 1
HAVE_7ZIP = 1
HAVE_ACCESSIBILITY = 1
HAVE_AL = 0
# ALSA freezes when switching back from menu
HAVE_ALSA = 0
HAVE_ANGLE = 0
HAVE_AUDIOIO = 0
HAVE_AUDIOMIXER = 1
HAVE_BLISSBOX = 0
HAVE_BSV_MOVIE = 1
HAVE_BUILTINBEARSSL = 0
HAVE_BUILTINFLAC = 1
HAVE_DSP_FILTER = 1
HAVE_VIDEO_FILTER = 1
HAVE_STATIC_VIDEO_FILTERS = 1
HAVE_STATIC_AUDIO_FILTERS = 1
HAVE_FILTERS_BUILTIN = 1
HAVE_BUILTINMBEDTLS = 1
HAVE_BUILTINZLIB = 1
HAVE_C99 = 1
HAVE_CC = 1
HAVE_CC_RESAMPLER = 1
HAVE_NEAREST_RESAMPLER = 1
HAVE_CHD = 1
HAVE_COMMAND = 1
HAVE_CXX = 1
HAVE_DR_MP3 = 1
HAVE_DYNAMIC = 1
HAVE_DYLIB = 1
HAVE_EGL = 0
HAVE_FREETYPE = 0
HAVE_GDI = 1
HAVE_GETADDRINFO = 1
HAVE_GETOPT_LONG = 1
HAVE_GLSL = 1
HAVE_GLSLANG = 0
HAVE_GLSLANG_HLSL = 0
HAVE_GLSLANG_OGLCOMPILER = 0
HAVE_GLSLANG_OSDEPENDENT = 0
HAVE_GLSLANG_SPIRV = 0
HAVE_GLSLANG_SPIRV_TOOLS = 0
HAVE_GLSLANG_SPIRV_TOOLS_OPT = 0
HAVE_HID = 1
HAVE_IBXM = 1
HAVE_IMAGEVIEWER = 1
HAVE_LANGEXTRA = 1
HAVE_LIBRETRODB = 1
HAVE_MENU = 1
HAVE_MENU_COMMON = 1
HAVE_NEON = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_NETPLAYDISCOVERY = 1
HAVE_NETWORK_CMD = 1
HAVE_NETWORKGAMEPAD = 1
HAVE_NETWORKING = 1
HAVE_GFX_WIDGETS = 1
HAVE_MMAP = 1
HAVE_ONLINE_UPDATER = 1
HAVE_OPENDINGUX_FBDEV = 0
HAVE_OPENGL = 0
HAVE_OPENGL1 = 0
HAVE_OPENGL_CORE = 0
HAVE_OPENGLES = 1
HAVE_OPENGLES3 = 0
HAVE_OPENGLES3_1 = 0
HAVE_OPENGLES3_2 = 0
HAVE_OPENSSL = 0
HAVE_OVERLAY = 1
HAVE_PULSE = 1
HAVE_RBMP = 1
HAVE_RJPEG = 1
HAVE_RPILED = 0
HAVE_RPNG = 1
HAVE_RUNAHEAD = 1
HAVE_SDL = 0
HAVE_SDL2 = 1
HAVE_SHADERPIPELINE = 1
HAVE_STB_FONT = 1
HAVE_STB_IMAGE = 1
HAVE_STB_VORBIS = 1
HAVE_STDIN_CMD = 0
HAVE_STRCASESTR = 1
HAVE_THREADS = 1
HAVE_UDEV = 0
HAVE_RGUI = 1
HAVE_MATERIALUI = 0
HAVE_XMB = 1
HAVE_OZONE = 1
HAVE_ZLIB = 1
HAVE_CONFIGFILE = 1
HAVE_PATCH = 1
HAVE_CHEATS = 1
HAVE_CHEEVOS = 1
HAVE_LIBSHAKE = 1
HAVE_UPDATE_ASSETS = 1
HAVE_UPDATE_CORES = 1
OS = Linux
TARGET = retroarch
OBJ :=
LINK := $(CXX)
DEF_FLAGS += -ffunction-sections -fdata-sections
DEF_FLAGS += -I. -Ideps -Ideps/stb -DWEBOS=1 -MMD
DEF_FLAGS += -Wall -Wno-unused-variable
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$(WEBOS_INC_DIR)
LIBRARY_DIRS = -L$(WEBOS_LIB_DIR)
DEFINES := -DRARCH_INTERNAL -D_FILE_OFFSET_BITS=64 -UHAVE_STATIC_DUMMY
DEFINES += -DHAVE_C99=1 -DHAVE_CXX=1 -D_GNU_SOURCE
DEFINES += -DHAVE_GETOPT_LONG=1 -DHAVE_STRCASESTR=1 -DHAVE_DYNAMIC=1
DEFINES += -DHAVE_FILTERS_BUILTIN
DEFINES += -DHAVE_SDL2
DEFINES += -DHAVE_PULSE
DEFINES += -DHAVE_NETWORKING -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES
SDL2_CFLAGS := $(shell pkg-config --cflags sdl2)
SDL2_LIBS := $(shell pkg-config --libs sdl2)
OPENGLES_LIBS = -lGLESv2
PULSE_LIBS = $(shell pkg-config --libs libpulse)
MMAP_LIBS = -lc
NEON_CFLAGS = -mfpu=neon
NEON_ASFLAGS = -mfpu=neon
NETWORKING_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))
define APPINFO
{
"id": "$(PACKAGE_NAME)",
"version": "$(PACKAGE_VERSION)",
"vendor": "webosbrew.org",
"title": "RetroArch",
"icon": "icon160.png",
"main": "retroarch",
"iconColor": "#333333",
"type": "native",
"appDescription": "Emulation frontend"
}
endef
export APPINFO
all: $(TARGET) ipk
-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)
$(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
rm -rf webos/*.ipk
rm -rf webos/dist
ipk: $(TARGET)
rm -rf webos/dist
mkdir -p webos/dist/lib
echo "$$APPINFO" > webos/dist/appinfo.json
cp -t webos/dist -vf $(TARGET) webos/icon160.png
cp -t webos/dist/lib -vf $(WEBOS_LIB_DIR)/libstdc++.so.6
$(STRIP) webos/dist/$(TARGET)
cd webos && ares-package dist
install: ipk
ares-install webos/$(PACKAGE_NAME)_$(PACKAGE_VERSION)_$(ARCH).ipk
launch: install
ares-launch com.retroarch
.PHONY: all clean ipk
print-%:
@echo '$*=$($*)'

View file

@ -224,8 +224,13 @@
/* Window */
/* Window size. A value of 0 uses window scale
* multiplied by the core framebuffer size. */
#if defined(WEBOS)
#define DEFAULT_WINDOW_WIDTH 1920
#define DEFAULT_WINDOW_HEIGHT 1080
#else
#define DEFAULT_WINDOW_WIDTH 1280
#define DEFAULT_WINDOW_HEIGHT 720
#endif
/* Fullscreen resolution. A value of 0 uses the desktop
* resolution. */
@ -251,8 +256,18 @@
*/
#define DEFAULT_WINDOW_OPACITY 100
/* Whether to show the usual window decorations like border, titlebar etc. */
/* DEFAULT_WINDOW_DECORATIONS:
Whether to show the usual window decorations like border, titlebar etc. */
/* DEFAULT_WINDOW_SAVE_POSITIONS:
Whether to remember window positions
*/
#ifdef WEBOS
#define DEFAULT_WINDOW_DECORATIONS false
#define DEFAULT_WINDOW_SAVE_POSITIONS true
#else
#define DEFAULT_WINDOW_DECORATIONS true
#define DEFAULT_WINDOW_SAVE_POSITIONS false
#endif
#if defined(RARCH_CONSOLE) || defined(__APPLE__)
#define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN false
@ -1061,7 +1076,7 @@ static const bool audio_enable_menu_bgm = false;
#define DEFAULT_REWIND_GRANULARITY 1
#endif
/* Pause gameplay when gameplay loses focus. */
#ifdef EMSCRIPTEN
#if defined(EMSCRIPTEN) || defined(WEBOS)
#define DEFAULT_PAUSE_NONACTIVE false
#else
#define DEFAULT_PAUSE_NONACTIVE true

View file

@ -427,6 +427,8 @@ static const enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XINPUT;
static const enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_ANDROID;
#elif defined(EMSCRIPTEN) && defined(HAVE_SDL2)
static const enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL2;
#elif defined(WEBOS) && defined(HAVE_SDL2)
static const enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL2;
#elif defined(EMSCRIPTEN)
static const enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_RWEBINPUT;
#elif defined(_WIN32) && defined(HAVE_DINPUT)
@ -479,6 +481,8 @@ static const enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_XINPUT;
static const enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_GX;
#elif defined(WIIU)
static const enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_WIIU;
#elif defined(WEBOS)
static const enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_SDL;
#elif defined(_XBOX)
static const enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_XDK;
#elif defined(PS2)
@ -1840,7 +1844,7 @@ static struct config_bool_setting *populate_settings_bool(
SETTING_BOOL("video_msg_bgcolor_enable", &settings->bools.video_msg_bgcolor_enable, true, message_bgcolor_enable, false);
SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, DEFAULT_WINDOW_DECORATIONS, false);
SETTING_BOOL("video_window_save_positions", &settings->bools.video_window_save_positions, true, false, false);
SETTING_BOOL("video_window_save_positions", &settings->bools.video_window_save_positions, true, DEFAULT_WINDOW_SAVE_POSITIONS, false);
SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false);

View file

@ -2123,34 +2123,41 @@ static int frontend_unix_parse_drive_list(void *data, bool load_content)
FILE_TYPE_DIRECTORY, 0, 0);
}
else
{
menu_entries_append_enum(list,
"/storage/emulated/0",
msg_hash_to_str(MSG_REMOVABLE_STORAGE),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
}
menu_entries_append_enum(list,
"/storage",
msg_hash_to_str(MSG_REMOVABLE_STORAGE),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
if (!string_is_empty(internal_storage_app_path))
{
menu_entries_append_enum(list,
internal_storage_app_path,
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
}
if (!string_is_empty(app_dir))
{
menu_entries_append_enum(list,
app_dir,
msg_hash_to_str(MSG_APPLICATION_DIR),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
}
#elif defined(WEBOS)
if (path_is_directory("/media/internal"))
menu_entries_append_enum(list, "/media/internal",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
if (path_is_directory("/tmp/usb"))
menu_entries_append_enum(list, "/tmp/usb",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
enum_idx,
FILE_TYPE_DIRECTORY, 0, 0);
#else
char base_path[PATH_MAX] = {0};
char udisks_media_path[PATH_MAX] = {0};

View file

@ -32,6 +32,10 @@
#include "../common/sdl2_common.h"
#endif
#if defined(WEBOS) && defined(HAVE_SDL2)
#include <SDL_webOS.h>
#endif
typedef struct gfx_ctx_sdl_data
{
int width;
@ -41,6 +45,7 @@ typedef struct gfx_ctx_sdl_data
bool full;
bool resized;
bool subsystem_inited;
#ifdef HAVE_SDL2
SDL_Window *win;
@ -73,6 +78,19 @@ static void sdl_ctx_destroy_resources(gfx_ctx_sdl_data_t *sdl)
sdl->win = NULL;
}
static void sdl_ctx_destroy(void *data)
{
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)data;
if (!sdl)
return;
sdl_ctx_destroy_resources(sdl);
if (sdl->subsystem_inited)
SDL_QuitSubSystem(SDL_INIT_VIDEO);
free(sdl);
}
static void *sdl_ctx_init(void *video_driver)
{
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)
@ -86,6 +104,12 @@ static void *sdl_ctx_init(void *video_driver)
XInitThreads();
#endif
#ifdef WEBOS
SDL_SetHint(SDL_HINT_WEBOS_ACCESS_POLICY_KEYS_BACK, "true");
SDL_SetHint(SDL_HINT_WEBOS_ACCESS_POLICY_KEYS_EXIT, "true");
SDL_SetHint(SDL_HINT_WEBOS_CURSOR_SLEEP_TIME, "1000");
#endif
/* Initialise graphics subsystem, if required */
if (sdl_subsystem_flags == 0)
{
@ -96,6 +120,7 @@ static void *sdl_ctx_init(void *video_driver)
{
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
goto error;
sdl->subsystem_inited = true;
}
RARCH_LOG("[SDL_GL] SDL %i.%i.%i gfx context driver initialized.\n",
@ -107,24 +132,11 @@ error:
RARCH_WARN("[SDL_GL]: Failed to initialize SDL gfx context driver: %s\n",
SDL_GetError());
sdl_ctx_destroy_resources(sdl);
if (sdl)
free(sdl);
sdl_ctx_destroy(sdl);
return NULL;
}
static void sdl_ctx_destroy(void *data)
{
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)data;
if (!sdl)
return;
sdl_ctx_destroy_resources(sdl);
free(sdl);
}
static enum gfx_ctx_api sdl_ctx_get_api(void *data) { return sdl_api; }
@ -201,7 +213,8 @@ static bool sdl_ctx_set_video_mode(void *data,
{
unsigned display = video_monitor_index;
sdl->win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
sdl->win = SDL_CreateWindow("RetroArch",
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
width, height, SDL_WINDOW_OPENGL | fsflag);
}

View file

@ -35,6 +35,11 @@
#include "../../gfx/common/sdl2_common.h"
#endif
#ifdef WEBOS
#include <SDL_webOS.h>
#include <dlfcn.h>
#endif
/* TODO/FIXME -
* fix game focus toggle */
@ -55,6 +60,15 @@ typedef struct sdl_input
int mouse_wr;
} sdl_input_t;
#ifdef WEBOS
enum sdl_webos_special_key {
sdl_webos_spkey_back,
sdl_webos_spkey_size,
};
static uint8_t sdl_webos_special_keymap[sdl_webos_spkey_size] = {0};
#endif
static void *sdl_input_init(const char *joypad_driver)
{
sdl_input_t *sdl = (sdl_input_t*)calloc(1, sizeof(*sdl));
@ -77,6 +91,18 @@ static bool sdl_key_pressed(int key)
unsigned sym = rarch_keysym_lut[(enum retro_key)key];
#endif
#ifdef WEBOS
if ( (key == RETROK_BACKSPACE )
&& sdl_webos_special_keymap[sdl_webos_spkey_back])
{
/* Reset to unpressed state */
sdl_webos_special_keymap[sdl_webos_spkey_back] = 0;
return true;
}
if (key == RETROK_F1 && keymap[SDL_WEBOS_SCANCODE_EXIT])
return true;
#endif
if (sym >= (unsigned)num_keys)
return false;
@ -164,6 +190,27 @@ static int16_t sdl_input_state(
return sdl->mouse_l;
case RETRO_DEVICE_ID_MOUSE_RIGHT:
return sdl->mouse_r;
#ifdef WEBOS
case RETRO_DEVICE_ID_MOUSE_WHEELUP:
/* Note: webOS wheel is reversed */
if (sdl->mouse_wd != 0)
{
sdl->mouse_wd = 0;
return 1;
}
return 0;
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
if (sdl->mouse_wu != 0)
{
sdl->mouse_wu = 0;
return 1;
}
return 0;
case RETRO_DEVICE_ID_MOUSE_X:
return sdl->mouse_abs_x;
case RETRO_DEVICE_ID_MOUSE_Y:
return sdl->mouse_abs_y;
#else
case RETRO_DEVICE_ID_MOUSE_WHEELUP:
return sdl->mouse_wu;
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
@ -172,6 +219,7 @@ static int16_t sdl_input_state(
return sdl->mouse_x;
case RETRO_DEVICE_ID_MOUSE_Y:
return sdl->mouse_y;
#endif
case RETRO_DEVICE_ID_MOUSE_MIDDLE:
return sdl->mouse_m;
case RETRO_DEVICE_ID_MOUSE_BUTTON_4:
@ -330,9 +378,41 @@ static void sdl_input_poll(void *data)
{
if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)
{
uint16_t mod = 0;
uint16_t mod = 0;
unsigned code = input_keymaps_translate_keysym_to_rk(
event.key.keysym.sym);
#ifdef WEBOS
switch ((int) event.key.keysym.scancode)
{
case SDL_WEBOS_SCANCODE_BACK:
/* Because webOS is sending DOWN/UP at the same time,
we save this flag for later */
sdl_webos_special_keymap[sdl_webos_spkey_back] |= event.type == SDL_KEYDOWN;
code = RETROK_BACKSPACE;
break;
case SDL_WEBOS_SCANCODE_RED:
code = RETROK_x;
break;
case SDL_WEBOS_SCANCODE_GREEN:
code = RETROK_z;
break;
case SDL_WEBOS_SCANCODE_YELLOW:
code = RETROK_s;
break;
case SDL_WEBOS_SCANCODE_BLUE:
code = RETROK_a;
break;
case SDL_WEBOS_SCANCODE_EXIT:
code = RETROK_F1;
break;
default:
break;
}
/* Disable cursor when using the buttons */
if (code && code != RETROK_RETURN)
SDL_webOSCursorVisibility(0);
#endif
if (event.key.keysym.mod & KMOD_SHIFT)
mod |= RETROKMOD_SHIFT;
@ -396,3 +476,23 @@ input_driver_t input_sdl = {
#endif
NULL
};
#ifdef WEBOS
SDL_bool SDL_webOSCursorVisibility(SDL_bool visible)
{
static SDL_bool (*fn)(SDL_bool visible) = NULL;
static bool dlsym_called = false;
if (!dlsym_called)
{
fn = dlsym(RTLD_NEXT, "SDL_webOSCursorVisibility");
dlsym_called = true;
}
if (!fn)
{
SDL_ShowCursor(SDL_DISABLE);
SDL_ShowCursor(SDL_ENABLE);
return SDL_TRUE;
}
return fn(visible);
}
#endif

View file

@ -138,6 +138,17 @@ static void sdl_pad_connect(unsigned id)
vendor = guid_ptr[0];
product = guid_ptr[1];
#endif
#ifdef WEBOS
if (vendor == 0x9999 && product == 0x9999)
{
RARCH_WARN("[SDL_JOYPAD]: Ignoring pad #%d (vendor: %d; product: %d)\n", id, vendor, product);
if (pad->joypad)
SDL_JoystickClose(pad->joypad);
pad->joypad = NULL;
return;
}
#endif
#endif
input_autoconfigure_connect(

View file

@ -34467,9 +34467,12 @@ static bool retroarch_parse_input_and_config(
optstring = "hs:fvS:A:U:DN:d:"
BSV_MOVIE_ARG NETPLAY_ARG DYNAMIC_ARG FFMPEG_RECORD_ARG CONFIG_FILE_ARG;
#ifdef ORBIS
#if defined(ORBIS)
argv = &(argv[2]);
argc = argc - 2;
#elif defined(WEBOS)
argv = &(argv[1]);
argc = argc - 1;
#endif
#ifndef HAVE_MENU

3
webos/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
dist/
prefix/
*.ipk

14
webos/README.md Normal file
View file

@ -0,0 +1,14 @@
## Building
```sh
make -f Makefile.webos clean
make -f Makefile.webos -j$(ncpu --all) ipk
```
## Testing
```sh
# Install and launch via ares-launch
make -f Makefile.webos launch
# Start installed application via SSH
XDG_RUNTIME_DIR=/tmp/xdg /usr/bin/jailer -t native_devmode -i com.retroarch -p /media/developer/apps/usr/palm/applications/com.retroarch /media/developer/apps/usr/palm/applications/com.retroarch/retroarch --verbose --verbose
```

11
webos/appinfo.json Normal file
View file

@ -0,0 +1,11 @@
{
"id": "com.retroarch",
"version": "1.9.8",
"vendor": "libretro.com",
"title": "RetroArch",
"icon": "icon160.png",
"main": "retroarch",
"iconColor": "#333333",
"type": "native",
"appDescription": "Official Libretro frontend"
}

3
webos/build-icon.sh Normal file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
convert -background none media/retroarch.svg -resize 160x160 -negate webos/icon160.png

BIN
webos/icon160.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB