diff options
Diffstat (limited to 'src/mame/video/cischeat.cpp')
-rw-r--r-- | src/mame/video/cischeat.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/mame/video/cischeat.cpp b/src/mame/video/cischeat.cpp index de44f2111a5..189667c3cc0 100644 --- a/src/mame/video/cischeat.cpp +++ b/src/mame/video/cischeat.cpp @@ -90,7 +90,25 @@ void cischeat_state::video_start() m_io_value = 0; } +void wildplt_state::video_start() +{ + cischeat_state::video_start(); + m_buffer_spriteram = &m_ram[0x8000/2]; + m_spriteram = auto_alloc_array(machine(),uint16_t, 0x1000/2); +} + +WRITE16_MEMBER(wildplt_state::sprite_dma_w) +{ + // bit 13: 0 -> 1 transition triggers a sprite DMA + if(data & 0x2000 && (m_sprite_dma_reg & 0x2000) == 0) + { + for(int i=0;i<0x1000/2;i++) + m_spriteram[i] = m_buffer_spriteram[i]; + } + // other bits unknown + COMBINE_DATA(&m_sprite_dma_reg); +} /*************************************************************************** @@ -180,7 +198,7 @@ WRITE16_MEMBER(cischeat_state::bigrun_comms_w) m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 1) ? ASSERT_LINE : CLEAR_LINE); } - +// TODO: fake port, never written to my knowledge! WRITE16_MEMBER(cischeat_state::active_layers_w) { COMBINE_DATA(&m_active_layers); @@ -941,7 +959,7 @@ uint32_t cischeat_state::screen_update_f1gpstar(screen_device &screen, bitmap_in /* 1: clouds 5, grad 7, road 0 2: clouds 5, grad 7, road 0, tunnel roof 0 */ /* road 1!! 0!! */ /* bitmap, road, min_priority, max_priority, transparency */ - if (active_layers1 & 0x20) f1gpstar_draw_road(bitmap,cliprect,1,6,7,true); + if (active_layers1 & 0x20) f1gpstar_draw_road(bitmap,cliprect,1,6,7,false); if (active_layers1 & 0x10) f1gpstar_draw_road(bitmap,cliprect,0,6,7,true); flag = 0; |