summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/pwm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/pwm.h')
-rw-r--r--src/devices/video/pwm.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/devices/video/pwm.h b/src/devices/video/pwm.h
index 2b5e6e47b07..8f2e28ad285 100644
--- a/src/devices/video/pwm.h
+++ b/src/devices/video/pwm.h
@@ -35,10 +35,16 @@ public:
void set_bri_one(u8 i, double level) { m_levels[i] = level; }
void segmask_one(u8 y, u64 mask) { m_segmask[y] = mask; }
+ // matrix accessors
void matrix_partial(u8 start, u8 height, u64 rowsel, u64 rowdata);
void matrix(u64 rowsel, u64 rowdata) { matrix_partial(0, m_height, rowsel, rowdata); }
void clear() { matrix(0, 0); }
+ void write_my(u64 y) { matrix(y, m_rowdata_last); }
+ void write_mx(u64 x) { matrix(m_rowsel, x); }
+ u64 read_my() { return m_rowsel; }
+ u64 read_mx() { return m_rowdata_last; }
+
// directly handle individual element (does not affect m_rowsel), y = row num, x = row bit
int read_element(u8 y, u8 x) { return BIT(m_rowdata[y], x); }
void write_element(u8 y, u8 x, int state) { sync(); m_rowdata[y] = (m_rowdata[y] & ~(u64(1) << x)) | (u64(state ? 1 : 0) << x); }
@@ -81,6 +87,7 @@ private:
u64 m_segmask[0x40];
u64 m_rowsel;
u64 m_rowdata[0x40];
+ u64 m_rowdata_last;
double m_bri[0x40][0x41];
attotime m_sync_time;