mirror of https://github.com/PCSX2/pcsx2.git
Missed hwwrite.cpp in my last commit, whoops ;p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2857 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
40bdbf9748
commit
887a05fa4d
|
@ -63,10 +63,17 @@ static __forceinline void DmaExec16( void (*func)(), u32 mem, u16 value )
|
|||
|
||||
//It's invalid for the hardware to write a DMA while it is active, not without Suspending the DMAC
|
||||
if (chcr.STR && reg->chcr.STR && dmacRegs->ctrl.DMAE) {
|
||||
DevCon.Warning(L"DMAExec16 Attempt to run DMA while one is already active in %s(%x)", ChcrName(mem), mem );
|
||||
func();
|
||||
Registers::Thaw();
|
||||
return;
|
||||
if((reg->chcr._u32 & 0xff) == (chcr._u32 & 0xff)) //Tried to start another DMA in the same mode
|
||||
DevCon.Warning(L"DMAExec32 Attempt to run DMA while one is already active in %s(%x)", ChcrName(mem), mem);
|
||||
else if(psHu8(DMAC_ENABLER+2) != 0)//Just trying to change mode without stopping the DMA, so we dont care really :P
|
||||
{
|
||||
HW_LOG("Attempted to change modes while DMA active, ignoring");
|
||||
// When DMA is active only STR field is writable, so we just
|
||||
// call the dma transfer function w/o modifying CHCR contents...
|
||||
//func();
|
||||
Registers::Thaw();
|
||||
return; // Test with Gust games and fatal frame
|
||||
}
|
||||
}
|
||||
|
||||
// Note: pad is the padding right above qwc, so we're testing whether qwc
|
||||
|
@ -98,10 +105,8 @@ static void DmaExec( void (*func)(), u32 mem, u32 value )
|
|||
//It's invalid for the hardware to write a DMA while it is active, not without Suspending the DMAC
|
||||
if (chcr.STR && reg->chcr.STR && dmacRegs->ctrl.DMAE) {
|
||||
if((reg->chcr._u32 & 0xff) == (chcr._u32 & 0xff)) //Tried to start another DMA in the same mode
|
||||
{
|
||||
DevCon.Warning(L"DMAExec32 Attempt to run DMA while one is already active in %s(%x)", ChcrName(mem), mem);
|
||||
}
|
||||
else //Just trying to change mode without stopping the DMA, so we dont care really :P
|
||||
else if(psHu8(DMAC_ENABLER+2) != 0)//Just trying to change mode without stopping the DMA, so we dont care really :P
|
||||
{
|
||||
HW_LOG("Attempted to change modes while DMA active, ignoring");
|
||||
// When DMA is active only STR field is writable, so we just
|
||||
|
|
Loading…
Reference in New Issue