diff --git a/packages/emulation/libretro-mupen64plus/package.mk b/packages/emulation/libretro-mupen64plus/package.mk new file mode 100644 index 0000000000..e794caa207 --- /dev/null +++ b/packages/emulation/libretro-mupen64plus/package.mk @@ -0,0 +1,65 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC 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 Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC 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 LibreELEC. If not, see . +################################################################################ + +PKG_NAME="libretro-mupen64plus" +PKG_VERSION="a29227b" +PKG_ARCH="any" +PKG_LICENSE="GPLv2" +PKG_SITE="https://github.com/libretro/mupen64plus-libretro" +PKG_URL="https://github.com/libretro/mupen64plus-libretro/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="mupen64plus-libretro-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain kodi-platform" +PKG_SECTION="emulation" +PKG_SHORTDESC="game.libretro.mupen64plus: Mupen64Plus for Kodi" +PKG_LONGDESC="game.libretro.mupen64plus: Mupen64Plus for Kodi" +PKG_AUTORECONF="no" +PKG_IS_ADDON="no" + +PKG_LIBNAME="mupen64plus_libretro.so" +PKG_LIBPATH="$PKG_LIBNAME" +PKG_LIBVAR="MUPEN64PLUS_LIB" + +make_target() { + case $PROJECT in + RPi) + make platform=rpi + ;; + RPi2) + make platform=rpi2 + ;; + imx6) + make platform=imx6 + ;; + WeTek_Play) + make platform=armv7-neon-gles-cortex-a9 + ;; + Odroid_C2|WeTek_Hub|WeTek_Play_2) + make platform=aarch64 + ;; + Generic) + make WITH_DYNAREC=x86_64 + ;; + esac +} + +makeinstall_target() { + mkdir -p $INSTALL/usr/lib + cp $PKG_LIBPATH $INSTALL/usr/lib/$PKG_LIBNAME + echo "set($PKG_LIBVAR $INSTALL/usr/lib/$PKG_LIBNAME)" > $SYSROOT_PREFIX/usr/$PKG_NAME-config.cmake +} + diff --git a/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0003-revert-47e12a3.patch b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0003-revert-47e12a3.patch new file mode 100644 index 0000000000..f0550571ad --- /dev/null +++ b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0003-revert-47e12a3.patch @@ -0,0 +1,104 @@ +diff -Naur a/libretro-common/libco/amd64.c b/libretro-common/libco/amd64.c +--- a/libretro-common/libco/amd64.c 2016-05-08 08:20:29.000000000 -0700 ++++ b/libretro-common/libco/amd64.c 2016-05-10 14:58:50.221637488 -0700 +@@ -5,7 +5,7 @@ + */ + + #define LIBCO_C +-#include ++#include "libco.h" + #include + #include + +@@ -21,6 +21,8 @@ + static thread_local cothread_t co_active_handle = 0; + #ifndef CO_USE_INLINE_ASM + static void (*co_swap)(cothread_t, cothread_t) = 0; ++#else ++void co_swap(cothread_t, cothread_t); + #endif + + #ifdef _WIN32 +@@ -81,7 +83,7 @@ + sizeof(co_swap_function), PAGE_EXECUTE_READWRITE, &old_privileges); + } + #else +-/* ABI: SystemV */ ++//ABI: SystemV + #ifndef CO_USE_INLINE_ASM + static unsigned char co_swap_function[] = { + 0x48, 0x89, 0x26, /* mov [rsi],rsp */ +@@ -113,7 +115,29 @@ + mprotect((void*)base, size, PROT_READ | PROT_WRITE | PROT_EXEC); + } + #else +-void co_init(void) {} ++__asm__( ++".intel_syntax noprefix\n" ++".globl co_swap \n" ++"co_swap: \n" ++".globl _co_swap \n" /* OSX ABI is different from Linux. */ ++"_co_swap: \n" ++"mov [rsi],rsp \n" ++"mov [rsi+0x08],rbp \n" ++"mov [rsi+0x10],rbx \n" ++"mov [rsi+0x18],r12 \n" ++"mov [rsi+0x20],r13 \n" ++"mov [rsi+0x28],r14 \n" ++"mov [rsi+0x30],r15 \n" ++"mov rsp,[rdi] \n" ++"mov rbp,[rdi+0x08] \n" ++"mov rbx,[rdi+0x10] \n" ++"mov r12,[rdi+0x18] \n" ++"mov r13,[rdi+0x20] \n" ++"mov r14,[rdi+0x28] \n" ++"mov r15,[rdi+0x30] \n" ++"ret \n" ++".att_syntax \n" ++); + #endif + #endif + +@@ -162,42 +186,11 @@ + free(handle); + } + +-#ifndef CO_USE_INLINE_ASM + void co_switch(cothread_t handle) + { + register cothread_t co_previous_handle = co_active_handle; + co_swap(co_active_handle = handle, co_previous_handle); + } +-#else +-#ifdef __APPLE__ +-#define ASM_PREFIX "_" +-#else +-#define ASM_PREFIX "" +-#endif +-__asm__( +-".intel_syntax noprefix \n" +-".globl " ASM_PREFIX "co_switch \n" +-ASM_PREFIX "co_switch: \n" +-"mov rsi, [rip+" ASM_PREFIX "co_active_handle]\n" +-"mov [rsi],rsp \n" +-"mov [rsi+0x08],rbp \n" +-"mov [rsi+0x10],rbx \n" +-"mov [rsi+0x18],r12 \n" +-"mov [rsi+0x20],r13 \n" +-"mov [rsi+0x28],r14 \n" +-"mov [rsi+0x30],r15 \n" +-"mov [rip+" ASM_PREFIX "co_active_handle], rdi\n" +-"mov rsp,[rdi] \n" +-"mov rbp,[rdi+0x08] \n" +-"mov rbx,[rdi+0x10] \n" +-"mov r12,[rdi+0x18] \n" +-"mov r13,[rdi+0x20] \n" +-"mov r14,[rdi+0x28] \n" +-"mov r15,[rdi+0x30] \n" +-"ret \n" +-".att_syntax \n" +-); +-#endif + + #ifdef __cplusplus + } diff --git a/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0004-aarch64-support.patch b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0004-aarch64-support.patch new file mode 100644 index 0000000000..3ad7299d8f --- /dev/null +++ b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-0004-aarch64-support.patch @@ -0,0 +1,21 @@ +diff -Naur a/Makefile b/Makefile +--- a/Makefile 2016-05-08 08:20:29.000000000 -0700 ++++ b/Makefile 2016-05-10 15:08:05.548597094 -0700 +@@ -304,6 +304,17 @@ + CPUFLAGS += -mfloat-abi=hard + endif + ++# aarch64 ++else ifneq (,$(findstring aarch64,$(platform))) ++ TARGET := $(TARGET_NAME)_libretro.so ++ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined ++ fpic := -fPIC ++# CPUFLAGS += -DNO_ASM -DARM -D__arm__ -DARM_ASM -DNOSSE ++ WITH_DYNAREC=arm64 ++# PLATCFLAGS += -DARM ++ GLES = 1 ++ GL_LIB := -lGLESv2 ++ + # emscripten + else ifeq ($(platform), emscripten) + TARGET := $(TARGET_NAME)_libretro_emscripten.bc diff --git a/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-01-use-c-buttons-without-modifier-key.patch b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-01-use-c-buttons-without-modifier-key.patch new file mode 100644 index 0000000000..0834a4ea51 --- /dev/null +++ b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-01-use-c-buttons-without-modifier-key.patch @@ -0,0 +1,73 @@ +From 717b800f4e7d2f69da040ffa6312549bd3b44349 Mon Sep 17 00:00:00 2001 +From: Wolfgang Haupt +Date: Sun, 13 Sep 2015 17:29:00 +0200 +Subject: [PATCH 1/2] use c-buttons without modifier key + +--- + .../src/plugin/emulate_game_controller_via_libretro.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c b/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c +index e08af9d..ee13999 100644 +--- a/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c ++++ b/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c +@@ -85,6 +85,8 @@ static void inputGetKeys_default_descriptor(void) + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R-Trigger" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "(C-Up)" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "(C-Left)" }, ++ { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "(C-Right)" }, ++ { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "(C-Down)" }, + + { 0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_X, "Control Stick X" }, + { 0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_Y, "Control Stick Y" }, +@@ -105,6 +107,8 @@ static void inputGetKeys_default_descriptor(void) + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R-Trigger" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "(C-Up)" }, + { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "(C-Left)" }, ++ { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "(C-Right)" }, ++ { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "(C-Down)" }, + + { 1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_X, "Control Stick X" }, + { 1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_Y, "Control Stick Y" }, +@@ -125,6 +129,8 @@ static void inputGetKeys_default_descriptor(void) + { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R-Trigger" }, + { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "(C-Up)" }, + { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "(C-Left)" }, ++ { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "(C-Right)" }, ++ { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "(C-Down)" }, + + { 2, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_X, "Control Stick X" }, + { 2, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_Y, "Control Stick Y" }, +@@ -145,6 +151,8 @@ static void inputGetKeys_default_descriptor(void) + { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R-Trigger" }, + { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "(C-Up)" }, + { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "(C-Left)" }, ++ { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "(C-Right)" }, ++ { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "(C-Down)" }, + + { 3, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_X, "Control Stick X" }, + { 3, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT , RETRO_DEVICE_ID_ANALOG_Y, "Control Stick Y" }, +@@ -716,7 +724,7 @@ static void inputGetKeys_default( int Control, BUTTONS *Keys ) + + Keys->R_TRIG = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R); + +- hold_cstick = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); ++ //hold_cstick = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); + if (hold_cstick) + { + Keys->R_CBUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); +@@ -730,6 +738,11 @@ static void inputGetKeys_default( int Control, BUTTONS *Keys ) + Keys->A_BUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); + Keys->L_TRIG = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L); + Keys->Z_TRIG = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2); ++ ++ Keys->R_CBUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); ++ Keys->L_CBUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); ++ Keys->D_CBUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3); ++ Keys->U_CBUTTON = input_cb(Control, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); + } + + +-- +2.3.2 (Apple Git-55) + diff --git a/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-02-remove-specialization-of-controller-map.patch b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-02-remove-specialization-of-controller-map.patch new file mode 100644 index 0000000000..8f162ee6b6 --- /dev/null +++ b/packages/emulation/libretro-mupen64plus/patches/libretro-mupen64plus-02-remove-specialization-of-controller-map.patch @@ -0,0 +1,186 @@ +From cabbb38de353050d2257097e54eb1610ae6e4fe9 Mon Sep 17 00:00:00 2001 +From: Charlie Marshall +Date: Mon, 28 Dec 2015 17:59:24 +0000 +Subject: [PATCH] Update emulate_game_controller_via_libretro.c + +--- + .../plugin/emulate_game_controller_via_libretro.c | 166 --------------------- + 1 file changed, 166 deletions(-) + +diff --git a/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c b/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c +index 823870e..b3b992a 100644 +--- a/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c ++++ b/mupen64plus-core/src/plugin/emulate_game_controller_via_libretro.c +@@ -766,172 +766,6 @@ void inputInitiateCallback(const char *headername) + return; + } + +- if ( +- (!strcmp(headername, "KILLER INSTINCT GOLD")) || +- (!strcmp(headername, "Killer Instinct Gold")) || +- (!strcmp(headername, "CLAYFIGHTER 63")) || +- (!strcmp(headername, "Clayfighter SC")) || +- (!strcmp(headername, "RAKUGAKIDS"))) +- { +- static struct retro_input_descriptor desc[] = { +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A [Low Kick]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "C-Down [Medium Kick]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Left [Medium Punch]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B [Low Punch]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "C-Up [Fierce Punch]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "C-Right [Fierce Kick]" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Z-Trigger" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "R" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A [Low Kick]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "C-Down [Medium Kick]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Left [Medium Punch]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B [Low Punch]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "C-Up [Fierce Punch]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "C-Right [Fierce Kick]" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Z-Trigger" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "R" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A [Low Kick]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "C-Down [Medium Kick]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Left [Medium Punch]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B [Low Punch]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "C-Up [Fierce Punch]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "C-Right [Fierce Kick]" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Z-Trigger" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "R" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A [Low Kick]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "C-Down [Medium Kick]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Left [Medium Punch]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B [Low Punch]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "C-Up [Fierce Punch]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "C-Right [Fierce Kick]" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Z-Trigger" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "R" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 0 }, +- }; +- environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); +- getKeys = inputGetKeys_6ButtonFighters; +- } +- else if (!strcmp(headername, "BIOFREAKS")) +- getKeys = inputGetKeys_Biofreaks; +- else if (!strcmp(headername, "DARK RIFT")) +- getKeys = inputGetKeys_DarkRift; +- else if (!strcmp(headername, "XENAWARRIORPRINCESS")) +- getKeys = inputGetKeys_XENA; +- else if (!strcmp(headername, "RIDGE RACER 64")) +- { +- static struct retro_input_descriptor desc[] = { +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Up" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Up" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Up" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 2, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "C-Up" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "B" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Change Controls" }, +- { 3, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, +- +- { 0 }, +- }; +- environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); +- getKeys = inputGetKeys_RR64; +- } +- else if ((!strcmp(headername, "I S S 64")) || +- (!strcmp(headername, "J WORLD SOCCER3")) || +- (!strcmp(headername, "J.WORLD CUP 98")) || +- (!strcmp(headername, "I.S.S.98")) || +- (!strcmp(headername, "PERFECT STRIKER2")) || +- (!strcmp(headername, "I.S.S.2000"))) +- getKeys = inputGetKeys_ISS; +- else if (!strcmp(headername, "MACE")) +- getKeys = inputGetKeys_Mace; +- else if ((!strcmp(headername, "MISCHIEF MAKERS")) || +- (!strcmp(headername, "TROUBLE MAKERS"))) +- getKeys = inputGetKeys_MischiefMakers; +- else if ((!strcmp(headername, "MortalKombatTrilogy")) || +- (!strcmp(headername, "WAR GODS"))) +- getKeys = inputGetKeys_MKTrilogy; +- else if (!strcmp(headername, "MORTAL KOMBAT 4")) +- getKeys = inputGetKeys_MK4; +- else if (!strcmp(headername, "MK_MYTHOLOGIES")) +- getKeys = inputGetKeys_MKMythologies; +- else if ((!strcmp(headername, "RAMPAGE")) || +- (!strcmp(headername, "RAMPAGE2"))) +- getKeys = inputGetKeys_Rampage; +- else if ((!strcmp(headername, "READY 2 RUMBLE")) || +- (!strcmp(headername, "Ready to Rumble"))) +- getKeys = inputGetKeys_Ready2Rumble; +- else if (!strcmp(headername, "Wipeout 64")) +- getKeys = inputGetKeys_Wipeout64; +- else if ((!strcmp(headername, "WRESTLEMANIA 2000")) || +- (!strcmp(headername, "WWF No Mercy"))) +- getKeys = inputGetKeys_WWF; +- + if (getKeys == &inputGetKeys_default) + return; +