mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-25 09:17:12 +01:00
Minor cleanup
This commit is contained in:
parent
1981d23f4b
commit
c857b5e0c9
@ -86,25 +86,6 @@ ResetAxisRange(SDL_DriverGameCube_Context *ctx, int joystick_index)
|
|||||||
ctx->min_axis[joystick_index*SDL_CONTROLLER_AXIS_MAX+SDL_CONTROLLER_AXIS_TRIGGERRIGHT] = 40;
|
ctx->min_axis[joystick_index*SDL_CONTROLLER_AXIS_MAX+SDL_CONTROLLER_AXIS_TRIGGERRIGHT] = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
static float fsel(float fComparand, float fValGE, float fLT)
|
|
||||||
{
|
|
||||||
return fComparand >= 0 ? fValGE : fLT;
|
|
||||||
}
|
|
||||||
|
|
||||||
static float RemapVal(float val, float A, float B, float C, float D)
|
|
||||||
{
|
|
||||||
if (A == B) {
|
|
||||||
return fsel(val - B, D, C);
|
|
||||||
}
|
|
||||||
if (val < A) {
|
|
||||||
val = A;
|
|
||||||
}
|
|
||||||
if (val > B) {
|
|
||||||
val = B;
|
|
||||||
}
|
|
||||||
return C + (D - C) * (val - A) / (B - A);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SDLCALL SDL_GameControllerButtonReportingHintChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
|
static void SDLCALL SDL_GameControllerButtonReportingHintChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
|
||||||
{
|
{
|
||||||
SDL_DriverGameCube_Context *ctx = (SDL_DriverGameCube_Context *)userdata;
|
SDL_DriverGameCube_Context *ctx = (SDL_DriverGameCube_Context *)userdata;
|
||||||
@ -301,7 +282,7 @@ HIDAPI_DriverGameCube_HandleJoystickPacket(SDL_HIDAPI_Device *device, SDL_Driver
|
|||||||
v = invert ? (0xff - packet[off]) : packet[off]; \
|
v = invert ? (0xff - packet[off]) : packet[off]; \
|
||||||
if (v < ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = v; \
|
if (v < ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = v; \
|
||||||
if (v > ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = v; \
|
if (v > ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = v; \
|
||||||
axis_value = (Sint16)RemapVal(v, ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], SDL_MIN_SINT16, SDL_MAX_SINT16); \
|
axis_value = (Sint16)HIDAPI_RemapVal(v, ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], SDL_MIN_SINT16, SDL_MAX_SINT16); \
|
||||||
SDL_PrivateJoystickAxis( \
|
SDL_PrivateJoystickAxis( \
|
||||||
joystick, \
|
joystick, \
|
||||||
axis, axis_value \
|
axis, axis_value \
|
||||||
@ -381,7 +362,7 @@ HIDAPI_DriverGameCube_HandleNintendoPacket(SDL_HIDAPI_Device *device, SDL_Driver
|
|||||||
#define READ_AXIS(off, axis) \
|
#define READ_AXIS(off, axis) \
|
||||||
if (curSlot[off] < ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = curSlot[off]; \
|
if (curSlot[off] < ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = curSlot[off]; \
|
||||||
if (curSlot[off] > ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = curSlot[off]; \
|
if (curSlot[off] > ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis]) ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis] = curSlot[off]; \
|
||||||
axis_value = (Sint16)(RemapVal(curSlot[off], ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], SDL_MIN_SINT16, SDL_MAX_SINT16)); \
|
axis_value = (Sint16)HIDAPI_RemapVal(curSlot[off], ctx->min_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], ctx->max_axis[i*SDL_CONTROLLER_AXIS_MAX+axis], SDL_MIN_SINT16, SDL_MAX_SINT16); \
|
||||||
SDL_PrivateJoystickAxis( \
|
SDL_PrivateJoystickAxis( \
|
||||||
joystick, \
|
joystick, \
|
||||||
axis, axis_value \
|
axis, axis_value \
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
#include "SDL_hints.h"
|
#include "SDL_hints.h"
|
||||||
#include "SDL_events.h"
|
#include "SDL_events.h"
|
||||||
#include "SDL_timer.h"
|
|
||||||
#include "SDL_joystick.h"
|
#include "SDL_joystick.h"
|
||||||
#include "SDL_gamecontroller.h"
|
#include "SDL_gamecontroller.h"
|
||||||
#include "../SDL_sysjoystick.h"
|
#include "../SDL_sysjoystick.h"
|
||||||
@ -35,7 +34,7 @@
|
|||||||
#ifdef SDL_JOYSTICK_HIDAPI_STADIA
|
#ifdef SDL_JOYSTICK_HIDAPI_STADIA
|
||||||
|
|
||||||
/* Define this if you want to log all packets from the controller */
|
/* Define this if you want to log all packets from the controller */
|
||||||
//#define DEBUG_STADIA_PROTOCOL
|
/*#define DEBUG_STADIA_PROTOCOL*/
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -148,19 +147,6 @@ HIDAPI_DriverStadia_SetJoystickSensorsEnabled(SDL_HIDAPI_Device *device, SDL_Joy
|
|||||||
return SDL_Unsupported();
|
return SDL_Unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
static float fsel(float fComparand, float fValGE, float fLT)
|
|
||||||
{
|
|
||||||
return fComparand >= 0 ? fValGE : fLT;
|
|
||||||
}
|
|
||||||
|
|
||||||
static float RemapVal(float val, float A, float B, float C, float D)
|
|
||||||
{
|
|
||||||
if (A == B) {
|
|
||||||
return fsel(val - B , D , C);
|
|
||||||
}
|
|
||||||
return C + (D - C) * (val - A) / (B - A);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
HIDAPI_DriverStadia_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverStadia_Context *ctx, Uint8 *data, int size)
|
HIDAPI_DriverStadia_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverStadia_Context *ctx, Uint8 *data, int size)
|
||||||
{
|
{
|
||||||
@ -236,7 +222,7 @@ HIDAPI_DriverStadia_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverStadia_C
|
|||||||
|
|
||||||
#define READ_STICK_AXIS(offset) \
|
#define READ_STICK_AXIS(offset) \
|
||||||
(data[offset] == 0x80 ? 0 : \
|
(data[offset] == 0x80 ? 0 : \
|
||||||
(Sint16)RemapVal(data[offset] - 0x80, 0x01 - 0x80, 0xff - 0x80, SDL_MIN_SINT16, SDL_MAX_SINT16))
|
(Sint16)HIDAPI_RemapVal(data[offset] - 0x80, 0x01 - 0x80, 0xff - 0x80, SDL_MIN_SINT16, SDL_MAX_SINT16))
|
||||||
{
|
{
|
||||||
axis = READ_STICK_AXIS(4);
|
axis = READ_STICK_AXIS(4);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
||||||
|
@ -706,19 +706,6 @@ static SDL_bool LoadStickCalibration(SDL_DriverSwitch_Context *ctx, Uint8 input_
|
|||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static float fsel(float fComparand, float fValGE, float fLT)
|
|
||||||
{
|
|
||||||
return fComparand >= 0 ? fValGE : fLT;
|
|
||||||
}
|
|
||||||
|
|
||||||
static float RemapVal(float val, float A, float B, float C, float D)
|
|
||||||
{
|
|
||||||
if (A == B) {
|
|
||||||
return fsel(val - B , D , C);
|
|
||||||
}
|
|
||||||
return C + (D - C) * (val - A) / (B - A);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Sint16 ApplyStickCalibrationCentered(SDL_DriverSwitch_Context *ctx, int nStick, int nAxis, Sint16 sRawValue, Sint16 sCenter)
|
static Sint16 ApplyStickCalibrationCentered(SDL_DriverSwitch_Context *ctx, int nStick, int nAxis, Sint16 sRawValue, Sint16 sCenter)
|
||||||
{
|
{
|
||||||
sRawValue -= sCenter;
|
sRawValue -= sCenter;
|
||||||
@ -731,9 +718,9 @@ static Sint16 ApplyStickCalibrationCentered(SDL_DriverSwitch_Context *ctx, int n
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sRawValue > 0) {
|
if (sRawValue > 0) {
|
||||||
return (Sint16)(RemapVal(sRawValue, 0, ctx->m_StickExtents[nStick].axis[nAxis].sMax, 0, SDL_MAX_SINT16));
|
return (Sint16)HIDAPI_RemapVal(sRawValue, 0, ctx->m_StickExtents[nStick].axis[nAxis].sMax, 0, SDL_MAX_SINT16);
|
||||||
} else {
|
} else {
|
||||||
return (Sint16)(RemapVal(sRawValue, ctx->m_StickExtents[nStick].axis[nAxis].sMin, 0, SDL_MIN_SINT16, 0));
|
return (Sint16)HIDAPI_RemapVal(sRawValue, ctx->m_StickExtents[nStick].axis[nAxis].sMin, 0, SDL_MIN_SINT16, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1164,22 +1151,22 @@ static void HandleInputOnlyControllerState(SDL_Joystick *joystick, SDL_DriverSwi
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucJoystickLeft[0] != ctx->m_lastInputOnlyState.rgucJoystickLeft[0]) {
|
if (packet->rgucJoystickLeft[0] != ctx->m_lastInputOnlyState.rgucJoystickLeft[0]) {
|
||||||
axis = (Sint16)(RemapVal(packet->rgucJoystickLeft[0], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16));
|
axis = (Sint16)HIDAPI_RemapVal(packet->rgucJoystickLeft[0], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucJoystickLeft[1] != ctx->m_lastInputOnlyState.rgucJoystickLeft[1]) {
|
if (packet->rgucJoystickLeft[1] != ctx->m_lastInputOnlyState.rgucJoystickLeft[1]) {
|
||||||
axis = (Sint16)(RemapVal(packet->rgucJoystickLeft[1], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16));
|
axis = (Sint16)HIDAPI_RemapVal(packet->rgucJoystickLeft[1], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTY, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTY, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucJoystickRight[0] != ctx->m_lastInputOnlyState.rgucJoystickRight[0]) {
|
if (packet->rgucJoystickRight[0] != ctx->m_lastInputOnlyState.rgucJoystickRight[0]) {
|
||||||
axis = (Sint16)(RemapVal(packet->rgucJoystickRight[0], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16));
|
axis = (Sint16)HIDAPI_RemapVal(packet->rgucJoystickRight[0], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_RIGHTX, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_RIGHTX, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucJoystickRight[1] != ctx->m_lastInputOnlyState.rgucJoystickRight[1]) {
|
if (packet->rgucJoystickRight[1] != ctx->m_lastInputOnlyState.rgucJoystickRight[1]) {
|
||||||
axis = (Sint16)(RemapVal(packet->rgucJoystickRight[1], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16));
|
axis = (Sint16)HIDAPI_RemapVal(packet->rgucJoystickRight[1], SDL_MIN_UINT8, SDL_MAX_UINT8, SDL_MIN_SINT16, SDL_MAX_SINT16);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_RIGHTY, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_RIGHTY, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,6 +413,12 @@ HIDAPI_DumpPacket(const char *prefix, Uint8 *data, int size)
|
|||||||
SDL_free(buffer);
|
SDL_free(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
HIDAPI_RemapVal(float val, float val_min, float val_max, float output_min, float output_max)
|
||||||
|
{
|
||||||
|
return output_min + (output_max - output_min) * (val - val_min) / (val_max - val_min);
|
||||||
|
}
|
||||||
|
|
||||||
static void HIDAPI_JoystickDetect(void);
|
static void HIDAPI_JoystickDetect(void);
|
||||||
static void HIDAPI_JoystickClose(SDL_Joystick * joystick);
|
static void HIDAPI_JoystickClose(SDL_Joystick * joystick);
|
||||||
|
|
||||||
|
@ -125,6 +125,8 @@ extern void HIDAPI_JoystickDisconnected(SDL_HIDAPI_Device *device, SDL_JoystickI
|
|||||||
|
|
||||||
extern void HIDAPI_DumpPacket(const char *prefix, Uint8 *data, int size);
|
extern void HIDAPI_DumpPacket(const char *prefix, Uint8 *data, int size);
|
||||||
|
|
||||||
|
extern float HIDAPI_RemapVal(float val, float val_min, float val_max, float output_min, float output_max);
|
||||||
|
|
||||||
#endif /* SDL_JOYSTICK_HIDAPI_H */
|
#endif /* SDL_JOYSTICK_HIDAPI_H */
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
Loading…
Reference in New Issue
Block a user