cellAtracMulti stub added

This commit is contained in:
Nekotekina 2015-07-28 04:38:03 +03:00
parent a12220d234
commit 3cc0383db7
7 changed files with 313 additions and 32 deletions

View file

@ -4,6 +4,7 @@
extern Module cellAdec;
extern Module cellAtrac;
extern Module cellAtracMulti;
extern Module cellAudio;
extern Module cellAvconfExt;
extern Module cellCamera;
@ -19,7 +20,6 @@ extern Module cellGifDec;
extern Module cellJpgDec;
extern Module cellL10n;
extern Module cellMic;
extern Module cellSysutil;
extern Module cellNetCtl;
extern Module cellOvis;
extern Module cellPamf;
@ -30,7 +30,6 @@ extern Module cellRudp;
extern Module cellSail;
extern Module cellScreenshot;
extern Module cellSearch;
extern Module cellSysutil;
extern Module cellSpurs;
extern Module cellSpursJq;
extern Module cellSubdisplay;
@ -166,7 +165,7 @@ static const g_module_list[] =
{ 0xf034, "cellSailRec", nullptr },
{ 0xf035, "sceNpTrophy", &sceNpTrophy },
{ 0xf053, "cellAdecAt3multi", nullptr },
{ 0xf054, "cellLibatrac3multi", nullptr },
{ 0xf054, "cellAtracMulti", &cellAtracMulti },
{ -1, "cellSysmodule", &cellSysmodule },
{ -1, "libmixer", &libmixer },

View file

@ -3,8 +3,6 @@
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
extern Module cellAtrac;
#include "cellAtrac.h"
s32 cellAtracSetDataAndGetMemSize(vm::ptr<CellAtracHandle> pHandle, vm::ptr<u8> pucBufferAddr, u32 uiReadByte, u32 uiBufferByte, vm::ptr<u32> puiWorkMemByte)

View file

@ -28,32 +28,6 @@ enum
CELL_ATRAC_ERROR_ILLEGAL_SPU_THREAD_PRIORITY = 0x80610382,
};
enum
{
CELL_ATRACMULTI_ERROR_API_FAIL = 0x80610b01,
CELL_ATRACMULTI_ERROR_READSIZE_OVER_BUFFER = 0x80610b11,
CELL_ATRACMULTI_ERROR_UNKNOWN_FORMAT = 0x80610b12,
CELL_ATRACMULTI_ERROR_READSIZE_IS_TOO_SMALL = 0x80610b13,
CELL_ATRACMULTI_ERROR_ILLEGAL_SAMPLING_RATE = 0x80610b14,
CELL_ATRACMULTI_ERROR_ILLEGAL_DATA = 0x80610b15,
CELL_ATRACMULTI_ERROR_NO_DECODER = 0x80610b21,
CELL_ATRACMULTI_ERROR_UNSET_DATA = 0x80610b22,
CELL_ATRACMULTI_ERROR_DECODER_WAS_CREATED = 0x80610b23,
CELL_ATRACMULTI_ERROR_ALLDATA_WAS_DECODED = 0x80610b31,
CELL_ATRACMULTI_ERROR_NODATA_IN_BUFFER = 0x80610b32,
CELL_ATRACMULTI_ERROR_NOT_ALIGNED_OUT_BUFFER = 0x80610b33,
CELL_ATRACMULTI_ERROR_NEED_SECOND_BUFFER = 0x80610b34,
CELL_ATRACMULTI_ERROR_ALLDATA_IS_ONMEMORY = 0x80610b41,
CELL_ATRACMULTI_ERROR_ADD_DATA_IS_TOO_BIG = 0x80610b42,
CELL_ATRACMULTI_ERROR_NONEED_SECOND_BUFFER = 0x80610b51,
CELL_ATRACMULTI_ERROR_UNSET_LOOP_NUM = 0x80610b61,
CELL_ATRACMULTI_ERROR_ILLEGAL_SAMPLE = 0x80610b71,
CELL_ATRACMULTI_ERROR_ILLEGAL_RESET_BYTE = 0x80610b72,
CELL_ATRACMULTI_ERROR_ILLEGAL_PPU_THREAD_PRIORITY = 0x80610b81,
CELL_ATRACMULTI_ERROR_ILLEGAL_SPU_THREAD_PRIORITY = 0x80610b82,
CELL_ATRACMULTI_ERROR_API_PARAMETER = 0x80610b91,
};
// Remain Frame
enum : s32
{
@ -62,7 +36,7 @@ enum : s32
CELL_ATRAC_LOOP_STREAM_DATA_IS_ON_MEMORY = -3,
};
union CellAtracHandle
struct set_alignment(8) CellAtracHandle
{
vm::ptr<u8> pucWorkMem;
// ...
@ -83,3 +57,5 @@ struct CellAtracExtRes
vm::ptr<struct CellSpurs> pSpurs;
u8 priority[8];
};
extern Module cellAtrac;

