Conflicts:
	gfx/gfx_context.c
	gfx/gfx_context.h
	retroarch.c
This commit is contained in:
meancoot 2013-03-03 21:36:47 -05:00
commit e8e822ffc3
62 changed files with 3829 additions and 930 deletions

View File

@ -2,7 +2,8 @@ include config.mk
TARGET = retroarch tools/retroarch-joyconfig tools/retrolaunch/retrolaunch TARGET = retroarch tools/retroarch-joyconfig tools/retrolaunch/retrolaunch
OBJ = retroarch.o \ OBJ = frontend/frontend.o \
retroarch.o \
file.o \ file.o \
file_path.o \ file_path.o \
hash.o \ hash.o \

View File

@ -4,6 +4,8 @@ DEBUG = 0
HAVE_LOGGER = 1 HAVE_LOGGER = 1
HAVE_FILE_LOGGER = 0 HAVE_FILE_LOGGER = 0
PERF_TEST = 0 PERF_TEST = 0
WHOLE_ARCHIVE_LINK = 0
BIG_STACK = 0
PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.7" PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.7"
PC_DEVELOPMENT_UDP_PORT = 3490 PC_DEVELOPMENT_UDP_PORT = 3490
@ -32,8 +34,15 @@ LIBDIRS := -L$(DEVKITPRO)/libogc/lib/cube -L.
MACHDEP := -DGEKKO -DHW_DOL -mogc -mcpu=750 -meabi -mhard-float MACHDEP := -DGEKKO -DHW_DOL -mogc -mcpu=750 -meabi -mhard-float
CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE) CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE)
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map -T gx/ld/ogc.ld ifeq ($(WHOLE_ARCHIVE_LINK), 1)
LIBS := -lfat -lretro_ngc -logc WHOLE_START := -Wl,--whole-archive
WHOLE_END := -Wl,--no-whole-archive
endif
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map
ifeq ($(BIG_STACK), 1)
LDFLAGS += -T gx/ld/ogc.ld
endif
LIBS := -lfat $(WHOLE_START) -lretro_ngc $(WHOLE_END) -logc
OBJ = console/griffin/griffin.o OBJ = console/griffin/griffin.o
@ -53,7 +62,7 @@ CFLAGS += -DHAVE_FILE_LOGGER
CFLAGS += -Iconsole/logger CFLAGS += -Iconsole/logger
endif endif
CFLAGS += -std=gnu99 -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RMENU -DHAVE_RGUI -DRARCH_CONSOLE -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -Wno-char-subscripts CFLAGS += -std=gnu99 -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RMENU -DHAVE_RGUI -DRARCH_CONSOLE -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
CFLAGS += -O0 -g CFLAGS += -O0 -g

View File

@ -109,7 +109,7 @@ PPU_LDLIBS = $(FONT_LIBS) $(GL_LIBS) $(WHOLE_START) -lretro_ps3 $(WHOLE_END) -l
PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe
DEFINES += -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RMENU -DHAVE_THREADS -DHAVE_RMENU_GUI -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FILEBROWSER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_SINC -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSKUTIL -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) DEFINES += -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RMENU -DHAVE_THREADS -DHAVE_RMENU_GUI -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FILEBROWSER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_SINC -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSKUTIL -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
PPU_OPTIMIZE_LV := -O0 -g PPU_OPTIMIZE_LV := -O0 -g

View File

@ -92,7 +92,7 @@ endif
RSXGL_DEFINES = -D__RSX__ -DGL3_PROTOTYPES RSXGL_DEFINES = -D__RSX__ -DGL3_PROTOTYPES
SHARED_FLAGS := -DHAVE_FILEBROWSER $(RSXGL_DEFINES) -DHAVE_OPENGL -DHAVE_EGL -DHAVE_OPENGL_MODERN -DHAVE_GLSL -DHAVE_VID_CONTEXT -DHAVE_FBO -DHAVE_MOUSE -DHAVE_DEFAULT_RETROPAD_INPUT -DRARCH_CONSOLE -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_GRIFFIN=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DPACKAGE_VERSION=\"0.9.8\" -Dmain=rarch_main -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts SHARED_FLAGS := -DHAVE_FILEBROWSER $(RSXGL_DEFINES) -DHAVE_OPENGL -DHAVE_EGL -DHAVE_OPENGL_MODERN -DHAVE_GLSL -DHAVE_VID_CONTEXT -DHAVE_FBO -DHAVE_MOUSE -DHAVE_DEFAULT_RETROPAD_INPUT -DRARCH_CONSOLE -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_GRIFFIN=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DPACKAGE_VERSION=\"0.9.8\" -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts
CFLAGS += -std=gnu99 $(SHARED_FLAGS) CFLAGS += -std=gnu99 $(SHARED_FLAGS)
CXXFLAGS += $(SHARED_FLAGS) CXXFLAGS += $(SHARED_FLAGS)

View File

@ -8,7 +8,7 @@ INCDIR =
CFLAGS = -O2 -G0 -g -std=gnu99 -ffast-math CFLAGS = -O2 -G0 -g -std=gnu99 -ffast-math
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)
RARCH_DEFINES = -DPSP -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_FILEBROWSER -DHAVE_RARCH_MAIN_WRAP -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -DHAVE_NULLVIDEO -DHAVE_NULLAUDIO -DHAVE_RMENU RARCH_DEFINES = -DPSP -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_FILEBROWSER -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DHAVE_NULLVIDEO -DHAVE_NULLAUDIO -DHAVE_RMENU
ifeq ($(HAVE_FILE_LOGGER), 1) ifeq ($(HAVE_FILE_LOGGER), 1)
CFLAGS += -DHAVE_FILE_LOGGER CFLAGS += -DHAVE_FILE_LOGGER

View File

@ -4,7 +4,8 @@ DEBUG = 0
HAVE_LOGGER = 0 HAVE_LOGGER = 0
HAVE_FILE_LOGGER = 0 HAVE_FILE_LOGGER = 0
PERF_TEST = 0 PERF_TEST = 0
WHOLE_ARCHIVE_LINK = 0 WHOLE_ARCHIVE_LINK = 0
BIG_STACK = 0
PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.100" PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.100"
PC_DEVELOPMENT_UDP_PORT = 3490 PC_DEVELOPMENT_UDP_PORT = 3490
@ -36,10 +37,13 @@ LIBDIRS := -L$(DEVKITPRO)/libogc/lib/wii -L.
MACHDEP := -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float MACHDEP := -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float
CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE) CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE)
ifeq ($(WHOLE_ARCHIVE_LINK), 1) ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_START := -Wl,--whole-archive WHOLE_START := -Wl,--whole-archive
WHOLE_END := -Wl,--no-whole-archive WHOLE_END := -Wl,--no-whole-archive
endif
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size
ifeq ($(BIG_STACK), 1)
LDFLAGS += -T gx/ld/rvl.ld
endif endif
LDFLAGS := $(MACHDEP) -Wl,-Map,$(notdir $(ELF_TARGET)).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size -T gx/ld/rvl.ld
LIBS := -lfat $(WHOLE_START) -lretro_wii $(WHOLE_END) -logc $(LDFLAGS_WIIUSE) -lbte LIBS := -lfat $(WHOLE_START) -lretro_wii $(WHOLE_END) -logc $(LDFLAGS_WIIUSE) -lbte
APP_BOOTER_DIR = wii/app_booter APP_BOOTER_DIR = wii/app_booter
@ -61,7 +65,7 @@ CFLAGS += -Iconsole/logger
endif endif
CFLAGS += -std=gnu99 -DHAVE_SINC -DSINC_LOWER_QUALITY -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RGUI -DRARCH_CONSOLE -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RARCH_EXEC -DHAVE_RMENU -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -Wno-char-subscripts CFLAGS += -std=gnu99 -DHAVE_SINC -DSINC_LOWER_QUALITY -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RGUI -DRARCH_CONSOLE -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RARCH_EXEC -DHAVE_RMENU -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
CFLAGS += -O0 -g -DDEBUG CFLAGS += -O0 -g -DDEBUG

View File

@ -1,7 +1,8 @@
TARGET = retroarch.exe TARGET = retroarch.exe
JTARGET = tools/retroarch-joyconfig.exe JTARGET = tools/retroarch-joyconfig.exe
OBJ = retroarch.o \ OBJ = frontend/frontend.o \
retroarch.o \
file.o \ file.o \
file_path.o \ file_path.o \
driver.o \ driver.o \

View File

@ -16,7 +16,7 @@ INCDIRS = -I. -I$(DEVKITXENON)/usr/include
OBJ = console/griffin/griffin.o OBJ = console/griffin/griffin.o
LIBS = -lretro_xenon360 -lxenon -lm -lc LIBS = -lretro_xenon360 -lxenon -lm -lc
DEFINES = -std=gnu99 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DRARCH_CONSOLE -DHAVE_THREADS -DHAVE_GETOPT_LONG=1 -DHAVE_GRIFFIN -Dmain=rarch_main DEFINES = -std=gnu99 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DRARCH_CONSOLE -DHAVE_THREADS -DHAVE_GETOPT_LONG=1 -DHAVE_GRIFFIN
DEFINES += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts DEFINES += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts
DEFINES += -u read -u _start -u exc_base DEFINES += -u read -u _start -u exc_base

View File

@ -16,6 +16,7 @@
#include <android/keycodes.h> #include <android/keycodes.h>
#include <unistd.h> #include <unistd.h>
#include <dlfcn.h>
#include "input_autodetect.h" #include "input_autodetect.h"
#include "../../../frontend/frontend_android.h" #include "../../../frontend/frontend_android.h"
#include "../../../input/input_common.h" #include "../../../input/input_common.h"
@ -25,14 +26,16 @@
#define MAX_TOUCH 16 #define MAX_TOUCH 16
#define PRESSED_UP(x, y) ((-0.80f > y) && (x >= -1.00f)) #define PRESSED_UP(x, y) ((y <= dzone_min))
#define PRESSED_DOWN(x, y) ((0.80f < y) && (y <= 1.00f)) #define PRESSED_DOWN(x, y) ((y >= dzone_max))
#define PRESSED_LEFT(x, y) ((-0.80f > x) && (x >= -1.00f)) #define PRESSED_LEFT(x, y) ((x <= dzone_min))
#define PRESSED_RIGHT(x, y) ((0.80f < x) && (x <= 1.00f)) #define PRESSED_RIGHT(x, y) ((x >= dzone_max))
static unsigned pads_connected; static unsigned pads_connected;
static int state_device_ids[MAX_PADS]; static int state_device_ids[MAX_PADS];
static uint64_t state[MAX_PADS]; static uint64_t state[MAX_PADS];
uint64_t keycode_lut[LAST_KEYCODE];
dpad_values_t dpad_state[MAX_PADS];
struct input_pointer struct input_pointer
{ {
@ -43,218 +46,392 @@ struct input_pointer
static struct input_pointer pointer[MAX_TOUCH]; static struct input_pointer pointer[MAX_TOUCH];
static unsigned pointer_count; static unsigned pointer_count;
static void *android_input_init(void) enum
{ {
pads_connected = 0; AXIS_X = 0,
AXIS_Y = 1,
AXIS_Z = 11,
AXIS_RZ = 14
};
input_autodetect_init(); extern float AMotionEvent_getAxisValue(
const AInputEvent* motion_event, int32_t axis, size_t pointer_index);
for(unsigned player = 0; player < 4; player++) static typeof(AMotionEvent_getAxisValue) *p_AMotionEvent_getAxisValue;
for(unsigned i = 0; i < RARCH_FIRST_META_KEY; i++)
{
g_settings.input.binds[player][i].id = i;
g_settings.input.binds[player][i].joykey = 0;
}
for(int player = 0; player < 4; player++) #define AMotionEvent_getAxisValue (*p_AMotionEvent_getAxisValue)
{
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_B].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_B); float getAxis(AInputEvent *event, int stick, int axis, int pointer)
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_Y].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_Y); {
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_SELECT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT); int axis_arg[2][2] = {{AXIS_X, AXIS_Y}, {AXIS_Z, AXIS_RZ}};
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_START].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_START); return AMotionEvent_getAxisValue(event, axis_arg[stick][axis], pointer);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_UP].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_UP);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_DOWN].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_LEFT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_RIGHT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_A].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_A);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_X].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_X);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_L].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_R].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_L2].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L2);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_R2].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R2);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_L3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L3);
g_settings.input.binds[player][RETRO_DEVICE_ID_JOYPAD_R3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R3);
}
g_settings.input.dpad_emulation[0] = DPAD_EMULATION_LSTICK;
return (void*)-1;
} }
static void android_input_poll(void *data) /**
* Process the next main command.
*/
void engine_handle_cmd(void)
{ {
(void)data; struct android_app *android_app = (struct android_app*)g_android;
int8_t cmd;
RARCH_PERFORMANCE_INIT(input_poll); if (read(android_app->msgread, &cmd, sizeof(cmd)) != sizeof(cmd))
RARCH_PERFORMANCE_START(input_poll); cmd = -1;
switch (cmd)
{
case APP_CMD_INPUT_CHANGED:
RARCH_LOG("APP_CMD_INPUT_CHANGED\n");
pthread_mutex_lock(&android_app->mutex);
if (android_app->inputQueue != NULL)
AInputQueue_detachLooper(android_app->inputQueue);
android_app->inputQueue = android_app->pendingInputQueue;
if (android_app->inputQueue != NULL)
{
RARCH_LOG("Attaching input queue to looper");
AInputQueue_attachLooper(android_app->inputQueue,
android_app->looper, LOOPER_ID_INPUT, NULL,
NULL);
}
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_INIT_WINDOW:
RARCH_LOG("engine_handle_cmd: APP_CMD_INIT_WINDOW.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->window = android_app->pendingWindow;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
if (g_extern.lifecycle_state & (1ULL << RARCH_PAUSE_TOGGLE))
init_drivers();
break;
case APP_CMD_RESUME:
RARCH_LOG("engine_handle_cmd: APP_CMD_RESUME.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_START:
RARCH_LOG("engine_handle_cmd: APP_CMD_START.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_PAUSE:
RARCH_LOG("engine_handle_cmd: APP_CMD_PAUSE.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
if (!(g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY)))
{
RARCH_LOG("Pausing RetroArch.\n");
g_extern.lifecycle_state |= (1ULL << RARCH_PAUSE_TOGGLE);
}
break;
case APP_CMD_STOP:
RARCH_LOG("engine_handle_cmd: APP_CMD_STOP.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_CONFIG_CHANGED:
RARCH_LOG("engine_handle_cmd: APP_CMD_CONFIG_CHANGED.\n");
break;
case APP_CMD_TERM_WINDOW:
RARCH_LOG("engine_handle_cmd: APP_CMD_TERM_WINDOW.\n");
pthread_mutex_lock(&android_app->mutex);
/* The window is being hidden or closed, clean it up. */
/* terminate display/EGL context here */
if (g_extern.lifecycle_state & (1ULL << RARCH_PAUSE_TOGGLE))
uninit_drivers();
else
RARCH_WARN("Window is terminated outside PAUSED state.\n");
android_app->window = NULL;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_GAINED_FOCUS:
RARCH_LOG("engine_handle_cmd: APP_CMD_GAINED_FOCUS.\n");
g_extern.lifecycle_state &= ~(1ULL << RARCH_PAUSE_TOGGLE);
break;
case APP_CMD_LOST_FOCUS:
RARCH_LOG("engine_handle_cmd: APP_CMD_LOST_FOCUS.\n");
break;
case APP_CMD_DESTROY:
RARCH_LOG("engine_handle_cmd: APP_CMD_DESTROY\n");
g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
break;
}
}
static inline void engine_handle_input(void)
{
bool debug_enable = g_settings.input.debug_enable; bool debug_enable = g_settings.input.debug_enable;
struct android_app* android_app = (struct android_app*)g_android; struct android_app *android_app = (struct android_app*)g_android;
uint64_t *lifecycle_state = &g_extern.lifecycle_state; uint64_t *lifecycle_state = &g_extern.lifecycle_state;
AInputEvent* event = NULL;
*lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS)); *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS));
// Read all pending events. // Read all pending events.
while (AInputQueue_hasEvents(android_app->inputQueue) > 0) while (AInputQueue_hasEvents(android_app->inputQueue))
{ {
AInputEvent* event = NULL; if (AInputQueue_getEvent(android_app->inputQueue, &event) >= 0)
if (AInputQueue_getEvent(android_app->inputQueue, &event) < 0)
break;
bool long_msg_enable = false;
int32_t handled = 1;
int action = 0;
char msg[128];
msg[0] = 0;
int source = AInputEvent_getSource(event);
int id = AInputEvent_getDeviceId(event);
if (id == zeus_second_id)
id = zeus_id;
int keycode = AKeyEvent_getKeyCode(event);
int type_event = AInputEvent_getType(event);
int state_id = -1;
if (source & (AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD))
state_id = 0; // touch overlay is always player 1
else
{ {
for (unsigned i = 0; i < pads_connected; i++) bool long_msg_enable = false;
if (state_device_ids[i] == id) int32_t handled = 1;
state_id = i; int action = 0;
} char msg[128];
int source, id, keycode, type_event, state_id;
//int predispatched;
if (state_id < 0) msg[0] = 0;
{ //predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event);
state_id = pads_connected;
state_device_ids[pads_connected++] = id;
input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); //if (predispatched)
long_msg_enable = true; //continue;
}
if (keycode == AKEYCODE_BACK) source = AInputEvent_getSource(event);
{ id = AInputEvent_getDeviceId(event);
uint8_t unpacked = (keycode_lut[AKEYCODE_BACK] >> ((state_id+1) << 3)) - 1; if (id == zeus_second_id)
uint64_t input_state = (1ULL << unpacked); id = zeus_id;
keycode = AKeyEvent_getKeyCode(event);
if (type_event == AINPUT_EVENT_TYPE_KEY && input_state < (1ULL << RARCH_FIRST_META_KEY) type_event = AInputEvent_getType(event);
&& input_state > 0) state_id = -1;
{
} if (source & (AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD))
state_id = 0; // touch overlay is always player 1
else else
{ {
int meta = AKeyEvent_getMetaState(event); for (unsigned i = 0; i < pads_connected; i++)
if (!(meta & AMETA_ALT_ON)) if (state_device_ids[i] == id)
state_id = i;
}
if (state_id < 0)
{
state_id = pads_connected;
state_device_ids[pads_connected++] = id;
input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source);
long_msg_enable = true;
}
if (keycode == AKEYCODE_BACK)
{
uint8_t unpacked = (keycode_lut[AKEYCODE_BACK] >> ((state_id+1) << 3)) - 1;
uint64_t input_state = (1ULL << unpacked);
if (g_extern.lifecycle_mode_state & (1ULL << MODE_INPUT_XPERIA_PLAY_HACK))
{
int meta = AKeyEvent_getMetaState(event);
if (!(meta & AMETA_ALT_ON))
{
*lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
AInputQueue_finishEvent(android_app->inputQueue, event, handled);
break;
}
}
else if (type_event == AINPUT_EVENT_TYPE_KEY && input_state < (1ULL << RARCH_FIRST_META_KEY)
&& input_state > 0)
{
}
else
{ {
*lifecycle_state |= (1ULL << RARCH_QUIT_KEY); *lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
AInputQueue_finishEvent(android_app->inputQueue, event, handled); AInputQueue_finishEvent(android_app->inputQueue, event, handled);
break; break;
} }
} }
}
if (type_event == AINPUT_EVENT_TYPE_MOTION) if (type_event == AINPUT_EVENT_TYPE_MOTION)
{
float x = 0.0f;
float y = 0.0f;
action = AMotionEvent_getAction(event);
size_t motion_pointer = action >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT;
action &= AMOTION_EVENT_ACTION_MASK;
if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE))
{ {
if (g_settings.input.dpad_emulation[state_id] != DPAD_EMULATION_NONE) float x = 0.0f;
{ float y = 0.0f;
uint64_t *state_cur = &state[state_id]; action = AMotionEvent_getAction(event);
x = AMotionEvent_getX(event, motion_pointer); size_t motion_pointer = action >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT;
y = AMotionEvent_getY(event, motion_pointer); action &= AMOTION_EVENT_ACTION_MASK;
*state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) |
(1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN));
*state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0;
*state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0;
*state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0;
*state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0;
}
}
else
{
bool keyup = (action == AMOTION_EVENT_ACTION_UP ||
action == AMOTION_EVENT_ACTION_CANCEL || action == AMOTION_EVENT_ACTION_POINTER_UP) ||
(source == AINPUT_SOURCE_MOUSE && action != AMOTION_EVENT_ACTION_DOWN);
if (keyup && motion_pointer < MAX_TOUCH) if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE))
{ {
memmove(pointer + motion_pointer, pointer + motion_pointer + 1, (MAX_TOUCH - motion_pointer - 1) * sizeof(struct input_pointer)); if (g_settings.input.dpad_emulation[state_id] != DPAD_EMULATION_NONE)
if (pointer_count > 0) {
pointer_count--; uint64_t *state_cur = &state[state_id];
float dzone_min = dpad_state[state_id].dzone_min;
float dzone_max = dpad_state[state_id].dzone_max;
x = AMotionEvent_getX(event, motion_pointer);
y = AMotionEvent_getY(event, motion_pointer);
//float axis = AMotionEvent_getAxisValue(event, AXIS_Z, motion_pointer);
//RARCH_LOG("axis: %.2f\n", axis);
*state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) |
(1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN));
*state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0;
*state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0;
*state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0;
*state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0;
}
} }
else else
{ {
int pointer_max = min(AMotionEvent_getPointerCount(event), MAX_TOUCH); bool keyup = (action == AMOTION_EVENT_ACTION_UP ||
for (motion_pointer = 0; motion_pointer < pointer_max; motion_pointer++) action == AMOTION_EVENT_ACTION_CANCEL || action == AMOTION_EVENT_ACTION_POINTER_UP) ||
(source == AINPUT_SOURCE_MOUSE && action != AMOTION_EVENT_ACTION_DOWN);
if (keyup && motion_pointer < MAX_TOUCH)
{ {
x = AMotionEvent_getX(event, motion_pointer); memmove(pointer + motion_pointer, pointer + motion_pointer + 1, (MAX_TOUCH - motion_pointer - 1) * sizeof(struct input_pointer));
y = AMotionEvent_getY(event, motion_pointer); if (pointer_count > 0)
pointer_count--;
}
else
{
int pointer_max = min(AMotionEvent_getPointerCount(event), MAX_TOUCH);
for (motion_pointer = 0; motion_pointer < pointer_max; motion_pointer++)
{
x = AMotionEvent_getX(event, motion_pointer);
y = AMotionEvent_getY(event, motion_pointer);
input_translate_coord_viewport(x, y, input_translate_coord_viewport(x, y,
&pointer[motion_pointer].x, &pointer[motion_pointer].y, &pointer[motion_pointer].x, &pointer[motion_pointer].y,
&pointer[motion_pointer].full_x, &pointer[motion_pointer].full_y); &pointer[motion_pointer].full_x, &pointer[motion_pointer].full_y);
pointer_count = max(pointer_count, motion_pointer + 1); pointer_count = max(pointer_count, motion_pointer + 1);
}
} }
} }
if (debug_enable)
snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source);
} }
else if (type_event == AINPUT_EVENT_TYPE_KEY)
if (debug_enable)
snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source);
}
else if (type_event == AINPUT_EVENT_TYPE_KEY)
{
if (debug_enable)
snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source);
/* Hack - we have to decrease the unpacked value by 1
* because we 'added' 1 to each entry in the LUT -
* RETRO_DEVICE_ID_JOYPAD_B is 0
*/
uint8_t unpacked = (keycode_lut[keycode] >> ((state_id+1) << 3)) - 1;
uint64_t input_state = (1ULL << unpacked);
int action = AKeyEvent_getAction(event);
uint64_t *key = NULL;
if(input_state < (1ULL << RARCH_FIRST_META_KEY))
key = &state[state_id];
else if(input_state)
key = &g_extern.lifecycle_state;
if(key != NULL)
{ {
if (action == AKEY_EVENT_ACTION_UP) if (debug_enable)
*key &= ~(input_state); snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source);
else if (action == AKEY_EVENT_ACTION_DOWN)
*key |= input_state; /* Hack - we have to decrease the unpacked value by 1
* because we 'added' 1 to each entry in the LUT -
* RETRO_DEVICE_ID_JOYPAD_B is 0
*/
uint8_t unpacked = (keycode_lut[keycode] >> ((state_id+1) << 3)) - 1;
uint64_t input_state = (1ULL << unpacked);
int action = AKeyEvent_getAction(event);
uint64_t *key = NULL;
if(input_state < (1ULL << RARCH_FIRST_META_KEY))
key = &state[state_id];
else if(input_state)
key = &g_extern.lifecycle_state;
if(key != NULL)
{
if (action == AKEY_EVENT_ACTION_UP)
*key &= ~(input_state);
else if (action == AKEY_EVENT_ACTION_DOWN)
*key |= input_state;
}
if((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0)
handled = 0;
} }
if((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0) if (msg[0] != 0)
handled = 0; msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30);
AInputQueue_finishEvent(android_app->inputQueue, event, handled);
}
}
}
// Handle all events. If our activity is in pause state, block until we're unpaused.
void android_handle_events(void)
{
int ident;
while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0,
NULL, NULL, NULL)) >= 0)
{
if (ident == LOOPER_ID_MAIN)
engine_handle_cmd();
else if (!input_key_pressed_func(RARCH_PAUSE_TOGGLE))
engine_handle_input();
}
}
static void *android_input_init(void)
{
unsigned i, j;
pads_connected = 0;
input_autodetect_init();
for(i = 0; i < MAX_PADS; i++)
{
for(j = 0; j < RARCH_FIRST_META_KEY; j++)
{
g_settings.input.binds[i][j].id = i;
g_settings.input.binds[i][j].joykey = 0;
} }
if (msg[0] != 0) g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_B].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_B);
msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30); g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_Y].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_Y);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_SELECT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_START].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_START);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_UP].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_UP);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_DOWN].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_LEFT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_RIGHT].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_A].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_A);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_X].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_X);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_L].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_R].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_L2].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L2);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_R2].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R2);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_L3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L3);
g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_R3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R3);
AInputQueue_finishEvent(android_app->inputQueue, event, handled); dpad_state[i].dzone_min = -0.99f;
dpad_state[i].dzone_max = 0.99f;
} }
g_settings.input.dpad_emulation[0] = DPAD_EMULATION_LSTICK;
#if 0 //p_AMotionEvent_getAxisValue = dlsym(RTLD_DEFAULT, "AMotionEvent_getAxisValue");
{
char msg[64];
snprintf(msg, sizeof(msg), "Pointers: %u", pointer_count);
msg_queue_clear(g_extern.msg_queue);
msg_queue_push(g_extern.msg_queue, msg, 0, 30);
}
#endif
RARCH_PERFORMANCE_STOP(input_poll); return (void*)-1;
}
static void android_input_poll(void *data)
{
} }
static int16_t android_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned index, unsigned id) static int16_t android_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned index, unsigned id)

