tighten the 3d timing even more to fix marvel nemesis. this is now clearly at epic compatibility hack level as 3d takes virtually no time to execute, but lets gather data on whether there are any negative consequences.

This commit is contained in:
zeromus 2009-10-15 18:10:18 +00:00
parent 711d596793
commit 9b7fd520cb
1 changed files with 10 additions and 1 deletions

View File

@ -1785,7 +1785,7 @@ void gfx3d_execute3D()
//this is a SPEED HACK //this is a SPEED HACK
//fifo is currently emulated more accurately than it probably needs to be. //fifo is currently emulated more accurately than it probably needs to be.
//without this batch size the emuloop will escape way too often to run fast. //without this batch size the emuloop will escape way too often to run fast.
const int HACK_FIFO_BATCH_SIZE = 32; const int HACK_FIFO_BATCH_SIZE = 64;
for(int i=0;i<HACK_FIFO_BATCH_SIZE;i++) { for(int i=0;i<HACK_FIFO_BATCH_SIZE;i++) {
if(GFX_PIPErecv(&cmd, &param)) if(GFX_PIPErecv(&cmd, &param))
@ -1801,6 +1801,15 @@ void gfx3d_execute3D()
//for the earlier params. //for the earlier params.
//printf("%05d:%03d:%12lld: executed 3d: %02X %08X\n",currFrameCounter, nds.VCount, nds_timer , cmd, param); //printf("%05d:%03d:%12lld: executed 3d: %02X %08X\n",currFrameCounter, nds.VCount, nds_timer , cmd, param);
gfx3d_execute(cmd, param); gfx3d_execute(cmd, param);
//this is a COMPATIBILITY HACK.
//this causes 3d to take virtually no time whatsoever to execute.
//this was done for marvel nemesis, but a similar family of
//hacks for ridiculously fast 3d execution has proven necessary for a number of games.
//the true answer is probably dma bus blocking.. but lets go ahead and try this and
//check the compatibility, at the very least it will be nice to know if any games suffer from
//3d running too fast
MMU.gfx3dCycles = nds_timer+1;
} else break; } else break;
} }