mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-12 01:30:49 +01:00
commit
919c2d3f63
41
BUILD.md
41
BUILD.md
@ -6,8 +6,10 @@
|
||||
- MinGW-w64 (32bit version): https://sourceforge.net/projects/mingw-w64/
|
||||
- MSYS2 with the MinGW-w64_shell (32bit) package: https://msys2.github.io/
|
||||
|
||||
**MSVC / Visual Studio**: Visual Studio Community 2015 (free) should work:
|
||||
**MSVC / Visual Studio**: Microsoft's Visual C++ and MSBuild, bundled in either:
|
||||
- Visual Studio: https://www.visualstudio.com/downloads/
|
||||
Visual Studio Community 2015 should work (free, but must register after trial period).
|
||||
- Visual C++ Build Tools (no IDE): http://landinghub.visualstudio.com/visual-cpp-build-tools
|
||||
|
||||
**Git**: optional, to generate version numbers:
|
||||
- Git for Windows: https://git-scm.com/download/win
|
||||
@ -23,8 +25,9 @@ In Linux you may need to use *Makefile.unix.am* instead, and note that some Linu
|
||||
|
||||
Windows CMD example for test.exe:
|
||||
```
|
||||
set PATH=%PATH%;C:\Git\usr\bin
|
||||
set PATH=%PATH%;C:\mingw-w64\i686-5.4.0-win32-sjlj-rt_v5-rev0\mingw32\bin
|
||||
prompt $P$G$_$S
|
||||
set PATH=C:\Program Files (x86)\Git\usr\bin;%PATH%
|
||||
set PATH=C:\Program Files (x86)\mingw-w64\i686-5.4.0-win32-sjlj-rt_v5-rev0\mingw32\bin;%PATH%
|
||||
|
||||
cd vgmstream
|
||||
|
||||
@ -33,8 +36,7 @@ mingw32-make.exe mingw_test -f Makefile ^
|
||||
SHELL=sh.exe CC=gcc.exe AR=ar.exe STRIP=strip.exe DLLTOOL=dlltool.exe WINDRES=windres.exe
|
||||
```
|
||||
|
||||
**With MSVC**: open *./vgmstream_full.sln* and compile in Visual Studio.
|
||||
For XMPlay open *xmp-vgmstream/xmp-vgmstream.sln* instead; FDK-AAC/QAAC/others may be needed (see below).
|
||||
**With MSVC**: open *./vgmstream_full.sln* and compile in Visual Studio, see the section below.
|
||||
|
||||
|
||||
### foo_input_vgmstream (foobar2000)
|
||||
@ -44,7 +46,7 @@ Requires MSVC (foobar/SDK only links to MSVC C++ DLLs) and these dependencies:
|
||||
- QAAC, in *(vgmstream)/../qaac/*: https://github.com/kode54/qaac
|
||||
- WTL (if needed), in *(vgmstream)/../WTL/*: http://wtl.sourceforge.net/
|
||||
|
||||
Open *./vgmstream_full.sln* as a base, which expects the above dependencies. Then, depending on your VS version (like VS2015) you may need to manually do the following (in *Debug* and *Release* options):
|
||||
Open *./vgmstream_full.sln* as a base, which expects the above dependencies. Then, depending on your VS version (like VS2015) you may need to manually do the following (in *Debug* and *Release* configurations):
|
||||
- Change each project's compiler version from VS2010 to your version (right click menu)
|
||||
- For *foobar2000_ATL_helpers* add *../../../WTL/Include* to the compilers's *additional includes*
|
||||
- For *foo_input_vgmstream* add *../../WTL/Include* to the compilers's *additional includes*
|
||||
@ -54,6 +56,33 @@ VS2013 may not be compatible with the SDK in release mode due to compiler bugs.
|
||||
FDK-AAC/QAAC can be disabled by removing *VGM_USE_MP4V2* and *VGM_USE_FDKAAC* in the compiler/linker options and the project dependencies.
|
||||
|
||||
|
||||
You can also use the command line to compile, if you don't want to touch the .vcxproj files, register VS2015 after trial, or only have VC++/MSBuild tools.
|
||||
|
||||
Windows CMD example for foobar2000:
|
||||
```
|
||||
prompt $P$G$_$S
|
||||
set PATH=C:\Program Files (x86)\Git\usr\bin;%PATH%
|
||||
set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH%
|
||||
|
||||
cd vgmstream
|
||||
|
||||
set CL=/I"C:\projects\WTL\Include"
|
||||
set LINK="C:\projects\foobar\foobar2000\shared\shared.lib"
|
||||
|
||||
msbuild fb2k/foo_input_vgmstream.vcxproj ^
|
||||
/t:Clean
|
||||
|
||||
msbuild fb2k/foo_input_vgmstream.vcxproj ^
|
||||
/t:Build ^
|
||||
/p:Platform=Win32 ^
|
||||
/p:PlatformToolset=v140 ^
|
||||
/p:Configuration=Release
|
||||
```
|
||||
|
||||
### Audacious plugin
|
||||
It *should* be buildable with autoconf (support unknown).
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
### Structure
|
||||
|
@ -806,7 +806,7 @@ static const meta_info meta_info_list[] = {
|
||||
{meta_OTM, "Otomedius OTM Header"},
|
||||
{meta_CSTM, "Nintendo 3DS CSTM Header"},
|
||||
{meta_FSTM, "Nintendo Wii U FSTM Header"},
|
||||
{meta_G1L, "Tecmo Koei G1L Header"},
|
||||
{meta_KT_WIIBGM, "Koei Tecmo WiiBGM Header"},
|
||||
{meta_3DS_IDSP, "Nintendo IDSP Header"},
|
||||
{meta_WIIU_BTSND, "Wii U Menu Boot Sound"},
|
||||
{meta_MCA, "Capcom MCA Header"},
|
||||
|
186
src/meta/g1l.c
186
src/meta/g1l.c
@ -1,118 +1,106 @@
|
||||
#include "meta.h"
|
||||
#include "../util.h"
|
||||
// Koei Tecmo G1L, found in the Warriors games
|
||||
VGMSTREAM * init_vgmstream_g1l(STREAMFILE *streamFile) {
|
||||
#include "../coding/coding.h"
|
||||
|
||||
static VGMSTREAM * init_vgmstream_kt_wiibgm_offset(STREAMFILE *streamFile, off_t offset);
|
||||
|
||||
/* Koei Tecmo G1L - pack format, sometimes containing a single stream
|
||||
*
|
||||
* It probably makes more sense to extract it externally, it's here mainly for Hyrule Warriors */
|
||||
VGMSTREAM * init_vgmstream_kt_g1l(STREAMFILE *streamFile) {
|
||||
VGMSTREAM * vgmstream = NULL;
|
||||
char filename[PATH_LIMIT];
|
||||
int type, num_streams, target_stream = 1;
|
||||
off_t stream_offset;
|
||||
int32_t (*read_32bit)(off_t,STREAMFILE*) = NULL;
|
||||
|
||||
coding_t coding_type;
|
||||
|
||||
/*off_t head_offset;*/
|
||||
|
||||
int channel_count;
|
||||
int loop_flag;
|
||||
off_t start_offset;
|
||||
|
||||
/* check extension, case insensitive */
|
||||
streamFile->get_name(streamFile, filename, sizeof(filename));
|
||||
if (strcasecmp("g1l", filename_extension(filename)))
|
||||
if (!check_extensions(streamFile,"g1l"))
|
||||
goto fail;
|
||||
|
||||
|
||||
/* check header */
|
||||
if ((uint32_t)read_32bitBE(0, streamFile) != 0x47314C5F) /* "G1L_" */
|
||||
goto fail;
|
||||
if ((uint32_t)read_32bitBE(0x1c, streamFile) != 0x57696942) /* "WiiB" */
|
||||
if ((read_32bitBE(0x0, streamFile) != 0x47314C5F /* "G1L_" (BE) */
|
||||
|| read_32bitBE(0x0, streamFile) != 0x5F4C3147) /* "_L1G" (LE) */
|
||||
&& read_32bitBE(0x4, streamFile) != 0x30303030) /* "0000" (version?) */
|
||||
goto fail;
|
||||
|
||||
/* check type details */
|
||||
if (read_32bitBE(0x30, streamFile) > 0)
|
||||
loop_flag = 1;
|
||||
else
|
||||
loop_flag = 0;
|
||||
channel_count = read_8bit(0x3f, streamFile);
|
||||
|
||||
|
||||
coding_type = coding_NGC_DSP;
|
||||
|
||||
|
||||
if (channel_count < 1) goto fail;
|
||||
|
||||
/* build the VGMSTREAM */
|
||||
|
||||
vgmstream = allocate_vgmstream(channel_count, loop_flag);
|
||||
if (!vgmstream) goto fail;
|
||||
|
||||
/* fill in the vital statistics */
|
||||
vgmstream->num_samples = read_32bitBE(0x2c, streamFile);
|
||||
vgmstream->sample_rate = (uint16_t)read_16bitBE(0x42, streamFile);
|
||||
/* channels and loop flag are set by allocate_vgmstream */
|
||||
|
||||
vgmstream->loop_start_sample = read_32bitBE(0x30, streamFile);
|
||||
vgmstream->loop_end_sample = vgmstream->num_samples;
|
||||
|
||||
|
||||
vgmstream->coding_type = coding_type;
|
||||
if (channel_count == 1)
|
||||
vgmstream->layout_type = layout_none;
|
||||
|
||||
vgmstream->layout_type = layout_interleave_byte;
|
||||
|
||||
vgmstream->meta_type = meta_G1L;
|
||||
|
||||
vgmstream->interleave_block_size = 0x1;
|
||||
|
||||
if (vgmstream->coding_type == coding_NGC_DSP) {
|
||||
off_t coef_offset = 0x78;
|
||||
|
||||
int i, j;
|
||||
int coef_spacing = 0x60;
|
||||
|
||||
for (j = 0; j<vgmstream->channels; j++) {
|
||||
for (i = 0; i<16; i++) {
|
||||
vgmstream->ch[j].adpcm_coef[i] = read_16bitBE(coef_offset + j*coef_spacing + i * 2, streamFile);
|
||||
}
|
||||
}
|
||||
|
||||
start_offset = 0x81c;
|
||||
if (read_32bitBE(0x0, streamFile) == 0x47314C5F ) {
|
||||
read_32bit = read_32bitBE;
|
||||
} else {
|
||||
read_32bit = read_32bitLE;
|
||||
}
|
||||
|
||||
#ifdef VGM_USE_MAIATRAC3PLUS
|
||||
else if (vgmstream->coding_type == coding_AT3plus) {
|
||||
start_offset = 0xc4;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
goto fail;
|
||||
|
||||
/* 0x08 filesize */
|
||||
/* 0x0c first file offset (same as 0x18) */
|
||||
type = read_32bit(0x10,streamFile);
|
||||
num_streams = read_32bit(0x14,streamFile);
|
||||
if (target_stream < 0 || target_stream > num_streams) goto fail;
|
||||
if (target_stream==0) target_stream = 1;
|
||||
stream_offset = read_32bit(0x18 + 0x4*(target_stream-1),streamFile);
|
||||
/* filesize = stream_offset - stream_next_offset*/
|
||||
|
||||
switch(type) { /* type may not be correct */
|
||||
case 0x09: /* DSP (WiiBGM) from Hyrule Warriors (Wii U) */
|
||||
vgmstream = init_vgmstream_kt_wiibgm_offset(streamFile, stream_offset);
|
||||
break;
|
||||
case 0x01: /* ATRAC3plus (RIFF) from One Piece Pirate Warriors 2 (PS3) */
|
||||
case 0x00: /* OGG (KOVS) from Romance Three Kindgoms 13 (PC)*/
|
||||
case 0x0A: /* OGG (KOVS) from Dragon Quest Heroes (PC)*/
|
||||
default:
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* open the file for reading by each channel */
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i<channel_count; i++) {
|
||||
if (vgmstream->layout_type == layout_interleave_shortblock)
|
||||
vgmstream->ch[i].streamfile = streamFile->open(streamFile, filename,
|
||||
vgmstream->interleave_block_size);
|
||||
else if (vgmstream->layout_type == layout_interleave)
|
||||
vgmstream->ch[i].streamfile = streamFile->open(streamFile, filename,
|
||||
STREAMFILE_DEFAULT_BUFFER_SIZE);
|
||||
else
|
||||
vgmstream->ch[i].streamfile = streamFile->open(streamFile, filename,
|
||||
0x1000);
|
||||
|
||||
if (!vgmstream->ch[i].streamfile) goto fail;
|
||||
|
||||
vgmstream->ch[i].channel_start_offset =
|
||||
vgmstream->ch[i].offset =
|
||||
start_offset + i*vgmstream->interleave_block_size;
|
||||
}
|
||||
}
|
||||
|
||||
return vgmstream;
|
||||
|
||||
/* clean up anything we may have opened */
|
||||
fail:
|
||||
if (vgmstream) close_vgmstream(vgmstream);
|
||||
close_vgmstream(vgmstream);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Koei Tecmo "WiiBGM" DSP format - found in Hyrule Warriors, Romance of the Three Kingdoms 12 */
|
||||
VGMSTREAM * init_vgmstream_kt_wiibgm(STREAMFILE *streamFile) {
|
||||
return init_vgmstream_kt_wiibgm_offset(streamFile, 0x0);
|
||||
}
|
||||
|
||||
static VGMSTREAM * init_vgmstream_kt_wiibgm_offset(STREAMFILE *streamFile, off_t offset) {
|
||||
VGMSTREAM * vgmstream = NULL;
|
||||
int loop_flag, channel_count;
|
||||
off_t start_offset;
|
||||
|
||||
if (!check_extensions(streamFile,"g1l,dsp"))
|
||||
goto fail;
|
||||
|
||||
if (read_32bitBE(offset+0x0, streamFile) != 0x57696942 && /* "WiiB" */
|
||||
read_32bitBE(offset+0x4, streamFile) != 0x474D0000) /* "GM\0\0" */
|
||||
goto fail;
|
||||
|
||||
/* check type details */
|
||||
loop_flag = read_32bitBE(offset+0x14, streamFile) > 0;
|
||||
channel_count = read_8bit(offset+0x23, streamFile);
|
||||
|
||||
/* build the VGMSTREAM */
|
||||
vgmstream = allocate_vgmstream(channel_count, loop_flag);
|
||||
if (!vgmstream) goto fail;
|
||||
|
||||
/* fill in the vital statistics */
|
||||
vgmstream->num_samples = read_32bitBE(offset+0x10, streamFile);
|
||||
vgmstream->sample_rate = (uint16_t)read_16bitBE(offset+0x26, streamFile);
|
||||
vgmstream->loop_start_sample = read_32bitBE(offset+0x14, streamFile);
|
||||
vgmstream->loop_end_sample = vgmstream->num_samples;
|
||||
|
||||
vgmstream->coding_type = coding_NGC_DSP;
|
||||
vgmstream->layout_type = layout_interleave_byte;
|
||||
vgmstream->meta_type = meta_KT_WIIBGM;
|
||||
|
||||
vgmstream->interleave_block_size = 0x1;
|
||||
|
||||
dsp_read_coefs_be(vgmstream,streamFile, offset+0x5C, 0x60);
|
||||
start_offset = offset+0x800;
|
||||
|
||||
if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
|
||||
goto fail;
|
||||
return vgmstream;
|
||||
|
||||
fail:
|
||||
close_vgmstream(vgmstream);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -650,7 +650,8 @@ VGMSTREAM * init_vgmstream_bfstm(STREAMFILE* streamFile);
|
||||
|
||||
VGMSTREAM * init_vgmstream_bfwav(STREAMFILE* streamFile);
|
||||
|
||||
VGMSTREAM * init_vgmstream_g1l(STREAMFILE* streamFile);
|
||||
VGMSTREAM * init_vgmstream_kt_g1l(STREAMFILE* streamFile);
|
||||
VGMSTREAM * init_vgmstream_kt_wiibgm(STREAMFILE* streamFile);
|
||||
|
||||
VGMSTREAM * init_vgmstream_mca(STREAMFILE* streamFile);
|
||||
|
||||
|
@ -99,16 +99,16 @@ VGMSTREAM * init_vgmstream_sqex_scd(STREAMFILE *streamFile) {
|
||||
|
||||
/** offset tables **/
|
||||
/* 0x00: table1_unknown entries */
|
||||
/* 0x02: table2_headers entries */
|
||||
/* 0x04: table3_unknown entries */
|
||||
/* 0x02: table2_unknown entries */
|
||||
/* 0x04: table_headers entries */
|
||||
/* 0x06: unknown (varies) */
|
||||
/* 0x08: table1_unknown start offset */
|
||||
/* 0x0c: table2_headers start offset */
|
||||
/* 0x10: table3_unknown start offset */
|
||||
/* 0x0c: table_headers start offset */
|
||||
/* 0x10: table2_unknown start offset */
|
||||
/* 0x14: unknown (0x0) */
|
||||
/* 0x18: unknown offset */
|
||||
/* 0x1c: unknown (0x0) */
|
||||
headers_entries = read_16bit(tables_offset+0x02,streamFile);
|
||||
headers_entries = read_16bit(tables_offset+0x04,streamFile);
|
||||
VGM_ASSERT(headers_entries > 1, "SCD: multiple streams found (%i entries)\n", headers_entries);
|
||||
if (target_stream == 0) target_stream = 1; /* auto: default to 1 */
|
||||
if (target_stream > headers_entries) goto fail;
|
||||
@ -128,22 +128,32 @@ VGMSTREAM * init_vgmstream_sqex_scd(STREAMFILE *streamFile) {
|
||||
loop_flag = (loop_end > 0);
|
||||
|
||||
post_meta_offset = meta_offset + 0x20;
|
||||
|
||||
/* data at meta_offset is only 0x20 bytes, but there may be auxiliary chunks before anything else */
|
||||
aux_chunk_count = read_32bit(meta_offset+0x1c,streamFile);
|
||||
for (; aux_chunk_count > 0; aux_chunk_count--) {
|
||||
post_meta_offset += read_32bit(post_meta_offset+4,streamFile); /* skip aux chunks */
|
||||
}
|
||||
|
||||
start_offset = post_meta_offset + read_32bit(meta_offset+0x18,streamFile);
|
||||
aux_chunk_count = read_32bit(meta_offset+0x1c,streamFile);
|
||||
|
||||
#ifdef VGM_USE_VORBIS
|
||||
if (codec_id == 0x6)
|
||||
{
|
||||
vgm_vorbis_info_t inf;
|
||||
uint32_t seek_table_size = read_32bit(post_meta_offset+0x10, streamFile);
|
||||
uint32_t vorb_header_size = read_32bit(post_meta_offset+0x14, streamFile);
|
||||
uint32_t seek_table_size;
|
||||
uint32_t vorb_header_size;
|
||||
VGMSTREAM * result = NULL;
|
||||
|
||||
/* todo this skips the "MARK" chunk for FF XIV "03.scd", but without it actually the start_offset
|
||||
* lands in a "OggS" though will fail in the "try skipping seek table"
|
||||
* maybe this isn't needed and there is another bug, since other games with "MARK" don't need this */
|
||||
if (aux_chunk_count) {
|
||||
post_meta_offset = meta_offset + 0x20;
|
||||
|
||||
/* data at meta_offset is only 0x20 bytes, but there may be auxiliary chunks before anything else */
|
||||
for (; aux_chunk_count > 0; aux_chunk_count--) {
|
||||
post_meta_offset += read_32bit(post_meta_offset+4,streamFile); /* skip aux chunks */
|
||||
}
|
||||
start_offset = post_meta_offset + read_32bit(meta_offset+0x18,streamFile);
|
||||
}
|
||||
|
||||
seek_table_size = read_32bit(post_meta_offset+0x10, streamFile);
|
||||
vorb_header_size = read_32bit(post_meta_offset+0x14, streamFile);
|
||||
|
||||
memset(&inf, 0, sizeof(inf));
|
||||
inf.loop_start = loop_start;
|
||||
@ -322,6 +332,8 @@ VGMSTREAM * init_vgmstream_sqex_scd(STREAMFILE *streamFile) {
|
||||
for (i=0;i<channel_count;i++) {
|
||||
STREAMFILE * intfile =
|
||||
open_scdint_with_STREAMFILE(file, "ARBITRARY.DSP", start_offset+interleave_size*i, interleave_size, stride_size, total_size);
|
||||
if (!intfile)
|
||||
goto fail;
|
||||
|
||||
data->substreams[i] = init_vgmstream_ngc_dsp_std(intfile);
|
||||
data->intfiles[i] = intfile;
|
||||
@ -528,8 +540,13 @@ static size_t read_scdint(SCDINTSTREAMFILE *streamfile, uint8_t *dest, off_t off
|
||||
/* start_offset is for *this* interleaved stream */
|
||||
static STREAMFILE *open_scdint_with_STREAMFILE(STREAMFILE *file, const char * filename, off_t start_offset, off_t interleave_block_size, off_t stride_size, size_t total_size)
|
||||
{
|
||||
SCDINTSTREAMFILE * scd = malloc(sizeof(SCDINTSTREAMFILE));
|
||||
SCDINTSTREAMFILE * scd = NULL;
|
||||
|
||||
/* _scdint funcs can't handle this case */
|
||||
if (start_offset + total_size > file->get_size(file))
|
||||
return NULL;
|
||||
|
||||
scd = malloc(sizeof(SCDINTSTREAMFILE));
|
||||
if (!scd)
|
||||
return NULL;
|
||||
|
||||
|
@ -64,6 +64,7 @@ VGMSTREAM * init_vgmstream_xma(STREAMFILE *streamFile) {
|
||||
streamFile->get_name(streamFile,filename,sizeof(filename));
|
||||
if (strcasecmp("xma",filename_extension(filename))
|
||||
&& strcasecmp("xma2",filename_extension(filename)) /* Skullgirls */
|
||||
&& strcasecmp("nps",filename_extension(filename)) /* Beautiful Katamari */
|
||||
&& strcasecmp("past",filename_extension(filename)) /* SoulCalibur II HD */
|
||||
)
|
||||
goto fail;
|
||||
|
@ -331,7 +331,8 @@ VGMSTREAM * (*init_vgmstream_fcns[])(STREAMFILE *streamFile) = {
|
||||
init_vgmstream_otm,
|
||||
init_vgmstream_bcstm,
|
||||
init_vgmstream_3ds_idsp,
|
||||
init_vgmstream_g1l,
|
||||
init_vgmstream_kt_g1l,
|
||||
init_vgmstream_kt_wiibgm,
|
||||
init_vgmstream_hca,
|
||||
init_vgmstream_ps2_svag_snk,
|
||||
init_vgmstream_ps2_vds_vdm,
|
||||
@ -860,7 +861,7 @@ void close_vgmstream(VGMSTREAM * vgmstream) {
|
||||
* but deallocate itself, there is only one open file and
|
||||
* that is in vgmstream->ch[0].streamfile */
|
||||
close_vgmstream(data->substreams[i]);
|
||||
close_streamfile(data->intfiles[i]);
|
||||
if(data->intfiles[i]) close_streamfile(data->intfiles[i]);
|
||||
}
|
||||
free(data->substreams);
|
||||
free(data->intfiles);
|
||||
|
@ -582,7 +582,7 @@ typedef enum {
|
||||
meta_CSTM, // Nintendo 3DS CSTM
|
||||
meta_FSTM, // Nintendo Wii U FSTM
|
||||
meta_3DS_IDSP, // Nintendo 3DS/Wii U IDSP
|
||||
meta_G1L, // Tecmo Koei G1L
|
||||
meta_KT_WIIBGM, // Koei Tecmo WiiBGM
|
||||
meta_MCA, // Capcom MCA "MADP"
|
||||
meta_XB3D_ADX, // Xenoblade Chronicles 3D ADX
|
||||
meta_HCA, /* CRI HCA */
|
||||
|
@ -29,6 +29,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foobar2000_component_client
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pfc", "..\foobar\pfc\pfc.vcxproj", "{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmp-vgmstream", "xmp-vgmstream\xmp-vgmstream.vcxproj", "{49AF76F7-CBA0-4486-9DDF-51F30DF45F33}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
|
@ -9,23 +9,30 @@
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{49AF76F7-CBA0-4486-9DDF-51F30DF45F33}</ProjectGuid>
|
||||
<RootNamespace>xmpvgmstream</RootNamespace>
|
||||
<RootNamespace>xmp-vgmstream</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@ -38,20 +45,22 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>14.0.23107.0</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../;../ext_includes;../../qaac/mp4v2/include;../../fdk-aac/libSYS/include;../../fdk-aac/libAACdec/include</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../ext_includes;../../qaac/mp4v2/include;../../fdk-aac/libSYS/include;../../fdk-aac/libAACdec/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;VGM_USE_FFMPEG;VGM_USE_G7221;VGM_USE_MP4V2;VGM_USE_FDKAAC;VGM_USE_MAIATRAC3PLUS;_DEBUG;_WINDOWS;_USRDLL;IN_VGMSTREAM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -59,7 +68,8 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(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;../ext_libs/avcodec.lib;../ext_libs/avformat.lib;../ext_libs/avutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -68,29 +78,39 @@
|
||||
<PreBuildEvent>
|
||||
<Command>"$(ProjectDir)..\version.bat" "$(ProjectDir)..\version.h" VERSION</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Generating version.h</Message>
|
||||
</PreBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>../ext_includes;../../qaac/mp4v2/include;../../fdk-aac/libSYS/include;../../fdk-aac/libAACdec/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x501;WIN32;VGM_USE_FFMPEG;VGM_USE_G7221;VGM_USE_MP4V2;VGM_USE_FDKAAC;VGM_USE_MAIATRAC3PLUS;NDEBUG;_WINDOWS;_USRDLL;IN_VGMSTREAM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>../;../ext_includes;../../qaac/mp4v2/include;../../fdk-aac/libSYS/include;../../fdk-aac/libAACdec/include</AdditionalIncludeDirectories>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>../ext_libs/libvorbis.lib;../ext_libs/libmpg123-0.lib;../ext_libs/libg7221_decode.lib;../ext_libs/libg719_decode.lib;../ext_libs/at3plusdecoder.lib;../ext_libs/avcodec.lib;../ext_libs/avformat.lib;../ext_libs/avutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<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>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ModuleDefinitionFile>xmpin.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
<PreBuildEvent>
|
||||
<Command>"$(ProjectDir)..\version.bat" "$(ProjectDir)..\version.h" VERSION</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Generating version.h</Message>
|
||||
</PreBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DllMain.c" />
|
||||
@ -116,13 +136,6 @@
|
||||
<Project>{54a6ad11-5369-4895-a06f-e255abb99b11}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Library Include="..\ext_libs\at3plusdecoder.lib" />
|
||||
<Library Include="..\ext_libs\libg719_decode.lib" />
|
||||
<Library Include="..\ext_libs\libg7221_decode.lib" />
|
||||
<Library Include="..\ext_libs\libmpg123-0.lib" />
|
||||
<Library Include="..\ext_libs\libvorbis.lib" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
Loading…
Reference in New Issue
Block a user