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
FreezeRegs(0);
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;
}
else {
@ -312,19 +319,24 @@ void GIFdma()
{
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
{
ptag = (u32*)dmaGetAddr(gif->tadr); //Set memory pointer to TADR
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
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;
return;
}
}
//CPU_INT(2, gif->qwc * BIAS);
//CPU_INT(2, gif->qwc /** BIAS*/);
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
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
{
CPU_INT(2, gif->qwc * BIAS);
CPU_INT(2, gif->qwc /** BIAS*/);
}
gif->qwc = 0;
return;
@ -373,13 +385,12 @@ void dmaGIF() {
gspath3done = 1; //Halflife sets a QWC amount in chain mode, no tadr set.
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
{
CPU_INT(2, gif->qwc * BIAS);
CPU_INT(2, gif->qwc /** BIAS*/);
}
GIFdma();
return;
}
@ -388,11 +399,11 @@ void dmaGIF() {
//GIFdma();
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
{
CPU_INT(2, gif->qwc * BIAS);
CPU_INT(2, gif->qwc /** BIAS*/);
}
}