View File

@ -18,9 +18,7 @@
#include "jni_macros.h" #include "jni_macros.h"
#include "input_autodetect.h" #include "input_autodetect.h"
uint64_t keycode_lut[LAST_KEYCODE]; extern dpad_values_t dpad_state[MAX_PADS];
bool volume_enable;
static void input_autodetect_get_device_name(void *data, char *buf, size_t size, int id) static void input_autodetect_get_device_name(void *data, char *buf, size_t size, int id)
{ {
@ -77,7 +75,6 @@ void input_autodetect_init (void)
for(j = 0; j < LAST_KEYCODE; j++) for(j = 0; j < LAST_KEYCODE; j++)
keycode_lut[j] = 0; keycode_lut[j] = 0;
volume_enable = true;
if (g_settings.input.autodetect_enable) if (g_settings.input.autodetect_enable)
return; return;
@ -210,6 +207,9 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
} }
else if (strstr(name_buf, "TTT THT Arcade console 2P USB Play")) else if (strstr(name_buf, "TTT THT Arcade console 2P USB Play"))
{ {
dpad_state[id].dzone_min = -2.00f;
dpad_state[id].dzone_max = 1.00f;
/* same as Rumblepad 2 - merge? */ /* same as Rumblepad 2 - merge? */
keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift);
keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
@ -222,8 +222,11 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
keycode_lut[AKEYCODE_BUTTON_9] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_9] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_10] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); keycode_lut[AKEYCODE_BUTTON_10] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift);
/* unsure about pad 2 still */ /* TODO - unsure about pad 2 still */
shift = 8 + ((port + 1) * 8); keycode_lut[AKEYCODE_BUTTON_Z] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift);
keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift);
keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_11] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_11] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift);
keycode_lut[AKEYCODE_BUTTON_12] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_12] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
@ -236,6 +239,20 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift);
} }
else if (strstr(name_buf, "TOMMO NEOGEOX Arcade Stick"))
{
/* TODO - Start/select */
keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift);
keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift);
keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift);
keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift);
keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift);
keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift);
//keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift);
//keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift);
}
else if (strstr(name_buf, "MadCatz")) else if (strstr(name_buf, "MadCatz"))
{ {
if (strstr(name_buf, "PC USB Wired Stick")) if (strstr(name_buf, "PC USB Wired Stick"))
@ -299,6 +316,9 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
else if (strstr(name_buf, "HuiJia USB GamePad") || else if (strstr(name_buf, "HuiJia USB GamePad") ||
strstr(name_buf, "Smartjoy Family Super Smartjoy 2")) strstr(name_buf, "Smartjoy Family Super Smartjoy 2"))
{ {
dpad_state[id].dzone_min = -1.00f;
dpad_state[id].dzone_max = 1.00f;
keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift);
@ -527,6 +547,11 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
else if (strstr(name_buf, "USB,2-axis 8-button gamepad") || else if (strstr(name_buf, "USB,2-axis 8-button gamepad") ||
strstr(name_buf, "BUFFALO BGC-FC801")) strstr(name_buf, "BUFFALO BGC-FC801"))
{ {
if (strstr(name_buf, "BUFFALO BGC-FC801"))
{
dpad_state[id].dzone_min = -1.00f;
dpad_state[id].dzone_max = 1.00f;
}
keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift);
keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift);
@ -650,6 +675,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
} }
else if (strstr(name_buf, "keypad-zeus") || (strstr(name_buf, "keypad-game-zeus"))) else if (strstr(name_buf, "keypad-zeus") || (strstr(name_buf, "keypad-game-zeus")))
{ {
g_extern.lifecycle_mode_state |= (1ULL << MODE_INPUT_XPERIA_PLAY_HACK);
/* Xperia Play */ /* Xperia Play */
/* X/o/square/triangle/R1/L1/D-pad */ /* X/o/square/triangle/R1/L1/D-pad */
keycode_lut[AKEYCODE_DPAD_CENTER] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_DPAD_CENTER] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
@ -665,7 +691,6 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
/* Xperia Play */ /* Xperia Play */
/* Start/select */ /* Start/select */
volume_enable = false;
/* TODO: menu button */ /* TODO: menu button */
/* Menu : 82 */ /* Menu : 82 */
@ -815,7 +840,6 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
//player 2 //player 2
shift += 8; shift += 8;
volume_enable = false;
keycode_lut[AKEYCODE_I] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_I] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift);
keycode_lut[AKEYCODE_K] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_K] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift);
keycode_lut[AKEYCODE_J] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); keycode_lut[AKEYCODE_J] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift);

View File

