mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-01-31 04:13:47 +01:00
Add WiiVoice dsp [Fatal Frame 5 (WiiU)]
This commit is contained in:
parent
807d479851
commit
847d93b7a1
@ -1314,6 +1314,7 @@ static const meta_info meta_info_list[] = {
|
|||||||
{meta_SDRH, "feelplus SDRH header"},
|
{meta_SDRH, "feelplus SDRH header"},
|
||||||
{meta_WADY, "Marble WADY header"},
|
{meta_WADY, "Marble WADY header"},
|
||||||
{meta_DSP_SQEX, "Square Enix DSP header"},
|
{meta_DSP_SQEX, "Square Enix DSP header"},
|
||||||
|
{meta_DSP_WIIVOICE, "Koei Tecmo WiiVoice header"},
|
||||||
};
|
};
|
||||||
|
|
||||||
void get_vgmstream_coding_description(VGMSTREAM* vgmstream, char* out, size_t out_size) {
|
void get_vgmstream_coding_description(VGMSTREAM* vgmstream, char* out, size_t out_size) {
|
||||||
|
@ -54,7 +54,8 @@ VGMSTREAM* init_vgmstream_dsp_adpy(STREAMFILE* sf);
|
|||||||
VGMSTREAM* init_vgmstream_dsp_adpx(STREAMFILE* sf);
|
VGMSTREAM* init_vgmstream_dsp_adpx(STREAMFILE* sf);
|
||||||
VGMSTREAM* init_vgmstream_dsp_ds2(STREAMFILE* sf);
|
VGMSTREAM* init_vgmstream_dsp_ds2(STREAMFILE* sf);
|
||||||
VGMSTREAM* init_vgmstream_dsp_itl(STREAMFILE* sf);
|
VGMSTREAM* init_vgmstream_dsp_itl(STREAMFILE* sf);
|
||||||
VGMSTREAM* init_vgmstream_dsp_sqex(STREAMFILE *sf);
|
VGMSTREAM* init_vgmstream_dsp_sqex(STREAMFILE* sf);
|
||||||
|
VGMSTREAM* init_vgmstream_dsp_wiivoice(STREAMFILE* sf);
|
||||||
|
|
||||||
VGMSTREAM * init_vgmstream_csmp(STREAMFILE *streamFile);
|
VGMSTREAM * init_vgmstream_csmp(STREAMFILE *streamFile);
|
||||||
|
|
||||||
|
@ -1278,3 +1278,31 @@ VGMSTREAM* init_vgmstream_dsp_sqex(STREAMFILE* sf) {
|
|||||||
fail:
|
fail:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* WiiVoice - Koei Tecmo wrapper [Fatal Frame 5 (WiiU)] */
|
||||||
|
VGMSTREAM* init_vgmstream_dsp_wiivoice(STREAMFILE* sf) {
|
||||||
|
dsp_meta dspm = {0};
|
||||||
|
/* also see g1l.c for WiiBGM weirder variation */
|
||||||
|
|
||||||
|
/* checks */
|
||||||
|
/* .dsp: assumed */
|
||||||
|
if (!check_extensions(sf, "dsp"))
|
||||||
|
goto fail;
|
||||||
|
if (read_u32be(0x00,sf) != 0x57696956 && /* "WiiV" */
|
||||||
|
read_u32be(0x04,sf) != 0x6F696365) /* "oice" */
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
dspm.channel_count = 1;
|
||||||
|
dspm.max_channels = 1;
|
||||||
|
|
||||||
|
dspm.header_offset = read_u32be(0x08,sf);
|
||||||
|
/* 0x10: file size */
|
||||||
|
/* 0x14: data size */
|
||||||
|
dspm.header_spacing = 0x60;
|
||||||
|
dspm.start_offset = dspm.header_offset + dspm.header_spacing*dspm.channel_count;
|
||||||
|
|
||||||
|
dspm.meta_type = meta_DSP_WIIVOICE;
|
||||||
|
return init_vgmstream_dsp_common(sf, &dspm);
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -508,6 +508,7 @@ VGMSTREAM* (*init_vgmstream_functions[])(STREAMFILE* sf) = {
|
|||||||
init_vgmstream_xse_old,
|
init_vgmstream_xse_old,
|
||||||
init_vgmstream_wady,
|
init_vgmstream_wady,
|
||||||
init_vgmstream_dsp_sqex,
|
init_vgmstream_dsp_sqex,
|
||||||
|
init_vgmstream_dsp_wiivoice,
|
||||||
|
|
||||||
/* lowest priority metas (should go after all metas, and TXTH should go before raw formats) */
|
/* lowest priority metas (should go after all metas, and TXTH should go before raw formats) */
|
||||||
init_vgmstream_txth, /* proper parsers should supersede TXTH, once added */
|
init_vgmstream_txth, /* proper parsers should supersede TXTH, once added */
|
||||||
|
@ -739,6 +739,7 @@ typedef enum {
|
|||||||
meta_SDRH,
|
meta_SDRH,
|
||||||
meta_WADY,
|
meta_WADY,
|
||||||
meta_DSP_SQEX,
|
meta_DSP_SQEX,
|
||||||
|
meta_DSP_WIIVOICE,
|
||||||
} meta_t;
|
} meta_t;
|
||||||
|
|
||||||
/* standard WAVEFORMATEXTENSIBLE speaker positions */
|
/* standard WAVEFORMATEXTENSIBLE speaker positions */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user