Mon Jun 24, 2013 1:18 am
R4zoR wrote:Meh is it so hard to just put it on mediafire or somewhere, it will take you like a minute or so, i want to release the soundtracks with the names and covers like today or tomorrow.
Mon Jun 24, 2013 1:24 am
nesa24 wrote:R4zoR wrote:Meh is it so hard to just put it on mediafire or somewhere, it will take you like a minute or so, i want to release the soundtracks with the names and covers like today or tomorrow.
lol no it isnt hard mate but i have work to do and wont be at home
i will post it when i can
Mon Jun 24, 2013 1:41 am
Mon Jun 24, 2013 2:06 am
R4zoR wrote:nesa24 wrote:i dont get it mate
i have tried on your and R4zor jukebox and didnt have skipping after fix
realy dont get it how it isnt working with you
Ahh can u send me through PM the fixed version of my released soundtrack, want to test it out.
Leftos wrote:EDIT 2: Your fix's theory that says that the Int32 at ChunkStart + 0x14 must be the same as the Int32 at ChunkStart + 0x5C (it's not just 2 bytes (0x15-0x16), those are Int32s, so 4 bytes (0x14-0x17)) stands, this should be done along with my theory of copying the dpds table to ChunkStart + 0x38 to 0x5F (10 packets x 4 bytes per Int32 = 40bytes). Our two fixes combined not only fix the skipping, but make sure that the songs play continuously, without music stopping after one song.
Mon Jun 24, 2013 2:15 am
_dpdsTable = new List<Int32>();
var dpdsPos = findArrayInStream(userSongData, XwmaDpdsHeader, 0) + 8;
userSongData.Position = dpdsPos;
var buf = new byte[4];
while (true)
{
userSongData.Read(buf, 0, 4);
var dec = BitConverter.ToInt32(buf, 0);
if (dec == 1635017060) // buf == data
{
break;
}
_dpdsTable.Add(dec);
}
var songToReplace = (Song) dgSongs.SelectedItem;
bw.BaseStream.Position = _curChunkOffsets[songToReplace.FirstChunkID];
var lastDpdsEntry = _dpdsTable.Last();
for (var i = _dpdsTable.Count; i < songToReplace.ChunkCount * 10; i++)
{
_dpdsTable.Add(lastDpdsEntry);
}
var bytesWritten = 0;
for (var i = songToReplace.FirstChunkID; i <= songToReplace.LastChunkID; i++)
{
var buf = new byte[ChunkBufferSize];
Array.Clear(buf, 0, buf.Length);
bw.BaseStream.Position += 56;
for (var j = 0; j < 10; j++)
{
var curIndex = (i - songToReplace.FirstChunkID) * 10 + j;
var toWrite = _dpdsTable[curIndex];
if (curIndex > 9)
{
toWrite -= _dpdsTable[(curIndex / 10) * 10 - 1];
}
bw.Write(toWrite);
if (curIndex % 10 == 9)
{
bw.BaseStream.Position -= 76;
bw.Write(toWrite);
bw.BaseStream.Position += 72;
}
}
var chunkLength = (int) getChunkLength(i);
if (bytesWritten == lengthToWrite)
{
bw.Write(buf, 0, chunkLength);
bw.Flush();
continue;
}
if (bytesWritten + chunkLength > lengthToWrite)
{
var newChunkLength = (int)(lengthToWrite - bytesWritten);
ms.Read(buf, 0, newChunkLength);
bytesWritten += newChunkLength;
}
else
{
ms.Read(buf, 0, chunkLength);
bytesWritten += chunkLength;
}
bw.Write(buf, 0, chunkLength);
bw.Flush();
}
Mon Jun 24, 2013 2:21 am
Mon Jun 24, 2013 2:22 am
Mon Jun 24, 2013 3:21 am
Mon Jun 24, 2013 3:45 am
Mon Jun 24, 2013 4:09 am
Leftos wrote:CORRECTION: Not all chunks have 10 packets, after all. 10 seems to be the max, but packets have different packet counts. To find how many packets are in a given chunk in the BIN file, just go to ChunkStart + 0xC.
Chunk Format:
0x0: 69A1BED2 (magic string)
nesa24 wrote:- The header of each of the 4K chunks starts with the sequence 69 a1 be
d2. Interpreted as a little endian value, this is actually the CRC32
checksum of the string "WMA". This might indicate that further research
into WMA decompression should be in order.[/code]
and second one
- Code:
No problem, I did really not explain it further: The file is organized
in blocks (or "chunks") of 4 kilobytes size, where only part of the 4
kilobytes seem to actually be used for audio data. The rest is just
padded. That's essentially the same observation the guy named PDub made
in the third post here: http://forum.xentax.com/viewtopic.php?f=17&t=5234
His observations about file sizes and compression ratios in the thread
on forums.nba-live.com also support the theory that the data is not just
regular ADPCM.
As I said, don't rule out the possibility that the data might be encoded
in some WMA variation. I'm no expert in that department, however. The
CRC32 finding I mentioned in my last email is a bit too interesting to
be a coincidence in my eyes ...
hope that someone can make it right
I dont have time
sry
Mon Jun 24, 2013 9:14 am
Mon Jun 24, 2013 1:52 pm