mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
(nw) output finder for gts80a,gts80b,inder,jeutel,jp,ltd
This commit is contained in:
parent
40376faa7c
commit
e6a80d2e54
@ -29,6 +29,7 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_r0_sound(*this, "r0sound")
|
||||
, m_r1_sound(*this, "r1sound")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(gts80a);
|
||||
@ -49,9 +50,11 @@ private:
|
||||
uint8_t m_lamprow;
|
||||
uint8_t m_swrow;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<gottlieb_sound_r0_device> m_r0_sound;
|
||||
optional_device<gottlieb_sound_r1_device> m_r1_sound;
|
||||
output_finder<60> m_digits;
|
||||
};
|
||||
|
||||
void gts80a_state::gts80a_map(address_map &map)
|
||||
@ -296,15 +299,15 @@ WRITE8_MEMBER( gts80a_state::port2a_w )
|
||||
{
|
||||
case 0x10: // player 1&2
|
||||
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
|
||||
output().set_digit_value(data & 15, seg2);
|
||||
m_digits[data & 15] = seg2;
|
||||
break;
|
||||
case 0x20: // player 3&4
|
||||
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
|
||||
output().set_digit_value((data & 15)+20, seg2);
|
||||
m_digits[(data & 15)+20] = seg2;
|
||||
break;
|
||||
case 0x40: // credits & balls
|
||||
if (!BIT(m_segment, 7)) m_segment = 1; // turn '1' back to normal
|
||||
output().set_digit_value((data & 15)+40, patterns[m_segment & 15]);
|
||||
m_digits[(data & 15)+40] = patterns[m_segment & 15];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_r0_sound(*this, "r0sound")
|
||||
, m_r1_sound(*this, "r1sound")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(gts80b);
|
||||
@ -57,9 +58,11 @@ private:
|
||||
bool m_in_cmd_mode[2];
|
||||
uint8_t m_digit[2];
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<gottlieb_sound_r0_device> m_r0_sound;
|
||||
optional_device<gottlieb_sound_r1_device> m_r1_sound;
|
||||
output_finder<40> m_digits;
|
||||
};
|
||||
|
||||
void gts80b_state::gts80b_map(address_map &map)
|
||||
@ -347,7 +350,7 @@ WRITE8_MEMBER( gts80b_state::port2b_w )
|
||||
{ // display a character
|
||||
segment = patterns[m_dispcmd & 0x7f]; // ignore blank/inverse bit
|
||||
segment = bitswap<16>(segment, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 3, 2, 1, 0, 0);
|
||||
output().set_digit_value(m_digit[i]+i*20, segment);
|
||||
m_digits[m_digit[i]+i*20] = segment;
|
||||
m_digit[i]++; // auto-increment pointer
|
||||
if (m_digit[i] > 19) m_digit[i] = 0; // check for overflow
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ public:
|
||||
, m_9b(*this, "9b")
|
||||
, m_13(*this, "13")
|
||||
, m_switches(*this, "SW.%u", 0)
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(ppic_r);
|
||||
@ -104,6 +105,7 @@ private:
|
||||
uint32_t m_sound_addr;
|
||||
uint8_t *m_p_speech;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
optional_device<sn76489_device> m_sn;
|
||||
@ -113,6 +115,7 @@ private:
|
||||
optional_device<ttl7474_device> m_9b;
|
||||
optional_device<hct157_device> m_13;
|
||||
required_ioport_array<11> m_switches;
|
||||
output_finder<50> m_digits;
|
||||
};
|
||||
|
||||
void inder_state::brvteam_map(address_map &map)
|
||||
@ -1211,7 +1214,7 @@ WRITE8_MEMBER( inder_state::disp_w )
|
||||
{
|
||||
offset = (offset >> 3) & 7;
|
||||
for (i = 0; i < 5; i++)
|
||||
output().set_digit_value(i*10+offset, m_segment[i]);
|
||||
m_digits[i*10+offset] = m_segment[i];
|
||||
}
|
||||
}
|
||||
|
||||
@ -1243,7 +1246,7 @@ WRITE8_MEMBER( inder_state::ppi64c_w )
|
||||
{
|
||||
if ((m_game==1) && (i == 4)) // mundial,clown,250cc,atleta have credit and ball displays swapped
|
||||
data ^= 4;
|
||||
output().set_digit_value(i*10+data, m_segment[i]);
|
||||
m_digits[i*10+data] = m_segment[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_cpu2(*this, "cpu2")
|
||||
, m_tms(*this, "tms")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(jeutel);
|
||||
@ -55,9 +56,11 @@ private:
|
||||
uint8_t m_sndcmd;
|
||||
uint8_t m_digit;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_cpu2;
|
||||
required_device<tms5110_device> m_tms;
|
||||
output_finder<60> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -133,7 +136,7 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w )
|
||||
|
||||
if (BIT(data, 6))
|
||||
{
|
||||
output().set_digit_value(40+m_digit, 0x3f); //patterns[data&15];
|
||||
m_digits[40+m_digit] = 0x3f; //patterns[data&15];
|
||||
return;
|
||||
}
|
||||
switch (data & 0x0f)
|
||||
@ -158,11 +161,11 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w )
|
||||
}
|
||||
if (BIT(data, 4))
|
||||
{
|
||||
output().set_digit_value(m_digit, (blank) ? 0 : segment);
|
||||
m_digits[m_digit] = (blank) ? 0 : segment;
|
||||
}
|
||||
else if (BIT(data, 5))
|
||||
{
|
||||
output().set_digit_value(20+m_digit, (blank) ? 0 : segment);
|
||||
m_digits[20+m_digit] = (blank) ? 0 : segment;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ public:
|
||||
, m_msm(*this, "msm")
|
||||
, m_adpcm_select(*this, "adpcm_select")
|
||||
, m_adpcm_bank(*this, "adpcm_bank")
|
||||
, m_main_displays(*this, "digit%u", 0U)
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
void jp(machine_config &config);
|
||||
@ -80,7 +80,7 @@ private:
|
||||
optional_device<msm5205_device> m_msm;
|
||||
optional_device<ls157_device> m_adpcm_select;
|
||||
optional_memory_bank m_adpcm_bank;
|
||||
output_finder<32> m_main_displays;
|
||||
output_finder<100> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -169,7 +169,7 @@ static INPUT_PORTS_START( jp )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR(Off))
|
||||
PORT_DIPSETTING( 0x00, DEF_STR(On))
|
||||
PORT_DIPNAME( 0x08, 0x08, "SW D")
|
||||
PORT_DIPSETTING( 0x40, DEF_STR(Off))
|
||||
PORT_DIPSETTING( 0x08, DEF_STR(Off))
|
||||
PORT_DIPSETTING( 0x00, DEF_STR(On))
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
@ -267,7 +267,7 @@ void jp_state::update_display()
|
||||
if (t == 8)
|
||||
{ // ball number
|
||||
segment = m_disp_data >> 6;
|
||||
output().set_digit_value(94, bitswap<8>(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff);
|
||||
m_digits[94] = bitswap<8>(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff;
|
||||
}
|
||||
else if (t < 8)
|
||||
{ // main displays
|
||||
@ -278,9 +278,9 @@ void jp_state::update_display()
|
||||
|
||||
for (int i = 0; i < 32; i++)
|
||||
if (BIT(m_disp_data, i))
|
||||
m_main_displays[i] = m_main_displays[i] & ~segment;
|
||||
m_digits[i] = m_digits[i] & ~segment;
|
||||
else
|
||||
m_main_displays[i] = m_main_displays[i] | segment;
|
||||
m_digits[i] = m_digits[i] | segment;
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,7 +316,7 @@ void jp_state::machine_start()
|
||||
{
|
||||
genpin_class::machine_start();
|
||||
|
||||
m_main_displays.resolve();
|
||||
m_digits.resolve();
|
||||
|
||||
if (m_adpcm_bank.found())
|
||||
m_adpcm_bank->configure_entries(0, 16, memregion("sound1")->base(), 0x8000);
|
||||
@ -327,10 +327,10 @@ void jp_state::machine_reset()
|
||||
genpin_class::machine_reset();
|
||||
|
||||
//m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
output().set_digit_value(96, 0x3f);
|
||||
output().set_digit_value(97, 0x3f);
|
||||
output().set_digit_value(98, 0x3f);
|
||||
output().set_digit_value(99, 0x3f);
|
||||
m_digits[96] = 0x3f;
|
||||
m_digits[97] = 0x3f;
|
||||
m_digits[98] = 0x3f;
|
||||
m_digits[99] = 0x3f;
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(jp_state::jp)
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_p_ram(*this, "nvram")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(atla_ltd);
|
||||
@ -87,8 +88,10 @@ private:
|
||||
uint8_t m_out_offs;
|
||||
uint8_t m_port2;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<uint8_t> m_p_ram;
|
||||
output_finder<50> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -329,21 +332,21 @@ WRITE8_MEMBER( ltd_state::port1_w )
|
||||
if (m_clear)
|
||||
{
|
||||
if (row>7)
|
||||
output().set_digit_value(row+2, segment); // P2
|
||||
m_digits[row+2] = segment; // P2
|
||||
else
|
||||
output().set_digit_value(row, segment); // P1
|
||||
m_digits[row] = segment; // P1
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (m_clear)
|
||||
{
|
||||
if (row>13)
|
||||
output().set_digit_value(row+26, segment); // credits / ball
|
||||
m_digits[row+26] = segment; // credits / ball
|
||||
else
|
||||
if (row>7)
|
||||
output().set_digit_value(row+22, segment); // P4
|
||||
m_digits[row+22] = segment; // P4
|
||||
else
|
||||
output().set_digit_value(row+20, segment); // P3
|
||||
m_digits[row+20] = segment; // P3
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -384,8 +387,6 @@ DRIVER_INIT_MEMBER( ltd_state, ltd )
|
||||
DRIVER_INIT_MEMBER( ltd_state, atla_ltd )
|
||||
{
|
||||
m_game = 1;
|
||||
output().set_digit_value(0, 0x3f);
|
||||
output().set_digit_value(10, 0x3f);
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( ltd_state, bhol_ltd )
|
||||
@ -412,27 +413,29 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
|
||||
{
|
||||
case 1: // atlantis (2-player, 5-digit)
|
||||
{
|
||||
m_digits[0] = 0x3f;
|
||||
m_digits[10] = 0x3f;
|
||||
switch(m_out_offs-0x60)
|
||||
{
|
||||
case 0:
|
||||
output().set_digit_value(1, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(2, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[1] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[2] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 1:
|
||||
output().set_digit_value(11, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(12, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[11] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[12] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 2:
|
||||
output().set_digit_value(3, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(4, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[3] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[4] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 3:
|
||||
output().set_digit_value(13, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(14, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[13] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[14] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 8:
|
||||
output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[41] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[40] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -442,32 +445,32 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
|
||||
switch(m_out_offs-0x60)
|
||||
{
|
||||
case 0:
|
||||
output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[0] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[1] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 1:
|
||||
output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[10] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[11] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 2:
|
||||
output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[2] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[3] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 3:
|
||||
output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[12] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[13] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 4:
|
||||
output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[4] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[5] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 5:
|
||||
output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[14] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[15] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 8:
|
||||
output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[41] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[40] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -477,49 +480,48 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
|
||||
switch(m_out_offs-0x60)
|
||||
{
|
||||
case 0:
|
||||
output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[0] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[1] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 1:
|
||||
output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[2] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[3] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 2:
|
||||
output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[4] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[5] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 3:
|
||||
output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[10] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[11] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 4:
|
||||
output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[12] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[13] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 5:
|
||||
output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[14] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[15] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 6:
|
||||
output().set_digit_value(20, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(21, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[20] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[21] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 7:
|
||||
output().set_digit_value(22, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(23, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[22] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[23] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 8:
|
||||
output().set_digit_value(24, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(25, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[24] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[25] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
case 9:
|
||||
output().set_digit_value(40, patterns[m_p_ram[m_out_offs]&15]);
|
||||
output().set_digit_value(41, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
m_digits[40] = patterns[m_p_ram[m_out_offs]&15];
|
||||
m_digits[41] = patterns[m_p_ram[m_out_offs]>>4];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user