@ -65,6 +65,12 @@ enum {
#define LAST_KEYCODE AKEYCODE_ASSIST #define LAST_KEYCODE AKEYCODE_ASSIST
typedef struct
{
float dzone_min;
float dzone_max;
} dpad_values_t;
extern uint64_t keycode_lut[LAST_KEYCODE]; extern uint64_t keycode_lut[LAST_KEYCODE];
extern bool volume_enable; extern bool volume_enable;
extern int zeus_id; extern int zeus_id;

View File

@ -13,3 +13,4 @@ libretro_nestopia = "Nestopia (Nintendo NES)"
libretro_pcsx_rearmed-neon = "PCSX-reARMed (PlayStation1) [NEON]" libretro_pcsx_rearmed-neon = "PCSX-reARMed (PlayStation1) [NEON]"
libretro_pcsx_rearmed = "PCSX-reARMed (PlayStation1)" libretro_pcsx_rearmed = "PCSX-reARMed (PlayStation1)"
libretro_nxengine = "NXEngine (Cave Story/Doukutsu Monogatari)" libretro_nxengine = "NXEngine (Cave Story/Doukutsu Monogatari)"
libretro_tyrquake = "TyrQuake (Quake 1)"

View File

@ -42,14 +42,14 @@
<PreferenceScreen android:title="System Settings" > <PreferenceScreen android:title="System Settings" >
<PreferenceCategory android:title="General" > <PreferenceCategory android:title="General" >
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="true"
android:key="savestate_auto_load" android:key="savestate_auto_load"
android:summary="Loads an automatically created savestate at startup." android:summary="Loads an automatically created savestate (*.state.auto) at startup."
android:title="Auto load state" /> android:title="Auto load state" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="savestate_auto_save" android:key="savestate_auto_save"
android:summary="Automatically saves state when exiting game." android:summary="Automatically saves state (*.state.auto) when exiting game."
android:title="Auto save state" /> android:title="Auto save state" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="Rewinding" > <PreferenceCategory android:title="Rewinding" >

View File

@ -307,11 +307,7 @@ public class RetroArch extends Activity implements
startActivity(i); startActivity(i);
} }
}) })
.setNegativeButton("No", new DialogInterface.OnClickListener() { .setNegativeButton("No", null);
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alert.show(); alert.show();
} }
} }
@ -349,8 +345,10 @@ public class RetroArch extends Activity implements
return internal + File.separator + "retroarch.cfg"; return internal + File.separator + "retroarch.cfg";
else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite())
return external + File.separator + "retroarch.cfg"; return external + File.separator + "retroarch.cfg";
else else if (getCacheDir() != null && getCacheDir().getAbsolutePath() != null)
return getCacheDir().getAbsolutePath() + File.separator + "retroarch.cfg"; return getCacheDir().getAbsolutePath() + File.separator + "retroarch.cfg";
else // emergency fallback, all else failed
return "/mnt/sd/retroarch.cfg";
} }
private void updateConfigFile() { private void updateConfigFile() {
@ -359,16 +357,16 @@ public class RetroArch extends Activity implements
config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true));
config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true)); config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true));
config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true)); config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true));
config.setBoolean("savestate_auto_load", prefs.getBoolean("savestate_auto_load", false)); config.setBoolean("savestate_auto_load", prefs.getBoolean("savestate_auto_load", true));
config.setBoolean("savestate_auto_save", prefs.getBoolean("savestate_auto_save", false)); config.setBoolean("savestate_auto_save", prefs.getBoolean("savestate_auto_save", false));
config.setBoolean("rewind_enable", prefs.getBoolean("rewind_enable", false)); config.setBoolean("rewind_enable", prefs.getBoolean("rewind_enable", false));
config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true)); config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true));
config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true)); config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true));
config.setBoolean("input_debug_enable", prefs.getBoolean("input_debug_enable", false)); config.setBoolean("input_debug_enable", prefs.getBoolean("input_debug_enable", false));
config.setInt("input_autodetect_icade_profile_pad1", prefs.getInt("input_autodetect_icade_profile_pad1", 0)); config.setInt("input_autodetect_icade_profile_pad1", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad1", "0")));
config.setInt("input_autodetect_icade_profile_pad2", prefs.getInt("input_autodetect_icade_profile_pad2", 0)); config.setInt("input_autodetect_icade_profile_pad2", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad2", "0")));
config.setInt("input_autodetect_icade_profile_pad3", prefs.getInt("input_autodetect_icade_profile_pad3", 0)); config.setInt("input_autodetect_icade_profile_pad3", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad3", "0")));
config.setInt("input_autodetect_icade_profile_pad4", prefs.getInt("input_autodetect_icade_profile_pad4", 0)); config.setInt("input_autodetect_icade_profile_pad4", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad4", "0")));
config.setDouble("video_refresh_rate", getRefreshRate()); config.setDouble("video_refresh_rate", getRefreshRate());
config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", false)); config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", false));

View File

@ -23,17 +23,25 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
srand(time(NULL));
int16_t input_i[1024]; int16_t input_i[1024];
int16_t output_i[1024 * 8]; int16_t output_i[1024 * 8];
float input_f[1024]; float input_f[1024];
float output_f[1024 * 8]; float output_f[1024 * 8];
if (argc != 3) double ratio_max_deviation = 0.0;
if (argc < 3 || argc > 4)
{ {
fprintf(stderr, "Usage: %s <in-rate> <out-rate> (max ratio: 8.0)\n", argv[0]); fprintf(stderr, "Usage: %s <in-rate> <out-rate> [ratio deviation] (max ratio: 8.0)\n", argv[0]);
return 1; return 1;
} }
else if (argc == 4)
{
ratio_max_deviation = fabs(strtod(argv[3], NULL));
fprintf(stderr, "Ratio deviation: %.4f.\n", ratio_max_deviation);
}
double in_rate = strtod(argv[1], NULL); double in_rate = strtod(argv[1], NULL);
double out_rate = strtod(argv[2], NULL); double out_rate = strtod(argv[2], NULL);
@ -58,13 +66,16 @@ int main(int argc, char *argv[])
if (fread(input_i, sizeof(int16_t), 1024, stdin) != 1024) if (fread(input_i, sizeof(int16_t), 1024, stdin) != 1024)
break; break;
double uniform = (2.0 * rand()) / RAND_MAX - 1.0;
double rate_mod = 1.0 + ratio_max_deviation * uniform;
audio_convert_s16_to_float(input_f, input_i, 1024, 1.0f); audio_convert_s16_to_float(input_f, input_i, 1024, 1.0f);
struct resampler_data data = { struct resampler_data data = {
.data_in = input_f, .data_in = input_f,
.data_out = output_f, .data_out = output_f,
.input_frames = sizeof(input_f) / (2 * sizeof(float)), .input_frames = sizeof(input_f) / (2 * sizeof(float)),
.ratio = ratio, .ratio = ratio * rate_mod,
}; };
rarch_resampler_process(resampler, re, &data); rarch_resampler_process(resampler, re, &data);

View File

@ -0,0 +1,3 @@
#!/bin/sh
ffmpeg -i "$1" -f s16le - | ./test-sinc-highest 44100 48000 $3 | ffmpeg -y -ar 48000 -f s16le -ac 2 -i - "$2"

View File

@ -47,7 +47,7 @@ void audio_convert_float_to_s16_C(int16_t *out,
void audio_convert_s16_to_float_SSE2(float *out, void audio_convert_s16_to_float_SSE2(float *out,
const int16_t *in, size_t samples, float gain) const int16_t *in, size_t samples, float gain)
{ {
float fgain = gain / (0x7fff * 0x10000); float fgain = gain / UINT32_C(0x80000000);
__m128 factor = _mm_set1_ps(fgain); __m128 factor = _mm_set1_ps(fgain);
size_t i; size_t i;
for (i = 0; i + 8 <= samples; i += 8, in += 8, out += 8) for (i = 0; i + 8 <= samples; i += 8, in += 8, out += 8)
@ -73,7 +73,7 @@ void audio_convert_s16_to_float_SSE2(float *out,
void audio_convert_float_to_s16_SSE2(int16_t *out, void audio_convert_float_to_s16_SSE2(int16_t *out,
const float *in, size_t samples) const float *in, size_t samples)
{ {
__m128 factor = _mm_set1_ps((float)0x7fff); __m128 factor = _mm_set1_ps((float)0x8000);
size_t i; size_t i;
for (i = 0; i + 8 <= samples; i += 8, in += 8, out += 8) for (i = 0; i + 8 <= samples; i += 8, in += 8, out += 8)
{ {

View File

@ -110,12 +110,13 @@ static char *extract_value(char *line, bool is_value)
line++; line++;
char *save; char *save;
char *tok;
// We have a full string. Read until next ". // We have a full string. Read until next ".
if (*line == '"') if (*line == '"')
{ {
line++; line++;
char *tok = strtok_r(line, "\"", &save); tok = strtok_r(line, "\"", &save);
if (!tok) if (!tok)
return NULL; return NULL;
return strdup(tok); return strdup(tok);
@ -124,7 +125,7 @@ static char *extract_value(char *line, bool is_value)
return NULL; return NULL;
else // We don't have that... Read till next space. else // We don't have that... Read till next space.
{ {
char *tok = strtok_r(line, " \n\t\f\r\v", &save); tok = strtok_r(line, " \n\t\f\r\v", &save);
if (tok) if (tok)
return strdup(tok); return strdup(tok);
else else

View File

@ -166,7 +166,7 @@ enum
#if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__) #if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__)
#define DEFAULT_ASPECT_RATIO 1.7778f #define DEFAULT_ASPECT_RATIO 1.7778f
#elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) #elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) || defined(__BLACKBERRY_QNX__)
#define DEFAULT_ASPECT_RATIO 1.3333f #define DEFAULT_ASPECT_RATIO 1.3333f
#else #else
#define DEFAULT_ASPECT_RATIO -1.0f #define DEFAULT_ASPECT_RATIO -1.0f

View File

@ -106,6 +106,8 @@ VIDEO CONTEXT
#include "../../gfx/context/xdk_ctx.c" #include "../../gfx/context/xdk_ctx.c"
#elif defined(ANDROID) #elif defined(ANDROID)
#include "../../gfx/context/androidegl_ctx.c" #include "../../gfx/context/androidegl_ctx.c"
#elif defined(__BLACKBERRY_QNX__)
#include "../../gfx/context/bbqnx_ctx.c"
#endif #endif
#endif #endif
@ -134,7 +136,7 @@ VIDEO IMAGE
#include "../../ps3/image.c" #include "../../ps3/image.c"
#elif defined(_XBOX1) #elif defined(_XBOX1)
#include "../../xdk/image.c" #include "../../xdk/image.c"
#elif defined(ANDROID) #elif defined(ANDROID) || defined(__BLACKBERRY_QNX__)
#include "../../gfx/image.c" #include "../../gfx/image.c"
#include "../../gfx/rpng/rpng.c" #include "../../gfx/rpng/rpng.c"
#endif #endif
@ -194,11 +196,11 @@ FONTS
#if defined(HAVE_OPENGL) || defined(HAVE_D3D8) || defined(HAVE_D3D9) #if defined(HAVE_OPENGL) || defined(HAVE_D3D8) || defined(HAVE_D3D9)
#ifdef HAVE_FREETYPE #if defined(HAVE_FREETYPE)
#include "../../gfx/fonts/freetype.c" #include "../../gfx/fonts/freetype.c"
#endif #endif
#ifndef DONT_HAVE_BITMAPFONTS #if !defined(DONT_HAVE_BITMAPFONTS)
#include "../../gfx/fonts/fonts.c" #include "../../gfx/fonts/fonts.c"
#include "../../gfx/fonts/bitmapfont.c" #include "../../gfx/fonts/bitmapfont.c"
#endif #endif
@ -315,6 +317,10 @@ AUDIO
#include "../../audio/opensl.c" #include "../../audio/opensl.c"
#endif #endif
#ifdef HAVE_AL
#include "../../audio/openal.c"
#endif
#if defined(HAVE_NULLAUDIO) #if defined(HAVE_NULLAUDIO)
#include "../../audio/null.c" #include "../../audio/null.c"
#endif #endif
@ -377,10 +383,16 @@ MAIN
#include "../../frontend/frontend_xenon.c" #include "../../frontend/frontend_xenon.c"
#elif defined(RARCH_CONSOLE) || defined(PSP) #elif defined(RARCH_CONSOLE) || defined(PSP)
#include "../../frontend/frontend_console.c" #include "../../frontend/frontend_console.c"
#elif defined(__BLACKBERRY_QNX__)
#include "../../frontend/frontend_bbqnx.c"
#elif defined(ANDROID) #elif defined(ANDROID)
#include "../../frontend/frontend_android.c" #include "../../frontend/frontend_android.c"
#endif #endif
#ifndef ANDROID
#include "../../frontend/frontend.c"
#endif
/*============================================================ /*============================================================
RETROARCH RETROARCH
============================================================ */ ============================================================ */

View File

@ -17,34 +17,6 @@
#ifndef CONSOLE_EXT_H__ #ifndef CONSOLE_EXT_H__
#define CONSOLE_EXT_H__ #define CONSOLE_EXT_H__
#define EXT_IMAGES "png|PNG|jpg|JPG|JPEG|jpeg"
#define EXT_SHADERS "cg|CG"
#define EXT_CGP_PRESETS "cgp|CGP"
#define EXT_INPUT_PRESETS "cfg|CFG"
enum {
MENU_ITEM_LOAD_STATE = 0,
MENU_ITEM_SAVE_STATE,
MENU_ITEM_KEEP_ASPECT_RATIO,
MENU_ITEM_OVERSCAN_AMOUNT,
MENU_ITEM_ORIENTATION,
#ifdef HAVE_FBO
MENU_ITEM_SCALE_FACTOR,
#endif
MENU_ITEM_RESIZE_MODE,
MENU_ITEM_FRAME_ADVANCE,
MENU_ITEM_SCREENSHOT_MODE,
MENU_ITEM_RESET,
MENU_ITEM_RETURN_TO_GAME,
MENU_ITEM_RETURN_TO_MENU,
MENU_ITEM_CHANGE_LIBRETRO,
#ifdef HAVE_MULTIMAN
MENU_ITEM_RETURN_TO_MULTIMAN,
#endif
MENU_ITEM_QUIT_RARCH,
MENU_ITEM_LAST
};
enum enum
{ {
SOUND_MODE_NORMAL, SOUND_MODE_NORMAL,

View File

@ -10,27 +10,17 @@ extern "C" {
#endif #endif
#ifndef MSVC #ifndef MSVC
// MAX that works with side effects. Just in case.
#define MAX(A,B) ({ \
__typeof__(A) At=(A); \
__typeof__(B) Bt=(B); \
At>Bt?At:Bt; })
#define MIN(A,B) ({ \
__typeof__(A) At=(A); \
__typeof__(B) Bt=(B); \
At<Bt?At:Bt; })
#define RGL_LIKELY(COND) __builtin_expect((COND),1) #define RGL_LIKELY(COND) __builtin_expect((COND),1)
#define RGL_UNLIKELY(COND) __builtin_expect((COND),0) #define RGL_UNLIKELY(COND) __builtin_expect((COND),0)
#else #else
#define MAX(A,B) ((A)>(B)?(A):(B))
#define MIN(A,B) ((A)<(B)?(A):(B))
#define RGL_LIKELY(COND) (COND) #define RGL_LIKELY(COND) (COND)
#define RGL_UNLIKELY(COND) (COND) #define RGL_UNLIKELY(COND) (COND)
#endif #endif
#define MAX(A,B) ((A)>(B)?(A):(B))
#define MIN(A,B) ((A)<(B)?(A):(B))
#define _RGL_FLOAT_AS_UINT(x) ({union {float f; unsigned int i;} u; u.f=(x); u.i;}) #define _RGL_FLOAT_AS_UINT(x) ({union {float f; unsigned int i;} u; u.f=(x); u.i;})
static inline float rglClampf( const float value ) static inline float rglClampf( const float value )

View File

@ -7049,9 +7049,7 @@ static unsigned int stringTableAddUnique( std::vector<char> &stringTable, const
return ret; return ret;
} }
template<class Type> static size_t array_size(std::vector<Type> &array);
template<class Type> static void array_push(char* &parameterOffset, std::vector<Type> &array); template<class Type> static void array_push(char* &parameterOffset, std::vector<Type> &array);
inline static uint32_t swap16(const uint32_t v);
static unsigned short getFlags(CGenum var, CGenum dir, int no, bool is_referenced, bool is_shared, int paramIndex); static unsigned short getFlags(CGenum var, CGenum dir, int no, bool is_referenced, bool is_shared, int paramIndex);
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
@ -7091,6 +7089,11 @@ int convertNvToElfFromFile(const char *sourceFile, int endianness, int constTabl
return -1; return -1;
} }
static inline uint32_t swap16(const uint32_t v)
{
return (v>>16) | (v<<16);
}
int convertNvToElfFromMemory(const void *sourceData, size_t size, int endianness, int constTableOffset, void **binaryShader, int *binarySize, int convertNvToElfFromMemory(const void *sourceData, size_t size, int endianness, int constTableOffset, void **binaryShader, int *binarySize,
std::vector<char> &stringTable, std::vector<float> &defaultValues) std::vector<char> &stringTable, std::vector<float> &defaultValues)
{ {
@ -7201,7 +7204,8 @@ int convertNvToElfFromMemory(const void *sourceData, size_t size, int endianness
{ {
int size = (int)nvbr->ucode_size()/sizeof(uint32_t); int size = (int)nvbr->ucode_size()/sizeof(uint32_t);
buffer = new uint32_t[size]; buffer = new uint32_t[size];
for (int i=0;i<size;i++)
for (int i = 0; i < size; i++)
{ {
uint32_t val = ENDSWAP(tmp[i]); uint32_t val = ENDSWAP(tmp[i]);
if (!bIsVertexProgram) if (!bIsVertexProgram)
@ -7217,10 +7221,9 @@ int convertNvToElfFromMemory(const void *sourceData, size_t size, int endianness
// that manifests as a memory overwrite in properly allocated memory during a std::vector resize // that manifests as a memory overwrite in properly allocated memory during a std::vector resize
int size = (int)nvbr->ucode_size()/sizeof(uint32_t); int size = (int)nvbr->ucode_size()/sizeof(uint32_t);
buffer = new uint32_t[size]; buffer = new uint32_t[size];
for (int i=0;i<size;i++)
{ for (int i = 0; i < size; i++)
buffer[i] = tmp[i]; buffer[i] = tmp[i];
}
ucode = (const char*)buffer; ucode = (const char*)buffer;
// end workaround // end workaround
} }
@ -7785,12 +7788,12 @@ int convertNvToElfFromMemory(const void *sourceData, size_t size, int endianness
//fill the parameter section //fill the parameter section
size_t parameterTableSize = sizeof(CgParameterTableHeader); size_t parameterTableSize = sizeof(CgParameterTableHeader);
parameterTableSize += array_size(parameterEntries); parameterTableSize += (unsigned int)parameterEntries.size() * sizeof(parameterEntries[0]);
parameterTableSize += array_size(parameterResources); parameterTableSize += (unsigned int)parameterResources.size() * sizeof(parameterResources[0]);
parameterTableSize += array_size(containers._resources); parameterTableSize += (unsigned int)containers._resources.size() * sizeof(containers._resources[0]);
//parameterTableSize += array_size(containers._defaultValuesIndices); //parameterTableSize += (unsigned int)containers._defaultValuesIndices.size() * sizeof(containers._defaultValuesIndices[0]);
parameterTableSize += array_size(containers._elfDefaultsIndices); parameterTableSize += (unsigned int)containers._elfDefaultsIndices.size() * sizeof(containers._elfDefaultsIndices[0]);
parameterTableSize += array_size(containers._semanticIndices); parameterTableSize += (unsigned int)containers._semanticIndices.size() * sizeof(containers._semanticIndices[0]);
//Allocate the binary file //Allocate the binary file
int ucodeOffset = (((sizeof(CgProgramHeader)-1)/16)+1)*16; int ucodeOffset = (((sizeof(CgProgramHeader)-1)/16)+1)*16;
@ -8185,10 +8188,8 @@ static int getSizeofSubArray(_CGNVCONTAINERS &containers, int dimensionIndex, in
unsigned char elfEndianness = endianness; //used in the macro CNVEND unsigned char elfEndianness = endianness; //used in the macro CNVEND
int res = 1; int res = 1;
int i; int i;
for (i=0;i<dimensionCount;i++) for ( i=0; i < dimensionCount; i++)
{
res *= (int)CNV2END(containers._dimensions[dimensionIndex + i]); res *= (int)CNV2END(containers._dimensions[dimensionIndex + i]);
}
return res; return res;
} }
@ -8209,11 +8210,6 @@ _constTable.push_back(*(_float4*)value);
return constTableSize; return constTableSize;
}*/ }*/
template<class Type> static size_t array_size(std::vector<Type> &array)
{
return (unsigned int)array.size()*sizeof(array[0]);
}
template<class Type> static void array_push(char* &parameterOffset, std::vector<Type> &array) template<class Type> static void array_push(char* &parameterOffset, std::vector<Type> &array)
{ {
size_t dataSize = array.size()*sizeof(array[0]); size_t dataSize = array.size()*sizeof(array[0]);
@ -8221,10 +8217,6 @@ template<class Type> static void array_push(char* &parameterOffset, std::vector<
parameterOffset += dataSize; parameterOffset += dataSize;
} }
uint32_t inline static swap16(const uint32_t v)
{
return (v>>16) | (v<<16);
}
unsigned short getFlags(CGenum var, CGenum dir, int no, bool is_referenced, bool is_shared, int paramIndex) unsigned short getFlags(CGenum var, CGenum dir, int no, bool is_referenced, bool is_shared, int paramIndex)
{ {

View File

@ -5,12 +5,15 @@ make -C ../ -f Makefile.ngc clean || exit 1
for f in *_ngc.a ; do for f in *_ngc.a ; do
name=`echo "$f" | sed 's/\(_libretro\|\)_ngc.a$//'` name=`echo "$f" | sed 's/\(_libretro\|\)_ngc.a$//'`
whole_archive= whole_archive=
big_stack=
if [ $name = "nxengine" ] ; then if [ $name = "nxengine" ] ; then
whole_archive="WHOLE_ARCHIVE_LINK=1" whole_archive="WHOLE_ARCHIVE_LINK=1"
echo $name yes fi
if [ $name = "tyrquake" ] ; then
big_stack="BIG_STACK=1"
fi fi
cp -f "$f" ../libretro_ngc.a cp -f "$f" ../libretro_ngc.a
make -C ../ -f Makefile.ngc $whole_archive -j3 || exit 1 make -C ../ -f Makefile.ngc $whole_archive $big_stack -j3 || exit 1
mv -f ../retroarch_ngc.dol ../ngc/pkg/$name.dol mv -f ../retroarch_ngc.dol ../ngc/pkg/$name.dol
rm -f ../retroarch_ngc.dol ../retroarch_ngc.elf ../retroarch_ngc.elf.map rm -f ../retroarch_ngc.dol ../retroarch_ngc.elf ../retroarch_ngc.elf.map
done done

View File

@ -9,12 +9,15 @@ make -C ../ -f Makefile.wii.salamander pkg || exit 1
for f in *_wii.a ; do for f in *_wii.a ; do
name=`echo "$f" | sed 's/\(_libretro\|\)_wii.a$//'` name=`echo "$f" | sed 's/\(_libretro\|\)_wii.a$//'`
whole_archive= whole_archive=
big_stack=
if [ $name = "nxengine" ] ; then if [ $name = "nxengine" ] ; then
whole_archive="WHOLE_ARCHIVE_LINK=1" whole_archive="WHOLE_ARCHIVE_LINK=1"
echo $name yes fi
if [ $name = "tyrquake" ] ; then
big_stack="BIG_STACK=1"
fi fi
cp -f "$f" ../libretro_wii.a cp -f "$f" ../libretro_wii.a
make -C ../ -f Makefile.wii $whole_archive -j3 || exit 1 make -C ../ -f Makefile.wii $whole_archive $big_stack -j3 || exit 1
mv -f ../retroarch_wii.dol ../wii/pkg/$name.dol mv -f ../retroarch_wii.dol ../wii/pkg/$name.dol
rm -f ../retroarch_wii.dol ../retroarch_wii.elf ../retroarch_wii.elf.map rm -f ../retroarch_wii.dol ../retroarch_wii.elf ../retroarch_wii.elf.map
done done

View File

@ -73,7 +73,7 @@ When loading a rom from stdin, the path must be a full path, however.
If a config cannot be found when using directory path, the default config path will be used instead. If a config cannot be found when using directory path, the default config path will be used instead.
.IP .IP
Unix-like systems will look in $XDG_CONFIG_HOME/retroarch/retroarch.cfg first. Then it will try $HOME/.retroarch.cfg. Last, it will try /etc/retroarch.cfg. If no configuration is found, default settings will be assumed. A configuration file does not need to define every possible option, only those that should be overridden. Unix-like systems will look in $XDG_CONFIG_HOME/retroarch/retroarch.cfg first. If $XDG_CONFIG_HOME is not defined, it is assumed to be $HOME/.config as per specification. Then it will try $HOME/.retroarch.cfg. Last, it will try /etc/retroarch.cfg. If no configuration is found, default settings will be assumed. A configuration file does not need to define every possible option, only those that should be overridden.
.IP .IP
Windows will look in retroarch.cfg in same folder where retroarch.exe resides. Windows will look in retroarch.cfg in same folder where retroarch.exe resides.

View File

@ -18,17 +18,17 @@
#ifndef _RARCH_DRIVER_FUNCS_H #ifndef _RARCH_DRIVER_FUNCS_H
#define _RARCH_DRIVER_FUNCS_H #define _RARCH_DRIVER_FUNCS_H
#if !defined(HAVE_GRIFFIN) || defined(ANDROID) /* Normal */ #define audio_init_func(device, rate, latency) driver.audio->init(device, rate, latency)
#define audio_write_func(buf, size) driver.audio->write(driver.audio_data, buf, size)
#define audio_stop_func() driver.audio->stop(driver.audio_data)
#define audio_start_func() driver.audio->start(driver.audio_data)
#define audio_set_nonblock_state_func(state) driver.audio->set_nonblock_state(driver.audio_data, state)
#define audio_free_func() driver.audio->free(driver.audio_data)
#define audio_use_float_func() driver.audio->use_float(driver.audio_data)
#define audio_write_avail_func() driver.audio->write_avail(driver.audio_data)
#define audio_buffer_size_func() driver.audio->buffer_size(driver.audio_data)
#define audio_init_func(device, rate, latency) driver.audio->init(device, rate, latency) #if !defined(RARCH_CONSOLE) /* Normal */
#define audio_write_func(buf, size) driver.audio->write(driver.audio_data, buf, size)
#define audio_stop_func() driver.audio->stop(driver.audio_data)
#define audio_start_func() driver.audio->start(driver.audio_data)
#define audio_set_nonblock_state_func(state) driver.audio->set_nonblock_state(driver.audio_data, state)
#define audio_free_func() driver.audio->free(driver.audio_data)
#define audio_use_float_func() driver.audio->use_float(driver.audio_data)
#define audio_write_avail_func() driver.audio->write_avail(driver.audio_data)
#define audio_buffer_size_func() driver.audio->buffer_size(driver.audio_data)
#define video_init_func(video_info, input, input_data) \ #define video_init_func(video_info, input, input_data) \
driver.video->init(video_info, input, input_data) driver.video->init(video_info, input, input_data)
@ -69,34 +69,8 @@ static inline bool input_key_pressed_func(int key)
return ret; return ret;
} }
#else /* for Griffin */
#if !defined(HAVE_RSOUND) && defined(HAVE_SL)
#define audio_init_func(device, rate, latency) sl_init(device, rate, latency)
#define audio_write_func(buf, size) sl_write(driver.audio_data, buf, size)
#define audio_stop_func() sl_stop(driver.audio_data)
#define audio_start_func() sl_start(driver.audio_data)
#define audio_set_nonblock_state_func(state) sl_set_nonblock_state(driver.audio_data, state)
#define audio_free_func() sl_free(driver.audio_data)
#define audio_use_float_func() driver.audio->use_float(driver.audio_data)
#define audio_write_avail_func() sl_write_avail(driver.audio_data)
#define audio_buffer_size_func() (BUFFER_SIZE * ((sl_t*)driver.audio_data)->buf_count)
#else #else
#define audio_init_func(device, rate, latency) driver.audio->init(device, rate, latency)
#define audio_write_func(buf, size) driver.audio->write(driver.audio_data, buf, size)
#define audio_stop_func() driver.audio->stop(driver.audio_data)
#define audio_start_func() driver.audio->start(driver.audio_data)
#define audio_set_nonblock_state_func(state) driver.audio->set_nonblock_state(driver.audio_data, state)
#define audio_free_func() driver.audio->free(driver.audio_data)
#define audio_use_float_func() driver.audio->use_float(driver.audio_data)
#define audio_write_avail_func() driver.audio->write_avail(driver.audio_data)
#define audio_buffer_size_func() driver.audio->buffer_size(driver.audio_data)
#endif
/*============================================================ /*============================================================
VIDEO VIDEO
============================================================ */ ============================================================ */

View File

@ -22,7 +22,7 @@
#include "compat/strl.h" #include "compat/strl.h"
#include "compat/posix_string.h" #include "compat/posix_string.h"
#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) #if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) || defined(__BLACKBERRY_QNX__)
#include <unistd.h> //stat() is defined here #include <unistd.h> //stat() is defined here
#define S_ISDIR(x) (x & CELL_FS_S_IFDIR) #define S_ISDIR(x) (x & CELL_FS_S_IFDIR)
#endif #endif

46
frontend/frontend.c Normal file
View File

@ -0,0 +1,46 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2013 - Hans-Kristian Arntzen
* Copyright (C) 2011-2013 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "../general.h"
#ifdef __APPLE__
#include "SDL.h"
// OSX seems to really need -lSDLmain,
// so we include SDL.h here so it can hack our main.
// We want to use -mconsole in Win32, so we need main().
#endif
int main(int argc, char *argv[])
{
#ifdef HAVE_RARCH_MAIN_IMPLEMENTATION
// Consoles use the higher level API.
return rarch_main(argc, argv);
#else
int init_ret;
if ((init_ret = rarch_main_init(argc, argv))) return init_ret;
rarch_init_msg_queue();
while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate());
rarch_main_deinit();
rarch_deinit_msg_queue();
#ifdef PERF_TEST
rarch_perf_log();
#endif
rarch_main_clear_state();
return 0;
#endif
}

View File

@ -57,149 +57,14 @@ static void print_cur_config (void *data)
AConfiguration_getUiModeNight(android_app->config)); AConfiguration_getUiModeNight(android_app->config));
} }
/**
* Process the next main command.
*/
void engine_handle_cmd (void *data, int32_t cmd)
{
struct android_app *android_app = (struct android_app*)data;
switch (cmd)
{
case APP_CMD_INPUT_CHANGED:
RARCH_LOG("APP_CMD_INPUT_CHANGED\n");
pthread_mutex_lock(&android_app->mutex);
if (android_app->inputQueue != NULL)
AInputQueue_detachLooper(android_app->inputQueue);
android_app->inputQueue = android_app->pendingInputQueue;
if (android_app->inputQueue != NULL)
{
RARCH_LOG("Attaching input queue to looper");
AInputQueue_attachLooper(android_app->inputQueue,
android_app->looper, LOOPER_ID_INPUT, NULL,
NULL);
}
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_INIT_WINDOW:
RARCH_LOG("engine_handle_cmd: APP_CMD_INIT_WINDOW.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->window = android_app->pendingWindow;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_RESUME:
RARCH_LOG("engine_handle_cmd: APP_CMD_RESUME.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_START:
RARCH_LOG("engine_handle_cmd: APP_CMD_START.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_PAUSE:
RARCH_LOG("engine_handle_cmd: APP_CMD_PAUSE.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
if (!(g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY)))
{
RARCH_LOG("Pausing RetroArch.\n");
g_extern.lifecycle_state |= (1ULL << RARCH_PAUSE_TOGGLE);
}
break;
case APP_CMD_STOP:
RARCH_LOG("engine_handle_cmd: APP_CMD_STOP.\n");
pthread_mutex_lock(&android_app->mutex);
android_app->activityState = cmd;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_CONFIG_CHANGED:
RARCH_LOG("engine_handle_cmd: APP_CMD_CONFIG_CHANGED.\n");
break;
case APP_CMD_TERM_WINDOW:
RARCH_LOG("engine_handle_cmd: APP_CMD_TERM_WINDOW.\n");
pthread_mutex_lock(&android_app->mutex);
/* The window is being hidden or closed, clean it up. */
/* terminate display/EGL context here */
if (g_extern.lifecycle_state & (1ULL << RARCH_PAUSE_TOGGLE))
uninit_drivers();
else
RARCH_WARN("Window is terminated outside PAUSED state.\n");
android_app->window = NULL;
pthread_cond_broadcast(&android_app->cond);
pthread_mutex_unlock(&android_app->mutex);
break;
case APP_CMD_GAINED_FOCUS:
RARCH_LOG("engine_handle_cmd: APP_CMD_GAINED_FOCUS.\n");
g_extern.lifecycle_state &= ~(1ULL << RARCH_PAUSE_TOGGLE);
break;
case APP_CMD_LOST_FOCUS:
RARCH_LOG("engine_handle_cmd: APP_CMD_LOST_FOCUS.\n");
break;
case APP_CMD_DESTROY:
RARCH_LOG("engine_handle_cmd: APP_CMD_DESTROY\n");
g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
break;
}
}
#define MAX_ARGS 32 #define MAX_ARGS 32
static bool android_run_events (void *data) static bool android_run_events (void *data)
{ {
struct android_app *android_app = (struct android_app*)data;
int id = ALooper_pollOnce(-1, NULL, NULL, NULL); int id = ALooper_pollOnce(-1, NULL, NULL, NULL);
if (id == LOOPER_ID_MAIN) if (id == LOOPER_ID_MAIN)
{ engine_handle_cmd();
int8_t cmd;
if (read(android_app->msgread, &cmd, sizeof(cmd)) != sizeof(cmd))
cmd = -1;
engine_handle_cmd(android_app, cmd);
if (cmd == APP_CMD_INIT_WINDOW)
{
if (g_extern.lifecycle_state & (1ULL << RARCH_PAUSE_TOGGLE))
init_drivers();
}
}
// Check if we are exiting. // Check if we are exiting.
if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY)) if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY))
@ -351,9 +216,11 @@ static void *android_app_entry(void *data)
{ {
RARCH_LOG("RetroArch started.\n"); RARCH_LOG("RetroArch started.\n");
while ((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? // Main loop
android_run_events(android_app) : do
rarch_main_iterate()); {
android_handle_events();
} while (rarch_main_iterate());
RARCH_LOG("RetroArch stopped.\n"); RARCH_LOG("RetroArch stopped.\n");
} }

View File

@ -154,8 +154,9 @@ enum {
}; };
int8_t android_app_read_cmd (void *data); int8_t android_app_read_cmd (void *data);
extern void engine_app_read_cmd (void *data); extern void engine_app_read_cmd(void);
extern void engine_handle_cmd (void *data, int32_t cmd); extern void engine_handle_cmd(void);
extern void android_handle_events(void);
extern struct android_app *g_android; extern struct android_app *g_android;

92
frontend/frontend_bbqnx.c Normal file
View File

@ -0,0 +1,92 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2013 - Hans-Kristian Arntzen
* Copyright (C) 2011-2013 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <screen/screen.h>
#include <bps/navigator.h>
#include <bps/screen.h>
#include <bps/bps.h>
#include <bps/event.h>
#include "../playbook/src/bbutil.h"
screen_context_t screen_ctx;
int rarch_main(int argc, char *argv[])
{
//Initialize bps
bps_initialize();
RARCH_LOG("Initializing screen context\n");
// Create a screen context that will be used to create an EGL surface to receive libscreen events
screen_create_context(&screen_ctx, 0);
if (screen_request_events(screen_ctx) != BPS_SUCCESS)
{
RARCH_ERR("screen_request_events failed.\n");
goto error;
}
if (navigator_request_events(0) != BPS_SUCCESS)
{
RARCH_ERR("navigator_request_events failed.\n");
goto error;
}
if (navigator_rotation_lock(false) != BPS_SUCCESS)
{
RARCH_ERR("navigator_location_lock failed.\n");
goto error;
}
rarch_main_clear_state();
g_extern.verbose = true;
int init_ret;
struct rarch_main_wrap args = {0};
args.verbose = g_extern.verbose;
args.sram_path = NULL;
args.state_path = NULL;
args.rom_path = "/accounts/1000/shared/documents/roms/test.rom";
args.libretro_path = "/accounts/1000/appdata/com.RetroArch.testDev_m_RetroArch181dafc7/app/native/lib/test.so";
args.config_path = "/accounts/1000/appdata/com.RetroArch.testDev_m_RetroArch181dafc7/app/native/retroarch.cfg";
if ((init_ret = rarch_main_init_wrap(&args)))
{
return init_ret;
}
rarch_init_msg_queue();
while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate());
rarch_main_deinit();
rarch_deinit_msg_queue();
#ifdef PERF_TEST
rarch_perf_log();
#endif
error:
screen_stop_events(screen_ctx);
bps_shutdown();
return 0;
}

View File

@ -219,7 +219,7 @@ static void uninit_console_drivers(void)
} }
} }
int main(int argc, char *argv[]) int rarch_main(int argc, char *argv[])
{ {
system_init(); system_init();

View File

@ -41,6 +41,33 @@
#include "../../driver.h" #include "../../driver.h"
#include "../../general.h" #include "../../general.h"
#define EXT_IMAGES "png|PNG|jpg|JPG|JPEG|jpeg"
#define EXT_SHADERS "cg|CG"
#define EXT_CGP_PRESETS "cgp|CGP"
#define EXT_INPUT_PRESETS "cfg|CFG"
enum {
MENU_ITEM_LOAD_STATE = 0,
MENU_ITEM_SAVE_STATE,
MENU_ITEM_KEEP_ASPECT_RATIO,
MENU_ITEM_OVERSCAN_AMOUNT,
MENU_ITEM_ORIENTATION,
#ifdef HAVE_FBO
MENU_ITEM_SCALE_FACTOR,
#endif
MENU_ITEM_RESIZE_MODE,
MENU_ITEM_FRAME_ADVANCE,
MENU_ITEM_SCREENSHOT_MODE,
MENU_ITEM_RESET,
MENU_ITEM_RETURN_TO_GAME,
MENU_ITEM_RETURN_TO_MENU,
MENU_ITEM_CHANGE_LIBRETRO,
#ifdef HAVE_MULTIMAN
MENU_ITEM_RETURN_TO_MULTIMAN,
#endif
MENU_ITEM_QUIT_RARCH,
MENU_ITEM_LAST
};
static rmenu_state_t rmenu_state; static rmenu_state_t rmenu_state;

View File

@ -67,7 +67,7 @@
#endif #endif
// Wii and PSL1GHT - for usleep (among others) // Wii and PSL1GHT - for usleep (among others)
#if defined(GEKKO) || defined(__PSL1GHT__) #if defined(GEKKO) || defined(__PSL1GHT__) || defined(__BLACKBERRY_QNX__)
#include <unistd.h> #include <unistd.h>
#endif #endif
@ -134,6 +134,9 @@ enum menu_enums
MODE_EXTLAUNCH_MULTIMAN, MODE_EXTLAUNCH_MULTIMAN,
MODE_EXIT, MODE_EXIT,
MODE_EXITSPAWN, MODE_EXITSPAWN,
#ifdef ANDROID
MODE_INPUT_XPERIA_PLAY_HACK,
#endif
MODE_VIDEO_TRIPLE_BUFFERING_ENABLE, MODE_VIDEO_TRIPLE_BUFFERING_ENABLE,
MODE_VIDEO_FLICKER_FILTER_ENABLE, MODE_VIDEO_FLICKER_FILTER_ENABLE,
MODE_VIDEO_SOFT_FILTER_ENABLE, MODE_VIDEO_SOFT_FILTER_ENABLE,
@ -155,6 +158,7 @@ struct settings
struct struct
{ {
char driver[32]; char driver[32];
char gl_context[32];
float xscale; float xscale;
float yscale; float yscale;
bool fullscreen; bool fullscreen;
@ -644,6 +648,7 @@ void rarch_init_system_info(void);
int rarch_main(int argc, char *argv[]); int rarch_main(int argc, char *argv[]);
int rarch_main_init_wrap(const struct rarch_main_wrap *args); int rarch_main_init_wrap(const struct rarch_main_wrap *args);
int rarch_main_init(int argc, char *argv[]); int rarch_main_init(int argc, char *argv[]);
bool rarch_main_idle_iterate(void);
bool rarch_main_iterate(void); bool rarch_main_iterate(void);
void rarch_main_deinit(void); void rarch_main_deinit(void);
void rarch_render_cached_frame(void); void rarch_render_cached_frame(void);
@ -759,7 +764,7 @@ static inline void rarch_sleep(unsigned msec)
Sleep(msec); Sleep(msec);
#elif defined(XENON) #elif defined(XENON)
udelay(1000 * msec); udelay(1000 * msec);
#elif defined(GEKKO) || defined(__PSL1GHT__) #elif defined(GEKKO) || defined(__PSL1GHT__) || defined(__BLACKBERRY_QNX__)
usleep(1000 * msec); usleep(1000 * msec);
#else #else
struct timespec tv = {0}; struct timespec tv = {0};

View File

@ -172,8 +172,6 @@ static void gfx_ctx_check_window(bool *quit,
{ {
(void)frame_count; (void)frame_count;
struct android_app *android_app = (struct android_app*)g_android;
*quit = false; *quit = false;
unsigned new_width, new_height; unsigned new_width, new_height;
@ -185,21 +183,6 @@ static void gfx_ctx_check_window(bool *quit,
*resize = true; *resize = true;
} }
RARCH_PERFORMANCE_INIT(alooper_pollonce);
RARCH_PERFORMANCE_START(alooper_pollonce);
while (ALooper_pollOnce(0, NULL, NULL, NULL) == LOOPER_ID_MAIN)
{
int8_t cmd;
if (read(android_app->msgread, &cmd, sizeof(cmd)) != sizeof(cmd))
cmd = -1;
engine_handle_cmd(android_app, cmd);
}
RARCH_PERFORMANCE_STOP(alooper_pollonce);
// Check if we are exiting. // Check if we are exiting.
if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY)) if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY))
*quit = true; *quit = true;

404
gfx/context/bbqnx_ctx.c Normal file
View File

@ -0,0 +1,404 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2013 - Hans-Kristian Arntzen
* Copyright (C) 2011-2013 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "../../driver.h"
#include "../../general.h"
#include "../gfx_common.h"
#include "../gl_common.h"
#include <EGL/egl.h>
#include <bps/screen.h>
#include <bps/navigator.h>
#include <screen/screen.h>
#include <sys/platform.h>
#include <GLES2/gl2.h>
#include "../image.h"
#include "../fonts/gl_font.h"
#include <stdint.h>
#ifdef HAVE_GLSL
#include "../shader_glsl.h"
#endif
#define WINDOW_BUFFERS 2
static EGLContext g_egl_ctx;
static EGLSurface g_egl_surf;
static EGLDisplay g_egl_dpy;
static EGLConfig egl_config;
static bool g_resize;
extern screen_context_t screen_ctx;
static screen_window_t screen_win;
static screen_display_t screen_disp;
GLfloat _angle;
static enum gfx_ctx_api g_api;
static void gfx_ctx_set_swap_interval(unsigned interval)
{
RARCH_LOG("gfx_ctx_set_swap_interval(%d).\n", interval);
eglSwapInterval(g_egl_dpy, interval);
}
static void gfx_ctx_destroy(void)
{
RARCH_LOG("gfx_ctx_destroy().\n");
eglMakeCurrent(g_egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
eglDestroyContext(g_egl_dpy, g_egl_ctx);
eglDestroySurface(g_egl_dpy, g_egl_surf);
screen_destroy_window(screen_win);
screen_destroy_context(screen_ctx);
eglTerminate(g_egl_dpy);
eglReleaseThread();
g_egl_dpy = EGL_NO_DISPLAY;
g_egl_surf = EGL_NO_SURFACE;
g_egl_ctx = EGL_NO_CONTEXT;
egl_config = 0;
g_resize = false;
}
static void gfx_ctx_get_video_size(unsigned *width, unsigned *height)
{
if (g_egl_dpy)
{
EGLint gl_width, gl_height;
eglQuerySurface(g_egl_dpy, g_egl_surf, EGL_WIDTH, &gl_width);
eglQuerySurface(g_egl_dpy, g_egl_surf, EGL_HEIGHT, &gl_height);
*width = gl_width;
*height = gl_height;
}
else
{
*width = 0;
*height = 0;
}
}
static bool gfx_ctx_init(void)
{
const EGLint attribs[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_NONE
};
EGLint num_config;
EGLint egl_version_major, egl_version_minor;
int format = SCREEN_FORMAT_RGBX8888;
EGLint context_attributes[] = {
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE
};
int usage;
usage = SCREEN_USAGE_OPENGL_ES2 | SCREEN_USAGE_ROTATION;
RARCH_LOG("Initializing context\n");
if ((g_egl_dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY)) == EGL_NO_DISPLAY)
{
RARCH_ERR("eglGetDisplay failed.\n");
goto error;
}
if (!eglInitialize(g_egl_dpy, &egl_version_major, &egl_version_minor))
{
RARCH_ERR("eglInitialize failed.\n");
goto error;
}
if (!eglBindAPI(EGL_OPENGL_ES_API))
{
RARCH_ERR("eglBindAPI failed.\n");
goto error;
}
RARCH_LOG("[BLACKBERRY QNX/EGL]: EGL version: %d.%d\n", egl_version_major, egl_version_minor);
if (!eglChooseConfig(g_egl_dpy, attribs, &egl_config, 1, &num_config))
{
RARCH_ERR("eglChooseConfig failed.\n");
goto error;
}
if ((g_egl_ctx = eglCreateContext(g_egl_dpy, egl_config, 0, context_attributes)) == EGL_NO_CONTEXT)
{
RARCH_ERR("eglCreateContext failed.\n");
goto error;
}
if (screen_create_window(&screen_win, screen_ctx))
{
RARCH_ERR("screen_create_window failed:.\n");
goto error;
}
if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_FORMAT, &format))
{
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_FORMAT] failed.\n");
goto error;
}
if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_USAGE, &usage))
{
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_USAGE] failed.\n");
goto error;
}
if (screen_get_window_property_pv(screen_win, SCREEN_PROPERTY_DISPLAY, (void **)&screen_disp))
{
RARCH_ERR("screen_get_window_property_pv [SCREEN_PROPERTY_DISPLAY] failed.\n");
goto error;
}
int screen_resolution[2];
if (screen_get_display_property_iv(screen_disp, SCREEN_PROPERTY_SIZE, screen_resolution))
{
RARCH_ERR("screen_get_window_property_iv [SCREEN_PROPERTY_SIZE] failed.\n");
goto error;
}
int angle = atoi(getenv("ORIENTATION"));
screen_display_mode_t screen_mode;
if (screen_get_display_property_pv(screen_disp, SCREEN_PROPERTY_MODE, (void**)&screen_mode))
{
RARCH_ERR("screen_get_display_property_pv [SCREEN_PROPERTY_MODE] failed.\n");
goto error;
}
int size[2];
if (screen_get_window_property_iv(screen_win, SCREEN_PROPERTY_BUFFER_SIZE, size)) {
RARCH_ERR("screen_get_window_property_iv [SCREEN_PROPERTY_BUFFER_SIZE] failed.\n");
goto error;
}
int buffer_size[2] = {size[0], size[1]};
if ((angle == 0) || (angle == 180)) {
if (((screen_mode.width > screen_mode.height) && (size[0] < size[1])) ||
((screen_mode.width < screen_mode.height) && (size[0] > size[1]))) {
buffer_size[1] = size[0];
buffer_size[0] = size[1];
}
} else if ((angle == 90) || (angle == 270)){
if (((screen_mode.width > screen_mode.height) && (size[0] > size[1])) ||
((screen_mode.width < screen_mode.height && size[0] < size[1]))) {
buffer_size[1] = size[0];
buffer_size[0] = size[1];
}
} else {
RARCH_ERR("Navigator returned an unexpected orientation angle.\n");
goto error;
}
if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_BUFFER_SIZE, buffer_size))
{
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_BUFFER_SIZE] failed.\n");
goto error;
}
if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ROTATION, &angle))
{
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_ROTATION] failed.\n");
goto error;
}
if (screen_create_window_buffers(screen_win, WINDOW_BUFFERS))
{
RARCH_ERR("screen_create_window_buffers failed.\n");
goto error;
}
if (!(g_egl_surf = eglCreateWindowSurface(g_egl_dpy, egl_config, screen_win, 0)))
{
RARCH_ERR("eglCreateWindowSurface failed.\n");
goto error;
}
if (!eglMakeCurrent(g_egl_dpy, g_egl_surf, g_egl_surf, g_egl_ctx))
{
RARCH_ERR("eglMakeCurrent failed.\n");
goto error;
}
return true;
error:
RARCH_ERR("EGL error: %d.\n", eglGetError());
gfx_ctx_destroy();
return false;
}
static void gfx_ctx_swap_buffers(void)
{
eglSwapBuffers(g_egl_dpy, g_egl_surf);
}
static void gfx_ctx_check_window(bool *quit,
bool *resize, unsigned *width, unsigned *height, unsigned frame_count)
{
(void)frame_count;
//Request and process all available BPS events
bps_event_t *event = NULL;
bps_get_event(&event, 0);
*quit = false;
unsigned new_width, new_height;
gfx_ctx_get_video_size(&new_width, &new_height);
if (new_width != *width || new_height != *height)
{
*width = new_width;
*height = new_height;
*resize = true;
}
if (event)
{
int domain = bps_event_get_domain(event);
if (domain == screen_get_domain())
{
screen_event_t screen_event = screen_event_get_event(event);
int screen_val;
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &screen_val);
switch (screen_val) {
case SCREEN_EVENT_MTOUCH_TOUCH:
case SCREEN_EVENT_MTOUCH_MOVE:
case SCREEN_EVENT_MTOUCH_RELEASE:
break;
}
}
else if ((domain == navigator_get_domain()) && (NAVIGATOR_EXIT == bps_event_get_code(event)))
g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
}
// Check if we are exiting.
if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY))
*quit = true;
}
static void gfx_ctx_set_resize(unsigned width, unsigned height)
{
(void)width;
(void)height;
}
static void gfx_ctx_update_window_title(bool reset)
{
if (reset)
gfx_window_title_reset();
char buf[128];
#if 0
if (gfx_get_fps(buf, sizeof(buf), false))
RARCH_LOG("%s.\n", buf);
#else
gfx_get_fps(buf, sizeof(buf), false);
#endif
}
static bool gfx_ctx_set_video_mode(
unsigned width, unsigned height,
bool fullscreen)
{
(void)width;
(void)height;
(void)fullscreen;
return true;
}
static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data)
{
*input = NULL;
*input_data = NULL;
}
static unsigned gfx_ctx_get_resolution_width(unsigned resolution_id)
{
int gl_width;
eglQuerySurface(g_egl_dpy, g_egl_surf, EGL_WIDTH, &gl_width);
return gl_width;
}
static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol)
{
rarch_assert(sizeof(void*) == sizeof(void (*)(void)));
gfx_ctx_proc_t ret;
void *sym__ = eglGetProcAddress(symbol);
memcpy(&ret, &sym__, sizeof(void*));
return ret;
}
static bool gfx_ctx_bind_api(enum gfx_ctx_api api)
{
g_api = api;
return api == GFX_CTX_OPENGL_ES_API;
}
static bool gfx_ctx_has_focus(void)
{
return true;
}
static bool gfx_ctx_init_egl_image_buffer(const video_info_t *video)
{
return false;
}
static bool gfx_ctx_write_egl_image(const void *frame, unsigned width, unsigned height, unsigned pitch, bool rgb32, unsigned index, void **image_handle)
{
return false;
}
const gfx_ctx_driver_t gfx_ctx_bbqnx = {
gfx_ctx_init,
gfx_ctx_destroy,
gfx_ctx_bind_api,
gfx_ctx_set_swap_interval,
gfx_ctx_set_video_mode,
gfx_ctx_get_video_size,
NULL,
gfx_ctx_update_window_title,
gfx_ctx_check_window,
gfx_ctx_set_resize,
gfx_ctx_has_focus,
gfx_ctx_swap_buffers,
gfx_ctx_input_driver,
NULL,
gfx_ctx_init_egl_image_buffer,
gfx_ctx_write_egl_image,
NULL,
"blackberry_qnx",
};

