diff options
author | Vas Crabb <vas@vastheman.com> | 2020-10-25 05:17:54 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2020-10-25 05:17:54 +1100 |
commit | 62dbdf7b38baca4d94efd03d7de95a5c61254727 (patch) | |
tree | 65ecd01d74f6d3bc9d0d3c908eb3dc8246040388 | |
parent | 8dac5448d3536c77e25c708f68163c61951b57ae (diff) |
frontend: Apply shift to analog fields in preview.
-rw-r--r-- | src/frontend/mame/ui/analogipt.cpp | 4 | ||||
-rw-r--r-- | src/frontend/mame/ui/analogipt.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/frontend/mame/ui/analogipt.cpp b/src/frontend/mame/ui/analogipt.cpp index d63f6afc490..075a5e0bf4e 100644 --- a/src/frontend/mame/ui/analogipt.cpp +++ b/src/frontend/mame/ui/analogipt.cpp @@ -39,8 +39,10 @@ inline menu_analog::field_data::field_data(ioport_field &f) noexcept , range(f.maxval() - f.minval()) , neutral(float(f.analog_reverse() ? (f.maxval() - f.defvalue()) : (f.defvalue() - f.minval())) / range) , origin((f.analog_wraps() && (f.defvalue() != f.minval()) && (f.defvalue() != f.maxval())) ? 0.0f : neutral) + , shift(0U) , show_neutral((f.defvalue() != f.minval()) && (f.defvalue() != f.maxval())) { + for (ioport_value m = f.mask(); m && !BIT(m, 0); m >>= 1, ++shift) { } } @@ -93,7 +95,7 @@ void menu_analog::custom_render(void *selectedref, float top, float bottom, floa ioport_value cur(0U); data.field.get().live().analog->read(cur); - cur -= data.field.get().minval(); + cur = (cur >> data.shift) - data.field.get().minval(); float fill(float(cur) / data.range); if (data.field.get().analog_reverse()) fill = 1.0f - fill; diff --git a/src/frontend/mame/ui/analogipt.h b/src/frontend/mame/ui/analogipt.h index 40c76602af5..2982aa142fe 100644 --- a/src/frontend/mame/ui/analogipt.h +++ b/src/frontend/mame/ui/analogipt.h @@ -58,6 +58,7 @@ private: float range; float neutral; float origin; + u8 shift; bool show_neutral; }; |