drw80pkr.cpp: device_finder (nw)

This commit is contained in:
Ivan Vangelista 2018-05-31 17:30:15 +02:00
parent 3b4af26559
commit 04cd6a61b7

View File

@ -41,8 +41,18 @@ public:
drw80pkr_state(const machine_config &mconfig, device_type type, const char *tag) drw80pkr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), 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; tilemap_t *m_bg_tilemap;
uint8_t m_t0; uint8_t m_t0;
uint8_t m_t1; uint8_t m_t1;
@ -56,28 +66,30 @@ public:
uint8_t m_pkr_io_ram[0x100]; uint8_t m_pkr_io_ram[0x100];
uint16_t m_video_ram[0x0400]; uint16_t m_video_ram[0x0400];
uint8_t m_color_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(p1_w);
DECLARE_WRITE8_MEMBER(p2_w); DECLARE_WRITE8_MEMBER(p2_w);
DECLARE_WRITE_LINE_MEMBER(prog_w); DECLARE_WRITE_LINE_MEMBER(prog_w);
DECLARE_WRITE8_MEMBER(bus_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(t0_r);
DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_READ_LINE_MEMBER(t1_r);
DECLARE_READ8_MEMBER(p1_r); DECLARE_READ8_MEMBER(p1_r);
DECLARE_READ8_MEMBER(p2_r); DECLARE_READ8_MEMBER(p2_r);
DECLARE_READ8_MEMBER(bus_r); DECLARE_READ8_MEMBER(bus_r);
DECLARE_READ8_MEMBER(drw80pkr_io_r); DECLARE_READ8_MEMBER(io_r);
void init_drw80pkr();
TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_start() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(drw80pkr); DECLARE_PALETTE_INIT(drw80pkr);
uint32_t screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode; void io_map(address_map &map);
void drw80pkr(machine_config &config); void map(address_map &map);
void drw80pkr_io_map(address_map &map);
void drw80pkr_map(address_map &map);
}; };
@ -87,7 +99,7 @@ public:
void drw80pkr_state::machine_start() 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; 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; m_bus = data;
} }
WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w) WRITE8_MEMBER(drw80pkr_state::io_w)
{ {
uint16_t n_offs; uint16_t n_offs;
@ -188,11 +200,11 @@ WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w)
// ay8910 control port // ay8910 control port
if (m_p1 == 0xfc) 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 // ay8910_write_port_0_w
if (m_p1 == 0xfe) 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; return m_bus;
} }
READ8_MEMBER(drw80pkr_state::drw80pkr_io_r) READ8_MEMBER(drw80pkr_state::io_r)
{ {
uint8_t ret; uint8_t ret;
uint16_t kbdin; 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); 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); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@ -393,7 +405,7 @@ GFXDECODE_END
void drw80pkr_state::init_drw80pkr() 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 * * 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) MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
// basic machine hardware // basic machine hardware
MCFG_DEVICE_ADD("maincpu", I8039, CPU_CLOCK) MCFG_DEVICE_ADD(m_maincpu, I8039, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(drw80pkr_map) MCFG_DEVICE_PROGRAM_MAP(map)
MCFG_DEVICE_IO_MAP(drw80pkr_io_map) MCFG_DEVICE_IO_MAP(io_map)
MCFG_MCS48_PORT_T0_IN_CB(READLINE(*this, drw80pkr_state, t0_r)) 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_T1_IN_CB(READLINE(*this, drw80pkr_state, t1_r))
MCFG_MCS48_PORT_P1_IN_CB(READ8(*this, drw80pkr_state, p1_r)) MCFG_MCS48_PORT_P1_IN_CB(READ8(*this, drw80pkr_state, p1_r))
@ -467,10 +479,10 @@ MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((31+1)*8, (31+1)*8) 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_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_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_ADD("palette", 16*16)
MCFG_PALETTE_INIT_OWNER(drw80pkr_state, drw80pkr) MCFG_PALETTE_INIT_OWNER(drw80pkr_state, drw80pkr)
@ -479,7 +491,7 @@ MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
// sound hardware // sound hardware
SPEAKER(config, "mono").front_center(); 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) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END MACHINE_CONFIG_END