From c41bec3413f098c37013228b991f2e856bf0f858 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Thu, 1 Dec 2011 17:20:31 +0000 Subject: [PATCH] Written a generic RAMDAC device, hooked it up to the sfbonus.c as an example [Angelo Salese] --- src/emu/emu.mak | 1 + src/emu/video/h63484.c | 1 - src/mame/drivers/gal3.c | 36 ++++---------------------- src/mame/drivers/sfbonus.c | 47 ++++++++-------------------------- src/mame/etc/template_device.c | 2 +- 5 files changed, 17 insertions(+), 70 deletions(-) diff --git a/src/emu/emu.mak b/src/emu/emu.mak index 2cae0640bad..e77fe642d78 100644 --- a/src/emu/emu.mak +++ b/src/emu/emu.mak @@ -277,6 +277,7 @@ EMUVIDEOOBJS = \ $(EMUVIDEO)/pc_vga.o \ $(EMUVIDEO)/poly.o \ $(EMUVIDEO)/psx.o \ + $(EMUVIDEO)/ramdac.o \ $(EMUVIDEO)/resnet.o \ $(EMUVIDEO)/rgbutil.o \ $(EMUVIDEO)/s2636.o \ diff --git a/src/emu/video/h63484.c b/src/emu/video/h63484.c index 64f12446a79..fc18e35b6e8 100644 --- a/src/emu/video/h63484.c +++ b/src/emu/video/h63484.c @@ -4,7 +4,6 @@ TODO: - 8-bit support for FIFO, parameters and command values - - convert to C++ - execution cycles; ***************************************************************************/ diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c index 2773853d26a..5163916a289 100644 --- a/src/mame/drivers/gal3.c +++ b/src/mame/drivers/gal3.c @@ -267,33 +267,6 @@ static NVRAM_HANDLER( gal3 ) } } -/* shared RAM memory handlers */ - -static READ32_HANDLER( shareram0_r ) -{ - gal3_state *state = space->machine().driver_data(); - return state->m_mpSharedRAM0[offset]; -} - -static WRITE32_HANDLER( shareram0_w ) -{ - gal3_state *state = space->machine().driver_data(); - COMBINE_DATA( &state->m_mpSharedRAM0[offset] ); -} - -#if 0 -static READ32_HANDLER( shareram1_r ) -{ - gal3_state *state = space->machine().driver_data(); - return state->m_mpSharedRAM1[offset]; -} - -static WRITE32_HANDLER( shareram1_w ) -{ - gal3_state *state = space->machine().driver_data(); - COMBINE_DATA( &state->m_mpSharedRAM1[offset] ); -} -#endif /***************************************************************************************/ @@ -376,6 +349,7 @@ static WRITE32_HANDLER(rso_w) state->m_rsoSharedRAM[offset+1] = v&0xffff; } + static ADDRESS_MAP_START( cpu_mst_map, AS_PROGRAM, 32 ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_RANGE(0x20000000, 0x20001fff) AM_RAM AM_BASE_MEMBER(gal3_state, m_nvmem) AM_SIZE_MEMBER(gal3_state, m_nvmem_size) //NVRAM @@ -384,8 +358,8 @@ static ADDRESS_MAP_START( cpu_mst_map, AS_PROGRAM, 32 ) AM_RANGE(0x44800000, 0x44800003) AM_READ(led_mst_r) AM_WRITE(led_mst_w) //LEDs AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 v-blank ack AM_RANGE(0x4c000000, 0x4c000003) AM_READNOP //irq3 ack - AM_RANGE(0x60000000, 0x60007fff) AM_READ(shareram0_r) AM_WRITE(shareram0_w) AM_BASE_MEMBER(gal3_state, m_mpSharedRAM0) //CRAM - AM_RANGE(0x60010000, 0x60017fff) AM_READ(shareram0_r) AM_WRITE(shareram0_w) //Mirror + AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") //CRAM + AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1") //Mirror AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM /// AM_RANGE(0xc0000000, 0xc000000b) AM_WRITENOP //upload? AM_RANGE(0xc000000c, 0xc000000f) AM_READNOP //irq2 ack @@ -401,8 +375,8 @@ static ADDRESS_MAP_START( cpu_slv_map, AS_PROGRAM, 32 ) AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 ack /// AM_RANGE(0x50000000, 0x50000003) AM_READ() AM_WRITE() /// AM_RANGE(0x54000000, 0x54000003) AM_READ() AM_WRITE() - AM_RANGE(0x60000000, 0x60007fff) AM_READ(shareram0_r) AM_WRITE(shareram0_w) - AM_RANGE(0x60010000, 0x60017fff) AM_READ(shareram0_r) AM_WRITE(shareram0_w) + AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") + AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM AM_RANGE(0xf1200000, 0xf120ffff) AM_RAM //DSP RAM diff --git a/src/mame/drivers/sfbonus.c b/src/mame/drivers/sfbonus.c index 2ca2c12bf77..900a37d97d8 100644 --- a/src/mame/drivers/sfbonus.c +++ b/src/mame/drivers/sfbonus.c @@ -270,6 +270,7 @@ MH86171 Color Pallete RAMDAC #include "emu.h" #include "cpu/z80/z80.h" #include "sound/okim6295.h" +#include "video/ramdac.h" #include "pirpok2.lh" @@ -1058,41 +1059,6 @@ static SCREEN_UPDATE(sfbonus) } -static WRITE8_HANDLER( paletteram_io_w ) -{ - sfbonus_state *state = space->machine().driver_data(); - switch(offset) - { - case 0: - state->m_pal.offs = data; - break; - case 2: - state->m_pal.offs_internal = 0; - break; - case 1: - switch(state->m_pal.offs_internal) - { - case 0: - state->m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; - break; - case 1: - state->m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; - break; - case 2: - state->m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - palette_set_color(space->machine(), state->m_pal.offs, MAKE_RGB(state->m_pal.r, state->m_pal.g, state->m_pal.b)); - state->m_pal.offs_internal = 0; - state->m_pal.offs++; - break; - } - - break; - } -} - - static ADDRESS_MAP_START( sfbonus_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0xefff) AM_ROMBANK("bank1") AM_WRITE(sfbonus_videoram_w) @@ -1182,7 +1148,9 @@ static ADDRESS_MAP_START( sfbonus_io, AS_IO, 8 ) AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write) - AM_RANGE(0x0c00, 0x0c03) AM_WRITE( paletteram_io_w ) + AM_RANGE(0x0c00, 0x0c00) AM_DEVWRITE_MODERN("ramdac", ramdac_device, index_w) + AM_RANGE(0x0c01, 0x0c01) AM_DEVWRITE_MODERN("ramdac", ramdac_device, pal_w) + AM_RANGE(0x0c02, 0x0c02) AM_DEVWRITE_MODERN("ramdac", ramdac_device, mask_w) AM_RANGE(0x1800, 0x1807) AM_WRITE(sfbonus_1800_w) AM_BASE_MEMBER(sfbonus_state, m_1800_regs) // lamps and coin counters @@ -1267,6 +1235,10 @@ static NVRAM_HANDLER( sfbonus ) } } +static ADDRESS_MAP_START( ramdac_map, AS_0, 8 ) + AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE_MODERN("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) +ADDRESS_MAP_END + static MACHINE_CONFIG_START( sfbonus, sfbonus_state ) MCFG_CPU_ADD("maincpu", Z80, 6000000) // custom packaged z80 CPU ?? Mhz @@ -1279,7 +1251,6 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state ) MCFG_NVRAM_HANDLER(sfbonus) - MCFG_GFXDECODE(sfbonus) MCFG_SCREEN_ADD("screen", RASTER) @@ -1292,6 +1263,8 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state ) MCFG_PALETTE_LENGTH(0x100*2) // *2 for priority workaraound / custom drawing + MCFG_RAMDAC_ADD("ramdac", ramdac_map) + MCFG_VIDEO_START(sfbonus) /* Parrot 3 seems fine at 1 Mhz, but Double Challenge isn't? */ diff --git a/src/mame/etc/template_device.c b/src/mame/etc/template_device.c index d5c150cee32..472812d7334 100644 --- a/src/mame/etc/template_device.c +++ b/src/mame/etc/template_device.c @@ -22,7 +22,7 @@ const device_type xxx = &device_creator; //************************************************************************** //------------------------------------------------- -// rtc9701_device - constructor +// xxx_device - constructor //------------------------------------------------- xxx_device::xxx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)