View file

@ -0,0 +1,238 @@
#include "stdafx.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "cellAtracMulti.h"
s32 cellAtracMultiSetDataAndGetMemSize(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u8> pucBufferAddr, u32 uiReadByte, u32 uiBufferByte, u32 uiOutputChNum, vm::ptr<s32> piTrackArray, vm::ptr<u32> puiWorkMemByte)
{
cellAtracMulti.Warning("cellAtracMultiSetDataAndGetMemSize(pHandle=*0x%x, pucBufferAddr=*0x%x, uiReadByte=0x%x, uiBufferByte=0x%x, uiOutputChNum=%d, piTrackArray=*0x%x, puiWorkMemByte=*0x%x)",
pHandle, pucBufferAddr, uiReadByte, uiBufferByte, uiOutputChNum, piTrackArray, puiWorkMemByte);
*puiWorkMemByte = 0x1000;
return CELL_OK;
}
s32 cellAtracMultiCreateDecoder(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u8> pucWorkMem, u32 uiPpuThreadPriority, u32 uiSpuThreadPriority)
{
cellAtracMulti.Warning("cellAtracMultiCreateDecoder(pHandle=*0x%x, pucWorkMem=*0x%x, uiPpuThreadPriority=%d, uiSpuThreadPriority=%d)", pHandle, pucWorkMem, uiPpuThreadPriority, uiSpuThreadPriority);
pHandle->pucWorkMem = pucWorkMem;
return CELL_OK;
}
s32 cellAtracMultiCreateDecoderExt(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u8> pucWorkMem, u32 uiPpuThreadPriority, vm::ptr<CellAtracMultiExtRes> pExtRes)
{
cellAtracMulti.Warning("cellAtracMultiCreateDecoderExt(pHandle=*0x%x, pucWorkMem=*0x%x, uiPpuThreadPriority=%d, pExtRes=*0x%x)", pHandle, pucWorkMem, uiPpuThreadPriority, pExtRes);
pHandle->pucWorkMem = pucWorkMem;
return CELL_OK;
}
s32 cellAtracMultiDeleteDecoder(vm::ptr<CellAtracMultiHandle> pHandle)
{
cellAtracMulti.Warning("cellAtracMultiDeleteDecoder(pHandle=*0x%x)", pHandle);
return CELL_OK;
}
s32 cellAtracMultiDecode(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<float> pfOutAddr, vm::ptr<u32> puiSamples, vm::ptr<u32> puiFinishflag, vm::ptr<s32> piRemainFrame)
{
cellAtracMulti.Warning("cellAtracMultiDecode(pHandle=*0x%x, pfOutAddr=*0x%x, puiSamples=*0x%x, puiFinishFlag=*0x%x, piRemainFrame=*0x%x)", pHandle, pfOutAddr, puiSamples, puiFinishflag, piRemainFrame);
*puiSamples = 0;
*puiFinishflag = 1;
*piRemainFrame = CELL_ATRACMULTI_ALLDATA_IS_ON_MEMORY;
return CELL_OK;
}
s32 cellAtracMultiGetStreamDataInfo(vm::ptr<CellAtracMultiHandle> pHandle, vm::pptr<u8> ppucWritePointer, vm::ptr<u32> puiWritableByte, vm::ptr<u32> puiReadPosition)
{
cellAtracMulti.Warning("cellAtracMultiGetStreamDataInfo(pHandle=*0x%x, ppucWritePointer=**0x%x, puiWritableByte=*0x%x, puiReadPosition=*0x%x)", pHandle, ppucWritePointer, puiWritableByte, puiReadPosition);
*ppucWritePointer = pHandle->pucWorkMem;
*puiWritableByte = 0x1000;
*puiReadPosition = 0;
return CELL_OK;
}
s32 cellAtracMultiAddStreamData(vm::ptr<CellAtracMultiHandle> pHandle, u32 uiAddByte)
{
cellAtracMulti.Warning("cellAtracMultiAddStreamData(pHandle=*0x%x, uiAddByte=0x%x)", pHandle, uiAddByte);
return CELL_OK;
}
s32 cellAtracMultiGetRemainFrame(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<s32> piRemainFrame)
{
cellAtracMulti.Warning("cellAtracMultiGetRemainFrame(pHandle=*0x%x, piRemainFrame=*0x%x)", pHandle, piRemainFrame);
*piRemainFrame = CELL_ATRACMULTI_ALLDATA_IS_ON_MEMORY;
return CELL_OK;
}
s32 cellAtracMultiGetVacantSize(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiVacantSize)
{
cellAtracMulti.Warning("cellAtracMultiGetVacantSize(pHandle=*0x%x, puiVacantSize=*0x%x)", pHandle, puiVacantSize);
*puiVacantSize = 0x1000;
return CELL_OK;
}
s32 cellAtracMultiIsSecondBufferNeeded(vm::ptr<CellAtracMultiHandle> pHandle)
{
cellAtracMulti.Warning("cellAtracMultiIsSecondBufferNeeded(pHandle=*0x%x)", pHandle);
return 0;
}
s32 cellAtracMultiGetSecondBufferInfo(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiReadPosition, vm::ptr<u32> puiDataByte)
{
cellAtracMulti.Warning("cellAtracMultiGetSecondBufferInfo(pHandle=*0x%x, puiReadPosition=*0x%x, puiDataByte=*0x%x)", pHandle, puiReadPosition, puiDataByte);
*puiReadPosition = 0;
*puiDataByte = 0; // write to null block will occur
return CELL_OK;
}
s32 cellAtracMultiSetSecondBuffer(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u8> pucSecondBufferAddr, u32 uiSecondBufferByte)
{
cellAtracMulti.Warning("cellAtracMultiSetSecondBuffer(pHandle=*0x%x, pucSecondBufferAddr=*0x%x, uiSecondBufferByte=0x%x)", pHandle, pucSecondBufferAddr, uiSecondBufferByte);
return CELL_OK;
}
s32 cellAtracMultiGetChannel(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiChannel)
{
cellAtracMulti.Warning("cellAtracMultiGetChannel(pHandle=*0x%x, puiChannel=*0x%x)", pHandle, puiChannel);
*puiChannel = 2;
return CELL_OK;
}
s32 cellAtracMultiGetMaxSample(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiMaxSample)
{
cellAtracMulti.Warning("cellAtracMultiGetMaxSample(pHandle=*0x%x, puiMaxSample=*0x%x)", pHandle, puiMaxSample);
*puiMaxSample = 512;
return CELL_OK;
}
s32 cellAtracMultiGetNextSample(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiNextSample)
{
cellAtracMulti.Warning("cellAtracMultiGetNextSample(pHandle=*0x%x, puiNextSample=*0x%x)", pHandle, puiNextSample);
*puiNextSample = 0;
return CELL_OK;
}
s32 cellAtracMultiGetSoundInfo(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<s32> piEndSample, vm::ptr<s32> piLoopStartSample, vm::ptr<s32> piLoopEndSample)
{
cellAtracMulti.Warning("cellAtracMultiGetSoundInfo(pHandle=*0x%x, piEndSample=*0x%x, piLoopStartSample=*0x%x, piLoopEndSample=*0x%x)", pHandle, piEndSample, piLoopStartSample, piLoopEndSample);
*piEndSample = 0;
*piLoopStartSample = 0;
*piLoopEndSample = 0;
return CELL_OK;
}
s32 cellAtracMultiGetNextDecodePosition(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiSamplePosition)
{
cellAtracMulti.Warning("cellAtracMultiGetNextDecodePosition(pHandle=*0x%x, puiSamplePosition=*0x%x)", pHandle, puiSamplePosition);
*puiSamplePosition = 0;
return CELL_ATRACMULTI_ERROR_ALLDATA_WAS_DECODED;
}
s32 cellAtracMultiGetBitrate(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<u32> puiBitrate)
{
cellAtracMulti.Warning("cellAtracMultiGetBitrate(pHandle=*0x%x, puiBitrate=*0x%x)", pHandle, puiBitrate);
*puiBitrate = 128;
return CELL_OK;
}
s32 cellAtracMultiGetTrackArray(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<s32> piTrackArray)
{
cellAtracMulti.Error("cellAtracMultiGetTrackArray(pHandle=*0x%x, piTrackArray=*0x%x)", pHandle, piTrackArray);
return CELL_OK;
}
s32 cellAtracMultiGetLoopInfo(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<s32> piLoopNum, vm::ptr<u32> puiLoopStatus)
{
cellAtracMulti.Warning("cellAtracMultiGetLoopInfo(pHandle=*0x%x, piLoopNum=*0x%x, puiLoopStatus=*0x%x)", pHandle, piLoopNum, puiLoopStatus);
*piLoopNum = 0;
*puiLoopStatus = 0;
return CELL_OK;
}
s32 cellAtracMultiSetLoopNum(vm::ptr<CellAtracMultiHandle> pHandle, s32 iLoopNum)
{
cellAtracMulti.Warning("cellAtracMultiSetLoopNum(pHandle=*0x%x, iLoopNum=%d)", pHandle, iLoopNum);
return CELL_OK;
}
s32 cellAtracMultiGetBufferInfoForResetting(vm::ptr<CellAtracMultiHandle> pHandle, u32 uiSample, vm::ptr<CellAtracMultiBufferInfo> pBufferInfo)
{
cellAtracMulti.Warning("cellAtracMultiGetBufferInfoForResetting(pHandle=*0x%x, uiSample=0x%x, pBufferInfo=*0x%x)", pHandle, uiSample, pBufferInfo);
pBufferInfo->pucWriteAddr = pHandle->pucWorkMem;
pBufferInfo->uiWritableByte = 0x1000;
pBufferInfo->uiMinWriteByte = 0;
pBufferInfo->uiReadPosition = 0;
return CELL_OK;
}
s32 cellAtracMultiResetPlayPosition(vm::ptr<CellAtracMultiHandle> pHandle, u32 uiSample, u32 uiWriteByte, vm::ptr<s32> piTrackArray)
{
cellAtracMulti.Warning("cellAtracMultiResetPlayPosition(pHandle=*0x%x, uiSample=0x%x, uiWriteByte=0x%x, piTrackArray=*0x%x)", pHandle, uiSample, uiWriteByte, piTrackArray);
return CELL_OK;
}
s32 cellAtracMultiGetInternalErrorInfo(vm::ptr<CellAtracMultiHandle> pHandle, vm::ptr<s32> piResult)
{
cellAtracMulti.Warning("cellAtracMultiGetInternalErrorInfo(pHandle=*0x%x, piResult=*0x%x)", pHandle, piResult);
*piResult = 0;
return CELL_OK;
}
Module cellAtracMulti("cellAtrac", []()
{
REG_FUNC(cellAtracMulti, cellAtracMultiSetDataAndGetMemSize);
REG_FUNC(cellAtracMulti, cellAtracMultiCreateDecoder);
REG_FUNC(cellAtracMulti, cellAtracMultiCreateDecoderExt);
REG_FUNC(cellAtracMulti, cellAtracMultiDeleteDecoder);
REG_FUNC(cellAtracMulti, cellAtracMultiDecode);
REG_FUNC(cellAtracMulti, cellAtracMultiGetStreamDataInfo);
REG_FUNC(cellAtracMulti, cellAtracMultiAddStreamData);
REG_FUNC(cellAtracMulti, cellAtracMultiGetRemainFrame);
REG_FUNC(cellAtracMulti, cellAtracMultiGetVacantSize);
REG_FUNC(cellAtracMulti, cellAtracMultiIsSecondBufferNeeded);
REG_FUNC(cellAtracMulti, cellAtracMultiGetSecondBufferInfo);
REG_FUNC(cellAtracMulti, cellAtracMultiSetSecondBuffer);
REG_FUNC(cellAtracMulti, cellAtracMultiGetChannel);
REG_FUNC(cellAtracMulti, cellAtracMultiGetMaxSample);
REG_FUNC(cellAtracMulti, cellAtracMultiGetNextSample);
REG_FUNC(cellAtracMulti, cellAtracMultiGetSoundInfo);
REG_FUNC(cellAtracMulti, cellAtracMultiGetNextDecodePosition);
REG_FUNC(cellAtracMulti, cellAtracMultiGetBitrate);
REG_FUNC(cellAtracMulti, cellAtracMultiGetTrackArray);
REG_FUNC(cellAtracMulti, cellAtracMultiGetLoopInfo);
REG_FUNC(cellAtracMulti, cellAtracMultiSetLoopNum);
REG_FUNC(cellAtracMulti, cellAtracMultiGetBufferInfoForResetting);
REG_FUNC(cellAtracMulti, cellAtracMultiResetPlayPosition);
REG_FUNC(cellAtracMulti, cellAtracMultiGetInternalErrorInfo);
});

