diff options
Diffstat (limited to 'src/mame/drivers/subsino2.cpp')
-rw-r--r-- | src/mame/drivers/subsino2.cpp | 72 |
1 files changed, 29 insertions, 43 deletions
diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index 03bd43f6dab..72710024f91 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -49,6 +49,7 @@ To do: #include "machine/ticket.h" #include "sound/3812intf.h" #include "sound/okim6295.h" +#include "video/ramdac.h" #include "screen.h" #include "speaker.h" @@ -94,7 +95,6 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette") { } - std::unique_ptr<uint8_t[]> m_hm86171_colorram; layer_t m_layers[2]; uint8_t m_ss9601_byte_lo; uint8_t m_ss9601_byte_lo2; @@ -103,7 +103,6 @@ public: uint8_t m_ss9601_scrollctrl; uint8_t m_ss9601_tilesize; uint8_t m_ss9601_disable; - int m_hm86171_offs; uint8_t m_dsw_mask; optional_shared_ptr<uint16_t> m_outputs16; optional_shared_ptr<uint8_t> m_outputs; @@ -140,7 +139,6 @@ public: DECLARE_READ8_MEMBER(ss9601_scrollram_1_hi_r); DECLARE_READ8_MEMBER(ss9601_scrollram_1_lo_r); DECLARE_WRITE8_MEMBER(ss9601_disable_w); - DECLARE_WRITE8_MEMBER(hm86171_colorram_w); DECLARE_WRITE8_MEMBER(dsw_mask_w); DECLARE_READ8_MEMBER(dsw_r); DECLARE_READ8_MEMBER(vblank_bit2_r); @@ -605,8 +603,6 @@ WRITE8_MEMBER(subsino2_state::ss9601_disable_w) VIDEO_START_MEMBER(subsino2_state,subsino2) { - m_hm86171_colorram = std::make_unique<uint8_t[]>(256*3); - // SS9601 Regs: m_ss9601_tilesize = TILE_8x8; @@ -786,39 +782,6 @@ uint32_t subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_in } /*************************************************************************** - Palette: HMC HM86171 VGA 256 colour RAMDAC -***************************************************************************/ - - -WRITE8_MEMBER(subsino2_state::hm86171_colorram_w) -{ - switch (offset) - { - case 0: - m_hm86171_offs = data * 3; - break; - - case 1: - m_hm86171_colorram[m_hm86171_offs] = data; - m_palette->set_pen_color(m_hm86171_offs/3, - pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+0]), - pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+1]), - pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+2]) - ); - m_hm86171_offs = (m_hm86171_offs+1) % (256*3); - break; - - case 2: - // ff? - break; - - case 3: - break; - } -} - - -/*************************************************************************** Input / Output ***************************************************************************/ @@ -967,7 +930,9 @@ static ADDRESS_MAP_START( bishjan_map, AS_PROGRAM, 16, subsino2_state ) AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w ) AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 ) - AM_RANGE( 0x600060, 0x600063 ) AM_WRITE8(hm86171_colorram_w, 0xffff ) + AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) + AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) + AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 ) AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 ) @@ -981,6 +946,10 @@ static ADDRESS_MAP_START( bishjan_map, AS_PROGRAM, 16, subsino2_state ) AM_RANGE( 0xc00008, 0xc00009 ) AM_READ_PORT("RESET") AM_WRITE(bishjan_outputs_w ) AM_SHARE("outputs16") ADDRESS_MAP_END +static ADDRESS_MAP_START( ramdac_map, AS_0, 8, subsino2_state ) + AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) +ADDRESS_MAP_END + /*************************************************************************** New 2001 ***************************************************************************/ @@ -1054,7 +1023,9 @@ static ADDRESS_MAP_START( new2001_base_map, AS_PROGRAM, 16, subsino2_state ) AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w ) AM_RANGE( 0x600020, 0x600021 ) AM_WRITE8(ss9601_byte_lo2_w, 0xff00 ) AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 ) - AM_RANGE( 0x600060, 0x600063 ) AM_WRITE8(hm86171_colorram_w, 0xffff ) + AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) + AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) + AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 ) AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 ) @@ -1261,7 +1232,9 @@ static ADDRESS_MAP_START( mtrain_map, AS_PROGRAM, 8, subsino2_state ) AM_RANGE( 0x09158, 0x0915e ) AM_READ(mtrain_prot_r ) - AM_RANGE( 0x09160, 0x09163 ) AM_WRITE(hm86171_colorram_w ) + AM_RANGE( 0x09160, 0x09160 ) AM_DEVWRITE("ramdac", ramdac_device, index_w) + AM_RANGE( 0x09161, 0x09161 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) + AM_RANGE( 0x09162, 0x09162 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) AM_RANGE( 0x09164, 0x09164 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE( 0x09168, 0x09168 ) AM_WRITE(mtrain_tilesize_w ) @@ -1334,7 +1307,9 @@ static ADDRESS_MAP_START( saklove_io, AS_IO, 8, subsino2_state ) AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x0040, 0x0041) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x0060, 0x0063) AM_WRITE(hm86171_colorram_w ) + AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w) + AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w) + AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w) AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w ) AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w ) @@ -1432,7 +1407,10 @@ static ADDRESS_MAP_START( xplan_io, AS_IO, 8, subsino2_state ) AM_RANGE(0x0040, 0x0040) AM_WRITE(ss9601_scrollctrl_w ) - AM_RANGE(0x0060, 0x0063) AM_WRITE(hm86171_colorram_w ) + AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w) + AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w) + AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w ) AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w ) @@ -2371,6 +2349,8 @@ static MACHINE_CONFIG_START( bishjan ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ss9601 ) MCFG_PALETTE_ADD( "palette", 256 ) + MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") // HMC HM86171 VGA 256 colour RAMDAC + MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 ) // sound hardware @@ -2418,6 +2398,8 @@ static MACHINE_CONFIG_START( mtrain ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ss9601 ) MCFG_PALETTE_ADD( "palette", 256 ) + MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") // HMC HM86171 VGA 256 colour RAMDAC + MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 ) // sound hardware @@ -2450,6 +2432,8 @@ static MACHINE_CONFIG_START( saklove ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ss9601 ) MCFG_PALETTE_ADD( "palette", 256 ) + MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") // HMC HM86171 VGA 256 colour RAMDAC + MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 ) // sound hardware @@ -2486,6 +2470,8 @@ static MACHINE_CONFIG_START( xplan ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ss9601 ) MCFG_PALETTE_ADD( "palette", 256 ) + MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") // HMC HM86171 VGA 256 colour RAMDAC + MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 ) // sound hardware |