Oh, stupid of me : I was wrong with div/sqrt cycles again. They must be doubled to be 33mhz units, ie 13 cycles in 33mhz would be 26 cycles for nds.cycles.

This commit is contained in:
luigi__ 2008-12-26 21:03:53 +00:00
parent 214798c3c1
commit 4e2965c416
1 changed files with 4 additions and 4 deletions

View File

@ -730,7 +730,7 @@ void execsqrt() {
T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B4, 0);
T1WriteLong(MMU.MMU_MEM[proc][0x40], 0x2B0, cnt | 0x8000);
MMU.sqrtCycles = (nds.cycles + 13);
MMU.sqrtCycles = (nds.cycles + 26);
MMU.sqrtResult = ret;
MMU.sqrtCnt = (cnt & 0x7FFF);
MMU.sqrtRunning = TRUE;
@ -746,18 +746,18 @@ void execdiv() {
case 0:
num = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x290);
den = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x298);
MMU.divCycles = (nds.cycles + 18);
MMU.divCycles = (nds.cycles + 36);
break;
case 3: //gbatek says this is same as mode 1
case 1:
num = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x290);
den = (s64) (s32) T1ReadLong(MMU.MMU_MEM[proc][0x40], 0x298);
MMU.divCycles = (nds.cycles + 34);
MMU.divCycles = (nds.cycles + 68);
break;
case 2:
num = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x290);
den = (s64) T1ReadQuad(MMU.MMU_MEM[proc][0x40], 0x298);
MMU.divCycles = (nds.cycles + 34);
MMU.divCycles = (nds.cycles + 68);
break;
}