mirror of
https://github.com/holub/mame
synced 2025-04-26 02:07:14 +03:00
williams.cpp: reduced tagmap lookups, identified some dips for jin (nw)
This commit is contained in:
parent
23356c8fa0
commit
6c781faf7b
@ -818,27 +818,26 @@ static INPUT_PORTS_START( jin )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) )
|
||||
PORT_DIPSETTING( 0x07, "A 2C/1C B 1C/3C" )
|
||||
PORT_DIPSETTING( 0x06, "A 2C/1C B 1C/1C" )
|
||||
PORT_DIPSETTING( 0x05, "A 1C/3C B 1C/3C" )
|
||||
PORT_DIPSETTING( 0x04, "A 1C/3C B 1C/1C" )
|
||||
PORT_DIPSETTING( 0x03, "A 1C/2C B 1C/3C" )
|
||||
PORT_DIPSETTING( 0x02, "A 1C/2C B 1C/1C" )
|
||||
PORT_DIPSETTING( 0x01, "A 1C/1C B 1C/3C" )
|
||||
PORT_DIPSETTING( 0x00, "A 1C/1C B 1C/1C" )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x08, "4" )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x60, 0x60, "Level completed" )
|
||||
PORT_DIPSETTING( 0x60, "85%" )
|
||||
PORT_DIPSETTING( 0x40, "75%" )
|
||||
PORT_DIPSETTING( 0x20, "65%" )
|
||||
PORT_DIPSETTING( 0x00, "55%" )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
@ -847,16 +846,14 @@ static INPUT_PORTS_START( jin )
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // coins don't work if you change this..
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 ) // where is coin 2?
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
@ -30,7 +30,10 @@ public:
|
||||
m_watchdog(*this, "watchdog"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_generic_paletteram_8(*this, "paletteram") { }
|
||||
m_generic_paletteram_8(*this, "paletteram"),
|
||||
m_pia_0(*this, "pia_0"),
|
||||
m_pia_1(*this, "pia_1"),
|
||||
m_pia_2(*this, "pia_2") { }
|
||||
|
||||
enum
|
||||
{
|
||||
@ -120,6 +123,9 @@ public:
|
||||
required_device<screen_device> m_screen;
|
||||
optional_device<palette_device> m_palette;
|
||||
optional_shared_ptr<uint8_t> m_generic_paletteram_8;
|
||||
required_device<pia6821_device> m_pia_0;
|
||||
required_device<pia6821_device> m_pia_1;
|
||||
required_device<pia6821_device> m_pia_2;
|
||||
};
|
||||
|
||||
|
||||
@ -129,10 +135,12 @@ public:
|
||||
blaster_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: williams_state(mconfig, type, tag),
|
||||
m_soundcpu_b(*this, "soundcpu_b"),
|
||||
m_pia_2b(*this, "pia_2b"),
|
||||
m_blaster_palette_0(*this, "blaster_pal0"),
|
||||
m_blaster_scanline_control(*this, "blaster_scan") { }
|
||||
|
||||
optional_device<cpu_device> m_soundcpu_b;
|
||||
optional_device<pia6821_device> m_pia_2b;
|
||||
required_shared_ptr<uint8_t> m_blaster_palette_0;
|
||||
required_shared_ptr<uint8_t> m_blaster_scanline_control;
|
||||
|
||||
|
@ -18,11 +18,10 @@
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_va11_callback)
|
||||
{
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
int scanline = param;
|
||||
|
||||
/* the IRQ signal comes into CB1, and is set to VA11 */
|
||||
pia_1->cb1_w(scanline & 0x20);
|
||||
m_pia_1->cb1_w(scanline & 0x20);
|
||||
|
||||
/* set a timer for the next update */
|
||||
scanline += 0x20;
|
||||
@ -33,19 +32,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_va11_callback)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(williams_state::williams_count240_off_callback)
|
||||
{
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
|
||||
/* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */
|
||||
pia_1->ca1_w(0);
|
||||
m_pia_1->ca1_w(0);
|
||||
}
|
||||
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_count240_callback)
|
||||
{
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
|
||||
/* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */
|
||||
pia_1->ca1_w(1);
|
||||
m_pia_1->ca1_w(1);
|
||||
|
||||
/* set a timer to turn it off once the scanline counter resets */
|
||||
machine().scheduler().timer_set(m_screen->time_until_pos(0), timer_expired_delegate(FUNC(williams_state::williams_count240_off_callback),this));
|
||||
@ -57,8 +52,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_count240_callback)
|
||||
|
||||
WRITE_LINE_MEMBER(williams_state::williams_main_irq)
|
||||
{
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
int combined_state = pia_1->irq_a_state() | pia_1->irq_b_state();
|
||||
int combined_state = m_pia_1->irq_a_state() | m_pia_1->irq_b_state();
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
@ -74,8 +68,7 @@ WRITE_LINE_MEMBER(williams_state::williams_main_firq)
|
||||
|
||||
WRITE_LINE_MEMBER(williams_state::williams_snd_irq)
|
||||
{
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>("pia_2");
|
||||
int combined_state = pia_2->irq_a_state() | pia_2->irq_b_state();
|
||||
int combined_state = m_pia_2->irq_a_state() | m_pia_2->irq_b_state();
|
||||
|
||||
/* IRQ to the sound CPU */
|
||||
m_soundcpu->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
@ -83,8 +76,7 @@ WRITE_LINE_MEMBER(williams_state::williams_snd_irq)
|
||||
/* Same as above, but for second sound board */
|
||||
WRITE_LINE_MEMBER(blaster_state::williams_snd_irq_b)
|
||||
{
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>("pia_2b");
|
||||
int combined_state = pia_2->irq_a_state() | pia_2->irq_b_state();
|
||||
int combined_state = m_pia_2b->irq_a_state() | m_pia_2b->irq_b_state();
|
||||
|
||||
/* IRQ to the sound CPU */
|
||||
m_soundcpu_b->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
@ -100,9 +92,7 @@ WRITE_LINE_MEMBER(blaster_state::williams_snd_irq_b)
|
||||
|
||||
WRITE_LINE_MEMBER(williams2_state::mysticm_main_irq)
|
||||
{
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>("pia_0");
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
int combined_state = pia_0->irq_b_state() | pia_1->irq_a_state() | pia_1->irq_b_state();
|
||||
int combined_state = m_pia_0->irq_b_state() | m_pia_1->irq_a_state() | m_pia_1->irq_b_state();
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
@ -111,9 +101,7 @@ WRITE_LINE_MEMBER(williams2_state::mysticm_main_irq)
|
||||
|
||||
WRITE_LINE_MEMBER(williams2_state::tshoot_main_irq)
|
||||
{
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>("pia_0");
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
int combined_state = pia_0->irq_a_state() | pia_0->irq_b_state() | pia_1->irq_a_state() | pia_1->irq_b_state();
|
||||
int combined_state = m_pia_0->irq_a_state() | m_pia_0->irq_b_state() | m_pia_1->irq_a_state() | m_pia_1->irq_b_state();
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
@ -168,13 +156,11 @@ MACHINE_RESET_MEMBER(williams_state,williams)
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_va11_callback)
|
||||
{
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>("pia_0");
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>("pia_1");
|
||||
int scanline = param;
|
||||
|
||||
/* the IRQ signal comes into CB1, and is set to VA11 */
|
||||
pia_0->cb1_w(scanline & 0x20);
|
||||
pia_1->ca1_w(scanline & 0x20);
|
||||
m_pia_0->cb1_w(scanline & 0x20);
|
||||
m_pia_1->ca1_w(scanline & 0x20);
|
||||
|
||||
/* set a timer for the next update */
|
||||
scanline += 0x20;
|
||||
@ -185,19 +171,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_va11_callback)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(williams2_state::williams2_endscreen_off_callback)
|
||||
{
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>("pia_0");
|
||||
|
||||
/* the /ENDSCREEN signal comes into CA1 */
|
||||
pia_0->ca1_w(1);
|
||||
m_pia_0->ca1_w(1);
|
||||
}
|
||||
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_endscreen_callback)
|
||||
{
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>("pia_0");
|
||||
|
||||
/* the /ENDSCREEN signal comes into CA1 */
|
||||
pia_0->ca1_w(0);
|
||||
m_pia_0->ca1_w(0);
|
||||
|
||||
/* set a timer to turn it off once the scanline counter resets */
|
||||
machine().scheduler().timer_set(m_screen->time_until_pos(8), timer_expired_delegate(FUNC(williams2_state::williams2_endscreen_off_callback),this));
|
||||
@ -293,10 +275,8 @@ WRITE8_MEMBER(williams2_state::williams2_bank_select_w)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(williams_state::williams_deferred_snd_cmd_w)
|
||||
{
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>("pia_2");
|
||||
|
||||
pia_2->portb_w(param);
|
||||
pia_2->cb1_w((param == 0xff) ? 0 : 1);
|
||||
m_pia_2->portb_w(param);
|
||||
m_pia_2->cb1_w((param == 0xff) ? 0 : 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(williams_state::williams_snd_cmd_w)
|
||||
@ -312,9 +292,7 @@ WRITE8_MEMBER(williams_state::playball_snd_cmd_w)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(williams2_state::williams2_deferred_snd_cmd_w)
|
||||
{
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>("pia_2");
|
||||
|
||||
pia_2->porta_w(param);
|
||||
m_pia_2->porta_w(param);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(williams2_state::williams2_snd_cmd_w)
|
||||
@ -598,13 +576,11 @@ WRITE8_MEMBER(blaster_state::blaster_bank_select_w)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(blaster_state::blaster_deferred_snd_cmd_w)
|
||||
{
|
||||
pia6821_device *pia_2l = machine().device<pia6821_device>("pia_2");
|
||||
pia6821_device *pia_2r = machine().device<pia6821_device>("pia_2b");
|
||||
uint8_t l_data = param | 0x80;
|
||||
uint8_t r_data = (param >> 1 & 0x40) | (param & 0x3f) | 0x80;
|
||||
|
||||
pia_2l->portb_w(l_data); pia_2l->cb1_w((l_data == 0xff) ? 0 : 1);
|
||||
pia_2r->portb_w(r_data); pia_2r->cb1_w((r_data == 0xff) ? 0 : 1);
|
||||
m_pia_2->portb_w(l_data); m_pia_2->cb1_w((l_data == 0xff) ? 0 : 1);
|
||||
m_pia_2b->portb_w(r_data); m_pia_2b->cb1_w((r_data == 0xff) ? 0 : 1);
|
||||
}
|
||||
|
||||
|
||||
@ -685,8 +661,7 @@ MACHINE_RESET_MEMBER(joust2_state,joust2)
|
||||
|
||||
TIMER_CALLBACK_MEMBER(joust2_state::joust2_deferred_snd_cmd_w)
|
||||
{
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>("pia_2");
|
||||
pia_2->porta_w(param & 0xff);
|
||||
m_pia_2->porta_w(param & 0xff);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user