TMS34010 test fixes.

This commit is contained in:
Toni Wilen 2023-12-27 17:14:52 +02:00
parent 36a61eeb13
commit 83e908def0
2 changed files with 16 additions and 20 deletions

View File

@ -1046,7 +1046,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt)(int src_is_linear, int dst_is_linear
/* fetch the initial source word */
srcword = (this->*word_read)(*m_program, srcwordaddr++ << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
readwrites++;
/* fetch the initial dest word */
@ -1066,7 +1066,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt)(int src_is_linear, int dst_is_linear
if (srcbit + BITS_PER_PIXEL > 16)
{
srcword |= (this->*word_read)(*m_program, srcwordaddr++ << 1) << 16;
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
readwrites++;
}
@ -1421,7 +1421,7 @@ if ((daddr & (BITS_PER_PIXEL - 1)) != 0) osd_printf_debug("PIXBLT_R%d with odd d
/* fetch the initial source word */
srcword = (this->*word_read)(*m_program, --swordaddr << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = PIXEL_MASK << ((saddr - BITS_PER_PIXEL) & 15);
/* handle the right partial word */
@ -1438,7 +1438,7 @@ if ((daddr & (BITS_PER_PIXEL - 1)) != 0) osd_printf_debug("PIXBLT_R%d with odd d
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, --swordaddr << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = PIXEL_MASK << (16 - BITS_PER_PIXEL);
}
@ -1487,7 +1487,7 @@ if ((daddr & (BITS_PER_PIXEL - 1)) != 0) osd_printf_debug("PIXBLT_R%d with odd d
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, --swordaddr << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = PIXEL_MASK << (16 - BITS_PER_PIXEL);
}
@ -1532,7 +1532,7 @@ if ((daddr & (BITS_PER_PIXEL - 1)) != 0) osd_printf_debug("PIXBLT_R%d with odd d
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, --swordaddr << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = PIXEL_MASK << (16 - BITS_PER_PIXEL);
}
@ -1686,7 +1686,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt_b)(int dst_is_linear)
/* fetch the initial source word */
srcword = (this->*word_read)(*m_program, swordaddr++ << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = 1 << (saddr & 15);
/* handle the left partial word */
@ -1711,7 +1711,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt_b)(int dst_is_linear)
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, swordaddr++ << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = 0x0001;
}
@ -1749,7 +1749,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt_b)(int dst_is_linear)
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, swordaddr++ << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = 0x0001;
}
@ -1784,7 +1784,7 @@ void FUNCTION_NAME(tms340x0_device::pixblt_b)(int dst_is_linear)
if (srcmask == 0)
{
srcword = (this->*word_read)(*m_program, swordaddr++ << 1);
srcword &= m_plane_mask_inv;
//srcword &= m_plane_mask_inv;
srcmask = 0x0001;
}

View File

@ -1568,21 +1568,17 @@ WRITE16_MEMBER( tms340x0_device::host_w )
/* upper 16 bits of the address */
case TMS34010_HOST_ADDRESS_H:
IOREG(REG_HSTADRH) = data;
// !LBL && !INCW
if (!(hstctlh & 0x2000) && !(hstctlh & 0x0800)) {
addr = (IOREG(REG_HSTADRH) << 16) | IOREG(REG_HSTADRL);
m_prefetch_data = TMS34010_RDMEM_WORD(TOBYTE(addr & 0xfffffff0));
}
addr = (IOREG(REG_HSTADRH) << 16) | IOREG(REG_HSTADRL);
m_prefetch_data = TMS34010_RDMEM_WORD(TOBYTE(addr & 0xfffffff0));
break;
/* lower 16 bits of the address */
case TMS34010_HOST_ADDRESS_L:
IOREG(REG_HSTADRL) = data;
// LBL && !INCW
if ((hstctlh & 0x2000) && !(hstctlh & 0x0800)) {
addr = (IOREG(REG_HSTADRH) << 16) | IOREG(REG_HSTADRL);
m_prefetch_data = TMS34010_RDMEM_WORD(TOBYTE(addr & 0xfffffff0));
}
#if 0
addr = (IOREG(REG_HSTADRH) << 16) | IOREG(REG_HSTADRL);
m_prefetch_data = TMS34010_RDMEM_WORD(TOBYTE(addr & 0xfffffff0));
#endif
break;
/* actual data */