mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-06 14:44:25 +01:00
FSB5, added ADPCM and PCM16 coding, 4 of 15 formats supported now
This commit is contained in:
parent
b533969527
commit
842c064b3b
@ -120,7 +120,19 @@ VGMSTREAM * init_vgmstream_fsb5(STREAMFILE *streamFile) {
|
|||||||
|
|
||||||
case 0x02: /* FMOD_SOUND_FORMAT_PCM16 */
|
case 0x02: /* FMOD_SOUND_FORMAT_PCM16 */
|
||||||
{
|
{
|
||||||
goto fail;
|
|
||||||
|
NumSamples = read_32bitLE(SampleHeaderStart+0x04,streamFile)/4;
|
||||||
|
|
||||||
|
if (ChannelCount == 1)
|
||||||
|
{
|
||||||
|
vgmstream->layout_type = layout_none;
|
||||||
|
} else {
|
||||||
|
vgmstream->layout_type = layout_interleave;
|
||||||
|
vgmstream->interleave_block_size = 0x02;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vgmstream->coding_type = coding_PCM16LE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -171,7 +183,11 @@ VGMSTREAM * init_vgmstream_fsb5(STREAMFILE *streamFile) {
|
|||||||
|
|
||||||
case 0x07: /* FMOD_SOUND_FORMAT_IMAADPCM */
|
case 0x07: /* FMOD_SOUND_FORMAT_IMAADPCM */
|
||||||
{
|
{
|
||||||
goto fail;
|
|
||||||
|
NumSamples = read_32bitLE(SampleHeaderStart+0x04,streamFile)/4;
|
||||||
|
vgmstream->layout_type = layout_none;
|
||||||
|
vgmstream->coding_type = coding_XBOX;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -263,7 +279,17 @@ VGMSTREAM * init_vgmstream_fsb5(STREAMFILE *streamFile) {
|
|||||||
if (!file) goto fail;
|
if (!file) goto fail;
|
||||||
for (i=0;i<ChannelCount;i++) {
|
for (i=0;i<ChannelCount;i++) {
|
||||||
vgmstream->ch[i].streamfile = file;
|
vgmstream->ch[i].streamfile = file;
|
||||||
vgmstream->ch[i].channel_start_offset=vgmstream->ch[i].offset=StartOffset+vgmstream->interleave_block_size*i;
|
|
||||||
|
|
||||||
|
if (vgmstream->coding_type == coding_XBOX) {
|
||||||
|
/* xbox interleaving is a little odd */
|
||||||
|
vgmstream->ch[i].channel_start_offset=StartOffset;
|
||||||
|
} else {
|
||||||
|
vgmstream->ch[i].channel_start_offset=
|
||||||
|
StartOffset+vgmstream->interleave_block_size*i;
|
||||||
|
}
|
||||||
|
vgmstream->ch[i].offset = vgmstream->ch[i].channel_start_offset;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user