mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 03:31:49 +01:00
(Libretro) Add nonblock_state
This commit is contained in:
parent
b070a06a0e
commit
b15a94ffdf
@ -702,6 +702,7 @@ void retro_get_system_info(struct retro_system_info *info)
|
||||
info->library_name = "Genesis Plus GX";
|
||||
info->library_version = "v1.7.0";
|
||||
info->valid_extensions = "md|smd|bin|cue|gen|zip|MD|SMD|bin|CUE|GEN|ZIP|sms|SMS|gg|GG|sg|SG";
|
||||
info->nonblock_state = false;
|
||||
info->block_extract = false;
|
||||
info->need_fullpath = true;
|
||||
}
|
||||
|
@ -4,10 +4,11 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// Hack applied for MSVC when compiling in C89 mode as it isn't C99 compliant.
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#else
|
||||
#if defined(_MSC_VER) && !defined(__cplusplus)
|
||||
#if defined(_MSC_VER) && !defined(SN_TARGET_PS3) && !defined(__cplusplus)
|
||||
#define bool unsigned char
|
||||
#define true 1
|
||||
#define false 0
|
||||
@ -16,21 +17,51 @@ extern "C" {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Used for checking API/ABI mismatches that can break libretro implementations.
|
||||
// It is not incremented for compatible changes.
|
||||
#define RETRO_API_VERSION 1
|
||||
|
||||
// Libretro's fundamental device abstractions.
|
||||
#define RETRO_DEVICE_MASK 0xff
|
||||
#define RETRO_DEVICE_NONE 0
|
||||
|
||||
// The JOYPAD is called RetroPad. It is essentially a Super Nintendo controller,
|
||||
// but with additional L2/R2/L3/R3 buttons, similar to a PS1 DualShock.
|
||||
#define RETRO_DEVICE_JOYPAD 1
|
||||
|
||||
// The mouse is a simple mouse, similar to Super Nintendo's mouse.
|
||||
// X and Y coordinates are reported relatively to last poll (poll callback).
|
||||
// It is up to the libretro implementation to keep track of where the mouse pointer is supposed to be on the screen.
|
||||
// The frontend must make sure not to interfere with its own hardware mouse pointer.
|
||||
#define RETRO_DEVICE_MOUSE 2
|
||||
|
||||
// KEYBOARD device lets one poll for raw key pressed.
|
||||
// It is poll based, so input callback will return with the current pressed state.
|
||||
#define RETRO_DEVICE_KEYBOARD 3
|
||||
|
||||
// Lightgun X/Y coordinates are reported relatively to last poll, similar to mouse.
|
||||
#define RETRO_DEVICE_LIGHTGUN 4
|
||||
|
||||
// The ANALOG device is an extension to JOYPAD (RetroPad).
|
||||
// Similar to DualShock it adds two analog sticks.
|
||||
// This is treated as a separate device type as it returns values in the full analog range
|
||||
// of [-0x8000, 0x7fff]. Positive X axis is right. Positive Y axis is down.
|
||||
// Only use ANALOG type when polling for analog values of the axes.
|
||||
#define RETRO_DEVICE_ANALOG 5
|
||||
|
||||
// These device types are specializations of the base types above.
|
||||
// They should only be used in retro_set_controller_type() to inform libretro implementations
|
||||
// about use of a very specific device type.
|
||||
//
|
||||
// In input state callback, however, only the base type should be used in the 'device' field.
|
||||
#define RETRO_DEVICE_JOYPAD_MULTITAP ((1 << 8) | RETRO_DEVICE_JOYPAD)
|
||||
#define RETRO_DEVICE_LIGHTGUN_SUPER_SCOPE ((1 << 8) | RETRO_DEVICE_LIGHTGUN)
|
||||
#define RETRO_DEVICE_LIGHTGUN_JUSTIFIER ((2 << 8) | RETRO_DEVICE_LIGHTGUN)
|
||||
#define RETRO_DEVICE_LIGHTGUN_JUSTIFIERS ((3 << 8) | RETRO_DEVICE_LIGHTGUN)
|
||||
|
||||
// Buttons for the RetroPad (JOYPAD).
|
||||
// The placement of these is equivalent to placements on the Super Nintendo controller.
|
||||
// L2/R2/L3/R3 buttons correspond to the PS1 DualShock.
|
||||
#define RETRO_DEVICE_ID_JOYPAD_B 0
|
||||
#define RETRO_DEVICE_ID_JOYPAD_Y 1
|
||||
#define RETRO_DEVICE_ID_JOYPAD_SELECT 2
|
||||
@ -48,16 +79,19 @@ extern "C" {
|
||||
#define RETRO_DEVICE_ID_JOYPAD_L3 14
|
||||
#define RETRO_DEVICE_ID_JOYPAD_R3 15
|
||||
|
||||
// Index / Id values for ANALOG device.
|
||||
#define RETRO_DEVICE_INDEX_ANALOG_LEFT 0
|
||||
#define RETRO_DEVICE_INDEX_ANALOG_RIGHT 1
|
||||
#define RETRO_DEVICE_ID_ANALOG_X 0
|
||||
#define RETRO_DEVICE_ID_ANALOG_Y 1
|
||||
|
||||
// Id values for MOUSE.
|
||||
#define RETRO_DEVICE_ID_MOUSE_X 0
|
||||
#define RETRO_DEVICE_ID_MOUSE_Y 1
|
||||
#define RETRO_DEVICE_ID_MOUSE_LEFT 2
|
||||
#define RETRO_DEVICE_ID_MOUSE_RIGHT 3
|
||||
|
||||
// Id values for LIGHTGUN types.
|
||||
#define RETRO_DEVICE_ID_LIGHTGUN_X 0
|
||||
#define RETRO_DEVICE_ID_LIGHTGUN_Y 1
|
||||
#define RETRO_DEVICE_ID_LIGHTGUN_TRIGGER 2
|
||||
@ -66,15 +100,30 @@ extern "C" {
|
||||
#define RETRO_DEVICE_ID_LIGHTGUN_PAUSE 5
|
||||
#define RETRO_DEVICE_ID_LIGHTGUN_START 6
|
||||
|
||||
// Returned from retro_get_region().
|
||||
#define RETRO_REGION_NTSC 0
|
||||
#define RETRO_REGION_PAL 1
|
||||
|
||||
// Passed to retro_get_memory_data/size().
|
||||
// If the memory type doesn't apply to the implementation NULL/0 can be returned.
|
||||
#define RETRO_MEMORY_MASK 0xff
|
||||
|
||||
// Regular save ram. This ram is usually found on a game cartridge, backed up by a battery.
|
||||
// If save game data is too complex for a single memory buffer,
|
||||
// the SYSTEM_DIRECTORY environment callback can be used.
|
||||
#define RETRO_MEMORY_SAVE_RAM 0
|
||||
|
||||
// Some games have a built-in clock to keep track of time.
|
||||
// This memory is usually just a couple of bytes to keep track of time.
|
||||
#define RETRO_MEMORY_RTC 1
|
||||
|
||||
// System ram lets a frontend peek into a game systems main RAM.
|
||||
#define RETRO_MEMORY_SYSTEM_RAM 2
|
||||
|
||||
// Video ram lets a frontend peek into a game systems video RAM (VRAM).
|
||||
#define RETRO_MEMORY_VIDEO_RAM 3
|
||||
|
||||
// Special memory types.
|
||||
#define RETRO_MEMORY_SNES_BSX_RAM ((1 << 8) | RETRO_MEMORY_SAVE_RAM)
|
||||
#define RETRO_MEMORY_SNES_BSX_PRAM ((2 << 8) | RETRO_MEMORY_SAVE_RAM)
|
||||
#define RETRO_MEMORY_SNES_SUFAMI_TURBO_A_RAM ((3 << 8) | RETRO_MEMORY_SAVE_RAM)
|
||||
@ -82,11 +131,161 @@ extern "C" {
|
||||
#define RETRO_MEMORY_SNES_GAME_BOY_RAM ((5 << 8) | RETRO_MEMORY_SAVE_RAM)
|
||||
#define RETRO_MEMORY_SNES_GAME_BOY_RTC ((6 << 8) | RETRO_MEMORY_RTC)
|
||||
|
||||
// Special game types passed into retro_load_game_special().
|
||||
// Only used when multiple ROMs are required.
|
||||
#define RETRO_GAME_TYPE_BSX 0x101
|
||||
#define RETRO_GAME_TYPE_BSX_SLOTTED 0x102
|
||||
#define RETRO_GAME_TYPE_SUFAMI_TURBO 0x103
|
||||
#define RETRO_GAME_TYPE_SUPER_GAME_BOY 0x104
|
||||
|
||||
// Keysyms used for ID in input state callback when polling RETRO_KEYBOARD.
|
||||
enum retro_key
|
||||
{
|
||||
RETROK_UNKNOWN = 0,
|
||||
RETROK_FIRST = 0,
|
||||
RETROK_BACKSPACE = 8,
|
||||
RETROK_TAB = 9,
|
||||
RETROK_CLEAR = 12,
|
||||
RETROK_RETURN = 13,
|
||||
RETROK_PAUSE = 19,
|
||||
RETROK_ESCAPE = 27,
|
||||
RETROK_SPACE = 32,
|
||||
RETROK_EXCLAIM = 33,
|
||||
RETROK_QUOTEDBL = 34,
|
||||
RETROK_HASH = 35,
|
||||
RETROK_DOLLAR = 36,
|
||||
RETROK_AMPERSAND = 38,
|
||||
RETROK_QUOTE = 39,
|
||||
RETROK_LEFTPAREN = 40,
|
||||
RETROK_RIGHTPAREN = 41,
|
||||
RETROK_ASTERISK = 42,
|
||||
RETROK_PLUS = 43,
|
||||
RETROK_COMMA = 44,
|
||||
RETROK_MINUS = 45,
|
||||
RETROK_PERIOD = 46,
|
||||
RETROK_SLASH = 47,
|
||||
RETROK_0 = 48,
|
||||
RETROK_1 = 49,
|
||||
RETROK_2 = 50,
|
||||
RETROK_3 = 51,
|
||||
RETROK_4 = 52,
|
||||
RETROK_5 = 53,
|
||||
RETROK_6 = 54,
|
||||
RETROK_7 = 55,
|
||||
RETROK_8 = 56,
|
||||
RETROK_9 = 57,
|
||||
RETROK_COLON = 58,
|
||||
RETROK_SEMICOLON = 59,
|
||||
RETROK_LESS = 60,
|
||||
RETROK_EQUALS = 61,
|
||||
RETROK_GREATER = 62,
|
||||
RETROK_QUESTION = 63,
|
||||
RETROK_AT = 64,
|
||||
RETROK_LEFTBRACKET = 91,
|
||||
RETROK_BACKSLASH = 92,
|
||||
RETROK_RIGHTBRACKET = 93,
|
||||
RETROK_CARET = 94,
|
||||
RETROK_UNDERSCORE = 95,
|
||||
RETROK_BACKQUOTE = 96,
|
||||
RETROK_a = 97,
|
||||
RETROK_b = 98,
|
||||
RETROK_c = 99,
|
||||
RETROK_d = 100,
|
||||
RETROK_e = 101,
|
||||
RETROK_f = 102,
|
||||
RETROK_g = 103,
|
||||
RETROK_h = 104,
|
||||
RETROK_i = 105,
|
||||
RETROK_j = 106,
|
||||
RETROK_k = 107,
|
||||
RETROK_l = 108,
|
||||
RETROK_m = 109,
|
||||
RETROK_n = 110,
|
||||
RETROK_o = 111,
|
||||
RETROK_p = 112,
|
||||
RETROK_q = 113,
|
||||
RETROK_r = 114,
|
||||
RETROK_s = 115,
|
||||
RETROK_t = 116,
|
||||
RETROK_u = 117,
|
||||
RETROK_v = 118,
|
||||
RETROK_w = 119,
|
||||
RETROK_x = 120,
|
||||
RETROK_y = 121,
|
||||
RETROK_z = 122,
|
||||
RETROK_DELETE = 127,
|
||||
|
||||
RETROK_KP0 = 256,
|
||||
RETROK_KP1 = 257,
|
||||
RETROK_KP2 = 258,
|
||||
RETROK_KP3 = 259,
|
||||
RETROK_KP4 = 260,
|
||||
RETROK_KP5 = 261,
|
||||
RETROK_KP6 = 262,
|
||||
RETROK_KP7 = 263,
|
||||
RETROK_KP8 = 264,
|
||||
RETROK_KP9 = 265,
|
||||
RETROK_KP_PERIOD = 266,
|
||||
RETROK_KP_DIVIDE = 267,
|
||||
RETROK_KP_MULTIPLY = 268,
|
||||
RETROK_KP_MINUS = 269,
|
||||
RETROK_KP_PLUS = 270,
|
||||
RETROK_KP_ENTER = 271,
|
||||
RETROK_KP_EQUALS = 272,
|
||||
|
||||
RETROK_UP = 273,
|
||||
RETROK_DOWN = 274,
|
||||
RETROK_RIGHT = 275,
|
||||
RETROK_LEFT = 276,
|
||||
RETROK_INSERT = 277,
|
||||
RETROK_HOME = 278,
|
||||
RETROK_END = 279,
|
||||
RETROK_PAGEUP = 280,
|
||||
RETROK_PAGEDOWN = 281,
|
||||
|
||||
RETROK_F1 = 282,
|
||||
RETROK_F2 = 283,
|
||||
RETROK_F3 = 284,
|
||||
RETROK_F4 = 285,
|
||||
RETROK_F5 = 286,
|
||||
RETROK_F6 = 287,
|
||||
RETROK_F7 = 288,
|
||||
RETROK_F8 = 289,
|
||||
RETROK_F9 = 290,
|
||||
RETROK_F10 = 291,
|
||||
RETROK_F11 = 292,
|
||||
RETROK_F12 = 293,
|
||||
RETROK_F13 = 294,
|
||||
RETROK_F14 = 295,
|
||||
RETROK_F15 = 296,
|
||||
|
||||
RETROK_NUMLOCK = 300,
|
||||
RETROK_CAPSLOCK = 301,
|
||||
RETROK_SCROLLOCK = 302,
|
||||
RETROK_RSHIFT = 303,
|
||||
RETROK_LSHIFT = 304,
|
||||
RETROK_RCTRL = 305,
|
||||
RETROK_LCTRL = 306,
|
||||
RETROK_RALT = 307,
|
||||
RETROK_LALT = 308,
|
||||
RETROK_RMETA = 309,
|
||||
RETROK_LMETA = 310,
|
||||
RETROK_LSUPER = 311,
|
||||
RETROK_RSUPER = 312,
|
||||
RETROK_MODE = 313,
|
||||
RETROK_COMPOSE = 314,
|
||||
|
||||
RETROK_HELP = 315,
|
||||
RETROK_PRINT = 316,
|
||||
RETROK_SYSREQ = 317,
|
||||
RETROK_BREAK = 318,
|
||||
RETROK_MENU = 319,
|
||||
RETROK_POWER = 320,
|
||||
RETROK_EURO = 321,
|
||||
RETROK_UNDO = 322,
|
||||
|
||||
RETROK_LAST
|
||||
};
|
||||
|
||||
// Environment commands.
|
||||
#define RETRO_ENVIRONMENT_SET_ROTATION 1 // const unsigned * --
|
||||
@ -184,6 +383,8 @@ struct retro_system_info
|
||||
// If false, ::data and ::size are guaranteed to be valid, but ::path might not be valid.
|
||||
// This is typically set to true for libretro implementations that must load from file.
|
||||
// Implementations should strive for setting this to false, as it allows the frontend to perform patching, etc.
|
||||
bool nonblock_state; // If true, this indicates that the game's fps is above 60 and that vsync should
|
||||
// be deactivated before startup
|
||||
|
||||
bool block_extract; // If true, the frontend is not allowed to extract any archives before loading the real ROM.
|
||||
// Necessary for certain libretro implementations that load games from zipped archives.
|
||||
|
Loading…
Reference in New Issue
Block a user