mirror of
https://github.com/libretro/mame2003-libretro.git
synced 2025-02-17 09:08:08 +00:00
consolidate mame2003 core files
This commit is contained in:
parent
ad1d795839
commit
6012d5564c
@ -19,8 +19,6 @@ COREDEFINES += -D__LIBRETRO__ -DPI=3.1415927 -DM_PI=3.1415927
|
||||
|
||||
SOURCES_C := \
|
||||
$(CORE_DIR)/mame2003/mame2003.c \
|
||||
$(CORE_DIR)/mame2003/keyboard.c \
|
||||
$(CORE_DIR)/mame2003/joystick.c \
|
||||
$(CORE_DIR)/mame2003/video.c \
|
||||
$(CORE_DIR)/bootstrap.c \
|
||||
$(CORE_DIR)/mame.c \
|
||||
|
@ -1,128 +0,0 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "libretro.h"
|
||||
#include "mame2003.h"
|
||||
#include "input.h"
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keymapping
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#define EMIT_RETRO_PAD(INDEX) \
|
||||
{"RetroPad" #INDEX " Left", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_LEFT, JOYCODE_##INDEX##_LEFT}, \
|
||||
{"RetroPad" #INDEX " Right", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_RIGHT, JOYCODE_##INDEX##_RIGHT}, \
|
||||
{"RetroPad" #INDEX " Up", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_UP, JOYCODE_##INDEX##_UP}, \
|
||||
{"RetroPad" #INDEX " Down", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_DOWN, JOYCODE_##INDEX##_DOWN}, \
|
||||
{"RetroPad" #INDEX " B", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_B, JOYCODE_##INDEX##_BUTTON1}, \
|
||||
{"RetroPad" #INDEX " Y", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_Y, JOYCODE_##INDEX##_BUTTON2}, \
|
||||
{"RetroPad" #INDEX " X", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_X, JOYCODE_##INDEX##_BUTTON3}, \
|
||||
{"RetroPad" #INDEX " A", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_A, JOYCODE_##INDEX##_BUTTON4}, \
|
||||
{"RetroPad" #INDEX " L", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L, JOYCODE_##INDEX##_BUTTON5}, \
|
||||
{"RetroPad" #INDEX " R", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R, JOYCODE_##INDEX##_BUTTON6}, \
|
||||
{"RetroPad" #INDEX " L2", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L2, JOYCODE_##INDEX##_BUTTON7}, \
|
||||
{"RetroPad" #INDEX " R2", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R2, JOYCODE_##INDEX##_BUTTON8}, \
|
||||
{"RetroPad" #INDEX " L3", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L3, JOYCODE_##INDEX##_BUTTON9}, \
|
||||
{"RetroPad" #INDEX " R3", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R3, JOYCODE_##INDEX##_BUTTON10}, \
|
||||
{"RetroPad" #INDEX " Start", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_START, JOYCODE_##INDEX##_START}, \
|
||||
{"RetroPad" #INDEX " Select", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_SELECT, JOYCODE_##INDEX##_SELECT}, \
|
||||
{"RetroMouse" #INDEX " Left Click", ((INDEX - 1) * 18) + 16, JOYCODE_MOUSE_##INDEX##_BUTTON1}, \
|
||||
{"RetroMouse" #INDEX " Right Click", ((INDEX - 1) * 18) + 17, JOYCODE_MOUSE_##INDEX##_BUTTON2}
|
||||
|
||||
struct JoystickInfo jsItems[] =
|
||||
{
|
||||
EMIT_RETRO_PAD(1),
|
||||
EMIT_RETRO_PAD(2),
|
||||
EMIT_RETRO_PAD(3),
|
||||
EMIT_RETRO_PAD(4),
|
||||
{0, 0, 0}
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Joystick & Mouse/Trackball
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
int retroJsState[72];
|
||||
int16_t mouse_x[4];
|
||||
int16_t mouse_y[4];
|
||||
int16_t analogjoy[4][4];
|
||||
|
||||
const struct JoystickInfo *osd_get_joy_list(void)
|
||||
{
|
||||
return jsItems;
|
||||
}
|
||||
|
||||
int osd_is_joy_pressed(int joycode)
|
||||
{
|
||||
return (joycode >= 0) ? retroJsState[joycode] : 0;
|
||||
}
|
||||
|
||||
int osd_is_joystick_axis_code(int joycode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void osd_lightgun_read(int player, int *deltax, int *deltay)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void osd_trak_read(int player, int *deltax, int *deltay)
|
||||
{
|
||||
*deltax = mouse_x[player];
|
||||
*deltay = mouse_y[player];
|
||||
}
|
||||
|
||||
int convert_analog_scale(int input)
|
||||
{
|
||||
static int libretro_analog_range = LIBRETRO_ANALOG_MAX - LIBRETRO_ANALOG_MIN;
|
||||
static int analog_range = ANALOG_MAX - ANALOG_MIN;
|
||||
|
||||
return (input - LIBRETRO_ANALOG_MIN)*analog_range / libretro_analog_range + ANALOG_MIN;
|
||||
}
|
||||
|
||||
void osd_analogjoy_read(int player,int analog_axis[MAX_ANALOG_AXES], InputCode analogjoy_input[MAX_ANALOG_AXES])
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < MAX_ANALOG_AXES; i ++)
|
||||
{
|
||||
if (analogjoy[player][i])
|
||||
analog_axis[i] = convert_analog_scale(analogjoy[player][i]);
|
||||
}
|
||||
|
||||
analogjoy_input[0] = IPT_AD_STICK_X;
|
||||
analogjoy_input[1] = IPT_AD_STICK_Y;
|
||||
}
|
||||
|
||||
void osd_customize_inputport_defaults(struct ipd *defaults)
|
||||
{
|
||||
#if 0
|
||||
unsigned int i = 0;
|
||||
|
||||
for( ; defaults[i].type != IPT_END; ++i)
|
||||
{
|
||||
struct ipd *entry = &defaults[i];
|
||||
|
||||
switch(entry->type)
|
||||
{
|
||||
case (IPT_BUTTON1 | IPF_PLAYER1):
|
||||
fprintf(stderr, "IPT_BUTTON1 | IPF_PLAYER1.\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Label not known.\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// These calibration functions should never actually be used (as long as needs_calibration returns 0 anyway).
|
||||
int osd_joystick_needs_calibration(void) { return 0; }
|
||||
void osd_joystick_start_calibration(void){ }
|
||||
const char *osd_joystick_calibrate_next(void) { return 0; }
|
||||
void osd_joystick_calibrate(void) { }
|
||||
void osd_joystick_end_calibration(void) { }
|
||||
|
||||
|
@ -1,141 +0,0 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "libretro.h"
|
||||
#include "mame2003.h"
|
||||
#include "input.h"
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keyboard
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
extern const struct KeyboardInfo retroKeys[];
|
||||
int retroKeyState[512];
|
||||
|
||||
const struct KeyboardInfo *osd_get_key_list(void)
|
||||
{
|
||||
return retroKeys;
|
||||
}
|
||||
|
||||
int osd_is_key_pressed(int keycode)
|
||||
{
|
||||
return (keycode < 512 && keycode >= 0) ? retroKeyState[keycode] : 0;
|
||||
}
|
||||
|
||||
|
||||
int osd_readkey_unicode(int flush)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keymapping
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
// Unassigned keycodes
|
||||
// KEYCODE_OPENBRACE, KEYCODE_CLOSEBRACE, KEYCODE_BACKSLASH2, KEYCODE_STOP, KEYCODE_LWIN, KEYCODE_RWIN, KEYCODE_DEL_PAD, KEYCODE_PAUSE,
|
||||
|
||||
// The format for each systems key constants is RETROK_$(TAG) and KEYCODE_$(TAG)
|
||||
// EMIT1(TAG): The tag value is the same between libretro and MAME
|
||||
// EMIT2(RTAG, MTAG): The tag value is different between the two
|
||||
// EXITX(TAG): MAME has no equivalent key.
|
||||
|
||||
#define EMIT2(RETRO, KEY) {(char*)#RETRO, RETROK_##RETRO, KEYCODE_##KEY}
|
||||
#define EMIT1(KEY) {(char*)#KEY, RETROK_##KEY, KEYCODE_##KEY}
|
||||
#define EMITX(KEY) {(char*)#KEY, RETROK_##KEY, KEYCODE_OTHER}
|
||||
|
||||
const struct KeyboardInfo retroKeys[] =
|
||||
{
|
||||
EMIT1(BACKSPACE),
|
||||
EMIT1(TAB),
|
||||
EMITX(CLEAR),
|
||||
|
||||
EMIT1(BACKSPACE),
|
||||
EMIT1(TAB),
|
||||
EMITX(CLEAR),
|
||||
EMIT2(RETURN, ENTER),
|
||||
EMITX(PAUSE),
|
||||
EMIT2(ESCAPE, ESC),
|
||||
EMIT1(SPACE),
|
||||
EMITX(EXCLAIM),
|
||||
EMIT2(QUOTEDBL, TILDE),
|
||||
EMITX(HASH),
|
||||
EMITX(DOLLAR),
|
||||
EMITX(AMPERSAND),
|
||||
EMIT1(QUOTE),
|
||||
EMITX(LEFTPAREN),
|
||||
EMITX(RIGHTPAREN),
|
||||
EMIT1(ASTERISK),
|
||||
EMIT2(PLUS, EQUALS),
|
||||
EMIT1(COMMA),
|
||||
EMIT1(MINUS),
|
||||
EMITX(PERIOD),
|
||||
EMIT1(SLASH),
|
||||
|
||||
EMIT1(0), EMIT1(1), EMIT1(2), EMIT1(3), EMIT1(4), EMIT1(5), EMIT1(6), EMIT1(7), EMIT1(8), EMIT1(9),
|
||||
|
||||
EMIT1(COLON),
|
||||
EMITX(SEMICOLON),
|
||||
EMITX(LESS),
|
||||
EMITX(EQUALS),
|
||||
EMITX(GREATER),
|
||||
EMITX(QUESTION),
|
||||
EMITX(AT),
|
||||
EMITX(LEFTBRACKET),
|
||||
EMIT1(BACKSLASH),
|
||||
EMITX(RIGHTBRACKET),
|
||||
EMITX(CARET),
|
||||
EMITX(UNDERSCORE),
|
||||
EMITX(BACKQUOTE),
|
||||
|
||||
EMIT2(a, A), EMIT2(b, B), EMIT2(c, C), EMIT2(d, D), EMIT2(e, E), EMIT2(f, F),
|
||||
EMIT2(g, G), EMIT2(h, H), EMIT2(i, I), EMIT2(j, J), EMIT2(k, K), EMIT2(l, L),
|
||||
EMIT2(m, M), EMIT2(n, N), EMIT2(o, O), EMIT2(p, P), EMIT2(q, Q), EMIT2(r, R),
|
||||
EMIT2(s, S), EMIT2(t, T), EMIT2(u, U), EMIT2(v, V), EMIT2(w, W), EMIT2(x, X),
|
||||
EMIT2(y, Y), EMIT2(z, Z),
|
||||
|
||||
EMIT2(DELETE, DEL),
|
||||
|
||||
EMIT2(KP0, 0_PAD), EMIT2(KP1, 1_PAD), EMIT2(KP2, 2_PAD), EMIT2(KP3, 3_PAD),
|
||||
EMIT2(KP4, 4_PAD), EMIT2(KP5, 5_PAD), EMIT2(KP6, 6_PAD), EMIT2(KP7, 7_PAD),
|
||||
EMIT2(KP8, 8_PAD), EMIT2(KP9, 9_PAD),
|
||||
|
||||
EMITX(KP_PERIOD),
|
||||
EMIT2(KP_DIVIDE, SLASH_PAD),
|
||||
EMITX(KP_MULTIPLY),
|
||||
EMIT2(KP_MINUS, MINUS_PAD),
|
||||
EMIT2(KP_PLUS, PLUS_PAD),
|
||||
EMIT2(KP_ENTER, ENTER_PAD),
|
||||
EMITX(KP_EQUALS),
|
||||
|
||||
EMIT1(UP), EMIT1(DOWN), EMIT1(RIGHT), EMIT1(LEFT),
|
||||
EMIT1(INSERT), EMIT1(HOME), EMIT1(END), EMIT2(PAGEUP, PGUP), EMIT2(PAGEDOWN, PGDN),
|
||||
|
||||
EMIT1(F1), EMIT1(F2), EMIT1(F3), EMIT1(F4), EMIT1(F5), EMIT1(F6),
|
||||
EMIT1(F7), EMIT1(F8), EMIT1(F9), EMIT1(F10), EMIT1(F11), EMIT1(F12),
|
||||
EMITX(F13), EMITX(F14), EMITX(F15),
|
||||
|
||||
EMIT1(NUMLOCK),
|
||||
EMIT1(CAPSLOCK),
|
||||
EMIT2(SCROLLOCK, SCRLOCK),
|
||||
EMIT1(RSHIFT), EMIT1(LSHIFT), EMIT2(RCTRL, RCONTROL), EMIT2(LCTRL, LCONTROL), EMIT1(RALT), EMIT1(LALT),
|
||||
EMITX(RMETA), EMITX(LMETA), EMITX(LSUPER), EMITX(RSUPER),
|
||||
|
||||
EMITX(MODE),
|
||||
EMITX(COMPOSE),
|
||||
|
||||
EMITX(HELP),
|
||||
EMIT2(PRINT, PRTSCR),
|
||||
EMITX(SYSREQ),
|
||||
EMITX(BREAK),
|
||||
EMIT1(MENU),
|
||||
EMITX(POWER),
|
||||
EMITX(EURO),
|
||||
EMITX(UNDO),
|
||||
|
||||
{0, 0, 0}
|
||||
};
|
@ -7,14 +7,19 @@
|
||||
*********************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string/stdstring.h>
|
||||
#include <libretro.h>
|
||||
#include <file_path.h>
|
||||
#include <file/file_path.h>
|
||||
|
||||
#include "mame.h"
|
||||
#include "driver.h"
|
||||
#include "state.h"
|
||||
|
||||
#include "log.h"
|
||||
#include "input.h"
|
||||
#include "inptport.h"
|
||||
#include "fileio.h"
|
||||
#include "controls.h"
|
||||
#include "usrintrf.h"
|
||||
|
||||
/* Part of libretro's API */
|
||||
int gotFrame;
|
||||
@ -787,3 +792,264 @@ bool retro_unserialize(const void * data, size_t size)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keymapping
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#define EMIT_RETRO_PAD(INDEX) \
|
||||
{"RetroPad" #INDEX " Left", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_LEFT, JOYCODE_##INDEX##_LEFT}, \
|
||||
{"RetroPad" #INDEX " Right", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_RIGHT, JOYCODE_##INDEX##_RIGHT}, \
|
||||
{"RetroPad" #INDEX " Up", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_UP, JOYCODE_##INDEX##_UP}, \
|
||||
{"RetroPad" #INDEX " Down", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_DOWN, JOYCODE_##INDEX##_DOWN}, \
|
||||
{"RetroPad" #INDEX " B", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_B, JOYCODE_##INDEX##_BUTTON1}, \
|
||||
{"RetroPad" #INDEX " Y", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_Y, JOYCODE_##INDEX##_BUTTON2}, \
|
||||
{"RetroPad" #INDEX " X", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_X, JOYCODE_##INDEX##_BUTTON3}, \
|
||||
{"RetroPad" #INDEX " A", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_A, JOYCODE_##INDEX##_BUTTON4}, \
|
||||
{"RetroPad" #INDEX " L", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L, JOYCODE_##INDEX##_BUTTON5}, \
|
||||
{"RetroPad" #INDEX " R", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R, JOYCODE_##INDEX##_BUTTON6}, \
|
||||
{"RetroPad" #INDEX " L2", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L2, JOYCODE_##INDEX##_BUTTON7}, \
|
||||
{"RetroPad" #INDEX " R2", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R2, JOYCODE_##INDEX##_BUTTON8}, \
|
||||
{"RetroPad" #INDEX " L3", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_L3, JOYCODE_##INDEX##_BUTTON9}, \
|
||||
{"RetroPad" #INDEX " R3", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_R3, JOYCODE_##INDEX##_BUTTON10}, \
|
||||
{"RetroPad" #INDEX " Start", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_START, JOYCODE_##INDEX##_START}, \
|
||||
{"RetroPad" #INDEX " Select", ((INDEX - 1) * 18) + RETRO_DEVICE_ID_JOYPAD_SELECT, JOYCODE_##INDEX##_SELECT}, \
|
||||
{"RetroMouse" #INDEX " Left Click", ((INDEX - 1) * 18) + 16, JOYCODE_MOUSE_##INDEX##_BUTTON1}, \
|
||||
{"RetroMouse" #INDEX " Right Click", ((INDEX - 1) * 18) + 17, JOYCODE_MOUSE_##INDEX##_BUTTON2}
|
||||
|
||||
struct JoystickInfo jsItems[] =
|
||||
{
|
||||
EMIT_RETRO_PAD(1),
|
||||
EMIT_RETRO_PAD(2),
|
||||
EMIT_RETRO_PAD(3),
|
||||
EMIT_RETRO_PAD(4),
|
||||
{0, 0, 0}
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Joystick & Mouse/Trackball
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
int retroJsState[72];
|
||||
int16_t mouse_x[4];
|
||||
int16_t mouse_y[4];
|
||||
int16_t analogjoy[4][4];
|
||||
|
||||
const struct JoystickInfo *osd_get_joy_list(void)
|
||||
{
|
||||
return jsItems;
|
||||
}
|
||||
|
||||
int osd_is_joy_pressed(int joycode)
|
||||
{
|
||||
return (joycode >= 0) ? retroJsState[joycode] : 0;
|
||||
}
|
||||
|
||||
int osd_is_joystick_axis_code(int joycode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void osd_lightgun_read(int player, int *deltax, int *deltay)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void osd_trak_read(int player, int *deltax, int *deltay)
|
||||
{
|
||||
*deltax = mouse_x[player];
|
||||
*deltay = mouse_y[player];
|
||||
}
|
||||
|
||||
int convert_analog_scale(int input)
|
||||
{
|
||||
static int libretro_analog_range = LIBRETRO_ANALOG_MAX - LIBRETRO_ANALOG_MIN;
|
||||
static int analog_range = ANALOG_MAX - ANALOG_MIN;
|
||||
|
||||
return (input - LIBRETRO_ANALOG_MIN)*analog_range / libretro_analog_range + ANALOG_MIN;
|
||||
}
|
||||
|
||||
void osd_analogjoy_read(int player,int analog_axis[MAX_ANALOG_AXES], InputCode analogjoy_input[MAX_ANALOG_AXES])
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < MAX_ANALOG_AXES; i ++)
|
||||
{
|
||||
if (analogjoy[player][i])
|
||||
analog_axis[i] = convert_analog_scale(analogjoy[player][i]);
|
||||
}
|
||||
|
||||
analogjoy_input[0] = IPT_AD_STICK_X;
|
||||
analogjoy_input[1] = IPT_AD_STICK_Y;
|
||||
}
|
||||
|
||||
void osd_customize_inputport_defaults(struct ipd *defaults)
|
||||
{
|
||||
#if 0
|
||||
unsigned int i = 0;
|
||||
|
||||
for( ; defaults[i].type != IPT_END; ++i)
|
||||
{
|
||||
struct ipd *entry = &defaults[i];
|
||||
|
||||
switch(entry->type)
|
||||
{
|
||||
case (IPT_BUTTON1 | IPF_PLAYER1):
|
||||
fprintf(stderr, "IPT_BUTTON1 | IPF_PLAYER1.\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Label not known.\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// These calibration functions should never actually be used (as long as needs_calibration returns 0 anyway).
|
||||
int osd_joystick_needs_calibration(void) { return 0; }
|
||||
void osd_joystick_start_calibration(void){ }
|
||||
const char *osd_joystick_calibrate_next(void) { return 0; }
|
||||
void osd_joystick_calibrate(void) { }
|
||||
void osd_joystick_end_calibration(void) { }
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keyboard
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
extern const struct KeyboardInfo retroKeys[];
|
||||
int retroKeyState[512];
|
||||
|
||||
const struct KeyboardInfo *osd_get_key_list(void)
|
||||
{
|
||||
return retroKeys;
|
||||
}
|
||||
|
||||
int osd_is_key_pressed(int keycode)
|
||||
{
|
||||
return (keycode < 512 && keycode >= 0) ? retroKeyState[keycode] : 0;
|
||||
}
|
||||
|
||||
|
||||
int osd_readkey_unicode(int flush)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
Keymapping
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
// Unassigned keycodes
|
||||
// KEYCODE_OPENBRACE, KEYCODE_CLOSEBRACE, KEYCODE_BACKSLASH2, KEYCODE_STOP, KEYCODE_LWIN, KEYCODE_RWIN, KEYCODE_DEL_PAD, KEYCODE_PAUSE,
|
||||
|
||||
// The format for each systems key constants is RETROK_$(TAG) and KEYCODE_$(TAG)
|
||||
// EMIT1(TAG): The tag value is the same between libretro and MAME
|
||||
// EMIT2(RTAG, MTAG): The tag value is different between the two
|
||||
// EXITX(TAG): MAME has no equivalent key.
|
||||
|
||||
#define EMIT2(RETRO, KEY) {(char*)#RETRO, RETROK_##RETRO, KEYCODE_##KEY}
|
||||
#define EMIT1(KEY) {(char*)#KEY, RETROK_##KEY, KEYCODE_##KEY}
|
||||
#define EMITX(KEY) {(char*)#KEY, RETROK_##KEY, KEYCODE_OTHER}
|
||||
|
||||
const struct KeyboardInfo retroKeys[] =
|
||||
{
|
||||
EMIT1(BACKSPACE),
|
||||
EMIT1(TAB),
|
||||
EMITX(CLEAR),
|
||||
|
||||
EMIT1(BACKSPACE),
|
||||
EMIT1(TAB),
|
||||
EMITX(CLEAR),
|
||||
EMIT2(RETURN, ENTER),
|
||||
EMITX(PAUSE),
|
||||
EMIT2(ESCAPE, ESC),
|
||||
EMIT1(SPACE),
|
||||
EMITX(EXCLAIM),
|
||||
EMIT2(QUOTEDBL, TILDE),
|
||||
EMITX(HASH),
|
||||
EMITX(DOLLAR),
|
||||
EMITX(AMPERSAND),
|
||||
EMIT1(QUOTE),
|
||||
EMITX(LEFTPAREN),
|
||||
EMITX(RIGHTPAREN),
|
||||
EMIT1(ASTERISK),
|
||||
EMIT2(PLUS, EQUALS),
|
||||
EMIT1(COMMA),
|
||||
EMIT1(MINUS),
|
||||
EMITX(PERIOD),
|
||||
EMIT1(SLASH),
|
||||
|
||||
EMIT1(0), EMIT1(1), EMIT1(2), EMIT1(3), EMIT1(4), EMIT1(5), EMIT1(6), EMIT1(7), EMIT1(8), EMIT1(9),
|
||||
|
||||
EMIT1(COLON),
|
||||
EMITX(SEMICOLON),
|
||||
EMITX(LESS),
|
||||
EMITX(EQUALS),
|
||||
EMITX(GREATER),
|
||||
EMITX(QUESTION),
|
||||
EMITX(AT),
|
||||
EMITX(LEFTBRACKET),
|
||||
EMIT1(BACKSLASH),
|
||||
EMITX(RIGHTBRACKET),
|
||||
EMITX(CARET),
|
||||
EMITX(UNDERSCORE),
|
||||
EMITX(BACKQUOTE),
|
||||
|
||||
EMIT2(a, A), EMIT2(b, B), EMIT2(c, C), EMIT2(d, D), EMIT2(e, E), EMIT2(f, F),
|
||||
EMIT2(g, G), EMIT2(h, H), EMIT2(i, I), EMIT2(j, J), EMIT2(k, K), EMIT2(l, L),
|
||||
EMIT2(m, M), EMIT2(n, N), EMIT2(o, O), EMIT2(p, P), EMIT2(q, Q), EMIT2(r, R),
|
||||
EMIT2(s, S), EMIT2(t, T), EMIT2(u, U), EMIT2(v, V), EMIT2(w, W), EMIT2(x, X),
|
||||
EMIT2(y, Y), EMIT2(z, Z),
|
||||
|
||||
EMIT2(DELETE, DEL),
|
||||
|
||||
EMIT2(KP0, 0_PAD), EMIT2(KP1, 1_PAD), EMIT2(KP2, 2_PAD), EMIT2(KP3, 3_PAD),
|
||||
EMIT2(KP4, 4_PAD), EMIT2(KP5, 5_PAD), EMIT2(KP6, 6_PAD), EMIT2(KP7, 7_PAD),
|
||||
EMIT2(KP8, 8_PAD), EMIT2(KP9, 9_PAD),
|
||||
|
||||
EMITX(KP_PERIOD),
|
||||
EMIT2(KP_DIVIDE, SLASH_PAD),
|
||||
EMITX(KP_MULTIPLY),
|
||||
EMIT2(KP_MINUS, MINUS_PAD),
|
||||
EMIT2(KP_PLUS, PLUS_PAD),
|
||||
EMIT2(KP_ENTER, ENTER_PAD),
|
||||
EMITX(KP_EQUALS),
|
||||
|
||||
EMIT1(UP), EMIT1(DOWN), EMIT1(RIGHT), EMIT1(LEFT),
|
||||
EMIT1(INSERT), EMIT1(HOME), EMIT1(END), EMIT2(PAGEUP, PGUP), EMIT2(PAGEDOWN, PGDN),
|
||||
|
||||
EMIT1(F1), EMIT1(F2), EMIT1(F3), EMIT1(F4), EMIT1(F5), EMIT1(F6),
|
||||
EMIT1(F7), EMIT1(F8), EMIT1(F9), EMIT1(F10), EMIT1(F11), EMIT1(F12),
|
||||
EMITX(F13), EMITX(F14), EMITX(F15),
|
||||
|
||||
EMIT1(NUMLOCK),
|
||||
EMIT1(CAPSLOCK),
|
||||
EMIT2(SCROLLOCK, SCRLOCK),
|
||||
EMIT1(RSHIFT), EMIT1(LSHIFT), EMIT2(RCTRL, RCONTROL), EMIT2(LCTRL, LCONTROL), EMIT1(RALT), EMIT1(LALT),
|
||||
EMITX(RMETA), EMITX(LMETA), EMITX(LSUPER), EMITX(RSUPER),
|
||||
|
||||
EMITX(MODE),
|
||||
EMITX(COMPOSE),
|
||||
|
||||
EMITX(HELP),
|
||||
EMIT2(PRINT, PRTSCR),
|
||||
EMITX(SYSREQ),
|
||||
EMITX(BREAK),
|
||||
EMIT1(MENU),
|
||||
EMITX(POWER),
|
||||
EMITX(EURO),
|
||||
EMITX(UNDO),
|
||||
|
||||
{0, 0, 0}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user