fix bug where dma length > 128k words was misinterpreted, causing catastrophic failure.

This commit is contained in:
zeromus 2009-05-06 06:58:40 +00:00
parent 300a8b996d
commit 152a7b132f
1 changed files with 6 additions and 3 deletions

View File

@ -967,6 +967,8 @@ void MMU_clearMem()
memset(MMU.ARM7_ERAM, 0, sizeof(MMU.ARM7_ERAM));
memset(MMU.ARM7_REG, 0, sizeof(MMU.ARM7_REG));
memset(MMU.ARM7_WIRAM, 0, sizeof(MMU.ARM7_WIRAM));
memset(MMU.SWIRAM, 0, sizeof(MMU.SWIRAM));
IPC_FIFOinit(ARMCPU_ARM9);
IPC_FIFOinit(ARMCPU_ARM7);
@ -1129,7 +1131,7 @@ void FASTCALL MMU_doDMA(u32 num)
{
u32 src = DMASrc[PROCNUM][num];
u32 dst = DMADst[PROCNUM][num];
u32 taille;
u32 taille;
if(src==dst)
{
@ -1146,8 +1148,9 @@ void FASTCALL MMU_doDMA(u32 num)
}
/* word count */
taille = (MMU.DMACrt[PROCNUM][num]&0x1FFFF);
//word count
taille = (MMU.DMACrt[PROCNUM][num]&0x1FFFFF);
if(taille == 0) taille = 0x200000; //according to gbatek..
// If we are in "Main memory display" mode just copy an entire
// screen (256x192 pixels).