From 08eaf9566ee3e927bdf2bc67584e00654805936f Mon Sep 17 00:00:00 2001 From: angelosa Date: Wed, 28 Dec 2016 01:14:51 +0100 Subject: winrun_bitmap_draw (nw) --- src/mame/includes/namcos21.h | 1 + src/mame/video/namcos21.cpp | 66 ++++++++++++++++++++++---------------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/src/mame/includes/namcos21.h b/src/mame/includes/namcos21.h index 2d309808583..ede0cd7b82d 100644 --- a/src/mame/includes/namcos21.h +++ b/src/mame/includes/namcos21.h @@ -183,5 +183,6 @@ public: int init_dsp(); void render_slave_output(uint16_t data); void winrun_flush_poly(); + void winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect); void init(int game_type); }; diff --git a/src/mame/video/namcos21.cpp b/src/mame/video/namcos21.cpp index dcbdffdb047..1ce56016007 100644 --- a/src/mame/video/namcos21.cpp +++ b/src/mame/video/namcos21.cpp @@ -423,45 +423,45 @@ uint32_t namcos21_state::screen_update_driveyes(screen_device &screen, bitmap_in } -uint32_t namcos21_state::screen_update_winrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +void namcos21_state::winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect) { uint8_t *videoram = m_videoram.get(); - //int pivot = 3; - //int pri; + int yscroll = -cliprect.min_y+(int16_t)m_winrun_gpu_register[0x2/2]; + int base = 0x1000+0x100*(m_winrun_color&0xf); + int sx,sy; + for( sy=cliprect.min_y; sy<=cliprect.max_y; sy++ ) + { + const uint8_t *pSource = &videoram[((yscroll+sy)&0x3ff)*0x200]; + uint16_t *pDest = &bitmap.pix16(sy); + for( sx=cliprect.min_x; sx<=cliprect.max_x; sx++ ) + { + int pen = pSource[sx]; + switch( pen ) + { + case 0xff: + break; + case 0x00: + pDest[sx] = (pDest[sx]&0x1fff)+0x4000; + break; + case 0x01: + pDest[sx] = (pDest[sx]&0x1fff)+0x6000; + break; + default: + pDest[sx] = base|pen; + break; + } + } + } +} + + +uint32_t namcos21_state::screen_update_winrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ bitmap.fill(0xff, cliprect ); copy_visible_poly_framebuffer(bitmap, cliprect, 0x7fc0, 0x7ffe); - copy_visible_poly_framebuffer(bitmap, cliprect, 0, 0x7fbf); + winrun_bitmap_draw(bitmap,cliprect); - - { /* winrun bitmap layer */ - int yscroll = -cliprect.min_y+(int16_t)m_winrun_gpu_register[0x2/2]; - int base = 0x1000+0x100*(m_winrun_color&0xf); - int sx,sy; - for( sy=cliprect.min_y; sy<=cliprect.max_y; sy++ ) - { - const uint8_t *pSource = &videoram[((yscroll+sy)&0x3ff)*0x200]; - uint16_t *pDest = &bitmap.pix16(sy); - for( sx=cliprect.min_x; sx<=cliprect.max_x; sx++ ) - { - int pen = pSource[sx]; - switch( pen ) - { - case 0xff: - break; - case 0x00: - pDest[sx] = (pDest[sx]&0x1fff)+0x4000; - break; - case 0x01: - pDest[sx] = (pDest[sx]&0x1fff)+0x6000; - break; - default: - pDest[sx] = base|pen; - break; - } - } - } - } /* winrun bitmap layer */ return 0; } -- cgit v1.2.3