diff options
Diffstat (limited to 'src/mame/atari/copsnrob_v.cpp')
-rw-r--r-- | src/mame/atari/copsnrob_v.cpp | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/src/mame/atari/copsnrob_v.cpp b/src/mame/atari/copsnrob_v.cpp deleted file mode 100644 index 7f147a4a45d..00000000000 --- a/src/mame/atari/copsnrob_v.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Zsolt Vasvari -/*************************************************************************** - - Atari Cops'n Robbers hardware - -***************************************************************************/ - -#include "emu.h" -#include "copsnrob.h" - - -uint32_t copsnrob_state::screen_update_copsnrob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - /* redrawing the entire display is faster in this case */ - - for (int offs = m_videoram.bytes(); offs >= 0; offs--) - { - int const sx = 31 - (offs % 32); - int const sy = offs / 32; - - m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, - m_videoram[offs] & 0x3f,0, - 0,0, - 8*sx,8*sy); - } - - - /* Draw the cars. Positioning was based on a screen shot */ - if (m_cary[0]) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - m_carimage[0],0, - 1,0, - 0xe4,256 - m_cary[0],0); - - if (m_cary[1]) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - m_carimage[1],0, - 1,0, - 0xc4,256 - m_cary[1],0); - - if (m_cary[2]) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - m_carimage[2],0, - 0,0, - 0x24,256 - m_cary[2],0); - - if (m_cary[3]) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - m_carimage[3],0, - 0,0, - 0x04,256 - m_cary[3],0); - - - /* Draw the beer truck. Positioning was based on a screen shot. - We scan the truck's window RAM for a location whose bit is set and - which corresponds either to the truck's front end or the truck's back - end (based on the value of the truck image line sync register). We - then draw a truck image in the proper place and continue scanning. - This is not a perfect emulation of the game hardware, but it should - suffice for the way the game software uses the hardware. It does take - care of the problem of displaying multiple beer trucks and of scrolling - truck images smoothly off the top of the screen. */ - - for (int y = 0; y < 256; y++) - { - /* y is going up the screen, but the truck window RAM locations - go down the screen. */ - - if (m_truckram[255 - y]) - { - /* The hardware only uses the low 5 bits of the truck image line - sync register. */ - if ((m_trucky[0] & 0x1f) == ((y + 31) & 0x1f)) - { - /* We've hit a truck's back end, so draw the truck. The front - end may be off the top of the screen, but we don't care. */ - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, - 0,0, - 0,0, - 0x80,256 - (y + 31),0); - /* Skip past this truck's front end so we don't draw this - truck twice. */ - y += 31; - } - else if ((m_trucky[0] & 0x1f) == (y & 0x1f)) - { - /* We missed a truck's back end (it was off the bottom of the - screen) but have hit its front end, so draw the truck. */ - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, - 0,0, - 0,0, - 0x80,256 - y,0); - } - } - } - - - /* Draw the bullets. - They are flickered on/off every frame by the software, so don't - play it with frameskip 1 or 3, as they could become invisible */ - - for (int x = 0; x < 256; x++) - { - int const val = m_bulletsram[x]; - - // Check for the most common case - if (!(val & 0x0f)) - continue; - - int mask1 = 0x01; - int mask2 = 0x10; - - // Check each bullet - for (int bullet = 0; bullet < 4; bullet++) - { - if (val & mask1) - { - for (int y = cliprect.top(); y <= cliprect.bottom(); y++) - if (m_bulletsram[y] & mask2) - bitmap.pix(y, 256 - x) = 1; - } - - mask1 <<= 1; - mask2 <<= 1; - } - } - return 0; -} |