summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dwarfd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dwarfd.cpp')
-rw-r--r--src/mame/drivers/dwarfd.cpp86
1 files changed, 39 insertions, 47 deletions
diff --git a/src/mame/drivers/dwarfd.cpp b/src/mame/drivers/dwarfd.cpp
index fba7b069a75..248bc5d2f6e 100644
--- a/src/mame/drivers/dwarfd.cpp
+++ b/src/mame/drivers/dwarfd.cpp
@@ -332,7 +332,7 @@ private:
/* memory */
uint8_t m_dw_ram[0x1000];
- required_device<cpu_device> m_maincpu;
+ required_device<i8085a_cpu_device> m_maincpu;
required_device<palette_device> m_palette;
required_device<i8275_device> m_crtc;
required_region_ptr<uint16_t> m_charmap;
@@ -604,7 +604,6 @@ INPUT_PORTS_END
I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels)
{
- int i;
int bank = ((gpa & 2) ? 0 : 2) + (gpa & 1);
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)];
@@ -614,7 +613,7 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels)
//if(!linecount)
// logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
- for(i=0;i<8;i+=2)
+ for (int i = 0; i < 8; i += 2)
{
uint8_t pixel = (pixels >> (i * 2)) & 0xf;
uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3);
@@ -628,7 +627,6 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels)
I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels)
{
- int i;
int bank = ((gpa & 2) ? 0 : 4) + (gpa & 1) + (m_dsw2->read() & 2);
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)];
@@ -638,7 +636,7 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels)
//if(!linecount)
// logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
- for(i=0;i<8;i+=2)
+ for (int i = 0; i < 8; i += 2)
{
uint8_t pixel = (pixels >> (i * 2)) & 0xf;
uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3);
@@ -652,7 +650,6 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels)
I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::qc_display_pixels)
{
- int i;
int bank = gpa;
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)];
@@ -662,7 +659,7 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::qc_display_pixels)
//if(!linecount)
// logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
- for(i=0;i<8;i+=2)
+ for (int i = 0; i < 8; i += 2)
{
uint8_t pixel = (pixels >> (i * 2)) & 0xf;
uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3);
@@ -706,16 +703,15 @@ GFXDECODE_END
PALETTE_INIT_MEMBER(dwarfd_state, dwarfd)
{
uint8_t rgb[3];
- int i,j;
uint8_t *prom = memregion("proms")->base();
- for (i = 0; i < 32; i++)
+ for (int i = 0; i < 32; i++)
{
// what are the top 2 bits?
rgb[0] = ((prom[i] & 0x08) >> 2) | (prom[i] & 1);
rgb[1] = ((prom[i] & 0x10) >> 3) | ((prom[i] & 2) >> 1);
rgb[2] = ((prom[i] & 0x20) >> 4) | ((prom[i] & 4) >> 2);
- for(j = 0; j < 3; j++)
+ for (int j = 0; j < 3; j++)
rgb[j] |= (rgb[j] << 6) | (rgb[j] << 4) | (rgb[j] << 2);
palette.set_pen_color(i,rgb_t(rgb[0], rgb[1], rgb[2]));
@@ -733,59 +729,55 @@ void dwarfd_state::machine_reset()
m_back_color = false;
}
-MACHINE_CONFIG_START(dwarfd_state::dwarfd)
-
+void dwarfd_state::dwarfd(machine_config &config)
+{
/* basic machine hardware */
/* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */
- MCFG_DEVICE_ADD("maincpu", I8085A, 10595000/3*2) /* ? MHz */
- MCFG_I8085A_SOD(WRITELINE(*this, dwarfd_state,dwarfd_sod_callback))
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
+ I8085A(config, m_maincpu, 10595000/3*2); /* ? MHz */
+ m_maincpu->out_sod_func().set(FUNC(dwarfd_state::dwarfd_sod_callback));
+ m_maincpu->set_addrmap(AS_PROGRAM, &dwarfd_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &dwarfd_state::io_map);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(272*2, 200+4*8)
- MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
-
- MCFG_DEVICE_ADD("i8275", I8275, 10595000/3)
- MCFG_I8275_CHARACTER_WIDTH(8)
- MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, display_pixels)
- MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", I8085_RST55_LINE))
- MCFG_I8275_DRQ_CALLBACK(WRITELINE(*this, dwarfd_state, drq_w))
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dwarfd)
- MCFG_PALETTE_ADD("palette", 32)
- MCFG_PALETTE_INIT_OWNER(dwarfd_state, dwarfd)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_size(272*2, 200+4*8);
+ screen.set_visarea(0, 272*2-1, 0, 200-1);
+ screen.set_screen_update("i8275", FUNC(i8275_device::screen_update));
+
+ I8275(config, m_crtc, 10595000/3);
+ m_crtc->set_character_width(8);
+ m_crtc->set_display_callback(FUNC(dwarfd_state::display_pixels));
+ m_crtc->irq_wr_callback().set_inputline("maincpu", I8085_RST55_LINE);
+ m_crtc->drq_wr_callback().set(FUNC(dwarfd_state::drq_w));
+
+ GFXDECODE(config, "gfxdecode", m_palette, gfx_dwarfd);
+ PALETTE(config, m_palette, 32).set_init(FUNC(dwarfd_state::palette_init_dwarfd));
SPEAKER(config, "mono").front_center();
ay8910_device &aysnd(AY8910(config, "aysnd", 1500000));
aysnd.port_a_read_callback().set_ioport("IN2");
aysnd.port_b_read_callback().set_ioport("IN1");
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(dwarfd_state::pokeresp)
+void dwarfd_state::pokeresp(machine_config &config)
+{
dwarfd(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(pokeresp_map)
- MCFG_DEVICE_IO_MAP(io_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &dwarfd_state::pokeresp_map);
+ m_maincpu->set_addrmap(AS_IO, &dwarfd_state::io_map);
- MCFG_DEVICE_MODIFY("i8275")
- MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, pesp_display_pixels)
-MACHINE_CONFIG_END
+ m_crtc->set_display_callback(FUNC(dwarfd_state::pesp_display_pixels));
+}
-MACHINE_CONFIG_START(dwarfd_state::qc)
+void dwarfd_state::qc(machine_config &config)
+{
dwarfd(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &dwarfd_state::qc_map);
+ m_maincpu->set_addrmap(AS_IO, &dwarfd_state::qc_io_map);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(qc_map)
- MCFG_DEVICE_IO_MAP(qc_io_map)
-
- MCFG_DEVICE_MODIFY("i8275")
- MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, qc_display_pixels)
-MACHINE_CONFIG_END
+ m_crtc->set_display_callback(FUNC(dwarfd_state::qc_display_pixels));
+}
/* Dwarfs den PROM explanation:
The proms used in Dwarfs den are 74S188 (82s23 equivalent, 32x8 open collector)