summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2019-07-04 03:12:57 +0200
committer hap <happppp@users.noreply.github.com>2019-07-04 03:13:13 +0200
commitaf1f5ed3f3119106f4aee8c7e7ce25f1ec3aad82 (patch)
tree1536be54e493ab43f63ae2e2d6a11faae7de0b4f
parent515bbedaf33aa39869d918580713f7d2589ed4fd (diff)
fidel*: use pwm_display (nw)
-rw-r--r--src/mame/drivers/cking_master.cpp2
-rw-r--r--src/mame/drivers/cxg_ch2001.cpp2
-rw-r--r--src/mame/drivers/fidel_as12.cpp11
-rw-r--r--src/mame/drivers/fidel_card.cpp2
-rw-r--r--src/mame/drivers/fidel_cc1.cpp15
-rw-r--r--src/mame/drivers/fidel_cc10.cpp10
-rw-r--r--src/mame/drivers/fidel_cc7.cpp10
-rw-r--r--src/mame/drivers/fidel_chesster.cpp8
-rw-r--r--src/mame/drivers/fidel_csc.cpp13
-rw-r--r--src/mame/drivers/fidel_dames.cpp10
-rw-r--r--src/mame/drivers/fidel_desdis.cpp20
-rw-r--r--src/mame/drivers/fidel_eag68k.cpp15
-rw-r--r--src/mame/drivers/fidel_elite.cpp23
-rw-r--r--src/mame/drivers/fidel_excel.cpp15
-rw-r--r--src/mame/drivers/fidel_sc12.cpp11
-rw-r--r--src/mame/drivers/fidel_sc6.cpp11
-rw-r--r--src/mame/drivers/fidel_sc8.cpp8
-rw-r--r--src/mame/drivers/fidel_sc9.cpp11
-rw-r--r--src/mame/drivers/fidel_vcc.cpp10
-rw-r--r--src/mame/drivers/fidel_vsc.cpp10
-rw-r--r--src/mame/drivers/intellect02.cpp4
-rw-r--r--src/mame/drivers/novag_cforte.cpp4
-rw-r--r--src/mame/drivers/novag_diablo.cpp4
-rw-r--r--src/mame/drivers/novag_mk1.cpp2
-rw-r--r--src/mame/drivers/novag_presto.cpp2
-rw-r--r--src/mame/drivers/novag_savant.cpp5
-rw-r--r--src/mame/drivers/novag_scon.cpp2
-rw-r--r--src/mame/drivers/novag_sexpert.cpp4
28 files changed, 161 insertions, 83 deletions
diff --git a/src/mame/drivers/cking_master.cpp b/src/mame/drivers/cking_master.cpp
index 4f6ceeb3e1b..cdd60a16cc5 100644
--- a/src/mame/drivers/cking_master.cpp
+++ b/src/mame/drivers/cking_master.cpp
@@ -20,12 +20,12 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "machine/bankdev.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/cxg_ch2001.cpp b/src/mame/drivers/cxg_ch2001.cpp
index d7b503ba567..e2963dc54a0 100644
--- a/src/mame/drivers/cxg_ch2001.cpp
+++ b/src/mame/drivers/cxg_ch2001.cpp
@@ -14,11 +14,11 @@ Hardware notes:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/fidel_as12.cpp b/src/mame/drivers/fidel_as12.cpp
index 8f19d82b2c3..f37c2a22e02 100644
--- a/src/mame/drivers/fidel_as12.cpp
+++ b/src/mame/drivers/fidel_as12.cpp
@@ -24,8 +24,10 @@ magnetic chess board sensors. See fidel_sc12.cpp for a more technical descriptio
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -41,6 +43,7 @@ public:
as12_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
@@ -55,6 +58,7 @@ protected:
private:
// devices/pointers
required_device<timer_device> m_irq_on;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport_array<9> m_inputs;
@@ -114,7 +118,7 @@ DEVICE_IMAGE_LOAD_MEMBER(as12_state::cart_load)
void as12_state::update_display()
{
// 8*8(+1) chessboard leds
- display_matrix(8, 9, m_led_data, m_inp_mux);
+ m_display->matrix(m_inp_mux, m_led_data);
}
WRITE8_MEMBER(as12_state::control_w)
@@ -135,7 +139,7 @@ WRITE8_MEMBER(as12_state::control_w)
WRITE8_MEMBER(as12_state::led_w)
{
// a0-a2,d0: led data via NE591N
- m_led_data = (data & 1) << offset;
+ m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset);
update_display();
}
@@ -296,7 +300,8 @@ void as12_state::as12(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(as12_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(as12_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 8);
config.set_default_layout(layout_fidel_as12);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_card.cpp b/src/mame/drivers/fidel_card.cpp
index 51e3c6fe570..a78624bd2fd 100644
--- a/src/mame/drivers/fidel_card.cpp
+++ b/src/mame/drivers/fidel_card.cpp
@@ -161,13 +161,13 @@ Two card decks exist (red and blue), each has the same set of barcodes.
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h"
-#include "video/pwm.h"
#include "machine/i8243.h"
#include "machine/clock.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/s14001a.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/fidel_cc1.cpp b/src/mame/drivers/fidel_cc1.cpp
index 5c486e4326b..e3821811a05 100644
--- a/src/mame/drivers/fidel_cc1.cpp
+++ b/src/mame/drivers/fidel_cc1.cpp
@@ -47,6 +47,7 @@ offered as an upgrade to CC1, or CC3.
#include "cpu/i8085/i8085.h"
#include "machine/i8255.h"
+#include "video/pwm.h"
// internal artwork
#include "fidel_cc1.lh" // clickable
@@ -61,6 +62,7 @@ public:
cc1_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_ppi8255(*this, "ppi8255"),
+ m_display(*this, "display"),
m_delay(*this, "delay"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -78,6 +80,7 @@ protected:
private:
// devices/pointers
required_device<i8255_device> m_ppi8255;
+ required_device<pwm_display_device> m_display;
optional_device<timer_device> m_delay;
required_ioport_array<2> m_inputs;
@@ -114,18 +117,14 @@ void cc1_state::machine_start()
Devices, I/O
******************************************************************************/
-// misc handlers
+// I8255 PPI
void cc1_state::update_display()
{
// 4 7segs + 2 leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(7, 6, m_7seg_data, m_led_select);
+ m_display->matrix(m_led_select, m_7seg_data);
}
-
-// I8255 PPI
-
READ8_MEMBER(cc1_state::ppi_porta_r)
{
// 74148(priority encoder) I0-I7: inputs
@@ -239,7 +238,9 @@ void cc1_state::cc1(machine_config &config)
TIMER(config, "delay").configure_generic(timer_device::expired_delegate());
- TIMER(config, "display_decay").configure_periodic(FUNC(cc1_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(6, 7);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_cc1);
}
diff --git a/src/mame/drivers/fidel_cc10.cpp b/src/mame/drivers/fidel_cc10.cpp
index 9fa902e2788..63056b17d89 100644
--- a/src/mame/drivers/fidel_cc10.cpp
+++ b/src/mame/drivers/fidel_cc10.cpp
@@ -30,6 +30,7 @@ Checker Challenger 4 (ACR) is on the same PCB, twice less RAM and the beeper gon
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "sound/beep.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -45,6 +46,7 @@ public:
ccx_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_ppi8255(*this, "ppi8255"),
+ m_display(*this, "display"),
m_beeper_off(*this, "beeper_off"),
m_beeper(*this, "beeper"),
m_inputs(*this, "IN.%u", 0)
@@ -63,6 +65,7 @@ protected:
private:
// devices/pointers
required_device<i8255_device> m_ppi8255;
+ required_device<pwm_display_device> m_display;
optional_device<timer_device> m_beeper_off;
optional_device<beep_device> m_beeper;
required_ioport_array<4> m_inputs;
@@ -116,8 +119,7 @@ void ccx_state::machine_start()
void ccx_state::update_display()
{
// 4 7segs + 2 leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 6, m_7seg_data, m_led_select);
+ m_display->matrix(m_led_select, m_7seg_data);
}
WRITE8_MEMBER(ccx_state::ppi_porta_w)
@@ -301,7 +303,9 @@ void ccx_state::acr(machine_config &config)
m_ppi8255->in_pc_callback().set(FUNC(ccx_state::ppi_portc_r));
m_ppi8255->out_pc_callback().set(FUNC(ccx_state::ppi_portc_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(ccx_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(6, 8);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_acr);
}
diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp
index d8376bae782..5264f5c3fea 100644
--- a/src/mame/drivers/fidel_cc7.cpp
+++ b/src/mame/drivers/fidel_cc7.cpp
@@ -50,6 +50,7 @@ D0-D3: keypad row
#include "cpu/z80/z80.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -64,6 +65,7 @@ class bcc_state : public fidelbase_state
public:
bcc_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -77,6 +79,7 @@ protected:
private:
// devices/pointers
+ required_device<pwm_display_device> m_display;
optional_device<dac_bit_interface> m_dac;
required_ioport_array<4> m_inputs;
@@ -125,8 +128,7 @@ WRITE8_MEMBER(bcc_state::control_w)
// d0-d3: led select, input mux
// d4,d5: upper leds(direct)
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 6, m_7seg_data, data & 0x3f);
+ m_display->matrix(data & 0x3f, m_7seg_data);
m_inp_mux = data & 0xf;
}
@@ -233,7 +235,9 @@ void bcc_state::bkc(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &bcc_state::main_map);
m_maincpu->set_addrmap(AS_IO, &bcc_state::main_io);
- TIMER(config, "display_decay").configure_periodic(FUNC(bcc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(6, 8);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_bkc);
}
diff --git a/src/mame/drivers/fidel_chesster.cpp b/src/mame/drivers/fidel_chesster.cpp
index d99c2f655ad..a27441605be 100644
--- a/src/mame/drivers/fidel_chesster.cpp
+++ b/src/mame/drivers/fidel_chesster.cpp
@@ -33,6 +33,7 @@ the S14001A in the 70s), this time a 65C02 software solution.
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -48,6 +49,7 @@ public:
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
m_rombank(*this, "rombank"),
+ m_display(*this, "display"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -64,6 +66,7 @@ private:
// devices/pointers
required_device<timer_device> m_irq_on;
required_memory_bank m_rombank;
+ required_device<pwm_display_device> m_display;
required_ioport_array<9> m_inputs;
// address maps
@@ -120,7 +123,7 @@ WRITE8_MEMBER(chesster_state::control_w)
u16 led_data = 1 << (m_select >> 4 & 0xf) & 0x1ff;
// 74259 Q0,Q1: led select (active low)
- display_matrix(9, 2, led_data, ~m_select & 3);
+ m_display->matrix(~m_select & 3, led_data);
// 74259 Q2,Q3: speechrom A14,A15
// a0-a2,d0: 74259(2) Q3,Q2,Q0 to A16,A17,A18
@@ -280,7 +283,8 @@ void chesster_state::chesster(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(2600)); // active for 2.6us
TIMER(config, "irq_off").configure_periodic(FUNC(chesster_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(chesster_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2, 9);
config.set_default_layout(layout_fidel_chesster);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_csc.cpp b/src/mame/drivers/fidel_csc.cpp
index 296f1eb1047..bba1d0a6ccf 100644
--- a/src/mame/drivers/fidel_csc.cpp
+++ b/src/mame/drivers/fidel_csc.cpp
@@ -202,6 +202,7 @@ PCB label 510-1035A01
#include "sound/s14001a.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -221,6 +222,7 @@ public:
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
m_pia(*this, "pia%u", 0),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
@@ -240,6 +242,7 @@ protected:
// devices/pointers
required_device<timer_device> m_irq_on;
optional_device_array<pia6821_device, 2> m_pia;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
optional_device<s14001a_device> m_speech;
optional_region_ptr<u8> m_speech_rom;
@@ -352,8 +355,7 @@ void csc_state::update_display()
{
// 7442 0-8: led select (also input mux)
// 7seg leds+H (not on all models), 8*8(+1) chessboard leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | m_7seg_data, 1 << m_inp_mux);
+ m_display->matrix(1 << m_inp_mux, m_led_data << 8 | m_7seg_data);
}
void csc_state::update_sound()
@@ -685,7 +687,9 @@ void csc_state::csc(machine_config &config)
m_pia[1]->writepb_handler().set(FUNC(csc_state::pia1_pb_w));
m_pia[1]->ca2_handler().set(FUNC(csc_state::pia1_ca2_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(csc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 16);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_csc);
/* sound hardware */
@@ -736,7 +740,8 @@ void csc_state::rsc(machine_config &config)
m_pia[0]->ca2_handler().set(FUNC(csc_state::pia0_ca2_w));
m_pia[0]->cb2_handler().set(FUNC(csc_state::pia0_cb2_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(csc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 16);
config.set_default_layout(layout_fidel_rsc_v2);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_dames.cpp b/src/mame/drivers/fidel_dames.cpp
index 8a283f2f8aa..b55ee93ed0a 100644
--- a/src/mame/drivers/fidel_dames.cpp
+++ b/src/mame/drivers/fidel_dames.cpp
@@ -24,6 +24,7 @@ It's a checkers game for once instead of chess
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -38,6 +39,7 @@ public:
dsc_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -51,6 +53,7 @@ protected:
private:
// devices/pointers
required_device<timer_device> m_irq_on;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8> m_inputs;
@@ -95,8 +98,7 @@ void dsc_state::machine_start()
void dsc_state::update_display()
{
// 4 7seg leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 4, m_inp_mux, m_led_select);
+ m_display->matrix(m_led_select, m_inp_mux);
}
WRITE8_MEMBER(dsc_state::control_w)
@@ -270,7 +272,9 @@ void dsc_state::dsc(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_usec(41)); // active for 41us
TIMER(config, "irq_off").configure_periodic(FUNC(dsc_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(dsc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(4, 8);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_dsc);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_desdis.cpp b/src/mame/drivers/fidel_desdis.cpp
index 28ca0fbb13d..80dde524446 100644
--- a/src/mame/drivers/fidel_desdis.cpp
+++ b/src/mame/drivers/fidel_desdis.cpp
@@ -46,6 +46,7 @@ Designer Mach IV Master 2325 (model 6129) overview:
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -65,6 +66,7 @@ public:
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
m_rombank(*this, "rombank"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -81,6 +83,7 @@ protected:
// devices/pointers
required_device<timer_device> m_irq_on;
optional_memory_bank m_rombank;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<9> m_inputs;
@@ -184,7 +187,7 @@ WRITE8_MEMBER(desdis_state::control_w)
m_dac->write(BIT(sel, 9));
// 74259 Q0,Q1: led select (active low)
- display_matrix(9, 2, led_data, ~m_select & 3, false);
+ m_display->matrix_partial(0, 2, ~m_select & 3, led_data, false);
// 74259 Q2: book rom A14
if (m_rombank != nullptr)
@@ -194,12 +197,9 @@ WRITE8_MEMBER(desdis_state::control_w)
if (~q3_old & m_select & 8)
{
for (int i = 0; i < 4; i++)
- m_display_state[i+2] = m_lcd_data >> (8*i) & 0xff;
+ m_display->write_row(i+2, m_lcd_data >> (8*i) & 0xff);
}
-
- m_display_maxy += 4;
- set_display_segmask(0x3c, 0x7f);
- display_update();
+ m_display->update();
}
WRITE8_MEMBER(desdis_state::lcd_w)
@@ -386,7 +386,9 @@ void desdis_state::fdes2100d(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(desdis_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(desdis_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2+4, 9);
+ m_display->set_segmask(0x3c, 0x7f);
config.set_default_layout(layout_fidel_desdis);
/* sound hardware */
@@ -415,7 +417,9 @@ void desmas_state::fdes2265(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(6000)); // active for 6us
TIMER(config, "irq_off").configure_periodic(FUNC(desmas_state::irq_off<M68K_IRQ_4>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(desmas_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2+4, 9);
+ m_display->set_segmask(0x3c, 0x7f);
config.set_default_layout(layout_fidel_desdis_68kr);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp
index e828d14d6d2..113229a3c73 100644
--- a/src/mame/drivers/fidel_eag68k.cpp
+++ b/src/mame/drivers/fidel_eag68k.cpp
@@ -161,8 +161,10 @@ B0000x-xxxxxx: see V7, -800000
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -183,6 +185,7 @@ public:
m_maincpu(*this, "maincpu"),
m_irq_on(*this, "irq_on"),
m_ram(*this, "ram"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
@@ -207,6 +210,7 @@ protected:
required_device<m68000_base_device> m_maincpu;
optional_device<timer_device> m_irq_on;
optional_device<ram_device> m_ram;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
optional_device<generic_slot_device> m_cart;
optional_ioport_array<10> m_inputs;
@@ -327,8 +331,7 @@ void eag_state::update_display()
// Excel 68000: 4*7seg leds, 8*8 chessboard leds
// EAG: 8*7seg leds(2 panels), (8+1)*8 chessboard leds
u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
- set_display_segmask(0x1ff, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | seg_data, 1 << m_select);
+ m_display->matrix(1 << m_select, m_led_data << 8 | seg_data);
}
WRITE8_MEMBER(eag_state::mux_w)
@@ -718,7 +721,9 @@ void excel68k_state::fex68k(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1528)); // active for 1.525us
TIMER(config, "irq_off").configure_periodic(FUNC(excel68k_state::irq_off<M68K_IRQ_2>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(excel68k_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(8, 16);
+ m_display->set_segmask(0x55, 0x7f);
config.set_default_layout(layout_fidel_ex_68k);
/* sound hardware */
@@ -758,7 +763,9 @@ void eag_state::eag_base(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TIMER(config, "display_decay").configure_periodic(FUNC(eag_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 16);
+ m_display->set_segmask(0x1ef, 0x7f);
config.set_default_layout(layout_fidel_eag_68k);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp
index b252454bd5a..b9b8e2df7c8 100644
--- a/src/mame/drivers/fidel_elite.cpp
+++ b/src/mame/drivers/fidel_elite.cpp
@@ -31,6 +31,9 @@ hardware overview:
advertised as 3.2, 3.6, or 4MHz. Unmodified EAS PCB photos show only a 3MHz XTAL.
A condensator keeps RAM contents alive for a few hours when powered off.
+Note that EAS doesn't have a "new game" button, it is done through game options:
+Press GAME CONTROL, then place/lift a piece on D6 to restart, or D8 to reset
+with default settings, then press CL.
Prestige Challenger (PC) hardware is very similar. They stripped the 8255 PPI,
and added more RAM(7*TMM2016P). Some were released at 3.6MHz instead of 4MHz,
@@ -56,8 +59,10 @@ It was probably only released in Germany.
#include "sound/s14001a.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -78,6 +83,7 @@ public:
m_irq_on(*this, "irq_on"),
m_ppi8255(*this, "ppi8255"),
m_rombank(*this, "rombank"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
@@ -103,6 +109,7 @@ private:
required_device<timer_device> m_irq_on;
optional_device<i8255_device> m_ppi8255;
optional_memory_bank m_rombank;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<s14001a_device> m_speech;
required_region_ptr<u8> m_speech_rom;
@@ -183,8 +190,8 @@ DEVICE_IMAGE_LOAD_MEMBER(elite_state::cart_load)
void elite_state::update_display()
{
// 4/8 7seg leds+H, 8*8(+1) chessboard leds
- set_display_segmask(0x1ef, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | m_7seg_data, 1 << m_inp_mux);
+ u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
+ m_display->matrix(1 << m_inp_mux, m_led_data << 8 | seg_data);
}
READ8_MEMBER(elite_state::speech_r)
@@ -195,15 +202,15 @@ READ8_MEMBER(elite_state::speech_r)
WRITE8_MEMBER(elite_state::segment_w)
{
// a0-a2,d7: digit segment
- m_7seg_data = (data & 0x80) >> offset;
- m_7seg_data = bitswap<8>(m_7seg_data,7,6,4,5,0,2,1,3);
+ u8 mask = 1 << offset;
+ m_7seg_data = (m_7seg_data & ~mask) | ((data & 0x80) ? mask : 0);
update_display();
}
WRITE8_MEMBER(elite_state::led_w)
{
// a0-a2,d0: led data
- m_led_data = (data & 1) << offset;
+ m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset);
update_display();
}
@@ -475,7 +482,9 @@ void elite_state::pc(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
TIMER(config, "irq_off").configure_periodic(FUNC(elite_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(elite_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 16);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_pc);
/* sound hardware */
@@ -537,6 +546,8 @@ void elite_state::eag(machine_config &config)
NVRAM(config, "nvram.ic8", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "nvram.ic6", nvram_device::DEFAULT_ALL_0);
+ /* video hardware */
+ m_display->set_segmask(0x1ef, 0x7f);
config.set_default_layout(layout_fidel_eag);
}
diff --git a/src/mame/drivers/fidel_excel.cpp b/src/mame/drivers/fidel_excel.cpp
index c2e61f9719f..10266d8bcc0 100644
--- a/src/mame/drivers/fidel_excel.cpp
+++ b/src/mame/drivers/fidel_excel.cpp
@@ -140,6 +140,7 @@ Designer 2100 (model 6103): exactly same, but running at 5MHz
#include "sound/s14001a.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -156,6 +157,7 @@ public:
excel_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
@@ -181,6 +183,7 @@ protected:
private:
// devices/pointers
required_device<timer_device> m_irq_on;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
optional_device<s14001a_device> m_speech;
optional_region_ptr<u8> m_speech_rom;
@@ -269,12 +272,8 @@ WRITE8_MEMBER(excel_state::ttl_w)
u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
// update display: 4 7seg leds, 2*8 chessboard leds
- for (int i = 0; i < 6; i++)
- m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
-
- set_display_size(8, 2+4);
- set_display_segmask(0x3c, 0x7f);
- display_update();
+ m_display->matrix_partial(0, 2, led_sel, led_data, false);
+ m_display->matrix_partial(2, 4, led_sel >> 2, seg_data); // 6093
// speech (model 6092)
if (m_speech != nullptr)
@@ -487,7 +486,9 @@ void excel_state::fexcel(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(excel_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2+4, 8);
+ m_display->set_segmask(0x3c, 0x7f);
config.set_default_layout(layout_fidel_ex);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_sc12.cpp b/src/mame/drivers/fidel_sc12.cpp
index 50b77fb5fdd..0ddebf92cb8 100644
--- a/src/mame/drivers/fidel_sc12.cpp
+++ b/src/mame/drivers/fidel_sc12.cpp
@@ -53,11 +53,13 @@ If control Q4 is set, printer data can be read from I0.
#include "includes/fidelbase.h"
#include "cpu/m6502/r65c02.h"
+#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
-#include "machine/timer.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -73,6 +75,7 @@ public:
sc12_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
@@ -88,6 +91,7 @@ protected:
private:
// devices/pointers
required_device<timer_device> m_irq_on;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport_array<9> m_inputs;
@@ -148,7 +152,7 @@ WRITE8_MEMBER(sc12_state::control_w)
m_dac->write(BIT(sel, 9));
// d6,d7: led select (active low)
- display_matrix(9, 2, sel & 0x1ff, ~data >> 6 & 3);
+ m_display->matrix(~data >> 6 & 3, sel & 0x1ff);
// d4,d5: printer
//..
@@ -318,7 +322,8 @@ void sc12_state::sc12(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(sc12_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(sc12_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2, 9);
config.set_default_layout(layout_fidel_sc12);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_sc6.cpp b/src/mame/drivers/fidel_sc6.cpp
index 0690418fefa..adb1186266d 100644
--- a/src/mame/drivers/fidel_sc6.cpp
+++ b/src/mame/drivers/fidel_sc6.cpp
@@ -28,8 +28,10 @@ SC6 program is contained in BO6 and CG6.
#include "cpu/mcs48/mcs48.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -45,6 +47,7 @@ public:
sc6_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
@@ -59,6 +62,7 @@ protected:
private:
// devices/pointers
required_device<mcs48_cpu_device> m_maincpu;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport_array<9> m_inputs;
@@ -126,8 +130,7 @@ DEVICE_IMAGE_LOAD_MEMBER(sc6_state::cart_load)
void sc6_state::update_display()
{
// 2 7seg leds
- set_display_segmask(3, 0x7f);
- display_matrix(7, 2, 1 << m_inp_mux, m_led_select);
+ m_display->matrix(m_led_select, 1 << m_inp_mux);
}
WRITE8_MEMBER(sc6_state::mux_w)
@@ -311,7 +314,9 @@ void sc6_state::sc6(machine_config &config)
m_maincpu->t0_in_cb().set(FUNC(sc6_state::input6_r));
m_maincpu->t1_in_cb().set(FUNC(sc6_state::input7_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(sc6_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(2, 7);
+ m_display->set_segmask(0x3, 0x7f);
config.set_default_layout(layout_fidel_sc6);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_sc8.cpp b/src/mame/drivers/fidel_sc8.cpp
index 212637fdc0f..5b3efd50a43 100644
--- a/src/mame/drivers/fidel_sc8.cpp
+++ b/src/mame/drivers/fidel_sc8.cpp
@@ -21,6 +21,7 @@ Fidelity Sensory Chess Challenger 8 overview:
#include "cpu/z80/z80.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -34,6 +35,7 @@ class scc_state : public fidelbase_state
public:
scc_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -46,6 +48,7 @@ protected:
private:
// devices/pointers
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<9> m_inputs;
@@ -93,7 +96,7 @@ WRITE8_MEMBER(scc_state::control_w)
m_inp_mux = data & 0xf;
u16 sel = 1 << m_inp_mux;
m_dac->write(BIT(sel, 9));
- display_matrix(8, 9, m_led_data, (sel & 0xff) | (data << 4 & 0x100));
+ m_display->matrix((sel & 0xff) | (data << 4 & 0x100), m_led_data);
}
READ8_MEMBER(scc_state::input_r)
@@ -245,7 +248,8 @@ void scc_state::scc(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &scc_state::main_map);
m_maincpu->set_addrmap(AS_IO, &scc_state::main_io);
- TIMER(config, "display_decay").configure_periodic(FUNC(scc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 8);
config.set_default_layout(layout_fidel_sc8);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_sc9.cpp b/src/mame/drivers/fidel_sc9.cpp
index 1e7c6e1e2e8..6de02ffc66b 100644
--- a/src/mame/drivers/fidel_sc9.cpp
+++ b/src/mame/drivers/fidel_sc9.cpp
@@ -44,8 +44,10 @@ IRQ and write strobe are unused. Maximum known size is 16KB.
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+
#include "softlist.h"
#include "speaker.h"
@@ -64,6 +66,7 @@ public:
sc9_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_irq_on(*this, "irq_on"),
+ m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
@@ -80,6 +83,7 @@ protected:
// devices/pointers
required_device<timer_device> m_irq_on;
+ required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport_array<9> m_inputs;
@@ -169,7 +173,7 @@ DEVICE_IMAGE_LOAD_MEMBER(sc9_state::cart_load)
void sc9_state::update_display()
{
// 8*8 chessboard leds + 1 corner led
- display_matrix(8, 9, m_led_data, 1 << m_inp_mux);
+ m_display->matrix(1 << m_inp_mux, m_led_data);
}
WRITE8_MEMBER(sc9_state::control_w)
@@ -189,7 +193,7 @@ WRITE8_MEMBER(sc9_state::control_w)
WRITE8_MEMBER(sc9_state::led_w)
{
// a0-a2,d0: led data via NE591N
- m_led_data = (data & 1) << offset;
+ m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset);
update_display();
}
@@ -457,7 +461,8 @@ void sc9_state::sc9d(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_usec(41)); // active for 41us
TIMER(config, "irq_off").configure_periodic(FUNC(sc9_state::irq_off<M6502_IRQ_LINE>), irq_period);
- TIMER(config, "display_decay").configure_periodic(FUNC(sc9_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 8);
config.set_default_layout(layout_fidel_sc9);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_vcc.cpp b/src/mame/drivers/fidel_vcc.cpp
index 4da927c1bd1..bc9ceebd7b1 100644
--- a/src/mame/drivers/fidel_vcc.cpp
+++ b/src/mame/drivers/fidel_vcc.cpp
@@ -108,6 +108,7 @@ determination and give you a language option on power up or something.
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "sound/s14001a.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -122,6 +123,7 @@ public:
vcc_state(const machine_config &mconfig, device_type type, const char *tag) :
fidelbase_state(mconfig, type, tag),
m_ppi8255(*this, "ppi8255"),
+ m_display(*this, "display"),
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
m_language(*this, "language"),
@@ -140,6 +142,7 @@ protected:
private:
// devices/pointers
required_device<i8255_device> m_ppi8255;
+ required_device<pwm_display_device> m_display;
required_device<s14001a_device> m_speech;
required_region_ptr<u8> m_speech_rom;
required_region_ptr<u8> m_language;
@@ -196,8 +199,7 @@ void vcc_state::update_display()
{
// 4 7seg leds (note: sel d0 for extra leds)
u8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80);
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf);
+ m_display->matrix(m_led_select >> 2 & 0xf, outdata);
}
READ8_MEMBER(vcc_state::speech_r)
@@ -341,7 +343,9 @@ void vcc_state::vcc(machine_config &config)
m_ppi8255->in_pc_callback().set(FUNC(vcc_state::ppi_portc_r));
m_ppi8255->out_pc_callback().set(FUNC(vcc_state::ppi_portc_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(vcc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(4, 8);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_vcc);
/* sound hardware */
diff --git a/src/mame/drivers/fidel_vsc.cpp b/src/mame/drivers/fidel_vsc.cpp
index ffa03988e8f..e7ba742dc64 100644
--- a/src/mame/drivers/fidel_vsc.cpp
+++ b/src/mame/drivers/fidel_vsc.cpp
@@ -159,6 +159,7 @@ IFP: Impact Printer - also compatible with C64 apparently.
#include "machine/z80pio.h"
#include "machine/timer.h"
#include "sound/s14001a.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@@ -175,6 +176,7 @@ public:
m_irq_on(*this, "irq_on"),
m_z80pio(*this, "z80pio"),
m_ppi8255(*this, "ppi8255"),
+ m_display(*this, "display"),
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
m_language(*this, "language"),
@@ -192,6 +194,7 @@ private:
required_device<timer_device> m_irq_on;
required_device<z80pio_device> m_z80pio;
required_device<i8255_device> m_ppi8255;
+ required_device<pwm_display_device> m_display;
required_device<s14001a_device> m_speech;
required_region_ptr<u8> m_speech_rom;
required_region_ptr<u8> m_language;
@@ -257,8 +260,7 @@ void vsc_state::machine_start()
void vsc_state::update_display()
{
// 4 7seg leds+H, 8*8 chessboard leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(16, 8, m_led_data << 8 | m_7seg_data, m_cb_mux);
+ m_display->matrix(m_cb_mux, m_led_data << 8 | m_7seg_data);
}
READ8_MEMBER(vsc_state::speech_r)
@@ -526,7 +528,9 @@ void vsc_state::vsc(machine_config &config)
m_z80pio->in_pb_callback().set(FUNC(vsc_state::pio_portb_r));
m_z80pio->out_pb_callback().set(FUNC(vsc_state::pio_portb_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(vsc_state::display_decay_tick), attotime::from_msec(1));
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(8, 16);
+ m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_fidel_vsc);
/* sound hardware */
diff --git a/src/mame/drivers/intellect02.cpp b/src/mame/drivers/intellect02.cpp
index 6079031582d..db194ef0502 100644
--- a/src/mame/drivers/intellect02.cpp
+++ b/src/mame/drivers/intellect02.cpp
@@ -41,12 +41,12 @@ keypad legend:
#include "cpu/i8085/i8085.h"
#include "machine/i8255.h"
-#include "video/pwm.h"
#include "sound/beep.h"
-#include "speaker.h"
+#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "softlist.h"
+#include "speaker.h"
// internal artwork
#include "intellect02.lh" // clickable
diff --git a/src/mame/drivers/novag_cforte.cpp b/src/mame/drivers/novag_cforte.cpp
index 47a5600ff3e..d882f6b96c8 100644
--- a/src/mame/drivers/novag_cforte.cpp
+++ b/src/mame/drivers/novag_cforte.cpp
@@ -19,12 +19,12 @@ I/O is similar to supercon
#include "emu.h"
#include "cpu/m6502/r65c02.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "machine/nvram.h"
#include "machine/timer.h"
-#include "video/hlcd0538.h"
#include "sound/beep.h"
+#include "video/hlcd0538.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/novag_diablo.cpp b/src/mame/drivers/novag_diablo.cpp
index 9a8f9e7b234..d8cbaf2fdae 100644
--- a/src/mame/drivers/novag_diablo.cpp
+++ b/src/mame/drivers/novag_diablo.cpp
@@ -19,13 +19,13 @@ Scorpio 68000 hardware is very similar, but with chessboard buttons and side led
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
-#include "video/pwm.h"
-#include "video/hd44780.h"
#include "machine/sensorboard.h"
#include "machine/mos6551.h"
#include "machine/nvram.h"
#include "machine/timer.h"
#include "sound/beep.h"
+#include "video/pwm.h"
+#include "video/hd44780.h"
#include "emupal.h"
#include "screen.h"
diff --git a/src/mame/drivers/novag_mk1.cpp b/src/mame/drivers/novag_mk1.cpp
index 9bfba67f1c6..68ef9cbe635 100644
--- a/src/mame/drivers/novag_mk1.cpp
+++ b/src/mame/drivers/novag_mk1.cpp
@@ -71,8 +71,8 @@ Fairchild 3850PK CPU @ 2MHz (LC circuit), 3853PK
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
#include "machine/timer.h"
-#include "video/pwm.h"
#include "sound/beep.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/novag_presto.cpp b/src/mame/drivers/novag_presto.cpp
index 136fb3c44fd..aab2d28373f 100644
--- a/src/mame/drivers/novag_presto.cpp
+++ b/src/mame/drivers/novag_presto.cpp
@@ -22,10 +22,10 @@ TODO:
#include "emu.h"
#include "cpu/mcs48/mcs48.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/novag_savant.cpp b/src/mame/drivers/novag_savant.cpp
index fd11dd14e90..6e46812e0c2 100644
--- a/src/mame/drivers/novag_savant.cpp
+++ b/src/mame/drivers/novag_savant.cpp
@@ -27,12 +27,13 @@ TODO:
#include "cpu/z80/z80.h"
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
-#include "video/hlcd0538.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "machine/nvram.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+#include "video/hlcd0538.h"
+#include "video/pwm.h"
+
#include "screen.h"
#include "speaker.h"
diff --git a/src/mame/drivers/novag_scon.cpp b/src/mame/drivers/novag_scon.cpp
index 0c38de59f3b..345161aff1c 100644
--- a/src/mame/drivers/novag_scon.cpp
+++ b/src/mame/drivers/novag_scon.cpp
@@ -17,10 +17,10 @@ TODO:
#include "emu.h"
#include "cpu/m6502/m6502.h"
-#include "video/pwm.h"
#include "machine/sensorboard.h"
#include "machine/nvram.h"
#include "sound/beep.h"
+#include "video/pwm.h"
#include "speaker.h"
// internal artwork
diff --git a/src/mame/drivers/novag_sexpert.cpp b/src/mame/drivers/novag_sexpert.cpp
index 0caf493bb2e..9f40078a5f1 100644
--- a/src/mame/drivers/novag_sexpert.cpp
+++ b/src/mame/drivers/novag_sexpert.cpp
@@ -23,13 +23,13 @@ instead of magnet sensors.
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/m6502/m65c02.h"
-#include "video/pwm.h"
-#include "video/hd44780.h"
#include "machine/sensorboard.h"
#include "machine/mos6551.h"
#include "machine/nvram.h"
#include "machine/timer.h"
#include "sound/beep.h"
+#include "video/hd44780.h"
+#include "video/pwm.h"
#include "emupal.h"
#include "screen.h"