View File

@ -630,6 +630,6 @@ const gfx_ctx_driver_t gfx_ctx_drm_egl = {
gfx_ctx_init_egl_image_buffer, gfx_ctx_init_egl_image_buffer,
gfx_ctx_write_egl_image, gfx_ctx_write_egl_image,
NULL, NULL,
"drm-egl", "kms-egl",
}; };

View File

@ -50,108 +50,6 @@ static bool g_is_double;
static int (*g_pglSwapInterval)(int); static int (*g_pglSwapInterval)(int);
struct key_bind
{
unsigned x;
enum retro_key sk;
};
static unsigned keysym_lut[RETROK_LAST];
static const struct key_bind lut_binds[] = {
{ XK_Left, RETROK_LEFT },
{ XK_Right, RETROK_RIGHT },
{ XK_Up, RETROK_UP },
{ XK_Down, RETROK_DOWN },
{ XK_Return, RETROK_RETURN },
{ XK_Tab, RETROK_TAB },
{ XK_Insert, RETROK_INSERT },
{ XK_Home, RETROK_HOME },
{ XK_End, RETROK_END },
{ XK_Page_Up, RETROK_PAGEUP },
{ XK_Page_Down, RETROK_PAGEDOWN },
{ XK_Delete, RETROK_DELETE },
{ XK_Shift_R, RETROK_RSHIFT },
{ XK_Shift_L, RETROK_LSHIFT },
{ XK_Control_L, RETROK_LCTRL },
{ XK_Alt_L, RETROK_LALT },
{ XK_space, RETROK_SPACE },
{ XK_Escape, RETROK_ESCAPE },
{ XK_BackSpace, RETROK_BACKSPACE },
{ XK_KP_Enter, RETROK_KP_ENTER },
{ XK_KP_Add, RETROK_KP_PLUS },
{ XK_KP_Subtract, RETROK_KP_MINUS },
{ XK_KP_Multiply, RETROK_KP_MULTIPLY },
{ XK_KP_Divide, RETROK_KP_DIVIDE },
{ XK_grave, RETROK_BACKQUOTE },
{ XK_Pause, RETROK_PAUSE },
{ XK_KP_0, RETROK_KP0 },
{ XK_KP_1, RETROK_KP1 },
{ XK_KP_2, RETROK_KP2 },
{ XK_KP_3, RETROK_KP3 },
{ XK_KP_4, RETROK_KP4 },
{ XK_KP_5, RETROK_KP5 },
{ XK_KP_6, RETROK_KP6 },
{ XK_KP_7, RETROK_KP7 },
{ XK_KP_8, RETROK_KP8 },
{ XK_KP_9, RETROK_KP9 },
{ XK_0, RETROK_0 },
{ XK_1, RETROK_1 },
{ XK_2, RETROK_2 },
{ XK_3, RETROK_3 },
{ XK_4, RETROK_4 },
{ XK_5, RETROK_5 },
{ XK_6, RETROK_6 },
{ XK_7, RETROK_7 },
{ XK_8, RETROK_8 },
{ XK_9, RETROK_9 },
{ XK_F1, RETROK_F1 },
{ XK_F2, RETROK_F2 },
{ XK_F3, RETROK_F3 },
{ XK_F4, RETROK_F4 },
{ XK_F5, RETROK_F5 },
{ XK_F6, RETROK_F6 },
{ XK_F7, RETROK_F7 },
{ XK_F8, RETROK_F8 },
{ XK_F9, RETROK_F9 },
{ XK_F10, RETROK_F10 },
{ XK_F11, RETROK_F11 },
{ XK_F12, RETROK_F12 },
{ XK_a, RETROK_a },
{ XK_b, RETROK_b },
{ XK_c, RETROK_c },
{ XK_d, RETROK_d },
{ XK_e, RETROK_e },
{ XK_f, RETROK_f },
{ XK_g, RETROK_g },
{ XK_h, RETROK_h },
{ XK_i, RETROK_i },
{ XK_j, RETROK_j },
{ XK_k, RETROK_k },
{ XK_l, RETROK_l },
{ XK_m, RETROK_m },
{ XK_n, RETROK_n },
{ XK_o, RETROK_o },
{ XK_p, RETROK_p },
{ XK_q, RETROK_q },
{ XK_r, RETROK_r },
{ XK_s, RETROK_s },
{ XK_t, RETROK_t },
{ XK_u, RETROK_u },
{ XK_v, RETROK_v },
{ XK_w, RETROK_w },
{ XK_x, RETROK_x },
{ XK_y, RETROK_y },
{ XK_z, RETROK_z },
};
static void init_lut(void)
{
memset(keysym_lut, 0, sizeof(keysym_lut));
for (unsigned i = 0; i < sizeof(lut_binds) / sizeof(lut_binds[0]); i++)
keysym_lut[lut_binds[i].sk] = lut_binds[i].x;
}
static void sighandler(int sig) static void sighandler(int sig)
{ {
(void)sig; (void)sig;
@ -165,6 +63,13 @@ static Bool glx_wait_notify(Display *d, XEvent *e, char *arg)
return e->type == MapNotify && e->xmap.window == g_win; return e->type == MapNotify && e->xmap.window == g_win;
} }
static int nul_handler(Display *dpy, XErrorEvent *event)
{
(void)dpy;
(void)event;
return 0;
}
static void gfx_ctx_get_video_size(unsigned *width, unsigned *height); static void gfx_ctx_get_video_size(unsigned *width, unsigned *height);
static void gfx_ctx_destroy(void); static void gfx_ctx_destroy(void);
@ -299,11 +204,8 @@ static bool gfx_ctx_init(void)
}; };
GLXFBConfig *fbcs = NULL; GLXFBConfig *fbcs = NULL;
g_quit = 0; g_quit = 0;
init_lut();
g_dpy = XOpenDisplay(NULL); g_dpy = XOpenDisplay(NULL);
if (!g_dpy) if (!g_dpy)
goto error; goto error;
@ -440,8 +342,6 @@ static bool gfx_ctx_set_video_mode(
XEvent event; XEvent event;
XIfEvent(g_dpy, &event, glx_wait_notify, NULL); XIfEvent(g_dpy, &event, glx_wait_notify, NULL);
XSetInputFocus(g_dpy, g_win, RevertToNone, CurrentTime);
g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True); g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True);
if (!g_ctx) if (!g_ctx)
{ {
@ -461,20 +361,34 @@ static bool gfx_ctx_set_video_mode(
g_is_double = val; g_is_double = val;
if (g_is_double) if (g_is_double)
{ {
const char *swap_func = NULL;
g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA");
if (g_pglSwapInterval)
swap_func = "glXSwapIntervalMESA";
if (!g_pglSwapInterval) if (!g_pglSwapInterval)
g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapInterval"); {
if (!g_pglSwapInterval)
g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA");
if (!g_pglSwapInterval)
g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalSGI"); g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalSGI");
if (g_pglSwapInterval)
swap_func = "glXSwapIntervalSGI";
}
if (!g_pglSwapInterval) if (!g_pglSwapInterval)
RARCH_WARN("[GLX]: Cannot find swap interval call.\n"); RARCH_WARN("[GLX]: Cannot find swap interval call.\n");
else
RARCH_LOG("[GLX]: Found swap function: %s.\n", swap_func);
} }
else else
RARCH_WARN("[GLX]: Context is not double buffered!.\n"); RARCH_WARN("[GLX]: Context is not double buffered!.\n");
gfx_ctx_swap_interval(g_interval); gfx_ctx_swap_interval(g_interval);
// This can blow up on some drivers. It's not fatal, so override errors for this call.
int (*old_handler)(Display*, XErrorEvent*) = XSetErrorHandler(nul_handler);
XSetInputFocus(g_dpy, g_win, RevertToNone, CurrentTime);
XSync(g_dpy, False);
XSetErrorHandler(old_handler);
XFree(vi); XFree(vi);
g_has_focus = true; g_has_focus = true;
g_inited = true; g_inited = true;
@ -548,6 +462,7 @@ static void gfx_ctx_destroy(void)
} }
g_inited = false; g_inited = false;
g_pglSwapInterval = NULL;
} }
static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data)

