You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I partially ported the code from .txth to source code. Should edit now. Format is basically a standard i3DS header with or without interleave value, no interleave last value in header, then two CWAV headers, then interleaved data with no padding. at the end of the source part, there's some code to at least automatically generate the interleave last value.
Format metadata:
NGC_DSP_I3DS
Codemasters i3DS header
While it could be added at some point it has very low priority since TXTH is adecuate enough for those odd single game formats. It may be more interesting if this format is used in other games or similar variations for other consoles. Plus, the above code doesn't handle i3DS mono files (that do exist) so adding it as-is wouldn't be very interesting either.
Hi @bnnm. I just looked at a mono i3DS file from the game, turns out, mono i3DS files have no interleave value in header. That's easy, to identify if it is a mono i3DS file or not, the value at offset 0x0c is checked to make sure value is different that 0. if it isn't, should play as a mono channel. Thank you.
Well, unfortuanently, i3DS file format was only seen on F1 2011 for 3DS and only that game.
I partially ported the code from .txth to source code. Should edit now. Format is basically a standard i3DS header with or without interleave value, no interleave last value in header, then two CWAV headers, then interleaved data with no padding. at the end of the source part, there's some code to at least automatically generate the interleave last value.
Format metadata:
NGC_DSP_I3DS
Codemasters i3DS header
#include "meta.h"
#include "../util.h"
#include "../coding/coding.h"
/* .3DS [from F1 2011 (3DS)] /
VGMSTREAM init_vgmstream_ngc_dsp_i3ds(STREAMFILE* sf) {
VGMSTREAM* vgmstream = NULL;
uint32_t start_offset;
uint32_t cwav_l_offset, cwav_r_offset, data_size;
size_t data_size;
int channels, sample_rate, interleave;
fail:
close_vgmstream(vgmstream);
return NULL;
}
end of code
The text was updated successfully, but these errors were encountered: