mirror of https://github.com/RPCS3/rpcs3.git
parent
d1ffea0847
commit
7bab42455b
|
@ -586,6 +586,8 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Sleep(1);
|
||||||
|
|
||||||
switch(cmd & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK | MFC_LIST_MASK | MFC_RESULT_MASK))
|
switch(cmd & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK | MFC_LIST_MASK | MFC_RESULT_MASK))
|
||||||
{
|
{
|
||||||
case MFC_PUT_CMD:
|
case MFC_PUT_CMD:
|
||||||
|
|
|
@ -7,141 +7,200 @@ Module cellAtrac(0x0013, cellAtrac_init);
|
||||||
|
|
||||||
#include "cellAtrac.h"
|
#include "cellAtrac.h"
|
||||||
|
|
||||||
int cellAtracSetDataAndGetMemSize()
|
int cellAtracSetDataAndGetMemSize(mem_ptr_t<CellAtracHandle> pHandle, u32 pucBufferAddr, u32 uiReadByte, u32 uiBufferByte, mem32_t puiWorkMemByte)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracSetDataAndGetMemSize(pHandle=0x%x, pucBufferAddr=0x%x, uiReadByte=0x%x, uiBufferByte=0x%x, puiWorkMemByte_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), pucBufferAddr, uiReadByte, uiBufferByte, puiWorkMemByte.GetAddr());
|
||||||
|
|
||||||
|
puiWorkMemByte = 0x1000; // unproved
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracCreateDecoder()
|
int cellAtracCreateDecoder(mem_ptr_t<CellAtracHandle> pHandle, u32 pucWorkMem_addr, u32 uiPpuThreadPriority, u32 uiSpuThreadPriority)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracCreateDecoder(pHandle=0x%x, pucWorkMem_addr=0x%x, uiPpuThreadPriority=%d, uiSpuThreadPriority=%d)",
|
||||||
|
pHandle.GetAddr(), pucWorkMem_addr, uiPpuThreadPriority, uiSpuThreadPriority);
|
||||||
|
|
||||||
|
pHandle->data.pucWorkMem_addr = pucWorkMem_addr;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracCreateDecoderExt()
|
int cellAtracCreateDecoderExt(mem_ptr_t<CellAtracHandle> pHandle, u32 pucWorkMem_addr, u32 uiPpuThreadPriority, mem_ptr_t<CellAtracExtRes> pExtRes)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracCreateDecoderExt(pHandle=0x%x, pucWorkMem_addr=0x%x, uiPpuThreadPriority=%d, pExtRes_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), pucWorkMem_addr, uiPpuThreadPriority, pExtRes.GetAddr());
|
||||||
|
|
||||||
|
pHandle->data.pucWorkMem_addr = pucWorkMem_addr;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracDeleteDecoder()
|
int cellAtracDeleteDecoder(mem_ptr_t<CellAtracHandle> pHandle)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracDeleteDecoder(pHandle=0x%x)", pHandle.GetAddr());
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracDecode()
|
int cellAtracDecode(mem_ptr_t<CellAtracHandle> pHandle, u32 pfOutAddr, mem32_t puiSamples, mem32_t puiFinishflag, mem32_t piRemainFrame)
|
||||||
{
|
{
|
||||||
//UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracDecode(pHandle=0x%x, pfOutAddr=0x%x, puiSamples_addr=0x%x, puiFinishFlag_addr=0x%x, piRemainFrame_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), pfOutAddr, puiSamples.GetAddr(), puiFinishflag.GetAddr(), piRemainFrame.GetAddr());
|
||||||
|
|
||||||
|
puiSamples = 0;
|
||||||
|
puiFinishflag = 1;
|
||||||
|
piRemainFrame = CELL_ATRAC_ALLDATA_IS_ON_MEMORY;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetStreamDataInfo()
|
int cellAtracGetStreamDataInfo(mem_ptr_t<CellAtracHandle> pHandle, mem32_t ppucWritePointer, mem32_t puiWritableByte, mem32_t puiReadPosition)
|
||||||
{
|
{
|
||||||
//UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetStreamDataInfo(pHandle=0x%x, ppucWritePointer_addr=0x%x, puiWritableByte_addr=0x%x, puiReadPosition_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), ppucWritePointer.GetAddr(), puiWritableByte.GetAddr(), puiReadPosition.GetAddr());
|
||||||
|
|
||||||
|
ppucWritePointer = pHandle->data.pucWorkMem_addr;
|
||||||
|
puiWritableByte = 0x1000;
|
||||||
|
puiReadPosition = 0;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracAddStreamData()
|
int cellAtracAddStreamData(mem_ptr_t<CellAtracHandle> pHandle, u32 uiAddByte)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracAddStreamData(pHandle=0x%x, uiAddByte=0x%x)", pHandle.GetAddr(), uiAddByte);
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetRemainFrame()
|
int cellAtracGetRemainFrame(mem_ptr_t<CellAtracHandle> pHandle, mem32_t piRemainFrame)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetRemainFrame(pHandle=0x%x, piRemainFrame_addr=0x%x)", pHandle.GetAddr(), piRemainFrame.GetAddr());
|
||||||
|
|
||||||
|
piRemainFrame = CELL_ATRAC_ALLDATA_IS_ON_MEMORY;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetVacantSize()
|
int cellAtracGetVacantSize(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiVacantSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetVacantSize(pHandle=0x%x, puiVacantSize_addr=0x%x)", pHandle.GetAddr(), puiVacantSize.GetAddr());
|
||||||
|
|
||||||
|
puiVacantSize = 0x1000;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracIsSecondBufferNeeded()
|
int cellAtracIsSecondBufferNeeded(mem_ptr_t<CellAtracHandle> pHandle)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracIsSecondBufferNeeded(pHandle=0x%x)", pHandle.GetAddr());
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetSecondBufferInfo()
|
int cellAtracGetSecondBufferInfo(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiReadPosition, mem32_t puiDataByte)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetSecondBufferInfo(pHandle=0x%x, puiReadPosition_addr=0x%x, puiDataByte_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), puiReadPosition.GetAddr(), puiDataByte.GetAddr());
|
||||||
|
|
||||||
|
puiReadPosition = 0;
|
||||||
|
puiDataByte = 0; // write to null block will occur
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracSetSecondBuffer()
|
int cellAtracSetSecondBuffer(mem_ptr_t<CellAtracHandle> pHandle, u32 pucSecondBufferAddr, u32 uiSecondBufferByte)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracSetSecondBuffer(pHandle=0x%x, pucSecondBufferAddr=0x%x, uiSecondBufferByte=0x%x)",
|
||||||
|
pHandle.GetAddr(), pucSecondBufferAddr, uiSecondBufferByte);
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetChannel()
|
int cellAtracGetChannel(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiChannel)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetChannel(pHandle=0x%x, puiChannel_addr=0x%x)", pHandle.GetAddr(), puiChannel.GetAddr());
|
||||||
|
|
||||||
|
puiChannel = 2;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetMaxSample()
|
int cellAtracGetMaxSample(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiMaxSample)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetMaxSample(pHandle=0x%x, puiMaxSample_addr=0x%x)", pHandle.GetAddr(), puiMaxSample.GetAddr());
|
||||||
|
|
||||||
|
puiMaxSample = 512;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetNextSample()
|
int cellAtracGetNextSample(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiNextSample)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetNextSample(pHandle=0x%x, puiNextSample_addr=0x%x)", pHandle.GetAddr(), puiNextSample.GetAddr());
|
||||||
|
|
||||||
|
puiNextSample = 0;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetSoundInfo()
|
int cellAtracGetSoundInfo(mem_ptr_t<CellAtracHandle> pHandle, mem32_t piEndSample, mem32_t piLoopStartSample, mem32_t piLoopEndSample)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetSoundInfo(pHandle=0x%x, piEndSample_addr=0x%x, piLoopStartSample_addr=0x%x, piLoopEndSample_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), piEndSample.GetAddr(), piLoopStartSample.GetAddr(), piLoopEndSample.GetAddr());
|
||||||
|
|
||||||
|
piEndSample = 0;
|
||||||
|
piLoopStartSample = 0;
|
||||||
|
piLoopEndSample = 0;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetNextDecodePosition()
|
int cellAtracGetNextDecodePosition(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiSamplePosition)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetNextDecodePosition(pHandle=0x%x, puiSamplePosition_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), puiSamplePosition.GetAddr());
|
||||||
|
|
||||||
|
puiSamplePosition = 0;
|
||||||
|
return CELL_ATRAC_ERROR_ALLDATA_WAS_DECODED;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cellAtracGetBitrate(mem_ptr_t<CellAtracHandle> pHandle, mem32_t puiBitrate)
|
||||||
|
{
|
||||||
|
cellAtrac.Error("cellAtracGetBitrate(pHandle=0x%x, puiBitrate_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), puiBitrate.GetAddr());
|
||||||
|
|
||||||
|
puiBitrate = 128;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetBitrate()
|
int cellAtracGetLoopInfo(mem_ptr_t<CellAtracHandle> pHandle, mem32_t piLoopNum, mem32_t puiLoopStatus)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetLoopInfo(pHandle=0x%x, piLoopNum_addr=0x%x, puiLoopStatus_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), piLoopNum.GetAddr(), puiLoopStatus.GetAddr());
|
||||||
|
|
||||||
|
piLoopNum = 0;
|
||||||
|
puiLoopStatus = 0;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetLoopInfo()
|
int cellAtracSetLoopNum(mem_ptr_t<CellAtracHandle> pHandle, int iLoopNum)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracSetLoopNum(pHandle=0x%x, iLoopNum=0x%x)", pHandle.GetAddr(), iLoopNum);
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracSetLoopNum()
|
int cellAtracGetBufferInfoForResetting(mem_ptr_t<CellAtracHandle> pHandle, u32 uiSample, mem_ptr_t<CellAtracBufferInfo> pBufferInfo)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetBufferInfoForResetting(pHandle=0x%x, uiSample=0x%x, pBufferInfo_addr=0x%x)",
|
||||||
|
pHandle.GetAddr(), uiSample, pBufferInfo.GetAddr());
|
||||||
|
|
||||||
|
pBufferInfo->pucWriteAddr = pHandle->data.pucWorkMem_addr;
|
||||||
|
pBufferInfo->uiWritableByte = 0x1000;
|
||||||
|
pBufferInfo->uiMinWriteByte = 0;
|
||||||
|
pBufferInfo->uiReadPosition = 0;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracGetBufferInfoForResetting()
|
int cellAtracResetPlayPosition(mem_ptr_t<CellAtracHandle> pHandle, u32 uiSample, u32 uiWriteByte)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracResetPlayPosition(pHandle=0x%x, uiSample=0x%x, uiWriteByte=0x%x)",
|
||||||
|
pHandle.GetAddr(), uiSample, uiWriteByte);
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cellAtracResetPlayPosition()
|
int cellAtracGetInternalErrorInfo(mem_ptr_t<CellAtracHandle> pHandle, mem32_t piResult)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
cellAtrac.Error("cellAtracGetInternalErrorInfo(pHandle=0x%x, piResult_addr=0x%x)",
|
||||||
return CELL_OK;
|
pHandle.GetAddr(), piResult.GetAddr());
|
||||||
}
|
|
||||||
|
|
||||||
int cellAtracGetInternalErrorInfo()
|
piResult = 0;
|
||||||
{
|
|
||||||
UNIMPLEMENTED_FUNC(cellAtrac);
|
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,3 +26,34 @@ enum
|
||||||
CELL_ATRAC_ERROR_ILLEGAL_PPU_THREAD_PRIORITY = 0x80610381,
|
CELL_ATRAC_ERROR_ILLEGAL_PPU_THREAD_PRIORITY = 0x80610381,
|
||||||
CELL_ATRAC_ERROR_ILLEGAL_SPU_THREAD_PRIORITY = 0x80610382,
|
CELL_ATRAC_ERROR_ILLEGAL_SPU_THREAD_PRIORITY = 0x80610382,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Remain Frame
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CELL_ATRAC_ALLDATA_IS_ON_MEMORY = -1,
|
||||||
|
CELL_ATRAC_NONLOOP_STREAM_DATA_IS_ON_MEMORY = -2,
|
||||||
|
CELL_ATRAC_LOOP_STREAM_DATA_IS_ON_MEMORY = -3,
|
||||||
|
};
|
||||||
|
|
||||||
|
union CellAtracHandle
|
||||||
|
{
|
||||||
|
u8 uiWorkMem[512];
|
||||||
|
struct AtracHandle
|
||||||
|
{
|
||||||
|
u32 pucWorkMem_addr;
|
||||||
|
} data;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CellAtracBufferInfo
|
||||||
|
{
|
||||||
|
be_t<u32> pucWriteAddr;
|
||||||
|
be_t<u32> uiWritableByte;
|
||||||
|
be_t<u32> uiMinWriteByte;
|
||||||
|
be_t<u32> uiReadPosition;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CellAtracExtRes
|
||||||
|
{
|
||||||
|
be_t<u32> pSpurs_addr;
|
||||||
|
u8 priority[8];
|
||||||
|
};
|
|
@ -58,7 +58,12 @@ int UTF16stoUTF8s(mem16_ptr_t utf16, mem64_t utf16_len, mem8_ptr_t utf8, mem64_t
|
||||||
|
|
||||||
int jstrchk(mem8_ptr_t jstr)
|
int jstrchk(mem8_ptr_t jstr)
|
||||||
{
|
{
|
||||||
cellL10n.Log("jstrchk(jstr_addr=0x%x [%s])", jstr.GetAddr(), "omitted" /*Memory.ReadString(jstr.GetAddr()).wx_str()*/);
|
if (!jstr.IsGood())
|
||||||
|
cellL10n.Error("jstrchk(jstr_addr=0x%x): invalid address", jstr.GetAddr());
|
||||||
|
else if (jstr[0])
|
||||||
|
cellL10n.Log("jstrchk(jstr_addr=0x%x): utf-8: [%s]", jstr.GetAddr(), Memory.ReadString(jstr.GetAddr()).wx_str());
|
||||||
|
else
|
||||||
|
cellL10n.Log("jstrchk(jstr_addr=0x%x): empty string", jstr.GetAddr());
|
||||||
|
|
||||||
return L10N_STR_UTF8;
|
return L10N_STR_UTF8;
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,6 +158,10 @@ int cellSysmoduleSetMemcontainer(u32 ct_id)
|
||||||
|
|
||||||
int cellSysmoduleLoadModule(u16 id)
|
int cellSysmoduleLoadModule(u16 id)
|
||||||
{
|
{
|
||||||
|
if (id == 0xf054)
|
||||||
|
{
|
||||||
|
cellSysmodule.Error("cellSysmoduleLoadModule: TODO: CELL_SYSMODULE_LIBATRAC3MULTI");
|
||||||
|
}
|
||||||
cellSysmodule.Warning("cellSysmoduleLoadModule(%s)", wxString(getModuleName(id)).wx_str());
|
cellSysmodule.Warning("cellSysmoduleLoadModule(%s)", wxString(getModuleName(id)).wx_str());
|
||||||
Module* m = GetModuleById(id);
|
Module* m = GetModuleById(id);
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ int sys_lwmutex_t::trylock(be_t<u32> tid)
|
||||||
if (mutex.unlock(owner_tid, owner_tid) != SMR_OK) // check free value
|
if (mutex.unlock(owner_tid, owner_tid) != SMR_OK) // check free value
|
||||||
{
|
{
|
||||||
owner_tid = mutex.GetOwner();
|
owner_tid = mutex.GetOwner();
|
||||||
if (CPUThread* tt = Emu.GetCPU().GetThread(owner_tid))
|
/*if (CPUThread* tt = Emu.GetCPU().GetThread(owner_tid))
|
||||||
{
|
{
|
||||||
if (!tt->IsAlive())
|
if (!tt->IsAlive())
|
||||||
{
|
{
|
||||||
|
@ -227,7 +227,7 @@ int sys_lwmutex_t::trylock(be_t<u32> tid)
|
||||||
mutex.unlock(owner_tid, tid);
|
mutex.unlock(owner_tid, tid);
|
||||||
recursive_count = 1;
|
recursive_count = 1;
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*while ((attribute.ToBE() & se32(SYS_SYNC_ATTR_RECURSIVE_MASK)) == 0)
|
/*while ((attribute.ToBE() & se32(SYS_SYNC_ATTR_RECURSIVE_MASK)) == 0)
|
||||||
|
@ -272,7 +272,7 @@ int sys_lwmutex_t::unlock(be_t<u32> tid)
|
||||||
{
|
{
|
||||||
if (!recursive_count || (recursive_count.ToBE() != se32(1) && (attribute.ToBE() & se32(SYS_SYNC_NOT_RECURSIVE))))
|
if (!recursive_count || (recursive_count.ToBE() != se32(1) && (attribute.ToBE() & se32(SYS_SYNC_NOT_RECURSIVE))))
|
||||||
{
|
{
|
||||||
sc_lwmutex.Error("sys_lwmutex_t::unlock(%d): wrong recursive value (%d)", (u32)sleep_queue, (u32)recursive_count);
|
sc_lwmutex.Error("sys_lwmutex_t::unlock(%d): wrong recursive value fixed (%d)", (u32)sleep_queue, (u32)recursive_count);
|
||||||
recursive_count = 1;
|
recursive_count = 1;
|
||||||
}
|
}
|
||||||
recursive_count -= 1;
|
recursive_count -= 1;
|
||||||
|
|
|
@ -358,7 +358,7 @@ void Emulator::Resume()
|
||||||
m_status = Running;
|
m_status = Running;
|
||||||
|
|
||||||
CheckStatus();
|
CheckStatus();
|
||||||
if(IsRunning() && Ini.CPUDecoderMode.GetValue() != 1) GetCPU().Exec();
|
//if(IsRunning() && Ini.CPUDecoderMode.GetValue() != 1) GetCPU().Exec();
|
||||||
#ifndef QT_UI
|
#ifndef QT_UI
|
||||||
wxGetApp().SendDbgCommand(DID_RESUMED_EMU);
|
wxGetApp().SendDbgCommand(DID_RESUMED_EMU);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue