diff --git a/doc/FORMATS.md b/doc/FORMATS.md
index 68ec8c5f..f5882f57 100644
--- a/doc/FORMATS.md
+++ b/doc/FORMATS.md
@@ -785,10 +785,6 @@ different internally (encrypted, different versions, etc) and not always can be
- Electronic Arts SWVR header [*EA_SWVR*]
- *ea_swvr*: `.stream .str`
- Codecs: PSX NGC_DSP PCM8_U_int
-- **ps2_b1s.c**
- - B1S header [*PS2_B1S*]
- - *ps2_b1s*: `.b1s`
- - Codecs: PSX
- **lpcm_shade.c**
- Shade LPCM header [*LPCM_SHADE*]
- *lpcm_shade*: `.w .lpcm`
@@ -805,10 +801,6 @@ different internally (encrypted, different versions, etc) and not always can be
- Guitar Hero III Mobile .bar [*GH3_BAR*]
- *bar*: `.bar`
- Codecs: IMA
-- **ffw.c**
- - Freedom Fighters BGM header [*FFW*]
- - *ffw*: `.ffw`
- - Codecs: PCM16BE
- **jstm.c**
- JSTM Header [*PS2_JSTM*]
- *jstm*: `.stm .jstm`
@@ -1206,9 +1198,9 @@ different internally (encrypted, different versions, etc) and not always can be
- Subfiles: *vag riff*
- *sps_n1_segmented*: `.at9 .nlsd`
- Subfiles: *ogg_vorbis opus_std*
-- **atx.c**
+- **apa3.c**
- (container)
- - *atx*: `.atx + .(external)`
+ - *apa3*: `.atx`
- Subfiles: *riff*
- **sqex_sead.c**
- Square Enix SAB header [*SQEX_SAB*]
diff --git a/src/formats.c b/src/formats.c
index e0e62bac..bfe21a7a 100644
--- a/src/formats.c
+++ b/src/formats.c
@@ -190,7 +190,6 @@ static const char* extension_list[] = {
"fag",
"fcb", //FFmpeg/not parsed (BINK AUDIO)
"fda",
- "ffw",
"filp",
"fish",
//"flac", //common
@@ -1211,7 +1210,6 @@ static const meta_info meta_info_list[] = {
{meta_PS2_VMS, "VMS Header"},
{meta_XAU, "XPEC XAU header"},
{meta_GH3_BAR, "Guitar Hero III Mobile .bar"},
- {meta_FFW, "Freedom Fighters BGM header"},
{meta_DSP_DSPW, "Capcom DSPW header"},
{meta_PS2_JSTM, "JSTM Header"},
{meta_XVAG, "Sony XVAG header"},
diff --git a/src/libvgmstream.vcxproj b/src/libvgmstream.vcxproj
index dd658aca..bbec0c43 100644
--- a/src/libvgmstream.vcxproj
+++ b/src/libvgmstream.vcxproj
@@ -480,7 +480,6 @@
-
diff --git a/src/libvgmstream.vcxproj.filters b/src/libvgmstream.vcxproj.filters
index 5cb79f8e..ce506992 100644
--- a/src/libvgmstream.vcxproj.filters
+++ b/src/libvgmstream.vcxproj.filters
@@ -1270,9 +1270,6 @@
meta\Source Files
-
- meta\Source Files
-
meta\Source Files
diff --git a/src/meta/ffw.c b/src/meta/ffw.c
deleted file mode 100644
index cc2d0a26..00000000
--- a/src/meta/ffw.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "meta.h"
-#include "../util.h"
-
-/* FFW (from Freedom Fighters [NGC]) */
-VGMSTREAM * init_vgmstream_ffw(STREAMFILE *streamFile) {
- VGMSTREAM * vgmstream = NULL;
- char filename[PATH_LIMIT];
- off_t start_offset;
- int loop_flag = 0;
- int channel_count;
-
- /* check extension, case insensitive */
- streamFile->get_name(streamFile,filename,sizeof(filename));
- if (strcasecmp("ffw",filename_extension(filename))) goto fail;
-
- loop_flag = 0;
- channel_count = read_32bitLE(0x11C,streamFile);
-
- /* build the VGMSTREAM */
- vgmstream = allocate_vgmstream(channel_count,loop_flag);
- if (!vgmstream) goto fail;
-
- /* fill in the vital statistics */
- start_offset = 0x130;
- vgmstream->channels = channel_count;
- vgmstream->sample_rate = read_32bitLE(0x10C,streamFile);
- vgmstream->coding_type = coding_PCM16BE;
- vgmstream->num_samples = (get_streamfile_size(streamFile)-start_offset)/2/channel_count;
-
- if (channel_count == 1)
- {
- vgmstream->layout_type = layout_none;
- }
- else
- {
- vgmstream->layout_type = layout_interleave;
- vgmstream->interleave_block_size = 0x10000;
- }
-
- vgmstream->meta_type = meta_FFW;
-
- /* open the file for reading */
- {
- int i;
- STREAMFILE * file;
- file = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE);
- if (!file) goto fail;
- for (i=0;ich[i].streamfile = file;
-
- vgmstream->ch[i].channel_start_offset=
- vgmstream->ch[i].offset=start_offset+
- vgmstream->interleave_block_size*i;
-
- }
- }
-
- return vgmstream;
-
- /* clean up anything we may have opened */
-fail:
- if (vgmstream) close_vgmstream(vgmstream);
- return NULL;
-}
diff --git a/src/meta/meta.h b/src/meta/meta.h
index 39d23d8c..c8425c83 100644
--- a/src/meta/meta.h
+++ b/src/meta/meta.h
@@ -463,8 +463,6 @@ VGMSTREAM * init_vgmstream_xau(STREAMFILE* streamFile);
VGMSTREAM * init_vgmstream_bar(STREAMFILE* streamFile);
-VGMSTREAM * init_vgmstream_ffw(STREAMFILE* streamFile);
-
VGMSTREAM * init_vgmstream_jstm(STREAMFILE* streamFile);
VGMSTREAM * init_vgmstream_xvag(STREAMFILE* streamFile);
diff --git a/src/vgmstream.c b/src/vgmstream.c
index 2d7d486c..c662b213 100644
--- a/src/vgmstream.c
+++ b/src/vgmstream.c
@@ -212,7 +212,6 @@ init_vgmstream_t init_vgmstream_functions[] = {
init_vgmstream_ps2_vms,
init_vgmstream_xau,
init_vgmstream_bar,
- init_vgmstream_ffw,
init_vgmstream_dsp_dspw,
init_vgmstream_jstm,
init_vgmstream_xvag,
diff --git a/src/vgmstream_types.h b/src/vgmstream_types.h
index 92abedfb..a896c0fc 100644
--- a/src/vgmstream_types.h
+++ b/src/vgmstream_types.h
@@ -478,7 +478,6 @@ typedef enum {
meta_PS2_VMS, /* Autobahn Raser - Police Madness */
meta_XAU, /* XPEC Entertainment (Beat Down (PS2 Xbox), Spectral Force Chronicle (PS2)) */
meta_GH3_BAR, /* Guitar Hero III Mobile .bar */
- meta_FFW, /* Freedom Fighters [NGC] */
meta_DSP_DSPW, /* Sengoku Basara 3 [WII] */
meta_PS2_JSTM, /* Tantei Jinguji Saburo - Kind of Blue (PS2) */
meta_SQEX_SCD, /* Square-Enix SCD */