View file

@ -0,0 +1,62 @@
#pragma once
namespace vm { using namespace ps3; }
// Return Codes
enum
{
CELL_ATRACMULTI_ERROR_API_FAIL = 0x80610b01,
CELL_ATRACMULTI_ERROR_READSIZE_OVER_BUFFER = 0x80610b11,
CELL_ATRACMULTI_ERROR_UNKNOWN_FORMAT = 0x80610b12,
CELL_ATRACMULTI_ERROR_READSIZE_IS_TOO_SMALL = 0x80610b13,
CELL_ATRACMULTI_ERROR_ILLEGAL_SAMPLING_RATE = 0x80610b14,
CELL_ATRACMULTI_ERROR_ILLEGAL_DATA = 0x80610b15,
CELL_ATRACMULTI_ERROR_NO_DECODER = 0x80610b21,
CELL_ATRACMULTI_ERROR_UNSET_DATA = 0x80610b22,
CELL_ATRACMULTI_ERROR_DECODER_WAS_CREATED = 0x80610b23,
CELL_ATRACMULTI_ERROR_ALLDATA_WAS_DECODED = 0x80610b31,
CELL_ATRACMULTI_ERROR_NODATA_IN_BUFFER = 0x80610b32,
CELL_ATRACMULTI_ERROR_NOT_ALIGNED_OUT_BUFFER = 0x80610b33,
CELL_ATRACMULTI_ERROR_NEED_SECOND_BUFFER = 0x80610b34,
CELL_ATRACMULTI_ERROR_ALLDATA_IS_ONMEMORY = 0x80610b41,
CELL_ATRACMULTI_ERROR_ADD_DATA_IS_TOO_BIG = 0x80610b42,
CELL_ATRACMULTI_ERROR_NONEED_SECOND_BUFFER = 0x80610b51,
CELL_ATRACMULTI_ERROR_UNSET_LOOP_NUM = 0x80610b61,
CELL_ATRACMULTI_ERROR_ILLEGAL_SAMPLE = 0x80610b71,
CELL_ATRACMULTI_ERROR_ILLEGAL_RESET_BYTE = 0x80610b72,
CELL_ATRACMULTI_ERROR_ILLEGAL_PPU_THREAD_PRIORITY = 0x80610b81,
CELL_ATRACMULTI_ERROR_ILLEGAL_SPU_THREAD_PRIORITY = 0x80610b82,
CELL_ATRACMULTI_ERROR_API_PARAMETER = 0x80610b91,
};
// Remain Frame
enum : s32
{
CELL_ATRACMULTI_ALLDATA_IS_ON_MEMORY = -1,
CELL_ATRACMULTI_NONLOOP_STREAM_DATA_IS_ON_MEMORY = -2,
CELL_ATRACMULTI_LOOP_STREAM_DATA_IS_ON_MEMORY = -3,
};
struct set_alignment(8) CellAtracMultiHandle
{
vm::ptr<u8> pucWorkMem;
// ...
};
CHECK_MAX_SIZE(CellAtracMultiHandle, 512);
struct CellAtracMultiBufferInfo
{
vm::ptr<u8> pucWriteAddr;
be_t<u32> uiWritableByte;
be_t<u32> uiMinWriteByte;
be_t<u32> uiReadPosition;
};
struct CellAtracMultiExtRes
{
vm::ptr<struct CellSpurs> pSpurs;
u8 priority[8];
};
extern Module cellAtracMulti;

View file

@ -44,6 +44,7 @@
<ClCompile Include="Emu\RSX\GL\GLCommonDecompiler.cpp" />
<ClCompile Include="Emu\SysCalls\lv2\sys_dbg.cpp" />
<ClCompile Include="Emu\SysCalls\lv2\sys_fs.cpp" />
<ClCompile Include="Emu\SysCalls\Modules\cellAtracMulti.cpp" />
<ClCompile Include="Emu\SysCalls\Modules\cellFs.cpp" />
<ClCompile Include="Emu\SysCalls\Modules\cellSpursSpu.cpp" />
<ClCompile Include="Crypto\aes.cpp" />
@ -524,6 +525,7 @@
<ClInclude Include="Emu\SysCalls\Modules.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAdec.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAtrac.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAtracMulti.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAudio.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAudioIn.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAudioOut.h" />

View file

@ -884,6 +884,9 @@
<ClCompile Include="..\Utilities\Semaphore.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellAtracMulti.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -1738,5 +1741,8 @@
<ClInclude Include="..\Utilities\Semaphore.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellAtracMulti.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
</ItemGroup>
</Project>