diff --git a/doc/TXTP.md b/doc/TXTP.md index e9e71d68..9a8b8532 100644 --- a/doc/TXTP.md +++ b/doc/TXTP.md @@ -91,7 +91,7 @@ BIK_E1_6A_DialEnd_00000000.audio.multi.bik#3 mode = layers ``` -Note that the number of channels is the sum of all layers, so three 2ch layers play as a 6ch file. If all layers share loop points they are automatically kept. +Note that the number of channels is the sum of all layers, so three 2ch layers play as a 6ch file (you can downmix to stereo using mixing commands, described later). If all layers share loop points they are automatically kept. ### Mixed groups You can set "groups" to 'fold' various files into one, as layers or segments, to allow complex cases: @@ -166,7 +166,7 @@ mainB_2ch.at3 group = 2L2 #@layer-v 2 # finally resulting layers are played as segments (2ch, 2ch) -# (could set a group = S and ommit S here, too) +# (could set a group = S and ommit mode here, too) mode = segments # if the last group joins all as segments you can use loop_start @@ -239,34 +239,42 @@ music_Home.ps3.scd#C3 4 ### Play settings **`#l(loops)`**, **`#f(fade)`**, **`#d(fade-delay)`**, **`#i(ignore loop)`**, **`#F(ignore fade)`**, **`#E(end-to-end loop)`** -Those setting should override player's defaults if set (except "loop forever"). They are equivalent to some test.exe options. +Those setting should override player's defaults if set. They are equivalent to some test.exe options. -**God Hand (PS2)**: *boss2_3ningumi_ver6.txtp* (each line is a separate TXTP) +**God Hand (PS2)**: *boss2_3ningumi_ver6.txtp* ``` # set number of loops boss2_3ningumi_ver6.adx#l3 - +``` +``` # set fade time (in seconds) boss2_3ningumi_ver6.adx#f10.5 - +``` +``` # set fade delay (in seconds) boss2_3ningumi_ver6.adx#d0.5 - +``` +``` # ignore and disable loops boss2_3ningumi_ver6.adx#i - +``` +``` # don't fade out and instead play the song ending after boss2_3ningumi_ver6.adx#F # this song has a nice stop - +``` +``` # force full loops from end-to-end boss2_3ningumi_ver6.adx#E - +``` +``` # settings can be combined boss2_3ningumi_ver6.adx#l2#F # 2 loops + ending - +``` +``` # settings can be combined boss2_3ningumi_ver6.adx#l1.5#d1#f5 - +``` +``` # boss2_3ningumi_ver6.adx#l1.0#F # this is equivalent to #i ``` @@ -284,7 +292,7 @@ main.fsb Similarly other games don't use loop points, but rather repeat/loops the song internally many times: ``` -intro.vag #t3:20 #i #l1.0 #trim + combine with forced loops for easy fades +bgm01.vag #t3:20 #i #l1.0 # trim + combine with forced loops for easy fades ``` Note that if you need to remove very few samples (like 1) to get smooth transitions it may be a bug in vgmstream, consider reporting. diff --git a/src/coding/coding_utils.c b/src/coding/coding_utils.c index 0b6b3bfa..4a28b718 100644 --- a/src/coding/coding_utils.c +++ b/src/coding/coding_utils.c @@ -155,7 +155,8 @@ int ffmpeg_make_riff_xma1(uint8_t * buf, size_t buf_size, size_t sample_count, s put_16bitLE(buf+off+0x12, speakers); } - /* xmaencode decoding rejects XMA1 without "seek" chunk, though it doesn't seem to use it */ + /* xmaencode decoding rejects XMA1 without "seek" chunk, though it doesn't seem to use it + * (needs to be have entries but can be bogus, also generates seek for even small sounds) */ memcpy(buf+riff_size-4-4, "data", 4); put_32bitLE(buf+riff_size-4, data_size); /* data size */ diff --git a/src/meta/riff.c b/src/meta/riff.c index 53eba94e..7e9785fe 100644 --- a/src/meta/riff.c +++ b/src/meta/riff.c @@ -936,7 +936,7 @@ static size_t get_ue4_msadpcm_interleave(STREAMFILE *sf, riff_fmt_chunk *fmt, of return v2_interleave; /* favor newer games */ } -/* same but big endian, seen in the spec and in Kitchenette (PC) */ +/* same but big endian, seen in the spec and in Kitchenette (PC) (possibly from Adobe Director) */ VGMSTREAM * init_vgmstream_rifx(STREAMFILE *streamFile) { VGMSTREAM * vgmstream = NULL; riff_fmt_chunk fmt = {0};