iidxhook9: Add turntable multiplier

This commit is contained in:
Will Xyen
2020-12-09 17:22:40 -08:00
parent d9cb953b67
commit 89c3ada28f
9 changed files with 92 additions and 22 deletions
+3 -20
View File
@@ -9,6 +9,7 @@
#include "bemanitools/sdvxio.h"
#include "util/log.h"
#include "util/math.h"
#include "util/thread.h"
#include "vigemstub/helper.h"
@@ -22,25 +23,6 @@ int16_t convert_analog_to_s16(uint16_t val)
return (int64_t)(val * 64);
}
int16_t get_relative_delta(int16_t val, int16_t last)
{
// val is 10 bit
const int16_t half_point = 512; // 2^9
int16_t delta = val - last;
if (delta > half_point) {
delta -= 1024;
}
if (delta < -half_point) {
delta += 1024;
}
// delta is now between (-512 - 512)
return delta;
}
int16_t filter_floor(int32_t value, int16_t floor) {
if (abs(value) < floor) {
return 0;
@@ -58,7 +40,8 @@ int16_t filter_floor(int32_t value, int16_t floor) {
int32_t convert_relative_analog(
uint16_t val, uint16_t last, int32_t buffered_last, int16_t multiplier)
{
int16_t delta = get_relative_delta(val, last);
// val is 10 bit
int16_t delta = get_wrapped_delta_s16(val, last, 1024);
if (delta == 0) {
// ease the stick back to 0 like a real stick would