mirror of https://github.com/PCSX2/pcsx2.git
resolves Issue 143 Altered Beast
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@958 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
e100933069
commit
97fac9e635
|
@ -67,11 +67,12 @@ int _SPR0chain()
|
||||||
if ((psHu32(DMAC_CTRL) & 0xC) >= 0x8) // 0x8 VIF1 MFIFO, 0xC GIF MFIFO
|
if ((psHu32(DMAC_CTRL) & 0xC) >= 0x8) // 0x8 VIF1 MFIFO, 0xC GIF MFIFO
|
||||||
{
|
{
|
||||||
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("SPR MFIFO Write outside MFIFO area");
|
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("SPR MFIFO Write outside MFIFO area");
|
||||||
|
else mfifotransferred += spr0->qwc;
|
||||||
|
|
||||||
hwMFIFOWrite(spr0->madr, (u8*)&PS2MEM_SCRATCH[spr0->sadr & 0x3fff], spr0->qwc << 4);
|
hwMFIFOWrite(spr0->madr, (u8*)&PS2MEM_SCRATCH[spr0->sadr & 0x3fff], spr0->qwc << 4);
|
||||||
spr0->madr += spr0->qwc << 4;
|
spr0->madr += spr0->qwc << 4;
|
||||||
spr0->madr = psHu32(DMAC_RBOR) + (spr0->madr & psHu32(DMAC_RBSR));
|
spr0->madr = psHu32(DMAC_RBOR) + (spr0->madr & psHu32(DMAC_RBSR));
|
||||||
mfifotransferred += spr0->qwc;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -226,6 +227,8 @@ void SPRFROMinterrupt()
|
||||||
{
|
{
|
||||||
_dmaSPR0();
|
_dmaSPR0();
|
||||||
|
|
||||||
|
if(mfifotransferred != 0)
|
||||||
|
{
|
||||||
if ((psHu32(DMAC_CTRL) & 0xC) == 0xC) // GIF MFIFO
|
if ((psHu32(DMAC_CTRL) & 0xC) == 0xC) // GIF MFIFO
|
||||||
{
|
{
|
||||||
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("GIF MFIFO Write outside MFIFO area");
|
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("GIF MFIFO Write outside MFIFO area");
|
||||||
|
@ -234,8 +237,7 @@ void SPRFROMinterrupt()
|
||||||
mfifoGIFtransfer(mfifotransferred);
|
mfifoGIFtransfer(mfifotransferred);
|
||||||
mfifotransferred = 0;
|
mfifotransferred = 0;
|
||||||
}
|
}
|
||||||
else
|
else if ((psHu32(DMAC_CTRL) & 0xC) == 0x8) // VIF1 MFIFO
|
||||||
if ((psHu32(DMAC_CTRL) & 0xC) == 0x8) // VIF1 MFIFO
|
|
||||||
{
|
{
|
||||||
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("VIF MFIFO Write outside MFIFO area");
|
if ((spr0->madr & ~psHu32(DMAC_RBSR)) != psHu32(DMAC_RBOR)) Console::WriteLn("VIF MFIFO Write outside MFIFO area");
|
||||||
spr0->madr = psHu32(DMAC_RBOR) + (spr0->madr & psHu32(DMAC_RBSR));
|
spr0->madr = psHu32(DMAC_RBOR) + (spr0->madr & psHu32(DMAC_RBSR));
|
||||||
|
@ -243,6 +245,7 @@ void SPRFROMinterrupt()
|
||||||
mfifoVIF1transfer(mfifotransferred);
|
mfifoVIF1transfer(mfifotransferred);
|
||||||
mfifotransferred = 0;
|
mfifotransferred = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (spr0finished == 0) return;
|
if (spr0finished == 0) return;
|
||||||
spr0->chcr &= ~0x100;
|
spr0->chcr &= ~0x100;
|
||||||
hwDmacIrq(8);
|
hwDmacIrq(8);
|
||||||
|
|
Loading…
Reference in New Issue