summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2017-08-31 12:38:12 +0200
committer angelosa <salese_corp_ltd@email.it>2017-08-31 12:38:12 +0200
commitb1da9c903db390251f964f7da2e2f5ea9f816273 (patch)
treef5cd74f2e774c90238f1c611fcf28b16151f24d0 /src/devices
parent0cedd77854a91f785b02393f61a4645c12d7b1ee (diff)
mb_vcu.cpp: improved layer clearances for Mazer Blazer [Angelo Salese]
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/video/mb_vcu.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/devices/video/mb_vcu.cpp b/src/devices/video/mb_vcu.cpp
index ae75db42c26..7a5371ec761 100644
--- a/src/devices/video/mb_vcu.cpp
+++ b/src/devices/video/mb_vcu.cpp
@@ -377,7 +377,10 @@ READ8_MEMBER( mb_vcu_device::load_gfx )
return 0; // open bus?
}
+
/*
+Read-Modify-Write operation, not fully understood
+
---0 -111 (0x07) write to i/o?
---0 -011 (0x03) read to i/o?
---1 -011 (0x13) read to vram?
@@ -389,7 +392,7 @@ READ8_MEMBER( mb_vcu_device::load_set_clr )
// uint8_t dot;
int bits = 0;
#if 0
- if(m_mode == 0x13 || m_mode == 0x03)
+ if(m_mode == 0x13) //|| m_mode == 0x03)
{
printf("[0] %02x ",m_ram[m_param_offset_latch]);
printf("X: %04x ",m_xpos);
@@ -408,6 +411,8 @@ READ8_MEMBER( mb_vcu_device::load_set_clr )
{
case 0x13:
case 0x03:
+ {
+
for (yi = 0; yi < m_pix_ysize; yi++)
{
for (xi = 0; xi < m_pix_xsize; xi++)
@@ -417,6 +422,11 @@ READ8_MEMBER( mb_vcu_device::load_set_clr )
if(dstx < 256 && dsty < 256)
{
+ if(m_mode == 0x03)
+ write_byte(dstx|dsty<<8|0<<16|(m_vbank)<<18, 0xf);
+// else
+// write_byte(dstx|dsty<<8|1<<16|(m_vbank)<<18, 0xf);
+
#if 0
dot = m_cpu->space(AS_PROGRAM).read_byte(((offset + (bits >> 3)) & 0x1fff) + 0x4000) >> (6-(bits & 7));
dot&= 3;
@@ -445,6 +455,7 @@ READ8_MEMBER( mb_vcu_device::load_set_clr )
}
}
break;
+ }
case 0x07:
for(int i=0;i<m_pix_xsize;i++)
@@ -524,7 +535,7 @@ uint32_t mb_vcu_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma
{
for(x=0;x<256;x++)
{
- dot = read_byte((x >> 0)|(y<<8)|0<<16);
+ dot = read_byte((x >> 0)|(y<<8)|0<<16|(m_vbank ^ 1)<<18);
if(dot != 0xf)
{