mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
witch: Take the "Hopper Active" DSW value into proper account; no longer must it be low
Add ticket_dispenser_device::motor_w as a proper WRITE_LINE method, first step towards eliminating the m_active_bit=0x80 nonsense (nw) (#1485 please take note)
This commit is contained in:
parent
48ff916037
commit
df5405de65
@ -274,6 +274,7 @@ public:
|
|||||||
int m_scrollx;
|
int m_scrollx;
|
||||||
int m_scrolly;
|
int m_scrolly;
|
||||||
UINT8 m_reg_a002;
|
UINT8 m_reg_a002;
|
||||||
|
UINT8 m_motor_active;
|
||||||
DECLARE_WRITE8_MEMBER(gfx0_vram_w);
|
DECLARE_WRITE8_MEMBER(gfx0_vram_w);
|
||||||
DECLARE_WRITE8_MEMBER(gfx0_cram_w);
|
DECLARE_WRITE8_MEMBER(gfx0_cram_w);
|
||||||
DECLARE_WRITE8_MEMBER(gfx1_vram_w);
|
DECLARE_WRITE8_MEMBER(gfx1_vram_w);
|
||||||
@ -295,6 +296,7 @@ public:
|
|||||||
virtual void video_start() override;
|
virtual void video_start() override;
|
||||||
UINT32 screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
virtual void machine_reset() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -420,8 +422,7 @@ WRITE8_MEMBER(witch_state::write_a006)
|
|||||||
if (data == 0)
|
if (data == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: this assumes the "Hopper Active" DSW is "Low"
|
m_hopper->motor_w(!BIT(data, 1) ^ m_motor_active);
|
||||||
m_hopper->write(space, 0, !BIT(data, 1) ? 0x80 : 0);
|
|
||||||
|
|
||||||
// TODO: Bit 3 = Attendant Pay
|
// TODO: Bit 3 = Attendant Pay
|
||||||
|
|
||||||
@ -695,6 +696,7 @@ void witch_state::video_start()
|
|||||||
save_item(NAME(m_scrollx));
|
save_item(NAME(m_scrollx));
|
||||||
save_item(NAME(m_scrolly));
|
save_item(NAME(m_scrolly));
|
||||||
save_item(NAME(m_reg_a002));
|
save_item(NAME(m_reg_a002));
|
||||||
|
save_item(NAME(m_motor_active));
|
||||||
}
|
}
|
||||||
|
|
||||||
void witch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
void witch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
@ -756,6 +758,12 @@ UINT32 witch_state::screen_update_witch(screen_device &screen, bitmap_ind16 &bit
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void witch_state::machine_reset()
|
||||||
|
{
|
||||||
|
// Keep track of the "Hopper Active" DSW value because the program will use it
|
||||||
|
m_motor_active = (ioport("YM_PortB")->read() & 0x08) ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( witch, witch_state )
|
static MACHINE_CONFIG_START( witch, witch_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz */
|
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz */
|
||||||
|
@ -98,6 +98,7 @@ void ticket_dispenser_device::static_set_senses(device_t &device, UINT8 motor_se
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// read - read the status line via the active bit
|
// read - read the status line via the active bit
|
||||||
|
// (legacy method)
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
READ8_MEMBER( ticket_dispenser_device::read )
|
READ8_MEMBER( ticket_dispenser_device::read )
|
||||||
@ -119,7 +120,7 @@ READ_LINE_MEMBER( ticket_dispenser_device::line_r )
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// write - write the control line via the active
|
// write - write the control line via the active
|
||||||
// bit
|
// bit (legacy method)
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
WRITE8_MEMBER( ticket_dispenser_device::write )
|
WRITE8_MEMBER( ticket_dispenser_device::write )
|
||||||
@ -147,6 +148,15 @@ WRITE8_MEMBER( ticket_dispenser_device::write )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// motor_w - write the control line as a proper
|
||||||
|
// line
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER( ticket_dispenser_device::motor_w )
|
||||||
|
{
|
||||||
|
write(machine().driver_data()->generic_space(), 0, state ? m_active_bit : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
@ -64,6 +64,7 @@ public:
|
|||||||
DECLARE_READ8_MEMBER( read );
|
DECLARE_READ8_MEMBER( read );
|
||||||
DECLARE_READ_LINE_MEMBER( line_r );
|
DECLARE_READ_LINE_MEMBER( line_r );
|
||||||
DECLARE_WRITE8_MEMBER( write );
|
DECLARE_WRITE8_MEMBER( write );
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( motor_w );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
|
Loading…
Reference in New Issue
Block a user