forked from vgmstream/vgmstream
-
Notifications
You must be signed in to change notification settings - Fork 0
v bugs
bnnm edited this page Jan 20, 2024
·
2 revisions
To be fixed, probably.
Known issues are separate as aren't always possible to fix, not really a bug, too hard/time consuming, or low interest.
- average bitrate is borked for some metas with subsongs
- codec/bitrate breaks when loading segmented stream as a part of another segmented stream
- segments + layers have incorrect bitrate (EAXMA loop)
- complex .txtp mixes
- plugins: seek code could be faster
- extensionless files don't work inside folders with extension in foobar ("folder.etc/file", "folder.etc\file")
- mpg123 forces endianess/aligment in 8-bit buffer, problematic with some systems?
- log: can't write long lines (unknown bug)
- cleanup: crlfs + tabs
- codecs: ADPCM variants (ex. DSP, IMA, PS-ADPCM) may need to preserve history when looping (hard to test)
- coding_utils: ffmpeg_make_riff don't always create proper RIFF headers (ok for now but may break if FFmpeg changes stuff)
- code: performance could be improved, generally unsafe/brittle
- not very interesting or useful, improved little by little
- code: warning with disabled external libs could be improved
- wrapping more stuff into would result in uglier code just to catch
- preferably should not disable in meta, but in decoder (init_x fails if not implemented)
- should set a init_x callback to "noop" (same for other decoder calls)
- common: dual extensions (ex. ".cdk.wav") not supported
- not many known, not that easy to detect
- common: Gamecube games (unlike Wii) sample rate should be slightly higher due to a hardware bug
- instead of 48000/32000 it's closer to ~48043/32029
- can't detect in many cases Wii or GC, and not all games are coded expecting this
- ex. Killer7 sounds faster on GC vs PS2, but on files sounds the same
- some formats already have sample rate 0xBBAA/48042, acknowledging this (h4m videos)
- should just override with TXTP
- os: Linux can't open companion with different case
- hard and messy to fix, rename/symlink as needed
- could try opening companion file with same caps? (.ABK > .AST)
- 32/64 diffs due to float rounding (+- samples in play settings/etc)
- ao\Cloudphobia (PC)[OGG]\FallAp.ao
- ao\GEO
The Sword MillenniaKasumi no Tani no Kaibutsu (PC)[OGG]\town.ao - ogg-opus\Monster Boy
- opusx\Touhou Genso Wanderer -Reloaded- (Switch)[OPUS]\BGM_8.opusx
- ubi-dat\Rayman 2 (DC)[AICA]
- make: ZIP target could include licenses
- foobar: print loop times as xx:xxx (standard)
- winamp: unicode build problems with UNICODE Windows flag (MSVC default)
- winamp: improve conversions wpath to path, etc
- winamp: for $AUTOTRACK doesn't like TRACKNUMBER (more common) and wants TRACK
- audacious: some compiler warnings could be improved
- audacious: missing C flags? "-O3 -ffast-math" etc
- audacious: should be named audacious-vgmstream
- CLI: files with unicode names don't work in Windows CMD (messy to fix and preserve multiplatform code)
- wmain/WinMain: get wchar args, convert to utf8 (MultiByteToWideChar), pass to normal main
- internally use utf8
- when opening new files (WSTREAMFILE?), convert and use _wfopen
- printf convert to widechar before print too?
- https://github.com/thpatch/win32_utf8
- cmake: missing flags in external libs?
- some calls seem to overwrite them
- foobar: can't write to wave virtual txtp
- not fixable?
- audacious: can't support virtual txtp
- blocked by probe.cc
- xmplay: no config dialog
- no requests to fix it...
- xmplay: can't use subsongs
- use TXTP
- xmplay expects that channels/sample rate doesn't change, which isn't true for vgmstream's subsongs
- see xmp-gme for a possible example
- accepts ":// (file).txtp" if flag XMPIN_FLAG_OWNFILE is set
- workarounds:
- xmplay: extension list bigger than ~1000 crashes the options panel (~v3.8.2.17)
- xmplay: GCC linking can be improved (GCC complaints)
- not important (check openmpt for tips)
- xmplay: add tags
- not very used
- AIMP plugin:
- Deafbeef plugin
- EA SPS/SNS: some EALayer3 discard modes are not 100% correct ATM (hard to test)
- RD03: wrong last shortblock
- VXN: segments could be played in the same stream instead of subsongs? (unknown format)
- ex. Asphalt 9, may have short/med/full mixes, "Grpe" chunk may be mix table
-
bgm_ih_electro_01.vxn
, short mix in Grpe seems to be entry03 with 00,02,0b,0c,0d subsongs
- Dead Rising (PC): missing looping
- .stz+.idx: unknown index format [Sylpheed (PS2)]
- PSQ+INT: subsongs + ? codec [State of Emergency (PS2), Evil Dead: A Fistful of Boomstick (PS2)]
- VS/SVS: pitch calculation could be slightly different
- .kma Koei files in [Warriors: Legends of Troy (X360), others?]
- .bsf: multi DSP [Battalion Wars (GC)]
- .sts/stm: Fur Fighters (PS2)
- BFSTP: inside .bard in Switch games (very similar to BFSTM) [Zelda BOTW, Mario Kart 8]
- nst/rrds looping may be erratic in some Metroid Prime Hunters: First Hunt
- Opus SPS segmented: looping slightly off [Penny Punching Princess (Switch)]
- Ubi SB: splinter cell ps3 num_samples adjust like BAO Assassin's Creed
- Metro .ivb [Bomberman Jetters, Dance Summit 2001 Bust A Move (PS2)]
- FSB: "Hard Reset which has loop end set to some odd values on all on jingles" ?
- layers diff sizes: "In the game Osmos, one of the tracks seems to be split into 5 different files, but 2 of the files are 12 seconds long and 3 of them are 3 seconds long. And it sounds like the 3 second long ones would loop 4 times for each time the 12 second long ones would."
- load xsb to load .xwb: Stage01.xsb + Music.xwb, Stage02.xsb + Music.xwb (needs txtm)
- FF11 PC: some files have non-encrypted frames at the end: music069.bgw, music071.bgw, music900.bgw
- mta/mta2: tracks may be better as subsongs
- tracks can have channel layout
- Call of Duty: Advanced Warfare .pak mushed FLAC
- Ubi BAO: support baos with hashed names (open files with name-to-hash)
- EA Schl: buggy files (Monopoly, Trivial Pursuit, Hasbro Family Game Night)
- Scooby-Doo and the Spooky Swamp (Wii)
- xss: blossom tales switch missing some names
- RIFF: bad format should fail faster > maybe check RIFF is numeric
- FSB3: wrong full loops? [Heavenly Sword]
- webm support
- bk2: fix version m+ (modified header + packets? unsupported in ffmpeg) [Elden Ring, RDR switch, Wanted Dead]
- .fsb nsane trilogy segmented may need needs real loops (#E that save config)
- mkv https://www.programmersought.com/article/36687545957/
- Beyond Good and Evil (GC)[DSP] weird old vs new
- .mediastream_s files in Watchmen: The End is Nigh
- Ogg streams in PC
- MPEG streams in PS3
- Ikaruga BGM.bnk refers to streams w/ loops?
- .caf: add .aac (currently uses ffmpeg meta)
- xma: improve channel mapping in init functions
- PS2 padding finder detect flag 01
- blocked ast: load adpcm state?
- XWB XMA: XACT v35/36/37/39 not tested (exists?)
- XWB MSADPCM: XACT2 looping not tested (exists?)
- FF11/FF12/etc: movies using PSX_configurable or some type of compression?
- FSB5 PCM24/PCM32: not implemented/enabled (no known games)
- FSB4, VAG, Wwise, XWB: sfx or some tracks may loop when they shouldn't due to how loop detection works
- Wwise: some XMA files have loop points even for jingles
- use wwiser to properly handle XMA
- MSF MPEG: strange-sounding bgm_001.msf found in Caladrius Blaze
- happens also on PS4 AT9, may be encoded like that?
- .partitio [Fahrenheit/Indigo Prophecy]:
- custom IMA
- filesystem too complex, no useful doc, too time consuming
- https://github.com/rutsky/fahrenheit_music_extraction
- MUSC: clicks every new block? decoding problems? [Legend of Spyro: Eternal Night (PS2)?]
- still a bug?)
- various sound bank (sfx only), not too interesting and usually can be handled with .TXTH
- 2PSF/.iap: PSX [GANTZ (PS2), Mahoromatic (PS2)]
- CSL/CSF: DSP [Baten Kaitos (GC), Fragile (Wii)]
- .gcb: DSP [Burnout (GC)]
- kabf/.kab: PCM sounds (SQEX's SEAD) [Final Fantasy XV (PC)]
- .sfx/.xau/SFX1: PSX/XBOX-IMA [Run Like Hell (XBOX/PS2)]
- .snd: DSP [Tales of Symphonia (GC)]
- .wav/lnd: compressed sounds [Ever17 (PC)]
- .wd/WD: PSX [PlayOnline (PS2), Dirge of Cerberus (PS2)]
- .sp2/SPP2: PSX [Time Crisis 4 (PS3)]
- .sp3/SPP3: PSX [Time Crisis Razing Storm (PS3)]
- .dsp+gsb: DSP [Dr. Muto (GC)]
- .seq/SEQW: PSX [Star Ocean 3, Valkyrie Profile 2]
- .vab/pBAV: PSX [?]
- vpkh/vsph: PSX [Air Force Delta (PS2)]
- .bnk: PSX [Fight Club (PS2)]
- BANK1.SE: PSX [Sylpheed (PS2)]
- .bnk [State of Emergency]
- .PSH+PSK+SYM [State of Emergency 2]
- Gran Turismo PS2 games: ENGN
- .msc = .msh+msb [used?]
- .xb+xh XABb [Seven (PS2)]
- Sony PS2 XVAB (.xv), XSEH (.voi, .v, .se) [Sony framework SFXs, like RXWS]
- .bnk [Stormfront games]
- .aw/bx from Nintendo games [Pikmin, Luigi's Mansion]
- .sam+pps [Lost Kingdoms 2 (GC)]
- AXHD - Rockstar San Diego (2003-2004)
- .wave: simple CWAV container [Cursed Castilla (3DS)]
- GSW+SND / VBC+SND: sound banks [Spiderman (GC/PS2)]
- SE00 [Mushihimesama sfx]
- various containers, can handled with TXTH
- RayForce (Android) .asn: .mp3/.ogg container (loop list in the exe/so, in bytes)
- FSHB/.fsb: XBOX-IMA music? [Wallace & Gromit In Project Zoo (XBOX/PC)]
- KDJW/.kma: ?-IMA ADPCM music [Onigiri Online (PC)]
- many formats supported by GARbro
- formats supported by foo_adpcm (most are very obscure so not generally useful)
- BasiL-WPD sample files (*.WPD)
- StudioMiris-WDT sample files (*.WDT)
- Hayashigumi-KWF sample files (*.KWF)
- jANIS-PX sample files (*.PX)
- CLOVER-BW sample files (*.BW)
- RAC IMA-ADPCM files from Star Trek: The Next Generation - A Final Unity PC game
- formats supported by towav
- 25 to Life (PC) .EMT (Ogg)
- Crime Life: Gang Wars (PC) *.CMP
- Emperor: Battle for Dune (PC) *.BAG
- Full Spectrum Warrior (PC) *.SND
- Hitman: Blood Money (PC/PS2) *.STR
- Just Cause (PC) *.SAB
- Made Man (PC) *.WWB
- Nox (PC, "audio.idx")
- Shadow of Rome (PS2) *.APS
- Shield (PC) *.ASF
- Tony Tough and the Night of Roasted Moths (PC) *.ADP
- various XMA
- ?: [Are You Smarter Than A 5th Grader? (XBLA)]
- ?: [Quake 4 (360)]
- PSB: XBLA games
- XWV: XBLA games [Bloody Good Time (X360)]
- FFIR: alt XMA [Resident Evil 6 (X360)]
- FUNl Men in Black: Alien Crisis (X360)]
- STR: (raw xma?) [Legends of War: Patton (X360)]
- ?: [Battlefield 4 (X360)]
- SDNS: [Call of Duty: World at War (X360)]
- swa: [Star Wars: The Force Unleashed (X360)]
- MUSX XMA [007 Legends (X360)]
- Key .ovk ogg container for voices
- https://github.com/liclac/LBTools
- container, not really audio
- .snd extra data+FSB [Climax games: Rocket Knight (PS3), Shattered Memories (PS2)]
- Blitz Games sfx mini PS-ADPCM or GC-ADPCM.
- Samurai Shodown Anthology: adpcm + inf GCADPCM
- Project_IGI .wav with ILSF interleaved DVI IMA
- AI War Fleet Command music 128000hz?
- imuse: add chunk subsongs
- Monster House PS2
- PS-ADPCM/XA: not fully accurate (implementations vary, see xa_decoder.c)
- interleave_short_frame won't work in many cases of variable frame size (rarely used in practice)
- Guitar Hero 2 last stream of half frame rate ignored in some files
- reset_mpeg may need to work like flush_mpeg (to be tested)
- Juiced 1/2 (PC): use giant .dsb WMA and some kind of offset of unknown format to locate sections
- Metal Gear Solid Twin Snakes strange voice ogg
- FFmpeg bugs:
- simulated looping, potentially buggy with unknown formats
- simulated Opus encoder delay
- simulated ATRAC3 encoder delay
- wrong encoder delay: ALAC, MP4, etc
- xwma 1ch 32000hz wrong (wma looks ok)
- "-Wcast-align" not working (can't do aligned/unaligned memory)
- inverted signal in ATRAC3 decoding
- internal OPUS
- can't seek at all in some formats like .smk (even on video players)
- broken XMA1 seeking leading to inf-loops in 5.1.2
- "XMA1 doesn't need seeking", silently fixed after pointing out internals need flushing
- mistakes in ADPCM codecs like DIV vs SHR in MSADPCM (not used, just warning)
- seeking to zero breaks encoder delay and other stuff in various codecs (fixed in some cases)
- fsb multichannel at9/celt faulty in some configs (unused?)
- Wwise DSP ADPCM aligment in ParseAdpcmHeader
- Ubi SB/BAO? weird XMA1 with wrong counter in XMA1 block header, has issues in FFmpeg
- dsp: could try to reject .dsp with too much data (accounting some padding) to be mono
- problem: some headers lie/set nibble counts as if they were stereo about [ESPN 2002]
if ((header.nibble_count / 2) + 0x4000 < get_streamfile_size(streamFile) - 0x60) goto fail;
- EALayer3: free bitrate misdetected by mpg123 at times
- force free bitrate for ealayer3 by sending fake 2 free silent BR packets?
- KTAC: buggy mode 1
- ealayer3 causes lots of restarts
- complex to fix ATM, would need to save granules
- ADX: figure out frame size value what does exactly
- some decoders should be implemented in float math (MTA2, EA-XA, etc)
- ADPCM (ex. psx) use hist_16/32 more consistently
- FFmpeg less frames to detect? use less IO buffer?
- PSX optimize: maybe upper filters just set 0s in table
- westwood clean decoder/meta
- clean psx decoding old, doc about clamping
- ima/xbima/msima/msadpcm optimize frame read
- .ogg in Undertale have malformed granulepos in several of the files
- would need detection to set discard seeks
- awc: try if block have more frames than usual (rather than next block having extra frames?)
- rdr2 music desyncs
- .H4M + AFC: used? [Picmin (GC)]
- ESS: unsupported Eugen Systems' games [RUSE, Wargame, Act of Aggression]
- Codemasters ADPCM: unsupported [DIRT, GRID]
- Evolution engine sound [Warframe, Darkness II, Star Trek, Dark Sector]
- .MED: Missing IMA 3-bit ADPCM
- .SNEO: mutant Ogg with external? Vorbis codebooks (S-Neo Dreamcast games)
- Kimi ga Nozomu Eien
- OggVorbis Decoder v1.00 for Dreamcast Programmed by S.Nakamoto(S-NEO)
- vorbissneo / Xiphophorus libVorbis I 20011231 / BCV_huff_book_line_NNNxNN_classN
- Aikagi, Majo no Ocha Kai, Tamakyuu
- OggVorbis Decoder for Dreamcast v1.20 Programmed by S.Nakamoto(S-NEO)
- vorbissneo / Xiph.Org libVorbis I custom 20021109 / vorbisS3 [V1.0 RC3]
- Kimi ga Nozomu Eien
- UEBA: mutant bink audio [Fortnite new, Robocop]
- XVAG MP3 Surround: unknown actual 2ch > 6ch mapping
- adventure games in scummvm
- Tinsel adpcm: Discworld, Discworld 2: Missing Presumed ...!?
- Last Express:
- etc
- .xwb: strange DSP (2-bit?) [Blossom Tales (Switch)]
- EALayer3: free bitrate misdetected by mpg123 at times
- force free bitrate for ealayer3 by sending fake 2 free silent BR packets?
- ea sx.exe new features (loop in sps)
- ATRAC9: new decoder modes
- Ogg: include internal decoder?
- mp2.bin custom in various shovelware games
- Rome 2 Total War: XORed WEMs
- Tales of Asteria
- .rpgmvm: RPG Maker MV files M4A (iOS/Android?), XOR'ed with 0x10 key in System.json
- Rock band (PSP) encrypted .ATM
- Guitar Hero Legends encrypted *.wem
- .sec SITERSKAIN: xor encrypted?
- Zone4 .sod strange character swap table
- Darkwind (PC)
- Guitar Hero 6 Warriors of Rock custom? FSB encryption
- hca phantasy star 2 bad key detection
silent files but uses a bad key with high score forcing min test frames seems to work, but also makes key detection slower
- some formats loop_end may be 1 sample off, depending if loop end means "loop after playing this sample" or "loop when reaching this sample"
- ex. some files suspiciously use "loop_end=123455, num_samples=123456")
- encoder delay to be researched/fixed:
- XMA: most formats should be fine work but there may be bugs
- ATRAC3: GSB+GSP, RXWS, tri-Ace AAC, VAWX, XWB
- MPEG: SCD, XVAG, MSF (probably not used)
- ATRAC9: various
- loop end +1 in XMA and AT3 in psb, maybe others
- fix: dsp_bytes_to_samples, DSP frames can end before 0x08?
- mp3 counter: ignore frames with only pre-data
- wma v2 sample counts
- xma encoder delay bugs (not reading skips ok?): xwb xma1, eaxma, gtd (glitch at the beginning)
- #t trim command has issues with interleave last b/c total samples change and calcs depend on those
- OGL Vorbis: num_samples in non-looping files is a bit off (approx calcs)
- wma_get_samples wrong for 6ch 00000162 xwma konami
- BINK: bink total samples is slightly off vs binkconv
- opus number of samples maybe fixed for all frames
For fun but not really useful
-
TXTP inline segments/layers (for mini/virtual txth)
-
file > file
: segments -
file : file
: layers - virtual txtp are limited so not really useful (maybe for CLI)
- which chars to use for all OSs?
-
-
TXTP: some kind of remap ea that would change FL FC FR BL BR LFE to standard FL FR FC LFE BL BR
- better as a mixing related macro?
-
TXTH/TXTP: force internal name
- ever useful?
-
TXTH: add xor mode/key? (IQ Remix)
- too limited, better pre-decrypted
-
builds: use DLL delayed loading configurable during compile (substitute functions)
- not very compatible and kinda strange
- better build single lib
-
calculate codec_bitrate for CBR codecs:
- let codecs set frame_size (ex. NXOPUS)
- get_frame_size can't be used since some VBR codecs report frame_size (ex. FFmpeg)