mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-06 14:44:25 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
5cd11594e2
@ -769,7 +769,7 @@ int clHCA_isOurFile1(const void *data, unsigned int size){
|
|||||||
int minsize;
|
int minsize;
|
||||||
if (size<8)return -1;
|
if (size<8)return -1;
|
||||||
minsize = clHCA_isOurFile0(data);
|
minsize = clHCA_isOurFile0(data);
|
||||||
if (minsize < 0 || minsize > size)return -1;
|
if (minsize < 0 || (unsigned int)minsize > size)return -1;
|
||||||
if (clHCA_CheckSum(data, minsize, 0))return -1;
|
if (clHCA_CheckSum(data, minsize, 0))return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -793,10 +793,12 @@ void clHCA_DecodeSamples16(clHCA *hca,signed short *samples){
|
|||||||
const float scale = 32768.0f;
|
const float scale = 32768.0f;
|
||||||
float f;
|
float f;
|
||||||
signed int s;
|
signed int s;
|
||||||
|
int i, j;
|
||||||
|
unsigned int k, l;
|
||||||
//const float _rva_volume=hca->_rva_volume;
|
//const float _rva_volume=hca->_rva_volume;
|
||||||
for(int i=0;i<8;i++){
|
for(i=0;i<8;i++){
|
||||||
for(int j=0;j<0x80;j++){
|
for(j=0;j<0x80;j++){
|
||||||
for(unsigned int k=0,l=hca->_channelCount;k<l;k++){
|
for(k=0,l=hca->_channelCount;k<l;k++){
|
||||||
f=hca->_channel[k].wave[i][j]/**_rva_volume*/;
|
f=hca->_channel[k].wave[i][j]/**_rva_volume*/;
|
||||||
if(f>1){f=1;}else if(f<-1){f=-1;}
|
if(f>1){f=1;}else if(f<-1){f=-1;}
|
||||||
s=(signed int)(f*scale);
|
s=(signed int)(f*scale);
|
||||||
@ -981,7 +983,7 @@ void clCipher_Init56(clCipher *cipher,unsigned int key1,unsigned int key2){
|
|||||||
unsigned char t2[0x10];
|
unsigned char t2[0x10];
|
||||||
unsigned char t3[0x100],t31[0x10],t32[0x10],*t;
|
unsigned char t3[0x100],t31[0x10],t32[0x10],*t;
|
||||||
|
|
||||||
int i, v;
|
int i, j, v;
|
||||||
|
|
||||||
if(!key1)key2--;
|
if(!key1)key2--;
|
||||||
key1--;
|
key1--;
|
||||||
@ -1004,10 +1006,11 @@ void clCipher_Init56(clCipher *cipher,unsigned int key1,unsigned int key2){
|
|||||||
// テーブル3
|
// テーブル3
|
||||||
t=t3;
|
t=t3;
|
||||||
clCipher_Init56_CreateTable(t31,t1[0]);
|
clCipher_Init56_CreateTable(t31,t1[0]);
|
||||||
for(int i=0;i<0x10;i++){
|
for(i=0;i<0x10;i++){
|
||||||
|
unsigned char v;
|
||||||
clCipher_Init56_CreateTable(t32,t2[i]);
|
clCipher_Init56_CreateTable(t32,t2[i]);
|
||||||
unsigned char v=t31[i]<<4;
|
v=t31[i]<<4;
|
||||||
for(int j=0;j<0x10;j++){
|
for(j=0;j<0x10;j++){
|
||||||
*(t++)=v|t32[j];
|
*(t++)=v|t32[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1028,8 +1031,9 @@ void clCipher_Init56(clCipher *cipher,unsigned int key1,unsigned int key2){
|
|||||||
void clCipher_Init56_CreateTable(unsigned char *r,unsigned char key){
|
void clCipher_Init56_CreateTable(unsigned char *r,unsigned char key){
|
||||||
int mul=((key&1)<<3)|5;
|
int mul=((key&1)<<3)|5;
|
||||||
int add=(key&0xE)|1;
|
int add=(key&0xE)|1;
|
||||||
|
int i;
|
||||||
key>>=4;
|
key>>=4;
|
||||||
for(int i=0;i<0x10;i++){
|
for(i=0;i<0x10;i++){
|
||||||
key=(key*mul+add)&0xF;
|
key=(key*mul+add)&0xF;
|
||||||
*(r++)=key;
|
*(r++)=key;
|
||||||
}
|
}
|
||||||
@ -1193,7 +1197,7 @@ int clHCA_Decode(clHCA *hca,void *data,unsigned int size,unsigned int address){
|
|||||||
// comm
|
// comm
|
||||||
if(size>=5 && (clData_CheckBit(&d,32)&0x7F7F7F7F)=='comm'){
|
if(size>=5 && (clData_CheckBit(&d,32)&0x7F7F7F7F)=='comm'){
|
||||||
void * newmem;
|
void * newmem;
|
||||||
int i;
|
unsigned int i;
|
||||||
clData_AddBit(&d,32);
|
clData_AddBit(&d,32);
|
||||||
hca->_comm_len=clData_GetBit(&d,8);
|
hca->_comm_len=clData_GetBit(&d,8);
|
||||||
if(hca->_comm_len>size)return -1;
|
if(hca->_comm_len>size)return -1;
|
||||||
@ -1673,11 +1677,11 @@ void stChannel_Decode5(stChannel *ch,int index){
|
|||||||
for(i=0,count1=0x40,count2=1;i<7;i++,count1>>=1,count2<<=1){
|
for(i=0,count1=0x40,count2=1;i<7;i++,count1>>=1,count2<<=1){
|
||||||
const float *list1Float=(const float *)stChannel_Decode5_list1Int[i];
|
const float *list1Float=(const float *)stChannel_Decode5_list1Int[i];
|
||||||
const float *list2Float=(const float *)stChannel_Decode5_list2Int[i];
|
const float *list2Float=(const float *)stChannel_Decode5_list2Int[i];
|
||||||
|
float *d1, *d2, *w;
|
||||||
s1=s;
|
s1=s;
|
||||||
s2=&s1[count2];
|
s2=&s1[count2];
|
||||||
float *d1=d;
|
d1=d;
|
||||||
float *d2=&d1[count2*2-1];
|
d2=&d1[count2*2-1];
|
||||||
float *w;
|
|
||||||
for(j=0;j<count1;j++){
|
for(j=0;j<count1;j++){
|
||||||
for(k=0;k<count2;k++){
|
for(k=0;k<count2;k++){
|
||||||
float a=*(s1++);
|
float a=*(s1++);
|
||||||
@ -1698,10 +1702,9 @@ void stChannel_Decode5(stChannel *ch,int index){
|
|||||||
for(i=0;i<0x80;i++)*(d++)=*(s++);
|
for(i=0;i<0x80;i++)*(d++)=*(s++);
|
||||||
s=(const float *)stChannel_Decode5_list3Int;d=ch->wave[index];
|
s=(const float *)stChannel_Decode5_list3Int;d=ch->wave[index];
|
||||||
s1=&ch->wav2[0x40];s2=ch->wav3;
|
s1=&ch->wav2[0x40];s2=ch->wav3;
|
||||||
for(int i=0;i<0x40;i++)*(d++)=*(s1++)**(s++)+*(s2++);
|
for(i=0;i<0x40;i++)*(d++)=*(s1++)**(s++)+*(s2++);
|
||||||
for(int i=0;i<0x40;i++)*(d++)=*(s++)**(--s1)-*(s2++);
|
for(i=0;i<0x40;i++)*(d++)=*(s++)**(--s1)-*(s2++);
|
||||||
s1=&ch->wav2[0x40-1];d=ch->wav3;
|
s1=&ch->wav2[0x40-1];d=ch->wav3;
|
||||||
for(int i=0;i<0x40;i++)*(d++)=*(s1--)**(--s);
|
for(i=0;i<0x40;i++)*(d++)=*(s1--)**(--s);
|
||||||
for(int i=0;i<0x40;i++)*(d++)=*(--s)**(++s1);
|
for(i=0;i<0x40;i++)*(d++)=*(--s)**(++s1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,11 +25,11 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Utility</ConfigurationType>
|
<ConfigurationType>Utility</ConfigurationType>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Utility</ConfigurationType>
|
<ConfigurationType>Utility</ConfigurationType>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
@ -33,15 +33,15 @@
|
|||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@ -77,7 +77,6 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>../ext_libs/libvorbis.lib;../ext_libs/libmpg123-0.lib;../ext_libs/libg7221_decode.lib;../ext_libs/libg719_decode.lib;../ext_libs/at3plusdecoder.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>../ext_libs/libvorbis.lib;../ext_libs/libmpg123-0.lib;../ext_libs/libg7221_decode.lib;../ext_libs/libg719_decode.lib;../ext_libs/at3plusdecoder.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
@ -102,7 +101,6 @@
|
|||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
<FloatingPointModel>Fast</FloatingPointModel>
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>../ext_libs/libvorbis.lib;../ext_libs/libmpg123-0.lib;../ext_libs/libg7221_decode.lib;../ext_libs/libg719_decode.lib;../ext_libs/at3plusdecoder.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>../ext_libs/libvorbis.lib;../ext_libs/libmpg123-0.lib;../ext_libs/libg7221_decode.lib;../ext_libs/libg719_decode.lib;../ext_libs/at3plusdecoder.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
@ -850,6 +850,10 @@
|
|||||||
RelativePath=".\meta\ps2_svag.c"
|
RelativePath=".\meta\ps2_svag.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\meta\ps2_svag_snk.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\meta\ps2_tec.c"
|
RelativePath=".\meta\ps2_tec.c"
|
||||||
>
|
>
|
||||||
|
@ -28,11 +28,11 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140_xp</PlatformToolset>
|
<PlatformToolset>v100</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@ -66,8 +66,6 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
|
||||||
<AdditionalOptions>/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -80,8 +78,6 @@
|
|||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
<FloatingPointModel>Fast</FloatingPointModel>
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
|
||||||
<AdditionalOptions>/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -287,6 +283,7 @@
|
|||||||
<ClCompile Include="meta\ps2_stm.c" />
|
<ClCompile Include="meta\ps2_stm.c" />
|
||||||
<ClCompile Include="meta\ps2_str.c" />
|
<ClCompile Include="meta\ps2_str.c" />
|
||||||
<ClCompile Include="meta\ps2_svag.c" />
|
<ClCompile Include="meta\ps2_svag.c" />
|
||||||
|
<ClCompile Include="meta\ps2_svag_snk.c" />
|
||||||
<ClCompile Include="meta\ps2_tec.c" />
|
<ClCompile Include="meta\ps2_tec.c" />
|
||||||
<ClCompile Include="meta\ps2_tk5.c" />
|
<ClCompile Include="meta\ps2_tk5.c" />
|
||||||
<ClCompile Include="meta\ps2_vag.c" />
|
<ClCompile Include="meta\ps2_vag.c" />
|
||||||
|
@ -508,6 +508,9 @@
|
|||||||
<ClCompile Include="meta\ps2_svag.c">
|
<ClCompile Include="meta\ps2_svag.c">
|
||||||
<Filter>meta\Source Files</Filter>
|
<Filter>meta\Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="meta\ps2_svag_snk.c">
|
||||||
|
<Filter>meta\Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="meta\ps2_tec.c">
|
<ClCompile Include="meta\ps2_tec.c">
|
||||||
<Filter>meta\Source Files</Filter>
|
<Filter>meta\Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -15,6 +15,7 @@ VGMSTREAM * init_vgmstream_bcstm(STREAMFILE *streamFile) {
|
|||||||
int loop_flag;
|
int loop_flag;
|
||||||
int i, ima = 0;
|
int i, ima = 0;
|
||||||
off_t start_offset;
|
off_t start_offset;
|
||||||
|
int section_count;
|
||||||
|
|
||||||
/* check extension, case insensitive */
|
/* check extension, case insensitive */
|
||||||
streamFile->get_name(streamFile, filename, sizeof(filename));
|
streamFile->get_name(streamFile, filename, sizeof(filename));
|
||||||
@ -28,7 +29,7 @@ VGMSTREAM * init_vgmstream_bcstm(STREAMFILE *streamFile) {
|
|||||||
if ((uint16_t)read_16bitLE(4, streamFile) != 0xFEFF)
|
if ((uint16_t)read_16bitLE(4, streamFile) != 0xFEFF)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
int section_count = read_16bitLE(0x10, streamFile);
|
section_count = read_16bitLE(0x10, streamFile);
|
||||||
for (i = 0; i < section_count; i++) {
|
for (i = 0; i < section_count; i++) {
|
||||||
temp_id = read_16bitLE(0x14 + i * 0xc, streamFile);
|
temp_id = read_16bitLE(0x14 + i * 0xc, streamFile);
|
||||||
switch(temp_id) {
|
switch(temp_id) {
|
||||||
|
@ -19,6 +19,7 @@ VGMSTREAM * init_vgmstream_bfstm(STREAMFILE *streamFile) {
|
|||||||
off_t start_offset;
|
off_t start_offset;
|
||||||
int founddata;
|
int founddata;
|
||||||
off_t tempoffset1;
|
off_t tempoffset1;
|
||||||
|
int section_count;
|
||||||
|
|
||||||
/* check extension, case insensitive */
|
/* check extension, case insensitive */
|
||||||
streamFile->get_name(streamFile, filename, sizeof(filename));
|
streamFile->get_name(streamFile, filename, sizeof(filename));
|
||||||
@ -32,7 +33,7 @@ VGMSTREAM * init_vgmstream_bfstm(STREAMFILE *streamFile) {
|
|||||||
if ((uint16_t)read_16bitBE(4, streamFile) != 0xFEFF)
|
if ((uint16_t)read_16bitBE(4, streamFile) != 0xFEFF)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
int section_count = read_16bitBE(0x10, streamFile);
|
section_count = read_16bitBE(0x10, streamFile);
|
||||||
for (i = 0; i < section_count; i++) {
|
for (i = 0; i < section_count; i++) {
|
||||||
temp_id = read_16bitBE(0x14 + i * 0xc, streamFile);
|
temp_id = read_16bitBE(0x14 + i * 0xc, streamFile);
|
||||||
switch(temp_id) {
|
switch(temp_id) {
|
||||||
@ -133,9 +134,10 @@ VGMSTREAM * init_vgmstream_bfstm(STREAMFILE *streamFile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vgmstream->coding_type == coding_NGC_DSP) {
|
if (vgmstream->coding_type == coding_NGC_DSP) {
|
||||||
|
off_t coeff_ptr_table;
|
||||||
VARDECL(off_t, coef_offset);
|
VARDECL(off_t, coef_offset);
|
||||||
ALLOC(coef_offset, channel_count, off_t);
|
ALLOC(coef_offset, channel_count, off_t);
|
||||||
off_t coeff_ptr_table = read_32bitBE(info_offset + 0x1c, streamFile) + info_offset + 8; // Getting pointer for coefficient pointer table
|
coeff_ptr_table = read_32bitBE(info_offset + 0x1c, streamFile) + info_offset + 8; // Getting pointer for coefficient pointer table
|
||||||
|
|
||||||
for (i = 0; i < channel_count; i++) {
|
for (i = 0; i < channel_count; i++) {
|
||||||
tempoffset1 = read_32bitBE(coeff_ptr_table + 8 + i * 8, streamFile);
|
tempoffset1 = read_32bitBE(coeff_ptr_table + 8 + i * 8, streamFile);
|
||||||
|
@ -11,24 +11,28 @@ VGMSTREAM * init_vgmstream_ps2_svag_snk(STREAMFILE* streamFile) {
|
|||||||
VGMSTREAM * vgmstream = NULL;
|
VGMSTREAM * vgmstream = NULL;
|
||||||
char filename[PATH_LIMIT];
|
char filename[PATH_LIMIT];
|
||||||
|
|
||||||
|
off_t start_offset = 0x20;
|
||||||
|
|
||||||
|
int loop_flag;
|
||||||
|
int channel_count;
|
||||||
|
int loop_start_block;
|
||||||
|
int loop_end_block;
|
||||||
|
|
||||||
/* check extension, case insensitive */
|
/* check extension, case insensitive */
|
||||||
streamFile->get_name(streamFile,filename,sizeof(filename));
|
streamFile->get_name(streamFile,filename,sizeof(filename));
|
||||||
if (strcasecmp("svag",filename_extension(filename))) goto fail;
|
if (strcasecmp("svag",filename_extension(filename))) goto fail;
|
||||||
|
|
||||||
|
|
||||||
/* check SNK SVAG Header ("VAGm") */
|
/* check SNK SVAG Header ("VAGm") */
|
||||||
if (read_32bitBE(0x00,streamFile) != 0x5641476D)
|
if (read_32bitBE(0x00,streamFile) != 0x5641476D)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
||||||
int sample_rate = read_32bitLE(0x08,streamFile);
|
channel_count = read_32bitLE(0x0c,streamFile);
|
||||||
int channel_count = read_32bitLE(0x0c,streamFile);
|
|
||||||
int blocks = read_32bitLE(0x10,streamFile);
|
|
||||||
/* int unk = read_32bitLE(0x14,streamFile);*/ /* always 0 */
|
|
||||||
int loop_start_block = read_32bitLE(0x18,streamFile);
|
|
||||||
int loop_end_block = read_32bitLE(0x1c,streamFile);
|
|
||||||
|
|
||||||
int loop_flag = loop_end_block > 0; /* loop_start_black can be 0 */
|
loop_start_block = read_32bitLE(0x18,streamFile);
|
||||||
|
loop_end_block = read_32bitLE(0x1c,streamFile);
|
||||||
|
|
||||||
|
loop_flag = loop_end_block > 0; /* loop_start_block can be 0 */
|
||||||
|
|
||||||
|
|
||||||
/* build the VGMSTREAM */
|
/* build the VGMSTREAM */
|
||||||
@ -40,8 +44,8 @@ VGMSTREAM * init_vgmstream_ps2_svag_snk(STREAMFILE* streamFile) {
|
|||||||
vgmstream->meta_type = meta_PS2_SVAG_SNK;
|
vgmstream->meta_type = meta_PS2_SVAG_SNK;
|
||||||
|
|
||||||
vgmstream->channels = channel_count;
|
vgmstream->channels = channel_count;
|
||||||
vgmstream->sample_rate = sample_rate;
|
vgmstream->sample_rate = read_32bitLE(0x08,streamFile);
|
||||||
vgmstream->num_samples = blocks * 28;
|
vgmstream->num_samples = read_32bitLE(0x10,streamFile) * 28; /* size in blocks */
|
||||||
if( vgmstream->loop_flag ) {
|
if( vgmstream->loop_flag ) {
|
||||||
vgmstream->loop_start_sample = loop_start_block * 28;
|
vgmstream->loop_start_sample = loop_start_block * 28;
|
||||||
vgmstream->loop_end_sample = loop_end_block * 28;
|
vgmstream->loop_end_sample = loop_end_block * 28;
|
||||||
@ -50,7 +54,6 @@ VGMSTREAM * init_vgmstream_ps2_svag_snk(STREAMFILE* streamFile) {
|
|||||||
vgmstream->interleave_block_size = 0x10;
|
vgmstream->interleave_block_size = 0x10;
|
||||||
|
|
||||||
|
|
||||||
int start_offset = 0x20;
|
|
||||||
/* open the file for reading */
|
/* open the file for reading */
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -64,7 +67,6 @@ VGMSTREAM * init_vgmstream_ps2_svag_snk(STREAMFILE* streamFile) {
|
|||||||
vgmstream->ch[i].channel_start_offset =
|
vgmstream->ch[i].channel_start_offset =
|
||||||
vgmstream->ch[i].offset =
|
vgmstream->ch[i].offset =
|
||||||
start_offset + vgmstream->interleave_block_size*i;
|
start_offset + vgmstream->interleave_block_size*i;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user