trunk/src/mess/drivers/pc9801.c
| r242391 | r242392 | |
| 1351 | 1351 | { |
| 1352 | 1352 | src = src_tmp << (dst_off - src_off); |
| 1353 | 1353 | src |= m_egc.leftover[plane]; |
| 1354 | | m_egc.leftover[plane] = src_tmp >> (15 - (dst_off - src_off)); |
| 1354 | m_egc.leftover[plane] = src_tmp >> (16 - (dst_off - src_off)); |
| 1355 | 1355 | } |
| 1356 | 1356 | else |
| 1357 | 1357 | { |
| 1358 | 1358 | src = src_tmp >> (src_off - dst_off); |
| 1359 | 1359 | src |= m_egc.leftover[plane]; |
| 1360 | | m_egc.leftover[plane] = src_tmp << (15 - (src_off - dst_off)); |
| 1360 | m_egc.leftover[plane] = src_tmp << (16 - (src_off - dst_off)); |
| 1361 | 1361 | } |
| 1362 | 1362 | |
| 1363 | 1363 | for(int i = 7; i >= 0; i--) |
| r242391 | r242392 | |
| 1380 | 1380 | |
| 1381 | 1381 | if((((m_egc.regs[2] >> 11) & 3) == 1) || ((((m_egc.regs[2] >> 11) & 3) == 2) && !BIT(m_egc.regs[2], 10))) |
| 1382 | 1382 | { |
| 1383 | | // mask off the bits past the end of the blit |
| 1384 | | if(m_egc.count < 16) |
| 1385 | | mask &= dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1); |
| 1386 | | |
| 1383 | UINT16 end_mask = 0xffff, start_mask = 0xffff; |
| 1387 | 1384 | // mask off the bits before the start |
| 1388 | 1385 | if(m_egc.first) |
| 1389 | 1386 | { |
| 1390 | 1387 | m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0; |
| 1391 | | mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (16 - dst_off)) - 1); |
| 1388 | start_mask = dir ? ~((1 << dst_off) - 1) : ((1 << (15 - dst_off)) - 1); |
| 1392 | 1389 | } |
| 1390 | |
| 1391 | // mask off the bits past the end of the blit |
| 1392 | if(m_egc.count < 16) |
| 1393 | { |
| 1394 | end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1); |
| 1395 | // if the blit is less than 16 bits, adjust the masks |
| 1396 | if(start_mask != 0xffff) |
| 1397 | { |
| 1398 | if(dir) |
| 1399 | end_mask <<= dst_off; |
| 1400 | else |
| 1401 | end_mask >>= (15 - dst_off); |
| 1402 | } |
| 1403 | } |
| 1404 | mask &= end_mask & start_mask; |
| 1393 | 1405 | } |
| 1394 | 1406 | |
| 1395 | 1407 | for(int i = 0; i < 4; i++) |