forked from Dniel97/segatools
idzio: Restrict maximum wheel ADC abs. value
This commit is contained in:
parent
bd61b3e3d9
commit
ff14fd7fac
@ -57,6 +57,7 @@ void idz_di_config_load(struct idz_di_config *cfg, const wchar_t *filename)
|
|||||||
swprintf_s(key, _countof(key), L"gear%i", i + 1);
|
swprintf_s(key, _countof(key), L"gear%i", i + 1);
|
||||||
cfg->gear[i] = GetPrivateProfileIntW(L"dinput", key, i + 1, filename);
|
cfg->gear[i] = GetPrivateProfileIntW(L"dinput", key, i + 1, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void idz_io_config_load(struct idz_io_config *cfg, const wchar_t *filename)
|
void idz_io_config_load(struct idz_io_config *cfg, const wchar_t *filename)
|
||||||
@ -67,6 +68,7 @@ void idz_io_config_load(struct idz_io_config *cfg, const wchar_t *filename)
|
|||||||
cfg->vk_test = GetPrivateProfileIntW(L"io3", L"test", '1', filename);
|
cfg->vk_test = GetPrivateProfileIntW(L"io3", L"test", '1', filename);
|
||||||
cfg->vk_service = GetPrivateProfileIntW(L"io3", L"service", '2', filename);
|
cfg->vk_service = GetPrivateProfileIntW(L"io3", L"service", '2', filename);
|
||||||
cfg->vk_coin = GetPrivateProfileIntW(L"io3", L"coin", '3', filename);
|
cfg->vk_coin = GetPrivateProfileIntW(L"io3", L"coin", '3', filename);
|
||||||
|
cfg->restrict_ = GetPrivateProfileIntW(L"io3", L"restrict", 196, filename);
|
||||||
|
|
||||||
GetPrivateProfileStringW(
|
GetPrivateProfileStringW(
|
||||||
L"io3",
|
L"io3",
|
||||||
@ -93,4 +95,3 @@ void idz_shifter_config_load(
|
|||||||
0,
|
0,
|
||||||
filename);
|
filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ struct idz_io_config {
|
|||||||
uint8_t vk_service;
|
uint8_t vk_service;
|
||||||
uint8_t vk_coin;
|
uint8_t vk_coin;
|
||||||
wchar_t mode[8];
|
wchar_t mode[8];
|
||||||
|
int restrict_;
|
||||||
struct idz_shifter_config shifter;
|
struct idz_shifter_config shifter;
|
||||||
struct idz_di_config di;
|
struct idz_di_config di;
|
||||||
};
|
};
|
||||||
|
@ -73,12 +73,24 @@ void idz_io_jvs_read_shifter(uint8_t *gear)
|
|||||||
idz_io_backend->jvs_read_shifter(gear);
|
idz_io_backend->jvs_read_shifter(gear);
|
||||||
}
|
}
|
||||||
|
|
||||||
void idz_io_jvs_read_analogs(struct idz_io_analog_state *state)
|
void idz_io_jvs_read_analogs(struct idz_io_analog_state *out)
|
||||||
{
|
{
|
||||||
assert(state != NULL);
|
struct idz_io_analog_state tmp;
|
||||||
|
|
||||||
|
assert(out != NULL);
|
||||||
assert(idz_io_backend != NULL);
|
assert(idz_io_backend != NULL);
|
||||||
|
|
||||||
idz_io_backend->jvs_read_analogs(state);
|
idz_io_backend->jvs_read_analogs(&tmp);
|
||||||
|
|
||||||
|
/* Apply steering wheel restriction. Real cabs only report about 77% of
|
||||||
|
the IO-3's max ADC output value when the wheel is turned to either of
|
||||||
|
its maximum positions. To match this behavior we set the default value
|
||||||
|
for the wheel restriction config parameter to 196 (out of 256). This
|
||||||
|
scaling factor is applied using fixed-point arithmetic below. */
|
||||||
|
|
||||||
|
out->wheel = (tmp.wheel * idz_io_cfg.restrict_) / 256;
|
||||||
|
out->accel = tmp.accel;
|
||||||
|
out->brake = tmp.brake;
|
||||||
}
|
}
|
||||||
|
|
||||||
void idz_io_jvs_read_coin_counter(uint16_t *out)
|
void idz_io_jvs_read_coin_counter(uint16_t *out)
|
||||||
|
Loading…
Reference in New Issue
Block a user