mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-01-24 12:15:08 +00:00
Merge branch 'master' into quick-menu-show-hide-options
This commit is contained in:
commit
b1a6753976
@ -249,6 +249,13 @@ static bool quick_menu_show_save_game_overrides = true;
|
||||
static bool quick_menu_show_information = true;
|
||||
|
||||
static bool menu_show_online_updater = true;
|
||||
static bool menu_show_load_core = true;
|
||||
static bool menu_show_load_content = true;
|
||||
static bool menu_show_information = true;
|
||||
static bool menu_show_configurations = true;
|
||||
static bool menu_show_help = true;
|
||||
static bool menu_show_quit_retroarch = true;
|
||||
static bool menu_show_reboot = true;
|
||||
|
||||
#if defined(HAVE_LAKKA) || defined(VITA)
|
||||
static bool menu_show_core_updater = false;
|
||||
|
@ -1213,6 +1213,13 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
|
||||
SETTING_BOOL("xmb_show_images", &settings->bools.menu_xmb_show_images, true, xmb_show_images, false);
|
||||
#endif
|
||||
SETTING_BOOL("xmb_show_music", &settings->bools.menu_xmb_show_music, true, xmb_show_music, false);
|
||||
SETTING_BOOL("menu_show_load_core", &settings->bools.menu_show_load_core, true, menu_show_load_core, false);
|
||||
SETTING_BOOL("menu_show_load_content", &settings->bools.menu_show_load_content, true, menu_show_load_content, false);
|
||||
SETTING_BOOL("menu_show_information", &settings->bools.menu_show_information, true, menu_show_information, false);
|
||||
SETTING_BOOL("menu_show_configurations", &settings->bools.menu_show_configurations, true, menu_show_configurations, false);
|
||||
SETTING_BOOL("menu_show_help", &settings->bools.menu_show_help, true, menu_show_help, false);
|
||||
SETTING_BOOL("menu_show_quit_retroarch", &settings->bools.menu_show_quit_retroarch, true, menu_show_quit_retroarch, false);
|
||||
SETTING_BOOL("menu_show_reboot", &settings->bools.menu_show_reboot, true, menu_show_reboot, false);
|
||||
SETTING_BOOL("menu_show_online_updater", &settings->bools.menu_show_online_updater, true, menu_show_online_updater, false);
|
||||
SETTING_BOOL("menu_show_core_updater", &settings->bools.menu_show_core_updater, true, menu_show_core_updater, false);
|
||||
#ifdef HAVE_FFMPEG
|
||||
|
@ -127,6 +127,13 @@ typedef struct settings
|
||||
bool menu_horizontal_animation;
|
||||
bool menu_show_online_updater;
|
||||
bool menu_show_core_updater;
|
||||
bool menu_show_load_core;
|
||||
bool menu_show_load_content;
|
||||
bool menu_show_information;
|
||||
bool menu_show_configurations;
|
||||
bool menu_show_help;
|
||||
bool menu_show_quit_retroarch;
|
||||
bool menu_show_reboot;
|
||||
bool menu_materialui_icons_enable;
|
||||
bool menu_xmb_shadows_enable;
|
||||
bool menu_xmb_show_settings;
|
||||
|
20
deps/libFLAC/bitreader.c
vendored
20
deps/libFLAC/bitreader.c
vendored
@ -119,20 +119,20 @@ static INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
|
||||
register unsigned crc = br->read_crc16;
|
||||
#if FLAC__BYTES_PER_WORD == 4
|
||||
switch(br->crc16_align) {
|
||||
case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 24), crc);
|
||||
case 8: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 16) & 0xff), crc);
|
||||
case 16: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 8) & 0xff), crc);
|
||||
case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 24), crc); /* fallthrough */
|
||||
case 8: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 16) & 0xff), crc); /* fallthrough */
|
||||
case 16: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 8) & 0xff), crc); /* fallthrough */
|
||||
case 24: br->read_crc16 = FLAC__CRC16_UPDATE((unsigned)(word & 0xff), crc);
|
||||
}
|
||||
#elif FLAC__BYTES_PER_WORD == 8
|
||||
switch(br->crc16_align) {
|
||||
case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 56), crc);
|
||||
case 8: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 48) & 0xff), crc);
|
||||
case 16: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 40) & 0xff), crc);
|
||||
case 24: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 32) & 0xff), crc);
|
||||
case 32: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 24) & 0xff), crc);
|
||||
case 40: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 16) & 0xff), crc);
|
||||
case 48: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 8) & 0xff), crc);
|
||||
case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 56), crc); /* fallthrough */
|
||||
case 8: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 48) & 0xff), crc); /* fallthrough */
|
||||
case 16: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 40) & 0xff), crc); /* fallthrough */
|
||||
case 24: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 32) & 0xff), crc); /* fallthrough */
|
||||
case 32: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 24) & 0xff), crc); /* fallthrough */
|
||||
case 40: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 16) & 0xff), crc); /* fallthrough */
|
||||
case 48: crc = FLAC__CRC16_UPDATE((unsigned)((word >> 8) & 0xff), crc); /* fallthrough */
|
||||
case 56: br->read_crc16 = FLAC__CRC16_UPDATE((unsigned)(word & 0xff), crc);
|
||||
}
|
||||
#else
|
||||
|
@ -12,9 +12,9 @@
|
||||
|
||||
#ifndef DIRECT3D_VERSION
|
||||
#define DIRECT3D_VERSION 0x0900
|
||||
#endif //DIRECT3D_VERSION
|
||||
#endif /* DIRECT3D_VERSION */
|
||||
|
||||
// include this file content only if compiling for DX9 interfaces
|
||||
/* include this file content only if compiling for DX9 interfaces */
|
||||
#if(DIRECT3D_VERSION >= 0x0900)
|
||||
|
||||
|
||||
@ -51,11 +51,11 @@
|
||||
DEFINE_GUID(IID_IDirect3D9, 0x81bdcbca, 0x64d4, 0x426d, 0xae, 0x8d, 0xad, 0x1, 0x47, 0xf4, 0x27, 0x5c);
|
||||
|
||||
/* IID_IDirect3DDevice9 */
|
||||
// {D0223B96-BF7A-43fd-92BD-A43B0D82B9EB} */
|
||||
/* {D0223B96-BF7A-43fd-92BD-A43B0D82B9EB} */
|
||||
DEFINE_GUID(IID_IDirect3DDevice9, 0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb);
|
||||
|
||||
/* IID_IDirect3DResource9 */
|
||||
// {05EEC05D-8F7D-4362-B999-D1BAF357C704}
|
||||
/* {05EEC05D-8F7D-4362-B999-D1BAF357C704} */
|
||||
DEFINE_GUID(IID_IDirect3DResource9, 0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4);
|
||||
|
||||
/* IID_IDirect3DBaseTexture9 */
|
||||
|
@ -1,11 +1,11 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
// File: d3dx9.h
|
||||
// Content: D3DX utility library
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
*
|
||||
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
*
|
||||
* File: d3dx9.h
|
||||
* Content: D3DX utility library
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __D3DX_INTERNAL__
|
||||
#error Incorrect D3DX header used
|
||||
@ -14,8 +14,7 @@
|
||||
#ifndef __D3DX9_H__
|
||||
#define __D3DX9_H__
|
||||
|
||||
|
||||
// Defines
|
||||
/* Defines */
|
||||
#include <limits.h>
|
||||
|
||||
#define D3DX_DEFAULT ((UINT) -1)
|
||||
@ -40,9 +39,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// Includes
|
||||
/* Includes */
|
||||
#include "d3d9.h"
|
||||
#include "d3dx9math.h"
|
||||
#include "d3dx9core.h"
|
||||
@ -55,9 +52,7 @@
|
||||
#include "d3dx9shape.h"
|
||||
#include "d3dx9anim.h"
|
||||
|
||||
|
||||
|
||||
// Errors
|
||||
/* Errors */
|
||||
#define _FACDD 0x876
|
||||
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
|
||||
|
||||
@ -74,4 +69,4 @@ enum _D3DXERR {
|
||||
};
|
||||
|
||||
|
||||
#endif //__D3DX9_H__
|
||||
#endif /*__D3DX9_H__ */
|
||||
|
@ -1,28 +1,27 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
// File: d3dx9anim.h
|
||||
// Content: D3DX mesh types and functions
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
*
|
||||
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
*
|
||||
* File: d3dx9anim.h
|
||||
* Content: D3DX mesh types and functions
|
||||
*/
|
||||
|
||||
#ifndef __D3DX9ANIM_H__
|
||||
#define __D3DX9ANIM_H__
|
||||
|
||||
// {698CFB3F-9289-4d95-9A57-33A94B5A65F9}
|
||||
/* {698CFB3F-9289-4d95-9A57-33A94B5A65F9} */
|
||||
DEFINE_GUID(IID_ID3DXAnimationSet,
|
||||
0x698cfb3f, 0x9289, 0x4d95, 0x9a, 0x57, 0x33, 0xa9, 0x4b, 0x5a, 0x65, 0xf9);
|
||||
|
||||
// {FA4E8E3A-9786-407d-8B4C-5995893764AF}
|
||||
/* {FA4E8E3A-9786-407d-8B4C-5995893764AF} */
|
||||
DEFINE_GUID(IID_ID3DXKeyframedAnimationSet,
|
||||
0xfa4e8e3a, 0x9786, 0x407d, 0x8b, 0x4c, 0x59, 0x95, 0x89, 0x37, 0x64, 0xaf);
|
||||
|
||||
// {6CC2480D-3808-4739-9F88-DE49FACD8D4C}
|
||||
/* {6CC2480D-3808-4739-9F88-DE49FACD8D4C} */
|
||||
DEFINE_GUID(IID_ID3DXCompressedAnimationSet,
|
||||
0x6cc2480d, 0x3808, 0x4739, 0x9f, 0x88, 0xde, 0x49, 0xfa, 0xcd, 0x8d, 0x4c);
|
||||
|
||||
// {AC8948EC-F86D-43e2-96DE-31FC35F96D9E}
|
||||
/* {AC8948EC-F86D-43e2-96DE-31FC35F96D9E} */
|
||||
DEFINE_GUID(IID_ID3DXAnimationController,
|
||||
0xac8948ec, 0xf86d, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e);
|
||||
|
||||
@ -134,20 +133,20 @@ DECLARE_INTERFACE(ID3DXSaveUserData)
|
||||
LPD3DXFILESAVEOBJECT pXofSave,
|
||||
LPD3DXFILESAVEDATA pXofMeshData) PURE;
|
||||
|
||||
// NOTE: this is called once per Save. All top level objects should be added using the
|
||||
// provided interface. One call adds objects before the frame hierarchy, the other after
|
||||
/* NOTE: this is called once per Save. All top level objects should be added using the
|
||||
* provided interface. One call adds objects before the frame hierarchy, the other after */
|
||||
STDMETHOD(AddTopLevelDataObjectsPre)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
|
||||
STDMETHOD(AddTopLevelDataObjectsPost)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
|
||||
|
||||
// callbacks for the user to register and then save templates to the XFile
|
||||
/* callbacks for the user to register and then save templates to the XFile */
|
||||
STDMETHOD(RegisterTemplates)(LPD3DXFILE pXFileApi) PURE;
|
||||
STDMETHOD(SaveTemplates)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
|
||||
};
|
||||
|
||||
typedef enum _D3DXCALLBACK_SEARCH_FLAGS
|
||||
{
|
||||
D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION = 0x01, // exclude callbacks at the initial position from the search
|
||||
D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION = 0x02, // reverse the callback search direction
|
||||
D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION = 0x01, /* exclude callbacks at the initial position from the search */
|
||||
D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION = 0x02, /* reverse the callback search direction */
|
||||
|
||||
D3DXCALLBACK_SEARCH_FORCE_DWORD = 0x7fffffff,
|
||||
} D3DXCALLBACK_SEARCH_FLAGS;
|
||||
@ -160,37 +159,37 @@ typedef interface ID3DXAnimationSet *LPD3DXANIMATIONSET;
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXAnimationSet, IUnknown)
|
||||
{
|
||||
// IUnknown
|
||||
/* IUnknown */
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Name
|
||||
/* Name */
|
||||
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
|
||||
|
||||
// Period
|
||||
/* Period */
|
||||
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; /* Maps position into animation period */
|
||||
|
||||
// Animation names
|
||||
/* Animation names */
|
||||
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
|
||||
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
|
||||
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
|
||||
|
||||
// SRT
|
||||
/* SRT */
|
||||
STDMETHOD(GetSRT)(THIS_
|
||||
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
|
||||
UINT Animation, // Animation index
|
||||
D3DXVECTOR3 *pScale, // Returns the scale
|
||||
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
|
||||
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
|
||||
DOUBLE PeriodicPosition, /* Position mapped to period (use GetPeriodicPosition) */
|
||||
UINT Animation, /* Animation index */
|
||||
D3DXVECTOR3 *pScale, /* Returns the scale */
|
||||
D3DXQUATERNION *pRotation, /* Returns the rotation as a quaternion */
|
||||
D3DXVECTOR3 *pTranslation) PURE; /* Returns the translation */
|
||||
|
||||
// Callbacks
|
||||
/* Callbacks */
|
||||
STDMETHOD(GetCallback)(THIS_
|
||||
DOUBLE Position, // Position from which to find callbacks
|
||||
DWORD Flags, // Callback search flags
|
||||
DOUBLE *pCallbackPosition, // Returns the position of the callback
|
||||
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
|
||||
DOUBLE Position, /* Position from which to find callbacks */
|
||||
DWORD Flags, /* Callback search flags */
|
||||
DOUBLE *pCallbackPosition, /* Returns the position of the callback */
|
||||
LPVOID *ppCallbackData) PURE; /* Returns the callback data pointer */
|
||||
};
|
||||
|
||||
typedef enum _D3DXPLAYBACK_TYPE
|
||||
@ -235,98 +234,98 @@ typedef interface ID3DXKeyframedAnimationSet *LPD3DXKEYFRAMEDANIMATIONSET;
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXKeyframedAnimationSet, ID3DXAnimationSet)
|
||||
{
|
||||
// ID3DXAnimationSet
|
||||
/* ID3DXAnimationSet */
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Name
|
||||
/* Name */
|
||||
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
|
||||
|
||||
// Period
|
||||
/* Period */
|
||||
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; /* Maps position into animation period */
|
||||
|
||||
// Animation names
|
||||
/* Animation names */
|
||||
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
|
||||
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
|
||||
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
|
||||
|
||||
// SRT
|
||||
/* SRT */
|
||||
STDMETHOD(GetSRT)(THIS_
|
||||
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
|
||||
UINT Animation, // Animation index
|
||||
D3DXVECTOR3 *pScale, // Returns the scale
|
||||
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
|
||||
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
|
||||
DOUBLE PeriodicPosition, /* Position mapped to period (use GetPeriodicPosition) */
|
||||
UINT Animation, /* Animation index */
|
||||
D3DXVECTOR3 *pScale, /* Returns the scale */
|
||||
D3DXQUATERNION *pRotation, /* Returns the rotation as a quaternion */
|
||||
D3DXVECTOR3 *pTranslation) PURE; /* Returns the translation */
|
||||
|
||||
// Callbacks
|
||||
/* Callbacks */
|
||||
STDMETHOD(GetCallback)(THIS_
|
||||
DOUBLE Position, // Position from which to find callbacks
|
||||
DWORD Flags, // Callback search flags
|
||||
DOUBLE *pCallbackPosition, // Returns the position of the callback
|
||||
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
|
||||
DOUBLE Position, /* Position from which to find callbacks */
|
||||
DWORD Flags, /* Callback search flags */
|
||||
DOUBLE *pCallbackPosition, /* Returns the position of the callback */
|
||||
LPVOID *ppCallbackData) PURE; /* Returns the callback data pointer */
|
||||
|
||||
// Playback
|
||||
/* Playback */
|
||||
STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE;
|
||||
|
||||
// Scale keys
|
||||
/* Scale keys */
|
||||
STDMETHOD_(UINT, GetNumScaleKeys)(THIS_ UINT Animation) PURE;
|
||||
STDMETHOD(GetScaleKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pScaleKeys) PURE;
|
||||
STDMETHOD(GetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE;
|
||||
STDMETHOD(SetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE;
|
||||
|
||||
// Rotation keys
|
||||
/* Rotation keys */
|
||||
STDMETHOD_(UINT, GetNumRotationKeys)(THIS_ UINT Animation) PURE;
|
||||
STDMETHOD(GetRotationKeys)(THIS_ UINT Animation, LPD3DXKEY_QUATERNION pRotationKeys) PURE;
|
||||
STDMETHOD(GetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE;
|
||||
STDMETHOD(SetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE;
|
||||
|
||||
// Translation keys
|
||||
/* Translation keys */
|
||||
STDMETHOD_(UINT, GetNumTranslationKeys)(THIS_ UINT Animation) PURE;
|
||||
STDMETHOD(GetTranslationKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pTranslationKeys) PURE;
|
||||
STDMETHOD(GetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE;
|
||||
STDMETHOD(SetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE;
|
||||
|
||||
// Callback keys
|
||||
/* Callback keys */
|
||||
STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE;
|
||||
STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE;
|
||||
STDMETHOD(GetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE;
|
||||
STDMETHOD(SetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE;
|
||||
|
||||
// Key removal methods. These are slow, and should not be used once the animation starts playing
|
||||
/* Key removal methods. These are slow, and should not be used once the animation starts playing */
|
||||
STDMETHOD(UnregisterScaleKey)(THIS_ UINT Animation, UINT Key) PURE;
|
||||
STDMETHOD(UnregisterRotationKey)(THIS_ UINT Animation, UINT Key) PURE;
|
||||
STDMETHOD(UnregisterTranslationKey)(THIS_ UINT Animation, UINT Key) PURE;
|
||||
|
||||
// One-time animaton SRT keyframe registration
|
||||
/* One-time animaton SRT keyframe registration */
|
||||
STDMETHOD(RegisterAnimationSRTKeys)(THIS_
|
||||
LPCSTR pName, // Animation name
|
||||
UINT NumScaleKeys, // Number of scale keys
|
||||
UINT NumRotationKeys, // Number of rotation keys
|
||||
UINT NumTranslationKeys, // Number of translation keys
|
||||
CONST D3DXKEY_VECTOR3 *pScaleKeys, // Array of scale keys
|
||||
CONST D3DXKEY_QUATERNION *pRotationKeys, // Array of rotation keys
|
||||
CONST D3DXKEY_VECTOR3 *pTranslationKeys, // Array of translation keys
|
||||
DWORD *pAnimationIndex) PURE; // Returns the animation index
|
||||
LPCSTR pName, /* Animation name */
|
||||
UINT NumScaleKeys, /* Number of scale keys */
|
||||
UINT NumRotationKeys, /* Number of rotation keys */
|
||||
UINT NumTranslationKeys, /* Number of translation keys */
|
||||
CONST D3DXKEY_VECTOR3 *pScaleKeys, /* Array of scale keys */
|
||||
CONST D3DXKEY_QUATERNION *pRotationKeys, /* Array of rotation keys */
|
||||
CONST D3DXKEY_VECTOR3 *pTranslationKeys, /* Array of translation keys */
|
||||
DWORD *pAnimationIndex) PURE; /* Returns the animation index */
|
||||
|
||||
// Compression
|
||||
/* Compression */
|
||||
STDMETHOD(Compress)(THIS_
|
||||
DWORD Flags, // Compression flags (use D3DXCOMPRESS_STRONG for better results)
|
||||
FLOAT Lossiness, // Compression loss ratio in the [0, 1] range
|
||||
LPD3DXFRAME pHierarchy, // Frame hierarchy (optional)
|
||||
LPD3DXBUFFER *ppCompressedData) PURE; // Returns the compressed animation set
|
||||
DWORD Flags, /* Compression flags (use D3DXCOMPRESS_STRONG for better results) */
|
||||
FLOAT Lossiness, /* Compression loss ratio in the [0, 1] range */
|
||||
LPD3DXFRAME pHierarchy, /* Frame hierarchy (optional) */
|
||||
LPD3DXBUFFER *ppCompressedData) PURE; /* Returns the compressed animation set */
|
||||
|
||||
STDMETHOD(UnregisterAnimation)(THIS_ UINT Index) PURE;
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// ID3DXCompressedAnimationSet:
|
||||
// ----------------------------
|
||||
// This interface implements a compressed keyframed animation set.
|
||||
//----------------------------------------------------------------------------
|
||||
/*
|
||||
* ID3DXCompressedAnimationSet:
|
||||
* ----------------------------
|
||||
* This interface implements a compressed keyframed animation set.
|
||||
*/
|
||||
typedef interface ID3DXCompressedAnimationSet ID3DXCompressedAnimationSet;
|
||||
typedef interface ID3DXCompressedAnimationSet *LPD3DXCOMPRESSEDANIMATIONSET;
|
||||
|
||||
@ -335,54 +334,54 @@ typedef interface ID3DXCompressedAnimationSet *LPD3DXCOMPRESSEDANIMATIONSET;
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXCompressedAnimationSet, ID3DXAnimationSet)
|
||||
{
|
||||
// ID3DXAnimationSet
|
||||
/* ID3DXAnimationSet */
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Name
|
||||
/* Name */
|
||||
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
|
||||
|
||||
// Period
|
||||
/* Period */
|
||||
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
|
||||
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; /* Maps position into animation period */
|
||||
|
||||
// Animation names
|
||||
/* Animation names */
|
||||
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
|
||||
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
|
||||
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
|
||||
|
||||
// SRT
|
||||
/* SRT */
|
||||
STDMETHOD(GetSRT)(THIS_
|
||||
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
|
||||
UINT Animation, // Animation index
|
||||
D3DXVECTOR3 *pScale, // Returns the scale
|
||||
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
|
||||
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
|
||||
DOUBLE PeriodicPosition, /* Position mapped to period (use GetPeriodicPosition) */
|
||||
UINT Animation, /* Animation index */
|
||||
D3DXVECTOR3 *pScale, /* Returns the scale */
|
||||
D3DXQUATERNION *pRotation, /* Returns the rotation as a quaternion */
|
||||
D3DXVECTOR3 *pTranslation) PURE; /* Returns the translation */
|
||||
|
||||
// Callbacks
|
||||
/* Callbacks */
|
||||
STDMETHOD(GetCallback)(THIS_
|
||||
DOUBLE Position, // Position from which to find callbacks
|
||||
DWORD Flags, // Callback search flags
|
||||
DOUBLE *pCallbackPosition, // Returns the position of the callback
|
||||
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
|
||||
DOUBLE Position, /* Position from which to find callbacks */
|
||||
DWORD Flags, /* Callback search flags */
|
||||
DOUBLE *pCallbackPosition, /* Returns the position of the callback */
|
||||
LPVOID *ppCallbackData) PURE; /* Returns the callback data pointer */
|
||||
|
||||
// Playback
|
||||
/* Playback */
|
||||
STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE;
|
||||
|
||||
// Scale keys
|
||||
/* Scale keys */
|
||||
STDMETHOD(GetCompressedData)(THIS_ LPD3DXBUFFER *ppCompressedData) PURE;
|
||||
|
||||
// Callback keys
|
||||
/* Callback keys */
|
||||
STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE;
|
||||
STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE;
|
||||
};
|
||||
|
||||
typedef enum _D3DXPRIORITY_TYPE
|
||||
{
|
||||
D3DXPRIORITY_LOW = 0, // This track should be blended with all low priority tracks before mixed with the high priority result
|
||||
D3DXPRIORITY_HIGH = 1, // This track should be blended with all high priority tracks before mixed with the low priority result
|
||||
D3DXPRIORITY_LOW = 0, /* This track should be blended with all low priority tracks before mixed with the high priority result */
|
||||
D3DXPRIORITY_HIGH = 1, /* This track should be blended with all high priority tracks before mixed with the low priority result */
|
||||
|
||||
D3DXPRIORITY_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
|
||||
} D3DXPRIORITY_TYPE;
|
||||
@ -453,18 +452,18 @@ typedef interface ID3DXAnimationController *LPD3DXANIMATIONCONTROLLER;
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
{
|
||||
// IUnknown
|
||||
/* IUnknown */
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Max sizes
|
||||
/* Max sizes */
|
||||
STDMETHOD_(UINT, GetMaxNumAnimationOutputs)(THIS) PURE;
|
||||
STDMETHOD_(UINT, GetMaxNumAnimationSets)(THIS) PURE;
|
||||
STDMETHOD_(UINT, GetMaxNumTracks)(THIS) PURE;
|
||||
STDMETHOD_(UINT, GetMaxNumEvents)(THIS) PURE;
|
||||
|
||||
// Animation output registration
|
||||
/* Animation output registration */
|
||||
STDMETHOD(RegisterAnimationOutput)(THIS_
|
||||
LPCSTR pName,
|
||||
D3DXMATRIX *pMatrix,
|
||||
@ -472,7 +471,7 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
D3DXQUATERNION *pRotation,
|
||||
D3DXVECTOR3 *pTranslation) PURE;
|
||||
|
||||
// Animation set registration
|
||||
/* Animation set registration */
|
||||
STDMETHOD(RegisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
|
||||
STDMETHOD(UnregisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
|
||||
|
||||
@ -480,12 +479,12 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
STDMETHOD(GetAnimationSet)(THIS_ UINT Index, LPD3DXANIMATIONSET *ppAnimationSet) PURE;
|
||||
STDMETHOD(GetAnimationSetByName)(THIS_ LPCSTR szName, LPD3DXANIMATIONSET *ppAnimationSet) PURE;
|
||||
|
||||
// Global time
|
||||
/* Global time */
|
||||
STDMETHOD(AdvanceTime)(THIS_ DOUBLE TimeDelta, LPD3DXANIMATIONCALLBACKHANDLER pCallbackHandler) PURE;
|
||||
STDMETHOD(ResetTime)(THIS) PURE;
|
||||
STDMETHOD_(DOUBLE, GetTime)(THIS) PURE;
|
||||
|
||||
// Tracks
|
||||
/* Tracks */
|
||||
STDMETHOD(SetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET pAnimSet) PURE;
|
||||
STDMETHOD(GetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET *ppAnimSet) PURE;
|
||||
|
||||
@ -499,11 +498,11 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
STDMETHOD(SetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE;
|
||||
STDMETHOD(GetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE;
|
||||
|
||||
// Priority blending
|
||||
/* Priority blending */
|
||||
STDMETHOD(SetPriorityBlend)(THIS_ FLOAT BlendWeight) PURE;
|
||||
STDMETHOD_(FLOAT, GetPriorityBlend)(THIS) PURE;
|
||||
|
||||
// Event keying
|
||||
/* Event keying */
|
||||
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackSpeed)(THIS_ UINT Track, FLOAT NewSpeed, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
|
||||
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackWeight)(THIS_ UINT Track, FLOAT NewWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
|
||||
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT Track, DOUBLE NewPosition, DOUBLE StartTime) PURE;
|
||||
@ -511,13 +510,13 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
|
||||
STDMETHOD_(D3DXEVENTHANDLE, KeyPriorityBlend)(THIS_ FLOAT NewBlendWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
|
||||
|
||||
// Event unkeying
|
||||
/* Event unkeying */
|
||||
STDMETHOD(UnkeyEvent)(THIS_ D3DXEVENTHANDLE hEvent) PURE;
|
||||
|
||||
STDMETHOD(UnkeyAllTrackEvents)(THIS_ UINT Track) PURE;
|
||||
STDMETHOD(UnkeyAllPriorityBlends)(THIS) PURE;
|
||||
|
||||
// Event enumeration
|
||||
/* Event enumeration */
|
||||
STDMETHOD_(D3DXEVENTHANDLE, GetCurrentTrackEvent)(THIS_ UINT Track, D3DXEVENT_TYPE EventType) PURE;
|
||||
STDMETHOD_(D3DXEVENTHANDLE, GetCurrentPriorityBlend)(THIS) PURE;
|
||||
|
||||
@ -528,7 +527,7 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
|
||||
STDMETHOD(GetEventDesc)(THIS_ D3DXEVENTHANDLE hEvent, LPD3DXEVENT_DESC pDesc) PURE;
|
||||
|
||||
// Cloning
|
||||
/* Cloning */
|
||||
STDMETHOD(CloneAnimationController)(THIS_
|
||||
UINT MaxNumAnimationOutputs,
|
||||
UINT MaxNumAnimationSets,
|
||||
@ -539,7 +538,7 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif //__cplusplus
|
||||
#endif /* __cplusplus */
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXLoadMeshHierarchyFromXA
|
||||
@ -638,38 +637,38 @@ D3DXFrameRegisterNamedMatrices
|
||||
LPD3DXANIMATIONCONTROLLER pAnimController
|
||||
);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXFrameNumNamedMatrices:
|
||||
// --------------------------
|
||||
// Counts number of frames in a subtree that have non-null names
|
||||
//
|
||||
// Parameters:
|
||||
// pFrameRoot
|
||||
// Pointer to the root node of the subtree
|
||||
// Return Value:
|
||||
// Count of frames
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
/*
|
||||
* D3DXFrameNumNamedMatrices:
|
||||
* --------------------------
|
||||
* Counts number of frames in a subtree that have non-null names
|
||||
*
|
||||
* Parameters:
|
||||
* pFrameRoot
|
||||
* Pointer to the root node of the subtree
|
||||
* Return Value:
|
||||
* Count of frames
|
||||
*
|
||||
*/
|
||||
UINT WINAPI
|
||||
D3DXFrameNumNamedMatrices
|
||||
(
|
||||
CONST D3DXFRAME *pFrameRoot
|
||||
);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXFrameCalculateBoundingSphere:
|
||||
// ---------------------------------
|
||||
// Computes the bounding sphere of all the meshes in the frame hierarchy.
|
||||
//
|
||||
// Parameters:
|
||||
// pFrameRoot
|
||||
// Pointer to the root node
|
||||
// pObjectCenter
|
||||
// Returns the center of the bounding sphere
|
||||
// pObjectRadius
|
||||
// Returns the radius of the bounding sphere
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
/*
|
||||
* D3DXFrameCalculateBoundingSphere:
|
||||
* ---------------------------------
|
||||
* Computes the bounding sphere of all the meshes in the frame hierarchy.
|
||||
*
|
||||
* Parameters:
|
||||
* pFrameRoot
|
||||
* Pointer to the root node
|
||||
* pObjectCenter
|
||||
* Returns the center of the bounding sphere
|
||||
* pObjectRadius
|
||||
* Returns the radius of the bounding sphere
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI
|
||||
D3DXFrameCalculateBoundingSphere
|
||||
(
|
||||
@ -679,28 +678,29 @@ D3DXFrameCalculateBoundingSphere
|
||||
);
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXCreateKeyframedAnimationSet:
|
||||
// --------------------------------
|
||||
// This function creates a compressable keyframed animations set interface.
|
||||
//
|
||||
// Parameters:
|
||||
// pName
|
||||
// Name of the animation set
|
||||
// TicksPerSecond
|
||||
// Number of keyframe ticks that elapse per second
|
||||
// Playback
|
||||
// Playback mode of keyframe looping
|
||||
// NumAnimations
|
||||
// Number of SRT animations
|
||||
// NumCallbackKeys
|
||||
// Number of callback keys
|
||||
// pCallbackKeys
|
||||
// Array of callback keys
|
||||
// ppAnimationSet
|
||||
// Returns the animation set interface
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
/*
|
||||
* D3DXCreateKeyframedAnimationSet:
|
||||
* --------------------------------
|
||||
* This function creates a compressable keyframed animations set interface.
|
||||
*
|
||||
* Parameters:
|
||||
* pName
|
||||
* Name of the animation set
|
||||
* TicksPerSecond
|
||||
* Number of keyframe ticks that elapse per second
|
||||
* Playback
|
||||
* Playback mode of keyframe looping
|
||||
* NumAnimations
|
||||
* Number of SRT animations
|
||||
* NumCallbackKeys
|
||||
* Number of callback keys
|
||||
* pCallbackKeys
|
||||
* Array of callback keys
|
||||
* ppAnimationSet
|
||||
* Returns the animation set interface
|
||||
*
|
||||
*/
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateKeyframedAnimationSet
|
||||
(
|
||||
@ -714,29 +714,30 @@ D3DXCreateKeyframedAnimationSet
|
||||
);
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXCreateCompressedAnimationSet:
|
||||
// --------------------------------
|
||||
// This function creates a compressed animations set interface from
|
||||
// compressed data.
|
||||
//
|
||||
// Parameters:
|
||||
// pName
|
||||
// Name of the animation set
|
||||
// TicksPerSecond
|
||||
// Number of keyframe ticks that elapse per second
|
||||
// Playback
|
||||
// Playback mode of keyframe looping
|
||||
// pCompressedData
|
||||
// Compressed animation SRT data
|
||||
// NumCallbackKeys
|
||||
// Number of callback keys
|
||||
// pCallbackKeys
|
||||
// Array of callback keys
|
||||
// ppAnimationSet
|
||||
// Returns the animation set interface
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
/*
|
||||
* D3DXCreateCompressedAnimationSet:
|
||||
* --------------------------------
|
||||
* This function creates a compressed animations set interface from
|
||||
* compressed data.
|
||||
*
|
||||
* Parameters:
|
||||
* pName
|
||||
* Name of the animation set
|
||||
* TicksPerSecond
|
||||
* Number of keyframe ticks that elapse per second
|
||||
* Playback
|
||||
* Playback mode of keyframe looping
|
||||
* pCompressedData
|
||||
* Compressed animation SRT data
|
||||
* NumCallbackKeys
|
||||
* Number of callback keys
|
||||
* pCallbackKeys
|
||||
* Array of callback keys
|
||||
* ppAnimationSet
|
||||
* Returns the animation set interface
|
||||
*
|
||||
*/
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateCompressedAnimationSet
|
||||
(
|
||||
@ -762,6 +763,6 @@ D3DXCreateAnimationController
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif //__cplusplus
|
||||
#endif /*__cplusplus */
|
||||
|
||||
#endif //__D3DX9ANIM_H__
|
||||
#endif /*__D3DX9ANIM_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2010-2015 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2017 - 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.
|
||||
@ -82,18 +82,17 @@ static const char *g_dev_type_str[] =
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16_t x, y, dlt_x, dlt_y;
|
||||
/* If device is "absolute" coords will be in device specific units
|
||||
and axis min value will be less than max, otherwise coords will be
|
||||
relative to full viewport and min and max values will be zero. */
|
||||
int32_t x_abs, y_abs;
|
||||
int32_t x_min, y_min;
|
||||
int32_t x_max, y_max;
|
||||
int32_t x_rel, y_rel;
|
||||
bool l, r, m;
|
||||
bool wu, wd, whu, whd;
|
||||
} udev_input_mouse_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct input_absinfo info_x;
|
||||
struct input_absinfo info_y;
|
||||
udev_input_mouse_t mouse; /* touch-pad will be presented to RA/core as mouse */
|
||||
} udev_input_touchpad_t;
|
||||
|
||||
struct udev_input_device
|
||||
{
|
||||
int fd;
|
||||
@ -103,11 +102,7 @@ struct udev_input_device
|
||||
char devnode[PATH_MAX_LENGTH];
|
||||
enum udev_input_dev_type type;
|
||||
|
||||
union
|
||||
{
|
||||
udev_input_mouse_t mouse;
|
||||
udev_input_touchpad_t touchpad;
|
||||
} state;
|
||||
udev_input_mouse_t mouse;
|
||||
};
|
||||
|
||||
typedef void (*device_handle_cb)(void *data,
|
||||
@ -129,6 +124,10 @@ struct udev_input
|
||||
#ifdef UDEV_XKB_HANDLING
|
||||
bool xkb_handling;
|
||||
#endif
|
||||
|
||||
/* OS pointer coords (zeros if we don't have X11) */
|
||||
int pointer_x;
|
||||
int pointer_y;
|
||||
};
|
||||
|
||||
#ifdef UDEV_XKB_HANDLING
|
||||
@ -216,10 +215,7 @@ static udev_input_mouse_t *udev_get_mouse(struct udev_input *udev, unsigned port
|
||||
|
||||
if (mouse_index == settings->uints.input_mouse_index[port])
|
||||
{
|
||||
if (udev->devices[i]->type == UDEV_INPUT_MOUSE)
|
||||
mouse = &udev->devices[i]->state.mouse;
|
||||
else
|
||||
mouse = &udev->devices[i]->state.touchpad.mouse;
|
||||
mouse = &udev->devices[i]->mouse;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -229,54 +225,166 @@ static udev_input_mouse_t *udev_get_mouse(struct udev_input *udev, unsigned port
|
||||
return mouse;
|
||||
}
|
||||
|
||||
static void udev_handle_touchpad(void *data,
|
||||
const struct input_event *event, udev_input_device_t *dev)
|
||||
static void udev_mouse_set_x(udev_input_mouse_t *mouse, int32_t x, bool abs)
|
||||
{
|
||||
int16_t pos;
|
||||
unsigned width = 0;
|
||||
unsigned height = 0;
|
||||
udev_input_touchpad_t *touchpad = &dev->state.touchpad;
|
||||
udev_input_mouse_t *mouse = &dev->state.touchpad.mouse;
|
||||
video_viewport_t vp;
|
||||
|
||||
switch (event->type)
|
||||
if (abs)
|
||||
{
|
||||
case EV_ABS:
|
||||
video_driver_get_size(&width, &height);
|
||||
switch (event->code)
|
||||
{
|
||||
case ABS_X:
|
||||
pos = (float)(event->value - touchpad->info_x.minimum) /
|
||||
(touchpad->info_x.maximum - touchpad->info_x.minimum) * width;
|
||||
mouse->dlt_x += pos - mouse->x;
|
||||
mouse->x = pos;
|
||||
break;
|
||||
case ABS_Y:
|
||||
pos = (float)(event->value - touchpad->info_y.minimum) /
|
||||
(touchpad->info_y.maximum - touchpad->info_y.minimum) * height;
|
||||
mouse->dlt_y += pos - mouse->y;
|
||||
mouse->y = pos;
|
||||
}
|
||||
break;
|
||||
|
||||
case EV_KEY:
|
||||
switch (event->code)
|
||||
{
|
||||
case BTN_LEFT:
|
||||
mouse->l = event->value;
|
||||
break;
|
||||
case BTN_MIDDLE:
|
||||
mouse->m = event->value;
|
||||
break;
|
||||
case BTN_RIGHT:
|
||||
mouse->r = event->value;
|
||||
}
|
||||
mouse->x_rel += x - mouse->x_abs;
|
||||
mouse->x_abs = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
mouse->x_rel += x;
|
||||
if (video_driver_get_viewport_info(&vp))
|
||||
{
|
||||
mouse->x_abs += x;
|
||||
|
||||
if (mouse->x_abs < vp.x)
|
||||
mouse->x_abs = vp.x;
|
||||
else if (mouse->x_abs >= vp.x + vp.full_width)
|
||||
mouse->x_abs = vp.x + vp.full_width - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int16_t udev_mouse_get_x(const udev_input_mouse_t *mouse)
|
||||
{
|
||||
video_viewport_t vp;
|
||||
double src_width;
|
||||
double x;
|
||||
|
||||
if (!video_driver_get_viewport_info(&vp))
|
||||
return 0;
|
||||
|
||||
if (mouse->x_min < mouse->x_max) /* mouse coords are absolute */
|
||||
src_width = mouse->x_max - mouse->x_min + 1;
|
||||
else
|
||||
src_width = vp.full_width;
|
||||
|
||||
x = (double)vp.width / src_width * mouse->x_rel;
|
||||
|
||||
return x + (x < 0 ? -0.5 : 0.5);
|
||||
}
|
||||
|
||||
static void udev_mouse_set_y(udev_input_mouse_t *mouse, int32_t y, bool abs)
|
||||
{
|
||||
video_viewport_t vp;
|
||||
|
||||
if (abs)
|
||||
{
|
||||
mouse->y_rel += y - mouse->y_abs;
|
||||
mouse->y_abs = y;
|
||||
}
|
||||
else
|
||||
{
|
||||
mouse->y_rel += y;
|
||||
if (video_driver_get_viewport_info(&vp))
|
||||
{
|
||||
mouse->y_abs += y;
|
||||
|
||||
if (mouse->y_abs < vp.y)
|
||||
mouse->y_abs = vp.y;
|
||||
else if (mouse->y_abs >= vp.y + vp.full_height)
|
||||
mouse->y_abs = vp.y + vp.full_height - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int16_t udev_mouse_get_y(const udev_input_mouse_t *mouse)
|
||||
{
|
||||
video_viewport_t vp;
|
||||
double src_height;
|
||||
double y;
|
||||
|
||||
if (!video_driver_get_viewport_info(&vp))
|
||||
return 0;
|
||||
|
||||
if (mouse->y_min < mouse->y_max) /* mouse coords are absolute */
|
||||
src_height = mouse->y_max - mouse->y_min + 1;
|
||||
else
|
||||
src_height = vp.full_height;
|
||||
|
||||
y = (double)vp.height / src_height * mouse->y_rel;
|
||||
|
||||
return y + (y < 0 ? -0.5 : 0.5);
|
||||
}
|
||||
|
||||
static int16_t udev_mouse_get_pointer_x(const udev_input_mouse_t *mouse, bool screen)
|
||||
{
|
||||
video_viewport_t vp;
|
||||
double src_min;
|
||||
double src_width;
|
||||
int32_t x;
|
||||
|
||||
if (!video_driver_get_viewport_info(&vp))
|
||||
return 0;
|
||||
|
||||
if (mouse->x_min < mouse->x_max) /* mouse coords are absolute */
|
||||
{
|
||||
src_min = mouse->x_min;
|
||||
src_width = mouse->x_max - mouse->x_min + 1;
|
||||
}
|
||||
else /* mouse coords are viewport relative */
|
||||
{
|
||||
src_min = vp.x;
|
||||
if (screen)
|
||||
src_width = vp.full_width;
|
||||
else
|
||||
src_width = vp.width;
|
||||
}
|
||||
|
||||
x = -32767.0 + 65535.0 / src_width * (mouse->x_abs - src_min);
|
||||
x += (x < 0 ? -0.5 : 0.5);
|
||||
|
||||
if (x < -0x7fff)
|
||||
x = -0x7fff;
|
||||
else if(x > 0x7fff)
|
||||
x = 0x7fff;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static int16_t udev_mouse_get_pointer_y(const udev_input_mouse_t *mouse, bool screen)
|
||||
{
|
||||
video_viewport_t vp;
|
||||
double src_min;
|
||||
double src_height;
|
||||
int32_t y;
|
||||
|
||||
if (!video_driver_get_viewport_info(&vp))
|
||||
return 0;
|
||||
|
||||
if (mouse->y_min < mouse->y_max) /* mouse coords are absolute */
|
||||
{
|
||||
src_min = mouse->y_min;
|
||||
src_height = mouse->y_max - mouse->y_min + 1;
|
||||
}
|
||||
else /* mouse coords are viewport relative */
|
||||
{
|
||||
src_min = vp.y;
|
||||
if (screen)
|
||||
src_height = vp.full_height;
|
||||
else
|
||||
src_height = vp.height;
|
||||
}
|
||||
|
||||
y = -32767.0 + 65535.0 / src_height * (mouse->y_abs - src_min);
|
||||
y += (y < 0 ? -0.5 : 0.5);
|
||||
|
||||
if (y < -0x7fff)
|
||||
y = -0x7fff;
|
||||
else if(y > 0x7fff)
|
||||
y = 0x7fff;
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
static void udev_handle_mouse(void *data,
|
||||
const struct input_event *event, udev_input_device_t *dev)
|
||||
{
|
||||
udev_input_mouse_t *mouse = &dev->state.mouse;
|
||||
udev_input_mouse_t *mouse = &dev->mouse;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
@ -303,10 +411,10 @@ static void udev_handle_mouse(void *data,
|
||||
switch (event->code)
|
||||
{
|
||||
case REL_X:
|
||||
mouse->dlt_x += event->value;
|
||||
udev_mouse_set_x(mouse, event->value, false);
|
||||
break;
|
||||
case REL_Y:
|
||||
mouse->dlt_y += event->value;
|
||||
udev_mouse_set_y(mouse, event->value, false);
|
||||
break;
|
||||
case REL_WHEEL:
|
||||
if (event->value == 1)
|
||||
@ -321,6 +429,19 @@ static void udev_handle_mouse(void *data,
|
||||
mouse->whd = 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case EV_ABS:
|
||||
switch (event->code)
|
||||
{
|
||||
case ABS_X:
|
||||
udev_mouse_set_x(mouse, event->value, true);
|
||||
break;
|
||||
case ABS_Y:
|
||||
udev_mouse_set_y(mouse, event->value, true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -330,6 +451,7 @@ static bool udev_input_add_device(udev_input_t *udev,
|
||||
int fd;
|
||||
struct stat st;
|
||||
struct epoll_event event;
|
||||
struct input_absinfo absinfo;
|
||||
udev_input_device_t **tmp;
|
||||
udev_input_device_t *device = NULL;
|
||||
|
||||
@ -354,10 +476,38 @@ static bool udev_input_add_device(udev_input_t *udev,
|
||||
strlcpy(device->devnode, devnode, sizeof(device->devnode));
|
||||
|
||||
/* Touchpads report in absolute coords. */
|
||||
if (type == UDEV_INPUT_TOUCHPAD &&
|
||||
(ioctl(fd, EVIOCGABS(ABS_X), &device->state.touchpad.info_x) < 0 ||
|
||||
ioctl(fd, EVIOCGABS(ABS_Y), &device->state.touchpad.info_y) < 0))
|
||||
goto error;
|
||||
if (type == UDEV_INPUT_TOUCHPAD)
|
||||
{
|
||||
if (ioctl(fd, EVIOCGABS(ABS_X), &absinfo) < 0 ||
|
||||
absinfo.minimum >= absinfo.maximum)
|
||||
goto error;
|
||||
|
||||
device->mouse.x_min = absinfo.minimum;
|
||||
device->mouse.x_max = absinfo.maximum;
|
||||
|
||||
if (ioctl(fd, EVIOCGABS(ABS_Y), &absinfo) < 0 ||
|
||||
absinfo.minimum >= absinfo.maximum)
|
||||
goto error;
|
||||
|
||||
device->mouse.y_min = absinfo.minimum;
|
||||
device->mouse.y_max = absinfo.maximum;
|
||||
}
|
||||
/* UDEV_INPUT_MOUSE may report in absolute coords too */
|
||||
else if (type == UDEV_INPUT_MOUSE && ioctl(fd, EVIOCGABS(ABS_X), &absinfo) >= 0)
|
||||
{
|
||||
if (absinfo.minimum >= absinfo.maximum)
|
||||
goto error;
|
||||
|
||||
device->mouse.x_min = absinfo.minimum;
|
||||
device->mouse.x_max = absinfo.maximum;
|
||||
|
||||
if (ioctl(fd, EVIOCGABS(ABS_Y), &absinfo) < 0 ||
|
||||
absinfo.minimum >= absinfo.maximum)
|
||||
goto error;
|
||||
|
||||
device->mouse.y_min = absinfo.minimum;
|
||||
device->mouse.y_max = absinfo.maximum;
|
||||
}
|
||||
|
||||
tmp = ( udev_input_device_t**)realloc(udev->devices,
|
||||
(udev->num_devices + 1) * sizeof(*udev->devices));
|
||||
@ -440,7 +590,7 @@ static void udev_input_handle_hotplug(udev_input_t *udev)
|
||||
else if (val_touchpad && string_is_equal_fast(val_touchpad, "1", 1) && devnode)
|
||||
{
|
||||
dev_type = UDEV_INPUT_TOUCHPAD;
|
||||
cb = udev_handle_touchpad;
|
||||
cb = udev_handle_mouse;
|
||||
}
|
||||
else
|
||||
goto end;
|
||||
@ -477,11 +627,11 @@ static void udev_input_get_pointer_position(int *x, int *y)
|
||||
|
||||
static bool udev_input_poll_hotplug_available(struct udev_monitor *dev)
|
||||
{
|
||||
struct pollfd fds;
|
||||
struct pollfd fds;
|
||||
|
||||
fds.fd = udev_monitor_get_fd(dev);
|
||||
fds.events = POLLIN;
|
||||
fds.revents = 0;
|
||||
fds.fd = udev_monitor_get_fd(dev);
|
||||
fds.events = POLLIN;
|
||||
fds.revents = 0;
|
||||
|
||||
return (poll(&fds, 1, 0) == 1) && (fds.revents & POLLIN);
|
||||
}
|
||||
@ -491,30 +641,22 @@ static void udev_input_poll(void *data)
|
||||
int i, ret;
|
||||
struct epoll_event events[32];
|
||||
udev_input_mouse_t *mouse = NULL;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
udev_input_t *udev = (udev_input_t*)data;
|
||||
|
||||
#ifdef HAVE_X11
|
||||
if (video_driver_display_type_get() == RARCH_DISPLAY_X11)
|
||||
udev_input_get_pointer_position(&x, &y);
|
||||
udev_input_get_pointer_position(&udev->pointer_x, &udev->pointer_y);
|
||||
#endif
|
||||
|
||||
for (i = 0; i < udev->num_devices; ++i)
|
||||
{
|
||||
if (udev->devices[i]->type == UDEV_INPUT_MOUSE)
|
||||
{
|
||||
mouse = &udev->devices[i]->state.mouse;
|
||||
mouse->x = x;
|
||||
mouse->y = y;
|
||||
}
|
||||
else if (udev->devices[i]->type == UDEV_INPUT_TOUCHPAD)
|
||||
mouse = &udev->devices[i]->state.touchpad.mouse;
|
||||
else
|
||||
if (udev->devices[i]->type == UDEV_INPUT_KEYBOARD)
|
||||
continue;
|
||||
|
||||
mouse->dlt_x = 0;
|
||||
mouse->dlt_y = 0;
|
||||
mouse = &udev->devices[i]->mouse;
|
||||
|
||||
mouse->x_rel = 0;
|
||||
mouse->y_rel = 0;
|
||||
mouse->wu = false;
|
||||
mouse->wd = false;
|
||||
mouse->whu = false;
|
||||
@ -548,18 +690,22 @@ static void udev_input_poll(void *data)
|
||||
udev->joypad->poll();
|
||||
}
|
||||
|
||||
static bool udev_pointer_is_off_window(udev_input_mouse_t *mouse)
|
||||
static bool udev_pointer_is_off_window(const udev_input_t *udev)
|
||||
{
|
||||
#ifdef HAVE_X11
|
||||
struct video_viewport view;
|
||||
bool r = video_driver_get_viewport_info(&view);
|
||||
|
||||
if (r)
|
||||
r = mouse->x < view.x ||
|
||||
mouse->x >= view.x + view.width ||
|
||||
mouse->y < view.y ||
|
||||
mouse->y >= view.y + view.height;
|
||||
r = udev->pointer_x < view.x ||
|
||||
udev->pointer_x >= view.x + view.width ||
|
||||
udev->pointer_y < view.y ||
|
||||
udev->pointer_y >= view.y + view.height;
|
||||
|
||||
return r;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int16_t udev_mouse_state(udev_input_t *udev,
|
||||
@ -571,15 +717,15 @@ static int16_t udev_mouse_state(udev_input_t *udev,
|
||||
return 0;
|
||||
|
||||
if (id != RETRO_DEVICE_ID_MOUSE_X && id != RETRO_DEVICE_ID_MOUSE_Y &&
|
||||
udev_pointer_is_off_window(mouse))
|
||||
udev_pointer_is_off_window(udev))
|
||||
return 0;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_MOUSE_X:
|
||||
return screen ? mouse->x : mouse->dlt_x;
|
||||
return screen ? udev->pointer_x : udev_mouse_get_x(mouse);
|
||||
case RETRO_DEVICE_ID_MOUSE_Y:
|
||||
return screen ? mouse->y : mouse->dlt_y;
|
||||
return screen ? udev->pointer_y : udev_mouse_get_y(mouse);
|
||||
case RETRO_DEVICE_ID_MOUSE_LEFT:
|
||||
return mouse->l;
|
||||
case RETRO_DEVICE_ID_MOUSE_RIGHT:
|
||||
@ -610,9 +756,9 @@ static int16_t udev_lightgun_state(udev_input_t *udev,
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_X:
|
||||
return mouse->dlt_x;
|
||||
return udev_mouse_get_x(mouse);
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_Y:
|
||||
return mouse->dlt_y;
|
||||
return udev_mouse_get_y(mouse);
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
|
||||
return mouse->l;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_CURSOR:
|
||||
@ -638,11 +784,11 @@ static int16_t udev_analog_pressed(const struct retro_keybind *binds,
|
||||
|
||||
input_conv_analog_id_to_bind_id(idx, id, &id_minus, &id_plus);
|
||||
|
||||
if ( binds[id_minus].valid
|
||||
if ( binds[id_minus].valid
|
||||
&& BIT_GET(udev_key_state,
|
||||
rarch_keysym_lut[binds[id_minus].key]))
|
||||
pressed_minus = -0x7fff;
|
||||
if ( binds[id_plus].valid
|
||||
if ( binds[id_plus].valid
|
||||
&& BIT_GET(udev_key_state,
|
||||
rarch_keysym_lut[binds[id_plus].key]))
|
||||
pressed_plus = 0x7fff;
|
||||
@ -653,45 +799,17 @@ static int16_t udev_analog_pressed(const struct retro_keybind *binds,
|
||||
static int16_t udev_pointer_state(udev_input_t *udev,
|
||||
unsigned port, unsigned id, bool screen)
|
||||
{
|
||||
struct video_viewport vp;
|
||||
bool inside = false;
|
||||
int16_t res_x = 0;
|
||||
int16_t res_y = 0;
|
||||
int16_t res_screen_x = 0;
|
||||
int16_t res_screen_y = 0;
|
||||
udev_input_mouse_t *mouse = udev_get_mouse(udev, port);
|
||||
|
||||
vp.x = 0;
|
||||
vp.y = 0;
|
||||
vp.width = 0;
|
||||
vp.height = 0;
|
||||
vp.full_width = 0;
|
||||
vp.full_height = 0;
|
||||
udev_input_mouse_t *mouse = udev_get_mouse(udev, port);
|
||||
|
||||
if (!mouse)
|
||||
return 0;
|
||||
|
||||
if (!(video_driver_translate_coord_viewport_wrap(&vp,
|
||||
mouse->x, mouse->y, &res_x, &res_y, &res_screen_x, &res_screen_y)))
|
||||
return 0;
|
||||
|
||||
if (screen)
|
||||
{
|
||||
res_x = res_screen_x;
|
||||
res_y = res_screen_y;
|
||||
}
|
||||
|
||||
inside = (res_x >= -0x7fff) && (res_y >= -0x7fff);
|
||||
|
||||
if (!inside)
|
||||
return 0;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_POINTER_X:
|
||||
return res_x;
|
||||
return udev_mouse_get_pointer_x(mouse, screen);
|
||||
case RETRO_DEVICE_ID_POINTER_Y:
|
||||
return res_y;
|
||||
return udev_mouse_get_pointer_y(mouse, screen);
|
||||
case RETRO_DEVICE_ID_POINTER_PRESSED:
|
||||
return mouse->l;
|
||||
}
|
||||
@ -785,6 +903,7 @@ static bool open_devices(udev_input_t *udev,
|
||||
struct udev_list_entry *devs = NULL;
|
||||
struct udev_list_entry *item = NULL;
|
||||
struct udev_enumerate *enumerate = udev_enumerate_new(udev->udev);
|
||||
int device_index = 0;
|
||||
|
||||
if (!enumerate)
|
||||
return false;
|
||||
@ -808,11 +927,13 @@ static bool open_devices(udev_input_t *udev,
|
||||
|
||||
if (fd != -1)
|
||||
{
|
||||
RARCH_LOG("[udev] Adding device %s as type %s.\n",
|
||||
devnode, type_str);
|
||||
if (!udev_input_add_device(udev, type, devnode, cb))
|
||||
RARCH_ERR("[udev] Failed to open device: %s (%s).\n",
|
||||
devnode, strerror(errno));
|
||||
else
|
||||
RARCH_LOG("[udev]: %s #%d (%s).\n",
|
||||
type == UDEV_INPUT_KEYBOARD ? "Keyboard" : "Mouse",
|
||||
device_index++, devnode);
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
@ -878,13 +999,13 @@ static void *udev_input_init(const char *joypad_driver)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!open_devices(udev, UDEV_INPUT_TOUCHPAD, udev_handle_touchpad))
|
||||
if (!open_devices(udev, UDEV_INPUT_TOUCHPAD, udev_handle_mouse))
|
||||
{
|
||||
RARCH_ERR("Failed to open touchpads.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* If using KMS and we forgot this,
|
||||
/* If using KMS and we forgot this,
|
||||
* we could lock ourselves out completely. */
|
||||
if (!udev->num_devices)
|
||||
RARCH_WARN("[udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*?\n");
|
||||
|
@ -323,6 +323,49 @@ static void winraw_init_mouse_xy_mapping()
|
||||
}
|
||||
}
|
||||
|
||||
static int16_t winraw_lightgun_state(winraw_input_t *wr,
|
||||
unsigned port, unsigned id)
|
||||
{
|
||||
unsigned i;
|
||||
settings_t *settings = config_get_ptr();
|
||||
winraw_mouse_t *mouse = NULL;
|
||||
|
||||
if (port >= MAX_USERS)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < g_mouse_cnt; ++i)
|
||||
{
|
||||
if (i == settings->uints.input_mouse_index[port])
|
||||
{
|
||||
mouse = &wr->mice[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mouse)
|
||||
return 0;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_X:
|
||||
return mouse->dlt_x;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_Y:
|
||||
return mouse->dlt_y;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
|
||||
return mouse->btn_l ? 1 : 0;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_CURSOR:
|
||||
return mouse->btn_m ? 1 : 0;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_TURBO:
|
||||
return mouse->btn_r ? 1 : 0;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_START:
|
||||
return (mouse->btn_m && mouse->btn_r) ? 1 : 0;
|
||||
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE:
|
||||
return mouse->btn_m && mouse->btn_l ? 1 : 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void winraw_update_mouse_state(winraw_mouse_t *mouse, RAWMOUSE *state)
|
||||
{
|
||||
POINT crs_pos;
|
||||
@ -555,6 +598,9 @@ static int16_t winraw_input_state(void *d,
|
||||
if (binds[port])
|
||||
return input_joypad_analog(wr->joypad, joypad_info,
|
||||
port, index, id, binds[port]);
|
||||
break;
|
||||
case RETRO_DEVICE_LIGHTGUN:
|
||||
return winraw_lightgun_state(wr, port, id);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -587,7 +633,8 @@ static uint64_t winraw_get_capabilities(void *u)
|
||||
return (1 << RETRO_DEVICE_KEYBOARD) |
|
||||
(1 << RETRO_DEVICE_MOUSE) |
|
||||
(1 << RETRO_DEVICE_JOYPAD) |
|
||||
(1 << RETRO_DEVICE_ANALOG);
|
||||
(1 << RETRO_DEVICE_ANALOG) |
|
||||
(1 << RETRO_DEVICE_LIGHTGUN);
|
||||
}
|
||||
|
||||
static void winraw_grab_mouse(void *d, bool grab)
|
||||
|
@ -3063,6 +3063,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3063,6 +3063,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3057,6 +3057,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -2926,6 +2926,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3095,6 +3095,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3149,6 +3149,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3065,6 +3065,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"エントリーの名前変更を許す")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3058,6 +3058,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -1307,6 +1307,20 @@ MSG_HASH(MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE,
|
||||
"materialui_icons_enable")
|
||||
MSG_HASH(MENU_ENUM_LABEL_RENAME_ENTRY,
|
||||
"rename_entry")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_LOAD_CORE,
|
||||
"menu_show_load_core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"menu_show_load_content")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_INFORMATION,
|
||||
"menu_show_information")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"menu_show_configurations")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_HELP,
|
||||
"menu_show_help")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"menu_show_quit_retroarch")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MENU_SHOW_REBOOT,
|
||||
"menu_show_reboot")
|
||||
MSG_HASH(MENU_ENUM_LABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT,
|
||||
"quick_menu_show_take_screenshot")
|
||||
MSG_HASH(MENU_ENUM_LABEL_QUICK_MENU_SHOW_SAVE_LOAD_STATE,
|
||||
|
@ -2926,6 +2926,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3988,6 +3988,48 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option."
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu"
|
||||
)
|
||||
@ -4059,4 +4101,4 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION,
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option."
|
||||
)
|
||||
|
@ -3033,6 +3033,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3116,6 +3116,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3151,6 +3151,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_RENAME_ENTRY,
|
||||
"Rename the title of the entry.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY,
|
||||
"Rename")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -3087,6 +3087,34 @@ MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow the user to rename entries in collections.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME,
|
||||
"Allow to rename entries")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
"Show Load Core")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
|
||||
"Show/hide the 'Load Core' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show Load Content")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Show/hide the 'Load Content' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Show Information")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
|
||||
"Show/hide the 'Information' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show Configurations")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
"Show/hide the 'Configurations' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Show Help")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Quit RetroArch' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
"Show/hide the 'Reboot' option.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS,
|
||||
"Quick Menu")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
|
@ -621,6 +621,8 @@ chd_error cdlz_codec_decompress(void *codec, const uint8_t *src, uint32_t comple
|
||||
/* reset and decode */
|
||||
lzma_codec_decompress(&cdlz->base_decompressor, &src[header_bytes], complen_base, &cdlz->buffer[0], frames * CD_MAX_SECTOR_DATA);
|
||||
#ifdef WANT_SUBCODE
|
||||
if (header_bytes + complen_base >= complen)
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
zlib_codec_decompress(&cdlz->subcode_decompressor, &src[header_bytes + complen_base], complen - complen_base - header_bytes, &cdlz->buffer[frames * CD_MAX_SECTOR_DATA], frames * CD_MAX_SUBCODE_DATA);
|
||||
#endif
|
||||
|
||||
@ -2047,170 +2049,178 @@ static chd_error hunk_read_into_cache(chd_file *chd, UINT32 hunknum)
|
||||
|
||||
static chd_error hunk_read_into_memory(chd_file *chd, UINT32 hunknum, UINT8 *dest)
|
||||
{
|
||||
chd_error err;
|
||||
chd_error err;
|
||||
|
||||
/* punt if no file */
|
||||
if (chd->file == NULL)
|
||||
return CHDERR_INVALID_FILE;
|
||||
/* punt if no file */
|
||||
if (chd->file == NULL)
|
||||
return CHDERR_INVALID_FILE;
|
||||
|
||||
/* return an error if out of range */
|
||||
if (hunknum >= chd->header.totalhunks)
|
||||
return CHDERR_HUNK_OUT_OF_RANGE;
|
||||
/* return an error if out of range */
|
||||
if (hunknum >= chd->header.totalhunks)
|
||||
return CHDERR_HUNK_OUT_OF_RANGE;
|
||||
|
||||
if (dest == NULL)
|
||||
return CHDERR_INVALID_PARAMETER;
|
||||
if (dest == NULL)
|
||||
return CHDERR_INVALID_PARAMETER;
|
||||
|
||||
if (chd->header.version < 5)
|
||||
{
|
||||
void* codec;
|
||||
map_entry *entry = &chd->map[hunknum];
|
||||
UINT32 bytes;
|
||||
if (chd->header.version < 5)
|
||||
{
|
||||
void* codec;
|
||||
map_entry *entry = &chd->map[hunknum];
|
||||
UINT32 bytes;
|
||||
|
||||
/* switch off the entry type */
|
||||
switch (entry->flags & MAP_ENTRY_FLAG_TYPE_MASK)
|
||||
{
|
||||
/* compressed data */
|
||||
case V34_MAP_ENTRY_TYPE_COMPRESSED:
|
||||
/* switch off the entry type */
|
||||
switch (entry->flags & MAP_ENTRY_FLAG_TYPE_MASK)
|
||||
{
|
||||
/* compressed data */
|
||||
case V34_MAP_ENTRY_TYPE_COMPRESSED:
|
||||
|
||||
/* read it into the decompression buffer */
|
||||
core_fseek(chd->file, entry->offset, SEEK_SET);
|
||||
bytes = core_fread(chd->file, chd->compressed, entry->length);
|
||||
if (bytes != entry->length)
|
||||
return CHDERR_READ_ERROR;
|
||||
/* read it into the decompression buffer */
|
||||
if (core_fseek(chd->file, entry->offset, SEEK_SET) != 0)
|
||||
return CHDERR_READ_ERROR;
|
||||
bytes = core_fread(chd->file, chd->compressed, entry->length);
|
||||
if (bytes != entry->length)
|
||||
return CHDERR_READ_ERROR;
|
||||
|
||||
/* now decompress using the codec */
|
||||
err = CHDERR_NONE;
|
||||
codec = &chd->zlib_codec_data;
|
||||
if (chd->codecintf[0]->decompress != NULL)
|
||||
err = (*chd->codecintf[0]->decompress)(codec, chd->compressed, entry->length, dest, chd->header.hunkbytes);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
break;
|
||||
/* now decompress using the codec */
|
||||
err = CHDERR_NONE;
|
||||
codec = &chd->zlib_codec_data;
|
||||
if (chd->codecintf[0]->decompress != NULL)
|
||||
err = (*chd->codecintf[0]->decompress)(codec, chd->compressed, entry->length, dest, chd->header.hunkbytes);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
break;
|
||||
|
||||
/* uncompressed data */
|
||||
case V34_MAP_ENTRY_TYPE_UNCOMPRESSED:
|
||||
core_fseek(chd->file, entry->offset, SEEK_SET);
|
||||
bytes = core_fread(chd->file, dest, chd->header.hunkbytes);
|
||||
if (bytes != chd->header.hunkbytes)
|
||||
return CHDERR_READ_ERROR;
|
||||
break;
|
||||
/* uncompressed data */
|
||||
case V34_MAP_ENTRY_TYPE_UNCOMPRESSED:
|
||||
if (core_fseek(chd->file, entry->offset, SEEK_SET) != 0)
|
||||
return CHDERR_READ_ERROR;
|
||||
bytes = core_fread(chd->file, dest, chd->header.hunkbytes);
|
||||
if (bytes != chd->header.hunkbytes)
|
||||
return CHDERR_READ_ERROR;
|
||||
break;
|
||||
|
||||
/* mini-compressed data */
|
||||
case V34_MAP_ENTRY_TYPE_MINI:
|
||||
put_bigendian_uint64(&dest[0], entry->offset);
|
||||
for (bytes = 8; bytes < chd->header.hunkbytes; bytes++)
|
||||
dest[bytes] = dest[bytes - 8];
|
||||
break;
|
||||
/* mini-compressed data */
|
||||
case V34_MAP_ENTRY_TYPE_MINI:
|
||||
put_bigendian_uint64(&dest[0], entry->offset);
|
||||
for (bytes = 8; bytes < chd->header.hunkbytes; bytes++)
|
||||
dest[bytes] = dest[bytes - 8];
|
||||
break;
|
||||
|
||||
/* self-referenced data */
|
||||
case V34_MAP_ENTRY_TYPE_SELF_HUNK:
|
||||
/* self-referenced data */
|
||||
case V34_MAP_ENTRY_TYPE_SELF_HUNK:
|
||||
#ifdef NEED_CACHE_HUNK
|
||||
if (chd->cachehunk == entry->offset && dest == chd->cache)
|
||||
break;
|
||||
if (chd->cachehunk == entry->offset && dest == chd->cache)
|
||||
break;
|
||||
#endif
|
||||
return hunk_read_into_memory(chd, entry->offset, dest);
|
||||
return hunk_read_into_memory(chd, entry->offset, dest);
|
||||
|
||||
/* parent-referenced data */
|
||||
case V34_MAP_ENTRY_TYPE_PARENT_HUNK:
|
||||
err = hunk_read_into_memory(chd->parent, entry->offset, dest);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
break;
|
||||
}
|
||||
return CHDERR_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
void* codec = NULL;
|
||||
/* get a pointer to the map entry */
|
||||
uint64_t blockoffs;
|
||||
uint32_t blocklen;
|
||||
/* parent-referenced data */
|
||||
case V34_MAP_ENTRY_TYPE_PARENT_HUNK:
|
||||
err = hunk_read_into_memory(chd->parent, entry->offset, dest);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
break;
|
||||
}
|
||||
return CHDERR_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
void* codec = NULL;
|
||||
/* get a pointer to the map entry */
|
||||
uint64_t blockoffs;
|
||||
uint32_t blocklen;
|
||||
#ifdef VERIFY_BLOCK_CRC
|
||||
uint16_t blockcrc;
|
||||
uint16_t blockcrc;
|
||||
#endif
|
||||
uint8_t *rawmap = &chd->header.rawmap[chd->header.mapentrybytes * hunknum];
|
||||
uint8_t *rawmap = &chd->header.rawmap[chd->header.mapentrybytes * hunknum];
|
||||
|
||||
/* uncompressed case */
|
||||
/* TODO
|
||||
if (!compressed())
|
||||
{
|
||||
blockoffs = uint64_t(be_read(rawmap, 4)) * uint64_t(m_hunkbytes);
|
||||
if (blockoffs != 0)
|
||||
file_read(blockoffs, dest, m_hunkbytes);
|
||||
else if (m_parent_missing)
|
||||
throw CHDERR_REQUIRES_PARENT;
|
||||
else if (m_parent != nullptr)
|
||||
m_parent->read_hunk(hunknum, dest);
|
||||
else
|
||||
memset(dest, 0, m_hunkbytes);
|
||||
return CHDERR_NONE;
|
||||
}*/
|
||||
/* uncompressed case */
|
||||
/* TODO
|
||||
if (!compressed())
|
||||
{
|
||||
blockoffs = uint64_t(be_read(rawmap, 4)) * uint64_t(m_hunkbytes);
|
||||
if (blockoffs != 0)
|
||||
file_read(blockoffs, dest, m_hunkbytes);
|
||||
else if (m_parent_missing)
|
||||
throw CHDERR_REQUIRES_PARENT;
|
||||
else if (m_parent != nullptr)
|
||||
m_parent->read_hunk(hunknum, dest);
|
||||
else
|
||||
memset(dest, 0, m_hunkbytes);
|
||||
return CHDERR_NONE;
|
||||
}*/
|
||||
|
||||
/* compressed case */
|
||||
blocklen = get_bigendian_uint24(&rawmap[1]);
|
||||
blockoffs = get_bigendian_uint48(&rawmap[4]);
|
||||
/* compressed case */
|
||||
blocklen = get_bigendian_uint24(&rawmap[1]);
|
||||
blockoffs = get_bigendian_uint48(&rawmap[4]);
|
||||
#ifdef VERIFY_BLOCK_CRC
|
||||
blockcrc = get_bigendian_uint16(&rawmap[10]);
|
||||
blockcrc = get_bigendian_uint16(&rawmap[10]);
|
||||
#endif
|
||||
switch (rawmap[0])
|
||||
{
|
||||
case COMPRESSION_TYPE_0:
|
||||
case COMPRESSION_TYPE_1:
|
||||
case COMPRESSION_TYPE_2:
|
||||
case COMPRESSION_TYPE_3:
|
||||
core_fseek(chd->file, blockoffs, SEEK_SET);
|
||||
core_fread(chd->file, chd->compressed, blocklen);
|
||||
switch (chd->codecintf[rawmap[0]]->compression)
|
||||
{
|
||||
case CHD_CODEC_CD_LZMA:
|
||||
codec = &chd->cdlz_codec_data;
|
||||
break;
|
||||
switch (rawmap[0])
|
||||
{
|
||||
case COMPRESSION_TYPE_0:
|
||||
case COMPRESSION_TYPE_1:
|
||||
case COMPRESSION_TYPE_2:
|
||||
case COMPRESSION_TYPE_3:
|
||||
if (core_fseek(chd->file, blockoffs, SEEK_SET) != 0)
|
||||
return CHDERR_READ_ERROR;
|
||||
if (core_fread(chd->file, chd->compressed, blocklen) != blocklen)
|
||||
return CHDERR_READ_ERROR;
|
||||
|
||||
case CHD_CODEC_CD_ZLIB:
|
||||
codec = &chd->cdzl_codec_data;
|
||||
break;
|
||||
switch (chd->codecintf[rawmap[0]]->compression)
|
||||
{
|
||||
case CHD_CODEC_CD_LZMA:
|
||||
codec = &chd->cdlz_codec_data;
|
||||
break;
|
||||
|
||||
case CHD_CODEC_CD_FLAC:
|
||||
codec = &chd->cdfl_codec_data;
|
||||
break;
|
||||
}
|
||||
if (codec==NULL)
|
||||
return CHDERR_CODEC_ERROR;
|
||||
err = (*chd->codecintf[rawmap[0]]->decompress)(codec, chd->compressed, blocklen, dest, chd->header.hunkbytes);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
case CHD_CODEC_CD_ZLIB:
|
||||
codec = &chd->cdzl_codec_data;
|
||||
break;
|
||||
|
||||
case CHD_CODEC_CD_FLAC:
|
||||
codec = &chd->cdfl_codec_data;
|
||||
break;
|
||||
}
|
||||
if (codec==NULL)
|
||||
return CHDERR_CODEC_ERROR;
|
||||
err = (*chd->codecintf[rawmap[0]]->decompress)(codec, chd->compressed, blocklen, dest, chd->header.hunkbytes);
|
||||
if (err != CHDERR_NONE)
|
||||
return err;
|
||||
#ifdef VERIFY_BLOCK_CRC
|
||||
if (crc16(dest, chd->header.hunkbytes) != blockcrc)
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
if (crc16(dest, chd->header.hunkbytes) != blockcrc)
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
#endif
|
||||
return CHDERR_NONE;
|
||||
return CHDERR_NONE;
|
||||
|
||||
case COMPRESSION_NONE:
|
||||
core_fseek(chd->file, blockoffs, SEEK_SET);
|
||||
core_fread(chd->file, dest, chd->header.hunkbytes);
|
||||
case COMPRESSION_NONE:
|
||||
if (core_fseek(chd->file, blockoffs, SEEK_SET) != 0)
|
||||
return CHDERR_READ_ERROR;
|
||||
if (core_fread(chd->file, dest, chd->header.hunkbytes) != chd->header.hunkbytes)
|
||||
return CHDERR_READ_ERROR;
|
||||
#ifdef VERIFY_BLOCK_CRC
|
||||
if (crc16(dest, chd->header.hunkbytes) != blockcrc)
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
if (crc16(dest, chd->header.hunkbytes) != blockcrc)
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
#endif
|
||||
return CHDERR_NONE;
|
||||
return CHDERR_NONE;
|
||||
|
||||
case COMPRESSION_SELF:
|
||||
return hunk_read_into_memory(chd, blockoffs, dest);
|
||||
case COMPRESSION_SELF:
|
||||
return hunk_read_into_memory(chd, blockoffs, dest);
|
||||
|
||||
case COMPRESSION_PARENT:
|
||||
/* TODO */
|
||||
case COMPRESSION_PARENT:
|
||||
/* TODO */
|
||||
#if 0
|
||||
if (m_parent_missing)
|
||||
return CHDERR_REQUIRES_PARENT;
|
||||
return m_parent->read_bytes(uint64_t(blockoffs) * uint64_t(m_parent->unit_bytes()), dest, m_hunkbytes);
|
||||
if (m_parent_missing)
|
||||
return CHDERR_REQUIRES_PARENT;
|
||||
return m_parent->read_bytes(uint64_t(blockoffs) * uint64_t(m_parent->unit_bytes()), dest, m_hunkbytes);
|
||||
#endif
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
}
|
||||
return CHDERR_NONE;
|
||||
}
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
}
|
||||
|
||||
/* We should not reach this code */
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
return CHDERR_NONE;
|
||||
}
|
||||
|
||||
/* We should not reach this code */
|
||||
return CHDERR_DECOMPRESSION_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
@ -300,10 +300,14 @@ enum huffman_error huffman_import_tree_huffman(struct huffman_decoder* decoder,
|
||||
/* assign canonical codes for all nodes based on their code lengths */
|
||||
error = huffman_assign_canonical_codes(decoder);
|
||||
if (error != HUFFERR_NONE)
|
||||
{
|
||||
delete_huffman_decoder(smallhuff);
|
||||
return error;
|
||||
}
|
||||
|
||||
/* build the lookup table */
|
||||
huffman_build_lookup_table(decoder);
|
||||
delete_huffman_decoder(smallhuff);
|
||||
|
||||
/* determine final input length and report errors */
|
||||
return bitstream_overflow(bitbuf) ? HUFFERR_INPUT_BUFFER_TOO_SMALL : HUFFERR_NONE;
|
||||
|
@ -4736,10 +4736,6 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_accounts_cheevos_list);
|
||||
break;
|
||||
case MENU_LABEL_SCAN_FILE:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_scan_file);
|
||||
break;
|
||||
case MENU_LABEL_SCAN_DIRECTORY:
|
||||
case MENU_LABEL_FAVORITES:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_content_list);
|
||||
break;
|
||||
|
@ -303,6 +303,13 @@ default_sublabel_macro(action_bind_sublabel_quick_menu_show_save_game_overrides,
|
||||
default_sublabel_macro(action_bind_sublabel_quick_menu_show_information, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_INFORMATION)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_favorites_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_FAVORITES)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_images_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_IMAGES)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_load_core, MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_load_content, MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_information, MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_configurations, MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_help, MENU_ENUM_SUBLABEL_MENU_SHOW_HELP)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_quit_retroarch, MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_reboot, MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_online_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_show_core_updater, MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_music_tab, MENU_ENUM_SUBLABEL_XMB_SHOW_MUSIC)
|
||||
@ -645,6 +652,27 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_XMB_SHOW_MUSIC:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_music_tab);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_LOAD_CORE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_load_core);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_LOAD_CONTENT:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_load_content);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_INFORMATION:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_information);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_CONFIGURATIONS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_configurations);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_HELP:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_help);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_QUIT_RETROARCH:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_quit_retroarch);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_REBOOT:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_reboot);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_SHOW_ONLINE_UPDATER:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_show_online_updater);
|
||||
break;
|
||||
|
@ -4322,12 +4322,18 @@ static int xmb_list_push(void *data, void *userdata,
|
||||
if (frontend_driver_has_fork())
|
||||
#endif
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
if (settings->bools.menu_show_load_core)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
}
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
if (settings->bools.menu_show_load_content)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
@ -4347,23 +4353,42 @@ static int xmb_list_push(void *data, void *userdata,
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
if (settings->bools.menu_show_information)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
#ifndef HAVE_DYNAMIC
|
||||
entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
#endif
|
||||
entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
if (settings->bools.menu_show_configurations)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
if (settings->bools.menu_show_help)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
#if !defined(IOS)
|
||||
entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
if (settings->bools.menu_show_quit_retroarch)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
#endif
|
||||
entry.enum_idx = MENU_ENUM_LABEL_REBOOT;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
|
||||
if (settings->bools.menu_show_reboot)
|
||||
{
|
||||
entry.enum_idx = MENU_ENUM_LABEL_REBOOT;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
}
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN;
|
||||
menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry);
|
||||
|
@ -5318,14 +5318,47 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
MENU_ENUM_LABEL_QUICK_MENU_VIEWS_SETTINGS,
|
||||
PARSE_ACTION, false);
|
||||
|
||||
#if defined(HAVE_NETWORKING) && !defined(HAVE_LAKKA)
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_LOAD_CORE,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
#if defined(HAVE_NETWORKING)
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_ONLINE_UPDATER,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
#if !defined(HAVE_LAKKA)
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_CORE_UPDATER,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_INFORMATION,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_HELP,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
#if defined(HAVE_LAKKA)
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_REBOOT,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
#endif
|
||||
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_XMB_SHOW_SETTINGS,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
@ -5387,6 +5387,111 @@ static bool setting_append_list(
|
||||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, 0, XMB_THEME_LAST-1, 1, true, true);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_load_core,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_LOAD_CORE,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
|
||||
menu_show_load_core,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_load_content,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
|
||||
menu_show_load_content,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_information,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_INFORMATION,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
menu_show_information,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_configurations,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_CONFIGURATIONS,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
|
||||
menu_show_configurations,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_LAKKA_ADVANCED);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_help,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_HELP,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
menu_show_help,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_LAKKA_ADVANCED);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_quit_retroarch,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
menu_show_quit_retroarch,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_reboot,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_REBOOT,
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
menu_show_reboot,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.menu_xmb_show_settings,
|
||||
|
@ -310,8 +310,8 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx,
|
||||
if (!list)
|
||||
return;
|
||||
|
||||
menu_entries_get_at_offset(list, i, &path, &entry_label, &entry->type,
|
||||
&entry->entry_idx, NULL);
|
||||
file_list_get_at_offset(list, i, &path, &entry_label, &entry->type,
|
||||
&entry->entry_idx);
|
||||
|
||||
cbs = (menu_file_list_cbs_t*)file_list_get_actiondata_at_offset(list, i);
|
||||
|
||||
@ -330,7 +330,8 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx,
|
||||
tmp[0] = '\0';
|
||||
|
||||
cbs->action_get_value(list,
|
||||
&entry->spacing, entry->type, (unsigned)i, label,
|
||||
&entry->spacing, entry->type,
|
||||
(unsigned)i, label,
|
||||
tmp,
|
||||
sizeof(tmp),
|
||||
entry_label, path,
|
||||
@ -375,11 +376,13 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx,
|
||||
|
||||
entry->idx = (unsigned)i;
|
||||
|
||||
if (path && !use_representation)
|
||||
if (!string_is_empty(path) && !use_representation)
|
||||
strlcpy(newpath, path, sizeof(newpath));
|
||||
else if (cbs && cbs->setting && cbs->setting->enum_value_idx != MSG_UNKNOWN
|
||||
&& !cbs->setting->dont_use_enum_idx_representation)
|
||||
strlcpy(newpath, msg_hash_to_str(cbs->setting->enum_value_idx), sizeof(newpath));
|
||||
strlcpy(newpath,
|
||||
msg_hash_to_str(cbs->setting->enum_value_idx),
|
||||
sizeof(newpath));
|
||||
|
||||
if (!string_is_empty(newpath))
|
||||
entry->path = strdup(newpath);
|
||||
|
12
msg_hash.h
12
msg_hash.h
@ -672,6 +672,13 @@ enum msg_hash_enums
|
||||
|
||||
|
||||
/* Menu settings */
|
||||
MENU_LABEL(MENU_SHOW_LOAD_CORE),
|
||||
MENU_LABEL(MENU_SHOW_LOAD_CONTENT),
|
||||
MENU_LABEL(MENU_SHOW_INFORMATION),
|
||||
MENU_LABEL(MENU_SHOW_CONFIGURATIONS),
|
||||
MENU_LABEL(MENU_SHOW_HELP),
|
||||
MENU_LABEL(MENU_SHOW_QUIT_RETROARCH),
|
||||
MENU_LABEL(MENU_SHOW_REBOOT),
|
||||
MENU_LABEL(MENU_SHOW_ONLINE_UPDATER),
|
||||
MENU_LABEL(MENU_SHOW_CORE_UPDATER),
|
||||
MENU_LABEL(RUN_MUSIC),
|
||||
@ -1716,11 +1723,6 @@ enum msg_hash_enums
|
||||
|
||||
#define MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST 0xb4f82700U
|
||||
|
||||
/* Scan values */
|
||||
#define MENU_LABEL_SCAN_THIS_DIRECTORY 0x6921b775U
|
||||
#define MENU_LABEL_SCAN_DIRECTORY 0x57de303eU
|
||||
#define MENU_LABEL_SCAN_FILE 0xd5d1eee9U
|
||||
|
||||
/* Online updater settings */
|
||||
|
||||
#define MENU_LABEL_UPDATE_LAKKA 0x19b51eebU
|
||||
|
@ -38,16 +38,28 @@ add_define_make DYLIB_LIB "$DYLIB"
|
||||
check_lib SYSTEMD -lsystemd sd_get_machine_names
|
||||
|
||||
if [ "$HAVE_VIDEOCORE" != "no" ]; then
|
||||
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib && add_library_dirs /opt/vc/lib/GL
|
||||
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
|
||||
check_pkgconf VC_TEST bcm_host
|
||||
|
||||
# use fallback if pkgconfig is not available
|
||||
if [ ! "$VC_TEST_LIBS" ]; then
|
||||
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib && add_library_dirs /opt/vc/lib/GL
|
||||
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
|
||||
else
|
||||
HAVE_VIDEOCORE="$HAVE_VC_TEST"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$HAVE_VIDEOCORE" = 'yes' ]; then
|
||||
[ -d /opt/vc/include ] && add_include_dirs /opt/vc/include
|
||||
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_include_dirs /opt/vc/include/interface/vcos/pthreads
|
||||
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_include_dirs /opt/vc/include/interface/vmcs_host/linux
|
||||
HAVE_OPENGLES='auto'
|
||||
EXTRA_GL_LIBS="-lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm"
|
||||
VC_PREFIX="brcm"
|
||||
|
||||
# use fallback if pkgconfig is not available
|
||||
if [ ! "$VC_TEST_LIBS" ]; then
|
||||
[ -d /opt/vc/include ] && add_include_dirs /opt/vc/include
|
||||
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_include_dirs /opt/vc/include/interface/vcos/pthreads
|
||||
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_include_dirs /opt/vc/include/interface/vmcs_host/linux
|
||||
EXTRA_GL_LIBS="-lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$HAVE_NEON" = "yes" ]; then
|
||||
@ -101,11 +113,11 @@ if [ "$HAVE_SSE" = "yes" ]; then
|
||||
fi
|
||||
|
||||
if [ "$HAVE_EGL" != "no" -a "$OS" != 'Win32' ]; then
|
||||
check_pkgconf EGL egl
|
||||
check_pkgconf EGL "$VC_PREFIX"egl
|
||||
# some systems have EGL libs, but no pkgconfig
|
||||
if [ "$HAVE_EGL" = "no" ]; then
|
||||
HAVE_EGL=auto && check_lib EGL "-lEGL $EXTRA_GL_LIBS"
|
||||
[ "$HAVE_EGL" = "yes" ] && EGL_LIBS=-lEGL
|
||||
HAVE_EGL=auto && check_lib EGL "-l"$VC_PREFIX"EGL $EXTRA_GL_LIBS"
|
||||
[ "$HAVE_EGL" = "yes" ] && EGL_LIBS=-l"$VC_PREFIX"EGL
|
||||
else
|
||||
EGL_LIBS="$EGL_LIBS $EXTRA_GL_LIBS"
|
||||
fi
|
||||
@ -378,15 +390,15 @@ if [ "$HAVE_EGL" = "yes" ]; then
|
||||
add_define_make OPENGLES_LIBS "$OPENGLES_LIBS"
|
||||
add_define_make OPENGLES_CFLAGS "$OPENGLES_CFLAGS"
|
||||
else
|
||||
HAVE_OPENGLES=auto check_pkgconf OPENGLES glesv2
|
||||
[ "$HAVE_OPENGLES" = "no" ] && HAVE_OPENGLES=auto check_lib OPENGLES "-lGLESv2 $EXTRA_GL_LIBS" && add_define_make OPENGLES_LIBS "-lGLESv2 $EXTRA_GL_LIBS"
|
||||
HAVE_OPENGLES=auto check_pkgconf OPENGLES "$VC_PREFIX"glesv2
|
||||
[ "$HAVE_OPENGLES" = "no" ] && HAVE_OPENGLES=auto check_lib OPENGLES "-l"$VC_PREFIX"GLESv2 $EXTRA_GL_LIBS" && add_define_make OPENGLES_LIBS "-l"$VC_PREFIX"GLESv2 $EXTRA_GL_LIBS"
|
||||
fi
|
||||
fi
|
||||
if [ "$HAVE_VG" != "no" ]; then
|
||||
check_pkgconf VG vg
|
||||
check_pkgconf VG "$VC_PREFIX"vg
|
||||
if [ "$HAVE_VG" = "no" ]; then
|
||||
HAVE_VG=auto check_lib VG "-lOpenVG $EXTRA_GL_LIBS"
|
||||
[ "$HAVE_VG" = "yes" ] && VG_LIBS=-lOpenVG
|
||||
HAVE_VG=auto check_lib VG "-l"$VC_PREFIX"OpenVG $EXTRA_GL_LIBS"
|
||||
[ "$HAVE_VG" = "yes" ] && VG_LIBS=-l"$VC_PREFIX"OpenVG
|
||||
fi
|
||||
fi
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user