From a9e3982e90feb9b2fe666b94d1d91911146e8df5 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 31 Mar 2014 17:13:59 +0000 Subject: [PATCH] further shared code into devices (nw) --- .gitattributes | 2 + src/mame/drivers/littlerb.c | 144 +++++----------------------------- src/mame/drivers/megaphx.c | 139 +++------------------------------ src/mame/machine/inder_vid.c | 147 +++++++++++++++++++++++++++++++++++ src/mame/machine/inder_vid.h | 47 +++++++++++ src/mame/mame.mak | 1 + 6 files changed, 225 insertions(+), 255 deletions(-) create mode 100644 src/mame/machine/inder_vid.c create mode 100644 src/mame/machine/inder_vid.h diff --git a/.gitattributes b/.gitattributes index afb57111846..dae3c786fab 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6434,6 +6434,8 @@ src/mame/machine/igs036crypt.c svneol=native#text/plain src/mame/machine/igs036crypt.h svneol=native#text/plain src/mame/machine/inder_sb.c svneol=native#text/plain src/mame/machine/inder_sb.h svneol=native#text/plain +src/mame/machine/inder_vid.c svneol=native#text/plain +src/mame/machine/inder_vid.h svneol=native#text/plain src/mame/machine/irem_cpu.c svneol=native#text/plain src/mame/machine/irem_cpu.h svneol=native#text/plain src/mame/machine/irobot.c svneol=native#text/plain diff --git a/src/mame/drivers/littlerb.c b/src/mame/drivers/littlerb.c index 2e1e7594fbc..be276e00afd 100644 --- a/src/mame/drivers/littlerb.c +++ b/src/mame/drivers/littlerb.c @@ -66,9 +66,8 @@ Dip sw.2 #include "emu.h" #include "cpu/m68000/m68000.h" -#include "video/ramdac.h" #include "sound/dac.h" -#include "cpu/tms34010/tms34010.h" +#include "machine/inder_vid.h" class littlerb_state : public driver_device { @@ -76,14 +75,10 @@ public: littlerb_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_screen(*this, "screen"), + m_indervid(*this, "inder_vid"), m_dacl(*this, "dacl"), m_dacr(*this, "dacr"), - - m_vram(*this, "vram"), - m_palette(*this, "palette"), - m_shiftfull(0) - + m_soundframe(0) { } @@ -91,41 +86,29 @@ public: required_device m_maincpu; - required_device m_screen; + required_device m_indervid; + + required_device m_dacl; required_device m_dacr; UINT8 m_sound_index_l,m_sound_index_r; UINT16 m_sound_pointer_l,m_sound_pointer_r; + int m_soundframe; + DECLARE_CUSTOM_INPUT_MEMBER(littlerb_frame_step_r); DECLARE_WRITE16_MEMBER(littlerb_l_sound_w); DECLARE_WRITE16_MEMBER(littlerb_r_sound_w); UINT8 sound_data_shift(); - TIMER_DEVICE_CALLBACK_MEMBER(littlerb_scanline); - - - required_shared_ptr m_vram; - required_device m_palette; - int m_shiftfull; // this might be a driver specific hack for a TMS bug. + + TIMER_DEVICE_CALLBACK_MEMBER(littlerb_scanline_sound); }; - -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, littlerb_state ) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) -ADDRESS_MAP_END - -static RAMDAC_INTERFACE( ramdac_intf ) -{ - 0 -}; - - - /* could be slightly different (timing wise, directly related to the irqs), but certainly they smoked some bad pot for this messy way ... */ UINT8 littlerb_state::sound_data_shift() { - return ((m_screen->frame_number() % 16) == 0) ? 8 : 0; + return ((m_soundframe % 16) == 0) ? 8 : 0; } /* l is SFX, r is BGM (they doesn't seem to share the same data ROM) */ @@ -151,7 +134,7 @@ static ADDRESS_MAP_START( littlerb_main, AS_PROGRAM, 16, littlerb_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x203fff) AM_RAM // main ram? - AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w) + AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w) AM_RANGE(0x740000, 0x740001) AM_WRITE(littlerb_l_sound_w) AM_RANGE(0x760000, 0x760001) AM_WRITE(littlerb_r_sound_w) @@ -164,7 +147,7 @@ ADDRESS_MAP_END /* guess according to DASM code and checking the gameplay speed, could be different */ CUSTOM_INPUT_MEMBER(littlerb_state::littlerb_frame_step_r) { - UINT32 ret = m_screen->frame_number(); + UINT32 ret = m_soundframe; return (ret) & 7; } @@ -246,7 +229,7 @@ static INPUT_PORTS_START( littlerb ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -TIMER_DEVICE_CALLBACK_MEMBER(littlerb_state::littlerb_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(littlerb_state::littlerb_scanline_sound) { int scanline = param; @@ -265,111 +248,22 @@ TIMER_DEVICE_CALLBACK_MEMBER(littlerb_state::littlerb_scanline) m_sound_pointer_r&=0x3ff; } + if (scanline == 0) m_soundframe++; - // the TMS generates the main interrupt - +// printf("scanline %d\n", scanline); } -static ADDRESS_MAP_START( littlerb_tms_map, AS_PROGRAM, 16, littlerb_state ) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x04000000, 0x0400000f) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff) - AM_RANGE(0x04000010, 0x0400001f) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff) - AM_RANGE(0x04000030, 0x0400003f) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END - - -static void littlerb_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params) -{ - littlerb_state *state = screen.machine().driver_data(); - - UINT16 *vram = &state->m_vram[(((params->rowaddr << 8)) & 0x3ff00) ]; - UINT32 *dest = &bitmap.pix32(scanline); - - const pen_t *paldata = state->m_palette->pens(); - - int coladdr = params->coladdr; - int x; - - for (x = params->heblnk; x < params->hsblnk; x += 2) - { - UINT16 pixels = vram[coladdr++ & 0xff]; - dest[x + 0] = paldata[pixels & 0xff]; - dest[x + 1] = paldata[pixels >> 8]; - } - -} - -static void littlerb_to_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) -{ - littlerb_state *state = space.machine().driver_data(); - - if (state->m_shiftfull == 0) - { - //printf("read to shift regs address %08x (%08x)\n", address, TOWORD(address) * 2); - memcpy(shiftreg, &state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], TOBYTE(0x2000)); - state->m_shiftfull = 1; - } -} - -static void littlerb_from_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) -{ - littlerb_state *state = space.machine().driver_data(); - memcpy(&state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], shiftreg, TOBYTE(0x2000)); - - state->m_shiftfull = 0; -} - - - - -static void m68k_gen_int(device_t *device, int state) -{ - littlerb_state *drvstate = device->machine().driver_data(); - if (state) drvstate->m_maincpu->set_input_line(4, ASSERT_LINE); - else drvstate->m_maincpu->set_input_line(4, CLEAR_LINE); -} - - -static const tms34010_config tms_config_littlerb = -{ - TRUE, /* halt on reset */ - "screen", /* the screen operated on */ - XTAL_40MHz/12, /* pixel clock */ - 2, /* pixels per clock */ - NULL, /* scanline callback (indexed16) */ - littlerb_scanline, /* scanline callback (rgb32) */ - m68k_gen_int, /* generate interrupt */ - littlerb_to_shiftreg, /* write to shiftreg function */ - littlerb_from_shiftreg /* read from shiftreg function */ -}; - - - - static MACHINE_CONFIG_START( littlerb, littlerb_state ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(littlerb_main) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", littlerb_state, littlerb_scanline, "screen", 0, 1) + MCFG_INDER_VIDEO_ADD("inder_vid") - MCFG_CPU_ADD("tms", TMS34010, XTAL_40MHz) - MCFG_CPU_CONFIG(tms_config_littlerb) - MCFG_CPU_PROGRAM_MAP(littlerb_tms_map) + // should probably be done with a timer rather than relying on screen(!) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", littlerb_state, littlerb_scanline_sound, "inder_vid:inder_screen", 0, 1) - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/12, 424, 0, 338-1, 262, 0, 246-1) - MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32) - - - MCFG_PALETTE_ADD("palette", 0x100) - - MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette") - -// MCFG_PALETTE_INIT_OWNER(littlerb_state,littlerb) MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker") MCFG_DAC_ADD("dacl") diff --git a/src/mame/drivers/megaphx.c b/src/mame/drivers/megaphx.c index f74d7400c2f..b960654170c 100644 --- a/src/mame/drivers/megaphx.c +++ b/src/mame/drivers/megaphx.c @@ -55,13 +55,14 @@ */ #include "emu.h" -#include "cpu/tms34010/tms34010.h" #include "cpu/m68000/m68000.h" -#include "video/ramdac.h" + + #include "machine/i8255.h" #include "machine/inder_sb.h" +#include "machine/inder_vid.h" @@ -72,32 +73,22 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_mainram(*this, "mainram"), - m_vram(*this, "vram"), port_c_value(0), - m_palette(*this, "palette"), - m_tms(*this, "tms"), - m_indersb(*this, "inder_sb") + m_indersb(*this, "inder_sb"), + m_indervid(*this, "inder_vid") { - m_shiftfull = 0; } required_device m_maincpu; required_shared_ptr m_mainram; - required_shared_ptr m_vram; DECLARE_DRIVER_INIT(megaphx); - DECLARE_MACHINE_RESET(megaphx); - - - - - DECLARE_READ8_MEMBER(port_c_r); DECLARE_WRITE8_MEMBER(port_c_w); @@ -112,29 +103,21 @@ public: UINT16 m_pic_result; UINT8 port_c_value; - required_device m_palette; - required_device m_tms; + required_device m_indersb; - - - int m_shiftfull; // this might be a driver specific hack for a TMS bug. - + required_device m_indervid; }; - - - - static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state ) AM_RANGE(0x000000, 0x0013ff) AM_RAM AM_SHARE("mainram") // maps over part of the rom?? AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("roms67", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things.. - AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w) + AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w) AM_RANGE(0x050000, 0x050001) AM_DEVWRITE("inder_sb", inder_sb_device, megaphx_0x050000_w) AM_RANGE(0x050002, 0x050003) AM_DEVREAD("inder_sb", inder_sb_device, megaphx_0x050002_r) @@ -151,94 +134,6 @@ static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( megaphx_tms_map, AS_PROGRAM, 16, megaphx_state ) - - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") // vram? -// AM_RANGE(0x00100000, 0x002fffff) AM_RAM // vram? -// AM_RANGE(0x00300000, 0x003fffff) AM_RAM -// AM_RANGE(0x04000000, 0x040000ff) AM_WRITENOP - - AM_RANGE(0x04000000, 0x0400000f) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff) - AM_RANGE(0x04000010, 0x0400001f) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff) - AM_RANGE(0x04000030, 0x0400003f) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff) - AM_RANGE(0x04000090, 0x0400009f) AM_WRITENOP - - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END - - -static void megaphx_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params) -{ - megaphx_state *state = screen.machine().driver_data(); - - UINT16 *vram = &state->m_vram[(params->rowaddr << 8) & 0x3ff00]; - UINT32 *dest = &bitmap.pix32(scanline); - - const pen_t *paldata = state->m_palette->pens(); - - int coladdr = params->coladdr; - int x; - - for (x = params->heblnk; x < params->hsblnk; x += 2) - { - UINT16 pixels = vram[coladdr++ & 0xff]; - dest[x + 0] = paldata[pixels & 0xff]; - dest[x + 1] = paldata[pixels >> 8]; - } - -} - - -static void megaphx_to_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) -{ - megaphx_state *state = space.machine().driver_data(); - - if (state->m_shiftfull == 0) - { - //printf("read to shift regs address %08x (%08x)\n", address, TOWORD(address) * 2); - - memcpy(shiftreg, &state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], TOBYTE(0x2000)); // & ~TOWORD(0x1fff) is needed for round 6 - state->m_shiftfull = 1; - } -} - -static void megaphx_from_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) -{ -// printf("write from shift regs address %08x (%08x)\n", address, TOWORD(address) * 2); - - megaphx_state *state = space.machine().driver_data(); - memcpy(&state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], shiftreg, TOBYTE(0x2000)); - - state->m_shiftfull = 0; -} - -MACHINE_RESET_MEMBER(megaphx_state,megaphx) -{ -} - -static void m68k_gen_int(device_t *device, int state) -{ - megaphx_state *drvstate = device->machine().driver_data(); - if (state) drvstate->m_maincpu->set_input_line(4, ASSERT_LINE); - else drvstate->m_maincpu->set_input_line(4, CLEAR_LINE); - -} - - -static const tms34010_config tms_config_megaphx = -{ - TRUE, /* halt on reset */ - "screen", /* the screen operated on */ - XTAL_40MHz/12, /* pixel clock */ - 2, /* pixels per clock */ - NULL, /* scanline callback (indexed16) */ - megaphx_scanline, /* scanline callback (rgb32) */ - m68k_gen_int, /* generate interrupt */ - megaphx_to_shiftreg, /* write to shiftreg function */ - megaphx_from_shiftreg /* read from shiftreg function */ -}; - static INPUT_PORTS_START( megaphx ) @@ -336,14 +231,7 @@ static INPUT_PORTS_START( megaphx ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, megaphx_state ) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) -ADDRESS_MAP_END -static RAMDAC_INTERFACE( ramdac_intf ) -{ - 1 -}; /* why don't the port_c read/writes work properly when hooked through the 8255? */ @@ -482,23 +370,14 @@ static MACHINE_CONFIG_START( megaphx, megaphx_state ) MCFG_CPU_ADD("maincpu", M68000, 8000000) // ?? can't read xtal due to reflections, CPU is an 8Mhz part MCFG_CPU_PROGRAM_MAP(megaphx_68k_map) - MCFG_CPU_ADD("tms", TMS34010, XTAL_40MHz) - MCFG_CPU_CONFIG(tms_config_megaphx) - MCFG_CPU_PROGRAM_MAP(megaphx_tms_map) MCFG_INDER_AUDIO_ADD("inder_sb") MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf_0 ) - MCFG_MACHINE_RESET_OVERRIDE(megaphx_state,megaphx) + MCFG_INDER_VIDEO_ADD("inder_vid") - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/12, 424, 0, 338-1, 262, 0, 246-1) - MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32) - MCFG_PALETTE_ADD("palette", 256) - - MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette") MACHINE_CONFIG_END DRIVER_INIT_MEMBER(megaphx_state,megaphx) diff --git a/src/mame/machine/inder_vid.c b/src/mame/machine/inder_vid.c new file mode 100644 index 00000000000..15c3ba3f614 --- /dev/null +++ b/src/mame/machine/inder_vid.c @@ -0,0 +1,147 @@ +/* Inder / Dinamic Video */ + +/* Inder / Dinamic Sound Board */ + + +#include "emu.h" +#include "machine/inder_vid.h" + + + +extern const device_type INDER_VIDEO = &device_creator; + + +inder_vid_device::inder_vid_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, INDER_VIDEO, "Inder / Dinamic TMS Video", tag, owner, clock, "indervd", __FILE__), +/* device_video_interface(mconfig, *this, false), */ + m_vram(*this, "vram"), + m_palette(*this, "palette"), + m_tms(*this, "tms") +{ +} + +static ADDRESS_MAP_START( megaphx_tms_map, AS_PROGRAM, 16, inder_vid_device ) + + AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") // vram? + + AM_RANGE(0x04000000, 0x0400000f) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff) + AM_RANGE(0x04000010, 0x0400001f) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff) + AM_RANGE(0x04000030, 0x0400003f) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff) + AM_RANGE(0x04000090, 0x0400009f) AM_WRITENOP + + AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) + AM_RANGE(0xffc00000, 0xffffffff) AM_RAM +ADDRESS_MAP_END + + +static void megaphx_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params) +{ + inder_vid_device *state = (inder_vid_device*)screen.machine().device("inder_vid"); + + UINT16 *vram = &state->m_vram[(params->rowaddr << 8) & 0x3ff00]; + UINT32 *dest = &bitmap.pix32(scanline); + + const pen_t *paldata = state->m_palette->pens(); + + int coladdr = params->coladdr; + int x; + + for (x = params->heblnk; x < params->hsblnk; x += 2) + { + UINT16 pixels = vram[coladdr++ & 0xff]; + dest[x + 0] = paldata[pixels & 0xff]; + dest[x + 1] = paldata[pixels >> 8]; + } + +} + + +static void megaphx_to_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) +{ + inder_vid_device *state = (inder_vid_device*)space.machine().device("inder_vid"); + + if (state->m_shiftfull == 0) + { + //printf("read to shift regs address %08x (%08x)\n", address, TOWORD(address) * 2); + + memcpy(shiftreg, &state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], TOBYTE(0x2000)); // & ~TOWORD(0x1fff) is needed for round 6 + state->m_shiftfull = 1; + } +} + +static void megaphx_from_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg) +{ +// printf("write from shift regs address %08x (%08x)\n", address, TOWORD(address) * 2); + + inder_vid_device *state = (inder_vid_device*)space.machine().device("inder_vid"); + + memcpy(&state->m_vram[TOWORD(address) & ~TOWORD(0x1fff)], shiftreg, TOBYTE(0x2000)); + + state->m_shiftfull = 0; +} + + + +static void m68k_gen_int(device_t *device, int state) +{ + cpu_device *maincpu = (cpu_device*)device->machine().device("maincpu"); + if (state) maincpu->set_input_line(4, ASSERT_LINE); + else maincpu->set_input_line(4, CLEAR_LINE); + +} + + +static const tms34010_config tms_config_megaphx = +{ + TRUE, /* halt on reset */ + "inder_vid:inder_screen", /* the screen operated on */ + XTAL_40MHz/12, /* pixel clock */ + 2, /* pixels per clock */ + NULL, /* scanline callback (indexed16) */ + megaphx_scanline, /* scanline callback (rgb32) */ + m68k_gen_int, /* generate interrupt */ + megaphx_to_shiftreg, /* write to shiftreg function */ + megaphx_from_shiftreg /* read from shiftreg function */ +}; + + +static ADDRESS_MAP_START( ramdac_map, AS_0, 8, inder_vid_device ) + AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) +ADDRESS_MAP_END + +static RAMDAC_INTERFACE( ramdac_intf ) +{ + 1 +}; + +static MACHINE_CONFIG_FRAGMENT( inder_vid ) + MCFG_CPU_ADD("tms", TMS34010, XTAL_40MHz) + MCFG_CPU_CONFIG(tms_config_megaphx) + MCFG_CPU_PROGRAM_MAP(megaphx_tms_map) + + MCFG_SCREEN_ADD("inder_screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/12, 424, 0, 338-1, 262, 0, 246-1) + MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32) + + + MCFG_PALETTE_ADD("palette", 256) + + MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette") + + +MACHINE_CONFIG_END + +machine_config_constructor inder_vid_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( inder_vid ); +} + +void inder_vid_device::device_start() +{ + +} + +void inder_vid_device::device_reset() +{ + m_shiftfull = 0; +} diff --git a/src/mame/machine/inder_vid.h b/src/mame/machine/inder_vid.h new file mode 100644 index 00000000000..c903a7d8619 --- /dev/null +++ b/src/mame/machine/inder_vid.h @@ -0,0 +1,47 @@ +/* Inder / Dinamic Video */ + + +/* */ + + +#pragma once + +#ifndef __INDER_VIDEO__ +#define __INDER_VIDEO__ + + +#include "video/ramdac.h" +#include "cpu/tms34010/tms34010.h" + +extern const device_type INDER_VIDEO; + +#define MCFG_INDER_VIDEO_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, INDER_VIDEO, 0) + + +class inder_vid_device : public device_t +/* public device_video_interface */ +{ +public: + // construction/destruction + inder_vid_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + required_shared_ptr m_vram; + required_device m_palette; + required_device m_tms; + + int m_shiftfull; // this might be a driver specific hack for a TMS bug. + +protected: + virtual machine_config_constructor device_mconfig_additions() const; + virtual void device_start(); + virtual void device_reset(); + + + +private: + + +}; + +#endif \ No newline at end of file diff --git a/src/mame/mame.mak b/src/mame/mame.mak index ba24b3a5616..d6b78865127 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -2084,6 +2084,7 @@ $(MAMEOBJ)/misc.a: \ $(DRIVERS)/coolpool.o \ $(DRIVERS)/megaphx.o \ $(MACHINE)/inder_sb.o \ + $(MACHINE)/inder_vid.o \ $(DRIVERS)/corona.o \ $(DRIVERS)/crystal.o $(VIDEO)/vrender0.o \ $(DRIVERS)/cubeqst.o \