mirror of
https://github.com/holub/mame
synced 2025-07-01 08:18:59 +03:00
drw80pkr.cpp: device_finder (nw)
This commit is contained in:
parent
3b4af26559
commit
04cd6a61b7
@ -41,8 +41,18 @@ public:
|
||||
drw80pkr_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode") { }
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_aysnd(*this, "aysnd"),
|
||||
m_mainbank(*this, "mainbank") { }
|
||||
|
||||
void init_drw80pkr();
|
||||
void drw80pkr(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
tilemap_t *m_bg_tilemap;
|
||||
uint8_t m_t0;
|
||||
uint8_t m_t1;
|
||||
@ -56,28 +66,30 @@ public:
|
||||
uint8_t m_pkr_io_ram[0x100];
|
||||
uint16_t m_video_ram[0x0400];
|
||||
uint8_t m_color_ram[0x0400];
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<ay8912_device> m_aysnd;
|
||||
required_memory_bank m_mainbank;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(p1_w);
|
||||
DECLARE_WRITE8_MEMBER(p2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(prog_w);
|
||||
DECLARE_WRITE8_MEMBER(bus_w);
|
||||
DECLARE_WRITE8_MEMBER(drw80pkr_io_w);
|
||||
DECLARE_WRITE8_MEMBER(io_w);
|
||||
DECLARE_READ_LINE_MEMBER(t0_r);
|
||||
DECLARE_READ_LINE_MEMBER(t1_r);
|
||||
DECLARE_READ8_MEMBER(p1_r);
|
||||
DECLARE_READ8_MEMBER(p2_r);
|
||||
DECLARE_READ8_MEMBER(bus_r);
|
||||
DECLARE_READ8_MEMBER(drw80pkr_io_r);
|
||||
void init_drw80pkr();
|
||||
DECLARE_READ8_MEMBER(io_r);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
DECLARE_PALETTE_INIT(drw80pkr);
|
||||
uint32_t screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
void drw80pkr(machine_config &config);
|
||||
void drw80pkr_io_map(address_map &map);
|
||||
void drw80pkr_map(address_map &map);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void io_map(address_map &map);
|
||||
void map(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
@ -87,7 +99,7 @@ public:
|
||||
|
||||
void drw80pkr_state::machine_start()
|
||||
{
|
||||
machine().device<nvram_device>("nvram")->set_base(m_pkr_io_ram, sizeof(m_pkr_io_ram));
|
||||
subdevice<nvram_device>("nvram")->set_base(m_pkr_io_ram, sizeof(m_pkr_io_ram));
|
||||
}
|
||||
|
||||
/*****************
|
||||
@ -113,7 +125,7 @@ WRITE_LINE_MEMBER(drw80pkr_state::prog_w)
|
||||
{
|
||||
m_active_bank = m_active_bank ^ 0x01;
|
||||
|
||||
membank("bank1")->set_entry(m_active_bank);
|
||||
m_mainbank->set_entry(m_active_bank);
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +134,7 @@ WRITE8_MEMBER(drw80pkr_state::bus_w)
|
||||
m_bus = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w)
|
||||
WRITE8_MEMBER(drw80pkr_state::io_w)
|
||||
{
|
||||
uint16_t n_offs;
|
||||
|
||||
@ -188,11 +200,11 @@ WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w)
|
||||
|
||||
// ay8910 control port
|
||||
if (m_p1 == 0xfc)
|
||||
machine().device<ay8910_device>("aysnd")->address_w(space, 0, data);
|
||||
m_aysnd->address_w(space, 0, data);
|
||||
|
||||
// ay8910_write_port_0_w
|
||||
if (m_p1 == 0xfe)
|
||||
machine().device<ay8910_device>("aysnd")->data_w(space, 0, data);
|
||||
m_aysnd->data_w(space, 0, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,7 +237,7 @@ READ8_MEMBER(drw80pkr_state::bus_r)
|
||||
return m_bus;
|
||||
}
|
||||
|
||||
READ8_MEMBER(drw80pkr_state::drw80pkr_io_r)
|
||||
READ8_MEMBER(drw80pkr_state::io_r)
|
||||
{
|
||||
uint8_t ret;
|
||||
uint16_t kbdin;
|
||||
@ -326,7 +338,7 @@ void drw80pkr_state::video_start()
|
||||
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drw80pkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 27);
|
||||
}
|
||||
|
||||
uint32_t drw80pkr_state::screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
uint32_t drw80pkr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
|
||||
@ -393,7 +405,7 @@ GFXDECODE_END
|
||||
|
||||
void drw80pkr_state::init_drw80pkr()
|
||||
{
|
||||
membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base(), 0x1000);
|
||||
m_mainbank->configure_entries(0, 2, memregion("maincpu")->base(), 0x1000);
|
||||
}
|
||||
|
||||
|
||||
@ -401,14 +413,14 @@ void drw80pkr_state::init_drw80pkr()
|
||||
* Memory map information *
|
||||
*************************/
|
||||
|
||||
void drw80pkr_state::drw80pkr_map(address_map &map)
|
||||
void drw80pkr_state::map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).bankr("bank1");
|
||||
map(0x0000, 0x0fff).bankr("mainbank");
|
||||
}
|
||||
|
||||
void drw80pkr_state::drw80pkr_io_map(address_map &map)
|
||||
void drw80pkr_state::io_map(address_map &map)
|
||||
{
|
||||
map(0x00, 0xff).rw(this, FUNC(drw80pkr_state::drw80pkr_io_r), FUNC(drw80pkr_state::drw80pkr_io_w));
|
||||
map(0x00, 0xff).rw(this, FUNC(drw80pkr_state::io_r), FUNC(drw80pkr_state::io_w));
|
||||
}
|
||||
|
||||
/*************************
|
||||
@ -445,9 +457,9 @@ INPUT_PORTS_END
|
||||
|
||||
MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
|
||||
// basic machine hardware
|
||||
MCFG_DEVICE_ADD("maincpu", I8039, CPU_CLOCK)
|
||||
MCFG_DEVICE_PROGRAM_MAP(drw80pkr_map)
|
||||
MCFG_DEVICE_IO_MAP(drw80pkr_io_map)
|
||||
MCFG_DEVICE_ADD(m_maincpu, I8039, CPU_CLOCK)
|
||||
MCFG_DEVICE_PROGRAM_MAP(map)
|
||||
MCFG_DEVICE_IO_MAP(io_map)
|
||||
MCFG_MCS48_PORT_T0_IN_CB(READLINE(*this, drw80pkr_state, t0_r))
|
||||
MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, drw80pkr_state, t1_r))
|
||||
MCFG_MCS48_PORT_P1_IN_CB(READ8(*this, drw80pkr_state, p1_r))
|
||||
@ -457,7 +469,7 @@ MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
|
||||
MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(*this, drw80pkr_state, prog_w))
|
||||
MCFG_MCS48_PORT_BUS_IN_CB(READ8(*this, drw80pkr_state, bus_r))
|
||||
MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(*this, drw80pkr_state, bus_w))
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", drw80pkr_state, irq0_line_hold)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", drw80pkr_state, irq0_line_hold)
|
||||
|
||||
|
||||
// video hardware
|
||||
@ -467,10 +479,10 @@ MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE((31+1)*8, (31+1)*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 27*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(drw80pkr_state, screen_update_drw80pkr)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(drw80pkr_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_drw80pkr)
|
||||
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_drw80pkr)
|
||||
MCFG_PALETTE_ADD("palette", 16*16)
|
||||
MCFG_PALETTE_INIT_OWNER(drw80pkr_state, drw80pkr)
|
||||
|
||||
@ -479,7 +491,7 @@ MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
MCFG_DEVICE_ADD("aysnd", AY8912, 20000000/12)
|
||||
MCFG_DEVICE_ADD(m_aysnd, AY8912, 20000000/12)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user