diff --git a/fb2k/in_vgmstream.cpp b/fb2k/in_vgmstream.cpp index b41a563e..972a0611 100644 --- a/fb2k/in_vgmstream.cpp +++ b/fb2k/in_vgmstream.cpp @@ -251,7 +251,7 @@ void input_vgmstream::retag(const file_info & p_info,abort_callback & p_abort) { bool input_vgmstream::g_is_our_content_type(const char * p_content_type) {return false;} bool input_vgmstream::g_is_our_path(const char * p_path,const char * p_extension) { - if(!stricmp_utf8(p_extension,"2dx")) return 1; + if(!stricmp_utf8(p_extension,"2dx9")) return 1; if(!stricmp_utf8(p_extension,"aaap")) return 1; if(!stricmp_utf8(p_extension,"aax")) return 1; @@ -526,7 +526,7 @@ VALIDATE_COMPONENT_FILENAME("foo_input_vgmstream.dll"); // File types go down here (and in the large chunk of IFs above // these are declared statically, and if anyone has a better idea i'd like to hear it - josh. -DECLARE_MULTIPLE_FILE_TYPE("2DX Audio File (*.2DX)", 2dx); +DECLARE_MULTIPLE_FILE_TYPE("2DX9 Audio File (*.2DX9)", 2dx9); DECLARE_MULTIPLE_FILE_TYPE("AAAP Audio File (*.AAAP)", aaap); DECLARE_MULTIPLE_FILE_TYPE("AAX Audio File (*.AAX)", aax); diff --git a/readme.txt b/readme.txt index 3a2cda6b..1f49ceae 100644 --- a/readme.txt +++ b/readme.txt @@ -231,7 +231,7 @@ multi: - .wav, .lwav (unsigned 8 bit PCM, 16 bit PCM, GC DSP ADPCM, MS IMA ADPCM) etc: -- .2dx (MS ADPCM) +- .2dx9 (MS ADPCM) - .aax (CRI ADX ADPCM) - .acm (InterPlay ACM) - .adp (GC DTK ADPCM) diff --git a/src/libvgmstream.vcproj b/src/libvgmstream.vcproj index d6b83568..4f793ca0 100644 --- a/src/libvgmstream.vcproj +++ b/src/libvgmstream.vcproj @@ -197,7 +197,7 @@ Name="Source Files" > get_name(streamFile,filename,sizeof(filename)); + if (strcasecmp("2dx9",filename_extension(filename))) goto fail; + + /* check header */ + if (read_32bitBE(0x0,streamFile) != 0x32445839) /* 2DX9 */ + goto fail; + if (read_32bitBE(0x18,streamFile) != 0x52494646) /* RIFF */ + goto fail; + if (read_32bitBE(0x20,streamFile) != 0x57415645) /* WAVE */ + goto fail; + if (read_32bitBE(0x24,streamFile) != 0x666D7420) /* fmt */ + goto fail; + if (read_32bitBE(0x6a,streamFile) != 0x64617461) /* data */ + goto fail; + + loop_flag = 0; + channel_count = read_16bitLE(0x2e,streamFile); + + /* build the VGMSTREAM */ + vgmstream = allocate_vgmstream(channel_count,loop_flag); + if (!vgmstream) goto fail; + + /* fill in the vital statistics */ + start_offset = 0x72; + vgmstream->channels = channel_count; + vgmstream->sample_rate = read_32bitLE(0x30,streamFile); + vgmstream->coding_type = coding_MSADPCM; + vgmstream->num_samples = read_32bitLE(0x66,streamFile); + vgmstream->layout_type = layout_none; + vgmstream->interleave_block_size = read_16bitLE(0x38,streamFile); + vgmstream->meta_type = meta_2DX9; + + /* open the file for reading */ + { + int i; + STREAMFILE * file; + file = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE); + if (!file) goto fail; + for (i=0;ich[i].streamfile = file; + + vgmstream->ch[i].channel_start_offset= + vgmstream->ch[i].offset=start_offset+ + vgmstream->interleave_block_size*i; + + } + } + + + return vgmstream; + +fail: + /* clean up anything we may have opened */ + if (vgmstream) close_vgmstream(vgmstream); + return NULL; +} diff --git a/src/meta/fsb.c b/src/meta/fsb.c index 778dfc76..11d9b93f 100644 --- a/src/meta/fsb.c +++ b/src/meta/fsb.c @@ -213,6 +213,7 @@ VGMSTREAM * init_vgmstream_fsb4(STREAMFILE *streamFile) { case 0x40204020: case 0x50011000: case 0x20205000: + case 0x30610080: vgmstream->coding_type = coding_PCM16LE; vgmstream->layout_type = layout_interleave; vgmstream->interleave_block_size = 0x2; diff --git a/src/meta/meta.h b/src/meta/meta.h index b43f9247..0511c68b 100644 --- a/src/meta/meta.h +++ b/src/meta/meta.h @@ -403,7 +403,7 @@ VGMSTREAM * init_vgmstream_rsd3gadp(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_sd9(STREAMFILE * streamFile); -VGMSTREAM * init_vgmstream_2dx(STREAMFILE * streamFile); +VGMSTREAM * init_vgmstream_2dx9(STREAMFILE * streamFile); VGMSTREAM * init_vgmstream_dsp_ygo(STREAMFILE * streamFile); diff --git a/src/vgmstream.c b/src/vgmstream.c index 83f404f8..ff249c55 100644 --- a/src/vgmstream.c +++ b/src/vgmstream.c @@ -222,7 +222,7 @@ VGMSTREAM * (*init_vgmstream_fcns[])(STREAMFILE *streamFile) = { init_vgmstream_ps2_snd, init_vgmstream_naomi_adpcm, init_vgmstream_sd9, - init_vgmstream_2dx, + init_vgmstream_2dx9, init_vgmstream_dsp_ygo, init_vgmstream_ps2_vgv, init_vgmstream_ngc_gcub, @@ -2458,10 +2458,10 @@ void describe_vgmstream(VGMSTREAM * vgmstream, char * desc, int length) { snprintf(temp,TEMPSIZE,"NAOMI/NAOMI2 Arcade games ADPCM header"); break; case meta_SD9: - snprintf(temp,TEMPSIZE,"beatmaniaIIDX SD9 header"); + snprintf(temp,TEMPSIZE,"beatmania IIDX SD9 header"); break; - case meta_2DX: - snprintf(temp,TEMPSIZE,"beatmaniaIIDX 2DX9 header"); + case meta_2DX9: + snprintf(temp,TEMPSIZE,"beatmania IIDX 2DX9 header"); break; case meta_DSP_YGO: snprintf(temp,TEMPSIZE,"Konami custom DSP Header"); diff --git a/src/vgmstream.h b/src/vgmstream.h index ab20d132..468cc4e4 100644 --- a/src/vgmstream.h +++ b/src/vgmstream.h @@ -431,7 +431,7 @@ typedef enum { meta_NGC_LPS, /* Rave Master (Groove Adventure Rave)(GC) */ meta_NAOMI_ADPCM, /* NAOMI/NAOMI2 ARcade games */ meta_SD9, /* beatmaniaIIDX16 - EMPRESS (Arcade) */ - meta_2DX, /* beatmaniaIIDX16 - EMPRESS (Arcade) */ + meta_2DX9, /* beatmaniaIIDX16 - EMPRESS (Arcade) */ meta_PS2_VGV, /* Rune: Viking Warlord */ meta_NGC_GCUB, /* Sega Soccer Slam */ meta_MAXIS_XA, /* Sim City 3000 (PC) */ diff --git a/unix/data.c b/unix/data.c index c80c7bc1..d89a6398 100644 --- a/unix/data.c +++ b/unix/data.c @@ -15,7 +15,7 @@ void vgmstream_mseek(InputPlayback *context,gulong ms); void vgmstream_file_info_box(gchar *pFile); gchar *vgmstream_exts [] = { - "2dx", + "2dx9", "aax", "acm", diff --git a/winamp/in_vgmstream.c b/winamp/in_vgmstream.c index d5597d40..d1bf4682 100644 --- a/winamp/in_vgmstream.c +++ b/winamp/in_vgmstream.c @@ -75,10 +75,10 @@ int fade_samples = 0; char working_extension_list[EXTENSION_LIST_SIZE] = {0}; char * extension_list[] = { - "2dx\0""2DX Audio File (*.2DX)\0", + "2dx9\0""2DX9 Audio File (*.2DX9)\0", "aax\0AAX Audio File (*.AAX)\0", - "2dx\0""2DX Audio File (*.2DX)\0", + "2dx9\0""2DX9 Audio File (*.2DX9)\0", "aaap\0AAAP Audio File (*.AAAP)\0", "aax\0AAX Audio File (*.AAX)\0", "acm\0ACM Audio File (*.ACM)\0",