View File

@ -64,6 +64,13 @@ static Bool egl_wait_notify(Display *d, XEvent *e, char *arg)
return e->type == MapNotify && e->xmap.window == g_win; return e->type == MapNotify && e->xmap.window == g_win;
} }
static int nul_handler(Display *dpy, XErrorEvent *event)
{
(void)dpy;
(void)event;
return 0;
}
static void gfx_ctx_get_video_size(unsigned *width, unsigned *height); static void gfx_ctx_get_video_size(unsigned *width, unsigned *height);
static void gfx_ctx_destroy(void); static void gfx_ctx_destroy(void);
@ -369,7 +376,7 @@ static bool gfx_ctx_set_video_mode(
if (true_full) if (true_full)
{ {
RARCH_LOG("[GLX]: Using true fullscreen.\n"); RARCH_LOG("[X/EGL]: Using true fullscreen.\n");
XMapRaised(g_dpy, g_win); XMapRaised(g_dpy, g_win);
} }
else if (fullscreen) // We attempted true fullscreen, but failed. Attempt using windowed fullscreen. else if (fullscreen) // We attempted true fullscreen, but failed. Attempt using windowed fullscreen.
@ -393,7 +400,6 @@ static bool gfx_ctx_set_video_mode(
XEvent event; XEvent event;
XIfEvent(g_dpy, &event, egl_wait_notify, NULL); XIfEvent(g_dpy, &event, egl_wait_notify, NULL);
XSetInputFocus(g_dpy, g_win, RevertToNone, CurrentTime);
g_quit_atom = XInternAtom(g_dpy, "WM_DELETE_WINDOW", False); g_quit_atom = XInternAtom(g_dpy, "WM_DELETE_WINDOW", False);
if (g_quit_atom) if (g_quit_atom)
@ -401,6 +407,12 @@ static bool gfx_ctx_set_video_mode(
gfx_ctx_swap_interval(g_interval); gfx_ctx_swap_interval(g_interval);
// This can blow up on some drivers. It's not fatal, so override errors for this call.
int (*old_handler)(Display*, XErrorEvent*) = XSetErrorHandler(nul_handler);
XSetInputFocus(g_dpy, g_win, RevertToNone, CurrentTime);
XSync(g_dpy, False);
XSetErrorHandler(old_handler);
XFree(vi); XFree(vi);
g_has_focus = true; g_has_focus = true;
g_inited = true; g_inited = true;
@ -455,7 +467,7 @@ static void gfx_ctx_destroy(void)
g_screen = x11_get_xinerama_monitor(g_dpy, x, y, g_screen = x11_get_xinerama_monitor(g_dpy, x, y,
target.width, target.height); target.width, target.height);
RARCH_LOG("[GLX]: Saved monitor #%u.\n", g_screen); RARCH_LOG("[X/EGL]: Saved monitor #%u.\n", g_screen);
#endif #endif
XUnmapWindow(g_dpy, g_win); XUnmapWindow(g_dpy, g_win);

View File

@ -48,6 +48,9 @@ static const gfx_ctx_driver_t *gfx_ctx_drivers[] = {
#if defined(ANDROID) #if defined(ANDROID)
&gfx_ctx_android, &gfx_ctx_android,
#endif #endif
#if defined(__BLACKBERRY_QNX__)
&gfx_ctx_bbqnx,
#endif
#if defined(IOS) #if defined(IOS)
&gfx_ctx_ios, &gfx_ctx_ios,
#endif #endif

View File

@ -136,6 +136,7 @@ extern const gfx_ctx_driver_t gfx_ctx_ps3;
extern const gfx_ctx_driver_t gfx_ctx_xdk; extern const gfx_ctx_driver_t gfx_ctx_xdk;
extern const gfx_ctx_driver_t gfx_ctx_wgl; extern const gfx_ctx_driver_t gfx_ctx_wgl;
extern const gfx_ctx_driver_t gfx_ctx_videocore; extern const gfx_ctx_driver_t gfx_ctx_videocore;
extern const gfx_ctx_driver_t gfx_ctx_bbqnx;
extern const gfx_ctx_driver_t gfx_ctx_ios; extern const gfx_ctx_driver_t gfx_ctx_ios;
const gfx_ctx_driver_t *gfx_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. const gfx_ctx_driver_t *gfx_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize.

View File

@ -1051,16 +1051,22 @@ static void gl_init_textures_data(void *data)
static inline void gl_copy_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch) static inline void gl_copy_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch)
{ {
gl_t *gl = (gl_t*)data; gl_t *gl = (gl_t*)data;
size_t buffer_addr = gl->tex_w * gl->tex_h * gl->tex_index * gl->base_size; size_t buffer_addr = gl->tex_w * gl->tex_h * gl->tex_index * gl->base_size;
size_t buffer_stride = gl->tex_w * gl->base_size; size_t buffer_stride = gl->tex_w * gl->base_size;
const uint8_t *frame_copy = frame; const uint8_t *frame_copy = frame;
size_t frame_copy_size = width * gl->base_size; size_t frame_copy_size = width * gl->base_size;
uint8_t *buffer = (uint8_t*)glMapBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE, GL_WRITE_ONLY) + buffer_addr; for (unsigned h = 0; h < height; h++)
for (unsigned h = 0; h < height; h++, buffer += buffer_stride, frame_copy += pitch) {
memcpy(buffer, frame_copy, frame_copy_size); glBufferSubData(GL_TEXTURE_REFERENCE_BUFFER_SCE,
buffer_addr,
frame_copy_size,
frame_copy);
glUnmapBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE); frame_copy += pitch;
buffer_addr += buffer_stride;
}
} }
static void gl_init_textures(void *data, const video_info_t *video) static void gl_init_textures(void *data, const video_info_t *video)
@ -1579,6 +1585,45 @@ static void gl_init_pbo_readback(void *data)
#endif #endif
} }
static const gfx_ctx_driver_t *gl_get_context(void)
{
#ifdef HAVE_OPENGLES
enum gfx_ctx_api api = GFX_CTX_OPENGL_ES_API;
const char *api_name = "OpenGL ES";
#else
enum gfx_ctx_api api = GFX_CTX_OPENGL_API;
const char *api_name = "OpenGL";
#endif
if (*g_settings.video.gl_context)
{
const gfx_ctx_driver_t *ctx = gfx_ctx_find_driver(g_settings.video.gl_context);
if (ctx)
{
if (!ctx->bind_api(api))
{
RARCH_ERR("Failed to bind API %s to context %s.\n", api_name, g_settings.video.gl_context);
return NULL;
}
if (!ctx->init())
{
RARCH_ERR("Failed to init GL context: %s.\n", ctx->ident);
return NULL;
}
}
else
{
RARCH_ERR("Didn't find GL context: %s.\n", g_settings.video.gl_context);
return NULL;
}
return ctx;
}
else
return gfx_ctx_init_first(api);
}
static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data) static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data)
{ {
#ifdef _WIN32 #ifdef _WIN32
@ -1599,11 +1644,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
if (!gl) if (!gl)
return NULL; return NULL;
#ifdef HAVE_OPENGLES gl->ctx_driver = gl_get_context();
gl->ctx_driver = gfx_ctx_init_first(GFX_CTX_OPENGL_ES_API);
#else
gl->ctx_driver = gfx_ctx_init_first(GFX_CTX_OPENGL_API);
#endif
if (!gl->ctx_driver) if (!gl->ctx_driver)
{ {
free(gl); free(gl);

View File

@ -257,7 +257,7 @@ SECTIONS
} }
__isIPL = 0; __isIPL = 0;
__stack_addr = (__bss_start + SIZEOF(.bss) + 0x40000 + 7) & (-8); __stack_addr = (__bss_start + SIZEOF(.bss) + 0x80000 + 7) & (-8);
__stack_end = (__bss_start + SIZEOF(.bss)); __stack_end = (__bss_start + SIZEOF(.bss));
__intrstack_addr = (__stack_addr + 0x4000); __intrstack_addr = (__stack_addr + 0x4000);
__intrstack_end = (__stack_addr); __intrstack_end = (__stack_addr);

View File

@ -268,7 +268,7 @@ SECTIONS
} }
__isIPL = 0; __isIPL = 0;
__stack_addr = (__bss_start + SIZEOF(.bss) + 0x40000 + 7) & (-8); __stack_addr = (__bss_start + SIZEOF(.bss) + 0x80000 + 7) & (-8);
__stack_end = (__bss_start + SIZEOF(.bss)); __stack_end = (__bss_start + SIZEOF(.bss));
__intrstack_addr = (__stack_addr + 0x4000); __intrstack_addr = (__stack_addr + 0x4000);
__intrstack_end = (__stack_addr); __intrstack_end = (__stack_addr);

