summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit62dbdf7b38baca4d94efd03d7de95a5c61254727 (patch)
tree65ecd01d74f6d3bc9d0d3c908eb3dc8246040388
parent8dac5448d3536c77e25c708f68163c61951b57ae (diff)
frontend: Apply shift to analog fields in preview.
-rw-r--r--src/frontend/mame/ui/analogipt.cpp4
-rw-r--r--src/frontend/mame/ui/analogipt.h1
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;
};