mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
Small fix (cellAudio, fsAioRead)
libsynth2 draft
This commit is contained in:
parent
e2e8980194
commit
b6d8f1e028
@ -39,11 +39,6 @@ enum
|
||||
CELL_SND3_ERROR_RESERVEDVOICE = 0x8031030e,
|
||||
CELL_SND3_ERROR_REQUESTQUEFULL = 0x8031030f,
|
||||
CELL_SND3_ERROR_OUTPUTMODE = 0x80310310,
|
||||
|
||||
//libsynt2 Error Codes
|
||||
CELL_SOUND_SYNTH2_ERROR_FATAL = 0x80310201,
|
||||
CELL_SOUND_SYNTH2_ERROR_INVALID_PARAMETER = 0x80310202,
|
||||
CELL_SOUND_SYNTH2_ERROR_ALREADY_INITIALIZED = 0x80310203,
|
||||
};
|
||||
|
||||
// constants
|
||||
@ -175,14 +170,3 @@ struct CellSnd3RequestQueueCtx
|
||||
void *rearQueue;
|
||||
be_t<u32> rearQueueSize;
|
||||
};
|
||||
|
||||
//libsynt2 datatypes
|
||||
struct CellSoundSynth2EffectAttr
|
||||
{
|
||||
be_t<u16> core;
|
||||
be_t<u16> mode;
|
||||
be_t<s16> depth_L;
|
||||
be_t<s16> depth_R;
|
||||
be_t<u16> delay;
|
||||
be_t<u16> feedback;
|
||||
};
|
||||
|
@ -7,8 +7,7 @@
|
||||
#include "Emu/Audio/AudioDumper.h"
|
||||
|
||||
void cellAudio_init();
|
||||
void cellAudio_unload();
|
||||
Module cellAudio(0x0011, cellAudio_init, nullptr, cellAudio_unload);
|
||||
Module cellAudio(0x0011, cellAudio_init);
|
||||
|
||||
static SMutexGeneral audioMutex;
|
||||
|
||||
@ -57,8 +56,8 @@ int cellAudioInit()
|
||||
uint oal_buffer_offset = 0;
|
||||
uint oal_buffer_size = sizeof(buffer) / sizeof(float);
|
||||
std::unique_ptr<u16[]> oal_buffer[32];
|
||||
SQueue<u16*, sizeof(oal_buffer) / sizeof(oal_buffer[0])> queue;
|
||||
for (u32 i = 0; i < queue.GetSize(); i++)
|
||||
SQueue<u16*, 31> queue;
|
||||
for (u32 i = 0; i < sizeof(oal_buffer) / sizeof(oal_buffer[0]); i++)
|
||||
{
|
||||
oal_buffer[i] = std::unique_ptr<u16[]>(new u16[oal_buffer_size]);
|
||||
memset(oal_buffer[i].get(), 0, oal_buffer_size * sizeof(u16));
|
||||
@ -118,7 +117,7 @@ int cellAudioInit()
|
||||
|
||||
m_config.counter++;
|
||||
|
||||
const u32 oal_pos = m_config.counter % queue.GetSize();
|
||||
const u32 oal_pos = m_config.counter % (sizeof(oal_buffer) / sizeof(oal_buffer[0]));
|
||||
|
||||
if (Emu.IsPaused())
|
||||
{
|
||||
@ -1039,110 +1038,6 @@ s32 cellSnd3SMFGetKeyOnID() //u32 smfID, u32 midiChannel, u32 *keyOnID
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
//*libsynth2 Functions, NON active in this moment*//
|
||||
|
||||
s32 cellSoundSynth2Config(s16 param, s32 value)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2Init( s16 flag)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2Exit()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetParam(u16 register, u16 value)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
//TODO
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2GetParam() //u16 register
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return CELL_OK; //it's NOT real value
|
||||
//TODO
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetSwitch(u16 register, u32 value)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
//TODO
|
||||
}
|
||||
|
||||
u32 cellSoundSynth2GetSwitch() //u16 register
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return CELL_OK; //it's NOT real value
|
||||
//TODO
|
||||
}
|
||||
|
||||
u32 cellSoundSynth2SetAddr(u16 register, u32 value)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 cellSoundSynth2GetAddr() //u16 register
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return CELL_OK; //it's NOT real value
|
||||
//TODO
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2SetEffectAttr() //s16 bus, CellSoundSynth2EffectAttr *attr
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2SetEffectMode() //s16 bus, CellSoundSynth2EffectAttr *attr
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetCoreAttr(u16 entry, u16 value)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
//TODO
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2Generate() //u16 samples, float *left_buffer, float *right_buffer, float *left_rear, float *right_rear
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 cellSoundSynth2VoiceTrans() //s16 channel, u16 mode, u8 *m_addr, u32 s_addr, u32 size
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2Note2Pitch() //u16 center_note, u16 center_fine, u16 note, s16 fine
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return CELL_OK; //it's NOT real value
|
||||
//TODO
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2Pitch2Note() //u16 center_note, u16 center_fine, u16 pitch
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellAudio);
|
||||
return CELL_OK; //it's NOT real value
|
||||
//TODO
|
||||
}
|
||||
|
||||
|
||||
void cellAudio_init()
|
||||
{
|
||||
cellAudio.AddFunc(0x0b168f92, cellAudioInit);
|
||||
@ -1161,11 +1056,4 @@ void cellAudio_init()
|
||||
cellAudio.AddFunc(0xdab029aa, cellAudioAddData);
|
||||
cellAudio.AddFunc(0xe4046afe, cellAudioGetPortBlockTag);
|
||||
cellAudio.AddFunc(0xff3626fd, cellAudioRemoveNotifyEventQueue);
|
||||
|
||||
//TODO: Find addresses for libmixer, libsnd3 and libsynth2 functions
|
||||
}
|
||||
|
||||
void cellAudio_unload()
|
||||
{
|
||||
//StaticFinalize();
|
||||
}
|
@ -940,4 +940,8 @@ void libmixer_init()
|
||||
0xffffffff78030020,
|
||||
0xf000000048000000, // b
|
||||
);
|
||||
|
||||
REG_SUB(libmixer, "surmxUti", cellSurMixerUtilGetLevelFromDB);
|
||||
REG_SUB(libmixer, "surmxUti", cellSurMixerUtilGetLevelFromDBIndex);
|
||||
REG_SUB(libmixer, "surmxUti", cellSurMixerUtilNoteToRatio);
|
||||
}
|
159
rpcs3/Emu/SysCalls/Modules/libsynth2.cpp
Normal file
159
rpcs3/Emu/SysCalls/Modules/libsynth2.cpp
Normal file
@ -0,0 +1,159 @@
|
||||
#include "stdafx.h"
|
||||
#include "Emu/SysCalls/SysCalls.h"
|
||||
#include "Emu/SysCalls/SC_FUNC.h"
|
||||
|
||||
void libsynth2_init();
|
||||
Module libsynth2("libsynth2", libsynth2_init);
|
||||
|
||||
#include "libsynth2.h"
|
||||
|
||||
int cellSoundSynth2Config(s16 param, int value)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Config(param=%d, value=%d)", param, value);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellSoundSynth2Init(s16 flag)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Init(flag=%d)", flag);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellSoundSynth2Exit()
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Exit()");
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetParam(u16 reg, u16 value)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetParam(register=0x%x, value=0x%x)", reg, value);
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2GetParam(u16 reg)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2GetParam(register=0x%x) -> 0", reg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetSwitch(u16 reg, u32 value)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetSwitch(register=0x%x, value=0x%x)", reg, value);
|
||||
}
|
||||
|
||||
u32 cellSoundSynth2GetSwitch(u16 reg)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2GetSwitch(register=0x%x) -> 0", reg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cellSoundSynth2SetAddr(u16 reg, u32 value)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetAddr(register=0x%x, value=0x%x)", reg, value);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
u32 cellSoundSynth2GetAddr(u16 reg)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2GetAddr(register=0x%x) -> 0", reg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cellSoundSynth2SetEffectAttr(s16 bus, mem_ptr_t<CellSoundSynth2EffectAttr> attr)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetEffectAttr(bus=%d, attr_addr=0x%x)", bus, attr.GetAddr());
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellSoundSynth2SetEffectMode(s16 bus, mem_ptr_t<CellSoundSynth2EffectAttr> attr)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetEffectMode(bus=%d, attr_addr=0x%x)", bus, attr.GetAddr());
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellSoundSynth2SetCoreAttr(u16 entry, u16 value)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2SetCoreAttr(entry=0x%x, value=0x%x)", entry, value);
|
||||
}
|
||||
|
||||
int cellSoundSynth2Generate(u16 samples, u32 L_addr, u32 R_addr, u32 Lr_addr, u32 Rr_addr)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Generate(samples=0x%x, left=0x%x, right=0x%x, left_rear=0x%x, right_rear=0x%x)",
|
||||
samples, L_addr, R_addr, Lr_addr, Rr_addr);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellSoundSynth2VoiceTrans(s16 channel, u16 mode, u32 mem_side_addr, u32 lib_side_addr, u32 size)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2VoiceTrans(channel=%d, mode=0x%x, m_addr=0x%x, s_addr=0x%x, size=0x%x)",
|
||||
channel, mode, mem_side_addr, lib_side_addr, size);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellSoundSynth2VoiceTransStatus(s16 channel, s16 flag)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2VoiceTransStatus(channel=%d, flag=%d)", channel, flag);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2Note2Pitch(u16 center_note, u16 center_fine, u16 note, s16 fine)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Note2Pitch(center_note=0x%x, center_fine=0x%x, note=0x%x, fine=%d) -> 0",
|
||||
center_note, center_fine, note, fine);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u16 cellSoundSynth2Pitch2Note(u16 center_note, u16 center_fine, u16 pitch)
|
||||
{
|
||||
libsynth2.Error("cellSoundSynth2Pitch2Note(center_note=0x%x, center_fine=0x%x, pitch=0x%x) -> 0",
|
||||
center_note, center_fine, pitch);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void libsynth2_init()
|
||||
{
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Init,
|
||||
/*
|
||||
0xffffffff7d800026,
|
||||
0xfffffffff821ff41,
|
||||
0xfffffffffb610098,
|
||||
0xff0000008362001c, // lwz
|
||||
0xfffffffffb8100a0,
|
||||
0xffffffff3f9b0008,
|
||||
0xfffffffffba100a8,
|
||||
0xffffffff3fa08031,
|
||||
0xfffffffffbe100b8,
|
||||
0xfffffffffb010080,
|
||||
0xfffffffffb210088,
|
||||
0xfffffffffb410090,
|
||||
0xfffffffffbc100b0,
|
||||
0xffffffff7c7f1b78,
|
||||
0xffffffff63bd0203,
|
||||
0xffffffff918100c8,
|
||||
0xffffffff7c0802a6,
|
||||
0xfffffffff80100d0,
|
||||
0xffffffff897c7688,
|
||||
0xffffffff2f8b0000,
|
||||
0xffffff00409e01fc, // bne
|
||||
0xffffffff38000002,
|
||||
0xffffffff39200020,
|
||||
0xffffffff3ba00000,
|
||||
*/
|
||||
);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Exit);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Config);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2GetAddr);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2GetParam);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2GetSwitch);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetAddr);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetParam);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetSwitch);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetEffectMode);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetEffectAttr);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Note2Pitch);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Pitch2Note);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2VoiceTrans);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2VoiceTransStatus);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2SetCoreAttr);
|
||||
REG_SUB(libsynth2, "synth2", cellSoundSynth2Generate);
|
||||
}
|
19
rpcs3/Emu/SysCalls/Modules/libsynth2.h
Normal file
19
rpcs3/Emu/SysCalls/Modules/libsynth2.h
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
enum
|
||||
{
|
||||
//libsynt2 Error Codes
|
||||
CELL_SOUND_SYNTH2_ERROR_FATAL = 0x80310201,
|
||||
CELL_SOUND_SYNTH2_ERROR_INVALID_PARAMETER = 0x80310202,
|
||||
CELL_SOUND_SYNTH2_ERROR_ALREADY_INITIALIZED = 0x80310203,
|
||||
};
|
||||
|
||||
struct CellSoundSynth2EffectAttr
|
||||
{
|
||||
be_t<u16> core;
|
||||
be_t<u16> mode;
|
||||
be_t<s16> depth_L;
|
||||
be_t<s16> depth_R;
|
||||
be_t<u16> delay;
|
||||
be_t<u16> feedback;
|
||||
};
|
@ -153,15 +153,6 @@ void fsAioRead(u32 fd, mem_ptr_t<CellFsAio> aio, int xid, mem_func_ptr_t<void (*
|
||||
if(!sys_fs.CheckId(fd, orig_file)) return;
|
||||
|
||||
std::string path = orig_file->GetPath();
|
||||
std::string::size_type first_slash = path.find('/');
|
||||
if (first_slash == std::string::npos)
|
||||
{
|
||||
path = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
path = path.substr(first_slash+1,std::string::npos);
|
||||
}
|
||||
|
||||
u64 nbytes = aio->size;
|
||||
u32 buf_addr = aio->buf_addr;
|
||||
|
@ -314,6 +314,7 @@
|
||||
<ClCompile Include="Emu\SysCalls\Modules\cellVdec.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\cellVpost.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\libmixer.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\libsynth2.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\sceNp.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\sceNpTrophy.cpp" />
|
||||
<ClCompile Include="Emu\SysCalls\Modules\sysPrxForUser.cpp" />
|
||||
|
@ -487,6 +487,9 @@
|
||||
<ClCompile Include="..\Utilities\StrFmt.cpp">
|
||||
<Filter>Utilities</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\SysCalls\Modules\libsynth2.cpp">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="rpcs3.rc" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user