View File

@ -40,6 +40,9 @@ struct overlay_desc
float range_x, range_y; float range_x, range_y;
uint64_t key_mask; uint64_t key_mask;
unsigned next_index;
char next_index_name[64];
}; };
struct overlay struct overlay
@ -58,6 +61,8 @@ struct overlay
float center_x, center_y; float center_x, center_y;
bool full_screen; bool full_screen;
char name[64];
}; };
struct input_overlay struct input_overlay
@ -72,6 +77,8 @@ struct input_overlay
const struct overlay *active; const struct overlay *active;
size_t index; size_t index;
size_t size; size_t size;
unsigned next_index;
}; };
static void input_overlay_scale(struct overlay *overlay, float scale) static void input_overlay_scale(struct overlay *overlay, float scale)
@ -154,6 +161,13 @@ static bool input_overlay_load_desc(config_file_t *conf, struct overlay_desc *de
for (const char *tmp = strtok_r(key, "|", &save); tmp; tmp = strtok_r(NULL, "|", &save)) for (const char *tmp = strtok_r(key, "|", &save); tmp; tmp = strtok_r(NULL, "|", &save))
desc->key_mask |= UINT64_C(1) << input_str_to_bind(tmp); desc->key_mask |= UINT64_C(1) << input_str_to_bind(tmp);
if (desc->key_mask & (UINT64_C(1) << RARCH_OVERLAY_NEXT))
{
char overlay_target_key[64];
snprintf(overlay_target_key, sizeof(overlay_target_key), "overlay%u_desc%u_next_target", ol_index, desc_index);
config_get_array(conf, overlay_target_key, desc->next_index_name, sizeof(desc->next_index_name));
}
desc->x = strtod(x, NULL) / width; desc->x = strtod(x, NULL) / width;
desc->y = strtod(y, NULL) / height; desc->y = strtod(y, NULL) / height;
@ -181,6 +195,7 @@ static bool input_overlay_load_overlay(config_file_t *conf, const char *config_p
struct overlay *overlay, unsigned index) struct overlay *overlay, unsigned index)
{ {
char overlay_path_key[64]; char overlay_path_key[64];
char overlay_name_key[64];
char overlay_path[PATH_MAX]; char overlay_path[PATH_MAX];
char overlay_resolved_path[PATH_MAX]; char overlay_resolved_path[PATH_MAX];
@ -191,6 +206,9 @@ static bool input_overlay_load_overlay(config_file_t *conf, const char *config_p
return false; return false;
} }
snprintf(overlay_name_key, sizeof(overlay_name_key), "overlay%u_name", index);
config_get_array(conf, overlay_name_key, overlay->name, sizeof(overlay->name));
fill_pathname_resolve_relative(overlay_resolved_path, config_path, fill_pathname_resolve_relative(overlay_resolved_path, config_path,
overlay_path, sizeof(overlay_resolved_path)); overlay_path, sizeof(overlay_resolved_path));
@ -272,6 +290,42 @@ static bool input_overlay_load_overlay(config_file_t *conf, const char *config_p
return true; return true;
} }
static ssize_t input_overlay_find_index(const struct overlay *ol, const char *name, size_t size)
{
for (size_t i = 0; i < size; i++)
{
if (strcmp(ol[i].name, name) == 0)
return i;
}
return -1;
}
static bool input_overlay_resolve_targets(struct overlay *ol, size_t index, size_t size)
{
struct overlay *current = &ol[index];
for (size_t i = 0; i < current->size; i++)
{
const char *next = current->descs[i].next_index_name;
if (*next)
{
ssize_t index = input_overlay_find_index(ol, next, size);
if (index < 0)
{
RARCH_ERR("[Overlay]: Couldn't find overlay called: \"%s\".\n", next);
return false;
}
current->descs[i].next_index = index;
}
else
current->descs[i].next_index = (index + 1) % size;
}
return true;
}
static bool input_overlay_load_overlays(input_overlay_t *ol, const char *path) static bool input_overlay_load_overlays(input_overlay_t *ol, const char *path)
{ {
bool ret = true; bool ret = true;
@ -315,6 +369,16 @@ static bool input_overlay_load_overlays(input_overlay_t *ol, const char *path)
} }
} }
for (size_t i = 0; i < ol->size; i++)
{
if (!input_overlay_resolve_targets(ol->overlays, i, ol->size))
{
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
ret = false;
goto end;
}
}
end: end:
config_file_free(conf); config_file_free(conf);
return ret; return ret;
@ -353,6 +417,7 @@ input_overlay_t *input_overlay_new(const char *overlay)
input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity); input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity);
input_overlay_set_scale_factor(ol, 1.0f); input_overlay_set_scale_factor(ol, 1.0f);
ol->next_index = (ol->index + 1) % ol->size;
return ol; return ol;
@ -410,7 +475,13 @@ uint64_t input_overlay_poll(input_overlay_t *ol, int16_t norm_x, int16_t norm_y)
for (size_t i = 0; i < ol->active->size; i++) for (size_t i = 0; i < ol->active->size; i++)
{ {
if (inside_hitbox(&ol->active->descs[i], x, y)) if (inside_hitbox(&ol->active->descs[i], x, y))
state |= ol->active->descs[i].key_mask; {
uint64_t mask = ol->active->descs[i].key_mask;
state |= mask;
if (mask & (UINT64_C(1) << RARCH_OVERLAY_NEXT))
ol->next_index = ol->active->descs[i].next_index;
}
} }
if (!state) if (!state)
@ -428,7 +499,7 @@ void input_overlay_poll_clear(input_overlay_t *ol)
void input_overlay_next(input_overlay_t *ol) void input_overlay_next(input_overlay_t *ol)
{ {
ol->index = (ol->index + 1) % ol->size; ol->index = ol->next_index;
ol->active = &ol->overlays[ol->index]; ol->active = &ol->overlays[ol->index];
ol->iface->load(ol->iface_data, ol->active->image, ol->active->width, ol->active->height); ol->iface->load(ol->iface_data, ol->active->image, ol->active->width, ol->active->height);
@ -436,6 +507,7 @@ void input_overlay_next(input_overlay_t *ol)
ol->active->mod_x, ol->active->mod_y, ol->active->mod_w, ol->active->mod_h); ol->active->mod_x, ol->active->mod_y, ol->active->mod_w, ol->active->mod_h);
ol->iface->full_screen(ol->iface_data, ol->active->full_screen); ol->iface->full_screen(ol->iface_data, ol->active->full_screen);
ol->blocked = true; ol->blocked = true;
ol->next_index = (ol->index + 1) % ol->size;
} }
bool input_overlay_full_screen(input_overlay_t *ol) bool input_overlay_full_screen(input_overlay_t *ol)

View File

@ -113,7 +113,7 @@
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";%(PreprocessorDefinitions);HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;main=rarch_main;RARCH_CONSOLE;HAVE_RMENU;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_XBOX;HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";%(PreprocessorDefinitions);HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;HAVE_RARCH_MAIN_IMPLEMENTATION;RARCH_CONSOLE;HAVE_RMENU;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling> <CallAttributedProfiling>Callcap</CallAttributedProfiling>
</ClCompile> </ClCompile>
<Link> <Link>
@ -151,7 +151,7 @@
<PREfast>AnalyzeOnly</PREfast> <PREfast>AnalyzeOnly</PREfast>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_FILEBROWSER;RARCH_CONSOLE;HAVE_RMENU;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_FILEBROWSER;RARCH_CONSOLE;HAVE_RMENU;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling> <CallAttributedProfiling>Callcap</CallAttributedProfiling>
</ClCompile> </ClCompile>
<Link> <Link>
@ -190,7 +190,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU;main=rarch_main;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling> <CallAttributedProfiling>Callcap</CallAttributedProfiling>
</ClCompile> </ClCompile>
<Link> <Link>
@ -234,7 +234,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_RMENU;HAVE_XAUDIO</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";HAVE_DEFAULT_RETROPAD_INPUT;_CRT_SECURE_NO_WARNINGS;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_RMENU;HAVE_XAUDIO</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -275,7 +275,7 @@
<ExceptionHandling>false</ExceptionHandling> <ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";_CRT_SECURE_NO_WARNINGS;HAVE_DEFAULT_RETROPAD_INPUT;main=rarch_main;RARCH_CONSOLE=1;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_RMENU;HAVE_XAUDIO</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";_CRT_SECURE_NO_WARNINGS;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_RARCH_MAIN_IMPLEMENTATION;RARCH_CONSOLE=1;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_RMENU;HAVE_XAUDIO</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -316,7 +316,7 @@
<ExceptionHandling>false</ExceptionHandling> <ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";_CRT_SECURE_NO_WARNINGS;HAVE_DEFAULT_RETROPAD_INPUT;RARCH_CONSOLE;HAVE_RMENU;main=rarch_main;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);HAVE_XINPUT2;PACKAGE_VERSION="0.9.8.4";_CRT_SECURE_NO_WARNINGS;HAVE_DEFAULT_RETROPAD_INPUT;RARCH_CONSOLE;HAVE_RMENU;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9;_XBOX360;HAVE_FBO;HAVE_SCREENSHOTS;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY;HAVE_XAUDIO</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>

View File

@ -22,7 +22,7 @@
Optimization="3" Optimization="3"
OptimizeForProcessor="2" OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;" AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;"
PreprocessorDefinitions="_DEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY" PreprocessorDefinitions="_DEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
BasicRuntimeChecks="0" BasicRuntimeChecks="0"
RuntimeLibrary="1" RuntimeLibrary="1"
@ -72,7 +72,7 @@
OmitFramePointers="TRUE" OmitFramePointers="TRUE"
OptimizeForProcessor="2" OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;" AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;PROFILE;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY" PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;PROFILE;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="TRUE" BufferSecurityCheck="TRUE"
@ -127,7 +127,7 @@
OmitFramePointers="TRUE" OmitFramePointers="TRUE"
OptimizeForProcessor="2" OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;" AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;PROFILE;FASTCAP;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY" PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;PROFILE;FASTCAP;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="TRUE" BufferSecurityCheck="TRUE"
@ -188,7 +188,7 @@
EnableFiberSafeOptimizations="TRUE" EnableFiberSafeOptimizations="TRUE"
OptimizeForProcessor="2" OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;" AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;HAVE_GRIFFIN;inline=_inline;HAVE_RARCH_MAIN_WRAP;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY" PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;HAVE_GRIFFIN;inline=_inline;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="TRUE" BufferSecurityCheck="TRUE"
@ -241,7 +241,7 @@
OmitFramePointers="TRUE" OmitFramePointers="TRUE"
OptimizeForProcessor="2" OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;" AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-stdint&quot;;&quot;$(SolutionDir)\msvc-71&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;LTCG;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY" PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;HAVE_RMENU;HAVE_RMENU_GUI;RARCH_CONSOLE;HAVE_XINPUT_XBOX1;PACKAGE_VERSION=\&quot;0.9.8.4\&quot;;__STDC_CONSTANT_MACROS;HAVE_ZLIB;LTCG;HAVE_GRIFFIN;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_MAIN_IMPLEMENTATION;HAVE_LIBRETRO_MANAGEMENT;HAVE_RARCH_EXEC;HAVE_DEFAULT_RETROPAD_INPUT;HAVE_VID_CONTEXT;HAVE_DSOUND;HAVE_D3D8;HAVE_FILEBROWSER;WANT_MINIZ;HAVE_SINC;SINC_LOWER_QUALITY"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="TRUE" BufferSecurityCheck="TRUE"

