Fixed a slight error in my last commit, fixed a bug from another previous commit and put in rama's hack for FFX which was bugged from r604, i know why its happening, but how to solve it properly is the issue.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@772 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2009-03-13 22:15:31 +00:00
parent c8683cb350
commit 81b038ed41
1 changed files with 21 additions and 10 deletions

View File

@ -250,6 +250,13 @@ void GIFdma()
GIFchain(); //Transfers the data set by the switch GIFchain(); //Transfers the data set by the switch
FreezeRegs(0); FreezeRegs(0);
if(gif->qwc == 0 && (gif->chcr & 0xc) == 0) gspath3done = 1; if(gif->qwc == 0 && (gif->chcr & 0xc) == 0) gspath3done = 1;
else
{
if(psHu32(GIF_MODE) & 0x4)
CPU_INT(2, min( 8, (int)gif->qwc )/** BIAS*/);
else
CPU_INT(2, gif->qwc/* * BIAS*/);
}
return; return;
} }
else { else {
@ -312,19 +319,24 @@ void GIFdma()
{ {
if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0) if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0)
{ {
CPU_INT(2, min( 8, (int)gif->qwc )* BIAS); CPU_INT(2, min( 8, (int)gif->qwc )/** BIAS*/);
} }
else else
{ {
ptag = (u32*)dmaGetAddr(gif->tadr); //Set memory pointer to TADR ptag = (u32*)dmaGetAddr(gif->tadr); //Set memory pointer to TADR
gif->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag gif->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag
gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15 gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15
CPU_INT(2, gif->qwc * BIAS);
if(psHu32(GIF_MODE) & 0x4)
CPU_INT(2, min( 8, (int)gif->qwc )/** BIAS*/);
else
CPU_INT(2, gif->qwc /** BIAS*/);
gif->qwc = 0; gif->qwc = 0;
return; return;
} }
} }
//CPU_INT(2, gif->qwc * BIAS); //CPU_INT(2, gif->qwc /** BIAS*/);
gscycles = 0; gscycles = 0;
} }
} }
@ -358,11 +370,11 @@ void dmaGIF() {
gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15 gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15
if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0) if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0)
{ {
CPU_INT(2, min( 8, (int)gif->qwc ) * BIAS); CPU_INT(2, min( 8, (int)gif->qwc ) /** BIAS*/);
} }
else else
{ {
CPU_INT(2, gif->qwc * BIAS); CPU_INT(2, gif->qwc /** BIAS*/);
} }
gif->qwc = 0; gif->qwc = 0;
return; return;
@ -373,13 +385,12 @@ void dmaGIF() {
gspath3done = 1; //Halflife sets a QWC amount in chain mode, no tadr set. gspath3done = 1; //Halflife sets a QWC amount in chain mode, no tadr set.
if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0) if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0)
{ {
CPU_INT(2, min( 8, (int)gif->qwc ) * BIAS); CPU_INT(2, min( 8, (int)gif->qwc ) /** BIAS*/);
} }
else else
{ {
CPU_INT(2, gif->qwc * BIAS); CPU_INT(2, gif->qwc /** BIAS*/);
} }
GIFdma();
return; return;
} }
@ -388,11 +399,11 @@ void dmaGIF() {
//GIFdma(); //GIFdma();
if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0) if((psHu32(GIF_MODE) & 0x4) && gif->qwc != 0)
{ {
CPU_INT(2, min( 8, (int)gif->qwc ) * BIAS); CPU_INT(2, min( 8, (int)gif->qwc ) /** BIAS*/);
} }
else else
{ {
CPU_INT(2, gif->qwc * BIAS); CPU_INT(2, gif->qwc /** BIAS*/);
} }
} }