Previous 199869 Revisions Next

r33812 Thursday 11th December, 2014 at 04:05:49 UTC by Carl
(mess) pc9801: bit better (nw)
[src/emu/bus/isa]num9rev.c
[src/mess/drivers]pc9801.c

trunk/src/emu/bus/isa/num9rev.c
r242323r242324
2222   {
2323      rgb_t color(0);
2424      UINT16 overlay;
25      if(((address << 4) + 0xc0016) > (1024*1024))
25      if(((address << 3) + 0xc0016) > (1024*1024))
2626         return;
2727      for(int i = 0; i < 16; i++)
2828      {
29         UINT32 addr = (address << 4) + i;
29         UINT32 addr = (address << 3) + i;
3030         overlay = m_ram[addr + 0xc0000] << 1;
3131         overlay = m_overlay[overlay + ((m_mode & 8) ? 512 : 0)] | (m_overlay[overlay + 1 + ((m_mode & 8) ? 512 : 0)] << 8);
3232         color.set_r(pal->entry_color(m_ram[addr] | ((overlay & 0xf) << 8)).r());
r242323r242324
3737   }
3838   else
3939   {
40      if(((address << 4) + 16) > (1024*1024))
40      if(((address << 3) + 16) > (1024*1024))
4141         return;
4242      for(int i = 0; i < 16; i++)
4343         bitmap.pix32(y, x + i) = pal->entry_color(m_ram[(address << 4) + i]);
trunk/src/mess/drivers/pc9801.c
r242323r242324
13371337
13381338   if(m_egc.regs[6] & 0x1000)
13391339   {
1340      src_off = 16 - (m_egc.regs[6] & 0xf);
1341      dst_off = 16 - ((m_egc.regs[6] >> 4) & 0xf);
1340      src_off = 15 - (m_egc.regs[6] & 0xf);
1341      dst_off = 15 - ((m_egc.regs[6] >> 4) & 0xf);
13421342   }
13431343   else
13441344   {
r242323r242324
13501350   {
13511351      src = src_tmp << (dst_off - src_off);
13521352      src |= m_egc.leftover[plane];
1353      m_egc.leftover[plane] = src_tmp >> (16 - (dst_off - src_off));
1353      m_egc.leftover[plane] = src_tmp >> (15 - (dst_off - src_off));
13541354   }
13551355   else
13561356   {
13571357      src = src_tmp >> (src_off - dst_off);
1358      src |= m_egc.leftover[plane] >> dst_off;
1359      m_egc.leftover[plane] = src_tmp << (16 - (src_off - dst_off));
1358      src |= m_egc.leftover[plane];
1359      m_egc.leftover[plane] = src_tmp << (15 - (src_off - dst_off));
13601360   }
13611361
13621362   for(int i = 7; i >= 0; i--)
r242323r242324
13771377   int dst_off = (m_egc.regs[6] >> 4) & 0xf;
13781378   offset &= 0x3fff;
13791379
1380   // mask off the bits past the end of the blit
1381   if(m_egc.count < 16)
1382      mask &= dir ? ((1 << (m_egc.count + 1)) - 1) : ~((1 << (15 - m_egc.count)) - 1);
1380   if((((m_egc.regs[2] >> 11) & 3) == 1) || ((((m_egc.regs[2] >> 11) & 3) == 2) && !BIT(m_egc.regs[2], 10)))
1381   {
1382      // mask off the bits past the end of the blit
1383      if(m_egc.count < 16)
1384         mask &= dir ? ((1 << (m_egc.count + 1)) - 1) : ~((1 << (16 - m_egc.count)) - 1);
13831385
1384   // mask off the bits before the start
1385   if(m_egc.first)
1386   {
1387      m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
1388      mask &= dir ? ~((1 << (15 - dst_off)) - 1) : ((1 << (dst_off + 1)) - 1);
1386      // mask off the bits before the start
1387      if(m_egc.first)
1388      {
1389         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
1390         mask &= dir ? ~((1 << (16 - dst_off)) - 1) : ((1 << (dst_off + 1)) - 1);
1391      }
13891392   }
13901393
13911394   for(int i = 0; i < 4; i++)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team