View File

@ -254,6 +254,8 @@
</ClCompile> </ClCompile>
<ClCompile Include="..\..\patch.c"> <ClCompile Include="..\..\patch.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\frontend\frontend.c">
</ClCompile>
<ClCompile Include="..\..\retroarch.c"> <ClCompile Include="..\..\retroarch.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\rewind.c"> <ClCompile Include="..\..\rewind.c">

View File

@ -35,6 +35,8 @@ typedef int ssize_t;
#define strtoull _strtoui64 #define strtoull _strtoui64
#undef strcasecmp #undef strcasecmp
#define strcasecmp _stricmp #define strcasecmp _stricmp
#undef strncasecmp
#define strncasecmp _strnicmp
// Disable some of the annoying warnings. // Disable some of the annoying warnings.
#pragma warning(disable : 4800) #pragma warning(disable : 4800)

View File

@ -31,11 +31,17 @@
#endif #endif
#elif defined(_XBOX360) #elif defined(_XBOX360)
#include <PPCIntrinsics.h> #include <PPCIntrinsics.h>
#elif defined(_POSIX_MONOTONIC_CLOCK) || defined(ANDROID) #elif defined(_POSIX_MONOTONIC_CLOCK) || defined(ANDROID) || defined(__QNX__)
// POSIX_MONOTONIC_CLOCK is not being defined in Android headers despite support being present. // POSIX_MONOTONIC_CLOCK is not being defined in Android headers despite support being present.
#include <time.h> #include <time.h>
#endif #endif
#ifdef __QNX__
#ifndef CLOCK_MONOTONIC
#define CLOCK_MONOTONIC 2
#endif
#endif
#if defined(__PSL1GHT__) #if defined(__PSL1GHT__)
#include <sys/time.h> #include <sys/time.h>
#elif defined(__CELLOS_LV2__) #elif defined(__CELLOS_LV2__)
@ -85,7 +91,7 @@ rarch_perf_tick_t rarch_get_perf_counter(void)
__asm mov time_tmp.HighPart, edx; __asm mov time_tmp.HighPart, edx;
time = time_tmp.QuadPart; time = time_tmp.QuadPart;
#elif defined(__linux__) #elif defined(__linux__) || defined(__QNX__)
struct timespec tv; struct timespec tv;
if (clock_gettime(CLOCK_MONOTONIC, &tv) == 0) if (clock_gettime(CLOCK_MONOTONIC, &tv) == 0)
time = (rarch_perf_tick_t)tv.tv_sec * 1000000000 + (rarch_perf_tick_t)tv.tv_nsec; time = (rarch_perf_tick_t)tv.tv_sec * 1000000000 + (rarch_perf_tick_t)tv.tv_nsec;
@ -134,7 +140,7 @@ rarch_time_t rarch_get_time_usec(void)
clock_get_time(cclock, &mts); clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock); mach_port_deallocate(mach_task_self(), cclock);
return mts.tv_sec * INT64_C(1000000) + (mts.tv_nsec + 500) / 1000; return mts.tv_sec * INT64_C(1000000) + (mts.tv_nsec + 500) / 1000;
#elif defined(_POSIX_MONOTONIC_CLOCK) || defined(ANDROID) #elif defined(_POSIX_MONOTONIC_CLOCK) || defined(__QNX__) || defined(ANDROID)
struct timespec tv; struct timespec tv;
if (clock_gettime(CLOCK_MONOTONIC, &tv) < 0) if (clock_gettime(CLOCK_MONOTONIC, &tv) < 0)
return 0; return 0;
@ -218,6 +224,9 @@ void rarch_get_cpu_features(struct rarch_cpu_features *cpu)
if (cpu_flags & ANDROID_CPU_ARM_FEATURE_NEON) if (cpu_flags & ANDROID_CPU_ARM_FEATURE_NEON)
cpu->simd |= RARCH_SIMD_NEON; cpu->simd |= RARCH_SIMD_NEON;
RARCH_LOG("[CPUID]: NEON: %u\n", !!(cpu->simd & RARCH_SIMD_NEON));
#elif defined(__BLACKBERRY_QNX__)
cpu->simd |= RARCH_SIMD_NEON;
RARCH_LOG("[CPUID]: NEON: %u\n", !!(cpu->simd & RARCH_SIMD_NEON)); RARCH_LOG("[CPUID]: NEON: %u\n", !!(cpu->simd & RARCH_SIMD_NEON));
#elif defined(__CELLOS_LV2__) #elif defined(__CELLOS_LV2__)
cpu->simd |= RARCH_SIMD_VMX; cpu->simd |= RARCH_SIMD_VMX;

854
playbook/.cproject Normal file
View File

@ -0,0 +1,854 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.qnx.qcc.configuration.exe.debug.507133694">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.debug.507133694" moduleId="org.eclipse.cdt.core.settings" name="Device-Debug">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="" id="com.qnx.qcc.configuration.exe.debug.507133694" name="Device-Debug" parent="com.qnx.qcc.configuration.exe.debug">
<folderInfo id="com.qnx.qcc.configuration.exe.debug.507133694." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.debug.2065020807" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.cpu.2049874529" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1371677239" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Device-Debug}" id="com.qnx.nto.51011824" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.312527984" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1343943391" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.1008704037" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.1389175009" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.209097800" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.1775248205" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.227922712" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.926195316" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.827203004" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.722220103" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.2023833959" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.326906113" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.2091187444" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.1757561643" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.825393804" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.676562861" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.187715937" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.992939518" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.815783219" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.debug.507133694.1129483760" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.722220103.36163518">
<tool id="com.qnx.qcc.tool.assembler.722220103.36163518" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.722220103">
<option id="com.qnx.qcc.option.assembler.qccoptions.565523359" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1753268163" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.debug.507133694.1992358048" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.722220103.552409735">
<tool id="com.qnx.qcc.tool.assembler.722220103.552409735" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.722220103">
<option id="com.qnx.qcc.option.assembler.qccoptions.932071200" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1923702983" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.release.237026123">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.release.237026123" moduleId="org.eclipse.cdt.core.settings" name="Device-Release">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="" id="com.qnx.qcc.configuration.exe.release.237026123" name="Device-Release" parent="com.qnx.qcc.configuration.exe.release">
<folderInfo id="com.qnx.qcc.configuration.exe.release.237026123." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.release.1766368467" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.cpu.1345690239" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1497663639" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Device-Release}" id="com.qnx.nto.379146748" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool command="qcc" commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.521537247" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1293497463" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.3" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compiler.includePath.1333983864" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.421937377" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="false" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.426935293" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.pie.145409477" name="Position Independent Executable (-fPIE)" superClass="com.qnx.qcc.option.compiler.pie" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.qccoptions.1285267130" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.1831340856" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.472778173" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.676105057" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<inputType id="com.qnx.qcc.inputType.assembler.585345918" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.939866545" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.libraries.1258752690" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.1833953103" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.pie.812020863" name="Position Independent Executable (-pie)" superClass="com.qnx.qcc.option.linker.pie" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.security.1849150952" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.1440676413" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.1239899316" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.release.237026123.2045481684" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.676105057.1151143701">
<tool id="com.qnx.qcc.tool.assembler.676105057.1151143701" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.676105057">
<option id="com.qnx.qcc.option.assembler.qccoptions.42316253" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.905354291" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.release.237026123.1399355246" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.676105057.276341761">
<tool id="com.qnx.qcc.tool.assembler.676105057.276341761" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.676105057">
<option id="com.qnx.qcc.option.assembler.qccoptions.1400744511" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1520711664" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.profile.491517832">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.profile.491517832" moduleId="org.eclipse.cdt.core.settings" name="Device-Profile">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.profile,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="Build for Profiling" id="com.qnx.qcc.configuration.exe.profile.491517832" name="Device-Profile" parent="com.qnx.qcc.configuration.exe.profile">
<folderInfo id="com.qnx.qcc.configuration.exe.profile.491517832." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.profile.1940927190" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.cpu.810106304" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1744556277" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Device-Profile}" id="com.qnx.nto.220354791" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.578454843" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1421628131" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.995395785" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.profile2.1637519834" name="Build for Profiling (Function Instrumentation) (-finstrument-functions)" superClass="com.qnx.qcc.option.compiler.profile2" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.1145263849" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.1305803908" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.213513124" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.1710818030" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.814347242" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.1632181586" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.820786892" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.1981772840" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.1036437237" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1612406011" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.1674789686" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.profile2.317116750" name="Build for Profiling (Function Instrumentation) (-lprofiling)" superClass="com.qnx.qcc.option.linker.profile2" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.2133360025" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.1367143286" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.1679805773" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.292607681" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.1845279644" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.491517832.917116150" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.820786892.620619437">
<tool id="com.qnx.qcc.tool.assembler.820786892.620619437" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.820786892">
<option id="com.qnx.qcc.option.assembler.qccoptions.22371541" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.761454528" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.491517832.1495032052" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.820786892.1413292621">
<tool id="com.qnx.qcc.tool.assembler.820786892.1413292621" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.820786892">
<option id="com.qnx.qcc.option.assembler.qccoptions.1095049940" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1522990990" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.profile.coverage.511003583">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.profile.coverage.511003583" moduleId="org.eclipse.cdt.core.settings" name="Device-Coverage">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.coverage,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="Build for Code Coverage" id="com.qnx.qcc.configuration.exe.profile.coverage.511003583" name="Device-Coverage" parent="com.qnx.qcc.configuration.exe.profile.coverage">
<folderInfo id="com.qnx.qcc.configuration.exe.profile.coverage.511003583." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.coverage.290877093" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.cpu.775910002" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.264464274" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Device-Coverage}" id="com.qnx.nto.1360968012" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.1699204352" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.692343476" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.1061058825" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.coverage.457849293" name="Build for Code Coverage (-Wc,-ftest-coverage -Wc,-fprofile-arcs)" superClass="com.qnx.qcc.option.compiler.coverage" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.2069434559" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.521807592" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.1725725626" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.793787827" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.1878529766" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.1469526261" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.1771923802" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.1595223019" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.2129805542" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1942866882" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.790242117" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.coverage.73478781" name="Build for Code Coverage (-ftest-coverage -fprofile-arcs -p)" superClass="com.qnx.qcc.option.linker.coverage" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.1198094350" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.496032417" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.1745797008" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.284013832" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.284978789" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.coverage.511003583.73994824" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1771923802.156827134">
<tool id="com.qnx.qcc.tool.assembler.1771923802.156827134" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1771923802">
<option id="com.qnx.qcc.option.assembler.qccoptions.2051397000" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.265652705" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.coverage.511003583.427866523" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1771923802.1770971197">
<tool id="com.qnx.qcc.tool.assembler.1771923802.1770971197" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1771923802">
<option id="com.qnx.qcc.option.assembler.qccoptions.80954895" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.903006095" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.debug.1423528231">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.debug.1423528231" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Debug">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="" id="com.qnx.qcc.configuration.exe.debug.1423528231" name="Simulator-Debug" parent="com.qnx.qcc.configuration.exe.debug">
<folderInfo id="com.qnx.qcc.configuration.exe.debug.1423528231." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.debug.76634438" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.2126292613" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Simulator-Debug}" id="com.qnx.nto.1609605066" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.1279842281" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.685085389" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.1031247323" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.414786601" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.157472670" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.1166581028" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.1114196710" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.1913206296" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.479331921" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.418457356" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.2104087013" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.1407803369" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.347466214" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.60846036" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.456416978" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.1381715984" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.1319793451" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.1580301577" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.33373882" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.debug.1423528231.1764861418" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.418457356.1915987435">
<tool id="com.qnx.qcc.tool.assembler.418457356.1915987435" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.418457356">
<option id="com.qnx.qcc.option.assembler.qccoptions.1674282166" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1168981546" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.debug.1423528231.1588526540" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.418457356.446091438">
<tool id="com.qnx.qcc.tool.assembler.418457356.446091438" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.418457356">
<option id="com.qnx.qcc.option.assembler.qccoptions.1401428750" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.759344697" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.profile.1740368212">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.profile.1740368212" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Profile">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.profile,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="Build for Profiling" id="com.qnx.qcc.configuration.exe.profile.1740368212" name="Simulator-Profile" parent="com.qnx.qcc.configuration.exe.profile">
<folderInfo id="com.qnx.qcc.configuration.exe.profile.1740368212." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.profile.644425262" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1501332643" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Simulator-Profile}" id="com.qnx.nto.1697233247" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.2084544149" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1872714412" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.1567415109" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.profile2.762240993" name="Build for Profiling (Function Instrumentation) (-finstrument-functions)" superClass="com.qnx.qcc.option.compiler.profile2" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.946910608" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.817746405" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.431450507" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.222033491" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.597075648" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.1830961908" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.1153258106" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.89625770" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.113638613" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1483351797" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.1293285876" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.profile2.234673702" name="Build for Profiling (Function Instrumentation) (-lprofiling)" superClass="com.qnx.qcc.option.linker.profile2" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.1482926481" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.1397065257" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.203141846" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.1574710195" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.1366694225" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.1740368212.104682752" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1153258106.1542825132">
<tool id="com.qnx.qcc.tool.assembler.1153258106.1542825132" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1153258106">
<option id="com.qnx.qcc.option.assembler.qccoptions.243478792" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1661041727" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.1740368212.489757294" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1153258106.689071036">
<tool id="com.qnx.qcc.tool.assembler.1153258106.689071036" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1153258106">
<option id="com.qnx.qcc.option.assembler.qccoptions.221620178" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.1133545627" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Coverage">
<externalSettings/>
<extensions>
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.coverage,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" description="Build for Code Coverage" id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566" name="Simulator-Coverage" parent="com.qnx.qcc.configuration.exe.profile.coverage">
<folderInfo id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566." name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.exe.coverage.1041575864" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.687107132" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder buildPath="${workspace_loc:/CubeRotate/Simulator-Coverage}" id="com.qnx.nto.622179974" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
<tool commandLinePattern="${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}" id="com.qnx.qcc.tool.compiler.1804299414" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1547874153" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compile.debug.506984407" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.coverage.940712331" name="Build for Code Coverage (-Wc,-ftest-coverage -Wc,-fprofile-arcs)" superClass="com.qnx.qcc.option.compiler.coverage" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.includePath.146866900" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
<listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
</option>
<option id="com.qnx.qcc.option.compiler.security.733048683" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.compiler.defines.252268326" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
<listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
<listOptionValue builtIn="false" value="PERF_TEST"/>
<listOptionValue builtIn="false" value="HAVE_NEON"/>
<listOptionValue builtIn="false" value="SINC_LOWER_QUALITY"/>
<listOptionValue builtIn="false" value="HAVE_RARCH_MAIN_IMPLEMENTATION"/>
<listOptionValue builtIn="false" value="HAVE_VID_CONTEXT"/>
<listOptionValue builtIn="false" value="HAVE_FBO"/>
<listOptionValue builtIn="false" value="HAVE_GRIFFIN"/>
<listOptionValue builtIn="false" value="__LIBRETRO__"/>
<listOptionValue builtIn="false" value="HAVE_DYNAMIC"/>
<listOptionValue builtIn="false" value="HAVE_ZLIB"/>
<listOptionValue builtIn="false" value="__BLACKBERRY_QNX__"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES"/>
<listOptionValue builtIn="false" value="PACKAGE_VERSION=\&quot;0.9.8.4\&quot;"/>
<listOptionValue builtIn="false" value="HAVE_OPENGLES2"/>
<listOptionValue builtIn="false" value="HAVE_SINC"/>
<listOptionValue builtIn="false" value="HAVE_NULLINPUT"/>
<listOptionValue builtIn="false" value="HAVE_AL"/>
<listOptionValue builtIn="false" value="HAVE_THREADS"/>
<listOptionValue builtIn="false" value="WANT_MINIZ"/>
<listOptionValue builtIn="false" value="HAVE_OVERLAY"/>
<listOptionValue builtIn="false" value="HAVE_GLSL"/>
<listOptionValue builtIn="false" value="USING_GL20"/>
<listOptionValue builtIn="false" value="HAVE_OPENGL"/>
</option>
<option id="com.qnx.qcc.option.compiler.qccoptions.443449954" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<option id="com.qnx.qcc.option.compiler.ccoptions.333531926" name="Compiler Options (-Wc,)" superClass="com.qnx.qcc.option.compiler.ccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-std=gnu99"/>
</option>
<inputType id="com.qnx.qcc.inputType.compiler.1800311584" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.1877634243" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<option id="com.qnx.qcc.option.assembler.debug.166061824" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.assembler.2029110252" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.551801963" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.debug.1904146116" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.coverage.1717304216" name="Build for Code Coverage (-ftest-coverage -fprofile-arcs -p)" superClass="com.qnx.qcc.option.linker.coverage" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.libraries.1222510627" name="Libraries (-l)" superClass="com.qnx.qcc.option.linker.libraries" valueType="libs">
<listOptionValue builtIn="false" value="bps"/>
<listOptionValue builtIn="false" value="OpenAL"/>
<listOptionValue builtIn="false" value="png"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="screen"/>
<listOptionValue builtIn="false" value="EGL"/>
<listOptionValue builtIn="false" value="GLESv2"/>
<listOptionValue builtIn="false" value="freetype"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="com.qnx.qcc.option.linker.libraryPaths.1867628370" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
<listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
</option>
<option id="com.qnx.qcc.option.linker.security.1635799651" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
<inputType id="com.qnx.qcc.inputType.linker.1740916343" superClass="com.qnx.qcc.inputType.linker">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.qnx.qcc.tool.archiver.589338426" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
</folderInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566.367412769" name="sinc_neon.S" rcbsApplicability="disable" resourcePath="src/sinc_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1877634243.2014259569">
<tool id="com.qnx.qcc.tool.assembler.1877634243.2014259569" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1877634243">
<option id="com.qnx.qcc.option.assembler.qccoptions.1296125330" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
<listOptionValue builtIn="false" value="-mfpu=neon"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.224314631" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<fileInfo id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566.2112190090" name="utils_neon.S" rcbsApplicability="disable" resourcePath="src/utils_neon.S" toolsToInvoke="com.qnx.qcc.tool.assembler.1877634243.1850393434">
<tool id="com.qnx.qcc.tool.assembler.1877634243.1850393434" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler.1877634243">
<option id="com.qnx.qcc.option.assembler.qccoptions.943615142" name="QCC Options" superClass="com.qnx.qcc.option.assembler.qccoptions" valueType="stringList">
<listOptionValue builtIn="false" value="-mfpu=neon"/>
<listOptionValue builtIn="false" value="-mcpu=cortex-a9"/>
</option>
<inputType id="com.qnx.qcc.inputType.assembler.2055061214" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
</fileInfo>
<sourceEntries>
<entry excluding="main.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="CubeRotate.null.476443474" name="CubeRotate"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="refreshScope" versionNumber="1">
<resource resourceType="PROJECT" workspacePath="/RetroArch"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.491517832">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.debug.1423528231">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.1740368212">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.debug.507133694">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.coverage.1511241566">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.release.237026123">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.coverage.511003583">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
</scannerConfigBuildInfo>
</storageModule>
</cproject>

