2020-12-23 19:36:11 +00:00
|
|
|
#include "frontends/libretro/analog.h"
|
|
|
|
#include "frontends/libretro/environment.h"
|
2020-12-23 16:38:22 +00:00
|
|
|
|
|
|
|
#include "libretro.h"
|
|
|
|
|
|
|
|
#define AXIS_MIN -32768
|
|
|
|
#define AXIS_MAX 32767
|
|
|
|
|
2021-02-25 16:24:52 +00:00
|
|
|
namespace ra2
|
2020-12-23 16:38:22 +00:00
|
|
|
{
|
|
|
|
|
2021-11-24 18:02:27 +00:00
|
|
|
Analog::Analog(unsigned device)
|
|
|
|
: JoypadBase(device)
|
|
|
|
, myAxisCodes(2)
|
2021-02-25 16:24:52 +00:00
|
|
|
{
|
|
|
|
myAxisCodes[0] = std::make_pair(RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X);
|
|
|
|
myAxisCodes[1] = std::make_pair(RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y);
|
|
|
|
}
|
|
|
|
|
|
|
|
double Analog::getAxis(int i) const
|
|
|
|
{
|
|
|
|
const auto & code = myAxisCodes[i];
|
2021-11-24 18:02:27 +00:00
|
|
|
const int value = input_state_cb(0, myDevice, code.first, code.second);
|
2021-02-25 16:24:52 +00:00
|
|
|
const double axis = 2.0 * double(value - AXIS_MIN) / double(AXIS_MAX - AXIS_MIN) - 1.0;
|
|
|
|
return axis;
|
|
|
|
}
|
|
|
|
|
2020-12-23 16:38:22 +00:00
|
|
|
}
|