summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mediagx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mediagx.cpp')
-rw-r--r--src/mame/drivers/mediagx.cpp67
1 files changed, 34 insertions, 33 deletions
diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp
index bbc34609e21..54b1b18adb5 100644
--- a/src/mame/drivers/mediagx.cpp
+++ b/src/mame/drivers/mediagx.cpp
@@ -92,6 +92,8 @@ public:
mediagx_state(const machine_config &mconfig, device_type type, const char *tag)
: pcat_base_state(mconfig, type, tag),
m_ide(*this, "ide"),
+ m_ramdac(*this, "ramdac"),
+ m_dmadac(*this, "dac%u", 0U),
m_main_ram(*this, "main_ram"),
m_cga_ram(*this, "cga_ram"),
m_bios_ram(*this, "bios_ram"),
@@ -106,6 +108,11 @@ public:
void mediagx(machine_config &config);
protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+
+private:
DECLARE_READ32_MEMBER(disp_ctrl_r);
DECLARE_WRITE32_MEMBER(disp_ctrl_w);
DECLARE_READ32_MEMBER(memory_ctrl_r);
@@ -118,10 +125,7 @@ protected:
DECLARE_WRITE32_MEMBER(ad1847_w);
DECLARE_READ8_MEMBER(io20_r);
DECLARE_WRITE8_MEMBER(io20_w);
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
- uint32_t screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_READ32_MEMBER(speedup0_r);
DECLARE_READ32_MEMBER(speedup1_r);
DECLARE_READ32_MEMBER(speedup2_r);
@@ -147,7 +151,6 @@ protected:
void mediagx_map(address_map &map);
void ramdac_map(address_map &map);
-private:
uint32_t cx5510_pci_r(int function, int reg, uint32_t mem_mask)
{
//osd_printf_debug("CX5510: PCI read %d, %02X, %08X\n", function, reg, mem_mask);
@@ -166,6 +169,8 @@ private:
}
required_device<ide_controller_32_device> m_ide;
+ required_device<ramdac_device> m_ramdac;
+ required_device_array<dmadac_sound_device, 2> m_dmadac;
required_shared_ptr<uint32_t> m_main_ram;
required_shared_ptr<uint32_t> m_cga_ram;
required_shared_ptr<uint32_t> m_bios_ram;
@@ -208,8 +213,6 @@ private:
uint32_t m_ad1847_sample_counter;
uint32_t m_ad1847_sample_rate;
- dmadac_sound_device *m_dmadac[2];
-
#if SPEEDUP_HACKS
const speedup_entry *m_speedup_table;
uint32_t m_speedup_hits[12];
@@ -408,7 +411,7 @@ void mediagx_state::draw_cga(bitmap_rgb32 &bitmap, const rectangle &cliprect)
}
}
-uint32_t mediagx_state::screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t mediagx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -460,8 +463,6 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w)
// printf("memory_ctrl_w %08X, %08X, %08X\n", data, offset*4, mem_mask);
if (offset == 0x20/4)
{
- ramdac_device *ramdac = machine().device<ramdac_device>("ramdac");
-
if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00e00000) == 0x00400000)
{
// guess: crtc params?
@@ -470,7 +471,7 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w)
else if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00f00000) == 0x00000000)
{
m_pal_index = data;
- ramdac->index_w( space, 0, data );
+ m_ramdac->index_w( space, 0, data );
}
else if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00f00000) == 0x00100000)
{
@@ -480,7 +481,7 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w)
{
m_pal_index = 0;
}
- ramdac->pal_w( space, 0, data );
+ m_ramdac->pal_w( space, 0, data );
}
}
else
@@ -667,8 +668,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(mediagx_state::sound_timer_callback)
m_ad1847_sample_counter = 0;
timer.adjust(attotime::from_msec(10));
- dmadac_transfer(&m_dmadac[0], 1, 0, 1, m_dacl_ptr, m_dacl.get());
- dmadac_transfer(&m_dmadac[1], 1, 0, 1, m_dacr_ptr, m_dacr.get());
+ m_dmadac[0]->transfer(1, 0, 1, m_dacl_ptr, m_dacl.get());
+ m_dmadac[1]->transfer(1, 0, 1, m_dacr_ptr, m_dacr.get());
m_dacl_ptr = 0;
m_dacr_ptr = 0;
@@ -691,7 +692,8 @@ void mediagx_state::ad1847_reg_write(int reg, uint8_t data)
m_ad1847_sample_rate = 24576000 / divide_factor[(data >> 1) & 0x7];
}
- dmadac_set_frequency(&m_dmadac[0], 2, m_ad1847_sample_rate);
+ m_dmadac[0]->set_frequency(m_ad1847_sample_rate);
+ m_dmadac[1]->set_frequency(m_ad1847_sample_rate);
if (data & 0x20)
{
@@ -751,15 +753,15 @@ WRITE32_MEMBER(mediagx_state::ad1847_w)
void mediagx_state::mediagx_map(address_map &map)
{
- map(0x00000000, 0x0009ffff).ram().share("main_ram");
+ map(0x00000000, 0x0009ffff).ram().share(m_main_ram);
map(0x000a0000, 0x000affff).ram();
- map(0x000b0000, 0x000b7fff).ram().share("cga_ram");
- map(0x000c0000, 0x000fffff).ram().share("bios_ram");
+ map(0x000b0000, 0x000b7fff).ram().share(m_cga_ram);
+ map(0x000c0000, 0x000fffff).ram().share(m_bios_ram);
map(0x00100000, 0x00ffffff).ram();
map(0x40008000, 0x400080ff).rw(FUNC(mediagx_state::biu_ctrl_r), FUNC(mediagx_state::biu_ctrl_w));
map(0x40008300, 0x400083ff).rw(FUNC(mediagx_state::disp_ctrl_r), FUNC(mediagx_state::disp_ctrl_w));
map(0x40008400, 0x400084ff).rw(FUNC(mediagx_state::memory_ctrl_r), FUNC(mediagx_state::memory_ctrl_w));
- map(0x40800000, 0x40bfffff).ram().share("vram");
+ map(0x40800000, 0x40bfffff).ram().share(m_vram);
map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
}
@@ -867,23 +869,22 @@ void mediagx_state::machine_reset()
memcpy(m_bios_ram, rom, 0x40000);
m_maincpu->reset();
- timer_device *sound_timer = machine().device<timer_device>("sound_timer");
+ timer_device *sound_timer = subdevice<timer_device>("sound_timer");
sound_timer->adjust(attotime::from_msec(10));
- m_dmadac[0] = machine().device<dmadac_sound_device>("dac1");
- m_dmadac[1] = machine().device<dmadac_sound_device>("dac2");
- dmadac_enable(&m_dmadac[0], 2, 1);
+ m_dmadac[0]->enable(1);
+ m_dmadac[1]->enable(1);
}
void mediagx_state::ramdac_map(address_map &map)
{
- map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+ map(0x000, 0x3ff).rw(m_ramdac, FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
}
MACHINE_CONFIG_START(mediagx_state::mediagx)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", MEDIAGX, 166000000)
+ MCFG_DEVICE_ADD(m_maincpu, MEDIAGX, 166000000)
MCFG_DEVICE_PROGRAM_MAP(mediagx_map)
MCFG_DEVICE_IO_MAP(mediagx_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
@@ -894,31 +895,31 @@ MACHINE_CONFIG_START(mediagx_state::mediagx)
MCFG_PCI_BUS_LEGACY_DEVICE(18, DEVICE_SELF, mediagx_state, cx5510_pci_r, cx5510_pci_w)
MCFG_IDE_CONTROLLER_32_ADD("ide", ata_devices, "hdd", nullptr, true)
- MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE("pic8259_2", pic8259_device, ir6_w))
+ MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(m_pic8259_2, pic8259_device, ir6_w))
MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback)
- MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
+ MCFG_RAMDAC_ADD(m_ramdac, ramdac_map, "palette")
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update_mediagx)
+ MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cga)
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_cga)
- MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_ADD(m_palette, 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("dac1", DMADAC)
+ MCFG_DEVICE_ADD(m_dmadac[0], DMADAC)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_DEVICE_ADD("dac2", DMADAC)
+ MCFG_DEVICE_ADD(m_dmadac[1], DMADAC)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MACHINE_CONFIG_END