93
playbook/.project Normal file
View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>RetroArch</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/CubeRotate/Device-Release}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.qnx.tools.bbt.xml.core.bbtXMLValidationBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>com.qnx.tools.ide.bbt.core.bbtnature</nature>
</natures>
<linkedResources>
<link>
<name>src/griffin.c</name>
<type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/console/griffin/griffin.c</locationURI>
</link>
<link>
<name>src/sinc_neon.S</name>
<type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/audio/sinc_neon.S</locationURI>
</link>
<link>
<name>src/utils_neon.S</name>
<type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/audio/utils_neon.S</locationURI>
</link>
</linkedResources>
</projectDescription>

View File

@ -0,0 +1,66 @@
#Sun Feb 24 21:20:16 CET 2013
eclipse.preferences.version=1
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false}
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
org.eclipse.cdt.codan.checkers.errreturnvalue.params={}
org.eclipse.cdt.codan.checkers.noreturn=Error
org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false}
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={}
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={}
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false}
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={}
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={}
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={}
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false}
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false}
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true}
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")}
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}

110
playbook/bar-descriptor.xml Normal file
View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<qnx xmlns="http://www.qnx.com/schemas/application/1.0">
<!-- BlackBerry Tablet OS application descriptor file.
Specifies parameters for identifying, installing, and launching native applications on BlackBerry Tablet OS.
-->
<!-- A universally unique application identifier. Must be unique across all BlackBerry Tablet OS applications.
Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
<id>com.RetroArch</id>
<!-- The name that is displayed in the BlackBerry Tablet OS application installer.
May have multiple values for each language. See samples or xsd schema file. Optional. -->
<name>RetroArch</name>
<!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade.
Values can also be 1-part or 2-part. It is not necessary to have a 3-part value.
An updated version of application must have a versionNumber value higher than the previous version. Required. -->
<versionNumber>1.0.0</versionNumber>
<!-- Fourth digit segment of the package version. First three segments are taken from the
<versionNumber> element. Must be an integer from 0 to 2^16-1 -->
<buildId>1</buildId>
<!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users. Optional. -->
<versionLabel>"v0.9.8.4"</versionLabel>
<!-- Description, displayed in the BlackBerry Tablet OS application installer.
May have multiple values for each language. See samples or xsd schema file. Optional. -->
<description>Multi-emulator/multi-game system application</description>
<!-- Copyright information. Optional. -->
<!-- <copyright></copyright> -->
<!-- Name of author which is used for signing. Must match the developer name of your development certificate. -->
<author>Example Inc.</author>
<!-- Unique author ID assigned by signing authority. Required if using debug tokens. -->
<!-- <authorId>ABC1234YjsnUk235h</authorId> -->
<initialWindow>
<systemChrome>none</systemChrome>
<transparent>false</transparent>
</initialWindow>
<!-- The category where the application appears. Either core.games or core.media. -->
<category>core.games</category>
<asset path="icon.png">icon.png</asset>
<asset path="retroarch.cfg">retroarch.cfg</asset>
<asset path="test.so">lib/test.so</asset>
<!-- <asset path="LICENSE">LICENSE</asset> -->
<!-- <asset path="NOTICE">NOTICE</asset> -->
<configuration id="com.qnx.qcc.configuration.exe.debug.507133694" name="Device-Debug">
<platformArchitecture>armle-v7</platformArchitecture>
<asset path="Device-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.release.237026123" name="Device-Release">
<platformArchitecture>armle-v7</platformArchitecture>
<asset path="Device-Release/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.profile.491517832" name="Device-Profile">
<platformArchitecture>armle-v7</platformArchitecture>
<asset path="Device-Profile/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.profile.coverage.511003583" name="Device-Coverage">
<platformArchitecture>armle-v7</platformArchitecture>
<asset path="Device-Coverage/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.debug.1423528231" name="Simulator-Debug">
<platformArchitecture>x86</platformArchitecture>
<asset path="Simulator-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.profile.1740368212" name="Simulator-Profile">
<platformArchitecture>x86</platformArchitecture>
<asset path="Simulator-Profile/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<configuration id="com.qnx.qcc.configuration.exe.profile.coverage.1511241566" name="Simulator-Coverage">
<platformArchitecture>x86</platformArchitecture>
<asset path="Simulator-Coverage/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
</configuration>
<!-- The icon for the application, which should be 86x86. -->
<icon>
<image>icon.png</image>
</icon>
<!-- The splash screen that will appear when your application is launching. Should be 1024x600. -->
<!-- <splashscreen></splashscreen> -->
<!-- Request permission to execute native code. Required for native applications. -->
<action system="true">run_native</action>
<!-- The permissions requested by your application. -->
<action>access_shared</action>
<!-- <action>record_audio</action> -->
<!-- <action>read_geolocation</action> -->
<!-- <action>use_camera</action> -->
<!-- <action>access_internet</action> -->
<!-- <action>play_audio</action> -->
<!-- <action>post_notification</action> -->
<!-- <action>set_audio_volume</action> -->
<!-- <action>read_device_identifying_information</action> -->
<!-- Ensure that shared libraries in the package are found at run-time. -->
<env var="LD_LIBRARY_PATH" value="app/native/lib"/>
</qnx>

BIN
playbook/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

1006
playbook/src/bbutil.c Normal file

File diff suppressed because it is too large Load Diff

132
playbook/src/bbutil.h Normal file
View File

@ -0,0 +1,132 @@
/*
* Copyright (c) 2011-2012 Research In Motion Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _UTILITY_H_INCLUDED
#define _UTILITY_H_INCLUDED
#include <EGL/egl.h>
#include <screen/screen.h>
#include <sys/platform.h>
extern EGLDisplay egl_disp;
extern EGLSurface egl_surf;
typedef struct font_t font_t;
#define BBUTIL_DEFAULT_FONT "/usr/fonts/font_repository/monotype/arial.ttf"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Initializes EGL
*
* @param libscreen context that will be used for EGL setup
* @return EXIT_SUCCESS if initialization succeeded otherwise EXIT_FAILURE
*/
int bbutil_init_egl(screen_context_t ctx);
/**
* Terminates EGL
*/
void bbutil_terminate();
/**
* Swaps default bbutil window surface to the screen
*/
void bbutil_swap();
/**
* Loads the font from the specified font file.
* NOTE: should be called after a successful return from bbutil_init() or bbutil_init_egl() call
* @param font_file string indicating the absolute path of the font file
* @param point_size used for glyph generation
* @param dpi used for glyph generation
* @return pointer to font_t structure on success or NULL on failure
*/
font_t* bbutil_load_font(const char* font_file, int point_size, int dpi);
/**
* Destroys the passed font
* @param font to be destroyed
*/
void bbutil_destroy_font(font_t* font);
/**
* Renders the specified message using current font starting from the specified
* bottom left coordinates.
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param font to use for rendering
* @param msg the message to display
* @param x, y position of the bottom-left corner of text string in world coordinate space
* @param rgba color for the text to render with
*/
void bbutil_render_text(font_t* font, const char* msg, float x, float y, float r, float g, float b, float a);
/**
* Returns the non-scaled width and height of a string
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param font to use for measurement of a string size
* @param msg the message to get the size of
* @param return pointer for width of a string
* @param return pointer for height of a string
*/
void bbutil_measure_text(font_t* font, const char* msg, float* width, float* height);
/**
* Creates and loads a texture from a png file
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param filename path to texture png
* @param return width of texture
* @param return height of texture
* @param return gl texture handle
* @return EXIT_SUCCESS if texture loading succeeded otherwise EXIT_FAILURE
*/
int bbutil_load_texture(const char* filename, int* width, int* height, float* tex_x, float* tex_y, unsigned int* tex);
/**
* Returns dpi for a given screen
*
* @param ctx path libscreen context that corresponds to display of interest
* @return dpi for a given screen
*/
int bbutil_calculate_dpi(screen_context_t ctx);
/**
* Rotates the screen to a given angle
*
* @param angle to rotate screen surface to, must by 0, 90, 180, or 270
* @return EXIT_SUCCESS if texture loading succeeded otherwise EXIT_FAILURE
*/
int bbutil_rotate_screen_surface(int angle);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -46,13 +46,6 @@
#include "msvc/msvc_compat.h" #include "msvc/msvc_compat.h"
#endif #endif
#if defined(__APPLE__) && !defined(IOS)
#include "SDL.h"
// OSX seems to really need -lSDLmain,
// so we include SDL.h here so it can hack our main.
// We want to use -mconsole in Win32, so we need main().
#endif
#if defined(RARCH_CONSOLE) && !defined(RARCH_PERFORMANCE_MODE) #if defined(RARCH_CONSOLE) && !defined(RARCH_PERFORMANCE_MODE)
#define RARCH_PERFORMANCE_MODE #define RARCH_PERFORMANCE_MODE
#endif #endif
@ -576,10 +569,8 @@ static int16_t input_state(unsigned port, unsigned device, unsigned index, unsig
#ifdef _WIN32 #ifdef _WIN32
#define RARCH_DEFAULT_CONF_PATH_STR "\n\t\tDefaults to retroarch.cfg in same directory as retroarch.exe." #define RARCH_DEFAULT_CONF_PATH_STR "\n\t\tDefaults to retroarch.cfg in same directory as retroarch.exe."
#elif defined(__APPLE__)
#define RARCH_DEFAULT_CONF_PATH_STR " Defaults to $HOME/.retroarch.cfg."
#else #else
#define RARCH_DEFAULT_CONF_PATH_STR " Defaults to $XDG_CONFIG_HOME/retroarch/retroarch.cfg,\n\t\tor $HOME/.retroarch.cfg, if $XDG_CONFIG_HOME is not defined." #define RARCH_DEFAULT_CONF_PATH_STR "\n\t\tBy default looks for config in $XDG_CONFIG_HOME/retroarch/retroarch.cfg,\n\t\t$HOME/.config/retroarch/retroarch.cfg,\n\t\tand $HOME/.retroarch.cfg."
#endif #endif
#include "config.features.h" #include "config.features.h"
@ -646,7 +637,10 @@ static void print_compiler(FILE *file)
static void print_help(void) static void print_help(void)
{ {
puts("==================================================================="); puts("===================================================================");
#ifndef __BLACKBERRY_QNX__
/* To get around error 'too many decimal points in number - expected ')' before numeric constant */
puts("RetroArch: Frontend for libretro -- v" PACKAGE_VERSION " --"); puts("RetroArch: Frontend for libretro -- v" PACKAGE_VERSION " --");
#endif
print_compiler(stdout); print_compiler(stdout);
puts("==================================================================="); puts("===================================================================");
puts("Usage: retroarch [rom file] [options...]"); puts("Usage: retroarch [rom file] [options...]");
@ -2781,12 +2775,6 @@ error:
return 1; return 1;
} }
static inline bool rarch_main_paused(void)
{
return g_extern.is_paused && !g_extern.is_oneshot;
}
bool rarch_main_iterate(void) bool rarch_main_iterate(void)
{ {
#ifdef HAVE_DYLIB #ifdef HAVE_DYLIB
@ -2928,6 +2916,7 @@ void rarch_main_deinit(void)
} }
#define MAX_ARGS 32 #define MAX_ARGS 32
int rarch_main_init_wrap(const struct rarch_main_wrap *args) int rarch_main_init_wrap(const struct rarch_main_wrap *args)
{ {
if (g_extern.main_is_init) if (g_extern.main_is_init)
@ -2987,46 +2976,18 @@ int rarch_main_init_wrap(const struct rarch_main_wrap *args)
return ret; return ret;
} }
#ifndef HAVE_RARCH_MAIN_WRAP bool rarch_main_idle_iterate(void)
static bool rarch_main_idle_iterate(void)
{ {
#ifdef HAVE_COMMAND #ifdef HAVE_COMMAND
if (driver.command) if (driver.command)
rarch_cmd_pre_frame(driver.command); rarch_cmd_pre_frame(driver.command);
#endif #endif
if (input_key_pressed_func(RARCH_QUIT_KEY) || if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func())
!video_alive_func())
return false; return false;
do_state_checks(); do_state_checks();
input_poll(); input_poll();
rarch_sleep(10); rarch_sleep(10);
return true; return true;
} }
int rarch_main(int argc, char *argv[])
{
int init_ret;
if ((init_ret = rarch_main_init(argc, argv))) return init_ret;
rarch_init_msg_queue();
while (rarch_main_paused() ? rarch_main_idle_iterate() : rarch_main_iterate());
rarch_main_deinit();
rarch_deinit_msg_queue();
#ifdef PERF_TEST
rarch_perf_log();
#endif
rarch_main_clear_state();
return 0;
}
// Consoles use the higher level API.
int main(int argc, char *argv[])
{
return rarch_main(argc, argv);
}
#endif

View File

@ -40,6 +40,11 @@
# Video driver to use. "gl", "xvideo", "sdl" # Video driver to use. "gl", "xvideo", "sdl"
# video_driver = "gl" # video_driver = "gl"
# Which OpenGL context implementation to use.
# Possible ones for desktop are: glx, x-egl, kms-egl, sdl-gl, wgl.
# By default, tries to use first suitable driver.
# video_gl_context =
# Windowed xscale and yscale # Windowed xscale and yscale
# (Real x res: base_size * xscale * aspect_ratio, real y res: base_size * yscale) # (Real x res: base_size * xscale * aspect_ratio, real y res: base_size * yscale)
# video_xscale = 3.0 # video_xscale = 3.0

View File

@ -331,36 +331,37 @@ static config_file_t *open_default_config_file(void)
conf = config_file_new(conf_path); conf = config_file_new(conf_path);
} }
} }
#elif defined(__APPLE__)
char conf_path[PATH_MAX];
const char *home = getenv("HOME");
if (home)
{
snprintf(conf_path, sizeof(conf_path), "%s/.retroarch.cfg", home);
conf = config_file_new(conf_path);
}
if (!conf)
conf = config_file_new("/etc/retroarch.cfg");
#elif !defined(__CELLOS_LV2__) && !defined(_XBOX) #elif !defined(__CELLOS_LV2__) && !defined(_XBOX)
char conf_path[PATH_MAX]; char conf_path[PATH_MAX];
const char *xdg = getenv("XDG_CONFIG_HOME"); const char *xdg = getenv("XDG_CONFIG_HOME");
if (!xdg)
RARCH_WARN("XDG_CONFIG_HOME is not defined. Will look for config in $HOME/.retroarch.cfg ...\n");
const char *home = getenv("HOME"); const char *home = getenv("HOME");
// XDG_CONFIG_HOME falls back to $HOME/.config.
if (xdg) if (xdg)
{
snprintf(conf_path, sizeof(conf_path), "%s/retroarch/retroarch.cfg", xdg); snprintf(conf_path, sizeof(conf_path), "%s/retroarch/retroarch.cfg", xdg);
else if (home)
snprintf(conf_path, sizeof(conf_path), "%s/.config/retroarch/retroarch.cfg", home);
if (xdg || home)
{
RARCH_LOG("Looking for config in: \"%s\".\n", conf_path);
conf = config_file_new(conf_path); conf = config_file_new(conf_path);
} }
else if (home)
// Fallback to $HOME/.retroarch.cfg.
if (!conf && home)
{ {
snprintf(conf_path, sizeof(conf_path), "%s/.retroarch.cfg", home); snprintf(conf_path, sizeof(conf_path), "%s/.retroarch.cfg", home);
RARCH_LOG("Looking for config in: \"%s\".\n", conf_path);
conf = config_file_new(conf_path); conf = config_file_new(conf_path);
} }
// Try this as a last chance...
// Try this as a last chance ...
if (!conf) if (!conf)
{
conf = config_file_new("/etc/retroarch.cfg"); conf = config_file_new("/etc/retroarch.cfg");
RARCH_LOG("Looking for config in: \"/etc/retroarch.cfg\".\n");
}
#endif #endif
return conf; return conf;
@ -650,6 +651,7 @@ bool config_load_file(const char *path)
CONFIG_GET_STRING(audio.resampler, "audio_resampler"); CONFIG_GET_STRING(audio.resampler, "audio_resampler");
CONFIG_GET_STRING(video.driver, "video_driver"); CONFIG_GET_STRING(video.driver, "video_driver");
CONFIG_GET_STRING(video.gl_context, "video_gl_context");
CONFIG_GET_STRING(audio.driver, "audio_driver"); CONFIG_GET_STRING(audio.driver, "audio_driver");
CONFIG_GET_PATH(audio.dsp_plugin, "audio_dsp_plugin"); CONFIG_GET_PATH(audio.dsp_plugin, "audio_dsp_plugin");
CONFIG_GET_STRING(input.driver, "input_driver"); CONFIG_GET_STRING(input.driver, "input_driver");

View File

@ -1,5 +1,11 @@
# PS1 Gamepad Games ;
"ps1....Iru!*" mednafen-psx gamepad ;
# PS1 Dualanalog Games ; # PS1 Dualanalog Games ;
"ps1.007 - Demain ne Meurt Jamais" mednafen-psx dualanalog ;
"ps1.007 - Le Monde Ne Suffit Pas" mednafen-psx dualanalog ;
"ps1.007 Racing*" mednafen-psx dualanalog ; "ps1.007 Racing*" mednafen-psx dualanalog ;
"ps1.007 - The World Is Not Enough*" mednafen-psx dualanalog ; "ps1.007 - The World Is Not Enough*" mednafen-psx dualanalog ;
"ps1.007 - Tomorrow Never Dies*" mednafen-psx dualanalog ; "ps1.007 - Tomorrow Never Dies*" mednafen-psx dualanalog ;