mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
fast dma
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@35 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
e11c55481f
commit
cea6590346
10 changed files with 69 additions and 99 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue