diff --git a/cli/vgmstream123.c b/cli/vgmstream123.c
index dcd1337d..d9e1a4cd 100644
--- a/cli/vgmstream123.c
+++ b/cli/vgmstream123.c
@@ -88,7 +88,7 @@ static ao_device *device = NULL;
static ao_option *device_options = NULL;
static ao_sample_format current_sample_format;
-static sample *buffer = NULL;
+static sample_t *buffer = NULL;
static int buffer_size_kb = 16;
static int repeat = 0;
diff --git a/src/formats.c b/src/formats.c
index bf38c890..e32ddd59 100644
--- a/src/formats.c
+++ b/src/formats.c
@@ -782,7 +782,7 @@ static const meta_info meta_info_list[] = {
{meta_DSP_RS03, "Retro Studios RS03 header"},
{meta_DSP_STD, "Nintendo DSP header"},
{meta_DSP_CSTR, "Namco Cstr header"},
- {meta_GCSW, "GCSW header"},
+ {meta_GCSW, "MileStone GCSW header"},
{meta_PS2_SShd, "Sony ADS header"},
{meta_NPS, "Namco NPSF header"},
{meta_RWSD, "Nintendo RWSD header (single stream)"},
@@ -990,7 +990,7 @@ static const meta_info meta_info_list[] = {
{meta_XBOX_HLWAV, "Half Life 2 bgm header"},
{meta_STX, "Nintendo .stx header"},
{meta_MYSPD, "U-Sing .MYSPD header"},
- {meta_HIS, "Her Interactive Sound header"},
+ {meta_HIS, "Her Interactive HIS header"},
{meta_PS2_AST, "KOEI AST header"},
{meta_CAPDSP, "Capcom DSP header"},
{meta_DMSG, "RIFF/DMSGsegh header"},
@@ -1095,8 +1095,8 @@ static const meta_info meta_info_list[] = {
{meta_TA_AAC_MOBILE, "tri-Ace AAC (Mobile) header"},
{meta_MTA2, "Konami MTA2 header"},
{meta_NGC_ULW, "Criterion ULW raw header"},
- {meta_PC_XA30, "Reflections XA30 PC header"},
- {meta_WII_04SW, "Reflections 04SW header"},
+ {meta_XA_XA30, "Reflections XA30 header"},
+ {meta_XA_04SW, "Reflections 04SW header"},
{meta_TXTH, "TXTH generic header"},
{meta_EA_BNK, "Electronic Arts BNK header"},
{meta_SK_AUD, "Silicon Knights AUD header"},
diff --git a/src/libvgmstream.vcproj b/src/libvgmstream.vcproj
index 959fb073..aea1c401 100644
--- a/src/libvgmstream.vcproj
+++ b/src/libvgmstream.vcproj
@@ -268,6 +268,10 @@
RelativePath=".\meta\fsb5_interleave_streamfile.h"
>
+
+
@@ -1131,7 +1135,7 @@
>
+
@@ -388,7 +389,7 @@
-
+
diff --git a/src/libvgmstream.vcxproj.filters b/src/libvgmstream.vcxproj.filters
index b4e41960..12862a1a 100644
--- a/src/libvgmstream.vcxproj.filters
+++ b/src/libvgmstream.vcxproj.filters
@@ -98,6 +98,9 @@
meta\Header Files
+
+ meta\Header Files
+
meta\Header Files
@@ -706,7 +709,7 @@
meta\Source Files
-
+
meta\Source Files
diff --git a/src/meta/gcsw.c b/src/meta/gcsw.c
index c46954d1..6d612235 100644
--- a/src/meta/gcsw.c
+++ b/src/meta/gcsw.c
@@ -1,62 +1,45 @@
#include "meta.h"
-#include "../util.h"
+
+/* GCSW - from Radirgy GeneriC (GC) */
VGMSTREAM * init_vgmstream_gcsw(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
- char filename[PATH_LIMIT];
+ int channel_count, loop_flag;
+ off_t start_offset;
- int channel_count;
- int loop_flag;
- /* check extension, case insensitive */
- streamFile->get_name(streamFile,filename,sizeof(filename));
- if (strcasecmp("gcw",filename_extension(filename))) goto fail;
-
- /* check header */
- if ((uint32_t)read_32bitBE(0,streamFile)!=0x47435357) /* "GCSW" */
+ /* checks */
+ if (!check_extensions(streamFile, "gcw"))
goto fail;
- /* check type details */
- /* guess */
+ if (read_32bitBE(0,streamFile) != 0x47435357) /* "GCSW" */
+ goto fail;
+
+ start_offset = 0x20;
+ channel_count = read_32bitBE(0x0c,streamFile);
loop_flag = read_32bitBE(0x1c,streamFile);
- channel_count = read_32bitBE(0xc,streamFile);
+
/* build the VGMSTREAM */
-
vgmstream = allocate_vgmstream(channel_count,loop_flag);
if (!vgmstream) goto fail;
- /* fill in the vital statistics */
+ vgmstream->meta_type = meta_GCSW;
+
+ vgmstream->sample_rate = read_32bitBE(0x08,streamFile);
vgmstream->num_samples = read_32bitBE(0x10,streamFile);
- vgmstream->sample_rate = read_32bitBE(0x8,streamFile);
- /* channels and loop flag are set by allocate_vgmstream */
vgmstream->loop_start_sample = read_32bitBE(0x14,streamFile);
vgmstream->loop_end_sample = read_32bitBE(0x18,streamFile);
vgmstream->coding_type = coding_PCM16BE;
vgmstream->layout_type = layout_interleave;
- vgmstream->meta_type = meta_GCSW;
-
vgmstream->interleave_block_size = 0x8000;
- /* open the file for reading by each channel */
- {
- int i;
- for (i=0;ich[i].streamfile = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE);
-
- if (!vgmstream->ch[i].streamfile) goto fail;
-
- vgmstream->ch[i].channel_start_offset=
- vgmstream->ch[i].offset=
- 0x20+0x8000*i;
- }
- }
-
+ if (!vgmstream_open_stream(vgmstream,streamFile,start_offset))
+ goto fail;
return vgmstream;
- /* clean up anything we may have opened */
fail:
- if (vgmstream) close_vgmstream(vgmstream);
+ close_vgmstream(vgmstream);
return NULL;
}
diff --git a/src/meta/ps2_jstm.c b/src/meta/jstm.c
similarity index 55%
rename from src/meta/ps2_jstm.c
rename to src/meta/jstm.c
index 9f78093c..51902acf 100644
--- a/src/meta/ps2_jstm.c
+++ b/src/meta/jstm.c
@@ -1,10 +1,10 @@
#include "meta.h"
#include "../coding/coding.h"
+#include "jstm_streamfile.h"
-static STREAMFILE* setup_jstm_streamfile(STREAMFILE *streamFile, off_t start_offset);
/* JSTM - from Tantei Jinguji Saburo - Kind of Blue (PS2) */
-VGMSTREAM * init_vgmstream_ps2_jstm(STREAMFILE *streamFile) {
+VGMSTREAM * init_vgmstream_jstm(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
STREAMFILE *temp_streamFile = NULL;
off_t start_offset;
@@ -55,49 +55,3 @@ fail:
close_vgmstream(vgmstream);
return NULL;
}
-
-
-typedef struct {
- off_t start_offset;
-} jstm_decryption_data;
-
-static size_t jstm_decryption_read(STREAMFILE *streamfile, uint8_t *dest, off_t offset, size_t length, jstm_decryption_data* data) {
- size_t bytes_read;
- int i;
-
- bytes_read = streamfile->read(streamfile, dest, offset, length);
-
- /* decrypt data (xor) */
- for (i = 0; i < bytes_read; i++) {
- if (offset+i >= data->start_offset) {
- dest[i] = dest[i] ^ 0x5A;
- }
- }
-
- return bytes_read;
-}
-
-static STREAMFILE* setup_jstm_streamfile(STREAMFILE *streamFile, off_t start_offset) {
- STREAMFILE *temp_streamFile = NULL, *new_streamFile = NULL;
- jstm_decryption_data io_data = {0};
- size_t io_data_size = sizeof(jstm_decryption_data);
-
- /* setup decryption */
- io_data.start_offset = start_offset;
-
-
- /* setup custom streamfile */
- new_streamFile = open_wrap_streamfile(streamFile);
- if (!new_streamFile) goto fail;
- temp_streamFile = new_streamFile;
-
- new_streamFile = open_io_streamfile(temp_streamFile, &io_data,io_data_size, jstm_decryption_read,NULL);
- if (!new_streamFile) goto fail;
- temp_streamFile = new_streamFile;
-
- return temp_streamFile;
-
-fail:
- close_streamfile(temp_streamFile);
- return NULL;
-}
diff --git a/src/meta/jstm_streamfile.h b/src/meta/jstm_streamfile.h
new file mode 100644
index 00000000..e28e5a6b
--- /dev/null
+++ b/src/meta/jstm_streamfile.h
@@ -0,0 +1,51 @@
+#ifndef _JSTM_STREAMFILE_H_
+#define _JSTM_STREAMFILE_H_
+#include "../streamfile.h"
+
+
+typedef struct {
+ off_t start_offset;
+} jstm_decryption_data;
+
+static size_t jstm_decryption_read(STREAMFILE *streamfile, uint8_t *dest, off_t offset, size_t length, jstm_decryption_data* data) {
+ size_t bytes_read;
+ int i;
+
+ bytes_read = streamfile->read(streamfile, dest, offset, length);
+
+ /* decrypt data (xor) */
+ for (i = 0; i < bytes_read; i++) {
+ if (offset+i >= data->start_offset) {
+ dest[i] = dest[i] ^ 0x5A;
+ }
+ }
+
+ return bytes_read;
+}
+
+static STREAMFILE* setup_jstm_streamfile(STREAMFILE *streamFile, off_t start_offset) {
+ STREAMFILE *temp_streamFile = NULL, *new_streamFile = NULL;
+ jstm_decryption_data io_data = {0};
+ size_t io_data_size = sizeof(jstm_decryption_data);
+
+ /* setup decryption */
+ io_data.start_offset = start_offset;
+
+
+ /* setup custom streamfile */
+ new_streamFile = open_wrap_streamfile(streamFile);
+ if (!new_streamFile) goto fail;
+ temp_streamFile = new_streamFile;
+
+ new_streamFile = open_io_streamfile(temp_streamFile, &io_data,io_data_size, jstm_decryption_read,NULL);
+ if (!new_streamFile) goto fail;
+ temp_streamFile = new_streamFile;
+
+ return temp_streamFile;
+
+fail:
+ close_streamfile(temp_streamFile);
+ return NULL;
+}
+
+#endif /* _JSTM_STREAMFILE_H_ */
diff --git a/src/meta/meta.h b/src/meta/meta.h
index 05af5a81..68180571 100644
--- a/src/meta/meta.h
+++ b/src/meta/meta.h
@@ -503,7 +503,7 @@ VGMSTREAM * init_vgmstream_bar(STREAMFILE* streamFile);
VGMSTREAM * init_vgmstream_ffw(STREAMFILE* streamFile);
-VGMSTREAM * init_vgmstream_ps2_jstm(STREAMFILE* streamFile);
+VGMSTREAM * init_vgmstream_jstm(STREAMFILE* streamFile);
VGMSTREAM * init_vgmstream_xvag(STREAMFILE* streamFile);
@@ -637,9 +637,9 @@ VGMSTREAM * init_vgmstream_mta2_container(STREAMFILE *streamFile);
VGMSTREAM * init_vgmstream_ngc_ulw(STREAMFILE * streamFile);
-VGMSTREAM * init_vgmstream_pc_xa30(STREAMFILE * streamFile);
+VGMSTREAM * init_vgmstream_xa_xa30(STREAMFILE * streamFile);
-VGMSTREAM * init_vgmstream_wii_04sw(STREAMFILE * streamFile);
+VGMSTREAM * init_vgmstream_xa_04sw(STREAMFILE * streamFile);
VGMSTREAM * init_vgmstream_txth(STREAMFILE * streamFile);
diff --git a/src/meta/wii_04sw.c b/src/meta/xa_04sw.c
similarity index 92%
rename from src/meta/wii_04sw.c
rename to src/meta/xa_04sw.c
index e1559ca9..3db1a692 100644
--- a/src/meta/wii_04sw.c
+++ b/src/meta/xa_04sw.c
@@ -2,7 +2,7 @@
#include "../coding/coding.h"
/* 04SW - found in Driver: Parallel Lines (Wii) */
-VGMSTREAM * init_vgmstream_wii_04sw(STREAMFILE *streamFile) {
+VGMSTREAM * init_vgmstream_xa_04sw(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count;
@@ -44,7 +44,7 @@ VGMSTREAM * init_vgmstream_wii_04sw(STREAMFILE *streamFile) {
dsp_read_coefs_be(vgmstream,streamFile,0x20, 0x60);
/* the initial history offset seems different thatn standard DSP and possibly always zero */
- vgmstream->meta_type = meta_WII_04SW;
+ vgmstream->meta_type = meta_XA_04SW;
/* the rest of the header has unknown values (several repeats) and the filename */
diff --git a/src/meta/pc_xa30.c b/src/meta/xa_xa30.c
similarity index 93%
rename from src/meta/pc_xa30.c
rename to src/meta/xa_xa30.c
index 7b615bcd..e6f390f7 100644
--- a/src/meta/pc_xa30.c
+++ b/src/meta/xa_xa30.c
@@ -2,7 +2,7 @@
#include "../coding/coding.h"
/* XA30 - found in Reflections games [Driver: Parallel Lines (PC), Driver 3 (PC)] */
-VGMSTREAM * init_vgmstream_pc_xa30(STREAMFILE *streamFile) {
+VGMSTREAM * init_vgmstream_xa_xa30(STREAMFILE *streamFile) {
VGMSTREAM * vgmstream = NULL;
off_t start_offset;
int loop_flag, channel_count, codec;
@@ -41,7 +41,7 @@ VGMSTREAM * init_vgmstream_pc_xa30(STREAMFILE *streamFile) {
/* 0x20: always IMA=00016000, PCM=00056000 PCM?, rest of the header is null */
vgmstream->num_streams = total_subsongs;
vgmstream->stream_size = stream_size;
- vgmstream->meta_type = meta_PC_XA30;
+ vgmstream->meta_type = meta_XA_XA30;
switch(codec) {
case 0x00: /* PCM (rare, seen in Driver 3) */
diff --git a/src/vgmstream.c b/src/vgmstream.c
index 67c6ea9a..fe1307a0 100644
--- a/src/vgmstream.c
+++ b/src/vgmstream.c
@@ -274,7 +274,7 @@ VGMSTREAM * (*init_vgmstream_functions[])(STREAMFILE *streamFile) = {
init_vgmstream_bar,
init_vgmstream_ffw,
init_vgmstream_dsp_dspw,
- init_vgmstream_ps2_jstm,
+ init_vgmstream_jstm,
init_vgmstream_xvag,
init_vgmstream_ps3_cps,
init_vgmstream_sqex_scd,
@@ -349,8 +349,8 @@ VGMSTREAM * (*init_vgmstream_functions[])(STREAMFILE *streamFile) = {
init_vgmstream_mta2,
init_vgmstream_mta2_container,
init_vgmstream_ngc_ulw,
- init_vgmstream_pc_xa30,
- init_vgmstream_wii_04sw,
+ init_vgmstream_xa_xa30,
+ init_vgmstream_xa_04sw,
init_vgmstream_ea_bnk,
init_vgmstream_ea_abk,
init_vgmstream_ea_hdr_dat,
@@ -1027,7 +1027,7 @@ void vgmstream_set_loop_target(VGMSTREAM* vgmstream, int loop_target) {
/* Decode data into sample buffer */
-void render_vgmstream(sample * buffer, int32_t sample_count, VGMSTREAM * vgmstream) {
+void render_vgmstream(sample_t * buffer, int32_t sample_count, VGMSTREAM * vgmstream) {
switch (vgmstream->layout_type) {
case layout_interleave:
render_vgmstream_interleave(buffer,sample_count,vgmstream);
diff --git a/src/vgmstream.h b/src/vgmstream.h
index b5e1bd84..9b1c9177 100644
--- a/src/vgmstream.h
+++ b/src/vgmstream.h
@@ -629,8 +629,8 @@ typedef enum {
meta_TA_AAC_MOBILE, /* tri-Ace AAC (Star Ocean Anamnesis, Heaven x Inferno) */
meta_MTA2,
meta_NGC_ULW, /* Burnout 1 (GC only) */
- meta_PC_XA30, /* Driver - Parallel Lines (PC) */
- meta_WII_04SW, /* Driver - Parallel Lines (Wii) */
+ meta_XA_XA30,
+ meta_XA_04SW,
meta_TXTH, /* generic text header */
meta_SK_AUD, /* Silicon Knights .AUD (Eternal Darkness GC) */
meta_AHX, /* CRI AHX header */
@@ -1329,7 +1329,7 @@ void close_vgmstream(VGMSTREAM * vgmstream);
int32_t get_vgmstream_play_samples(double looptimes, double fadeseconds, double fadedelayseconds, VGMSTREAM * vgmstream);
/* Decode data into sample buffer */
-void render_vgmstream(sample * buffer, int32_t sample_count, VGMSTREAM * vgmstream);
+void render_vgmstream(sample_t * buffer, int32_t sample_count, VGMSTREAM * vgmstream);
/* Write a description of the stream into array pointed by desc, which must be length bytes long.
* Will always be null-terminated if length > 0 */