X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=Pico%2FVideoPort.c;h=e3643df8879b88f330d4df68bee7e1ec3f0093e9;hb=cea6590346640236914eeff840401c55db8a77ce;hp=b7a05f0515e97d24d56b0dc1be1e2ae0b8eb2d82;hpb=e11c55481f1703298b3e7e213f73cec8a136f974;p=picodrive.git diff --git a/Pico/VideoPort.c b/Pico/VideoPort.c index b7a05f0..e3643df 100644 --- a/Pico/VideoPort.c +++ b/Pico/VideoPort.c @@ -139,15 +139,24 @@ static void DmaSlow(int len) { case 1: // vram r = Pico.vram; - for(; len; len--) + if (inc == 2 && !(a&1) && a+len*2 < 0x10000) { - d=*pd++; - if(a&1) d=(d<<8)|(d>>8); - r[a>>1] = (u16)d; // will drop the upper bits - // AutoIncrement - a=(u16)(a+inc); - // didn't src overlap? - //if(pd >= pdend) pd-=0x8000; // should be good for RAM, bad for ROM + // most used DMA mode + memcpy16(r + (a>>1), pd, len); + a += len*2; + } + else + { + for(; len; len--) + { + d=*pd++; + if(a&1) d=(d<<8)|(d>>8); + r[a>>1] = (u16)d; // will drop the upper bits + // AutoIncrement + a=(u16)(a+inc); + // didn't src overlap? + //if(pd >= pdend) pd-=0x8000; // should be good for RAM, bad for ROM + } } rendstatus|=0x10; break;