sceAudiocodec_9d3f790c located at: 0x08E68CE4 (8 bytes)
sceAudiocodecInit located at: 0x08E68CEC (8 bytes)
sceAudiocodecDecode located at: 0x08E68CF4 (8 bytes)
sceAudiocodecGetEDRAM located at: 0x08E68CFC (8 bytes)
sceAudiocodecReleaseEDRAM located at: 0x08E68D04 (8 bytes)
I've started to disassemble both the library and the driver and found out a way to use sceAudiocodec_9d3f790c, sceAudiocodecGetEDRAM & sceAudiocodecInit by using them with like that:
Code: Select all
// These two first ones are called during sceAtracStartEntry
ret = sceAudiocodec_9d3f790c(At3_Buffer, 0x1001);
ret = sceAudiocodecGetEDRAM(At3_Buffer, 0x1001);
ret = sceAudiocodecInit(At3_Buffer, 0x1001);
0x1001 is the type of stream to decode (0x1001 = AT3 / 0x1000 = AT3+).
Everything goes fine until and each function return a 0 value (maybe they shouldn't ?) but sceAudiocodecDecode doesn't work and returns 0x807f0002 error value), i looked in the memory dump to see how the atrac3 library initialized that At3_Buffer but no matter what i tried it still doesn't work.
The first thing i can't figure out yet is where to pass the addresses of the at3 block to decode and where it'll be decoded.
From what i've seen, there is 4 blocks used by the attrac3 grouped by 2 depending on the passed ID (prolly 2 for the atrac3 & 2 for the atrac3plus which seem to be different formats).
Most probably At3_Buffer must be filled by hand with some values but i don't know which ones yet.
The functions themselves write datas to the buffer:
sceAudiocodec_9d3f790c:
05012801 at offset 0
00003de0 at offset 0x10
sceAudiocodecGetEDRAM:
001dfbc0 at offset 0xc
001dfb94 at offset 0x68
sceAudiocodecInit:
0000ac44 at offset 0x2c
00001000 at offset 0x30
Anyone have some experience with this one or is interested to work on it too ?